copilotkit 4.12.0 → 4.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +10 -0
  2. package/cli-build-info.json +7 -7
  3. package/index.js +1590 -348
  4. package/onboarding/index.json +20 -2
  5. package/onboarding/prompts/authenticate/start.md +38 -33
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +9 -8
  8. package/onboarding/prompts/credentials/plan.md +26 -20
  9. package/onboarding/prompts/credentials/settle-credentials.md +8 -8
  10. package/onboarding/prompts/credentials/write-plan.md +19 -6
  11. package/onboarding/prompts/fallback/best-effort.md +6 -6
  12. package/onboarding/prompts/feature/a2ui/implement.md +6 -6
  13. package/onboarding/prompts/feature/a2ui/proof.md +6 -6
  14. package/onboarding/prompts/feature/a2ui/start.md +7 -7
  15. package/onboarding/prompts/feature/channels/implement.md +75 -12
  16. package/onboarding/prompts/feature/channels/proof.md +13 -6
  17. package/onboarding/prompts/feature/channels/start.md +27 -10
  18. package/onboarding/prompts/feature/chat-suggestions/implement.md +6 -6
  19. package/onboarding/prompts/feature/chat-suggestions/proof.md +6 -6
  20. package/onboarding/prompts/feature/chat-suggestions/start.md +7 -7
  21. package/onboarding/prompts/feature/complete.md +1 -1
  22. package/onboarding/prompts/feature/learning/implement.md +15 -15
  23. package/onboarding/prompts/feature/learning/proof.md +7 -7
  24. package/onboarding/prompts/feature/learning/start.md +8 -8
  25. package/onboarding/prompts/feature/open-generative-ui/implement.md +6 -6
  26. package/onboarding/prompts/feature/open-generative-ui/proof.md +6 -6
  27. package/onboarding/prompts/feature/open-generative-ui/start.md +7 -7
  28. package/onboarding/prompts/feature/realtime-sync/implement.md +7 -7
  29. package/onboarding/prompts/feature/realtime-sync/proof.md +6 -6
  30. package/onboarding/prompts/feature/realtime-sync/start.md +6 -6
  31. package/onboarding/prompts/feature/rich-threads/implement.md +8 -8
  32. package/onboarding/prompts/feature/rich-threads/proof.md +6 -6
  33. package/onboarding/prompts/feature/rich-threads/start.md +6 -6
  34. package/onboarding/prompts/feature/stop.md +2 -2
  35. package/onboarding/prompts/feature/voice/implement.md +6 -6
  36. package/onboarding/prompts/feature/voice/proof.md +6 -6
  37. package/onboarding/prompts/feature/voice/start.md +7 -7
  38. package/onboarding/prompts/framework/ag2.md +2 -2
  39. package/onboarding/prompts/framework/agno.md +2 -2
  40. package/onboarding/prompts/framework/built-in.md +4 -2
  41. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  42. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  43. package/onboarding/prompts/framework/crewai-flows.md +2 -2
  44. package/onboarding/prompts/framework/deep-agents.md +5 -2
  45. package/onboarding/prompts/framework/google-adk.md +4 -2
  46. package/onboarding/prompts/framework/langgraph-fastapi.md +4 -3
  47. package/onboarding/prompts/framework/langgraph-python.md +6 -2
  48. package/onboarding/prompts/framework/langgraph-typescript.md +6 -2
  49. package/onboarding/prompts/framework/llamaindex.md +2 -2
  50. package/onboarding/prompts/framework/mastra.md +4 -2
  51. package/onboarding/prompts/framework/ms-agent-dotnet.md +4 -2
  52. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-python.md +4 -2
  54. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  55. package/onboarding/prompts/framework/strands-python.md +4 -2
  56. package/onboarding/prompts/framework/strands-typescript.md +4 -2
  57. package/onboarding/prompts/frontend/angular.md +3 -3
  58. package/onboarding/prompts/frontend/nextjs.md +3 -3
  59. package/onboarding/prompts/frontend/plan.md +21 -10
  60. package/onboarding/prompts/frontend/react-native.md +2 -2
  61. package/onboarding/prompts/frontend/react-spa.md +2 -2
  62. package/onboarding/prompts/frontend/vue.md +2 -2
  63. package/onboarding/prompts/implementation/build-and-validate.md +33 -15
  64. package/onboarding/prompts/proof/complete.md +35 -16
  65. package/onboarding/prompts/proof/oss-baseline.md +5 -5
  66. package/onboarding/prompts/proof/round-trip.md +23 -12
  67. package/onboarding/prompts/research/gather.md +12 -102
  68. package/onboarding/prompts/research/merge.md +60 -0
  69. package/onboarding/prompts/research/preflight.md +75 -0
  70. package/onboarding/prompts/research/route.md +30 -6
  71. package/onboarding/prompts/starter/clone.md +5 -5
  72. package/onboarding/prompts/stopped/run-failed.md +2 -2
  73. package/onboarding/prompts/subagent/create-plan.md +18 -1
  74. package/onboarding/prompts/subagent/implement-and-validate.md +37 -0
  75. package/onboarding/prompts/subagent/inspect-repository.md +1 -1
  76. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  77. package/onboarding/prompts/subagent/prove-round-trip.md +17 -7
  78. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  79. package/package.json +4 -1
  80. package/release/release-tool.js +101 -1
