copilotkit 4.10.1 → 4.12.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 (80) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +153 -17
  3. package/cli-build-info.json +8 -8
  4. package/index.js +5104 -4673
  5. package/onboarding/index.json +9 -2
  6. package/onboarding/prompts/authenticate/start.md +35 -19
  7. package/onboarding/prompts/conversion/plan.md +3 -3
  8. package/onboarding/prompts/credentials/finalize-plan.md +37 -27
  9. package/onboarding/prompts/credentials/plan.md +20 -20
  10. package/onboarding/prompts/credentials/settle-credentials.md +57 -25
  11. package/onboarding/prompts/credentials/write-plan.md +7 -7
  12. package/onboarding/prompts/fallback/best-effort.md +9 -8
  13. package/onboarding/prompts/feature/a2ui/implement.md +7 -7
  14. package/onboarding/prompts/feature/a2ui/proof.md +6 -6
  15. package/onboarding/prompts/feature/a2ui/start.md +10 -8
  16. package/onboarding/prompts/feature/blocked-by-plan.md +32 -0
  17. package/onboarding/prompts/feature/channels/implement.md +9 -9
  18. package/onboarding/prompts/feature/channels/proof.md +6 -6
  19. package/onboarding/prompts/feature/channels/start.md +20 -15
  20. package/onboarding/prompts/feature/chat-suggestions/implement.md +7 -7
  21. package/onboarding/prompts/feature/chat-suggestions/proof.md +6 -6
  22. package/onboarding/prompts/feature/chat-suggestions/start.md +10 -8
  23. package/onboarding/prompts/feature/complete.md +1 -1
  24. package/onboarding/prompts/feature/learning/implement.md +73 -14
  25. package/onboarding/prompts/feature/learning/proof.md +10 -9
  26. package/onboarding/prompts/feature/learning/start.md +61 -7
  27. package/onboarding/prompts/feature/open-generative-ui/implement.md +7 -7
  28. package/onboarding/prompts/feature/open-generative-ui/proof.md +6 -6
  29. package/onboarding/prompts/feature/open-generative-ui/start.md +10 -8
  30. package/onboarding/prompts/feature/realtime-sync/implement.md +8 -8
  31. package/onboarding/prompts/feature/realtime-sync/proof.md +6 -6
  32. package/onboarding/prompts/feature/realtime-sync/start.md +9 -7
  33. package/onboarding/prompts/feature/rich-threads/implement.md +9 -9
  34. package/onboarding/prompts/feature/rich-threads/proof.md +6 -6
  35. package/onboarding/prompts/feature/rich-threads/start.md +9 -7
  36. package/onboarding/prompts/feature/stop.md +6 -6
  37. package/onboarding/prompts/feature/voice/implement.md +7 -7
  38. package/onboarding/prompts/feature/voice/proof.md +6 -6
  39. package/onboarding/prompts/feature/voice/start.md +10 -8
  40. package/onboarding/prompts/framework/ag2.md +2 -2
  41. package/onboarding/prompts/framework/agno.md +2 -2
  42. package/onboarding/prompts/framework/built-in.md +2 -2
  43. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  44. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  45. package/onboarding/prompts/framework/crewai-flows.md +2 -2
  46. package/onboarding/prompts/framework/deep-agents.md +2 -2
  47. package/onboarding/prompts/framework/google-adk.md +2 -2
  48. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  49. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  50. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  51. package/onboarding/prompts/framework/llamaindex.md +2 -2
  52. package/onboarding/prompts/framework/mastra.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-dotnet.md +2 -2
  54. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  55. package/onboarding/prompts/framework/ms-agent-python.md +2 -2
  56. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  57. package/onboarding/prompts/framework/strands-python.md +2 -2
  58. package/onboarding/prompts/framework/strands-typescript.md +2 -2
  59. package/onboarding/prompts/frontend/angular.md +5 -5
  60. package/onboarding/prompts/frontend/nextjs.md +4 -4
  61. package/onboarding/prompts/frontend/plan.md +17 -12
  62. package/onboarding/prompts/frontend/react-native.md +2 -2
  63. package/onboarding/prompts/frontend/react-spa.md +2 -2
  64. package/onboarding/prompts/frontend/vue.md +2 -2
  65. package/onboarding/prompts/implementation/build-and-validate.md +35 -18
  66. package/onboarding/prompts/proof/complete.md +26 -17
  67. package/onboarding/prompts/proof/oss-baseline.md +5 -5
  68. package/onboarding/prompts/proof/round-trip.md +16 -15
  69. package/onboarding/prompts/research/gather.md +55 -9
  70. package/onboarding/prompts/research/route.md +30 -10
  71. package/onboarding/prompts/starter/clone.md +6 -6
  72. package/onboarding/prompts/stopped/run-failed.md +32 -3
  73. package/onboarding/prompts/subagent/create-plan.md +7 -1
  74. package/onboarding/prompts/subagent/implement-and-validate.md +2 -1
  75. package/onboarding/prompts/subagent/inspect-repository.md +43 -16
  76. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  77. package/onboarding/prompts/subagent/prove-round-trip.md +52 -18
  78. package/onboarding/prompts/unsupported/no-validated-path.md +4 -4
  79. package/package.json +4 -3
  80. package/release/release-tool.js +1 -1
