Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
628 commits
Select commit Hold shift + click to select a range
3f0a7bd
fix(showcase/lgt): copy manifest.yaml into runtime image
lukasmoschitz Jul 29, 2026
a130dfc
fix: remove all changesets (#6230)
tylerslaton Jul 29, 2026
20cb3ab
fix(showcase): align langgraph-typescript to langgraph-python north s…
lukasmoschitz Jul 29, 2026
1e57523
test(banking): make the memory-recall e2e approval loop actually comp…
mxmzb Jul 29, 2026
7030ea7
fix(showcase): settle mcp-apps D5/D6 on the full iframe cascade (#6226)
AlemTuzlak Jul 29, 2026
fa40e04
Merge remote-tracking branch 'origin/blitz/glass-inspector/integratio…
mxmzb Jul 29, 2026
4875d6d
chore(deps): update docker/login-action action to v4.6.0
renovate[bot] Jul 29, 2026
5c89395
fix(showcase): unbreak gen-ui-agent and declarative-json-render on a …
Jul 29, 2026
66b6d3f
style: auto-fix formatting
github-actions[bot] Jul 29, 2026
8522327
fix(a2ui-renderer): stop the filterCatalog export test depending on i…
mxmzb Jul 29, 2026
ce0576d
Merge branch 'main' into fix/useagent-threadid
davidmckayv Jul 29, 2026
fce904d
chore(deps): update docker/login-action action to v4.6.0 (#6229)
renovate[bot] Jul 29, 2026
d4314dd
fix(showcase): unbreak gen-ui-agent and declarative-json-render on a …
AlemTuzlak Jul 29, 2026
4c2dd14
Merge branch 'main' into fix/useagent-threadid
mme Jul 29, 2026
50e0f93
fix(a2ui-renderer): hoist the export test's entry import out of the t…
mxmzb Jul 29, 2026
70d5a16
fix(react-core): honor threadId prop on useAgent (#6141)
tylerslaton Jul 29, 2026
10b87af
docs: organize Channels guides by provider and framework (#6193)
samjulien Jul 29, 2026
f8d700c
feat(channels-intelligence): batch managed render output
MikeRyanDev Jul 29, 2026
119f6e3
fix(channels-intelligence): retry immutable render batches
MikeRyanDev Jul 29, 2026
ac1e51a
fix(channels-intelligence): bound stalled render lanes
MikeRyanDev Jul 29, 2026
f0a9435
test(channels-intelligence): bound delta-count latency
MikeRyanDev Jul 29, 2026
35bf81f
fix(channels): preserve frame-key message refs
MikeRyanDev Jul 29, 2026
f84aa5a
fix(channels): back off render batch retries
MikeRyanDev Jul 29, 2026
87e904d
chore(channels): remove obsolete changeset
MikeRyanDev Jul 29, 2026
62bc9df
fix(channels): make render batches replay stable
MikeRyanDev Jul 29, 2026
26385fe
fix(channels): address realtime batch review feedback
MikeRyanDev Jul 29, 2026
dbf4a43
fix(channels): bound paced render latency
MikeRyanDev Jul 29, 2026
4c0577f
fix(channels): release render lane flushers
MikeRyanDev Jul 29, 2026
4687648
feat(channels-intelligence): batch managed render output (#6221)
MikeRyanDev Jul 29, 2026
1c4676c
Merge remote-tracking branch 'origin/main' into blitz/glass-inspector…
mxmzb Jul 29, 2026
8433f5b
fix(showcase/ci): make the :latest tag monotonic so an older build ca…
jpr5 Jul 29, 2026
580021f
docs(channels): clarify managed setup journey
samjulien Jul 29, 2026
028ad74
docs: clarify the managed Channels setup journey (#6237)
tylerslaton Jul 29, 2026
819a8bc
Merge branch 'main' into blitz/glass-inspector/integration
davidmckayv Jul 29, 2026
217bb9b
feat(inspector): Capabilities tab + memory recall; migrate banking of…
mxmzb Jul 29, 2026
51cd36c
fix(channels): stop retrying render batches against a revoked lease (…
BenTaylorDev Jul 29, 2026
b509d7c
fix(channels): abandon a delivery whose lease was revoked instead of …
BenTaylorDev Jul 29, 2026
6c0b533
feat(channels): carry the drop cause on managed-session state transit…
BenTaylorDev Jul 29, 2026
9cc8d65
feat(channels): diagnose a refused gateway reconnect instead of retry…
BenTaylorDev Jul 29, 2026
af7b642
feat(channels): log why a managed session dropped and keep logging wh…
BenTaylorDev Jul 29, 2026
4890c52
fix(channels): abandon a fenced delivery where the turn actually fail…
BenTaylorDev Jul 29, 2026
6c7d45a
fix(channels): hide Slack tool status by default
tylerslaton Jul 28, 2026
124f4e2
fix(channels): expose managed tool status option
tylerslaton Jul 28, 2026
c1329f5
chore(changesets): remove OSS-636 entry
tylerslaton Jul 28, 2026
2f095fd
fix(channels): preserve managed Slack tool history
tylerslaton Jul 28, 2026
cc45368
test(channels): cover managed tool status launch
tylerslaton Jul 29, 2026
1a72c40
fix(channels): retire the local lease state when a delivery is fenced…
BenTaylorDev Jul 29, 2026
853ef42
fix(channels): treat a revoked delivery lease as fenced and make gate…
BenTaylorDev Jul 29, 2026
0ea0c1b
fix(channels): hide Slack tool status by default (#6204)
tylerslaton Jul 29, 2026
2bf8634
fix(channels): restore missing test declarations
tylerslaton Jul 29, 2026
7c2a13c
Fix channels intelligence CI build (#6241)
MikeRyanDev Jul 29, 2026
af67df0
feat(channels): define live-session protocol
MikeRyanDev Jul 29, 2026
5ddcb14
refactor(channels): use gateway live sessions
MikeRyanDev Jul 29, 2026
cd6fb9e
fix(channels): isolate managed render imports
MikeRyanDev Jul 29, 2026
6a22295
fix(channels): align umbrella with managed launcher
MikeRyanDev Jul 29, 2026
e60518e
fix(channels): harden live-session transport retries
MikeRyanDev Jul 29, 2026
243caa2
fix(channels): preserve one canonical run lifecycle
MikeRyanDev Jul 29, 2026
c67458b
fix(channels): present delivery join code
MikeRyanDev Jul 29, 2026
78747d6
fix(channels): settle effects before closing runs
MikeRyanDev Jul 29, 2026
66ac03f
fix(channels): reject managed slash runs and awaitChoice
MikeRyanDev Jul 29, 2026
ccf8ac5
fix(channels): preserve managed interaction references
MikeRyanDev Jul 29, 2026
624bf3c
fix(channels): cancel drained canonical runs
MikeRyanDev Jul 29, 2026
f658564
fix(channels): declare gateway session protocol
MikeRyanDev Jul 29, 2026
74b38ec
fix(channels): await delivery thread operations
MikeRyanDev Jul 29, 2026
f1c4b6c
fix(channels): keep managed Slack replies atomic
MikeRyanDev Jul 29, 2026
c07b831
fix(channels): close managed provider effect surface
MikeRyanDev Jul 29, 2026
538277e
fix(channels): hide reaction provider references
MikeRyanDev Jul 29, 2026
d5beb8e
fix(channels): enforce live-session delivery boundaries
MikeRyanDev Jul 29, 2026
23b67bd
fix(channels-slack): split long native-stream replies across messages
BenTaylorDev Jul 30, 2026
6d5fbf3
fix(channels-slack): bound rollover and keep boundaries surrogate-safe
BenTaylorDev Jul 30, 2026
d545eba
fix(channels): preserve live-session run semantics
MikeRyanDev Jul 30, 2026
6a35e3c
perf(release): cut canary publish wall-clock roughly in half
BenTaylorDev Jul 30, 2026
b8cf4dd
docs(release): note the measured pnpm cache save cost
BenTaylorDev Jul 30, 2026
d1b289a
fix(channels-slack): budget rollover in UTF-8 bytes, drain the tail, …
BenTaylorDev Jul 30, 2026
fe23c58
style: auto-fix formatting
github-actions[bot] Jul 30, 2026
0ff45fd
fix(release): don't save pnpm cache from ephemeral canary refs
BenTaylorDev Jul 30, 2026
2a1a141
perf(release): publish canary packages with bounded concurrency
BenTaylorDev Jul 30, 2026
2358727
perf(release): install only what the canary publish path needs
BenTaylorDev Jul 30, 2026
0f7325f
fix(channels-slack): guard the boundary closer, clamp fence langs, ca…
BenTaylorDev Jul 30, 2026
7d893c8
style: auto-fix formatting
github-actions[bot] Jul 30, 2026
2819beb
perf(release): cut canary publish wall-clock from ~20min to ~7min (#6…
BenTaylorDev Jul 30, 2026
7028740
feat(channels): route delivery through live sessions (#6236)
MikeRyanDev Jul 30, 2026
0f2f020
fix(channels-slack): make truncation terminal, align table breaks, mi…
BenTaylorDev Jul 30, 2026
ac42ca5
fix(release): exact-pin canary dependency sets
tylerslaton Jul 30, 2026
289a39d
fix(release): simplify canary dependency pins
tylerslaton Jul 30, 2026
70becbb
fix(release): exact-pin canary dependency sets (#6247)
BenTaylorDev Jul 30, 2026
8f16657
feat(channels): replace live sessions with realtime boundary
MikeRyanDev Jul 30, 2026
155d488
fix(channels): harden delivery protocol and lock cleanup
Jul 30, 2026
28980ab
style: auto-fix formatting
github-actions[bot] Jul 30, 2026
baf8778
fix(channels): correct RealtimeGatewayPushError args in transport test
Jul 30, 2026
e2a5dc9
fix(channels): seal packet path without blocking terminal recovery
Jul 30, 2026
fbbee17
style: auto-fix formatting
github-actions[bot] Jul 30, 2026
d64ca46
fix(channels): stream stop, provider error propagation, lock prefix
Jul 30, 2026
2f70828
fix(channels): allow stream.stop after effect path seals
Jul 30, 2026
9250f22
fix(channels): stream cleanup, digest parity, postFile fail-loud
Jul 30, 2026
552fac1
fix(channels): never soft-complete after postFile effect failure
Jul 30, 2026
34f1079
feat(channels): replace live sessions with realtime boundary (refs OS…
tylerslaton Jul 30, 2026
1a5d667
Merge branch 'main' into ben1/slack-native-stream-message-rollover
BenTaylorDev Jul 30, 2026
e816a93
chore(examples): bump ADK starters to ag-ui-adk==0.7.0 for A2UI suppo…
contextablemark Jul 30, 2026
ab53a77
test(channels-slack): close native-stream coverage gaps
BenTaylorDev Jul 30, 2026
051833f
style: auto-fix formatting
github-actions[bot] Jul 30, 2026
0c06dbf
fix(channels): use channel name for thread lock
tylerslaton Jul 30, 2026
65248cb
fix(channels-slack): roll long native-stream replies into continuatio…
BenTaylorDev Jul 30, 2026
7113c8f
fix(channels): use channel name for thread lock (#6254)
tylerslaton Jul 30, 2026
b2fc4c0
feat(channels): make Slack reply-continuation limits configurable (re…
BenTaylorDev Jul 30, 2026
a85760e
style: auto-fix formatting
github-actions[bot] Jul 30, 2026
346329a
refactor(runtime): import the launcher options type instead of mirror…
BenTaylorDev Jul 30, 2026
13e575e
Revert "refactor(runtime): import the launcher options type instead o…
BenTaylorDev Jul 30, 2026
88bef0e
feat(channels-core): parallel-by-default turn concurrency
Jul 30, 2026
10a8c3a
fix(channels-intelligence): pass channelName in concurrency test
Jul 30, 2026
9336749
feat(channels): parallel-by-default turn concurrency (#6256)
MikeRyanDev Jul 30, 2026
72750c3
feat(channels): make Slack reply-continuation limits configurable (re…
MikeRyanDev Jul 30, 2026
269d49a
feat(banking): generative-UI polish for PIN, charges, report and notes
davidmckayv Jul 30, 2026
5f76501
feat(banking): generative-UI polish for PIN, charges, report and note…
davidmckayv Jul 30, 2026
6f63b0d
feat(channels): retry immutable gateway packets
MikeRyanDev Jul 30, 2026
a0133c1
fix(channels): retain first gateway invitation
MikeRyanDev Jul 30, 2026
14071ec
feat(channels): decline claims before local admission
MikeRyanDev Jul 30, 2026
19656b9
fix(channels): bound delivery shutdown
MikeRyanDev Jul 30, 2026
4d46e57
feat(channels): persist managed asset history
MikeRyanDev Jul 30, 2026
69b23e9
fix(channels): name managed post results as assets
MikeRyanDev Jul 30, 2026
02e7eae
feat(channels): prioritize final provider delivery
MikeRyanDev Jul 30, 2026
7694cbc
fix(channels): complete ordered delivery outcomes
MikeRyanDev Jul 30, 2026
e4a105a
docs(channels): describe gateway delivery
MikeRyanDev Jul 30, 2026
6c7d411
test(channels): enforce gateway delivery docs
MikeRyanDev Jul 30, 2026
3790bbb
feat(reskinnable-demo): add the app to the workspace
mxmzb Jul 30, 2026
651f7dd
feat(reskinnable-demo): add the skin-agnostic shell and Skin contract
mxmzb Jul 30, 2026
00f9583
feat(reskinnable-demo): make banking a self-contained skin
mxmzb Jul 30, 2026
788783b
feat(reskinnable-demo): add the airline skin
mxmzb Jul 30, 2026
4ad4751
feat(reskinnable-demo): route by skin
mxmzb Jul 30, 2026
12b1ac6
test(reskinnable-demo): cover reskinning and retarget the suite
mxmzb Jul 30, 2026
1387f32
docs(reskinnable-demo): document the architecture and add the reskin …
mxmzb Jul 30, 2026
4b8b657
chore(reskinnable-demo): retarget the demo tooling
mxmzb Jul 30, 2026
25748ff
chore: allowlist the reskinnable-demo build config
mxmzb Jul 30, 2026
84b0e14
feat(channels): implement ordered managed delivery (#6257)
BenTaylorDev Jul 30, 2026
de2bc6e
feat(banking): rank largest charges instead of repeating the team split
davidmckayv Jul 30, 2026
f427ec5
feat(channels): sanitize agent event streams by default (refs OSS-647)
BenTaylorDev Jul 30, 2026
76662f3
feat(channels): apply the event sanitizer by default and drop it from…
BenTaylorDev Jul 30, 2026
e88e857
test(channels): pin that the default sanitizer keeps graceful abort h…
BenTaylorDev Jul 30, 2026
ac99098
feat(channels): sanitize agent event streams by default (OSS-647) (#6…
BenTaylorDev Jul 30, 2026
8aee7df
Merge branch 'main' into demo/banking-report-largest-charges
davidmckayv Jul 30, 2026
fcc8616
feat(banking): rank largest charges instead of repeating the team spl…
davidmckayv Jul 30, 2026
625bcd3
docs(channels): clarify availability and self-hosting
samjulien Jul 30, 2026
2a8d763
docs(channels): clarify availability and self-hosting (#6264)
samjulien Jul 30, 2026
4d74bdc
feat(runtime): auto-start managed Channels on long-running hosts (ref…
BenTaylorDev Jul 30, 2026
9725663
fix(channels): isolate factory-returned agents per turn
BenTaylorDev Jul 30, 2026
eb9643a
fix(channels): assert per-turn isolation by symptom, drop dead concur…
BenTaylorDev Jul 30, 2026
9607d3a
fix(channels): isolate factory-returned agents per turn (#6265)
BenTaylorDev Jul 31, 2026
5a8a487
feat(runtime): auto-start managed Channels on long-running hosts (OSS…
BenTaylorDev Jul 31, 2026
bf8abc3
feat(channels): add V5 message operation routing
MikeRyanDev Jul 31, 2026
b376c90
feat(channels): load delivery-scoped transcripts
MikeRyanDev Jul 31, 2026
f1eef91
feat(channels): authorize delivery thread access
MikeRyanDev Jul 31, 2026
f7437da
feat(channels): charge deliveries on first work
MikeRyanDev Jul 31, 2026
bff87d1
feat(channels): handle transcript failures by surface
MikeRyanDev Jul 31, 2026
2a00a5a
feat(channels): render native Slack status
MikeRyanDev Jul 31, 2026
ddfa6f3
feat(channels): supersede pre-output runs
MikeRyanDev Jul 31, 2026
9dc343d
feat(channels): confirm managed file delivery
MikeRyanDev Jul 31, 2026
7259bae
feat(channels): bound pending delivery capacity
MikeRyanDev Jul 31, 2026
81d192a
fix(channels): suppress exact provider self output
MikeRyanDev Jul 31, 2026
4680d2f
fix(channels): normalize remaining provider turns
MikeRyanDev Jul 31, 2026
8e2d7a5
test(channels): bind canonical run delivery
MikeRyanDev Jul 31, 2026
ca5e665
feat(channels): implement Channels V5 (#6266)
tylerslaton Jul 31, 2026
552268d
fix: keep participant metadata out of assistant history
MikeRyanDev Jul 31, 2026
2fe47bc
Prevent Slack actor metadata from leaking into assistant history (#6268)
MikeRyanDev Jul 31, 2026
29d2721
fix(channels): contain terminal delivery failures
MikeRyanDev Jul 31, 2026
468995e
feat(telemetry): inspector opened event and banner surface split (OSS…
BenTaylorDev Jul 31, 2026
9fe2714
fix(reskinnable-demo): shift Intelligence stack host ports by +200 to…
mxmzb Jul 31, 2026
3453b22
feat(reskinnable-demo): make the resolved Intelligence backend explicit
mxmzb Jul 31, 2026
101fe27
fix(channels): contain terminal provider failures (#6269)
BenTaylorDev Jul 31, 2026
acd8d07
feat(reskinnable-demo): isolate memory by organization as well as port
mxmzb Jul 31, 2026
eb6c8df
fix(channels): start Slack streams with first text
MikeRyanDev Jul 31, 2026
62eb3bf
fix(channels): start Slack streams with first text (#6278)
MikeRyanDev Jul 31, 2026
916f4b7
Merge remote-tracking branch 'origin/main' into blitz/reskinnable-dem…
mxmzb Jul 31, 2026
c8fd81a
feat(reskinnable-demo): add NavigateConfirmCard to the banking skin
mxmzb Jul 31, 2026
92756f4
feat(reskinnable-demo): add PinChangedCard to the banking skin
mxmzb Jul 31, 2026
a83afc6
feat(reskinnable-demo): add prose house-style rules to the banking pr…
mxmzb Jul 31, 2026
4b4b937
feat(reskinnable-demo): seed the alert-emoji note convention in the b…
mxmzb Jul 31, 2026
9eef856
feat(reskinnable-demo): add TopChargesChart to the banking skin
mxmzb Jul 31, 2026
ec00c42
feat(reskinnable-demo): rebalance seeded policy limits in the banking…
mxmzb Jul 31, 2026
a6c5c93
feat(reskinnable-demo): tint the charges Sort and Show selects when set
mxmzb Jul 31, 2026
936dbd7
Merge branch 'blitz/banking-genui-replay/nav-card' into blitz/reskinn…
mxmzb Jul 31, 2026
d9d5013
Merge branch 'blitz/banking-genui-replay/pin-card' into blitz/reskinn…
mxmzb Jul 31, 2026
37cf227
Merge branch 'blitz/banking-genui-replay/top-charges' into blitz/resk…
mxmzb Jul 31, 2026
109583c
Merge branch 'blitz/banking-genui-replay/prompt' into blitz/reskinnab…
mxmzb Jul 31, 2026
5af07bf
Merge branch 'blitz/banking-genui-replay/charges-tint' into blitz/res…
mxmzb Jul 31, 2026
83d3bfa
Merge branch 'blitz/banking-genui-replay/seed-memo' into blitz/reskin…
mxmzb Jul 31, 2026
e5b54d8
Merge branch 'blitz/banking-genui-replay/seed-policy' into blitz/resk…
mxmzb Jul 31, 2026
3a2ea21
feat(reskinnable-demo): curate the banking report charts to the final…
mxmzb Jul 31, 2026
5246163
feat(reskinnable-demo): port PIN, charges-confirm and note polish to …
mxmzb Jul 31, 2026
e95ff4c
Merge branch 'blitz/banking-genui-replay/tools' into blitz/reskinnabl…
mxmzb Jul 31, 2026
08e10de
Merge branch 'blitz/banking-genui-replay/report' into blitz/reskinnab…
mxmzb Jul 31, 2026
a40427a
docs(reskinnable-demo): state the cardsRef sync trade-off honestly
mxmzb Jul 31, 2026
04b445a
style: auto-fix formatting
github-actions[bot] Jul 31, 2026
4cc314b
Reskinnable demo: the banking showcase as a shell hosting swappable s…
mxmzb Jul 31, 2026
db8ebf5
chore: release channels v0.5.0
tylerslaton Jul 31, 2026
8ed703d
chore: release channels v0.5.0 (#6279)
tylerslaton Jul 31, 2026
33b1312
chore: release monorepo v1.64.2
tylerslaton Jul 31, 2026
49b37fb
chore: release monorepo v1.64.2 (#6280)
tylerslaton Jul 31, 2026
d247050
feat(channels): declare Slack and Teams together
tylerslaton Jul 31, 2026
871cd20
feat(channels): add managed welcome lifecycle
tylerslaton Jul 31, 2026
1712be5
feat(channels): complete managed Teams SDK parity
tylerslaton Aug 1, 2026
183e83f
fix(channels): preserve stream cleanup errors
tylerslaton Aug 1, 2026
a416d81
fix(channels): preserve managed direct coexistence
tylerslaton Aug 1, 2026
aaf9d61
fix(channels): enforce provider delivery semantics
tylerslaton Aug 1, 2026
a0e516d
fix(channels): delegate Teams typing to Gateway
tylerslaton Aug 1, 2026
5ceb537
fix(channels): complete managed provider parity
tylerslaton Aug 1, 2026
561bf19
feat(channels): add explicit identity and memory grants
MikeRyanDev Jul 31, 2026
fdbd05d
fix(channels): use provider actors for private replies
MikeRyanDev Jul 31, 2026
17e7f33
fix(channels): reconcile identity stack integration
MikeRyanDev Aug 1, 2026
1e8e2a1
feat(channels): make identity and memory access explicit (#6284)
MikeRyanDev Aug 1, 2026
82c8751
chore(deps): update github actions
renovate[bot] Aug 1, 2026
065d525
feat(skills): make managed Intelligence the default setup path, add a…
BenTaylorDev Aug 1, 2026
ff48022
docs(channels): offer the CLI as a peer path to the wizard
BenTaylorDev Aug 1, 2026
30d590d
fix(skills): tie the activation call to the mount that decides it
BenTaylorDev Aug 1, 2026
b37499b
docs(channels): point the Slack and Teams adapter READMEs at managed …
BenTaylorDev Aug 1, 2026
95ba65b
chore(deps): update github actions (#6251)
renovate[bot] Aug 1, 2026
42d25ad
fix(channels): accept namespaced app user IDs
tylerslaton Aug 1, 2026
6f1100c
fix(channels): accept namespaced Teams app user IDs (#6300)
tylerslaton Aug 2, 2026
65962dd
docs(skills): say which Channels path is well-trodden
BenTaylorDev Aug 2, 2026
f909b7e
chore(examples): pin starter @copilotkit/* deps to the main canary
BenTaylorDev Aug 2, 2026
2106993
fix(examples): let the mastra starter install on a prerelease pin
BenTaylorDev Aug 2, 2026
b0b51eb
feat(examples): add a managed Channel host to the langgraph-python st…
BenTaylorDev Aug 2, 2026
6da5731
fix(examples): typecheck the channel host and disambiguate its config…
BenTaylorDev Aug 2, 2026
2167e73
feat(examples): add managed Channel hosts to the HttpAgent starters
BenTaylorDev Aug 2, 2026
2144f2e
feat(examples): add managed Channel hosts to the adapter-class starters
BenTaylorDev Aug 2, 2026
3e01f31
feat(examples): add a managed Channel host to the mastra starter
BenTaylorDev Aug 2, 2026
9c07a74
feat(examples): add a managed Channel host to the mcp-apps starter
BenTaylorDev Aug 2, 2026
591609c
feat(examples): add a managed Channel host to the a2a-middleware starter
BenTaylorDev Aug 2, 2026
da734ee
docs(channels): document npm run channel and scope the skill to custo…
BenTaylorDev Aug 2, 2026
cbf0e4b
docs(channels): drop the skill copy that belongs to another branch
BenTaylorDev Aug 2, 2026
93ea8de
fix(examples): report the true per-Channel status after ready() in th…
BenTaylorDev Aug 2, 2026
166dc94
fix(examples): drop mastra's typecheck:channel — it can never pass
BenTaylorDev Aug 2, 2026
115717e
docs(examples): document the managed Channel host in the remaining 14…
BenTaylorDev Aug 2, 2026
c8736df
docs(examples): warn that the Intelligence URL vars in .env.example a…
BenTaylorDev Aug 2, 2026
fa134a7
fix(examples): copy mastra's .npmrc before npm install in Docker
BenTaylorDev Aug 2, 2026
b13fa63
docs(examples): call them Channels, not managed Channels
BenTaylorDev Aug 2, 2026
e1f88eb
refactor(examples): split the Channel out of the host, drop its HTTP …
BenTaylorDev Aug 2, 2026
d008318
docs(channels): lead with the scaffolded Channel, keep hand-wiring as…
BenTaylorDev Aug 2, 2026
63c15ce
chore: release channels v0.6.0
BenTaylorDev Aug 2, 2026
b2803f8
docs(channels): name the failure where a Channel is online and still …
BenTaylorDev Aug 2, 2026
bba3706
chore: release channels v0.6.0 (#6317)
BenTaylorDev Aug 2, 2026
6988d5d
chore: release monorepo v1.65.0
BenTaylorDev Aug 2, 2026
bd2b2a7
chore: release monorepo v1.65.0 (#6318)
BenTaylorDev Aug 3, 2026
475002e
chore(examples): move the starters off the canary onto stable
BenTaylorDev Aug 3, 2026
768a69c
fix(channels): report a clone that drops subclass state, do not refus…
BenTaylorDev Aug 3, 2026
a97abd2
feat(examples): let every starter host a managed Channel (#6315)
AlemTuzlak Aug 3, 2026
8101e5e
feat(skills): make managed Intelligence the default setup path, add a…
AlemTuzlak Aug 3, 2026
b0848f5
fix(channels): report a clone that drops subclass state, do not refus…
BenTaylorDev Aug 3, 2026
bdf054f
chore: release channels v0.6.1
BenTaylorDev Aug 3, 2026
d6f3914
chore: release channels v0.6.1 (#6328)
BenTaylorDev Aug 3, 2026
b1db870
Upgrade Angular demo and Storybook to version 22
rainerhahnekamp Aug 3, 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
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
},
"metadata": {
"description": "AI agent skills for CopilotKit — setup, develop, integrate, debug, upgrade, and contribute",
"version": "1.63.2"
"version": "1.65.0"
},
"plugins": [
{
"name": "copilotkit",
"source": "./",
"description": "AI agent skills for CopilotKit — setup, develop, integrate, debug, upgrade, and contribute to CopilotKit projects",
"version": "1.63.2",
"version": "1.65.0",
"author": {
"name": "CopilotKit",
"url": "https://copilotkit.ai"
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "copilotkit",
"description": "AI agent skills for CopilotKit — setup, develop, integrate, debug, upgrade, and contribute to CopilotKit projects",
"version": "1.63.2",
"version": "1.65.0",
"author": {
"name": "CopilotKit",
"url": "https://copilotkit.ai"
Expand Down
1 change: 1 addition & 0 deletions .github/config-allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ examples/showcases/pydantic-ai-todos/next.config.ts
examples/showcases/research-canvas/final/frontend/next.config.ts
examples/showcases/research-canvas/frontend/next.config.ts
examples/showcases/research-canvas/start/frontend/next.config.ts
examples/showcases/reskinnable-demo/next.config.mjs
examples/showcases/scene-creator/next.config.ts
examples/showcases/spreadsheet/next.config.mjs
examples/showcases/strands-crm/frontend/next.config.ts
Expand Down
14 changes: 12 additions & 2 deletions .github/workflows/canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,20 @@ on:
workflow_dispatch:
inputs:
scope:
description: "Package scope to publish a canary for. Regenerated from release.config.json — do NOT hand-edit (the release-scope-dropdown-sync CI guard enforces parity)."
description: "Package scope to publish a canary for, or 'all' when the change spans scopes (e.g. runtime↔channels). Regenerated from release.config.json — do NOT hand-edit (the release-scope-dropdown-sync CI guard enforces parity)."
required: true
type: choice
options:
- monorepo
- angular
- channels
# Sentinel, not a scope (see ALL_SCOPES in scripts/release/lib/config.ts):
# publishes every scope from this commit under one shared canary id.
# Required whenever the change spans scopes, because cross-scope
# `workspace:` deps (e.g. @copilotkit/runtime -> @copilotkit/channels-intelligence)
# are packed against whatever is in the tree — a single-scope canary
# pins them to the other scope's last STABLE release.
- all
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
Expand Down Expand Up @@ -218,7 +225,9 @@ jobs:
RUN_ID=""
ERR=$(mktemp)
for i in $(seq 1 30); do
sleep 6
# Poll BEFORE sleeping: Actions has usually indexed the run by the
# time the dispatch call returns, so sleeping first paid a guaranteed
# 6s on every canary. Same 30-attempt / 3-min tolerance.
RUN_ID=$(gh run list \
--repo "$GITHUB_REPOSITORY" \
--workflow=publish-release.yml \
Expand All @@ -234,6 +243,7 @@ jobs:
if [ -n "$RUN_ID" ]; then
break
fi
sleep 6
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."
Expand Down
186 changes: 181 additions & 5 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,18 @@ on:
workflow_dispatch:
inputs:
scope:
description: "What to release"
description: "What to release ('all' is prerelease-only: every scope under one shared canary id)"
required: true
type: choice
options:
- monorepo
- angular
- channels
# Sentinel, not a scope (see ALL_SCOPES in scripts/release/lib/config.ts).
# PRERELEASE ONLY — rejected for mode=stable by the "Determine scope and
# mode" guard below, since a stable release derives its tag, release
# branch, and Slack/npm links from a single scope name.
- all
mode:
description: "Release mode: stable (full release with tag + GH Release) or prerelease (canary, no tag/release)"
required: false
Expand Down Expand Up @@ -113,6 +118,15 @@ jobs:
SCOPE="${SCOPE%%/v*}"
fi
MODE="${INPUT_MODE:-stable}"
# `all` is a prerelease-only selector: it publishes every scope under one
# shared canary id so cross-scope `workspace:` deps resolve within the run.
# A stable release cannot be multi-scope — the tag (`<scope>/v<version>`),
# the release branch, and the notify job's npm URL each assume ONE scope,
# and the scopes carry independent version lines.
if [ "$SCOPE" = "all" ] && [ "$MODE" != "prerelease" ]; then
echo "::error::scope=all is only valid with mode=prerelease (canary). Release each scope separately via the 'release / create-pr' workflow."
exit 1
fi
echo "scope=$SCOPE" >> "$GITHUB_OUTPUT"
echo "mode=$MODE" >> "$GITHUB_OUTPUT"
echo "Detected scope: $SCOPE, mode: $MODE"
Expand All @@ -126,7 +140,18 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0
# Canaries need no git history: the prerelease path pushes no tag, cuts
# no GitHub Release, reads no commit range for release notes, and the
# build is `nx run-many` (NOT `nx affected`), so there is no merge base
# to resolve. Full history costs ~25-48s of clone time here AND rides
# along in the workspace artifact this job uploads.
#
# Stable releases MUST keep depth 0: the publish job resolves and
# pushes tags out of this checkout's .git (shipped via that artifact),
# and the release notes diff against the previous release tag.
# `inputs.mode` is empty on the merged-release-PR path, so that path
# correctly evaluates to 0.
fetch-depth: ${{ inputs.mode == 'prerelease' && 1 || 0 }}
persist-credentials: false

- name: Setup pnpm
Expand All @@ -138,6 +163,54 @@ jobs:
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22.x
# Do NOT use cache: "pnpm" here — its key omits the Node.js version.
# Cached manually below with the node version in the key, matching
# test_unit.yml's reasoning.

- name: Get pnpm store directory
id: pnpm-cache
run: echo "store-path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"

# Without this, every job here installed all 4608 packages cold from the
# registry on every release. Usually ~45s, but it is npm-registry-bandwidth
# bound and therefore heavy-tailed: an observed canary spent 9m08s in this
# step on tarballs trickling in at 2-49 KiB/s.
#
# Cache-poisoning posture: `--frozen-lockfile` forbids resolution changes
# and pnpm verifies every store file against the lockfile's integrity
# hashes on link, so a tampered cache entry fails the install rather than
# injecting code. The worst case is a denied install, not a compromised
# publish.
#
# WHY PRERELEASES ONLY RESTORE: canary.yml mirrors the source branch to an
# EPHEMERAL `canary/<slug>-<run_id>-<attempt>` ref, and Actions scopes cache
# entries to the writing branch (plus the default branch). A cache saved
# from a canary ref is therefore unreachable by every later run — measured
# at 874 MiB of pure orphan per canary, competing for the repo's shared
# 10 GB budget and evicting entries other workflows do rely on. Worse, the
# save cost more than it bought: 22s save + 18s restore against a 25s
# faster install.
#
# So canaries RESTORE ONLY (free win whenever main has an entry, zero cost
# and zero pollution when it doesn't), and stable releases — which run on
# main, where a write is durable and reused — do the writing.
- name: Restore pnpm store (prerelease — read-only, ephemeral ref)
if: ${{ steps.meta.outputs.mode == 'prerelease' }}
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-22.x-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-22.x-

- name: Cache pnpm store (stable — read/write on main)
if: ${{ steps.meta.outputs.mode != 'prerelease' }}
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-22.x-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-22.x-

- name: Install Dependencies
run: pnpm install --frozen-lockfile
Expand Down Expand Up @@ -183,6 +256,10 @@ jobs:
name: workspace
path: /tmp/workspace.tgz
retention-days: 1
# The payload is already gzipped by "Pack workspace"; re-deflating it
# into the artifact zip burns time on both upload and download for
# ~no size win.
compression-level: 0

outputs:
scope: ${{ steps.meta.outputs.scope }}
Expand Down Expand Up @@ -221,6 +298,13 @@ jobs:
exit 1
fi
MODE="${INPUT_MODE:-stable}"
# Same guard as the build job (this job re-derives scope/mode from the
# event rather than inheriting them). Defense in depth: nothing may reach
# the tag/GH-Release/notify path with the multi-scope sentinel.
if [ "$SCOPE" = "all" ] && [ "$MODE" != "prerelease" ]; then
echo "::error::scope=all is only valid with mode=prerelease (canary)."
exit 1
fi
echo "scope=$SCOPE" >> "$GITHUB_OUTPUT"
echo "mode=$MODE" >> "$GITHUB_OUTPUT"

Expand Down Expand Up @@ -252,11 +336,64 @@ jobs:
node-version: 22.x
registry-url: https://registry.npmjs.org

- name: Get pnpm store directory
id: pnpm-cache
run: echo "store-path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"

# Same split as the build job, for the same reason (see the rationale
# there). This job is where the observed 9m08s cold-install stall happened,
# so a restore is worth attempting even when it may miss: it is the only
# step standing between a built artifact and a publish.
- name: Restore pnpm store (prerelease — read-only, ephemeral ref)
if: ${{ steps.meta.outputs.mode == 'prerelease' }}
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-22.x-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-22.x-

- name: Cache pnpm store (stable — read/write on main)
if: ${{ steps.meta.outputs.mode != 'prerelease' }}
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-22.x-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-22.x-

# Restore node_modules — the build job excludes them from the
# uploaded workspace artifact (see "Upload workspace" above). Uses
# pnpm-lock.yaml from the artifact, so this is a deterministic
# restore of exactly what the build job ran with.
- name: Install Dependencies
#
# The prerelease path needs a NARROW slice of the workspace, and installing
# all 4608 projects' dependencies to get it cost ~41s. What it actually
# needs is exactly two things:
# 1. the ROOT project, for `pnpm tsx` (tsx is a root devDependency), and
# 2. every project under packages/, because `pnpm pack` resolves each
# package's `workspace:` dependencies into real version ranges and
# FAILS with ERR_PNPM_CANNOT_RESOLVE_WORKSPACE_PROTOCOL if a workspace
# sibling is not installed. That resolution is what makes cross-scope
# canary deps (runtime -> channels-intelligence) pin the same-run
# version, so it is load-bearing, not incidental.
# Everything else in the lockfile is examples/ and showcase/ app
# dependencies (Next.js, Playwright, ...) which no publish step touches.
#
# Nothing else is needed because no publishable package declares `prepack`
# or `prepare`, so `pnpm pack` runs no lifecycle scripts; voice's
# `prepublishOnly` fires for neither `pnpm pack` nor `npm publish <tarball>`.
#
# Stable keeps the FULL install: publish-release.ts additionally imports
# lib/notion.js and the channels umbrella verifier runs a root workspace
# script, so its dependency surface is wider and far less worth trimming on
# the highest-stakes path.
- name: Install Dependencies (prerelease — root + packages only)
if: ${{ steps.meta.outputs.mode == 'prerelease' }}
run: pnpm install --frozen-lockfile --filter . --filter "./packages/**"

- name: Install Dependencies (stable — full workspace)
if: ${{ steps.meta.outputs.mode != 'prerelease' }}
run: pnpm install --frozen-lockfile

- name: Dry-run notice
Expand Down Expand Up @@ -416,7 +553,9 @@ jobs:
echo "## Prerelease Published"
echo ""
echo "**Scope:** ${{ steps.meta.outputs.scope }}"
echo "**Version:** ${{ steps.publish.outputs.version }}"
# `versions` lists every published scope (`<scope>@<version>`), which is
# the whole story for scope=all; `version` alone names only the first.
echo "**Versions:** ${{ steps.publish.outputs.versions || steps.publish.outputs.version }}"
echo "**Tag:** (prerelease — no tag created)"
} >> "$GITHUB_STEP_SUMMARY"

Expand Down Expand Up @@ -697,10 +836,21 @@ jobs:
# always() so we still report on a failed lane, but guard on a real release
# context: a workflow_dispatch (manual release) OR a *merged* PR. A
# closed-unmerged PR is not a release attempt and must not notify.
#
# Canaries are excluded up front. For mode=prerelease the builder already
# returns should_post=false and the self-watchdog's Slack post is already
# gated off (npm_intended is false for a prerelease dispatch), so this job
# could only ever checkout + install + compute "post nothing" — ~85s of dead
# work sitting on the canary critical path, since canary.yml waits for the
# whole run. `inputs.python_publish == true` keeps the PyPI lane's
# notification and self-alert reachable under a prerelease-mode dispatch, and
# `inputs.mode` is empty on the merged-PR path so stable releases are
# unaffected.
if: >
always() &&
(github.event_name == 'workflow_dispatch' ||
github.event.pull_request.merged == true)
github.event.pull_request.merged == true) &&
(inputs.mode != 'prerelease' || inputs.python_publish == true)
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
Expand Down Expand Up @@ -779,6 +929,32 @@ jobs:
with:
node-version: 22.x

- name: Get pnpm store directory
id: pnpm-cache
run: echo "store-path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT"

# Same split as the build job (see the rationale there). This job is
# normally stable-only, but a prerelease dispatch with python_publish=true
# still reaches it on an ephemeral canary ref — hence the same read-only
# arm, keyed off `inputs.mode` (the signal this job's own `if:` gate uses).
- name: Restore pnpm store (prerelease — read-only, ephemeral ref)
if: ${{ inputs.mode == 'prerelease' }}
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-22.x-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-22.x-

- name: Cache pnpm store (stable — read/write on main)
if: ${{ inputs.mode != 'prerelease' }}
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ${{ steps.pnpm-cache.outputs.store-path }}
key: ${{ runner.os }}-pnpm-store-22.x-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-22.x-

# Restore node_modules so `pnpm tsx` (and the release-config import the
# notifier does) resolves. The build/publish jobs install before running
# tsx for the same reason; without this the notify step fails and NO
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/security_zizmor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
# `min-severity: low` blocks PRs on the broadest set of findings
# without flagging hypothetical-only `informational` notes. Drop
# to `medium` if low-severity churn becomes a problem.
uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02 # v0.6.0
uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1
with:
min-severity: low
advanced-security: false
Expand Down
Loading