@@ -46,7 +46,7 @@ the derived name.
46
46
  Only if the developer asks for an existing project, or asks to see the projects they have,
47
47
  read the choices:
48
48
 
49
- `npx --yes copilotkit@4.12.0 project list --json`
49
+ `npx --yes copilotkit@4.13.1 project list --json`
50
50
 
51
51
  Then ask which one to use. Do not order the projects by creation time. If the developer
52
52
  already gave this answer, do not ask again. Do not read a secret value. Do not show or
@@ -56,7 +56,7 @@ Run the command from the parent directory. Do not inspect another entry in the p
56
56
  directory. Replace each placeholder with the recorded value. Do not run a placeholder as
57
57
  a shell argument.
58
58
 
59
- `npx --yes copilotkit@4.12.0 init --name <project-name> --framework <framework-id> --channel none --no-banner --create <name> --install`
59
+ `npx --yes copilotkit@4.13.1 init --name <project-name> --framework <framework-id> --channel none --no-banner --create <name> --install`
60
60
 
61
61
  Pass the confirmed name to both `--name` and `--create`: the app directory and its
62
62
  Intelligence project take the same name here. If the developer names an existing project,
@@ -72,7 +72,7 @@ account. The command does not need terminal input.
72
72
  Report the clone before you inspect anything:
73
73
 
74
74
  ```text
75
- npx --yes copilotkit@4.12.0 onboard checkpoint --phase starter-cloned
75
+ npx --yes copilotkit@4.13.1 onboard checkpoint --phase starter-cloned
76
76
  ```
77
77
 
78
78
  This is its own step, not an aside. A run that clones and then goes quiet is
@@ -82,10 +82,10 @@ separates them.
82
82
  Do not rebuild the starter by hand. Then inspect only the generated
83
83
  paths inside the target directory. Record the files, install result, project connection,
84
84
  and validation commands. Then run
85
- `npx --yes copilotkit@4.12.0 onboard read proof/round-trip`.
85
+ `npx --yes copilotkit@4.13.1 onboard read proof/round-trip`.
86
86
 
87
87
  If the command fails, report its exact error and do not claim that the starter is ready.
88
88
  Then run
89
- `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. The starter is one this
89
+ `npx --yes copilotkit@4.13.1 onboard read stopped/run-failed`. The starter is one this
90
90
  graph ships and the stack was chosen from its own supported list, so a command that
91
91
  returned an error is a run that broke, not a setup this release does not support.
@@ -35,7 +35,7 @@ put to them, stop here and send the report below.
35
35
  If they approve it, make that one fix and nothing else. Then come back into this run:
36
36
 
37
37
  ```text
