copilotkit 4.18.0 → 4.20.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 (79) hide show
  1. package/README.md +26 -12
  2. package/cli-build-info.json +7 -7
  3. package/index.js +4949 -3293
  4. package/onboarding/index.json +1 -1
  5. package/onboarding/prompts/authenticate/start.md +39 -32
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +7 -7
  8. package/onboarding/prompts/credentials/plan.md +47 -21
  9. package/onboarding/prompts/credentials/settle-credentials.md +26 -12
  10. package/onboarding/prompts/credentials/write-plan.md +9 -6
  11. package/onboarding/prompts/fallback/best-effort.md +31 -19
  12. package/onboarding/prompts/feature/a2ui/implement.md +6 -12
  13. package/onboarding/prompts/feature/a2ui/proof.md +8 -19
  14. package/onboarding/prompts/feature/a2ui/start.md +9 -18
  15. package/onboarding/prompts/feature/channels/implement.md +12 -21
  16. package/onboarding/prompts/feature/channels/proof.md +7 -18
  17. package/onboarding/prompts/feature/channels/start.md +14 -21
  18. package/onboarding/prompts/feature/chat-suggestions/implement.md +6 -12
  19. package/onboarding/prompts/feature/chat-suggestions/proof.md +7 -18
  20. package/onboarding/prompts/feature/chat-suggestions/start.md +9 -18
  21. package/onboarding/prompts/feature/complete.md +4 -2
  22. package/onboarding/prompts/feature/learning/implement.md +13 -38
  23. package/onboarding/prompts/feature/learning/proof.md +8 -19
  24. package/onboarding/prompts/feature/learning/start.md +9 -18
  25. package/onboarding/prompts/feature/open-generative-ui/implement.md +6 -12
  26. package/onboarding/prompts/feature/open-generative-ui/proof.md +7 -18
  27. package/onboarding/prompts/feature/open-generative-ui/start.md +9 -18
  28. package/onboarding/prompts/feature/realtime-sync/implement.md +7 -13
  29. package/onboarding/prompts/feature/realtime-sync/proof.md +7 -18
  30. package/onboarding/prompts/feature/realtime-sync/start.md +8 -17
  31. package/onboarding/prompts/feature/rich-threads/implement.md +8 -14
  32. package/onboarding/prompts/feature/rich-threads/proof.md +7 -18
  33. package/onboarding/prompts/feature/rich-threads/start.md +8 -17
  34. package/onboarding/prompts/feature/stop.md +3 -3
  35. package/onboarding/prompts/feature/voice/implement.md +6 -12
  36. package/onboarding/prompts/feature/voice/proof.md +7 -18
  37. package/onboarding/prompts/feature/voice/start.md +9 -18
  38. package/onboarding/prompts/framework/ag2.md +2 -2
  39. package/onboarding/prompts/framework/agno.md +2 -2
  40. package/onboarding/prompts/framework/built-in.md +2 -2
  41. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  42. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  43. package/onboarding/prompts/framework/crewai-flows.md +2 -2
  44. package/onboarding/prompts/framework/deep-agents.md +2 -2
  45. package/onboarding/prompts/framework/google-adk.md +2 -2
  46. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  47. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  48. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  49. package/onboarding/prompts/framework/llamaindex.md +2 -2
  50. package/onboarding/prompts/framework/mastra.md +2 -2
  51. package/onboarding/prompts/framework/ms-agent-dotnet.md +8 -3
  52. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +8 -3
  53. package/onboarding/prompts/framework/ms-agent-python.md +2 -2
  54. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  55. package/onboarding/prompts/framework/strands-python.md +2 -2
  56. package/onboarding/prompts/framework/strands-typescript.md +2 -2
  57. package/onboarding/prompts/frontend/angular.md +3 -3
  58. package/onboarding/prompts/frontend/nextjs.md +3 -3
  59. package/onboarding/prompts/frontend/plan.md +7 -7
  60. package/onboarding/prompts/frontend/react-native.md +2 -2
  61. package/onboarding/prompts/frontend/react-spa.md +2 -2
  62. package/onboarding/prompts/frontend/vue.md +2 -2
  63. package/onboarding/prompts/implementation/build-and-validate.md +32 -40
  64. package/onboarding/prompts/proof/complete.md +89 -191
  65. package/onboarding/prompts/proof/oss-baseline.md +5 -5
  66. package/onboarding/prompts/proof/round-trip.md +22 -27
  67. package/onboarding/prompts/research/gather.md +5 -14
  68. package/onboarding/prompts/research/merge.md +4 -12
  69. package/onboarding/prompts/research/preflight.md +14 -55
  70. package/onboarding/prompts/research/route.md +7 -6
  71. package/onboarding/prompts/starter/clone.md +5 -15
  72. package/onboarding/prompts/stopped/run-failed.md +2 -2
  73. package/onboarding/prompts/subagent/create-plan.md +25 -1
  74. package/onboarding/prompts/subagent/inspect-repository.md +10 -2
  75. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  76. package/onboarding/prompts/subagent/prove-round-trip.md +78 -56
  77. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  78. package/package.json +1 -1
  79. package/release/release-tool.js +11 -2
