copilotkit 4.16.0 → 4.17.0

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 (81) hide show
  1. package/README.md +69 -4
  2. package/cli-build-info.json +7 -7
  3. package/index.js +3993 -2742
  4. package/onboarding/index.json +1 -1
  5. package/onboarding/prompts/authenticate/start.md +17 -15
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +20 -20
  8. package/onboarding/prompts/credentials/plan.md +21 -21
  9. package/onboarding/prompts/credentials/settle-credentials.md +46 -10
  10. package/onboarding/prompts/credentials/write-plan.md +35 -20
  11. package/onboarding/prompts/fallback/best-effort.md +23 -15
  12. package/onboarding/prompts/feature/a2ui/implement.md +40 -12
  13. package/onboarding/prompts/feature/a2ui/proof.md +29 -9
  14. package/onboarding/prompts/feature/a2ui/start.md +8 -10
  15. package/onboarding/prompts/feature/blocked-by-plan.md +4 -4
  16. package/onboarding/prompts/feature/channels/implement.md +41 -13
  17. package/onboarding/prompts/feature/channels/proof.md +30 -11
  18. package/onboarding/prompts/feature/channels/start.md +11 -9
  19. package/onboarding/prompts/feature/chat-suggestions/implement.md +40 -12
  20. package/onboarding/prompts/feature/chat-suggestions/proof.md +29 -9
  21. package/onboarding/prompts/feature/chat-suggestions/start.md +8 -10
  22. package/onboarding/prompts/feature/complete.md +2 -2
  23. package/onboarding/prompts/feature/learning/implement.md +58 -26
  24. package/onboarding/prompts/feature/learning/proof.md +30 -10
  25. package/onboarding/prompts/feature/learning/start.md +15 -12
  26. package/onboarding/prompts/feature/open-generative-ui/implement.md +41 -13
  27. package/onboarding/prompts/feature/open-generative-ui/proof.md +29 -9
  28. package/onboarding/prompts/feature/open-generative-ui/start.md +8 -10
  29. package/onboarding/prompts/feature/realtime-sync/implement.md +41 -13
  30. package/onboarding/prompts/feature/realtime-sync/proof.md +31 -10
  31. package/onboarding/prompts/feature/realtime-sync/start.md +8 -9
  32. package/onboarding/prompts/feature/rich-threads/implement.md +42 -14
  33. package/onboarding/prompts/feature/rich-threads/proof.md +31 -10
  34. package/onboarding/prompts/feature/rich-threads/start.md +8 -9
  35. package/onboarding/prompts/feature/stop.md +3 -3
  36. package/onboarding/prompts/feature/voice/implement.md +40 -12
  37. package/onboarding/prompts/feature/voice/proof.md +29 -9
  38. package/onboarding/prompts/feature/voice/start.md +8 -9
  39. package/onboarding/prompts/framework/ag2.md +2 -2
  40. package/onboarding/prompts/framework/agno.md +4 -4
  41. package/onboarding/prompts/framework/built-in.md +2 -2
  42. package/onboarding/prompts/framework/claude-sdk-python.md +8 -7
  43. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  44. package/onboarding/prompts/framework/crewai-flows.md +15 -7
  45. package/onboarding/prompts/framework/deep-agents.md +4 -3
  46. package/onboarding/prompts/framework/google-adk.md +7 -7
  47. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  48. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  49. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  50. package/onboarding/prompts/framework/llamaindex.md +4 -4
  51. package/onboarding/prompts/framework/mastra.md +2 -2
  52. package/onboarding/prompts/framework/ms-agent-dotnet.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  54. package/onboarding/prompts/framework/ms-agent-python.md +6 -6
  55. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  56. package/onboarding/prompts/framework/strands-python.md +4 -4
  57. package/onboarding/prompts/framework/strands-typescript.md +4 -4
  58. package/onboarding/prompts/frontend/angular.md +3 -3
  59. package/onboarding/prompts/frontend/nextjs.md +16 -3
  60. package/onboarding/prompts/frontend/plan.md +7 -7
  61. package/onboarding/prompts/frontend/react-native.md +2 -2
  62. package/onboarding/prompts/frontend/react-spa.md +2 -2
  63. package/onboarding/prompts/frontend/vue.md +2 -2
  64. package/onboarding/prompts/implementation/build-and-validate.md +67 -28
  65. package/onboarding/prompts/proof/complete.md +21 -14
  66. package/onboarding/prompts/proof/oss-baseline.md +16 -12
  67. package/onboarding/prompts/proof/round-trip.md +33 -22
  68. package/onboarding/prompts/research/gather.md +8 -7
  69. package/onboarding/prompts/research/merge.md +3 -3
  70. package/onboarding/prompts/research/preflight.md +4 -4
  71. package/onboarding/prompts/research/route.md +6 -6
  72. package/onboarding/prompts/starter/clone.md +14 -11
  73. package/onboarding/prompts/stopped/run-failed.md +9 -9
  74. package/onboarding/prompts/subagent/create-plan.md +15 -10
  75. package/onboarding/prompts/subagent/implement-and-validate.md +25 -11
  76. package/onboarding/prompts/subagent/inspect-repository.md +14 -6
  77. package/onboarding/prompts/subagent/prove-oss-baseline.md +5 -4
  78. package/onboarding/prompts/subagent/prove-round-trip.md +38 -14
  79. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  80. package/package.json +1 -5
  81. package/release/release-tool.js +171 -40