38
- npx --yes copilotkit@4.12.0 onboard resume
38
+ npx --yes copilotkit@4.13.1 onboard resume
39
39
  ```
40
40
 
41
41
  Write the developer's approval to standard input, in one or two sentences: the fix they
@@ -58,7 +58,7 @@ Send one short report. Run the friction command without another developer questi
58
58
  ask the developer about telemetry: the command applies the setting they already have.
59
59
 
60
60
  ```text
61
- npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
61
+ npx --yes copilotkit@4.13.1 onboard friction --phase stop --category <slug>
62
62
  ```
63
63
 
64
64
  Write one or two sentences to standard input: the step you stopped at and what stopped
@@ -15,6 +15,23 @@ URLs you were given, not from another checkout on this machine.
15
15
  List the required credential variable names. Do not read or return credential values.
16
16
  Preserve each agent or frontend that already exists.
17
17
 
18
+ ## What the existing agent's behavior is
19
+
20
+ The existing agent's behavior is four things: its system prompt and instructions, its
21
+ tools and what those tools do, its model and provider configuration, and its memory or
22
+ state handling.
23
+
24
+ Wiring is not behavior. The CopilotKit SDK dependency, the middleware the agent is wrapped
25
+ in, the runtime mount, the AG-UI connection, and a frontend that renders what the agent
26
+ already returns are wiring. Plan them as ordinary steps.
27
+
28
+ Every item on the behavior list is a change the developer has to approve. Where a step
29
+ needs one, plan it as its own item, name the file and the exact change, and state that it
30
+ changes how the agent answers everywhere, not only in CopilotKit. A system prompt the
31
+ developer wrote is the agent's behavior rather than a setting this run tunes until a
32
+ component renders. Where the plan cannot be written without such a change and you cannot
33
+ state it that way, return `Status: blocked`.
34
+
18
35
  Plan the runtime to consume the Intelligence credential. The runtime takes an
19
36
  `intelligence` option holding a client built from the project key. A runtime given a
20
37
  `runner` option instead is the OSS runtime. It never reads the Intelligence key, and the
@@ -153,7 +170,7 @@ here is work the developer did not ask for.
153
170
  Plan the threads drawer itself: add it from the selected drawer page, where this frontend
154
171
  does not already render one. Where this journey's frontend framework ships no threads
155
172
  drawer -- React Native --, plan that the thread is proved by
156
- `npx --yes copilotkit@4.12.0 verify --round-trip`, which needs no browser. Do not plan a
173
+ `npx --yes copilotkit@4.13.1 verify --round-trip`, which needs no browser. Do not plan a
157
174
  step that opens the managed Intelligence dashboard.
158
175
 
159
176
  ## Order the plan into steps
@@ -13,6 +13,13 @@ Change only the files and directories the approved plan names as changeable. If
13
13
  requires a file the plan does not name, stop and return the blocker. Do not run a
14
14
  repository-wide formatter.
15
15
 
16
+ All implementation work happens in the run root's own working tree: the target app
17
+ directory the main coding agent named. Never work in a separate worktree, a branch
18
+ checkout, or a copy of the project. If any of your changes are already somewhere else,
19
+ bring them into the run root before you report, and name them under Files changed. The
20
+ completion step verifies that the changed files exist in this project, so work left in
21
+ another tree ends the run with nothing in the developer's hands.
22
+
16
23
  Before validation, read the protected path list. Inspect the current changed and untracked
17
24
  paths. Keep protected paths out of the run path set. Compare every changed path with the
18
25
  paths the plan named. Here, a changed path means one in the run path set. If a changed path
@@ -26,6 +33,19 @@ Add only the props, options, and imports that appear in the fetched documentatio
26
33
  remembered API from an earlier CopilotKit version will fail type checking against this
27
34
  release. Do not add details that the fetched documentation omits.
28
35
 
36
+ A symbol the installed package marks `@deprecated` in its type definitions is not a valid
37
+ choice, whatever documentation found elsewhere shows. Read the installed type definitions
38
+ for the symbol you are about to write. Where the selected documentation page itself shows
39
+ a deprecated symbol, name that page under Blockers as `docs-wrong` friction and use the
40
+ current symbol the package's own type definitions or changelog names.
41
+
42
+ A symbol this graph names is not that case. The approved plan and the framework
43
+ node carry the connection API for this stack, and `LangGraphAgent` from
44
+ `@copilotkit/runtime/langgraph` is one of them: deprecated at its entrypoint,
45
+ still the documented LangSmith path, and given no replacement by its own tooltip.
46
+ Write what the plan names. Do not rewrite a cloned starter to satisfy this rule,
47
+ and do not name the page that shows it under Blockers.
48
+
29
49
  The documentation supplies the wiring. The project supplies the application. Use that
30
50
  wiring in the project's domain. Do not copy an example's agent name, tools, or data.
31
51
 
@@ -34,6 +54,23 @@ connection. Do not read, show, store, or return secrets. Do not read a file outs
34
54
  project directory: not for a credential, and not for an API question the fetched
35
55
  documentation answers. Ask the main coding agent for a missing credential.
36
56
 
57
+ ## What the existing agent's behavior is
58
+
59
+ The existing agent's behavior is four things: its system prompt and instructions, its
60
+ tools and what those tools do, its model and provider configuration, and its memory or
61
+ state handling. Write none of them unless the approved plan named that exact change as its
62
+ own item.
63
+
64
+ Wiring is not behavior. Add the CopilotKit SDK dependency, wrap the agent in the
65
+ middleware, mount the runtime, connect AG-UI, and render what the agent already returns.
66
+ Those are the parts this run adds.
67
+
68
+ A change on the behavior list changes how the agent answers everywhere, not only in
69
+ CopilotKit, so the developer approves it before it is written. Where a step cannot be
70
+ built without one the plan did not name, return `Status: blocked` and name the file, the
71
+ change, and the check that asked for it. Do not edit the agent's prompt to make a
72
+ component render.
73
+
37
74
  An existing `README.md` is the developer's, not this run's. Leave it exactly as you found
38
75
  it: not the title, not a section, not a line. Where this run has documentation to write,
39
76
  write it to a new file and name that file when you report the result. On an empty project
@@ -7,7 +7,7 @@ Work only on the packet you were assigned. Inspect the repository without changi
7
7
  Run this first, from the target project directory:
8
8
 
9
9
  ```text