@@ -1,217 +1,115 @@
1
1
  # Close out onboarding
2
2
 
3
- Report the selected framework, frontend, model, and complete round-trip evidence to the developer.
4
- Report the exact interaction, visible result, validation commands, and evidence locations.
3
+ Send the friction reports first, then run `onboard complete`, then write the handoff. The
4
+ command decides whether this run is complete, and it prints the facts the handoff carries.
5
5
 
6
- Do not complete onboarding without this evidence.
6
+ ## What the reports can say
7
7
 
8
- Report whether the real UI was driven on this journey's own surface -- in a browser for a
9
- web frontend, on a device for React Native -- using the outcome the proof subagent
10
- returned. Do not soften it and do not leave it out: a run that never drove the UI proved
11
- the agent, not the surface, and the developer needs to know which they have.
8
+ Report only the project this run worked in. The handoff and every friction report describe
9
+ that project and nothing else. Do not name or describe a file outside the project
10
+ directory. That covers its path, its contents, how long a value in it is, and whether it
11
+ holds a value at all. A path the developer named is theirs to give this run, not this run's to
12
+ record. A friction report leaves the machine, and the handoff is durable.
12
13
 
13
- **Whether this run is complete is decided by the command at the end of this prompt, not
14
- here.** Run it before you write the summary, and let its output decide which summary you
15
- write. A run whose surface was never driven is blocked, not complete, unless it cloned a
16
- starter and records `skipped-cloned-starter`. For a blocked run, say so in the first
17
- line, name the evidence the command lists as missing, and do not describe the run as
18
- finished, working, or ready. Everything else below applies to either outcome.
14
+ The handoff is the developer's handoff, not this run's retrospective. Say nothing about
15
+ what this run found awkward in the onboarding graph, the documentation, or the CLI. A
16
+ defect this run hit appears only as the thing the developer must do about it. Give no
17
+ count of what went wrong, no list of fixes made along the way, and no argument that a
18
+ failed check is not a defect. Report a failed check as part of the evidence.
19
19
 