@@ -1,5 +1,5 @@
1
1
  {
2
- "graphTree": "a8ea88ef874865c0c245c2ae4df6221a8667b569",
2
+ "graphTree": "fa93f36f3c0d982c90097ddd1e4c056a286cd83a",
3
3
  "intentRoots": {
4
4
  "add-a2ui": "feature/a2ui/start",
5
5
  "add-chat-suggestions": "feature/chat-suggestions/start",
@@ -15,7 +15,7 @@ does is hidden from the developer.
15
15
  Run each CLI call exactly as written, as its own command: no pipe, `tee`, `&&`, redirect,
16
16
  or variable prefix. If your harness asks the developer to approve commands, request
17
17
  escalation on the `onboard identify` call with the prefix rule
18
- `["npx", "--prefer-offline", "--yes", "copilotkit@4.16.0"]`. Every CLI call in this run
18
+ `["npx", "--prefer-offline", "--yes", "copilotkit@4.17.0"]`. Every CLI call in this run
19
19
  matches it. Say then that the install, the dev servers, `curl` to the local app, and `ps`,
20
20
  `lsof`, and `kill` ask for approval later.
21
21
 
@@ -24,10 +24,12 @@ matches it. Say then that the install, the dev servers, `curl` to the local app,
24
24
  Run this before anything else in this prompt, including the welcome message below:
25
25
 
26
26
  ```text
27
- npx --prefer-offline --yes copilotkit@4.16.0 onboard identify --coding-agent <coding-agent-slug>
27
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id>
28
28
  ```
29
29
 
30
- Report your own product with one short slug, such as `codex` or `claude-code`.
30
+ Report your own product with one short slug, such as `codex` or `claude-code`. For
31
+ `--model`, give the exact model id your instructions name. If they name none, leave out
32
+ `--model` rather than guess.
31
33
 
32
34
  ## How to run this onboarding
33
35
 
@@ -47,10 +49,10 @@ printed once.
47
49
  Every later command must run from the directory this run started in. A command run
48
50
  somewhere else is refused, because the run it belongs to cannot be found from there. That
49
51
  refusal is a step, not a stop to report: run
50
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard start --run <onboarding_run_id>` where you are
52
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard start --run <onboarding_run_id>` where you are
51
53
  standing, then run the refused command again.
52
54
 
53
- If you no longer hold the id, run `npx --prefer-offline --yes copilotkit@4.16.0 onboard start` in the
55
+ If you no longer hold the id, run `npx --prefer-offline --yes copilotkit@4.17.0 onboard start` in the
54
56
  directory this run started in, with no `--run` and no `--intent`. It reprints the id of the
55
57
  run under way and starts nothing. An id this project does not already hold starts a second
56
58
  run, and the work already done stops counting toward the first.
@@ -113,11 +115,12 @@ record to the repository root by itself and prints where it put it.
113
115
  This run reports its own stops. If you stop this run at any point, send one short report
114
116
  before you stop. That covers a stop this prompt names, a stop a later prompt names, and a
115
117
  stop no prompt anticipated, including one your own harness causes. A turn that ends while
116
- the run waits is a pause, not a stop, even when your harness ends it. Run the friction
117
- command without another developer question.
118
+ the run waits is a pause, not a stop, even when your harness ends it. A terminal that
119
+ sends the report itself, or says to file none, overrides this.
120
+ Run the friction command without another developer question.
118
121
 
119
122
  ```text
120
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
123
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
121
124
  ```
122
125
 
123
126
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -127,13 +130,12 @@ sdk-gap, environment, port-collision, credential, validation-loop, and other. Le
127
130
  report that carries any of those, prints the reason, and exits zero. A refused report is
128
131
  not a failed step. Reword it and send it again, or stop without a report.
129
132
 
130
- Reporting a stop is not a route change. It does not resume the run, it is not a question
131
- for the developer, and it does not replace whatever the rule that stopped you says to do
132
- next: send the report, then stop.
133
+ Reporting a stop is not a route change. It does not resume the run or replace what the
134
+ rule that stopped you says next: send the report, then stop.
133
135
 
134
136
  ## Check sign-in
135
137
 
136
- Run `npx --prefer-offline --yes copilotkit@4.16.0 login --json` before any project work. This command
138
+ Run `npx --prefer-offline --yes copilotkit@4.17.0 login --json` before any project work. This command
137
139
  checks the current session. It starts sign-in only as needed. Treat this as a long-lived
138
140
  streaming process. Do not wait for the command to exit before you read its standard output.
139
141
 
@@ -167,7 +169,7 @@ Read each JSON Lines record as the running command writes it:
167
169
  second login command. Do not treat the opener command finishing as sign-in finishing.
168
170
  6. Continue onboarding only after that same process emits `type: completed`.
169
171
  7. On `type: failed` with `reason: expired`, ask once whether to retry. If yes, start one
170
- new `login --json`.
172
+ new `login --json`. Use `--force` only when the developer asks.
171
173
  8. If that process emits `type: failed`, report the error and stop onboarding.
172
174
 
173
175
  If your harness ends the login process or your turn before the process emits
@@ -180,8 +182,8 @@ Do not use `whoami` for this check. Do not put account tokens or credentials in
180
182
  conversation.
181
183
 
182
184
  When sign-in is settled, run
183
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read research/gather`.
185
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read research/gather`.
184
186
 
185
187
  If sign-in stops onboarding, run
186
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read stopped/run-failed`. It says nothing about
188
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`. It says nothing about
187
189
  whether this project's stack is supported, which is not yet known at this point.
@@ -100,7 +100,7 @@ of this journey, and a drawer that lists nothing is not a reason to mint one. Li
100
100
  tokens stay a self-hosted concern.
101
101
 
102
102
  Where this journey's frontend framework ships no threads drawer -- React Native --, the
103
- fifth item is proved by `npx --prefer-offline --yes copilotkit@4.16.0 verify --round-trip`, which sends a
103
+ fifth item is proved by `npx --prefer-offline --yes copilotkit@4.17.0 verify --round-trip`, which sends a
104
104
  real request and reads the answer back off the thread it landed on. The run says which of
105
105
  the two it proved. Do not send a run to the managed Intelligence dashboard to prove this.
106
106
  An authenticated browser session at a hosted dashboard is the one thing an agent-driven run
@@ -116,7 +116,7 @@ and passed -- so a run scored on either one was scored on the same fact. Every r
116
116
  resolves that condition from, while `licenseStatus` is a compatibility projection of it
117
117
  for older thread surfaces and outlives them only until those surfaces go.
118
118
 
119
- Then run `npx --prefer-offline --yes copilotkit@4.16.0 onboard read credentials/finalize-plan`.
119
+ Then run `npx --prefer-offline --yes copilotkit@4.17.0 onboard read credentials/finalize-plan`.
120
120
 
121
121
  If a selected page does not load after the second method, run
122
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read unsupported/no-validated-path`.
122
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read unsupported/no-validated-path`.
@@ -15,23 +15,22 @@ question.
15
15
 
16
16
  ## If you stop in this phase
17
17
 
18
- Several rules below stop onboarding: a refused classification value, a project selection
19
- that reports a false field, a failed credential check, a model credential nobody can
20
- place. Each one ends a run that reached project selection and never got a plan. Name the
21
- exact file, value, or check that stopped you: a report that names only the step cannot be
22
- acted on. Send one short report before you stop. Run the friction command without another
18
+ Several rules below stop onboarding: an environment path that cannot be made ignored, a
19
+ project selection that reports a false field, a project record written somewhere other
20
+ than the expected path, and a failed credential check. Each one ends a run that never got
21
+ a plan. Name the exact file, value, or check that stopped you, not only the step. Send one
22
+ short report before you stop. Run the friction command without another
23
23
  developer question. Do not ask the developer about telemetry: the command applies the
24
24
  setting they already have.
25
25
 
26
26
  ```text
27
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
27
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
28
28
  ```
29
29
 
30
30
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
31
31
  Pick the category that fits from docs-missing, docs-wrong, docs-sequential, cli-gap,
32
32
  sdk-gap, environment, port-collision, credential, validation-loop, and other. Leave
33
- --cost-seconds off. A run that stopped cannot separate one papercut's cost from the cost
34
- of the whole run, so the estimate is optional on a stop report and only there.
33
+ --cost-seconds off: a stopped run cannot separate one papercut's cost from the whole run's.
35
34
  Send no secrets, source code, logs, or command output. The command refuses a report that
36
35
  carries any of those, prints the reason, and exits zero. A refused report is not a failed
37
36
  step. Send the report, then stop the way the rule that stopped you says to. Reporting is
@@ -59,7 +58,7 @@ the command refuses one of them from a run that was served that node.
59
58
  Run this command with the exact selected slugs:
60
59
 
61
60
  ```text
62
- npx --prefer-offline --yes copilotkit@4.16.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend>
61
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend>
63
62
  ```
64
63
 
65
64
  Do not continue if a value is refused. Fix the value from the choices that the earlier
@@ -72,7 +71,8 @@ the runtime `.env` file, do not default to the repository root.
72
71
  Set the environment path to `<target>/.env`.
73
72
 
74
73
  Every credential this run writes goes to the environment path. That covers the project
75
- key and the model credential. Do not write a credential to `.env.local`, or to any second
74
+ key and the model credential, unless the framework node names another location for the
75
+ model credential. Do not write a credential to `.env.local`, or to any second
76
76
  env file beside it. A project ignore file usually covers `.env` and not
77
77
  `.env.local`, so a credential written there is untracked, visible, and added by the first
78
78
  `git add -A`. And a second env file beside `.env` outranks it when a key is read back, so
@@ -125,9 +125,8 @@ that provisions its key.
125
125
 
126
126
  If an output path overlaps a `protected` path, do not stop. Name the path, say what
127
127
  project selection writes there, list that file in the plan with every other change, and
128
- carry on. Nothing before project selection ends the run. It is the step that provisions
129
- this project's key, so a run that stops earlier leaves the developer with no key and no
130
- way to finish.
128
+ carry on. A `protected` path overlap does not end the run. Project selection provisions
129
+ this project's key, so a stop here leaves the developer with no key and no way to finish.
131
130
 
132
131
  ### Create a project for this directory
133
132
 
@@ -156,7 +155,7 @@ passes against the wrong one.
156
155
  Create it, from the target directory, passing the port research settled:
157
156
 
158
157
  ```text
159
- npx --prefer-offline --yes copilotkit@4.16.0 project select --create <name> \
158
+ npx --prefer-offline --yes copilotkit@4.17.0 project select --create <name> \
160
159
  --runtime-url http://localhost:<port>/api/copilotkit --json
161
160
  ```
162
161
 
@@ -174,13 +173,13 @@ Take this branch only when the developer asks for an existing project, or asks t
174
173
  projects they have. Read the choices:
175
174
 
176
175
  ```text
177
- npx --prefer-offline --yes copilotkit@4.16.0 project list --json
176
+ npx --prefer-offline --yes copilotkit@4.17.0 project list --json
178
177
  ```
179
178
 
180
179
  Narrow them:
181
180
 
182
181
  ```text
183
- npx --prefer-offline --yes copilotkit@4.16.0 project list --search <query> --json
182
+ npx --prefer-offline --yes copilotkit@4.17.0 project list --search <query> --json
184
183
  ```
185
184
 
186
185
  With `--json` the payload is the only thing on standard output, so it is safe to parse. Do
@@ -193,7 +192,7 @@ Then record the project they name, from the target directory, with the same
193
192
  `--runtime-url`:
194
193
 
195
194
  ```text
196
- npx --prefer-offline --yes copilotkit@4.16.0 project select --project <slug-or-id> \
195
+ npx --prefer-offline --yes copilotkit@4.17.0 project select --project <slug-or-id> \
197
196
  --runtime-url http://localhost:<port>/api/copilotkit --json
198
197
  ```
199
198
 
@@ -220,8 +219,9 @@ onboarding.
220
219
  Never print the payload or any secret value.
221
220
 
222
221
  After project reuse or a warning-free selection result, send the environment
223
- research subagent a focused follow-up check. Give it the exact target app directory and both
224
- credential paths. Require it to report these facts without values:
222
+ research subagent a focused follow-up check. Give it the exact target app directory, both
223
+ credential paths, and the `.env` modification time the inspection returned. Require it to
224
+ report these facts without values:
225
225
 
226
226
  - The project-record path has non-empty `projectId` and `projectSlug` fields. Unless
227
227
  `COPILOTKIT_DEPLOYMENT` is `self-hosted`, it also has a non-empty `clerkOrgId` field.
@@ -238,4 +238,4 @@ project-record path and environment path as the credential setup path list. Do n
238
238
  to the baseline yet.
239
239
 
240
240
  When project selection is settled, run
241
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read credentials/settle-credentials`.
241
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read credentials/settle-credentials`.
@@ -20,7 +20,7 @@ If the target directory holds no project and the copied prompt came from the Sla
20
20
  Microsoft Teams docs page, do not ask the framework question. The Channel starter brings
21
21
  its own agent, so an answer here decides nothing. Tell the developer that the Channel
22
22
  starter decides the agent, then run
23
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read frontend/plan`.
23
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read frontend/plan`.
24
24
 
25
25
  Use a gentle wizard. Ask one short question at a time. Do not combine separate choices in
26
26
  one question. Put the recommendation first, give its evidence in one sentence, and keep
@@ -74,26 +74,26 @@ another framework. Do not show the internal route.
74
74
 
75
75
  Use exactly one matching internal route:
76
76
 
77
- 1. AG2: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/ag2`
78
- 2. Agno: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/agno`
79
- 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/built-in`
80
- 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/claude-sdk-python`
81
- 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/claude-sdk-typescript`
82
- 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/crewai-flows`
83
- 7. Deep Agents: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/deep-agents`
84
- 8. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/langgraph-python`
85
- 9. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/langgraph-fastapi`
86
- 10. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/langgraph-typescript`
87
- 11. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/llamaindex`
88
- 12. ADK: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/google-adk`
89
- 13. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/ms-agent-python`
90
- 14. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/ms-agent-dotnet`
91
- 15. Mastra: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/mastra`
92
- 16. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/ms-agent-harness-dotnet`
93
- 17. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/pydantic-ai`
94
- 18. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/strands-python`
95
- 19. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.16.0 onboard read framework/strands-typescript`
77
+ 1. AG2: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/ag2`
78
+ 2. Agno: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/agno`
79
+ 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/built-in`
80
+ 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/claude-sdk-python`
81
+ 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/claude-sdk-typescript`
82
+ 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/crewai-flows`
83
+ 7. Deep Agents: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/deep-agents`
84
+ 8. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/langgraph-python`
85
+ 9. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/langgraph-fastapi`
86
+ 10. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/langgraph-typescript`
87
+ 11. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/llamaindex`
88
+ 12. ADK: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/google-adk`
89
+ 13. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/ms-agent-python`
90
+ 14. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/ms-agent-dotnet`
91
+ 15. Mastra: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/mastra`
92
+ 16. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/ms-agent-harness-dotnet`
93
+ 17. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/pydantic-ai`
94
+ 18. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/strands-python`
95
+ 19. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.17.0 onboard read framework/strands-typescript`
96
96
 
97
97
  If the project has an agent in another framework, or no listed framework fits, keep the
98
98
  developer's current agent and run
99
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read unsupported/no-validated-path`.
99
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read unsupported/no-validated-path`.
@@ -11,7 +11,7 @@ friction command without another developer question. Do not ask the developer ab
11
11
  telemetry: the command applies the setting they already have.
12
12
 
13
13
  ```text
14
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
14
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
15
15
  ```
16
16
 
17
17
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -60,7 +60,7 @@ One container for this project is the default scope, so the id comes from the se
60
60
  project slug. Ask the CLI for it, from the target directory:
61
61
 
62
62
  ```text
63
- npx --prefer-offline --yes copilotkit@4.16.0 learning containers default-id --json
63
+ npx --prefer-offline --yes copilotkit@4.17.0 learning containers default-id --json
64
64
  ```
65
65
 
66
66
  The command reads the local project record. It needs no credential and makes no network
@@ -79,7 +79,7 @@ happened.
79
79
  Then ask the platform about that id, from the target directory:
80
80
 
81
81
  ```text
82
- npx --prefer-offline --yes copilotkit@4.16.0 learning containers get <id> --json
82
+ npx --prefer-offline --yes copilotkit@4.17.0 learning containers get <id> --json
83
83
  ```
84
84
 
85
85
  The read carries the same availability gate as the create, so it answers the entitlement
@@ -104,7 +104,7 @@ Never invent an id, scrape a dashboard, or treat an arbitrary string as a contai
104
104
  Report what the read found, before anything is planned:
105
105
 
106
106
  ```text
107
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase container-surveyed
107
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase container-surveyed
108
108
  ```
109
109
 
110
110
  Carry the derived id into the planning subagent's handoff, with whether the platform
@@ -128,7 +128,7 @@ finds is not.
128
128
  Until the developer answers, the run waits. Report the pause and end your turn:
129
129
 
130
130
  ```text
131
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase awaiting-developer
131
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase awaiting-developer
132
132
  ```
133
133
 
134
134
  This is a pause, not a stop. `research/gather` describes it under "Pausing vs stopping".
@@ -136,12 +136,47 @@ Do not send a stop report, and do not take a stop route. When the developer answ
136
136
  continue from this step. Do not write a placeholder or an empty value. A scaffold carrying
137
137
  a dummy key looks finished and fails at the first model call.
138
138
 
139
+ ## Check that the vendor accepts the model credential
140
+
141
+ When a model credential is in place, ask the vendor whether the key can pay for a model
142
+ call. Run this once for each model credential variable the plan names, from the
143
+ target app directory, with the env file the application reads it from:
144
+
145
+ ```text
146
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard model-key --key <variable name> --env-file <env file> --json
147
+ ```
148
+
149
+ The command reads the value itself and sends one request with a one-token answer to that
150
+ vendor. It never prints the value, so you still do not read it. Read `status` from the
151
+ payload:
152
+
153
+ - `pass`: the vendor served a model call with this key. Continue.
154
+ - `fail`: the vendor refused the key, and it will refuse every model call the application
155
+ makes. `cause` says why. `model_quota` means the key has no credits. `model_auth` means
156
+ the vendor rejected the key. Tell the developer that exact cause, and offer the choices:
157
+ add credits, use another key, or switch the model provider. Then report the pause the
158
+ way the section above does, and end your turn. When the developer answers, place the
159
+ new credential and run this check again.
160
+ - `missing`: there is no real value to check. `reason` says which file or key is empty.
161
+ Go back to the section above and ask the developer where the credential lives.
162
+ - `unsupported` or `undetermined`: the check did not settle it. Name the `reason` in the
163
+ closing report and continue. `custom-endpoint` means a base URL sends the key to
164
+ another endpoint, such as a local Ollama, so the vendor was not asked.
165
+ `environment-override` means the shell sets a different value for the key, and the
166
+ application reads that value first. Do not stop the
167
+ run for either status.
168
+
169
+ Do not skip a `fail` to save time. The next model call is the round-trip proof, after the
170
+ whole build, and it reports a dead key only as a timeout that names no key.
171
+
172
+ ## Protect the credential paths
173
+
139
174
  After model credential placement is complete, add each credential setup path to the
140
175
  protected path list. Also add each project file that the developer changed for model
141
176
  credentials. Record them in the baseline from the target app directory:
142
177
 
143
178
  ```text
144
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --path <path>
179
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --path <path>
145
180
  ```
146
181
 
147
182
  Pass one `--path` for each. The command captures a digest for each path and never re-reads
@@ -155,7 +190,7 @@ Then re-capture the files this graph wrote itself. For each path the first captu
155
190
  as `deferred` that this run has now written, run:
156
191
 
157
192
  ```text
158
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --rebaseline --path <path>
193
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --rebaseline --path <path>
159
194
  ```
160
195
 
161
196
  From that point they are protected like any other path, so a later step that rewrites
@@ -174,14 +209,15 @@ environment path. The command below is what to run at that point, from the targe
174
209
  directory:
175
210
 
176
211
  ```text
177
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --accept-credential --path <environment path>
212
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --accept-credential --path <environment path>
178
213
  ```
179
214
 
180
215
  The command compares the variable names the baseline recorded with the names the file holds
181
216
  now. Read its result:
182
217
 
183
218
  - `Status: passed` means the developer added a credential and every recorded credential is
184
- still there. Carry the accepted path into the summary.
219
+ still there. Carry the accepted path into the summary. Then run the vendor check above
220
+ for the credential the developer added.
185
221
  - `credential-lost` means a variable the baseline recorded is gone or empty, and the
186
222
  refusal names it. Do not repair or rewrite the file. Report the named variable and stop
187
223
  onboarding. A run that lost the project key has nothing to prove a round trip with.
@@ -189,4 +225,4 @@ now. Read its result:
189
225
  is not a failed step. It answers the question and the run carries on.
190
226
 
191
227
  When the credential question is answered, run
192
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read credentials/write-plan`.
228
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read credentials/write-plan`.
@@ -11,7 +11,7 @@ friction command without another developer question. Do not ask the developer ab
11
11
  telemetry: the command applies the setting they already have.
12
12
 
13
13
  ```text
14
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
14
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
15
15
  ```
16
16
 
17
17
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -29,30 +29,41 @@ it. The credential reaches the platform only when the runtime is constructed wit
29
29
  Intelligence client, and a runtime built without one compiles, serves, answers in a
30
30
  browser, and never touches the platform.
31
31
 
32
- Mount the runtime on the full route subtree. An Intelligence runtime serves its runs over
33
- two REST paths: `/agent/<id>/run` and `/agent/<id>/connect`. The Intelligence client
34
- addresses those paths for every transport the provider selects. A runtime mounted with
35
- `mode: "single-route"` answers every other call. It returns not found for every run and
36
- every thread reopen.
37
-
38
- For a Next.js app, mount the handler at `app/api/copilotkit/[[...slug]]/route.ts`. Export
39
- `GET`, `POST`, `PATCH` and `DELETE`. Pass `useSingleEndpoint={false}` to the React
40
- provider.
41
-
42
- One page below offers single-route as an equal option. It is not an equal option here. The
43
- round-trip check passes either way, so nothing later in this run catches the mistake.
32
+ Which mount works depends on the `@copilotkit/core` version the app runs: the installed
33
+ version the inspection reported, or the version the plan upgrades to. Do not detect it
34
+ again. Where the inspection reports no `@copilotkit/core`, as a pnpm tree often does, read
35
+ the `@copilotkit/react-core` or `@copilotkit/runtime` version: the three release together.
36
+ Give this rule and that version to the planning subagent below.
37
+
38
+ From `@copilotkit/core` 1.73.1, the Intelligence client honors a single-route transport,
39
+ so either mount works. Keep the mount the project already has, together with its provider
40
+ setting: `mode: "single-route"` with `useSingleEndpoint` true or unset, or the full route
41
+ subtree with `useSingleEndpoint={false}`. For a new mount, use the full route subtree below.
42
+
43
+ Below 1.73.1, mount the runtime on the full route subtree. An Intelligence runtime serves
44
+ its runs over two REST paths: `/agent/<id>/run` and `/agent/<id>/connect`, and the
45
+ Intelligence client of those versions addresses them for every transport the provider
46
+ selects. A runtime mounted with `mode: "single-route"` answers every other call. It
47
+ returns not found for every run and every thread reopen. The other fix is an upgrade of
48
+ the CopilotKit packages to 1.73.1 or later, which the plan can name as its dependency
49
+ upgrade. The round-trip check passes with either mount, so nothing later in this run
50
+ catches the mistake.
51
+
52
+ For the full route subtree in a Next.js app, mount the handler at
53
+ `app/api/copilotkit/[[...slug]]/route.ts`. Export `GET`, `POST`, `PATCH` and `DELETE`.
54
+ Pass `useSingleEndpoint={false}` to the React provider.
44
55
 
45
56
  Add these pages to the selected documentation URLs for the planning, implementation, and
46
57
  proof subagents:
47
58
 
48
- - https://docs.copilotkit.ai/intelligence/connect-your-runtime.md
59
+ - https://docs.copilotkit.ai/intelligence/quickstart.md
49
60
  - https://docs.copilotkit.ai/backend/runtime-endpoints.md
50
61
  - https://docs.copilotkit.ai/intelligence/managed-intelligence-platform.md
51
62
 
52
63
  Fetch them together with the pages already selected rather than on their own.
53
64
 
54
65
  Spawn one planning subagent. Tell it to run
55
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read subagent/create-plan` first and follow the prompt
66
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read subagent/create-plan` first and follow the prompt
56
67
  it returns. If that read fails because the subagent cannot use the shell, stop that subagent.
57
68
  Run the same command yourself, then spawn a fresh subagent with the returned prompt and the
58
69
  same handoff. Give it the repository findings, selected framework, frontend, model, credential
@@ -63,8 +74,11 @@ Wait for the subagent to finish.
63
74
  Continue only if the planning result starts with `Status: passed`. For `Status: failed`,
64
75
  send the result back to the planning subagent for repair, up to three attempts. For
65
76
  `Status: blocked`, or a third failed result, run
66
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read stopped/run-failed`. A plan this run cannot
67
- write is a run that broke, not a stack the documentation does not cover. Do not show or
77
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`. A plan this run cannot
78
+ write is a run that broke, not a stack the documentation does not cover. The exception is
79
+ a blocked result that names `unsupported/no-validated-path`: the planning subagent found
80
+ that no page supports the plan, so take the no-supported-path route at the end of this
81
+ prompt instead. Do not show or
68
82
  ask for approval of a non-pass plan.
69
83
 
70
84
  Make sure that the plan preserves each part that already exists. The plan must name the
@@ -95,7 +109,8 @@ developer did not approve.
95
109
  When you ask for approval, tell the developer in one line that this is the last thing you
96
110
  need from them, and, unless your harness makes the developer approve commands before they
97
111
  run, that they can leave the run once they approve. That is a fact about this graph rather
98
- than a reassurance: no step after approval asks the developer a question, and the steps
112
+ than a reassurance: no step after approval asks the developer a question unless a step
113
+ cannot be built as approved, and the steps
99
114
  that follow are the longest ones in the run. A developer who does not know that waits at
100
115
  the terminal through all of them for a question that never comes. Say it in the same
101
116
  message as the plan, and do not turn it into a second question.
@@ -107,7 +122,7 @@ build. Keep this window open until the app runs." Decide from your own approval
107
122
  as the welcome did, not from your coding-agent slug.
108
123
 
109
124
  If the developer approves the plan, run
110
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read implementation/build-and-validate`.
125
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read implementation/build-and-validate`.
111
126
 
112
127
  If no exact supported path or documentation URL exists, run
113
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read unsupported/no-validated-path`.
128
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read unsupported/no-validated-path`.
@@ -8,13 +8,15 @@ This fallback contains unproved steps. Use the approved plan in step order.
8
8
  ## If you stop in this fallback
9
9
 
10
10
  Several rules below stop onboarding: a blocked or third failed implementation result, a
11
- changed protected path, a blocked or third failed proof, a fix that needs changes to the
12
- existing agent or frontend. Send one short report before you stop. Run the friction
11
+ blocked audit, a changed protected path this run wrote, a changed path that no Files
12
+ changed section accounts for after a proof subagent ran, a credential acceptance refused for a lost variable, a blocked or third
13
+ failed proof, a blocked or third failed repair, and a fix that needs changes to the existing
14
+ agent or frontend. Send one short report before you stop. Run the friction
13
15
  command without another developer question. Do not ask the developer about telemetry: the
14
16
  command applies the setting they already have.
15
17
 
16
18
  ```text
17
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
19
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
18
20
  ```
19
21
 
20
22
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -60,17 +62,23 @@ or frontend, stop onboarding.
60
62
 
61
63
  Use these rules for every protected-path check in this fallback:
62
64
 
63
- - Run `npx --prefer-offline --yes copilotkit@4.16.0 onboard audit` from the target app directory.
65
+ - Run `npx --prefer-offline --yes copilotkit@4.17.0 onboard audit` from the target app directory.
64
66
  - If a result starts with `Status: blocked`, stop onboarding and report the printed reason.
65
67
  It proved nothing changed, so do not report a preservation failure.
66
68
  - If a result reports a changed protected path this run wrote, stop onboarding.
67
- - If a result reports a changed path that no Files changed section from this run names,
68
- the change came from outside the run. Accept it by name with
69
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --accept-external --path <path>`, run the
69
+ - If a result reports a changed env file, this rule replaces the one above, even when this
70
+ run wrote the file. This run asked the developer to place a
71
+ credential there, so take the credential route rather than the external one. Accept it
72
+ with `npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --accept-credential --path <path>`,
73
+ run the audit again, and name it in the closing report. If the command refuses because
74
+ it names a lost variable, stop onboarding.
75
+ - Before any proof subagent runs, a changed path that no Files changed section from this
76
+ run names came from outside the run. Accept it by name with
77
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --accept-external --path <path>`, run the
70
78
  audit again, and name it in the closing report.
71
- - If no Files changed section from this run covers the step that wrote it, stop
72
- onboarding. The proof subagent here returns no such section, so a finding it raises is
73
- unsettled rather than outside the run.
79
+ - After a proof subagent runs, a changed path that no Files changed section from this run
80
+ names is unsettled rather than outside the run, because the proof subagent here returns
81
+ no such section. Stop onboarding.
74
82
  - Never repair, reset, or revert a protected path.
75
83
 
76
84
  Run the protected-path check now. Apply the protected-path rules. Continue only when the
@@ -119,13 +127,13 @@ application passes proof. Report each tool result separately from the proof resu
119
127
  Report the documentation gap and each assumption with the proof evidence. Do not claim
120
128
  that the selected documentation proved an inferred step.
121
129
 
122
- When the proof is complete, run `npx --prefer-offline --yes copilotkit@4.16.0 onboard complete`, carrying the
123
- surface-check result the proof subagent returned. Pass exactly one flag, matching this
124
- journey's surface:
130
+ When the proof is complete, run `npx --prefer-offline --yes copilotkit@4.17.0 onboard complete`, carrying the
131
+ surface-check result the proof subagent returned. Pass exactly one of `--visual-check` or
132
+ `--device-check`, matching this journey's surface:
125
133
 
126
134
  ```text
127
- npx --prefer-offline --yes copilotkit@4.16.0 onboard complete --visual-check <outcome>
128
- npx --prefer-offline --yes copilotkit@4.16.0 onboard complete --device-check <outcome>
135
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard complete --visual-check <outcome>
136
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard complete --device-check <outcome>
129
137
  ```
130
138
 
131
139
  `--visual-check` is for a web frontend and takes `performed`, `skipped-no-browser-tool`, or