@@ -9,26 +9,31 @@ the alternatives short. When the frontend is unknown, use this rule: Ask one fro
9
9
  question that lists the recommendation and valid choices. Do not ask a yes-or-no question
10
10
  first. Do not ask about the model or project in this step.
11
11
 
12
+ If the developer already named Slack or Microsoft Teams, use that choice.
13
+ If the copied prompt came from a Slack or Teams docs page, use that page as the named frontend.
14
+
12
15
  If the project has a frontend, preserve it and use the matching route below. If the project
13
16
  needs a frontend, show the valid choices and one recommendation based on repository
14
17
  evidence, then ask the developer to choose.
15
18
 
16
- The valid choices are React SPA, Next.js, Angular, Vue 3, and React Native. They are valid
17
- in every starting state. Do not show the internal route.
19
+ The valid choices are React SPA, Next.js, Angular, Vue 3, React Native, Slack, and
20
+ Microsoft Teams. They are valid in every starting state. Do not show the internal route.
18
21
 
19
22
  Recommend the frontend the project already uses. Where there is no existing frontend,
20
- recommend the one the developer names, and say what each choice implies for where the
21
- CopilotKit runtime lives: Next.js hosts it in a route handler, Angular in its SSR
22
- server, and Vue 3, React SPA and React Native reach a runtime that runs as its own
23
- process.
23
+ include Slack and Microsoft Teams in the frontend question. They are chat UIs, not
24
+ CopilotKit web apps. Then recommend the one the developer names, and say what each choice implies for where the CopilotKit runtime lives: Next.js hosts it in a route handler, Angular in its SSR server, and Vue 3, React SPA and React Native reach a runtime that runs as its own process. Slack and Microsoft Teams use a long-running Channel host, not a CopilotKit web app.
24
25
 
25
26
  Use exactly one matching internal route:
26
27
 
27
- 1. React SPA: `npx --yes copilotkit@4.10.1 onboard read frontend/react-spa`
28
- 2. Next.js: `npx --yes copilotkit@4.10.1 onboard read frontend/nextjs`
29
- 3. Angular: `npx --yes copilotkit@4.10.1 onboard read frontend/angular`
30
- 4. Vue 3: `npx --yes copilotkit@4.10.1 onboard read frontend/vue`
31
- 5. React Native: `npx --yes copilotkit@4.10.1 onboard read frontend/react-native`
28
+ 1. React SPA: `npx --yes copilotkit@4.12.0 onboard read frontend/react-spa`
29
+ 2. Next.js: `npx --yes copilotkit@4.12.0 onboard read frontend/nextjs`
30
+ 3. Angular: `npx --yes copilotkit@4.12.0 onboard read frontend/angular`
31
+ 4. Vue 3: `npx --yes copilotkit@4.12.0 onboard read frontend/vue`
32
+ 5. React Native: `npx --yes copilotkit@4.12.0 onboard read frontend/react-native`
33
+ 6. Slack or Microsoft Teams: `npx --yes copilotkit@4.12.0 onboard read feature/channels/start`
34
+
35
+ If they chose Slack or Microsoft Teams, tell that node which one they chose so it
36
+ does not ask again.
32
37
 
33
38
  If no listed frontend fits, run
34
- `npx --yes copilotkit@4.10.1 onboard read unsupported/no-validated-path`.
39
+ `npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
@@ -15,7 +15,7 @@ documents `useRenderTool`, which is React Native's own hook for drawing a tool t
15
15
  already has. That is a different job and needs a tool in the agent.
16
16
 
17
17
  If the pages support the selection, record React Native and these URLs. Then run
18
- `npx --yes copilotkit@4.10.1 onboard read credentials/finalize-plan`.
18
+ `npx --yes copilotkit@4.12.0 onboard read credentials/finalize-plan`.
19
19
 
20
20
  If the documentation does not support the selection, run
21
- `npx --yes copilotkit@4.10.1 onboard read unsupported/no-validated-path`.
21
+ `npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
@@ -11,7 +11,7 @@ not move the agent into it.
11
11
  - https://docs.copilotkit.ai/react-spa.md
12
12
 
13
13
  If the page supports the selection, record React SPA and this URL. Then run
14
- `npx --yes copilotkit@4.10.1 onboard read credentials/finalize-plan`.
14
+ `npx --yes copilotkit@4.12.0 onboard read credentials/finalize-plan`.
15
15
 