20
- Report only the project this run worked in. The summary and every report below describe
21
- that project and nothing else. Do not name or describe a file outside the project
22
- directory: not its path, not its contents, not how long a value in it is, not whether it
23
- holds one. A path the developer named is theirs to give this run, not this run's to
24
- record. A friction report leaves the machine, and a completion summary is durable. The
25
- file's owner chose neither.
26
-
27
- The summary is the developer's handoff, not this run's retrospective. Report what was
28
- built, the round trip and its evidence, the validation commands, where the evidence is,
29
- and how to start it again. Report a failed check as part of that evidence. Say nothing
30
- about what this run found awkward in the onboarding graph, the documentation, or the CLI.
31
- A defect this run hit belongs in the summary only as the thing the developer must do
32
- about it: keep this version pin, wire this constructor, run this build. It never appears
33
- as an account of hitting it. No count of what went wrong, no list of fixes made along the
34
- way, no argument that a failed check is not a defect.
35
-
36
- Where this run connected and proved Rich Threads, explain in your own words that they
37
- preserve messages, generative UI, tool interactions, and application state so users
38
- can return to earlier work. Explain that these interactions can also provide evidence
39
- for Automatic Learning. Describe only the capabilities supported by this run's result.
40
- This is required content within the handoff, not a separate message or a new check.
41
-
42
- The handoff must include:
43
-
44
- - The URL of the running app.
45
- - The command that starts the app in the future.
46
- - The debugging surface this journey's frontend can reach, named below.
47
- - How to use https://intelligence.copilotkit.ai to manage the CopilotKit Intelligence
48
- installation. Do not open it. This item makes the developer aware the dashboard is
49
- there, and it is a sentence to write rather than a check to perform. Nothing in this
50
- graph gates on the dashboard, so a dashboard this run never opened is not a finding,
51
- not a caveat, and not a blocker. Where this run settled a Learning Container, tell the
52
- developer they can use their project there to follow progress, review Insights and
53
- supporting conversations, and approve proposed Skills as they become available.
54
- - What changed since the developer approved the plan. Name every path, version, or step
55
- the run departed from, and why. A deviation can be the right call and still has to
56
- reach the person who approved the thing it departed from. Where nothing departed, say
57
- that in one line rather than leaving the item out.
58
- - Every change to the existing agent's behavior: its system prompt or instructions, its
59
- tools or what those tools do, its model or provider configuration, or its memory or
60
- state handling. Name each one, name the file, and say the developer approved it. Where
61
- none of them changed, write `none` on that line rather than leaving the item out. Such a
62
- change answers differently everywhere the agent is used, not only in CopilotKit, and the
63
- developer is the only one who can tell whether that is wanted.
64
- - The process IDs and stop commands for the running agent and frontend.
65
- - The `@copilotkit/*` versions this conversion changed, and what they were before.
66
- - On a conversion, the criterion this run was judged against, in the words the run was
67
- given.
68
- - The Learning Container this run settled, or the fact that Learning is not available to
69
- this organization and no container was created.
70
- - Any path this run created that git does not ignore, and what to do with each.
71
- - Any protected path this run accepted as changed from outside it, and what changed. The
72
- command at the end of this prompt prints each one, so copy them from its output rather
73
- than from memory. This run did not change them and cannot say what did, so the developer
74
- decides what to do about each.
75
-
76
- A run leaves paths beside the credential file. Tool output such as `.playwright-mcp/` and
77
- `.langgraph_api/` is regenerable, so the developer normally wants it ignored.
78
- `.copilotkit/` is not debris: `project.json` and `channels.json` are the project's own
79
- declared state and belong in the commit, while `.copilotkit/artifacts/` holds regenerable
80
- manifests and does not. Name each path and say which of the two it is. Do not add an
81
- ignore line for any of them yourself. None of these carries a secret, unlike the
82
- credential path, so the developer decides.
83
-
84
- Name the debugging surface this journey's frontend can reach, rather than the one the rest
85
- of the documentation leads with. For a web frontend it is the CopilotKit Inspector. For
86
- React Native there is no Inspector: it is a browser overlay built on a DOM custom element,
87
- and `@copilotkit/react-native` does not ship it. Give a mobile developer
88
- `npx --prefer-offline --yes copilotkit@4.18.0 verify --round-trip`, the runtime's own log, the AG-UI
89
- Event Inspector in the CopilotKit VS Code extension, and the CopilotKit Intelligence
90
- thread view
91
- instead. Naming the Inspector to a developer who cannot open it costs them the time it
92
- takes to conclude their own wiring is broken.
93
-
94
- Where this run settled a Learning Container, explain in your own words that new
95
- conversations are routed to it, where Automatic Learning can find recurring patterns
96
- and propose reusable Skills to help the agent improve. The developer controls which
97
- Skills get approved. Explain that Learning results appear as new conversations provide
98
- enough evidence.
99
-
100
- These are required explanations within the existing handoff, not fixed wording or
101
- additional actions. Describe only the setup supported by this run's evidence. Do not
102
- claim this run produced Insights or Skills or configured automatic Skill delivery
103
- unless its evidence proves that. If no container was configured, report the actual
104
- reason and retain the project-management destination without implying that Learning
105
- is collecting evidence.
106
-
107
- Where the Learning step was skipped because this organization cannot use Learning, say so in
108
- one line and name what was not created. A skip nobody names reads as a container that
109
- exists, and the developer then waits for insights from a container this run never made.
110
-
111
- State that the servers remain running after proof, unless the command at the end of this
112
- prompt prints `environment_kind: container` or `environment_kind: sandbox`. That run is on
113
- an isolated host, such as a Docker container or a cloud agent session, which is not a
114
- Learning Container. The servers end when that host ends, and a `localhost` URL opens on the
115
- developer's machine only through a forwarded port. Write the items that output lists in
116
- place of this sentence.
20
+ ## Report friction
117
21
 
