Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
489 commits
Select commit Hold shift + click to select a range
d6d666f
Merge branch 'main' into mark/oss-162-google-add-a2ui-recoveryerror-h…
contextablemark Jun 5, 2026
425e08e
fix: preserve LangGraph input metadata
he-yufeng May 29, 2026
de0cd0f
fix(langgraph): keep tool calls after text chunks
he-yufeng May 30, 2026
9f93bba
fix(langgraph): preserve text on tool-start chunks
he-yufeng Jun 2, 2026
089a35b
fix(langchain): make @langchain/core a wide-range peer dependency
ranst91 Jun 5, 2026
9bdfd33
Merge branch 'main' into mark/oss-162-google-add-a2ui-recoveryerror-h…
contextablemark Jun 5, 2026
604ca57
Merge pull request #1858 from ag-ui-protocol/mark/oss-162-google-add-…
contextablemark Jun 5, 2026
d7cd215
Merge pull request #1871 from ag-ui-protocol/fix/langroid-publish-rea…
jpr5 Jun 5, 2026
e011226
chore(agent-spec): track uv.lock for sibling consistency
jpr5 Jun 5, 2026
452721c
Merge pull request #1872 from ag-ui-protocol/fix/agent-spec-publish-r…
jpr5 Jun 5, 2026
b007ecb
chore(release): guard release.config.json names against on-disk manif…
jpr5 Jun 5, 2026
1494944
ci(release): run config↔manifest name guard in lint-release-workflows
jpr5 Jun 5, 2026
34a6de6
chore(release): bump sdk-ts-a2ui-toolkit (@ag-ui/a2ui-toolkit@0.0.1)
Jun 5, 2026
cab4e03
fix(claude-agent-sdk): align non-streaming tool-result/state handlers…
jpr5 Jun 5, 2026
b20c824
fix(claude-agent-sdk): harden adapter state-merge, reasoning signatur…
jpr5 Jun 5, 2026
5d31d51
chore(claude-agent-sdk): bump to 0.1.3 for adapter hardening fixes
jpr5 Jun 5, 2026
0499297
chore(release): bump middleware-a2ui (@ag-ui/a2ui-middleware@0.0.7)
Jun 5, 2026
0652ece
chore(release): bump integration-langgraph-ts (@ag-ui/langgraph@0.0.38)
Jun 5, 2026
be50cc5
chore(release): bump sdk-py-a2ui-toolkit (ag-ui-a2ui-toolkit@0.0.1)
Jun 5, 2026
f472348
chore(release): bump integration-langgraph-py (ag-ui-langgraph@0.0.39)
Jun 5, 2026
326269b
fix(claude-agent-sdk): make error-path worker teardown refcount-aware
jpr5 Jun 5, 2026
c074674
Merge pull request #1877 from ag-ui-protocol/release/next
contextablemark Jun 5, 2026
e2c717d
Merge pull request #1876 from ag-ui-protocol/chore/release-pipeline-h…
jpr5 Jun 5, 2026
09755ce
test(claude-agent-sdk): cover dead-worker-with-live-peer eviction guard
jpr5 Jun 5, 2026
583dac6
chore(claude-agent-sdk): log-level parity and worker-entry comment fix
jpr5 Jun 5, 2026
f5f181f
chore: publish a2ui toolkit and lg python versions
ranst91 Jun 5, 2026
2ba477c
test(claude-agent-sdk): add real-worker thread concurrency integratio…
jpr5 Jun 5, 2026
62f6134
docs(claude-agent-sdk): fix stale example server port (8888 -> 8019)
jpr5 Jun 5, 2026
1ce676b
Merge pull request #1878 from ag-ui-protocol/fix/claude-sdk-adapter-h…
jpr5 Jun 5, 2026
f9fb796
fix(claude-agent-sdk): fail loud on dead worker with a live peer run
jpr5 Jun 5, 2026
2cf6b5f
fix(claude-agent-sdk): normalize bare-string tool result in MESSAGES_…
jpr5 Jun 5, 2026
9f8ad3e
test(claude-agent-sdk): cover fail-loud dead worker and snapshot enco…
jpr5 Jun 5, 2026
e617dcc
chore(claude-agent-sdk): bump to 0.1.4 for #1878 fast-follow fixes
jpr5 Jun 5, 2026
14002ba
Merge branch 'main' into matt.spurlin/1043/multimodal-support
contextablemark Jun 5, 2026
cadc517
Merge pull request #1808 from mattsp1290/matt.spurlin/1043/multimodal…
contextablemark Jun 5, 2026
8fb1ac2
Merge pull request #1883 from ag-ui-protocol/fix/claude-sdk-deadworke…
jpr5 Jun 5, 2026
8f1af60
fix(ci): allow branch prerelease dispatches
tylerslaton Jun 5, 2026
0278d5a
fix: set repository metadata on published packages for npm provenance
jpr5 Jun 5, 2026
c10d875
Merge origin/main into matt.spurlin/1018/fix-missing-event-types
mattsp1290 Jun 5, 2026
7887dcb
fix(dart): address PR #1663 review — CHANGELOG casing + rethrow docs …
mattsp1290 Jun 5, 2026
1f0dbf2
fix(claude-agent-sdk): fan out worker-death to all in-flight consumers
jpr5 Jun 5, 2026
c00f59b
fix(claude-agent-sdk): serialize same-thread runs, default query time…
jpr5 Jun 5, 2026
3d52673
test(claude-agent-sdk): cover run serialization, query-timeout defaul…
jpr5 Jun 5, 2026
72ec063
chore(claude-agent-sdk): bump to 0.1.5 for serialize + robustness fixes
jpr5 Jun 5, 2026
22a5e37
fix(claude-agent-sdk): decouple run-lock from worker eviction; relabe…
jpr5 Jun 5, 2026
68a09e1
chore(claude-agent-sdk): narrow output_queue and type _inflight_queue…
jpr5 Jun 5, 2026
d61736e
test(claude-agent-sdk): guard run-lock orphan, run-keyed result, and …
jpr5 Jun 5, 2026
6aad075
docs(claude-agent-sdk): clarify run-lock eviction comments and fix te…
jpr5 Jun 5, 2026
bbed127
test(claude-agent-sdk): cover run-admission re-validate retry branch
jpr5 Jun 5, 2026
9927e14
Merge pull request #1887 from ag-ui-protocol/fix/claude-sdk-serialize…
jpr5 Jun 5, 2026
0efa0d4
chore: remove integration harness ignore rule
Atwolf Jun 6, 2026
0eae252
docs(sdk): mark THINKING_* events deprecated in go/kotlin/ruby mirrors
jpr5 Jun 6, 2026
6534ec4
Merge pull request #1888 from ag-ui-protocol/blitz/pathfinder-gaps/in…
jpr5 Jun 6, 2026
111e042
Merge branch 'main' into matt.spurlin/1018/fix-missing-event-types
contextablemark Jun 7, 2026
88ce4bc
Merge pull request #1663 from mattsp1290/matt.spurlin/1018/fix-missin…
contextablemark Jun 7, 2026
74da291
fix(adk): collect workflow output schema agents
he-yufeng Jun 7, 2026
6ca5827
fix(adk): cache session reads per execution
he-yufeng Jun 7, 2026
a317233
chore(release): bump TS a2ui recovery packages to republish (OSS-162)
contextablemark Jun 5, 2026
f9b9b37
feat(a2ui): re-enable generation & design guidelines (OSS-248)
ranst91 Jun 8, 2026
c096afe
chore(oss-162): remove temp scaffolding now that recovery packages ar…
contextablemark Jun 8, 2026
c30dc5a
refactor(a2ui): unify tool factories on shared A2UIToolParams (OSS-248)
ranst91 Jun 8, 2026
ac3d96e
refactor(a2ui): re-export A2UIGuidelines from ag_ui_langgraph (Py par…
ranst91 Jun 8, 2026
f6e294e
fix(dojo): drop read-only-FS global pnpm install from TS Render builds
ranst91 Jun 8, 2026
e3fdba4
fix(a2ui): keep langgraph-python a2ui example on published adapter API
ranst91 Jun 8, 2026
f0f75e2
test(a2ui): cover get_a2ui_tools(params) in langgraph-python unit job
ranst91 Jun 8, 2026
27772c3
fix(oss-162): pin @copilotkit/runtime's a2ui-middleware to 0.0.8 (rec…
contextablemark Jun 8, 2026
a57a449
Merge pull request #1896 from ag-ui-protocol/chore/oss-162-remove-tem…
contextablemark Jun 8, 2026
a7f65dc
remove plan
ranst91 Jun 8, 2026
107d4b7
Merge branch 'main' into ran/oss-248-re-enable-generation-and-design-…
ranst91 Jun 8, 2026
b73f77c
fix(a2ui): restore local toolkit bridge for unpublished A2UIToolParam…
ranst91 Jun 8, 2026
e395af5
fix(client): avoid per-event full clone of messages+state in runSubsc…
mxmzb Jun 5, 2026
748ad8c
fix(client): harden payloadExceeds + drop freeze guard when mutation …
mxmzb Jun 5, 2026
b65c22e
fix(oss-248): keep examples @ag-ui/langgraph on link:.. (run the loca…
contextablemark Jun 8, 2026
7ac2cba
Merge pull request #1894 from ag-ui-protocol/ran/oss-248-re-enable-ge…
contextablemark Jun 8, 2026
b61f805
fix(ci): upload nested Python SDK dist dirs in release publish
jpr5 Jun 8, 2026
4987b0b
Merge pull request #1900 from ag-ui-protocol/fix/release-publish-nest…
jpr5 Jun 8, 2026
555e5c5
Merge pull request #1828 from he-yufeng/fix/strands-session-manager-c…
jpr5 Jun 8, 2026
96c7ac0
Merge branch 'main' into fix/adk-session-read-cache
contextablemark Jun 9, 2026
034aac0
fix(adk): re-execute tool on HITL confirmation for LlmAgent roots (#1…
contextablemark Jun 9, 2026
6905d21
chore(release): bump sdk-ts (@ag-ui/core@0.0.56, @ag-ui/client@0.0.56…
Jun 8, 2026
8fed490
chore(release): bump integration-langgraph-ts (@ag-ui/langgraph@0.0.40)
Jun 8, 2026
f0cba3c
chore(release): bump integration-langgraph-py (ag-ui-langgraph@0.0.41)
Jun 8, 2026
b7b7526
chore(adk-middleware): update default live-test model to gemini-3.5-f…
contextablemark Jun 8, 2026
731759a
fix(langgraph): pass A2UIToolParams dict to get_a2ui_tools in dynamic…
mefogle Jun 9, 2026
185d5c0
chore(dojo): regenerate files.json for a2ui_dynamic_schema agent fix
mefogle Jun 9, 2026
abce34b
Merge pull request #1905 from ag-ui-protocol/fix/langgraph-a2ui-dynam…
contextablemark Jun 9, 2026
e0330dd
Merge branch 'main' into chore/adk-middleware-test-model
contextablemark Jun 9, 2026
8352e3e
fix(adk): scope session read cache to pre-run
he-yufeng Jun 9, 2026
5560e02
chore: publish @ag-ui/a2ui-toolkit to 0.0.3
ranst91 Jun 9, 2026
0d01db6
Merge branch 'main' into chore/adk-middleware-test-model
contextablemark Jun 9, 2026
2083e40
Merge pull request #1904 from Contextable/chore/adk-middleware-test-m…
contextablemark Jun 9, 2026
c4c63ef
chore: publish langgraph TS integration using @ag-ui/a2ui-toolkit to …
ranst91 Jun 9, 2026
7150a2a
test(adk): drop issue number from HITL confirmation test name
contextablemark Jun 9, 2026
3056d19
Merge remote-tracking branch 'origin/main' into fix/1839-llmagent-hit…
contextablemark Jun 9, 2026
ed83a8c
fix(dojo/e2e): make agentic_chat sendMessage multi-turn safe (#1911)
contextablemark Jun 9, 2026
7196e1a
chore(oss-248): remove temp scaffolding now that the A2UI packages ar…
contextablemark Jun 9, 2026
c7d3559
Merge pull request #1912 from ag-ui-protocol/fix/flaky-langgraph-ts-a…
contextablemark Jun 9, 2026
861d0b2
Merge pull request #1913 from ag-ui-protocol/chore/oss-248-remove-tem…
contextablemark Jun 9, 2026
b420578
test(adk): use shared LIVE_TEST_MODEL in HITL confirmation test
contextablemark Jun 9, 2026
889a49e
Merge branch 'main' into fix/1839-llmagent-hitl-confirmation
contextablemark Jun 9, 2026
8d3c011
Merge branch 'main' into fix/adk-session-read-cache
contextablemark Jun 9, 2026
1072968
ci(release): add one-click canary publish orchestrator
mxmzb Jun 9, 2026
dadec30
fix(ci): harden canary orchestrator against ref races and silent fail…
mxmzb Jun 9, 2026
8f52134
docs: add disallowedToolCalls example for FilterToolCallsMiddleware
NathanTarbert Jun 9, 2026
48ce757
fix(ci): close suffix-validation bypass and harden canary slug
mxmzb Jun 9, 2026
7de823a
fix(ci): validate suffix early, block tag dispatch, unique ref per at…
mxmzb Jun 10, 2026
3c0ea14
fix(adk-middleware): strip additionalProperties from client tool sche…
contextablemark Jun 10, 2026
ecb1936
fix(adk-middleware): suppress duplicate HITL tool call under SSE stre…
contextablemark Jun 10, 2026
7c359e4
Merge pull request #1865 from ag-ui-protocol/fix/client-subscriber-cl…
mxmzb Jun 10, 2026
8562c4d
fix: drop stale parent session cache
he-yufeng Jun 10, 2026
aa16ce9
fix(adk-middleware): suppress cross-path (proxy) duplicate HITL tool …
contextablemark Jun 10, 2026
75b354c
Merge pull request #1914 from ag-ui-protocol/feat/canary-publish-action
jpr5 Jun 10, 2026
ed37943
fix(adk-middleware): high-water-mark dedupe for replayed LRO tool calls
contextablemark Jun 10, 2026
f4b27ca
Add proto package license metadata
Jun 10, 2026
2111267
fix(langgraph): round-trip reasoning content losslessly across turns
onsclom Jun 5, 2026
68b5905
chore(adk-middleware): refresh stale examples uv.lock (google-adk 1.2…
contextablemark Jun 10, 2026
78e1160
Merge pull request #1863 from onsclom/austin/oss-28-sse-drop-recovery…
onsclom Jun 10, 2026
cf4839f
fix(adk-middleware): gate resume until all of a turn's long-running r…
jplikesbikes Jun 10, 2026
5d9d1f2
fix(client): dedupe reasoning when MESSAGES_SNAPSHOT supplies it
tylerslaton Jun 10, 2026
0bdbbe1
Merge pull request #1919 from ag-ui-protocol/fix/adk-client-tool-addi…
contextablemark Jun 10, 2026
14f6a32
fix(langgraph): open streamed reasoning under the provider's canonica…
onsclom Jun 10, 2026
cb4b150
fix(langgraph): stash the canonical id from text-less reasoning chunks
onsclom Jun 10, 2026
75ea54c
Merge pull request #1926 from tylerslaton/fix/messages-snapshot-reaso…
onsclom Jun 10, 2026
eb07f0a
Merge branch 'main' into fix/adk-lro-duplicate-tool-call
contextablemark Jun 10, 2026
f5d4b5f
Merge pull request #1920 from ag-ui-protocol/fix/adk-lro-duplicate-to…
contextablemark Jun 11, 2026
c025e93
Merge branch 'main' into fix/1839-llmagent-hitl-confirmation
contextablemark Jun 11, 2026
306b8d9
Merge pull request #1902 from ag-ui-protocol/fix/1839-llmagent-hitl-c…
contextablemark Jun 11, 2026
655ade2
Merge branch 'main' into fix/adk-session-read-cache
contextablemark Jun 11, 2026
59a541e
Merge pull request #1890 from he-yufeng/fix/adk-session-read-cache
contextablemark Jun 11, 2026
96dae37
chore(adk): add changelog entry for per-execution session read cache
contextablemark Jun 11, 2026
227fe5e
Merge pull request #1929 from ag-ui-protocol/chore/adk-changelog-sess…
contextablemark Jun 11, 2026
1859523
fix(dojo-e2e): make weather demo tools deterministic under test
ranst91 Jun 11, 2026
24a4cc2
fix(aws-strands): default CORS origin to literal "*" to match Python …
ranst91 Jun 11, 2026
307d2b8
refactor(adk-middleware): extract _build_function_response_parts helper
jplikesbikes Jun 11, 2026
236f0ad
fix(adk-middleware): reject a trailing message while a turn's calls a…
jplikesbikes Jun 11, 2026
8c2ad34
Merge pull request #1916 from ag-ui-protocol/docs/filter-tool-calls
NathanTarbert Jun 11, 2026
33a7c8e
fix(adk): stop emitting RUN_FINISHED after RUN_ERROR (#1892)
contextablemark Jun 12, 2026
f0cc17d
Merge branch 'main' into fix/1892-duplicate-terminal-event
contextablemark Jun 12, 2026
6310330
Merge pull request #1941 from ag-ui-protocol/fix/1892-duplicate-termi…
contextablemark Jun 12, 2026
fbeb393
Merge branch 'main' into fix/multi-lro-resume-gating
contextablemark Jun 12, 2026
0dc4c55
fix(client): bind default fetch in HttpAgent to prevent browser "Ille…
contextablemark Jun 11, 2026
54f1341
chore(release): bump sdk-ts (@ag-ui/core@0.0.57, @ag-ui/client@0.0.57…
Jun 12, 2026
960a06b
chore(dojo): adopt CopilotKit 1.60.0
contextablemark Jun 11, 2026
7e42a37
chore(dojo): adopt CopilotKit 1.60.1
ranst91 Jun 12, 2026
63724fe
fix(dojo): disable langchain agent (langchain-core version clash)
ranst91 Jun 12, 2026
873a5e5
Merge branch 'main' into fix/multi-lro-resume-gating
contextablemark Jun 12, 2026
94f8f06
fix(langgraph): forward runtime context through kwargs
he-yufeng May 30, 2026
ddb4184
fix(a2ui-toolkit): validate singular child and detect child-reference…
ranst91 Jun 12, 2026
3a4c936
docs(a2ui-toolkit): note ref-field scope on the child adjacency build…
contextablemark Jun 12, 2026
6d68171
fix(adk-middleware): address review feedback on multi-LRO resume gating
jplikesbikes Jun 12, 2026
55c2ff5
Add core package license metadata
Jun 10, 2026
ce2158a
Add client package license metadata
Jun 10, 2026
246fcd7
Add encoder package license metadata
Jun 10, 2026
05fdf4d
Add a2ui toolkit package license metadata
Jun 10, 2026
dea7fa5
fix(langgraph): preserve runtime config in prepare_regenerate_stream …
uesleilima May 21, 2026
09e4f66
Merge branch 'main' into yanziwei/add-proto-license-metadata
contextablemark Jun 12, 2026
d0df1bf
fix(langgraph): use ToolMessage id (with tool_call_id fallback) in TO…
mxmzb May 21, 2026
a7259b8
cr: trim comments, align parent_message_id fallback, add message_id t…
mxmzb May 21, 2026
81ec7b1
feat(aws-strands): port the A2UI subagent architecture to the TypeScr…
ranst91 Jun 10, 2026
7a6ab1b
feat(aws-strands): port the A2UI subagent architecture to the Python …
ranst91 Jun 10, 2026
7248d71
Merge pull request #1921 from yanziwei/yanziwei/add-proto-license-met…
contextablemark Jun 12, 2026
1b71d76
test(a2ui-toolkit): de-flake deep child-chain cycle tests
ranst91 Jun 12, 2026
a76f8f9
Merge branch 'main' into fix/multi-lro-resume-gating
contextablemark Jun 13, 2026
34e5154
Merge pull request #1935 from jplikesbikes/fix/multi-lro-resume-gating
contextablemark Jun 13, 2026
2f5efa5
Merge branch 'main' into fix/adk-workflow-output-schema-agents
contextablemark Jun 13, 2026
5b57095
docs(adk-middleware): add CHANGELOG entry for #1889
contextablemark Jun 13, 2026
39df3b4
Merge pull request #1889 from he-yufeng/fix/adk-workflow-output-schem…
contextablemark Jun 13, 2026
e26c1d1
docs: add tool-result resolver pinning example
Atwolf Jun 14, 2026
bcc5e73
fix: resolve agents from assistant message history
Atwolf Jun 14, 2026
e30b40d
fix: preserve adk author on assistant messages
Atwolf Jun 15, 2026
74cf658
fix: scope tool result history routing
Atwolf Jun 15, 2026
e76b967
chore(release): bump integration-aws-strands-py (ag_ui_strands@0.2.0)
Jun 15, 2026
5acc138
chore(release): bump integration-aws-strands-ts (@ag-ui/aws-strands@0…
Jun 15, 2026
5140dce
feat(adk): A2UI sub-agent rendering tool with recovery loop (OSS-158)
contextablemark Jun 10, 2026
449dbdd
fix(adk): reconstruct prior A2UI surface for intent="update" (OSS-158)
contextablemark Jun 10, 2026
19b4a72
feat(adk): A2UI dojo demos (dynamic_schema + recovery) + Gemini-shape…
contextablemark Jun 10, 2026
cbd272d
feat(adk): A2UI via toolkit recovery + reuse of Google SDK prompt-ren…
contextablemark Jun 13, 2026
e4b16c8
fix(adk/examples): re-lock examples env for the a2ui-agent-sdk dep + …
contextablemark Jun 13, 2026
3377a40
fix(adk): allow google-adk<3.0 (drop the <2.0 cap); floor aiohttp>=3.…
contextablemark Jun 13, 2026
b92c5fb
chore(adk): declare google-adk floor at 1.28.1 (a2ui-agent-sdk's true…
contextablemark Jun 13, 2026
ec668be
feat(adk): add fixed-schema A2UI dojo demo + aimock fixtures (OSS-158)
ranst91 Jun 15, 2026
572f0e9
fix(adk): surface A2UI hard-failure envelope on recovery exhaustion
ranst91 Jun 15, 2026
a249d67
fix(aws-strands): replace "Hello" fallback with empty string on FE-to…
mxmzb May 22, 2026
efe6e40
fix(aws-strands): don't filter pending frontend tool results as orphaned
mxmzb May 22, 2026
ff81e3f
fix(aws-strands): fall back to frontend_tool_names when tool_call_id …
mxmzb May 22, 2026
8f9aaaf
fix(aws-strands): suppress MESSAGES_SNAPSHOT on delta payloads
mxmzb May 22, 2026
829752e
fix(create-ag-ui-app): pin copilotkit@3 and fix crewai-flows flag map…
maxkorp Jun 15, 2026
9adb9c9
refactor(create-ag-ui-app): build copilotkit create argv via tested h…
maxkorp Jun 15, 2026
69c8b1a
style: apply prettier formatting to build-args + spawn wiring
maxkorp Jun 15, 2026
f5bcafd
fix(create-ag-ui-app): track copilotkit@latest instead of pinning @3
maxkorp Jun 15, 2026
e95be25
Merge pull request #1970 from ag-ui-protocol/max/fix-create-ag-ui-no-…
maxkorp Jun 15, 2026
990dc64
chore(release): create-ag-ui-app@0.0.58
maxkorp Jun 15, 2026
c739d50
chore(release): split create-ag-ui-app scope
tylerslaton Jun 15, 2026
28e605a
feat(a2ui-toolkit): validate catalog-derived child ref-fields (#1948)
ranst91 Jun 15, 2026
0da0f10
test(langgraph): cover non-ToolMessage OnToolEnd output guard (#1072)
NathanTarbert Jun 15, 2026
015ebaa
chore: update CODEOWNERS to remove Kotlin and ADK middleware
tylerslaton Jun 16, 2026
fc1ef87
fix: complete LICENSE + license-field coverage for published packages…
NathanTarbert Jun 15, 2026
2d2fc8d
fix: license @ag-ui/langchain MIT, @ag-ui/mastra Apache-2.0 to match …
NathanTarbert Jun 15, 2026
be3c64b
fix: license @ag-ui/spring-ai Apache-2.0 to match upstream Spring AI …
NathanTarbert Jun 15, 2026
46e4fbe
fix: package LICENSE in ag-ui-protocol Ruby gem (#1624)
NathanTarbert Jun 15, 2026
33288b3
fix: order license-files after version in adk/aws-strands pyproject
ranst91 Jun 16, 2026
2902571
fix(aws-strands): resolve FE-tool name from session history, drop arb…
mxmzb Jun 16, 2026
fdbfb43
fix(aws-strands): avoid phantom tool-call parents without snapshots
tylerslaton Apr 29, 2026
e699b7c
fix(dojo): stabilize chat e2e sends
tylerslaton Jun 16, 2026
90a98d1
refactor(aws-strands): centralize tool snapshot predicate
tylerslaton Jun 16, 2026
9ed8019
Merge remote-tracking branch 'origin/main' into fix/strands-hello-inj…
mxmzb Jun 16, 2026
66a92b7
Merge pull request #1761 from ag-ui-protocol/fix/strands-hello-inject…
mxmzb Jun 16, 2026
c77fae0
feat(a2ui-toolkit): add A2UI schema-context split and catalog resolver
ranst91 Jun 16, 2026
47cc022
feat(a2ui-toolkit): add A2UI schema-context split and catalog resolve…
ranst91 Jun 16, 2026
e7e506f
feat(a2ui-middleware): fall back to frontend-registered catalog id
ranst91 Jun 17, 2026
e4fec00
chore: revert pyproject a2ui toolkit version
ranst91 Jun 17, 2026
3f02018
chore(release): bump sdk-py-a2ui-toolkit (ag-ui-a2ui-toolkit@0.0.4)
Jun 17, 2026
8829eb9
chore(release): bump middleware-a2ui (@ag-ui/a2ui-middleware@0.0.9)
Jun 17, 2026
63fc890
chore(release): bump sdk-ts-a2ui-toolkit (@ag-ui/a2ui-toolkit@0.0.4)
Jun 17, 2026
ab941a0
feat(aws-strands): A2UI catalog parity and streamed catalogId stamp
ranst91 Jun 16, 2026
5844578
feat(aws-strands): A2UI catalog parity and streamed catalogId stamp (TS)
ranst91 Jun 16, 2026
7513d05
feat(langgraph): stream render sub-agent for progressive A2UI paint
ranst91 Jun 16, 2026
5e4c914
feat(langgraph): stream render sub-agent for progressive A2UI paint (TS)
ranst91 Jun 16, 2026
ce6470c
refactor(langgraph): use shared split_a2ui_schema_context
ranst91 Jun 16, 2026
fb6dee4
chore(langgraph): require ag-ui-a2ui-toolkit>=0.0.4
ranst91 Jun 17, 2026
909c4e7
fix(a2ui-middleware): dedup final-envelope paint by surfaceId
ranst91 Jun 18, 2026
109d489
feat(langgraph): stream inner render_a2ui deltas for progressive A2UI…
ranst91 Jun 18, 2026
458bb1d
feat(adk): auto-inject generate_a2ui tool (Strands parity)
ranst91 Jun 18, 2026
c15e1e0
fix(adk/examples): opt the dynamic_schema demo into A2UI injection vi…
ranst91 Jun 18, 2026
6536bc1
fix(dojo): scope ADK A2UI injection to a per-agent whitelist
ranst91 Jun 18, 2026
2a84ca4
refactor(langgraph): stream A2UI render via native OnChatModelStream,…
ranst91 Jun 18, 2026
eb480d5
chore(adk-middleware): re-resolve uv.lock to latest google-adk 1.x (#…
contextablemark Jun 18, 2026
74d3b7b
ci(adk-middleware): add allowed-to-fail google-adk 2.x test leg (#1947)
contextablemark Jun 18, 2026
177348a
ci(adk-middleware): make ADK 2.x leg informational (green) instead of…
contextablemark Jun 18, 2026
a74ccec
Merge pull request #1988 from ag-ui-protocol/chore/adk-bump-uv-lock-g…
contextablemark Jun 18, 2026
a3e7cac
Merge pull request #1989 from ag-ui-protocol/ci/adk-middleware-adk-2x…
contextablemark Jun 18, 2026
19d4124
Merge main into mark/oss-158 (resolve uv.lock)
contextablemark Jun 18, 2026
9bd4898
Merge branch 'main' into feature/agent-resolver
contextablemark Jun 19, 2026
8b72fd5
Merge pull request #1846 from Atwolf/feature/agent-resolver
contextablemark Jun 19, 2026
6f4da17
refactor(langgraph dojo): a2ui_dynamic_schema example uses create_agent
ranst91 Jun 19, 2026
8c11ba1
Merge branch 'main' into fix/a2ui-strands-lg-parity
ranst91 Jun 19, 2026
dc27f0c
Merge pull request #1980 from ag-ui-protocol/fix/a2ui-strands-lg-parity
ranst91 Jun 19, 2026
b9910b9
chore(release): bump middleware-a2ui (@ag-ui/a2ui-middleware@0.0.10)
Jun 19, 2026
e98a388
chore(release): bump integration-aws-strands-py (ag_ui_strands@0.2.1)
Jun 19, 2026
f54ab03
chore(release): bump integration-langgraph-ts (@ag-ui/langgraph@0.0.42)
Jun 19, 2026
9515eb8
chore(release): bump integration-aws-strands-ts (@ag-ui/aws-strands@0…
Jun 19, 2026
dad2082
chore(release): bump integration-langgraph-py (ag-ui-langgraph@0.0.42)
Jun 19, 2026
dbd2aa1
Merge pull request #2000 from ag-ui-protocol/release/next
ranst91 Jun 19, 2026
ce32f6d
Merge branch 'main' into mark/oss-158-port-new-a2ui-implementation-to…
ranst91 Jun 19, 2026
01ecab7
Merge pull request #1955 from ag-ui-protocol/mark/oss-158-port-new-a2…
ranst91 Jun 19, 2026
e283484
fix(strands): forward HITL tool result on resume instead of discardin…
davidmckayv Jun 20, 2026
78cc3cf
ci: re-trigger e2e (no-op)
davidmckayv Jun 20, 2026
4202bf2
Merge pull request #2003 from davidmckayv/david/strands-hitl-context-fix
MikeRyanDev Jun 20, 2026
2c61bdc
fix(langgraph/ts): preserve multimodal metadata + media type through …
nadine-nguyen Jun 22, 2026
76b3855
Merge branch 'main' into fix/langgraph-ts-multimodal-metadata-roundtrip
nadine-nguyen Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 0 additions & 5 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,12 @@
sdks/community/java @pascalwilbrink
docs/sdk/java @pascalwilbrink

sdks/community/kotlin @contextablemark
docs/sdk/kotlin @contextablemark

sdks/community/go @mattsp1290
docs/sdk/go @mattsp1290

sdks/community/dart @mattsp1290
docs/sdk/dart @mattsp1290

integrations/adk-middleware @contextablemark

integrations/agent-spec @sonleoracle

.github/config-allowlist.txt @AlemTuzlak @atai
2 changes: 2 additions & 0 deletions .github/config-allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ middlewares/a2a-middleware/tsdown.config.ts
middlewares/a2ui-middleware/tsup.config.ts
middlewares/event-throttle-middleware/tsdown.config.ts
middlewares/mcp-apps-middleware/tsdown.config.ts
middlewares/mcp-middleware/tsdown.config.ts
middlewares/middleware-starter/tsdown.config.ts
sdks/community/java/examples/copilot-app/next.config.ts
sdks/typescript/packages/a2ui-toolkit/tsdown.config.ts
sdks/typescript/packages/cli/tsdown.config.ts
sdks/typescript/packages/client/tsdown.config.ts
sdks/typescript/packages/core/tsdown.config.ts
Expand Down
261 changes: 261 additions & 0 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,261 @@
name: canary / publish

# Discoverable, one-click canary publisher. Surfaces in the Actions tab so any
# maintainer can publish a prerelease of the branch they're working on without
# learning the manual `canary/*` branch + dispatch dance.
#
# IMPORTANT: this workflow does NOT publish to npm itself. It ORCHESTRATES
# publish-release.yml, which holds the SINGLE npm OIDC trusted-publisher binding
# (see that file's header). Adding a second npm-publishing entry point would
# break OIDC for every @ag-ui/* package.
#
# Why a separate orchestrator instead of a flag inside publish-release.yml:
# The `npm` GitHub Environment's deployment-branch policy is evaluated against
# the ref a run is TRIGGERED on — NOT against branches created mid-run. So
# publish-release.yml can only publish a canary when its run's ref already
# matches the policy (`canary/*`). Creating a branch inside a run triggered on
# `feature/*` does not change that run's ref, so it would still be rejected.
# This workflow therefore runs on any non-main branch, mirrors it to a
# short-lived `canary/<slug>` ref, dispatches publish-release.yml ON that ref
# (clearing the env gate), waits for it, then deletes the ref.
#
# Token: the branch create/delete and the cross-workflow dispatch use the
# devops-bot GitHub App token, NOT the default GITHUB_TOKEN. Events authenticated
# with GITHUB_TOKEN do not start new workflow runs (recursion prevention), so the
# delegated publish-release run would silently never fire.

on:
workflow_dispatch:
inputs:
scope:
description: "Package scope to publish a canary for. Regenerated from scripts/release/release.config.json — do NOT hand-edit (the release-scope-dropdown-sync CI guard enforces parity)."
required: true
type: choice
options:
- integration-a2a
- integration-adk-py
- integration-adk-ts
- integration-ag2
- integration-agent-spec
- integration-agno
- integration-aws-strands-py
- integration-aws-strands-ts
- integration-claude-agent-sdk-py
- integration-claude-agent-sdk-ts
- integration-cloudflare-agents
- integration-crewai-py
- integration-crewai-ts
- integration-langchain
- integration-langgraph-py
- integration-langgraph-ts
- integration-langroid
- integration-llama-index
- integration-mastra
- integration-pydantic-ai
- integration-spring-ai
- integration-watsonx-py
- integration-watsonx-ts
- middleware-a2a
- middleware-a2ui
- middleware-mcp
- middleware-mcp-apps
- sdk-py
- sdk-py-a2ui-toolkit
- sdk-ts
- sdk-ts-a2ui-toolkit
- create-ag-ui-app
suffix:
description: "Prerelease suffix (e.g. 'fix-user-issue'); blank = unix timestamp. Allowed: [a-zA-Z0-9._-]+. Reuse a suffix only if the base version moved, else the publish collides."
required: false
type: string
dry_run:
description: "Dry run: build + detect but do NOT publish to npm. Useful for previewing what would ship."
required: false
default: false
type: boolean

concurrency:
# Serialize repeated dispatches on the same source branch. Cross-branch ref
# races are independently prevented by making the canary ref unique per run
# (slug + github.run_id, see the slug step below).
group: canary-publish-${{ github.ref }}
cancel-in-progress: false

permissions:
# The job's own GITHUB_TOKEN does nothing privileged — every write goes through
# the App token minted below.
contents: read

jobs:
canary:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Guard ref
# Canary publishes are for non-main BRANCHES only. Block main (use the
# stable release flow) and block non-branch refs such as tags (a tag
# dispatch would otherwise canary-publish from the tagged commit).
if: github.ref == 'refs/heads/main' || !startsWith(github.ref, 'refs/heads/')
run: |
echo "::error::Canary publishes are for non-main branches only (got '${{ github.ref }}'). To release from main, use the 'release / publish' workflow with mode=stable."
exit 1

- name: Validate suffix
if: inputs.suffix != ''
env:
SUFFIX: ${{ inputs.suffix }}
run: |
set -euo pipefail
# Validate BEFORE any side effect (token mint, ref creation) so a bad
# suffix can't leave an orphaned canary ref behind. Bash regex matches
# the WHOLE string (grep matches per line and would accept a multi-line
# value whose first line is valid).
if ! [[ "$SUFFIX" =~ ^[a-zA-Z0-9._-]+$ ]]; then
echo "::error::Invalid suffix '$SUFFIX'. Allowed: [a-zA-Z0-9._-]+ (blank = unix timestamp)."
exit 1
fi

- name: Mint devops-bot token
id: app-token
uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2.2.2
with:
app-id: "3877599"
private-key: ${{ secrets.DEVOPS_BOT_PRIVATE_KEY }}

- name: Compute canary branch name
id: slug
env:
REF_NAME: ${{ github.ref_name }}
run: |
set -euo pipefail
# Byte-deterministic (LC_ALL=C) transform collapsing the source ref to a
# single path segment under canary/ so it matches the `canary/*`
# deployment-branch policy. tr -s collapses same-char runs (so no `..`),
# and the sed fully strips any leading/trailing `.`/`-` runs.
export LC_ALL=C
SLUG=$(printf '%s' "$REF_NAME" | tr '/' '-' | tr -c 'a-zA-Z0-9._-' '-' | tr -s '.-')
SLUG=$(printf '%s' "$SLUG" | sed -E 's/^[.-]+//; s/[.-]+$//')
if [ -z "$SLUG" ]; then
echo "::error::Could not derive a canary slug from ref '$REF_NAME'"
exit 1
fi
# Append run id AND attempt so every dispatch — including a re-run of
# this same orchestration — owns a UNIQUE canary ref. This prevents two
# dispatches whose source branches slugify to the same value (or a
# re-run reusing the run id) from racing one shared ref, and keeps run
# discovery below unambiguous (exactly one publish run per ref).
REF_SUFFIX="${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
echo "branch=canary/${SLUG}-${REF_SUFFIX}" >> "$GITHUB_OUTPUT"
echo "Canary branch: canary/${SLUG}-${REF_SUFFIX}"

- name: Create or update canary ref
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
BRANCH: ${{ steps.slug.outputs.branch }}
SHA: ${{ github.sha }}
run: |
set -euo pipefail
# Point canary/<slug> at the dispatched ref's HEAD. The ref is unique
# per run, so it should not pre-exist; only force-update on the specific
# "already exists" case (e.g. a re-run reusing the run id). Any OTHER
# failure (auth, rate limit, 5xx) must surface, not be silently retried.
ERR=$(mktemp)
if gh api --silent -X POST "repos/${GITHUB_REPOSITORY}/git/refs" \
-f ref="refs/heads/${BRANCH}" -f sha="$SHA" 2>"$ERR"; then
echo "Created ${BRANCH} at ${SHA}"
elif grep -qi "already exists" "$ERR"; then
echo "Ref ${BRANCH} already exists; force-updating to ${SHA}"
gh api --silent -X PATCH "repos/${GITHUB_REPOSITORY}/git/refs/heads/${BRANCH}" \
-f sha="$SHA" -F force=true
else
echo "::error::Failed to create canary ref ${BRANCH}:"
cat "$ERR" >&2
exit 1
fi

- name: Dispatch publish-release.yml on the canary ref and wait
id: dispatch
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
BRANCH: ${{ steps.slug.outputs.branch }}
SCOPE: ${{ inputs.scope }}
SUFFIX: ${{ inputs.suffix }}
DRY_RUN: ${{ inputs.dry_run }}
run: |
set -euo pipefail
# (suffix already validated in the "Validate suffix" step above, before
# the canary ref was created)
gh workflow run publish-release.yml \
--repo "$GITHUB_REPOSITORY" \
--ref "$BRANCH" \
-f mode=prerelease \
-f scope="$SCOPE" \
-f suffix="$SUFFIX" \
-f dry_run="$DRY_RUN"

# The canary ref is unique to this run+attempt, so there is exactly ONE
# publish-release dispatch on it — no timestamp watermark needed (which
# also sidesteps runner/server clock-skew). Poll until it indexes
# (30 x 6s = 3 min tolerance for Actions indexing lag). --limit is
# defensive headroom; the branch/workflow/event filters are applied
# server-side so the matching run is never crowded out.
RUN_ID=""
for _ in $(seq 1 30); do
sleep 6
RUN_ID=$(gh run list \
--repo "$GITHUB_REPOSITORY" \
--workflow=publish-release.yml \
--branch "$BRANCH" \
--event workflow_dispatch \
--limit 100 \
--json databaseId \
--jq 'sort_by(.databaseId) | last | .databaseId // empty') || RUN_ID=""
if [ -n "$RUN_ID" ]; then
break
fi
done
if [ -z "$RUN_ID" ]; then
echo "::error::Dispatched publish-release run never appeared on ${BRANCH}. Leaving the ref in place for debugging; delete it manually once resolved."
exit 1
fi

# Mark located BEFORE the watch so cleanup runs even if the publish
# fails — but is skipped entirely if we never tracked a run (so we
# never delete a ref a still-pending run may need).
echo "located=true" >> "$GITHUB_OUTPUT"

RUN_URL=$(gh run view "$RUN_ID" --repo "$GITHUB_REPOSITORY" --json url --jq .url)
echo "Delegated publish run: ${RUN_URL}"
{
echo "## Canary publish"
echo ""
echo "- **Scope:** \`${SCOPE}\`"
echo "- **Source branch:** \`${GITHUB_REF_NAME}\`"
echo "- **Delegated run:** ${RUN_URL}"
} >> "$GITHUB_STEP_SUMMARY"

# --exit-status propagates the publish run's failure to this job.
gh run watch "$RUN_ID" --repo "$GITHUB_REPOSITORY" --exit-status

- name: Delete canary ref
# Clean up only when we actually tracked a dispatched run (located=true),
# even if that run then failed. If the run was never located, the ref is
# deliberately left in place — deleting it could yank the ref out from
# under a publish run that is still about to start.
if: always() && steps.dispatch.outputs.located == 'true'
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
BRANCH: ${{ steps.slug.outputs.branch }}
run: |
# Best-effort cleanup: never fail the job on a delete hiccup, but do
# surface a real error instead of masking every failure as "gone".
set -uo pipefail
ERR=$(mktemp)
if gh api --silent -X DELETE "repos/${GITHUB_REPOSITORY}/git/refs/heads/${BRANCH}" 2>"$ERR"; then
echo "Deleted ${BRANCH}"
elif grep -qiE "not found|does not exist" "$ERR"; then
echo "Branch ${BRANCH} already gone"
else
echo "::warning::Failed to delete canary ref ${BRANCH} (manual cleanup may be needed):"
cat "$ERR" >&2
fi
5 changes: 5 additions & 0 deletions .github/workflows/dojo-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,11 @@ jobs:
- name: Run dojo+agents
uses: JarvusInnovations/background-action@2428e7b970a846423095c79d43f759abf979a635 # v1.0.7
if: ${{ join(matrix.services, ',') != '' && contains(join(matrix.services, ','), 'dojo') }}
env:
# Backend tool-rendering demos call the live open-meteo API, which
# rate-limits CI's shared egress IPs and hangs the e2e tests. Return
# canned weather data instead so these suites are deterministic.
AG_UI_MOCK_WEATHER: "1"
with:
run: |
node ../scripts/run-dojo-everything.js --only ${{ join(matrix.services, ',') }}
Expand Down
47 changes: 40 additions & 7 deletions .github/workflows/lint-release-workflows.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
name: Lint Release Workflows

# Runs actionlint + shellcheck against the release / create-pr, release / publish,
# and release / pre pipelines and the scripts they call. Keeps these critical,
# retry-sensitive files from silently regressing on shell or action-syntax bugs.
# Runs actionlint + shellcheck against the release / create-pr, release /
# publish, and canary / publish pipelines and the scripts they call. Keeps
# these critical, retry-sensitive files from silently regressing on shell or
# action-syntax bugs.
#
# Scope is intentionally narrow: only the three release workflows and
# Scope is intentionally narrow: only the release workflows and
# scripts/release/*. Expanding later is cheap; starting narrow avoids
# drowning unrelated changes in pre-existing lint noise.

Expand All @@ -14,15 +15,15 @@ on:
paths:
- ".github/workflows/prepare-release.yml"
- ".github/workflows/publish-release.yml"
- ".github/workflows/prerelease.yml"
- ".github/workflows/canary.yml"
- ".github/workflows/lint-release-workflows.yml"
- "scripts/release/**"
- "nx.json"
pull_request:
paths:
- ".github/workflows/prepare-release.yml"
- ".github/workflows/publish-release.yml"
- ".github/workflows/prerelease.yml"
- ".github/workflows/canary.yml"
- ".github/workflows/lint-release-workflows.yml"
- "scripts/release/**"
- "nx.json"
Expand All @@ -46,7 +47,7 @@ jobs:
actionlint_flags: >-
.github/workflows/prepare-release.yml
.github/workflows/publish-release.yml
.github/workflows/prerelease.yml
.github/workflows/canary.yml
.github/workflows/lint-release-workflows.yml

shellcheck:
Expand Down Expand Up @@ -80,3 +81,35 @@ jobs:
persist-credentials: false
- name: Verify nx.json and release.config.json are in sync
run: bash scripts/release/verify-nx-release-allowlist.sh

release-scope-dropdown-sync:
# Verifies the workflow_dispatch `scope` choice dropdowns in
# prepare-release.yml and publish-release.yml match release.config.json's
# `.scopes` keys. These option lists are hand-maintained and drifted from
# the config (newly-enrolled packages weren't canary-selectable; stale
# scopes lingered), so this guard fails CI whenever they diverge again.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Verify release scope dropdowns match release.config.json
run: bash scripts/release/verify-release-scope-dropdowns.sh

release-config-manifest-names:
# Verifies each release.config.json package `name` matches the actual name
# in its on-disk manifest (package.json / pyproject.toml). Catches drift
# like langroid's config name being the underscore form `ag_ui_langroid`
# while its pyproject (and PyPI distribution) is `ag-ui-langroid` — harmless
# for resolution but wrong in PR bodies, release notes and human summaries.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
- name: Verify config package names match manifests
run: bash scripts/release/verify-config-manifest-names.sh
Loading
Loading