copilotkit 4.23.1 → 4.25.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 (94) hide show
  1. package/README.md +164 -17
  2. package/cli-build-info.json +8 -8
  3. package/exporters/langgraph/README.md +33 -0
  4. package/exporters/langgraph/export_checkpointer.py +16 -0
  5. package/index.js +10909 -8245
  6. package/onboarding/index.json +2 -1
  7. package/onboarding/prompts/authenticate/start.md +50 -42
  8. package/onboarding/prompts/conversion/plan.md +3 -3
  9. package/onboarding/prompts/credentials/finalize-plan.md +30 -8
  10. package/onboarding/prompts/credentials/plan.md +115 -49
  11. package/onboarding/prompts/credentials/settle-credentials.md +16 -5
  12. package/onboarding/prompts/credentials/write-plan.md +15 -15
  13. package/onboarding/prompts/deployment/choose-local.md +62 -14
  14. package/onboarding/prompts/deployment/local-evaluation.md +37 -7
  15. package/onboarding/prompts/fallback/best-effort.md +8 -8
  16. package/onboarding/prompts/feature/a2ui/implement.md +15 -8
  17. package/onboarding/prompts/feature/a2ui/plan.md +15 -7
  18. package/onboarding/prompts/feature/a2ui/proof.md +14 -7
  19. package/onboarding/prompts/feature/a2ui/start.md +26 -8
  20. package/onboarding/prompts/feature/channels/implement.md +21 -9
  21. package/onboarding/prompts/feature/channels/plan.md +15 -7
  22. package/onboarding/prompts/feature/channels/proof.md +14 -7
  23. package/onboarding/prompts/feature/channels/start.md +30 -19
  24. package/onboarding/prompts/feature/chat-suggestions/implement.md +15 -8
  25. package/onboarding/prompts/feature/chat-suggestions/plan.md +15 -7
  26. package/onboarding/prompts/feature/chat-suggestions/proof.md +14 -7
  27. package/onboarding/prompts/feature/chat-suggestions/start.md +26 -8
  28. package/onboarding/prompts/feature/complete.md +2 -2
  29. package/onboarding/prompts/feature/learning/implement.md +32 -18
  30. package/onboarding/prompts/feature/learning/plan.md +15 -7
  31. package/onboarding/prompts/feature/learning/proof.md +76 -9
  32. package/onboarding/prompts/feature/learning/start.md +26 -8
  33. package/onboarding/prompts/feature/open-generative-ui/implement.md +15 -8
  34. package/onboarding/prompts/feature/open-generative-ui/plan.md +15 -7
  35. package/onboarding/prompts/feature/open-generative-ui/proof.md +14 -7
  36. package/onboarding/prompts/feature/open-generative-ui/start.md +26 -8
  37. package/onboarding/prompts/feature/realtime-sync/implement.md +20 -12
  38. package/onboarding/prompts/feature/realtime-sync/plan.md +15 -7
  39. package/onboarding/prompts/feature/realtime-sync/proof.md +14 -7
  40. package/onboarding/prompts/feature/realtime-sync/start.md +25 -7
  41. package/onboarding/prompts/feature/rich-threads/implement.md +21 -13
  42. package/onboarding/prompts/feature/rich-threads/plan.md +15 -7
  43. package/onboarding/prompts/feature/rich-threads/proof.md +14 -7
  44. package/onboarding/prompts/feature/rich-threads/start.md +25 -7
  45. package/onboarding/prompts/feature/stop.md +9 -3
  46. package/onboarding/prompts/feature/voice/implement.md +15 -8
  47. package/onboarding/prompts/feature/voice/plan.md +16 -8
  48. package/onboarding/prompts/feature/voice/proof.md +14 -7
  49. package/onboarding/prompts/feature/voice/start.md +26 -8
  50. package/onboarding/prompts/framework/ag2.md +6 -5
  51. package/onboarding/prompts/framework/agno.md +6 -5
  52. package/onboarding/prompts/framework/built-in.md +9 -6
  53. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  54. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  55. package/onboarding/prompts/framework/crewai-flows.md +12 -4
  56. package/onboarding/prompts/framework/custom-ag-ui.md +8 -2
  57. package/onboarding/prompts/framework/deep-agents.md +6 -5
  58. package/onboarding/prompts/framework/google-adk.md +2 -2
  59. package/onboarding/prompts/framework/langgraph-fastapi.md +8 -5
  60. package/onboarding/prompts/framework/langgraph-python.md +8 -5
  61. package/onboarding/prompts/framework/langgraph-typescript.md +8 -5
  62. package/onboarding/prompts/framework/llamaindex.md +6 -5
  63. package/onboarding/prompts/framework/mastra.md +9 -6
  64. package/onboarding/prompts/framework/ms-agent-dotnet.md +12 -4
  65. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +12 -4
  66. package/onboarding/prompts/framework/ms-agent-python.md +6 -5
  67. package/onboarding/prompts/framework/pydantic-ai.md +6 -5
  68. package/onboarding/prompts/framework/strands-python.md +10 -6
  69. package/onboarding/prompts/framework/strands-typescript.md +10 -6
  70. package/onboarding/prompts/frontend/angular.md +10 -3
  71. package/onboarding/prompts/frontend/nextjs.md +36 -3
  72. package/onboarding/prompts/frontend/plan.md +13 -7
  73. package/onboarding/prompts/frontend/react-native.md +9 -2
  74. package/onboarding/prompts/frontend/react-spa.md +9 -2
  75. package/onboarding/prompts/frontend/vue.md +9 -2
  76. package/onboarding/prompts/implementation/build-and-validate.md +49 -21
  77. package/onboarding/prompts/proof/complete.md +3 -3
  78. package/onboarding/prompts/proof/oss-baseline.md +30 -13
  79. package/onboarding/prompts/proof/round-trip.md +55 -17
  80. package/onboarding/prompts/research/gather.md +21 -11
  81. package/onboarding/prompts/research/merge.md +8 -2
  82. package/onboarding/prompts/research/preflight.md +2 -2
  83. package/onboarding/prompts/research/route.md +14 -7
  84. package/onboarding/prompts/starter/clone.md +151 -9
  85. package/onboarding/prompts/stopped/run-failed.md +8 -2
  86. package/onboarding/prompts/subagent/create-plan.md +9 -2
  87. package/onboarding/prompts/subagent/implement-and-validate.md +2 -2
  88. package/onboarding/prompts/subagent/inspect-repository.md +12 -6
  89. package/onboarding/prompts/subagent/prove-oss-baseline.md +6 -1
  90. package/onboarding/prompts/subagent/prove-round-trip.md +53 -10
  91. package/onboarding/prompts/unsupported/no-validated-path.md +8 -2
  92. package/package.json +1 -1
  93. package/release/release-tool.js +18 -1
  94. package/services/local-auth-worker.js +175 -159