118
22
  Report each thing that slowed this run down. Send at most four reports, worst first. The
119
23
  friction commands follow the telemetry setting the developer already chose, so they need no
120
24
  separate question.
121
25
 
122
26
  ```text
123
- npx --prefer-offline --yes copilotkit@4.18.0 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
124
- ```
125
-
126
- Put one or two sentences in `--message`. Pick one category from
127
- docs-missing, docs-wrong, docs-sequential, cli-gap, sdk-gap, environment,
128
- port-collision, credential, validation-loop, and other. For the seconds, give your
129
- own estimate of what that one papercut cost this run.
130
-
131
- Pass --docs-path only for a docs-missing or docs-wrong report, naming the page the report
132
- is about:
133
-
134
- ```text
135
- npx --prefer-offline --yes copilotkit@4.18.0 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer --message "<sentences>"
27
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
136
28
  ```
137
29
 
138
- Give the page's site-relative path or its full URL, with no spaces, query string, or
139
- fragment. A report that names its page can be counted against that page. A report that
140
- describes the page in prose cannot. Leave the flag off for every other category, and leave
141
- it off when no single page is at fault.
30
+ Put one or two sentences in `--message`. Pick one category from docs-missing, docs-wrong,
31
+ docs-sequential, cli-gap, sdk-gap, environment, port-collision, credential,
32
+ validation-loop, and other. For the seconds, give your own estimate of what that one
33
+ papercut cost this run. For a docs-missing or docs-wrong report about one page, add
34
+ `--docs-path <site-relative path or full URL>`, with no spaces, query string, or fragment.
142
35
 
143
- Send no secrets, source code, logs, or command output. The command refuses a report
144
- that carries any of those, prints the reason, and exits zero. A refused report is not
145
- a failed step and not a failed onboarding run. Reword it and send it again, or move
146
- on. A run that proves a round trip is complete whether or not it reported friction.
36
+ Send no secrets, source code, logs, or command output. The command refuses a report that
37
+ carries any of those, prints the reason, and exits zero. A refused report is not a failed
38
+ step. Reword it and send it again, or move on. A run that proves a round trip is complete
39
+ whether or not it reported friction. When you send a report, tell the developer. Do not
40
+ quote it unless they ask. If the CLI says the report was not sent, say what it said and go
41
+ on without another question.
147
42
 
148
- Tell the developer when you send a friction report. Do not quote or summarize the report
149
- unless the developer asks. If the CLI says the report was not sent,
150
- state what it said and continue without another question.
43
+ ## Run the completion
151
44
 
152
- When the evidence is gathered, run `npx --prefer-offline --yes copilotkit@4.18.0 onboard complete`, carrying
153
- the surface-check outcome the proof subagent returned. Pass exactly one of `--visual-check`
154
- or `--device-check`, and pass the one that matches this journey's surface.
155
-
156
- For a web frontend -- React SPA, Next.js, Angular, Vue:
45
+ Pass the surface-check outcome the proof subagent returned, not the one you wanted. For a
46
+ web frontend, pass `--visual-check` and the URL the browser opened, unchanged:
157
47
 
158
48
  ```text
159
- npx --prefer-offline --yes copilotkit@4.18.0 onboard complete --visual-check <outcome>
160
- ```
161
-
162
- The outcome is one of `performed`, `skipped-no-browser-tool`, `skipped-cloned-starter`, or
163
- `failed`. Use `skipped-cloned-starter` only for a run that cloned a starter and was told to
164
- open no browser. It is the one skip that does not block.
165
-
166
- For React Native:
167
-
168
- ```text
169
- npx --prefer-offline --yes copilotkit@4.18.0 onboard complete --device-check <outcome>
170
- ```
171
-
172
- The outcome is one of `performed`, `skipped-no-device`, `skipped-cloned-starter`, or
173
- `failed`.
174
-
175
- The two flags are not interchangeable and neither takes the other's outcomes. A browser
176
- proves nothing about a React Native view tree, and a device capture proves nothing about
177
- browser-origin CORS, so the flag you pass is how this run states which surface it proved.
178
-
179
- For a web frontend, also pass the URL the browser opened:
180
-
181
- ```text
182
- npx --prefer-offline --yes copilotkit@4.18.0 onboard complete --visual-check <outcome> \
49
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard complete --visual-check <outcome> \
183
50
  --frontend-url <the url you opened>
184
51
  ```