16
16
  If the documentation does not support the selection, run
17
- `npx --yes copilotkit@4.10.1 onboard read unsupported/no-validated-path`.
17
+ `npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
@@ -16,7 +16,7 @@ page above. Vue has its own `useComponent`, which is not the React package. Take
16
16
  that reference page rather than from a Vue generative-UI guide, which is not published.
17
17
 
18
18
  If the pages support the selection, record Vue 3 and these URLs. Then run
19
- `npx --yes copilotkit@4.10.1 onboard read credentials/finalize-plan`.
19
+ `npx --yes copilotkit@4.12.0 onboard read credentials/finalize-plan`.
20
20
 
21
21
  If the documentation does not support the selection, run
22
- `npx --yes copilotkit@4.10.1 onboard read unsupported/no-validated-path`.
22
+ `npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
@@ -7,11 +7,12 @@ Do not implement the plan yourself. Use the step order in the approved plan.
7
7
  One rule below stops onboarding: a Learning Container create that fails for a reason other
8
8
  than the container already existing. It ends a run the developer has already approved a
9
9
  plan for. Name the exact command, id, and error code that stopped you: a report that names
10
- only the step cannot be acted on. Send one short report before you stop. Run the friction command without another developer question. The CLI telemetry gate decides whether the
11
- report is sent.
10
+ only the step cannot be acted on. Send one short report before you stop. Run the friction
11
+ command without another developer question. Do not ask the developer about telemetry: the
12
+ command applies the setting they already have.
12
13
 
13
14
  ```text
14
- npx --yes copilotkit@4.10.1 onboard friction --phase stop --category <slug>
15
+ npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
15
16
  ```
16
17
 
17
18
  Write one or two sentences to standard input: the step you stopped at and what stopped it.
@@ -24,6 +25,17 @@ carries any of those, prints the reason, and exits zero. A refused report is not
24
25
  step. Send the report, then stop. Reporting is not a route change and does not resume the
25
26
  run.
26
27
 
28
+ ## Departing from the approved plan
29
+
30
+ The developer approved a written plan and was told that approval was the last thing this
31
+ run needed from them. A step that cannot be built as written is therefore a change to the
32
+ only thing they agreed to.
33
+
34
+ Where you depart from a path, a version, or a step the plan named, record it: what the
35
+ plan said, what you did instead, and why. Carry that record into the closing summary,
36
+ which has an item for it. Do not stop for a departure that is the right call, and do not
37
+ leave it unrecorded either.
38
+
27
39
  ## Authorization requested by the plan
28
40
 
29
41
  Approving the plan is the developer agreeing to every path it listed under
@@ -31,19 +43,24 @@ Approving the plan is the developer agreeing to every path it listed under
31
43
  app directory:
32
44
 
33
45
  ```text
34
- npx --yes copilotkit@4.10.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
46
+ npx --yes copilotkit@4.12.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
35
47
  ```
36
48
 
37
49
  Consent has to be on the record before the file moves, so a call made after the change is
38
50
  refused. Continue only if every result starts with `Status: passed`. If the plan listed
39
51
  nothing there, skip this section.
40
52
 
53
+ What you record here covers changing the file. It does not cover removing it. Never delete,
54
+ move, or rename a protected path, whatever the plan says: the audit fails a path that is
55
+ gone even when consent was recorded for it, and no command clears that. If a step cannot
56
+ proceed without removing one, route out and report the path.
57
+
41
58
  If a path the plan listed has already changed, the developer changed it after the capture.
42
59
  No implementation step has run yet, so the change is theirs rather than this run's. Record
43
60
  consent over it by adding one flag:
44
61
 
45
62
  ```text
46
- npx --yes copilotkit@4.10.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>" --with-prior-change
63
+ npx --yes copilotkit@4.12.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>" --with-prior-change
47
64
  ```
48
65
 
49
66
  The flag records their change as drift beside the consent, so the closing report names both
@@ -62,7 +79,7 @@ rather than this section.
62
79
  Run the audit from the target app directory:
63
80
 
64
81
  ```text
65
- npx --yes copilotkit@4.10.1 onboard audit
82
+ npx --yes copilotkit@4.12.0 onboard audit
66
83
  ```
67
84
 
68
85
  It compares every protected path with the digest the CLI captured for it. Its result starts
@@ -75,7 +92,7 @@ answers the same.
75
92
 
76
93
  Decide each path the audit names, one at a time.
77
94
 
78
- A path the audit lists under `Authorized to change:` is not a finding. The developer approved
95
+ A path the audit lists under `Authorized to modify:` is not a finding. The developer approved
79
96
  it, the record says why, and the audit reports it rather than failing on it. Carry it into the
80
97
  summary with its reason. Nothing else is needed for it.