@@ -2,6 +2,13 @@
2
2
 
3
3
  Preserve an existing Next.js frontend. Use the selected pages for a new frontend.
4
4
 
5
+ This step asks the developer nothing. If the run must wait for the developer anyway, report
6
+ the pause first:
7
+
8
+ ```text
9
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
10
+ ```
11
+
5
12
  Use the starter shortcut only if the target directory holds no project and its name is
6
13
  a valid `init` project name. The selected framework must also match one of these options.
7
14
 
@@ -15,7 +22,7 @@ These TypeScript options have starters: Claude Agent SDK TypeScript, LangGraph T
15
22
  Mastra, and Strands Agents TypeScript. The .NET option is Microsoft Agent Framework .NET.
16
23
 
17
24
  If all shortcut conditions are true, record Next.js as the selected frontend. Then run
18
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read starter/clone` before you fetch documentation.
25
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read starter/clone` before you fetch documentation.
19
26
 
20
27
  ## Documentation
21
28
 
@@ -39,8 +46,34 @@ developer's work.
39
46
  - For an existing frontend, do not change `next.config.ts` for this.
40
47
  - Do not claim, revert, or delete these files. Name them in the report as Next.js output.
41
48
 
49
+ ## Lockfile in a parent folder
50
+
51
+ Next.js 16 uses the highest folder with a lockfile as the workspace root. If a parent
52
+ folder holds a lockfile, Next.js takes that folder as the root. It then resolves packages
53
+ and traces output from the wrong folder. `next dev` and `next build` print this warning:
54
+
55
+ ```text
56
+ Warning: Next.js inferred your workspace root, but it may not be correct.
57
+ ```
58
+
59
+ If you see the warning, read the lockfile paths that it lists. If the parent folder is a
60
+ workspace that lists this app, do not set the root. Next.js chose the correct folder.
61
+ Otherwise, set the root to the app folder in `next.config.ts`:
62
+
63
+ ```ts
64
+ import { fileURLToPath } from 'node:url';
65
+
66
+ const nextConfig = {
67
+ turbopack: { root: fileURLToPath(new URL('.', import.meta.url)) },
68
+ };
69
+ ```
70
+
71
+ In a CommonJS `next.config.js`, use `turbopack: { root: __dirname }` instead. This value
72
+ also sets `outputFileTracingRoot`. Do not set `outputFileTracingRoot` to a
73
+ different folder. For an existing frontend, name this change in the report.
74
+
42
75
  If the page supports the selection, record Next.js and this URL. Then run