10
- npx --yes copilotkit@4.12.0 onboard inspect --json
10
+ npx --yes copilotkit@4.13.1 onboard inspect --json
11
11
  ```
12
12
 
13
13
  It answers the deterministic half of both packets exactly, from the same code
@@ -19,7 +19,7 @@ Prove the live runtime in this order:
19
19
  4. Confirm from project files that the runtime constructor passes a `runner` option rather
20
20
  than an `intelligence` option. A package, import, project file, or key is not use proof.
21
21
  5. Run
22
- `npx --yes copilotkit@4.12.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
22
+ `npx --yes copilotkit@4.13.1 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
23
23
  with the runtime URL or auth header options that this project needs. Require exit zero
24
24
  and the JSON `ok` field to be `true`.
25
25
  6. Drive one real request through the existing frontend, CopilotKit runtime, and expected
@@ -9,6 +9,16 @@ You can make only operational repairs to project-owned processes, ports, and req
9
9
  Do not write a path that overlaps a protected path. If a required proof or tool path
10
10
  overlaps one, return `Status: blocked` before writing it.
11
11
 
12
+ The existing agent's behavior is outside every step of this proof. It is four things: the
13
+ agent's system prompt and instructions, its tools and what those tools do, its model and
14
+ provider configuration, and its memory or state handling. A failing predicate is repaired
15
+ on the CopilotKit side -- the frontend rendering, the tool schema, the runtime wiring.
16
+ Where the only fix you can find is a change to the agent's instructions or tools, stop and
17
+ return the failing predicate with the change you propose, for the developer to approve.
18
+ Such a change is a behavior change rather than a repair: it changes how the agent answers
19
+ everywhere, not only in CopilotKit. Never rewrite the agent's prompt to make a component
20
+ render, and never report a round trip proved by a prompt this run rewrote.
21
+
12
22
  Run the steps below in the order they appear. They are the proof. Do not design a
13
23
  different sequence of your own, and do not drop a step because an earlier one looked
14
24
  convincing. Step 6 has a web form and a React Native form: run the one that matches this
@@ -135,7 +145,7 @@ IPv6 only, so an IPv4 literal fails against the correct port.
135
145
  ## Step 4 -- Check the wiring
136
146
 
137
147
  With both running, check the wiring in one command before you open a browser:
138
- `npx --yes copilotkit@4.12.0 verify --json`. It reads the port from this project, so a
148
+ `npx --yes copilotkit@4.13.1 verify --json`. It reads the port from this project, so a
139
149
  non-default port needs no flag. The payload reports `runtimeUrl` and `runtimeUrlSource`. A
140
150
  `runtimeUrlSource` of `default` means nothing in the project named a port, so pass
141
151
  `--runtime-url` with the URL from step 1 in that case. Read the individual checks rather than
@@ -169,7 +179,7 @@ named no port the CLI can read: keep step 2's URL, and rewrite its host as `loca
169
179
  before you use it.
