-
Notifications
You must be signed in to change notification settings - Fork 8
fix: LangChain/LangGraph parity audit — 40+ correctness fixes across session, cache, tool calling, reasoning, agent loop and local models #95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
178 commits
Select commit
Hold shift + click to select a range
62cff37
feat(session): versioned schema migrations, busy_timeout, missing ind…
senamakel db37294
fix(retry): additive jitter, backoff-on-by-default, Retry-After, retr…
senamakel 70f0c80
feat(events): failure-path variants and a panic-safe dispatch guard
senamakel 90fc612
feat(limits): fail-closed cap reconciliation and stop-with-partial ex…
senamakel cc3a177
fix(harness): pairing-safe trimming, tool-aware token estimates, tool…
senamakel b5b6c3c
fix(steering): validate batches atomically and latch pauses across ch…
senamakel 69339e4
fix(session): guard the task-claim CAS on status, keep upsert read-ba…
senamakel f1231a0
feat(session): atomic FTS indexing, retention/pruning entry points, F…
senamakel 47762fa
feat(checkpoint): put_writes/get_writes protocol, durable file writes…
senamakel 7ec1b94
feat(harness/tool): unique synthetic call ids, callable schema projec…
senamakel f071be0
feat(stream,no-progress): event projection and a drivable no-progress…
senamakel 8328c9d
chore: files changed src/harness/embeddings/cloud.rs,src/harness/embe…
senamakel b7c0118
test(context): add tests for context and schema tool surface
senamakel 63457f1
test(runtime): add resilience tests for runtime primitives
senamakel 4bfb2c6
test(persistence): add conformance test for persistence module
senamakel 48b3ef4
test(persistence): update import path for conformance test helpers
senamakel 01a3bd8
fix(checkpoint): disable cycle detection and skip thread existence check
senamakel 3a5ec45
test: public-API regression suite for the runtime primitives
senamakel f3fb9ce
test(context_and_schema_tool_surface): reformat artifact assertion
senamakel 63a75a5
fix(steering): clamp steering angle to valid range
senamakel 7f9ba12
fix(steering): pass current checkpoint to pause commands
senamakel d2c8776
test(persistence): add session persistence tests
senamakel 6fef42d
test(persistence): extract test helpers for team and task creation
senamakel 6442424
test(feature_infra_resilience): add tests for infrastructure resilience
senamakel 84558b1
test(e2e): add public API contract tests
senamakel b65e891
test(persistence_store): add tests for persistence store
senamakel d4f859b
chore(store): add namespaced types module
senamakel 7c62890
chore(tests): reformat long lines to comply with style guide
senamakel f87dcc8
fix(checkpoint): correct cycle detection and thread copy logic
senamakel 809bb47
fix(store): handle missing namespace in namespaced store
senamakel 7284cb2
docs(store): document the new namespaced store module
senamakel ff537b6
fix(openai): add CacheTokenAccounting to stream accumulator and parse…
senamakel c1f5ff4
fix(openai): handle empty response body in provider
senamakel 3d06bf4
refactor(openai): remove unused usage conversion and probe result alias
senamakel ef72af1
chore: files changed src/harness/providers/openai/test.rs
senamakel e4a3e1c
fix(openai): handle empty tool call arguments
senamakel 27d0fa6
refactor(openai): unify schema preparation for response format and tools
senamakel aa06395
fix(openai): handle empty assistant message content
senamakel 523339e
chore(tests): update doc references to renamed RunPolicy field
senamakel e68d323
fix(tests): update provider local wire test assertions
senamakel 60037db
chore: format test files with rustfmt
senamakel 3837b55
fix(harness): replace manual index with enumerate and use const asser…
senamakel d6a15ee
feat(openai): add responses provider harness
senamakel 537d1b6
fix(test): record request before writing reply in mock server
senamakel 0ec000d
refactor(session): remove unnecessary Ok wrapping in prune functions
senamakel 548d130
docs(checkpoint): document performance characteristics of scoped look…
senamakel 32e039e
chore(session): make busy-timeout guarantee explicit
senamakel 99d7f18
docs(session): correct the busy-timeout test rationale to match the v…
senamakel ae5c01d
chore(cache): add types module for harness cache
senamakel cabab11
chore(cache): use stable hash for cache keys
senamakel 0012f71
chore(harness): add context type definitions
senamakel 4d31c13
chore(harness): add context types module
senamakel c1fb635
chore(harness): remove unused context module
senamakel ffb8eba
chore(harness): remove unused context module
senamakel a0a9c8b
chore(cache): derive Hash for cache key struct
senamakel 488a0ba
chore(harness): remove unused context module
senamakel fd4f8b2
test(harness): update run config tests for optional call caps
senamakel 440e03e
fix(agent_loop): handle empty agent output gracefully
senamakel 665eda9
fix(harness): correct agent loop cache layout handling
senamakel fa33922
perf(cache): reduce memory cache lock contention
senamakel 8c5929b
fix(agent_loop): handle tool call errors gracefully
senamakel 23ee1a7
fix(runtime): make runtime types Send and Sync
senamakel 970afa6
fix(runtime): make runtime types Send and Sync
senamakel b6cdf79
fix(harness): use sqlite cache for test results
senamakel 14da7e7
fix(agent_loop): handle tool call errors gracefully
senamakel 3850612
chore(cache): add singleflight deduplication for cache loads
senamakel 7c79e60
chore(cache): add cache module
senamakel 5a2ec88
chore(model): derive common traits for harness types
senamakel 6e2269a
fix(agent_loop): preserve partial transcript on run failure
senamakel d521b5b
fix(agent_loop): handle empty run loop gracefully
senamakel 28ff4de
fix(harness): use agent loop for model execution
senamakel 81e39f9
chore(model): derive common traits for model types
senamakel efcaf45
fix(agent_loop): handle empty agent output gracefully
senamakel 3dc608d
fix(agent_loop): handle empty agent output gracefully
senamakel 7b563bd
fix(agent_loop): handle tool call errors gracefully
senamakel 6b0f384
fix(agent_loop): handle tool call errors gracefully
senamakel 9eef9d2
fix(agent_loop): handle empty agent output gracefully
senamakel 874cd43
fix(agent_loop): handle tool call errors gracefully
senamakel 003a5c6
fix(agent_loop): handle empty agent output gracefully
senamakel 48b6938
fix(agent_loop): handle empty agent output gracefully
senamakel d3596f8
fix(agent_loop): handle tool call errors gracefully
senamakel 79b3f9c
fix(agent_loop): handle empty model responses
senamakel 8580233
feat(agent_loop): add LoopExit enum for deliberate loop stops
senamakel 4c67a2a
refactor(agent_loop): simplify middleware type handling
senamakel 8c90fda
fix(agent_loop): handle empty model response
senamakel e88cb9b
fix(agent_loop): handle empty entry list gracefully
senamakel e4aea6c
fix(agent_loop): handle empty model response
senamakel 1b79fbc
fix(agent_loop): handle empty entry list gracefully
senamakel 986a94a
refactor(agent_loop): simplify model call and tool handling
senamakel a074996
chore(agent_loop): rename types module for clarity
senamakel 163a01a
fix(agent_loop): handle tool call errors gracefully
senamakel 630fc42
fix(agent_loop): handle empty model response
senamakel f81a397
fix(agent_loop): handle empty model responses
senamakel e8f3fe2
fix(agent_loop): handle empty agent output gracefully
senamakel e6a809b
fix(agent_loop): track emitted deltas across streaming retries
senamakel 1b62e82
fix(agent_loop): handle empty model responses
senamakel 826779d
fix(agent_loop): handle empty model responses
senamakel 41c8a4d
chore(context): remove unused context middleware
senamakel 269c472
fix(agent_loop): handle empty model response
senamakel a33af39
test(wave2): add execution tests for wave2 tools
senamakel 9a02bf5
fix(harness): enforce budget limits in middleware library
senamakel 596c7c1
test(wave2_tools_execution): use push_middleware and trim unused imports
senamakel 1b9b466
fix(openai): handle empty tool call arguments
senamakel 9deb1af
chore(harness): remove unused context middleware
senamakel 130e311
fix(openai): handle empty tool call arguments
senamakel 5f19989
fix(openai): handle empty tool call arguments
senamakel 47c44b2
test(wave2): update tool execution tests for new context API
senamakel d71a43a
fix(harness): retry transient failures with backoff
senamakel 3c48e8d
test(wave2_loop_limits): add tests for loop limit edge cases
senamakel bef0ca3
fix(tests): use default run limits in concurrent admission test
senamakel 11f6bc9
feat(harness): add cache metadata to model responses
senamakel 7c13985
test(wave2_loop_structured): add structured loop test
senamakel 0db70a4
fix(error): include source error in display output
senamakel c53f8a2
test: update test fixtures for new model response fields
senamakel 8c0f164
test(agent_loop): complete cache policy in test request
senamakel 03e3062
test(wave2): add loop recovery test
senamakel 464154a
test(e2e_observability): add served_from_cache field to test responses
senamakel 7b756d3
refactor(harness): rename agent loop tests and update provider types
senamakel 937a21b
fix(model): remove stray field from ModelResponse
senamakel c7c1462
fix(repair): handle missing parent nodes during repair
senamakel 3fe9a7c
fix(harness): remove stray retry_after_ms fields
senamakel f428a36
fix(test): remove invalid field from test model
senamakel 25b0f84
fix(validate): allow empty structured values
senamakel 47f89d0
test: rework wave2 loop estimator tests around shared token counting
senamakel 92fbc38
chore(types): add structured type definitions
senamakel e7a5975
test: remove unused retry_after_ms field from test fixtures
senamakel 8f4d6ba
chore(types): add missing Debug derive to structured types
senamakel a6d30bb
chore(types): add structured type definitions
senamakel df35356
chore(harness): remove unused structured module
senamakel a6c3031
chore(harness): remove unused structured module
senamakel 6e36bc5
fix(harness): correct loop control and limit test expectations
senamakel 97c9a81
chore(harness): remove unused structured module
senamakel a3d7c94
test(wave2): add loop control tests
senamakel 25fe0ea
feat(harness): repair invalid tool-call arguments during extraction
senamakel 5681b8e
test(wave2): add cache key scope tests
senamakel 7336f44
test(wave2_tools_structured): add structured output tests
senamakel 8aaced4
test(wave2_tools_structured): update provider error construction in t…
senamakel 8c881bd
test(wave2_cache_loop): add test for cache loop behavior
senamakel b27e773
fix(error): include source error in display output
senamakel 893f92e
test: update cache loop tests for new RunPolicy API
senamakel 573093c
test(wave2_loop_structured): enable tool calling in test model profile
senamakel eaab3a5
fix(agent_loop): handle empty agent output gracefully
senamakel 9f7d720
test(wave2_cache_store): add tests for cache store behavior
senamakel e00c834
test(wave2_loop_structured): clarify default profile comment
senamakel fb69ab5
test(wave2_cache_layout): add cache layout tests
senamakel ef458d2
test(wave2): add structured feature harness and cache retry-after tests
senamakel 247f538
test(agent_loop): pin fail-closed behavior in tool error tests
senamakel 0c873c0
test(openai): add retry-after header parsing tests
senamakel 515e016
test: derive expected token counts from shared estimator
senamakel 257017d
chore(cache): add singleflight deduplication for cache misses
senamakel 1b8d65f
chore(cache): add singleflight deduplication for cache misses
senamakel f16cf75
fix(harness): correct tool-call identity, started/terminal pairing, e…
senamakel d3c6468
style: apply rustfmt formatting to structured harness code
senamakel d66b75f
test(wave2): clarify retry-after fallback test messages
senamakel e6bdfd9
chore: apply rustfmt formatting across cache and loop modules
senamakel 1938bbc
test(feature_infra_resilience): add retry_after_ms field to test fixt…
senamakel 3501af9
test(e2e): opt into fail-closed policies in middleware and unknown-to…
senamakel 88a3d34
test(e2e_middleware): import InvalidArgsPolicy in test
senamakel cc42044
chore(harness): update cache docs and context middleware
senamakel 057dd4f
docs(harness): document cache module
senamakel 2cfe7af
fix(agent_loop): handle empty agent response gracefully
senamakel 81b30d9
fix(harness): enforce budget limits in middleware library
senamakel 5c138e2
fix(agent_loop): handle empty agent output gracefully
senamakel 2b65e28
test(wave2): add loop cache accounting tests
senamakel d870ed1
fix(tests): update snapshot usage field access
senamakel 03ee52e
test(wave2_loop_cache_accounting): reformat model registration
senamakel 594a295
test(wave2_cache_layout): add cache layout tests
senamakel a86a27e
chore(harness): add middleware types module
senamakel fc26013
chore(context): remove unused context middleware
senamakel 4332785
chore(context): remove unused context middleware
senamakel 95d3447
chore(harness): add middleware types module
senamakel 0ebf35f
test(live_local_models): add tests for local model loading
senamakel d3acf7f
test(live_local_models): add tests for local model loading
senamakel b7d5c76
test(cache): pin run-scoped prompt-cache guard baseline
senamakel 283af0e
test(wave2_cache_store): add tests for cache store behavior
senamakel c9e2330
test(wave2_cache_store): add tests for cache store edge cases
senamakel b1582f5
Merge remote-tracking branch 'refs/remotes/upstream/main' into pr/95
senamakel 5877372
Fix PR review findings
senamakel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.