81
98
 
@@ -97,14 +114,14 @@ A path that no Files changed section names changed outside the run, and it is th
97
114
  developer's own file. Accept it by name:
98
115
 
99
116
  ```text
100
- npx --yes copilotkit@4.10.1 onboard protect --accept-external --path <path>
117
+ npx --yes copilotkit@4.12.0 onboard protect --accept-external --path <path>
101
118
  ```
102
119
 
103
120
  A changed env file is its own case. This run asked the developer to place a credential
104
121
  there, so it takes the credential route rather than this one:
105
122
 
106
123
  ```text
107
- npx --yes copilotkit@4.10.1 onboard protect --accept-credential --path <path>
124
+ npx --yes copilotkit@4.12.0 onboard protect --accept-credential --path <path>
108
125
  ```
109
126
 
110
127
  That route proves no recorded credential was lost, instead of taking the run's word that it
@@ -123,7 +140,7 @@ neither does a one-line fix. Never repair, reset, or revert it. Ask the develope
123
140
  the change, and record the answer they give:
124
141
 
125
142
  ```text
126
- npx --yes copilotkit@4.10.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
143
+ npx --yes copilotkit@4.12.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
127
144
  ```
128
145
 
129
146
  Use it only for an answer a developer actually gave. It records the consent as taken
@@ -144,7 +161,7 @@ create it now, from the target app directory. The developer approved the id befo
144
161
  made, so this is the first point at which it can be created:
145
162
 
146
163
  ```text
147
- npx --yes copilotkit@4.10.1 learning containers create --id <id> --name <name> --json
164
+ npx --yes copilotkit@4.12.0 learning containers create --id <id> --name <name> --json
148
165
  ```
149
166
 
150
167
  Pass the id the plan names. Take the name from the selected project's own display name, so
@@ -160,7 +177,7 @@ hold.
160
177
  Then report that the container is settled, before any edit:
161
178
 
162
179
  ```text
163
- npx --yes copilotkit@4.10.1 onboard checkpoint --phase container-settled
180
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase container-settled
164
181
  ```
165
182
 
166
183
  Where the plan names a container the platform already held, report the same checkpoint and
@@ -169,11 +186,11 @@ create nothing. Where the plan names no container, skip this section.
169
186
  Report the plan this run is about to implement:
170
187
 
171
188
  ```text
172
- npx --yes copilotkit@4.10.1 onboard checkpoint --phase plan-written
189
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase plan-written
173
190
  ```
174
191
 
175
192
  Spawn one implementation subagent. Tell it to run
176
- `npx --yes copilotkit@4.10.1 onboard read subagent/implement-and-validate` first and follow
193
+ `npx --yes copilotkit@4.12.0 onboard read subagent/implement-and-validate` first and follow
177
194
  the prompt it returns. If that read fails because the subagent cannot use the shell, stop that
178
195
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
179
196
  and the same handoff. Give it the plan, selected framework, frontend, model, exact target app
@@ -193,11 +210,11 @@ returned. Continue to proof only when that audit passes.
193
210
  After the selected implementation path passes, report it:
194
211
 
195
212
  ```text
196
- npx --yes copilotkit@4.10.1 onboard checkpoint --phase build-validated
213
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase build-validated
197
214
  ```
198
215
 
199
216
  Then run
200
- `npx --yes copilotkit@4.10.1 onboard read proof/round-trip`.
217
+ `npx --yes copilotkit@4.12.0 onboard read proof/round-trip`.
201
218
 
202
219
  ## Repair rules
203
220
 
@@ -219,9 +236,9 @@ the same command still fails after three repair attempts, or a result starts wit
219
236
  `Status: blocked`. A defect in a package this run installed is not a stack CopilotKit does
220
237
  not serve, a command this run cannot get to pass is not one either, and a blocked audit
221
238
  proved nothing about the stack. In those cases run
222
- `npx --yes copilotkit@4.10.1 onboard read stopped/run-failed`.
239
+ `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`.
223
240
 
224
241
  A plan with no path to follow takes the unsupported ending: the fix requires changing the
225
242
  developer's existing agent or frontend, or the documentation does not support the plan. In
226
243
  those cases run