170
180
 
171
181
  Then run the command once more with the URL you are about to open:
172
- `npx --yes copilotkit@4.12.0 verify --frontend-url <that url> --json`. The
182
+ `npx --yes copilotkit@4.13.1 verify --frontend-url <that url> --json`. The
173
183
  `frontend_assets_served` check asks that server for its page and for one of the page's own
174
184
  assets, on that exact host. A `fail` there means the dev server refuses its own static
175
185
  assets on the host you were about to use, and the check names the URL to use instead. This
@@ -177,7 +187,7 @@ is the cheapest step that can save the most expensive one, so run it before the
177
187
 
178
188
  ## Step 5 -- Prove that the agent runs
179
189
 
180
- Run `npx --yes copilotkit@4.12.0 verify --round-trip --json`. It sends one request through
190
+ Run `npx --yes copilotkit@4.13.1 verify --round-trip --json`. It sends one request through
181
191
  the runtime and reads the answer back from the thread, so it separates an agent that is
182
192
  configured from an agent that works. Use `--agent <id>` when the runtime declares more
183
193
  than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
@@ -190,7 +200,7 @@ Where this run settled a Learning Container, add the flag to the call above rath
190
200
  running a second round trip:
191
201
 
192
202
  ```text
193
- npx --yes copilotkit@4.12.0 verify --round-trip --expect-learning-container <container id> --json
203
+ npx --yes copilotkit@4.13.1 verify --round-trip --expect-learning-container <container id> --json
194
204
  ```
195
205
 
196
206
  The check reads the thread that this run created, so a second round trip proves a second
@@ -224,7 +234,7 @@ the credential was written holds an empty key while the file beside it carries t
224
234
  one. Run this from the target app directory:
225
235
 
226
236
  ```text
227
- npx --yes copilotkit@4.12.0 onboard env-staleness
237
+ npx --yes copilotkit@4.13.1 onboard env-staleness
228
238
  ```
229
239
 
230
240
  A `stale` line names the env file and how long after launch it was written. Report that,
@@ -302,7 +312,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
302
312
  same request the baseline recorded, require the same kind of user-visible result the
303
313
  baseline produced, and require that the thread for that request is listed in the drawer.
304
314
  Where this journey's frontend framework ships no threads drawer -- React Native --, prove
305
- that thread with `npx --yes copilotkit@4.12.0 verify --round-trip`, which reads the
315
+ that thread with `npx --yes copilotkit@4.13.1 verify --round-trip`, which reads the
306
316
  answer back off the thread and needs no browser. Record which of the two you proved.
307
317
 
308
318
  Use the surface control the main coding agent recorded for your environment. It either had
@@ -330,7 +340,7 @@ request never exercises. Drive it with the browser control step 6 named.
330
340
  the page to finish loading. Do not retype the host, and do not substitute a URL a tool