43
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read credentials/finalize-plan`.
76
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read credentials/finalize-plan`.
44
77
 
45
78
  If the documentation does not support the selection, run
46
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read unsupported/no-validated-path`.
79
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read unsupported/no-validated-path`.
@@ -27,6 +27,12 @@ If the project has a frontend, preserve it and use the matching route below. If
27
27
  needs a frontend, show the valid choices and one recommendation based on repository
28
28
  evidence, then ask the developer to choose.
29
29
 
30
+ Before you end your turn to wait for the developer, report the pause:
31
+
32
+ ```text
33
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
34
+ ```
35
+
30
36
  The valid choices are React SPA, Next.js, Angular, Vue 3, React Native, Slack, and
31
37
  Microsoft Teams. They are valid in every starting state. Route names are this graph's own
32
38
  bookkeeping. Say what the run is doing in the developer's words instead.
@@ -37,15 +43,15 @@ CopilotKit web apps. Then recommend the one the developer names, and say what ea
37
43
 
38
44
  Use exactly one matching internal route:
39
45
 
40
- 1. React SPA: `npx --prefer-offline --yes copilotkit@4.23.1 onboard read frontend/react-spa`
41
- 2. Next.js: `npx --prefer-offline --yes copilotkit@4.23.1 onboard read frontend/nextjs`
42
- 3. Angular: `npx --prefer-offline --yes copilotkit@4.23.1 onboard read frontend/angular`
43
- 4. Vue 3: `npx --prefer-offline --yes copilotkit@4.23.1 onboard read frontend/vue`
44
- 5. React Native: `npx --prefer-offline --yes copilotkit@4.23.1 onboard read frontend/react-native`
45
- 6. Slack or Microsoft Teams: `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/channels/start`
46
+ 1. React SPA: `npx --prefer-offline --yes copilotkit@4.25.0 onboard read frontend/react-spa`
47
+ 2. Next.js: `npx --prefer-offline --yes copilotkit@4.25.0 onboard read frontend/nextjs`
48
+ 3. Angular: `npx --prefer-offline --yes copilotkit@4.25.0 onboard read frontend/angular`
49
+ 4. Vue 3: `npx --prefer-offline --yes copilotkit@4.25.0 onboard read frontend/vue`
50
+ 5. React Native: `npx --prefer-offline --yes copilotkit@4.25.0 onboard read frontend/react-native`
51
+ 6. Slack or Microsoft Teams: `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/channels/start`
46
52
 
47
53
  If they chose Slack or Microsoft Teams, tell that node which one they chose so it
48
54
  does not ask again.
49
55
 
50
56
  If no listed frontend fits, run
51
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read unsupported/no-validated-path`.
57
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read unsupported/no-validated-path`.
@@ -2,6 +2,13 @@
2
2
 
3
3
  Preserve an existing React Native frontend. Use the selected page for a new frontend.
4
4
 
5
+ This step asks the developer nothing. If the run must wait for the developer anyway, report
6
+ the pause first:
7
+
8
+ ```text
9
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
10
+ ```
11
+
5
12
  React Native has no starter. For a target directory that holds no project, build the new
6
13
  frontend from the documentation below.
7
14
 
@@ -18,7 +25,7 @@ documents `useRenderTool`, which is React Native's own hook for drawing a tool t
18
25
  already has. That is a different job and needs a tool in the agent.
19
26
 
20
27
  If the pages support the selection, record React Native and these URLs. Then run
21
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read credentials/finalize-plan`.
28
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read credentials/finalize-plan`.
22
29
 
23
30
  If the documentation does not support the selection, run
24
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read unsupported/no-validated-path`.
31
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read unsupported/no-validated-path`.
@@ -2,6 +2,13 @@
2
2
 
3
3
  Preserve an existing React SPA. Use the selected page for a new frontend.
4
4
 
5
+ This step asks the developer nothing. If the run must wait for the developer anyway, report
6
+ the pause first:
7
+
8
+ ```text
9
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
10
+ ```
11
+
5
12
  React SPA has no starter. For a target directory that holds no project, build the new
6
13
  frontend from the documentation below.
7
14
 
@@ -14,7 +21,7 @@ not move the agent into it.
14
21
  - https://docs.copilotkit.ai/react-spa.md
15
22
 