185
52
 
186
- Pass the URL from the proof subagent's record, unchanged. Only the kind of host is
187
- recorded -- a loopback hostname, a loopback IP literal, another IP literal, or another
188
- name -- and never the host itself. A run that opened the loopback IP literal loses every
189
- static chunk to a refusal, and the field is how that stops being invisible. Leave the flag
190
- off for React Native, which opens no URL.
191
-
192
- Pass the outcome you were given rather than the one you wanted. Anything but `performed` or
193
- `skipped-cloned-starter` prints what the missing check leaves unverified and ends this run
194
- as blocked. That output
195
- is the developer's finding, so carry it into the summary rather than restating it as a
196
- smaller caveat.
197
-
198
- If the round trip proved and something after it still blocked this run, add `--blocked-by`
199
- to the same command:
53
+ The outcome is one of `performed`, `skipped-no-browser-tool`, `skipped-cloned-starter`,
54
+ or `failed`. For React Native, pass `--device-check` with one of `performed`,
55
+ `skipped-no-device`, `skipped-cloned-starter`, or `failed`, and no URL. Use
56
+ `skipped-cloned-starter` only for a run that cloned a starter and was told to open no
57
+ browser. Use `skipped-no-browser-tool` for a run with no browser tool loaded in this
58
+ session.
59
+
60
+ `skipped-cloned-starter` does not block. `skipped-no-browser-tool` does not block when this
61
+ run recorded a passed round trip with `onboard proof`. The command then prints what no
62
+ browser checked and how to add a browser for the next session. `failed` and
63
+ `skipped-no-device` print what the missing check leaves unverified and end this run as
64
+ blocked.
65
+
66
+ If the round trip proved and something after it still blocked this run, add
67
+ `--blocked-by <cause>`: `inspector` for a debugging surface that did not open,
68
+ `plan-excluded-capability` for a capability the approved plan excluded,
69
+ `browser-control-unresponsive` for a browser tool that stopped answering during the surface
70
+ check, or `other`. Do not use it for the CopilotKit Intelligence dashboard, which nothing in
71
+ this graph opens.
72
+
73
+ `browser-control-unresponsive` is the one cause that goes with the failed check, because
74
+ nothing drove the frontend:
200
75
 
201
76
  ```text
202
- npx --prefer-offline --yes copilotkit@4.18.0 onboard complete --visual-check performed --blocked-by <cause>
77
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard complete --visual-check failed --blocked-by browser-control-unresponsive
203
78
  ```
204
79
 