331
341
  offers you by default. Where the page loads but its styling is missing or the chat
332
342
  control is dead, run
333
- `npx --yes copilotkit@4.12.0 verify --frontend-url <the url you opened> --json`
343
+ `npx --yes copilotkit@4.13.1 verify --frontend-url <the url you opened> --json`
334
344
  before you diagnose anything else. A dev server can serve its page and refuse every
335
345
  static chunk behind it, and on screen that is indistinguishable from a broken
336
346
  integration. The `frontend_assets_served` check tells the two apart.
@@ -30,13 +30,13 @@ Before you show the best-effort plan, require this complete packet:
30
30
  - Give the ordered proof rules.
31
31
 
32
32
  After the developer approves the best-effort plan, run
33
- `npx --yes copilotkit@4.12.0 onboard read fallback/best-effort`.
33
+ `npx --yes copilotkit@4.13.1 onboard read fallback/best-effort`.
34
34
 
35
35
  Send one short report. Run the friction command without another developer question. Do not
36
36
  ask the developer about telemetry: the command applies the setting they already have.
37
37
 
38
38
  ```text
39
- npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
39
+ npx --yes copilotkit@4.13.1 onboard friction --phase stop --category <slug>
40
40
  ```
41
41
 
42
42
  Write one or two sentences to standard input: the step you stopped at and what stopped it.
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "copilotkit",
3
- "version": "4.12.0",
3
+ "version": "4.13.1",
4
4
  "type": "module",