16
23
  If the page supports the selection, record React SPA and this URL. Then run
17
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read credentials/finalize-plan`.
24
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read credentials/finalize-plan`.
18
25
 
19
26
  If the documentation does not support the selection, run
20
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read unsupported/no-validated-path`.
27
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read unsupported/no-validated-path`.
@@ -2,6 +2,13 @@
2
2
 
3
3
  Preserve an existing Vue 3 frontend. Use the selected page for a new frontend.
4
4
 
5
+ This step asks the developer nothing. If the run must wait for the developer anyway, report
6
+ the pause first:
7
+
8
+ ```text
9
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
10
+ ```
11
+
5
12
  Vue 3 has no starter. For a target directory that holds no project, build the new
6
13
  frontend from the documentation below.
7
14
 
@@ -19,7 +26,7 @@ page above. Vue has its own `useComponent`, which is not the React package. Take
19
26
  that reference page rather than from a Vue generative-UI guide, which is not published.
20
27
 
21
28
  If the pages support the selection, record Vue 3 and these URLs. Then run
22
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read credentials/finalize-plan`.
29
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read credentials/finalize-plan`.
23
30
 
24
31
  If the documentation does not support the selection, run
25
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read unsupported/no-validated-path`.
32
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read unsupported/no-validated-path`.
@@ -12,7 +12,7 @@ acted on. Send one short report before you stop. The friction command follows th
12
12
  setting the developer already chose, so it needs no separate question.
13
13
 
14
14
  ```text
15
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
15
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --phase stop --category <slug> --message "<sentences>"
16
16
  ```
17
17
 
18
18
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -49,6 +49,13 @@ spawn a fresh implementation subagent with the same handoff. Add that file to th
49
49
  as a path the developer approved, and record it as a departure. If you cannot ask, or the
50
50
  developer declines, the failure ending in the route-out rules below applies.
51
51
 
52
+ This prompt pauses for the developer in several places. Before you end your turn to wait
53
+ for the developer, report the pause:
54
+
55
+ ```text
56
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
57
+ ```
58
+
52
59
  The existing agent's behavior is never a departure to record and carry on from. It is four
53
60
  things: its system prompt and instructions, its tools and what those tools do, its model
54
61
  and provider configuration, and its memory or state handling. Repair a failing check on
@@ -60,6 +67,12 @@ change is a behavior change, and the closing report names it as one. Never call
60
67
  to the agent's instructions or tools a repair. If you cannot ask, or the developer
61
68
  declines, use the route-out rules below.
62
69
 
70
+ Before you end your turn to wait for the developer, report the pause:
71
+
72
+ ```text
73
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
74
+ ```
75
+
63
76
  ## Authorization requested by the plan
64
77
 
65
78
  Approving the plan is the developer agreeing to every path it listed under
@@ -67,7 +80,7 @@ Approving the plan is the developer agreeing to every path it listed under
67
80
  app directory:
68
81
 
69
82
  ```text
70
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
83
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
71
84
  ```
72
85
 
73
86
  Consent has to be on the record before the file moves, so a call made after the change is
@@ -75,8 +88,10 @@ refused. Continue only if every result starts with `Status: passed`. If the plan
75
88
  nothing there, skip this section.
76
89
 
77
90
  Do not authorize a path the plan lists under `Files the run writes itself`. The CLI refuses
78
- `--authorize` for `.env` and `.copilotkit/project.json`, because this run writes them. A
79
- copied model key is recorded with `--accept-credential`, after the copy.
91
+ `--authorize` for `.env` and `.copilotkit/project.json`, because this run writes them.
92
+ A copied model key is recorded by the command that copied it.
93
+ `onboard credentials --copy-to` protects the file it writes. Record a key that the run
94
+ copied another way with `--accept-credential`, after the copy.
80
95
 
81
96
  The implementation subagent cannot change a protected path unless it has the authorized
82
97
  list. Take that list from the CLI rather than from the plan: run `onboard audit` after the
@@ -99,7 +114,7 @@ No implementation step has run yet, so the change is theirs rather than this run
99
114
  consent over it by adding one flag:
100
115
 
101
116
  ```text
102
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>" --with-prior-change
117
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>" --with-prior-change
103
118
  ```
104
119
 
105
120
  The flag records their change as drift beside the consent, so the closing report names both
@@ -114,12 +129,18 @@ to record for a path that comes up later. If you find such a path mid-run, ask t
114
129
  developer and record their answer with `--authorize --unplanned`, as the protected-path
115
130
  audit below describes, rather than use this section.
116
131
 