205
- The cause is one of `inspector` for a debugging surface that did not open,
206
- `plan-excluded-capability` for a capability the approved plan had already excluded for this
207
- framework, and `other` for anything else. Pick `other` rather than leaving the flag off.
208
- The command ends the run as blocked and prints what the blocker leaves unverified.
209
-
210
- The managed Intelligence dashboard is not among these, because nothing in this graph asks a
211
- run to open it. A run that records a blocker for a surface it was never sent to looks worse
212
- than an identical run that wrote the same handoff sentence, and the two are then not
213
- comparable.
214
-
215
- This is the flag for a journey that worked. It is not a way to report an unsupported path,
216
- and a blocked run here is still owed the full handoff above: the URL, the start command,
217
- the process IDs, and the versions this conversion changed.
80
+ ## Write the handoff
81
+
82
+ If the command reports the run as blocked, say so in the first line and name the evidence
83
+ it lists as missing. Do not call the run finished, working, or ready. A blocked run is
84
+ still owed the full handoff.
85
+
86
+ For `skipped-no-browser-tool`, the command's list of what no browser checked is that report.
87
+ Give it once, in the section about what was proved, with how to add a browser, as the
88
+ command prints them. Do not add a separate line, heading, or opening sentence about the
89
+ missing browser.
90
+
91
+ Paste the **Handoff facts** block the command printed, as it is. Copy any accepted or
92
+ authorized path it lists too. The dashboard line there only tells the developer where the
93
+ dashboard is. Do not open it. Nothing in this graph gates on the dashboard. Then add what
94
+ only you can say:
95
+
96
+ - What the project now does, and the first thing to try in it.
97
+ - What changed since the developer approved the plan: every path, version, or step the run
98
+ departed from, and why. Where nothing departed, say so in one line. A file the approved
99
+ plan named under `Files the run writes itself` is not a departure, and neither is a
100
+ Skills install the developer declined.
101
+ - Every change to the existing agent's behavior: its instructions, its tools, its model or
102
+ provider, or its memory. Name each one and its file, and say the developer approved it.
103
+ Where none changed, write `none`.
104
+ - On a conversion, the criterion this run was judged against, in the words the run was
105
+ given.
106
+ - Where this run proved Rich Threads: they keep messages, generative UI, tool interactions,
107
+ and application state, so users can return to earlier work. The same conversations give
108
+ Automatic Learning its evidence.
109
+ - Where the facts name a Learning Container: new conversations go to it. Automatic
110
+ Learning can find recurring patterns and propose Skills, and the developer approves which
111
+ ones apply. Results appear as conversations give enough evidence. Claim no Insight or
112
+ Skill this run did not produce.
113
+
114
+ Say that the servers keep running, unless the command printed `environment_kind`. Then
115
+ write the items it lists instead.
@@ -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 --prefer-offline --yes copilotkit@4.18.0 onboard read subagent/prove-oss-baseline` first and follow the
4
+ `npx --prefer-offline --yes copilotkit@4.20.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 --prefer-offline --yes copilotkit@4.18.0 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
20
+ npx --prefer-offline --yes copilotkit@4.20.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. Use the list below. A proof that never ran is `skipped`, not failed. The command prints one line and sends
@@ -39,12 +39,12 @@ Do not change project files before this proof ends. Starting existing developmen
39
39
  processes and their ignored runtime files is allowed.
40
40
 
41
41
  If the subagent proves the `both-oss` predicate, keep its evidence with the plan and run
42
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read conversion/plan`. That project already works.
42
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read conversion/plan`. That project already works.
43
43
  What it needs is the conversion, not a build.
44
44
 
45
45
  If the proof does not establish the baseline, record the starting state
46
46
  `both-copilotkit-unproved` and run
47
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read credentials/plan`. This prompt is served
47
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read credentials/plan`. This prompt is served
48
48
  whenever a project looks like an OSS integration, so a baseline that did not prove is an
49
49
  ordinary starting state rather than a failure. Keep the failing predicate with the plan.
50
50
 
@@ -58,5 +58,5 @@ and the plan preserves it rather than repeating it.
58
58
 
59
59
  If it cannot identify the running process safely, exposes a secret, or finds a baseline
60
60
  failure that cannot be classified, run
61
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read stopped/run-failed`. None of those mean the
61
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read stopped/run-failed`. None of those mean the
62
62
  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 --prefer-offline --yes copilotkit@4.18.0 onboard read subagent/prove-round-trip` first and follow the
4
+ `npx --prefer-offline --yes copilotkit@4.20.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
@@ -13,6 +13,8 @@ Give it the browser or device control you recorded in the preflight as well. The
13
13
  drives the surface and cannot see your environment, so without that finding it spends the
14
14
  step discovering what you already know. A subagent told it has no control for the surface
15
15
  this frontend needs reports the skip outcome rather than looking for a way around it.
16
+ A web run with no browser tool reports `skipped-no-browser-tool`. That outcome completes the
17
+ run once the round trip is recorded as `passed`.
16
18
 
17
19
  A run that cloned a starter is the exception. Tell that subagent that this run cloned a
18
20
  starter, to finish after `verify --round-trip`, and to open no browser. The cloned code is what this repository's
@@ -22,7 +24,7 @@ expensive step in this setup. `verify --round-trip` reads the answer back off th
22
24
  so it holds for every runtime mount and needs no browser. Give that subagent no browser or
23
25
  device control, and have it report `skipped-cloned-starter` rather than a missing
24
26
  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.
27
+ the run.
26
28
 
27
29
  Give the subagent this guide for continued-development tools:
28
30
  https://docs.copilotkit.ai/build-with-agents.md