227
- `npx --yes copilotkit@4.10.1 onboard read unsupported/no-validated-path`.
244
+ `npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
@@ -37,11 +37,15 @@ The handoff must include:
37
37
  - The URL of the running app.
38
38
  - The command that starts the app in the future.
39
39
  - The debugging surface this journey's frontend can reach, named below.
40
- - How to use https://intelligence.copilotkit.ai to manage the Intelligence
40
+ - How to use https://intelligence.copilotkit.ai to manage the CopilotKit Intelligence
41
41
  installation. Do not open it. This item makes the developer aware the dashboard is
42
42
  there, and it is a sentence to write rather than a check to perform. Nothing in this
43
43
  graph gates on the dashboard, so a dashboard this run never opened is not a finding,
44
44
  not a caveat, and not a blocker.
45
+ - What changed since the developer approved the plan. Name every path, version, or step
46
+ the run departed from, and why. A deviation can be the right call and still has to
47
+ reach the person who approved the thing it departed from. Where nothing departed, say
48
+ that in one line rather than leaving the item out.
45
49
  - The process IDs and stop commands for the running agent and frontend.
46
50
  - The `@copilotkit/*` versions this conversion changed, and what they were before.
47
51
  - On a conversion, the criterion this run was judged against, in the words the run was
@@ -66,17 +70,19 @@ Name the debugging surface this journey's frontend can reach, rather than the on
66
70
  of the documentation leads with. For a web frontend it is the CopilotKit Inspector. For
67
71
  React Native there is no Inspector: it is a browser overlay built on a DOM custom element,
68
72
  and `@copilotkit/react-native` does not ship it. Give a mobile developer
69
- `npx --yes copilotkit@4.10.1 verify --round-trip`, the runtime's own log, the AG-UI
70
- Event Inspector in the CopilotKit VS Code extension, and the Intelligence thread view
73
+ `npx --yes copilotkit@4.12.0 verify --round-trip`, the runtime's own log, the AG-UI
74
+ Event Inspector in the CopilotKit VS Code extension, and the CopilotKit Intelligence
75
+ thread view
71
76
  instead. Naming the Inspector to a developer who cannot open it costs them the time it
72
77
  takes to conclude their own wiring is broken.
73
78
 
74
79
  Where this run settled a Learning Container, tell the developer what happens next, because
75
80
  a correct run looks like a broken one otherwise. Learning runs on its own: the first
76
81
  automatic run needs new threads from 15 distinct conversations in this container, and only
77
- the newest snapshot of each thread counts. A thread takes its container before its first
78
- agent run, so threads that ran before this change are never pulled in. The container starts
79
- empty on purpose.
82
+ the newest snapshot of each thread counts. Existing threads can receive their first
83
+ container assignment after prior runs. Their surviving earlier history becomes eligible
84
+ for collection and counts toward the same threshold. Creating a container does not enroll
85
+ existing threads automatically.
80
86
 
81
87
  Where the Learning step was skipped because this organization cannot use Learning, say so in
82
88
  one line and name what was not created. A skip nobody names reads as a container that
@@ -85,11 +91,11 @@ exists, and the developer then waits for insights from a container this run neve
85
91
  State that the servers remain running after proof.
86
92
 
87
93
  Report each thing that slowed this run down. Send at most four reports, worst first. Run
88
- the friction commands without another developer question. The CLI telemetry gate decides
89
- whether the report is sent.
94
+ the friction commands without another developer question. Do not ask the developer about
95
+ telemetry: the command applies the setting they already have.
90
96
 
91
97
  ```text
92
- npx --yes copilotkit@4.10.1 onboard friction --category <slug> --cost-seconds <seconds>
98
+ npx --yes copilotkit@4.12.0 onboard friction --category <slug> --cost-seconds <seconds>
93
99
  ```
94
100
 
95
101
  Write one or two sentences on the command's standard input. Pick one category from
@@ -101,7 +107,7 @@ Pass --docs-path only for a docs-missing or docs-wrong report, naming the page t
101
107
  is about:
102
108
 
103
109
  ```text
104
- npx --yes copilotkit@4.10.1 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer
110
+ npx --yes copilotkit@4.12.0 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer
105
111
  ```
106
112
 
107
113
  Give the page's site-relative path or its full URL, with no spaces, query string, or
@@ -118,25 +124,28 @@ Tell the developer when you send a friction report. Do not quote or summarize th
118
124
  unless the developer asks. If the CLI says the report was not sent,
119
125
  state what it said and continue without another question.
120
126
 
121
- When the evidence is gathered, run `npx --yes copilotkit@4.10.1 onboard complete`, carrying
127
+ When the evidence is gathered, run `npx --yes copilotkit@4.12.0 onboard complete`, carrying
122
128
  the surface-check outcome the proof subagent returned. Pass exactly one flag, and pass the
123
129
  one that matches this journey's surface.
124
130
 
125
131
  For a web frontend -- React SPA, Next.js, Angular, Vue:
126
132
 
127
133
  ```text
128
- npx --yes copilotkit@4.10.1 onboard complete --visual-check <outcome>
134
+ npx --yes copilotkit@4.12.0 onboard complete --visual-check <outcome>
129
135
  ```
130
136
 
131
- The outcome is one of `performed`, `skipped-no-browser-tool`, or `failed`.
137
+ The outcome is one of `performed`, `skipped-no-browser-tool`, `skipped-cloned-starter`, or
138
+ `failed`. Use `skipped-cloned-starter` only for a run that cloned a starter and was told to
139
+ open no browser. It is the one skip that does not block.
132
140
 
133
141
  For React Native:
134
142
 
135
143
  ```text
136
- npx --yes copilotkit@4.10.1 onboard complete --device-check <outcome>
144
+ npx --yes copilotkit@4.12.0 onboard complete --device-check <outcome>
137
145
  ```
138
146
 
139
- The outcome is one of `performed`, `skipped-no-device`, or `failed`.
147
+ The outcome is one of `performed`, `skipped-no-device`, `skipped-cloned-starter`, or
148
+ `failed`.
140
149
 
141
150
  The two flags are not interchangeable and neither takes the other's outcomes. A browser
142
151
  proves nothing about a React Native view tree, and a device capture proves nothing about
@@ -145,7 +154,7 @@ browser-origin CORS, so the flag you pass is how this run states which surface i
145
154
  For a web frontend, also pass the URL the browser opened:
146
155
 
147
156
  ```text
148
- npx --yes copilotkit@4.10.1 onboard complete --visual-check <outcome> \
157
+ npx --yes copilotkit@4.12.0 onboard complete --visual-check <outcome> \
149
158
  --frontend-url <the url you opened>
150
159
  ```
151
160
 
@@ -164,7 +173,7 @@ If the round trip proved and something after it still blocked this run, add `--b
164
173
  to the same command:
165
174
 
166
175
  ```text
167
- npx --yes copilotkit@4.10.1 onboard complete --visual-check performed --blocked-by <cause>
176
+ npx --yes copilotkit@4.12.0 onboard complete --visual-check performed --blocked-by <cause>
168
177
  ```
169
178
 
170
179
  The cause is one of `inspector` for a debugging surface that did not open,
@@ -1,7 +1,7 @@
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 --yes copilotkit@4.10.1 onboard read subagent/prove-oss-baseline` first and follow the
4
+ `npx --yes copilotkit@4.12.0 onboard read subagent/prove-oss-baseline` first and follow the
5
5
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
6
6
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
7
7
  and the same handoff. Give it the repository findings and exact CLI package spec.
@@ -17,7 +17,7 @@ Wait for the subagent to finish.
17
17
  Record what that proof returned before you route on it:
18
18
 
19
19
  ```text
20
- npx --yes copilotkit@4.10.1 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
20
+ npx --yes copilotkit@4.12.0 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
21
21
  ```
22
22
 
23
23
  Report the gate whatever it returned. Pass `passed` when the subagent proved a predicate,
@@ -35,12 +35,12 @@ Do not change project files before this proof ends. Starting existing developmen
35
35
  processes and their ignored runtime files is allowed.
36
36
 
37
37
  If the subagent proves the `both-oss` predicate, keep its evidence with the plan and run
38
- `npx --yes copilotkit@4.10.1 onboard read conversion/plan`. That project already works.
38
+ `npx --yes copilotkit@4.12.0 onboard read conversion/plan`. That project already works.
39
39
  What it needs is the conversion, not a build.
40
40
 
41
41
  If the proof does not establish the baseline, record the starting state
42
42
  `both-copilotkit-unproved` and run
43
- `npx --yes copilotkit@4.10.1 onboard read credentials/plan`. This prompt is served
43
+ `npx --yes copilotkit@4.12.0 onboard read credentials/plan`. This prompt is served
44
44
  whenever a project looks like an OSS integration, so a baseline that did not prove is an
45
45
  ordinary starting state rather than a failure. Keep the failing predicate with the plan.
46
46
 
@@ -54,5 +54,5 @@ and the plan preserves it rather than repeating it.
54
54
 
55
55
  If it cannot identify the running process safely, exposes a secret, or finds a baseline
56
56
  failure that cannot be classified, run
57
- `npx --yes copilotkit@4.10.1 onboard read stopped/run-failed`. None of those mean the
57
+ `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. None of those mean the
58
58
  project is unsupported: they mean this run did not establish what it needed to.
@@ -1,7 +1,7 @@
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 --yes copilotkit@4.10.1 onboard read subagent/prove-round-trip` first and follow the
4
+ `npx --yes copilotkit@4.12.0 onboard read subagent/prove-round-trip` first and follow the
5
5
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
6
6
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
7
7
  and the same handoff. Give it the selected framework, frontend, model, approved plan, selected
@@ -20,8 +20,9 @@ starter smoke jobs already drive on every change, so opening a browser re-proves
20
20
  developer's run what those jobs prove before the starter ships, and it is the most
21
21
  expensive step in this setup. `verify --round-trip` reads the answer back off the thread,
22
22
  so it holds for every runtime mount and needs no browser. Give that subagent no browser or
23
- device control, and record the surface outcome as skipped for a cloned starter rather than
24
- as a missing capability: nothing was unavailable, the run declined to spend it.
23
+ device control, and have it report `skipped-cloned-starter` rather than a missing
24
+ capability: nothing was unavailable, the run declined to spend it. That outcome completes
25
+ the run. Every other skip says nothing drove the surface, and blocks it.
25
26
 
26
27
  Give the subagent this guide for continued-development tools:
27
28
  https://docs.copilotkit.ai/build-with-agents.md
@@ -32,13 +33,13 @@ pass the time.
32
33
  Report each attempt at the journey as it ends, counting from one:
33
34
 
34
35
  ```text
35
- npx --yes copilotkit@4.10.1 onboard checkpoint --phase journey-attempted --attempt 1
36
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase journey-attempted --attempt 1
36
37
  ```
37
38
 
38
39
  Record what that proof returned before you route on it:
39
40
 
40
41
  ```text
41
- npx --yes copilotkit@4.10.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
42
+ npx --yes copilotkit@4.12.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
42
43
  ```
43
44
 
44
45
  Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. The
@@ -46,7 +47,7 @@ command prints one line and sends nothing else. Where a repair cycle runs the pr
46
47
  record each attempt as it ends.
47
48
 
48
49
  For every protected-path audit in this prompt, run
49
- `npx --yes copilotkit@4.10.1 onboard audit` from the target app directory. If its result
50
+ `npx --yes copilotkit@4.12.0 onboard audit` from the target app directory. If its result
50
51
  starts with `Status: blocked`, report the printed reason and use the route-out rules below.
51
52
  A blocked audit proved nothing changed and is not a preservation failure. If a
52
53
  protected-path audit reports a changed path, decide it the way the implementation prompt
@@ -55,7 +56,7 @@ returns none, so a finding with no Files changed section to test against routes
55
56
  path one of those sections names is this run's own change and routes out too. Accept a
56
57
  path only when a section this run collected covers the step that wrote it and does not
57
58
  name it:
58
- `npx --yes copilotkit@4.10.1 onboard protect --accept-external --path <path>`. Then run
59
+ `npx --yes copilotkit@4.12.0 onboard protect --accept-external --path <path>`. Then run
59
60
  the audit again and name the path in the closing summary. Never repair, reset, or revert a
60
61
  protected path.
61
62
 
@@ -63,12 +64,12 @@ That holds for a repair cycle too. When the fix for a failing check lands on a p
63
64
  path, the path is still the developer's, however right the diagnosis is and however small
64
65
  the fix. Reading the file never settles who wrote it. Ask the developer to allow the
65
66
  change, and record their answer with
66
- `npx --yes copilotkit@4.10.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
67
+ `npx --yes copilotkit@4.12.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
67
68
  or route out. Never repair it, and never send it to a repair worker.
68
69
 
69
70
  If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
70
71
  `proof/complete` only if that audit passes. After the audit passes, run
71
- `npx --yes copilotkit@4.10.1 onboard read proof/complete`. A performed surface outcome with
72
+ `npx --yes copilotkit@4.12.0 onboard read proof/complete`. A performed surface outcome with
72
73
  the full round trip is core success even if a continued-development tool fails. A skipped
73
74
  surface outcome still enters `proof/complete` so the CLI records the blocked result. Do not
74
75
  describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
@@ -124,7 +125,7 @@ Restart each project-owned process changed by the repair. Report the cycle, coun
124
125
  one:
125
126
 
126
127
  ```text
127
- npx --yes copilotkit@4.10.1 onboard checkpoint --phase repair-attempted --attempt 1
128
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase repair-attempted --attempt 1
128
129
  ```
129
130
 
130
131
  Then spawn a fresh proof subagent
@@ -142,18 +143,18 @@ and proof cycles.
142
143
 
143
144
  Route out only when the failure is not yours to fix, when the same proof still fails after
144
145
  three attempts, or when no evidence of the round trip can be produced. In those cases run
145
- `npx --yes copilotkit@4.10.1 onboard read stopped/run-failed`. The stack is supported:
146
+ `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. The stack is supported:
146
147
  this run did not finish, which is a different ending and a different report. All three are
147
148
  about the round trip itself. A round trip that proved is not one of them, whatever failed
148
149
  after it.
149
150
 
150
151
  If you stop here without taking that route -- a repair cycle you cannot finish, a limit in
151
- your own harness, a run that has run out -- send one short report before you stop.
152
- Run the friction command without another developer question. The CLI telemetry gate decides
153
- whether the report is sent.
152
+ your own harness, a run that has run out -- send one short report before you stop. Run the
153
+ friction command without another developer question. Do not ask the developer about
154
+ telemetry: the command applies the setting they already have.
154
155
 
155
156
  ```text
156
- npx --yes copilotkit@4.10.1 onboard friction --phase stop --category <slug>
157
+ npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
157
158
  ```
158
159
 
159
160
  Write one or two sentences to standard input: the step you stopped at and what stopped it.
@@ -23,11 +23,33 @@ that waiting for the result does not, and it spends wall clock, which is one of
23
23
  this journey is measured on. One recorded run spent most of two hours asleep between
24
24
  dispatches that had all returned in seconds.
25
25
 
26
+ ## When a subagent cannot work
27
+
28
+ This rule also covers every subagent this run spawns, here and in every later prompt.
29
+
30
+ A subagent that returns no usable result has failed in your harness, not in this graph.
31
+ Delegation buys parallelism and a clean context, not capability: every assignment in this
32
+ run is work you can do yourself, slower. So run that assignment yourself and carry on,
33
+ rather than treating it as the end of the run.
34
+
35
+ Both research subagents failing means this harness has no working subagent at all, which
36
+ is worth recording once:
37
+
38
+ ```text
39
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase delegation-unavailable
40
+ ```
41
+
42
+ Then say once, in your own words, that this environment has no working subagents, so you
43
+ will carry out each step yourself and the run will take longer than usual.
44
+
45
+ For the rest of this run, wherever a prompt tells you to spawn a subagent, read that
46
+ `subagent/` brief yourself and follow it in place of spawning one.
47
+
26
48
  Before you ask the developer any setup question, finish every read-only investigation and
27
49
  preflight check in this section.
28
50
 
29
51
  Prepare two research assignments. Give each research subagent one assignment. Tell it to run
30
- `npx --yes copilotkit@4.10.1 onboard read subagent/inspect-repository` first and follow the
52
+ `npx --yes copilotkit@4.12.0 onboard read subagent/inspect-repository` first and follow the
31
53
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
32
54
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
33
55
  and the same handoff. Require only its assigned packet.
@@ -89,10 +111,24 @@ whole finding, and a browser is not a substitute for a device.
89
111
 
90
112
  Wait for both research subagents to finish.
91
113
 
114
+ ## Settle the port
115
+
116
+ The findings name the ports this project declares and the ports already held on this
117
+ machine. Pick one free port for the frontend now, and use that number for the rest of the
118
+ run: in the plan, in the implementation, and in the proof. Record it with the findings you
119
+ hand to every later subagent.
120
+
121
+ Do not let a later step pick again. A run that decides the port three times produces three
122
+ numbers, and `verify` reads none of them: with no recorded URL it assumes port 3000, and
123
+ whatever holds that port answers. An unrelated checkout on this machine then reports as
124
+ this project's proven wiring.
125
+
126
+ Project selection is where the settled port is written down, through `--runtime-url`.
127
+
92
128
  Then report that the research came back:
93
129
 
94
130
  ```text
95
- npx --yes copilotkit@4.10.1 onboard checkpoint --phase research-returned
131
+ npx --yes copilotkit@4.12.0 onboard checkpoint --phase research-returned
96
132
  ```
97
133
 
98
134
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
@@ -108,14 +144,24 @@ the item, both cited findings, and the research limits. Require its result to st
108
144
  not inspect the project to settle the conflict yourself. Use the stop route for a non-pass
109
145
  verifier result.
110
146
 
111
- Match environment evidence to the target app directory from the project packet. Require one
112
- target app directory and one matching environment row. If either packet gives no match or
113
- more than one match, send each research worker a focused directory check. Continue only when
114
- both workers return the same one target app directory. Both results must start with
115
- `Status: passed`. Otherwise, use the stop route.
147
+ A target project directory that holds no project has no app directory to key on, and
148
+ that is a merged result rather than a failed merge. Record that this run has no target app
149
+ directory and no environment row, then take the read below. Do not send a focused directory
150
+ check, and do not use the stop route: neither worker can find a directory a developer has
151
+ not created yet, and the route below is where such a project picks its starter.
152
+
153
+ A directory holding only a Git repository, a coding agent's own configuration, editor
154
+ settings or scratch notes holds no project. `onboard inspect` reports that as
155
+ `appDiscovery.reason` of `no-project`.
156
+
157
+ For a target project that does hold an app, match environment evidence to the target app
158
+ directory from the project packet. Require one target app directory and one matching
159
+ environment row. If either packet gives no match or more than one match, send each research
160
+ worker a focused directory check. Continue only when both workers return the same one target
161
+ app directory. Both results must start with `Status: passed`. Otherwise, use the stop route.
116
162
 
117
163
  When both research results are merged, run
118
- `npx --yes copilotkit@4.10.1 onboard read research/route`.
164
+ `npx --yes copilotkit@4.12.0 onboard read research/route`.
119
165
 
120
166
  If inspection stops onboarding, run
121
- `npx --yes copilotkit@4.10.1 onboard read stopped/run-failed`.
167
+ `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`.