132
+ Before you end your turn to wait for the developer, report the pause:
133
+
134
+ ```text
135
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
136
+ ```
137
+
117
138
  ## Protected-path audit
118
139
 
119
140
  Run the audit from the target app directory:
120
141
 
121
142
  ```text
122
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
143
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
123
144
  ```
124
145
 
125
146
  It compares every protected path with the digest the CLI captured for it. Its result starts
@@ -154,14 +175,14 @@ A path that no Files changed section names changed outside the run, and it is th
154
175
  developer's own file. Accept it by name:
155
176
 
156
177
  ```text
157
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
178
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-external --path <path>
158
179
  ```
159
180
 
160
181
  A changed env file is its own case. This run asked the developer to place a credential
161
182
  there, so it takes the credential route rather than this one:
162
183
 
163
184
  ```text
164
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-credential --path <path>
185
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-credential --path <path>
165
186
  ```
166
187
 
167
188
  That route proves no recorded credential was lost, instead of taking the run's word that it
@@ -177,10 +198,16 @@ The prohibition on repairing a protected path holds wherever the path comes up,
177
198
  here. A failing check is the usual way it comes up: the diagnosis lands on a file, and the
178
199
  file turns out to be protected. A correct diagnosis does not make the file this run's, and
179
200
  neither does a one-line fix. Never repair, reset, or revert it. Ask the developer to allow
180
- the change, and record the answer they give:
201
+ the change. Before you end your turn to wait for the developer, report the pause:
202
+
203
+ ```text
204
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
205
+ ```
206
+
207
+ Record the answer they give:
181
208
 
182
209
  ```text
183
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
210
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
184
211
  ```
185
212
 
186
213
  Use it only for an answer a developer actually gave. It records the consent as taken
@@ -215,7 +242,7 @@ directory. The developer approved the id before it was made, so this is the firs
215
242
  which it can be created:
216
243
 
217
244
  ```text
218
- npx --prefer-offline --yes copilotkit@4.23.1 learning containers create --id <id> --name <name> --json
245
+ npx --prefer-offline --yes copilotkit@4.25.0 learning containers create --id <id> --name <name> --json
219
246
  ```
220
247
 
221
248
  Pass the id the plan names. Take the name from the selected project's own display name, so
@@ -232,16 +259,17 @@ plan names no container, skip this section.
232
259
  ## Implement the plan
233
260
 
234
261
  Spawn one implementation subagent. Tell it to run
235
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read subagent/implement-and-validate` first and follow
236
- the prompt it returns. If that read fails because the subagent cannot use the shell, stop that
237
- subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
238
- and the same handoff. Give it the plan, selected framework, frontend, model, exact target app
239
- directory, selected documentation URLs, and the
262
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read subagent/implement-and-validate` first and
263
+ follow the prompt it returns. Tell it to return at once, and say so, if that read is refused
264
+ or fails, and not to wait for an approval. If it returns that way, stop that subagent. Run
265
+ the same command yourself, then spawn a fresh subagent with the returned prompt and the same
266
+ handoff. Give it the plan, selected framework, frontend, model, exact target app directory,
267
+ selected documentation URLs, and the
240
268
  documentation policy recorded during framework selection or conversion planning. On a
241
269
  conversion, also give it the frozen criterion. Give it the protected path list and the
242
270
  authorized list. Give it the developer's answer on the Skills install, so that it runs an
243
- approved install and skips a declined one. Require it
244
- to implement every step in plan order and run the full validation list. Wait for it.
271
+ approved install and skips a declined one. Require it to implement every step in plan order
272
+ and run the full validation list. Wait for it.
245
273
 
246
274
  One subagent implements the whole plan. Do not divide the work across concurrent subagents,
247
275
  and do not spawn a second subagent to reconcile a split.
@@ -260,7 +288,7 @@ names the same way as above, against the Files changed section that subagent jus
260
288
  returned. Continue to proof only when that audit passes.
261
289
 
262
290
  Then run
263
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read proof/round-trip`.
291
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read proof/round-trip`.
264
292
 
265
293
  ## Repair rules
266
294
 
@@ -286,9 +314,9 @@ the same command still fails after three repair attempts, a result starts with
286
314
  declined a file the plan does not name, or the run cannot ask them about it. A defect in a
287
315
  package this run installed is not a stack CopilotKit does not serve, a command this run cannot get to pass is not one either, and a blocked audit
288
316
  proved nothing about the stack. In those cases run
289
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read stopped/run-failed`.
317
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read stopped/run-failed`.
290
318
 
291
319
  A plan with no path to follow takes the unsupported ending: the fix requires changing the