5
+ "engines": {
6
+ "node": ">=20.9.0"
7
+ },
5
8
  "repository": {
6
9
  "type": "git",
7
10
  "url": "git+https://github.com/CopilotKit/Intelligence.git",
@@ -14696,9 +14696,109 @@ import * as fs4 from "node:fs";
14696
14696
  import * as os2 from "node:os";
14697
14697
  import * as path4 from "node:path";
14698
14698
 
14699
+ // libs/feature-flags/src/registry.ts
14700
+ function defineFlags(defs) {
14701
+ return Object.fromEntries(
14702
+ Object.entries(defs).map(([key, body]) => [key, { ...body, key }])
14703
+ );
14704
+ }
14705
+ var FLAG_DEFINITIONS = defineFlags({
14706
+ // Ops can auto-deploy before App API, including in staging. Keep issuance
14707
+ // off in every environment until all verifiers accept this signed claim.
14708
+ "cli.organization-slug": {
14709
+ purpose: "Include the Clerk organization slug in CLI product credentials after App API rollout.",
14710
+ owner: "platform",
14711
+ createdAt: "2026-09-17",
14712
+ status: "rollout",
14713
+ surfaces: ["ops-api"],
14714
+ defaultByEnv: { dev: false, ci: false, prod: false },
14715
+ envVar: "OPS_CLI_ORGANIZATION_SLUG_ENABLED"
14716
+ },
14717
+ // Self-hosted is a seam, not an offered choice yet (PE-94): the target moves
14718
+ // only the app API URL, and no onboarding path offers it. Keep released
14719
+ // binaries on managed until a self-hosted deployment can serve the product.
14720
+ "cli.self-hosted-deployment": {
14721
+ purpose: "Lets the CLI target a self-hosted Intelligence deployment through --deployment or COPILOTKIT_DEPLOYMENT.",
14722
+ owner: "platform",
14723
+ createdAt: "2026-09-22",
14724
+ status: "rollout",
14725
+ surfaces: ["cli"],
14726
+ defaultByEnv: { dev: true, ci: true, prod: false }
14727
+ },
14728
+ "threads.bounded-replay": {
14729
+ purpose: "Stage connect history on disk and require SDK acknowledgements for bounded delivery.",
14730
+ owner: "realtime",
14731
+ createdAt: "2026-09-16",
14732
+ status: "rollout",
14733
+ surfaces: ["realtime-gateway", "copilotkit-core"],
14734
+ defaultByEnv: { dev: true, ci: true, prod: false },
14735
+ envVar: "REALTIME_GATEWAY_BOUNDED_REPLAY_ENABLED"
14736
+ },
14737
+ // `active` (not `rollout`): a long-lived operational kill-switch, default-on
14738
+ // in every env; `envVar` adopts the pre-existing INSPECT_ROUTES_ENABLED name.
14739
+ "inspect.routes": {
14740
+ purpose: "Gates the /api/_inspect/* introspection routes used by the web inspector; operational kill-switch.",
14741
+ owner: "platform",
14742
+ createdAt: "2026-06-23",
14743
+ status: "active",
14744
+ surfaces: ["app-api"],
14745
+ defaultByEnv: { dev: true, ci: true, prod: true },
14746
+ envVar: "INSPECT_ROUTES_ENABLED"
14747
+ },
14748
+ // Rollout flag for the in-progress Channels feature (OSS-373). Lets the
14749
+ // SDK, UI, and infra land incrementally and deploy dark; production stays off
14750
+ // until the rollout completes and the prod default is flipped in a later
14751
+ // build. Server boundaries enforce it via the shared `resolveChannelsRollout`
14752
+ // helper; `envVar` pins the pre-existing FF_MANAGED_BOTS toggle name so the
14753
+ // operational override is byte-identical across the rename.
14754
+ channels: {
14755
+ purpose: "Gates the Channels feature (activation, listener, delivery, egress) so unfinished customer behavior stays dark until rollout completes.",
14756
+ owner: "channels",
14757
+ createdAt: "2026-06-25",
14758
+ status: "rollout",
14759
+ surfaces: ["app-api", "realtime-gateway", "app-frontend"],
14760
+ defaultByEnv: { dev: true, ci: true, prod: false },
14761
+ envVar: "FF_MANAGED_BOTS"
14762
+ },
14763
+ "managed-channels": {
14764
+ purpose: "Canonical Managed Channels rollout gate, evaluated alongside the legacy FF_MANAGED_BOTS override while deployments migrate.",
14765
+ owner: "channels",
14766
+ createdAt: "2026-07-09",
14767
+ status: "rollout",
14768
+ surfaces: ["app-api", "realtime-gateway", "app-frontend"],
14769
+ defaultByEnv: { dev: true, ci: true, prod: true }
14770
+ },
14771
+ "learning.platform-v1": {
14772
+ purpose: "Gates the Learning V1 control API, runtime workers, product UI, and CLI download while the platform rolls out.",
14773
+ owner: "learning",
14774
+ createdAt: "2026-08-06",
14775
+ status: "rollout",
14776
+ surfaces: ["app-api", "app-frontend", "cli"],
14777
+ defaultByEnv: { dev: false, ci: false, prod: false },
14778
+ envVar: "LEARNING_ENABLED"
14779
+ },
14780
+ "analytics.pipeline": {
14781
+ purpose: "Gates project-scoped analytics reads and realtime projection while the durable pipeline rolls out.",
14782
+ owner: "analytics",
14783
+ createdAt: "2026-08-16",
14784
+ status: "rollout",
14785
+ surfaces: ["app-api", "realtime-gateway"],
14786
+ defaultByEnv: { dev: false, ci: false, prod: false },
14787
+ envVar: "ANALYTICS_ENABLED"
14788
+ },
14789
+ "ops.stripe-billing-v1": {
14790
+ purpose: "Gates the direct Stripe Checkout, Portal, projection, and provider-aware billing API during rollout.",
14791
+ owner: "ops",
14792
+ createdAt: "2026-09-08",
14793
+ status: "rollout",
14794
+ surfaces: ["ops-api"],
14795
+ defaultByEnv: { dev: true, ci: true, prod: false }
14796
+ }
14797
+ });
14798
+
14699
14799
  // apps/cli/src/config.ts
14700
14800
  function getTemplateRef() {
14701
- return true ? "0048ba241fdf14a9036cdad11a4f31aa021a9c8d" : "main";
14801
+ return true ? "f8047217b909a3e18404034f31f47157c4312241" : "main";
14702
14802
  }
14703
14803
 
14704
14804
  // apps/cli/src/services/agentcore-config.ts