@@ -30,16 +32,10 @@ https://docs.copilotkit.ai/build-with-agents.md
30
32
  Wait for the subagent to finish. Its result arrives as a notification. Do not sleep to
31
33
  pass the time.
32
34
 
33
- Report each attempt at the journey as it ends, counting from one:
34
-
35
- ```text
36
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase journey-attempted --attempt 1
37
- ```
38
-
39
35
  Record what that proof returned before you route on it:
40
36
 
41
37
  ```text
42
- npx --prefer-offline --yes copilotkit@4.18.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
38
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
43
39
  ```
44
40
 
45
41
  Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. A
@@ -48,7 +44,7 @@ to record it as `skipped`. The command prints one line and sends nothing else. W
48
44
  record each attempt as it ends.
49
45
 
50
46
  For every protected-path audit in this prompt, run
51
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard audit` from the target app directory. If its result
47
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard audit` from the target app directory. If its result
52
48
  starts with `Status: blocked`, report the printed reason and use the route-out rules below.
53
49
  A blocked audit proved nothing changed and is not a preservation failure. If a
54
50
  protected-path audit reports a changed path, decide it the way the implementation prompt
@@ -57,7 +53,7 @@ returns none, so a finding with no Files changed section to test against routes
57
53
  path one of those sections names is this run's own change and routes out too. Accept a
58
54
  path only when a section this run collected covers the step that wrote it and does not
59
55
  name it:
60
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --accept-external --path <path>`. Then run
56
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --accept-external --path <path>`. Then run
61
57
  the audit again and name the path in the closing summary. Never repair, reset, or revert a
62
58
  protected path.
63
59
 
@@ -65,17 +61,23 @@ That holds for a repair cycle too. When the fix for a failing check lands on a p
65
61
  path, the path is still the developer's, however right the diagnosis is and however small
66
62
  the fix. Reading the file never settles who wrote it. Ask the developer to allow the
67
63
  change, and record their answer with
68
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
64
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
69
65
  or route out. Never repair it, and never send it to a repair worker.
70
66
 
71
67
  If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
72
68
  `proof/complete` only if that audit passes. After the audit passes, run
73
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read proof/complete`. A performed surface outcome with
69
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read proof/complete`. A performed surface outcome with
74
70
  the full round trip is core success even if a continued-development tool fails. A skipped
75
- surface outcome still enters `proof/complete` so the CLI records the blocked result.
76
- `skipped-cloned-starter` is the exception: the CLI records that run as complete. Do not
77
- describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
78
- result.
71
+ surface outcome still enters `proof/complete`. The CLI records `skipped-cloned-starter` and
72
+ `skipped-no-browser-tool` after a passed round trip as complete, and `skipped-no-device` as
73
+ blocked. Do not describe a
74
+ skipped surface as proved. Keep the Skills result separate from the proof result.
75
+
76
+ A passed result can carry the surface-check outcome `failed` with the cause
77
+ `browser-control-unresponsive`. It means that the browser tool stopped answering, not that
78
+ the journey failed. Record the round trip as `passed`, and carry the cause to
79
+ `proof/complete`. Do not send it to a repair worker, and do not run the proof again. No
80
+ repair to the project reaches the tool, and a second attempt waits on the same hang.
79
81
 
80
82
  If the round trip proves and something after it blocks this run anyway -- the debugging
81
83
  surface, or a capability the approved plan already excluded for this framework -- read
@@ -144,14 +146,7 @@ authorized list from that audit.
144
146
  Run the protected-path audit again after validation passes. Continue only if its result
145
147
  starts with `Status: passed`.
146
148
 
147
- Restart each project-owned process changed by the repair. Report the cycle, counting from
148
- one:
149
-
150
- ```text
151
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase repair-attempted --attempt 1
152
- ```
153
-
154
- Then spawn a fresh proof subagent
149
+ Restart each project-owned process changed by the repair. Then spawn a fresh proof subagent
155
150
  with the full original proof handoff, failed proof evidence, and new validation evidence.
156
151
  This handoff includes the plan, documentation, policy, current process IDs, ports,
157
152
  surface-control state, the continued-tools guide, and the failed attempt's pinned Step 1
@@ -166,7 +161,7 @@ proof cycles, use the route-out rules below.
166
161
 
167
162
  Route out only when the failure is not yours to fix, when the same proof still fails after