292
320
  developer's existing agent or frontend, or the documentation does not support the plan. In
293
321
  those cases run
294
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read unsupported/no-validated-path`.
322
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read unsupported/no-validated-path`.
@@ -24,7 +24,7 @@ friction commands follow the telemetry setting the developer already chose, so t
24
24
  separate question.
25
25
 
26
26
  ```text
27
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
27
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
28
28
  ```
29
29
 
30
30
  Put one or two sentences in `--message`. Pick one category from docs-missing, docs-wrong,
@@ -46,7 +46,7 @@ Pass the surface-check outcome the proof subagent returned, not the one you want
46
46
  web frontend, pass `--visual-check` and the URL the browser opened, unchanged:
47
47
 
48
48
  ```text
49
- npx --prefer-offline --yes copilotkit@4.23.1 onboard complete --visual-check <outcome> \
49
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard complete --visual-check <outcome> \
50
50
  --frontend-url <the url you opened>
51
51
  ```
52
52
 
@@ -74,7 +74,7 @@ this graph opens.
74
74
  nothing drove the frontend:
75
75
 
76
76
  ```text
77
- npx --prefer-offline --yes copilotkit@4.23.1 onboard complete --visual-check failed --blocked-by browser-control-unresponsive
77
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard complete --visual-check failed --blocked-by browser-control-unresponsive
78
78
  ```
79
79
 
80
80
  ## Write the handoff
@@ -1,10 +1,11 @@
1
1
  # Prove the existing OSS baseline
2
2
 
3
3
  Do not prove the baseline yourself. Spawn one proof subagent. Tell it to run
4
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read subagent/prove-oss-baseline` first and follow the
5
- prompt it returns. If that read fails because the subagent cannot use the shell, stop that
6
- subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
7
- and the same handoff. Give it the repository findings and exact CLI package spec.
4
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read subagent/prove-oss-baseline` first and follow
5
+ the prompt it returns. Tell it to return at once, and say so, if that read is refused or
6
+ fails, and not to wait for an approval. If it returns that way, stop that subagent. Run the
7
+ same command yourself, then spawn a fresh subagent with the returned prompt and the same
8
+ handoff. Give it the repository findings and exact CLI package spec.
8
9
 
9
10
  Give it the browser or device control you recorded in the preflight as well. The subagent
10
11
  proves the runtime from a shell and needs no browser for that. The control is for the one
@@ -17,7 +18,7 @@ Wait for the subagent to finish.
17
18
  Record what that proof returned before you route on it:
18
19
 
19
20
  ```text
20
- npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
21
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
21
22
  ```
22
23
 
23
24
  Report the gate whatever it returned. Use the list below. A proof that never ran is `skipped`, not failed. The command prints one line and sends
@@ -39,14 +40,27 @@ Do not change project files before this proof ends. Starting existing developmen
39
40
  processes and their ignored runtime files is allowed.
40
41
 
41
42
  If the subagent proves the `both-oss` predicate, keep its evidence with the plan and run
42
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read conversion/plan`. That project already works.
43
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read conversion/plan`. That project already works.
43
44
  What it needs is the conversion, not a build.
44
45
 
45
- If the proof does not establish the baseline, record the starting state
46
+ A failed baseline does not end the run, and this step does not repair it. Decide which
47
+ kind of failure it is before you route, the way `proof/round-trip` does.
48
+
49
+ An operational failure says nothing about the project: a project-owned process or port, a
50
+ request option, or a sandbox that blocked a local request. Spawn a fresh proof subagent
51
+ with the same handoff and the failure evidence, and record each attempt as it ends. Run
52
+ the proof at most three times in total. Never edit a project file to make the baseline
53
+ pass. This proof only reads.
54
+
55
+ A failed baseline whose cause is in the project is the starting state of this project. So
56
+ is an operational failure still there after the third attempt. Record the starting state
46
57
  `both-copilotkit-unproved` and run
47
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read credentials/plan`. This prompt is served
58
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read credentials/plan`. This prompt is served
48
59
  whenever a project looks like an OSS integration, so a baseline that did not prove is an
49
- ordinary starting state rather than a failure. Keep the failing predicate with the plan.
60
+ ordinary starting state rather than a failure. The build that follows fixes the
61
+ integration, and `proof/round-trip` proves the result, with its own bounded repair cycle.
62
+ Keep the failing predicate and the check the subagent named with the plan, and tell the
63
+ developer that the existing integration did not prove before you ask for plan approval.
50
64
 
51
65
  Do not record a state that says the CopilotKit integration is absent. This prompt is