168
163
  three attempts, or when no evidence of the round trip can be produced. In those cases run
169
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read stopped/run-failed`. The stack is supported:
164
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read stopped/run-failed`. The stack is supported:
170
165
  this run did not finish, which is a different ending and a different report. All three are
171
166
  about the round trip itself. A round trip that proved is not one of them, whatever failed
172
167
  after it.
@@ -177,7 +172,7 @@ friction command follows the telemetry setting the developer already chose, so i
177
172
  separate question.
178
173
 
179
174
  ```text
180
- npx --prefer-offline --yes copilotkit@4.18.0 onboard friction --phase stop --category <slug> --message "<sentences>"
175
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard friction --phase stop --category <slug> --message "<sentences>"
181
176
  ```
182
177
 
183
178
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -44,7 +44,7 @@ Before you end your turn to wait for the developer where the prompt states no de
44
44
  report the pause:
45
45
 
46
46
  ```text
47
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase awaiting-developer
47
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard checkpoint --phase awaiting-developer
48
48
  ```
49
49
 
50
50
  When the answer or the result arrives, continue from the step that paused. Do not read an
@@ -64,7 +64,7 @@ Both research subagents failing means this harness has no working subagent at al
64
64
  is worth recording once:
65
65
 
66
66
  ```text
67
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase delegation-unavailable
67
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard checkpoint --phase delegation-unavailable
68
68
  ```
69
69
 
70
70
  Then say once, in your own words, that this environment has no working subagents, so you
@@ -77,7 +77,7 @@ Before you ask the developer any setup question, finish every read-only investig
77
77
  preflight check in this section.
78
78
 
79
79
  Prepare two research assignments. Give each research subagent one assignment. Tell it to run
80
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read subagent/inspect-repository` first and follow the
80
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read subagent/inspect-repository` first and follow the
81
81
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
82
82
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
83
83
  and the same handoff. Require only its assigned packet.
@@ -88,20 +88,11 @@ Start both research subagents in parallel:
88
88
  2. Spawn a second research subagent. Assign it the environment evidence packet.
89
89
  3. Start both research subagents. Then continue.
90
90
 
91
- Report that both subagents started:
92
-
93
- ```text
94
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase research-dispatched
95
- ```
96
-
97
- A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
98
- failed step.
99
-
100
91
  The research is under way. Continue to the surface-control preflight while it runs:
101
92
 
102
93
  ```text
103
- npx --prefer-offline --yes copilotkit@4.18.0 onboard read research/preflight
94
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard read research/preflight
104
95
  ```
105
96
 
106
97
  If inspection stops onboarding, run
107
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read stopped/run-failed`.
98
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read stopped/run-failed`.
@@ -18,15 +18,6 @@ whatever holds that port answers.
18
18
 
19
19
  Project selection is where the settled port is written down, through `--runtime-url`.
20
20
 
21
- Then report that the research came back:
22
-
23
- ```text
24
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase research-returned
25
- ```
26
-
27
- A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
28
- failed step.
29
-
30
21
  Continue only if both research results start with `Status: passed`. For `Status: failed`,
31
22
  retry only that packet with its failed items, up to three attempts. For `Status: blocked`,
32
23
  or a third failed result, use the stop route at the end of this prompt.
@@ -39,7 +30,8 @@ verifier result.
39
30
 
40
31
  A target project directory that holds no project has no app directory to key on, and
41
32
  that is a merged result rather than a failed merge. Record that this run has no target app
42
- directory and no environment row, then take the read below. Do not send a focused directory
33
+ directory and no environment row. Keep the toolchain reading: it is about this machine, not
34
+ a directory, and the framework question reads it. Then take the read below. Do not send a focused directory
43
35
  check, and do not use the stop route: neither worker can find a directory a developer has
44
36
  not created yet, and the route below is where such a project picks its starter.
45
37
 
@@ -54,7 +46,7 @@ worker a focused directory check. Continue only when both workers return the sam
54
46
  app directory. Both results must start with `Status: passed`. Otherwise, use the stop route.
55
47
 
56
48
  When both research results are merged, run
57
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read research/route`.
49
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read research/route`.
58
50
 
59
51
  If inspection stops onboarding, run
60
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read stopped/run-failed`.
52
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read stopped/run-failed`.