52
66
  reached only when the merged findings prove that the integration is there, so `both` is
@@ -56,7 +70,10 @@ Where the proof fails predicate 3, the live runtime already holds an Intelligenc
56
70
  client. Say so in the plan. Part of the work this run exists for is in place already,
57
71
  and the plan preserves it rather than repeating it.
58
72
 
59
- If it cannot identify the running process safely, exposes a secret, or finds a baseline
60
- failure that cannot be classified, run
61
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read stopped/run-failed`. None of those mean the
62
- project is unsupported: they mean this run did not establish what it needed to.
73
+ If you cannot tell whether the cause is operational or in the project, treat it as
74
+ operational. Run the proof again, three times in total, then record the starting state
75
+ above and go on. Both causes lead to the same plan.
76
+
77
+ If the proof cannot identify the running process safely, or it exposes a secret, run
78
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read stopped/run-failed`. Neither means the
79
+ project is unsupported: each means this run did not establish what it needed to.
@@ -1,14 +1,15 @@
1
1
  # Prove the user journey
2
2
 
3
3
  Do not do the proof work yourself. Spawn one proof subagent. Tell it to run
4
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read subagent/prove-round-trip` first and follow the
5
- prompt it returns. If that read fails because the subagent cannot use the shell, stop that
6
- subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
7
- and the same handoff. Give it the selected framework, frontend, model, approved plan, selected
8
- documentation URLs, and validation evidence. Give it the documentation policy recorded during
9
- framework selection or conversion planning. On a conversion, also give it the frozen
10
- criterion. Give it the protected path list. Give it the developer's answer on the Skills
11
- install and the Skills result the implementation returned.
4
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read subagent/prove-round-trip` first and follow the
5
+ prompt it returns. Tell it to return at once, and say so, if that read is refused or fails,
6
+ and not to wait for an approval. If it returns that way, stop that subagent. Run the same
7
+ command yourself, then spawn a fresh subagent with the returned prompt and the same handoff.
8
+ Give it the selected framework, frontend, model, approved plan, selected documentation URLs,
9
+ and validation evidence. Give it the documentation policy recorded during framework
10
+ selection or conversion planning. On a conversion, also give it the frozen criterion. Give
11
+ it the protected path list. Give it the developer's answer on the Skills install and the
12
+ Skills result the implementation returned.
12
13
 
13
14
  Give it the frontend files that publish the page context and register the tools, by path,
14
15
  from the Files changed sections the implementation returned. The subagent sends what those
@@ -40,7 +41,7 @@ pass the time.
40
41
  Record what that proof returned before you route on it:
41
42
 
42
43
  ```text
43
- npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
44
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
44
45
  ```
45
46
 
46
47
  Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. A
@@ -49,7 +50,7 @@ to record it as `skipped`. The command prints one line and sends nothing else. W
49
50
  record each attempt as it ends.
50
51
 
51
52
  For every protected-path audit in this prompt, run
52
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit` from the target app directory. If its result
53
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard audit` from the target app directory. If its result
53
54
  starts with `Status: blocked`, report the printed reason and use the route-out rules below.
54
55
  A blocked audit proved nothing changed and is not a preservation failure. If a
55
56
  protected-path audit reports a changed path, decide it the way the implementation prompt
@@ -58,7 +59,7 @@ returns none, so a finding with no Files changed section to test against routes
58
59
  path one of those sections names is this run's own change and routes out too. Accept a
59
60
  path only when a section this run collected covers the step that wrote it and does not
60
61
  name it:
61
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>`. Then run
62
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-external --path <path>`. Then run
62
63
  the audit again and name the path in the closing summary. Never repair, reset, or revert a
63
64
  protected path.
64
65
 
@@ -66,12 +67,19 @@ That holds for a repair cycle too. When the fix for a failing check lands on a p
66
67
  path, the path is still the developer's, however right the diagnosis is and however small
67
68
  the fix. Reading the file never settles who wrote it. Ask the developer to allow the
68
69
  change, and record their answer with
69
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
70
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
70
71
  or route out. Never repair it, and never send it to a repair worker.
71
72
 
73
+ This prompt pauses for the developer in several places. Before you end your turn to wait
74
+ for the developer, report the pause:
75
+
76
+ ```text
77
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
78
+ ```
79
+
72
80
  If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
73
81
  `proof/complete` only if that audit passes. After the audit passes, run
74
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read proof/complete`. A performed surface outcome with
82
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read proof/complete`. A performed surface outcome with
75
83
  the full round trip is core success even if a continued-development tool fails. A skipped
76
84
  surface outcome still enters `proof/complete`. The CLI records `skipped-cloned-starter` and
77
85
  `skipped-no-browser-tool` after a passed round trip as complete, and `skipped-no-device` as
@@ -93,6 +101,15 @@ not for a journey that worked and then hit a wall: routing a proved run there te
93
101
  developer that a framework and frontend that just worked are unsupported, and hands them a
94
102
  stop report instead of the application they now have.
95
103
 
104
+ If the proof returns a `model-key` failure, it is not a defect in the new work. The
105
+ credentials step found the model key missing, or the vendor refused it, and the proof
106
+ started nothing. Do not send it to a repair worker. Run the `onboard credentials` command
107
+ that its detail names, and act on its answer as `credentials/settle-credentials` says. Ask
108
+ the developer its question, report the pause with
109
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-model-credential`, and
110
+ end your turn. When the key settles, run the proof subagent again. This attempt does not
111
+ count toward the three.
112
+
96
113
  If the round trip fails, decide which kind of failure it is before you route. The proof
97
114
  subagent can repair only project-owned processes, ports, and request options, and it can
98
115
  run the credential command that `verify:api_key_loadable_by_app` names. A failure caused
@@ -103,7 +120,21 @@ Retry the proof subagent only for a project-owned process, port, request-option,
103
120
  Give it the failure evidence and the failed attempt's pinned Step 1 record. Wait for the
104
121
  proof subagent after each operational repair.
105
122
  If the result passes, use the passed-result route above. Run the proof at most three times
106
- in total. Use the route-out rules below for a blocked or third failed result.
123
+ in total. Use the route-out rules below for a third failed result, and for a blocked result
124
+ other than the one in the next paragraph.
125
+
126
+ A proof result can start with `Status: blocked` on `round-trip:agent_answers`: the app
127
+ refused the run the check started, because it reads a session or runs only threads it
128
+ created, and the subagent cannot send a message in the app itself. The app is not at
129
+ fault, so this is not a route-out. Ask the developer to send one message in the app on a new
130
+ thread, and to give you that thread's id. Give them the app URL and the request words from
131
+ the result. Tell them where the id is: in the browser's network tools, the request the page
132
+ sends to the runtime URL carries `threadId` in its body. Report the pause with
133
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer` and end your
134
+ turn. When the developer gives the id, start a new proof subagent with
135
+ the full original proof handoff, the pinned Step 1 record, and the thread id. Tell it to run
136
+ the proof checks with `--thread <id>`. This attempt does not count toward the three. Use the
137
+ route-out rules below only when the developer declines or cannot give an id.
107
138
 
108
139
  Enter the code-repair branch only for a source, configuration, dependency, or tracked-file
109
140
  defect.
@@ -148,6 +179,12 @@ first. Then spawn a fresh repair worker with this repair handoff, not the whole-
148
179
  implementation handoff: the plan, the proof evidence, the protected path list, the
149
180
  authorized list from that audit, and the developer's answer on the Skills install.
150
181
 
182
+ Before you end your turn to wait for the developer, report the pause:
183
+
184
+ ```text
185
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
186
+ ```
187
+
151
188
  Run the protected-path audit again after validation passes. Continue only if its result
152
189
  starts with `Status: passed`.
153
190
 
@@ -162,11 +199,12 @@ Wait for the fresh proof subagent to finish.
162
199
  If the fresh proof result starts with `Status: passed`, run the protected-path audit and use
163
200
  the passed-result route above. If it starts with `Status: failed`, begin the next bounded
164
201
  repair cycle. Use the route-out rules below for `Status: blocked`. After three repair and
165
- proof cycles, use the route-out rules below.
202
+ proof cycles, use the route-out rules below. A blocked result that asks for a thread id
203
+ takes the developer path above instead.
166
204
 
167
205
  Route out only when the failure is not yours to fix, when the same proof still fails after
168
206
  three attempts, or when no evidence of the round trip can be produced. In those cases run
169
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read stopped/run-failed`. The stack is supported:
207
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read stopped/run-failed`. The stack is supported:
170
208
  this run did not finish, which is a different ending and a different report. All three are
171
209
  about the round trip itself. A round trip that proved is not one of them, whatever failed
172
210
  after it.
@@ -177,7 +215,7 @@ friction command follows the telemetry setting the developer already chose, so i
177
215
  separate question.
178
216
 
179
217
  ```text
180
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
218
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --phase stop --category <slug> --message "<sentences>"
181
219
  ```
182
220
 
183
221
  `--message` takes one or two sentences: the step you stopped at and what stopped it.