copilotkit 4.12.0 → 4.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +10 -0
  2. package/cli-build-info.json +7 -7
  3. package/index.js +1590 -348
  4. package/onboarding/index.json +20 -2
  5. package/onboarding/prompts/authenticate/start.md +38 -33
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +9 -8
  8. package/onboarding/prompts/credentials/plan.md +26 -20
  9. package/onboarding/prompts/credentials/settle-credentials.md +8 -8
  10. package/onboarding/prompts/credentials/write-plan.md +19 -6
  11. package/onboarding/prompts/fallback/best-effort.md +6 -6
  12. package/onboarding/prompts/feature/a2ui/implement.md +6 -6
  13. package/onboarding/prompts/feature/a2ui/proof.md +6 -6
  14. package/onboarding/prompts/feature/a2ui/start.md +7 -7
  15. package/onboarding/prompts/feature/channels/implement.md +75 -12
  16. package/onboarding/prompts/feature/channels/proof.md +13 -6
  17. package/onboarding/prompts/feature/channels/start.md +27 -10
  18. package/onboarding/prompts/feature/chat-suggestions/implement.md +6 -6
  19. package/onboarding/prompts/feature/chat-suggestions/proof.md +6 -6
  20. package/onboarding/prompts/feature/chat-suggestions/start.md +7 -7
  21. package/onboarding/prompts/feature/complete.md +1 -1
  22. package/onboarding/prompts/feature/learning/implement.md +15 -15
  23. package/onboarding/prompts/feature/learning/proof.md +7 -7
  24. package/onboarding/prompts/feature/learning/start.md +8 -8
  25. package/onboarding/prompts/feature/open-generative-ui/implement.md +6 -6
  26. package/onboarding/prompts/feature/open-generative-ui/proof.md +6 -6
  27. package/onboarding/prompts/feature/open-generative-ui/start.md +7 -7
  28. package/onboarding/prompts/feature/realtime-sync/implement.md +7 -7
  29. package/onboarding/prompts/feature/realtime-sync/proof.md +6 -6
  30. package/onboarding/prompts/feature/realtime-sync/start.md +6 -6
  31. package/onboarding/prompts/feature/rich-threads/implement.md +8 -8
  32. package/onboarding/prompts/feature/rich-threads/proof.md +6 -6
  33. package/onboarding/prompts/feature/rich-threads/start.md +6 -6
  34. package/onboarding/prompts/feature/stop.md +2 -2
  35. package/onboarding/prompts/feature/voice/implement.md +6 -6
  36. package/onboarding/prompts/feature/voice/proof.md +6 -6
  37. package/onboarding/prompts/feature/voice/start.md +7 -7
  38. package/onboarding/prompts/framework/ag2.md +2 -2
  39. package/onboarding/prompts/framework/agno.md +2 -2
  40. package/onboarding/prompts/framework/built-in.md +4 -2
  41. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  42. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  43. package/onboarding/prompts/framework/crewai-flows.md +2 -2
  44. package/onboarding/prompts/framework/deep-agents.md +5 -2
  45. package/onboarding/prompts/framework/google-adk.md +4 -2
  46. package/onboarding/prompts/framework/langgraph-fastapi.md +4 -3
  47. package/onboarding/prompts/framework/langgraph-python.md +6 -2
  48. package/onboarding/prompts/framework/langgraph-typescript.md +6 -2
  49. package/onboarding/prompts/framework/llamaindex.md +2 -2
  50. package/onboarding/prompts/framework/mastra.md +4 -2
  51. package/onboarding/prompts/framework/ms-agent-dotnet.md +4 -2
  52. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-python.md +4 -2
  54. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  55. package/onboarding/prompts/framework/strands-python.md +4 -2
  56. package/onboarding/prompts/framework/strands-typescript.md +4 -2
  57. package/onboarding/prompts/frontend/angular.md +3 -3
  58. package/onboarding/prompts/frontend/nextjs.md +3 -3
  59. package/onboarding/prompts/frontend/plan.md +21 -10
  60. package/onboarding/prompts/frontend/react-native.md +2 -2
  61. package/onboarding/prompts/frontend/react-spa.md +2 -2
  62. package/onboarding/prompts/frontend/vue.md +2 -2
  63. package/onboarding/prompts/implementation/build-and-validate.md +33 -15
  64. package/onboarding/prompts/proof/complete.md +35 -16
  65. package/onboarding/prompts/proof/oss-baseline.md +5 -5
  66. package/onboarding/prompts/proof/round-trip.md +23 -12
  67. package/onboarding/prompts/research/gather.md +12 -102
  68. package/onboarding/prompts/research/merge.md +60 -0
  69. package/onboarding/prompts/research/preflight.md +75 -0
  70. package/onboarding/prompts/research/route.md +30 -6
  71. package/onboarding/prompts/starter/clone.md +5 -5
  72. package/onboarding/prompts/stopped/run-failed.md +2 -2
  73. package/onboarding/prompts/subagent/create-plan.md +18 -1
  74. package/onboarding/prompts/subagent/implement-and-validate.md +37 -0
  75. package/onboarding/prompts/subagent/inspect-repository.md +1 -1
  76. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  77. package/onboarding/prompts/subagent/prove-round-trip.md +17 -7
  78. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  79. package/package.json +4 -1
  80. package/release/release-tool.js +101 -1
@@ -32,6 +32,12 @@ about it: keep this version pin, wire this constructor, run this build. It never
32
32
  as an account of hitting it. No count of what went wrong, no list of fixes made along the
33
33
  way, no argument that a failed check is not a defect.
34
34
 
35
+ Where this run connected and proved Rich Threads, explain in your own words that they
36
+ preserve messages, generative UI, tool interactions, and application state so users
37
+ can return to earlier work. Explain that these interactions can also provide evidence
38
+ for Automatic Learning. Describe only the capabilities supported by this run's result.
39
+ This is required content within the handoff, not a separate message or a new check.
40
+
35
41
  The handoff must include:
36
42
 
37
43
  - The URL of the running app.
@@ -41,11 +47,19 @@ The handoff must include:
41
47
  installation. Do not open it. This item makes the developer aware the dashboard is
42
48
  there, and it is a sentence to write rather than a check to perform. Nothing in this
43
49
  graph gates on the dashboard, so a dashboard this run never opened is not a finding,
44
- not a caveat, and not a blocker.
50
+ not a caveat, and not a blocker. Where this run settled a Learning Container, tell the
51
+ developer they can use their project there to follow progress, review Insights and
52
+ supporting conversations, and approve proposed Skills as they become available.
45
53
  - What changed since the developer approved the plan. Name every path, version, or step
46
54
  the run departed from, and why. A deviation can be the right call and still has to
47
55
  reach the person who approved the thing it departed from. Where nothing departed, say
48
56
  that in one line rather than leaving the item out.
57
+ - Every change to the existing agent's behavior: its system prompt or instructions, its
58
+ tools or what those tools do, its model or provider configuration, or its memory or
59
+ state handling. Name each one, name the file, and say the developer approved it. Where
60
+ none of them changed, write `none` on that line rather than leaving the item out. Such a
61
+ change answers differently everywhere the agent is used, not only in CopilotKit, and the
62
+ developer is the only one who can tell whether that is wanted.
49
63
  - The process IDs and stop commands for the running agent and frontend.
50
64
  - The `@copilotkit/*` versions this conversion changed, and what they were before.
51
65
  - On a conversion, the criterion this run was judged against, in the words the run was
@@ -70,19 +84,24 @@ Name the debugging surface this journey's frontend can reach, rather than the on
70
84
  of the documentation leads with. For a web frontend it is the CopilotKit Inspector. For
71
85
  React Native there is no Inspector: it is a browser overlay built on a DOM custom element,
72
86
  and `@copilotkit/react-native` does not ship it. Give a mobile developer
73
- `npx --yes copilotkit@4.12.0 verify --round-trip`, the runtime's own log, the AG-UI
87
+ `npx --yes copilotkit@4.13.1 verify --round-trip`, the runtime's own log, the AG-UI
74
88
  Event Inspector in the CopilotKit VS Code extension, and the CopilotKit Intelligence
75
89
  thread view
76
90
  instead. Naming the Inspector to a developer who cannot open it costs them the time it
77
91
  takes to conclude their own wiring is broken.
78
92
 
79
- Where this run settled a Learning Container, tell the developer what happens next, because
80
- a correct run looks like a broken one otherwise. Learning runs on its own: the first
81
- automatic run needs new threads from 15 distinct conversations in this container, and only
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.
93
+ Where this run settled a Learning Container, explain in your own words that new
94
+ conversations are routed to it, where Automatic Learning can find recurring patterns
95
+ and propose reusable Skills to help the agent improve. The developer controls which
96
+ Skills get approved. Explain that Learning results appear as new conversations provide
97
+ enough evidence.
98
+
99
+ These are required explanations within the existing handoff, not fixed wording or
100
+ additional actions. Describe only the setup supported by this run's evidence. Do not
101
+ claim this run produced Insights or Skills or configured automatic Skill delivery
102
+ unless its evidence proves that. If no container was configured, report the actual
103
+ reason and retain the project-management destination without implying that Learning
104
+ is collecting evidence.
86
105
 
87
106
  Where the Learning step was skipped because this organization cannot use Learning, say so in
88
107
  one line and name what was not created. A skip nobody names reads as a container that
@@ -95,7 +114,7 @@ the friction commands without another developer question. Do not ask the develop
95
114
  telemetry: the command applies the setting they already have.
96
115
 
97
116
  ```text
98
- npx --yes copilotkit@4.12.0 onboard friction --category <slug> --cost-seconds <seconds>
117
+ npx --yes copilotkit@4.13.1 onboard friction --category <slug> --cost-seconds <seconds>
99
118
  ```
100
119
 
101
120
  Write one or two sentences on the command's standard input. Pick one category from
@@ -107,7 +126,7 @@ Pass --docs-path only for a docs-missing or docs-wrong report, naming the page t
107
126
  is about:
108
127
 
109
128
  ```text
110
- npx --yes copilotkit@4.12.0 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer
129
+ npx --yes copilotkit@4.13.1 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer
111
130
  ```
112
131
 
113
132
  Give the page's site-relative path or its full URL, with no spaces, query string, or
@@ -124,14 +143,14 @@ Tell the developer when you send a friction report. Do not quote or summarize th
124
143
  unless the developer asks. If the CLI says the report was not sent,
125
144
  state what it said and continue without another question.
126
145
 
127
- When the evidence is gathered, run `npx --yes copilotkit@4.12.0 onboard complete`, carrying
146
+ When the evidence is gathered, run `npx --yes copilotkit@4.13.1 onboard complete`, carrying
128
147
  the surface-check outcome the proof subagent returned. Pass exactly one flag, and pass the
129
148
  one that matches this journey's surface.
130
149
 
131
150
  For a web frontend -- React SPA, Next.js, Angular, Vue:
132
151
 
133
152
  ```text
134
- npx --yes copilotkit@4.12.0 onboard complete --visual-check <outcome>
153
+ npx --yes copilotkit@4.13.1 onboard complete --visual-check <outcome>
135
154
  ```
136
155
 
137
156
  The outcome is one of `performed`, `skipped-no-browser-tool`, `skipped-cloned-starter`, or
@@ -141,7 +160,7 @@ open no browser. It is the one skip that does not block.
141
160
  For React Native:
142
161
 
143
162
  ```text
144
- npx --yes copilotkit@4.12.0 onboard complete --device-check <outcome>
163
+ npx --yes copilotkit@4.13.1 onboard complete --device-check <outcome>
145
164
  ```
146
165
 
147
166
  The outcome is one of `performed`, `skipped-no-device`, `skipped-cloned-starter`, or
@@ -154,7 +173,7 @@ browser-origin CORS, so the flag you pass is how this run states which surface i
154
173
  For a web frontend, also pass the URL the browser opened:
155
174
 
156
175
  ```text
157
- npx --yes copilotkit@4.12.0 onboard complete --visual-check <outcome> \
176
+ npx --yes copilotkit@4.13.1 onboard complete --visual-check <outcome> \
158
177
  --frontend-url <the url you opened>
159
178
  ```
160
179
 
@@ -173,7 +192,7 @@ If the round trip proved and something after it still blocked this run, add `--b
173
192
  to the same command:
174
193
 
175
194
  ```text
176
- npx --yes copilotkit@4.12.0 onboard complete --visual-check performed --blocked-by <cause>
195
+ npx --yes copilotkit@4.13.1 onboard complete --visual-check performed --blocked-by <cause>
177
196
  ```
178
197
 
179
198
  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.12.0 onboard read subagent/prove-oss-baseline` first and follow the
4
+ `npx --yes copilotkit@4.13.1 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.12.0 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
20
+ npx --yes copilotkit@4.13.1 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.12.0 onboard read conversion/plan`. That project already works.
38
+ `npx --yes copilotkit@4.13.1 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.12.0 onboard read credentials/plan`. This prompt is served
43
+ `npx --yes copilotkit@4.13.1 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.12.0 onboard read stopped/run-failed`. None of those mean the
57
+ `npx --yes copilotkit@4.13.1 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.12.0 onboard read subagent/prove-round-trip` first and follow the
4
+ `npx --yes copilotkit@4.13.1 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
@@ -33,13 +33,13 @@ pass the time.
33
33
  Report each attempt at the journey as it ends, counting from one:
34
34
 
35
35
  ```text
36
- npx --yes copilotkit@4.12.0 onboard checkpoint --phase journey-attempted --attempt 1
36
+ npx --yes copilotkit@4.13.1 onboard checkpoint --phase journey-attempted --attempt 1
37
37
  ```
38
38
 
39
39
  Record what that proof returned before you route on it:
40
40
 
41
41
  ```text
42
- npx --yes copilotkit@4.12.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
42
+ npx --yes copilotkit@4.13.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
43
43
  ```
44
44
 
45
45
  Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. The
@@ -47,7 +47,7 @@ command prints one line and sends nothing else. Where a repair cycle runs the pr
47
47
  record each attempt as it ends.
48
48
 
49
49
  For every protected-path audit in this prompt, run
50
- `npx --yes copilotkit@4.12.0 onboard audit` from the target app directory. If its result
50
+ `npx --yes copilotkit@4.13.1 onboard audit` from the target app directory. If its result
51
51
  starts with `Status: blocked`, report the printed reason and use the route-out rules below.
52
52
  A blocked audit proved nothing changed and is not a preservation failure. If a
53
53
  protected-path audit reports a changed path, decide it the way the implementation prompt
@@ -56,7 +56,7 @@ returns none, so a finding with no Files changed section to test against routes
56
56
  path one of those sections names is this run's own change and routes out too. Accept a
57
57
  path only when a section this run collected covers the step that wrote it and does not
58
58
  name it:
59
- `npx --yes copilotkit@4.12.0 onboard protect --accept-external --path <path>`. Then run
59
+ `npx --yes copilotkit@4.13.1 onboard protect --accept-external --path <path>`. Then run
60
60
  the audit again and name the path in the closing summary. Never repair, reset, or revert a
61
61
  protected path.
62
62
 
@@ -64,12 +64,12 @@ That holds for a repair cycle too. When the fix for a failing check lands on a p
64
64
  path, the path is still the developer's, however right the diagnosis is and however small
65
65
  the fix. Reading the file never settles who wrote it. Ask the developer to allow the
66
66
  change, and record their answer with
67
- `npx --yes copilotkit@4.12.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
67
+ `npx --yes copilotkit@4.13.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
68
68
  or route out. Never repair it, and never send it to a repair worker.
69
69
 
70
70
  If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
71
71
  `proof/complete` only if that audit passes. After the audit passes, run
72
- `npx --yes copilotkit@4.12.0 onboard read proof/complete`. A performed surface outcome with
72
+ `npx --yes copilotkit@4.13.1 onboard read proof/complete`. A performed surface outcome with
73
73
  the full round trip is core success even if a continued-development tool fails. A skipped
74
74
  surface outcome still enters `proof/complete` so the CLI records the blocked result. Do not
75
75
  describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
@@ -97,6 +97,17 @@ times. Use the route-out rules below for a blocked or third failed result.
97
97
  Enter the code-repair branch only for a source, configuration, dependency, or tracked-file
98
98
  defect.
99
99
 
100
+ The existing agent's behavior stays outside that branch. It is four things: the agent's
101
+ system prompt and instructions, its tools and what those tools do, its model and provider
102
+ configuration, and its memory or state handling. Repair a failing proof on the CopilotKit
103
+ side first -- the frontend rendering, the tool schema, the runtime wiring. Where the only
104
+ fix the repair worker can find is a change to the agent's instructions or tools, it stops
105
+ and returns the failing predicate with the change it proposes. Report both to the
106
+ developer and send that repair only after they approve it. An approved change is a
107
+ behavior change and the closing report names it as one. Never call a change to the agent's
108
+ instructions or tools a repair, and never send one to a repair worker without that
109
+ approval. If you cannot ask, or the developer declines, use the route-out rules below.
110
+
100
111
  If the starter shortcut created the selected path, spawn one repair subagent. Give it the
101
112
  failed step, proof evidence, generated path list, selected framework, frontend, model, exact
102
113
  target app directory, documentation, and policy.
@@ -125,7 +136,7 @@ Restart each project-owned process changed by the repair. Report the cycle, coun
125
136
  one:
126
137
 
127
138
  ```text
128
- npx --yes copilotkit@4.12.0 onboard checkpoint --phase repair-attempted --attempt 1
139
+ npx --yes copilotkit@4.13.1 onboard checkpoint --phase repair-attempted --attempt 1
129
140
  ```
130
141
 
131
142
  Then spawn a fresh proof subagent
@@ -143,18 +154,18 @@ and proof cycles.
143
154
 
144
155
  Route out only when the failure is not yours to fix, when the same proof still fails after
145
156
  three attempts, or when no evidence of the round trip can be produced. In those cases run
146
- `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. The stack is supported:
157
+ `npx --yes copilotkit@4.13.1 onboard read stopped/run-failed`. The stack is supported:
147
158
  this run did not finish, which is a different ending and a different report. All three are
148
159
  about the round trip itself. A round trip that proved is not one of them, whatever failed
149
160
  after it.
150
161
 
151
162
  If you stop here without taking that route -- a repair cycle you cannot finish, a limit in
152
163
  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.
164
+ friction command without another developer question: it applies the telemetry setting the
165
+ developer already set.
155
166
 
156
167
  ```text
157
- npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
168
+ npx --yes copilotkit@4.13.1 onboard friction --phase stop --category <slug>
158
169
  ```
159
170
 
160
171
  Write one or two sentences to standard input: the step you stopped at and what stopped it.
@@ -14,14 +14,12 @@ notification. Where your own harness hands you the report from the dispatch itse
14
14
  you already hold the result. Either way there is nothing to poll.
15
15
 
16
16
  After you dispatch, do the work that does not depend on the result -- dispatch the other
17
- subagent, run the preflight below -- and then stop and wait. Wherever a prompt in this graph
18
- says to wait for a subagent to finish, that is what it means.
17
+ subagent, run the preflight the next prompt gives you -- and then stop and wait. Wherever a
18
+ prompt in this graph says to wait for a subagent to finish, that is what it means.
19
19
 
20
20
  Do not sleep to pass the time. Not `sleep`, not `/bin/sleep`, not a timer under another
21
21
  name, and not a loop that re-checks whether a result has arrived. Sleeping tells you nothing
22
- that waiting for the result does not, and it spends wall clock, which is one of the things
23
- this journey is measured on. One recorded run spent most of two hours asleep between
24
- dispatches that had all returned in seconds.
22
+ that waiting for the result does not, and it spends wall clock.
25
23
 
26
24
  ## When a subagent cannot work
27
25
 
@@ -36,7 +34,7 @@ Both research subagents failing means this harness has no working subagent at al
36
34
  is worth recording once:
37
35
 
38
36
  ```text
39
- npx --yes copilotkit@4.12.0 onboard checkpoint --phase delegation-unavailable
37
+ npx --yes copilotkit@4.13.1 onboard checkpoint --phase delegation-unavailable
40
38
  ```
41
39
 
42
40
  Then say once, in your own words, that this environment has no working subagents, so you
@@ -49,7 +47,7 @@ Before you ask the developer any setup question, finish every read-only investig
49
47
  preflight check in this section.
50
48
 
51
49
  Prepare two research assignments. Give each research subagent one assignment. Tell it to run
52
- `npx --yes copilotkit@4.12.0 onboard read subagent/inspect-repository` first and follow the
50
+ `npx --yes copilotkit@4.13.1 onboard read subagent/inspect-repository` first and follow the
53
51
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
54
52
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
55
53
  and the same handoff. Require only its assigned packet.
@@ -60,108 +58,20 @@ Start both research subagents in parallel:
60
58
  2. Spawn a second research subagent. Assign it the environment evidence packet.
61
59
  3. Start both research subagents. Then continue.
62
60
 
63
- Continue to the surface-control preflight.
64
-
65
- Prove whether your coding-agent environment has browser or device control. Do not assume it
66
- either way, and do not report what you expect to be true: a run that guesses here records a
67
- capability every later step then trusts. Use a browser or device tool already
68
- configured for the coding agent you are running as, the same way a later step uses the
69
- CopilotKit documentation server. With a browser tool, open one inert page such as
70
- `about:blank` and read its title. With a device tool and no browser, list the booted devices
71
- in one command: `adb devices -l`. Record the outcome of that attempt: `available` when the
72
- tool answered, `unavailable` when there was none to call or the page did not open. Use
73
- the control that matches the selected surface later.
74
-
75
- Where the browser probe answered, register nothing. The harness came equipped and the run
76
- owes it no setup.
77
-
78
- Where no browser tool answered, register one for the coding agent you are running as, then
79
- run the same probe again and record what the second attempt did. Register this server:
80
-
81
- ```text
82
- npx --yes @playwright/mcp@latest --browser chrome --isolated --output-dir <project>/.copilotkit/proof/browser
83
- ```
84
-
85
- Replace `<project>` with the absolute path of the target project directory. The server is
86
- registered against the coding agent rather than against a directory, so a relative path here
87
- resolves wherever that server happens to start.
88
-
89
- `--browser chrome` drives the Google Chrome the developer already has, so this downloads no
90
- browser. `--isolated` keeps the profile in memory, so it never touches their own Chrome
91
- profile. `--output-dir` is what keeps the snapshots and screenshots out of the developer's
92
- repository root: without it this server writes them to `.playwright-mcp/` beside their code,
93
- which a project that never asked for a browser has no reason to carry, and which this setup's
94
- own evidence rule already has a place for. Register it the way your own harness registers a
95
- server, which is the mechanism a later step uses for the CopilotKit documentation server.
96
-
97
- Tell the developer in one line what you registered, that it drives their installed Chrome,
98
- and that it lives in this coding agent's configuration rather than in their repository. Do
99
- not ask them to approve it, and do not ask a second question about it.
100
-
101
- Do not add a browser or device driver to the project. A driver added there is a
102
- devDependency and a browser download in the diff of a repository that never asked for one,
103
- which is a different thing from a server registered against the coding agent.
104
-
105
- Where the second probe still does not answer -- no Chrome to drive, no network, or a
106
- harness that cannot register a server -- record `unavailable` and carry it. Do not keep
107
- trying, and do not ask the developer about this tool limit.
108
-
109
- Registering a server does not boot a device. Where the device probe found none, that is the
110
- whole finding, and a browser is not a substitute for a device.
111
-
112
- Wait for both research subagents to finish.
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
-
128
- Then report that the research came back:
61
+ Report that both subagents started:
129
62
 
130
63
  ```text
131
- npx --yes copilotkit@4.12.0 onboard checkpoint --phase research-returned
64
+ npx --yes copilotkit@4.13.1 onboard checkpoint --phase research-dispatched
132
65
  ```
133
66
 
134
67
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
135
68
  failed step.
136
69
 
137
- Continue only if both research results start with `Status: passed`. For `Status: failed`,
138
- retry only that packet with its failed items, up to three attempts. For `Status: blocked`,
139
- or a third failed result, use the stop route at the end of this prompt.
70
+ The research is under way. Continue to the surface-control preflight while it runs:
140
71
 
141
- Merge both evidence packets by item. On a conflict, spawn one fresh read-only verifier with
142
- the item, both cited findings, and the research limits. Require its result to start with
143
- `Status: passed`, `Status: failed`, or `Status: blocked`. Use only a passed cited result. Do
144
- not inspect the project to settle the conflict yourself. Use the stop route for a non-pass
145
- verifier result.
146
-
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.
162
-
163
- When both research results are merged, run
164
- `npx --yes copilotkit@4.12.0 onboard read research/route`.
72
+ ```text
73
+ npx --yes copilotkit@4.13.1 onboard read research/preflight
74
+ ```
165
75
 
166
76
  If inspection stops onboarding, run
167
- `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`.
77
+ `npx --yes copilotkit@4.13.1 onboard read stopped/run-failed`.
@@ -0,0 +1,60 @@
1
+ # Merge the research and settle the port
2
+
3
+ The surface is settled. This phase collects both research packets, picks the port the rest
4
+ of the run uses, and merges the findings into one answer.
5
+
6
+ Wait for both research subagents to finish.
7
+
8
+ ## Settle the port
9
+
10
+ The findings name the ports this project declares and the ports already held on this
11
+ machine. Pick one free port for the frontend now, and use that number for the rest of the
12
+ run: in the plan, in the implementation, and in the proof. Record it with the findings you
13
+ hand to every later subagent.
14
+
15
+ Do not let a later step pick again. A run that decides the port three times produces three
16
+ numbers, and `verify` reads none of them: with no recorded URL it assumes port 3000, and
17
+ whatever holds that port answers.
18
+
19
+ Project selection is where the settled port is written down, through `--runtime-url`.
20
+
21
+ Then report that the research came back:
22
+
23
+ ```text
24
+ npx --yes copilotkit@4.13.1 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
+ Continue only if both research results start with `Status: passed`. For `Status: failed`,
31
+ retry only that packet with its failed items, up to three attempts. For `Status: blocked`,
32
+ or a third failed result, use the stop route at the end of this prompt.
33
+
34
+ Merge both evidence packets by item. On a conflict, spawn one fresh read-only verifier with
35
+ the item, both cited findings, and the research limits. Require its result to start with
36
+ `Status: passed`, `Status: failed`, or `Status: blocked`. Use only a passed cited result. Do
37
+ not inspect the project to settle the conflict yourself. Use the stop route for a non-pass
38
+ verifier result.
39
+
40
+ A target project directory that holds no project has no app directory to key on, and
41
+ 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
43
+ check, and do not use the stop route: neither worker can find a directory a developer has
44
+ not created yet, and the route below is where such a project picks its starter.
45
+
46
+ A directory holding only a Git repository, a coding agent's own configuration, editor
47
+ settings or scratch notes holds no project. `onboard inspect` reports that as
48
+ `appDiscovery.reason` of `no-project`.
49
+
50
+ For a target project that does hold an app, match environment evidence to the target app
51
+ directory from the project packet. Require one target app directory and one matching
52
+ environment row. If either packet gives no match or more than one match, send each research
53
+ worker a focused directory check. Continue only when both workers return the same one target
54
+ app directory. Both results must start with `Status: passed`. Otherwise, use the stop route.
55
+
56
+ When both research results are merged, run
57
+ `npx --yes copilotkit@4.13.1 onboard read research/route`.
58
+
59
+ If inspection stops onboarding, run
60
+ `npx --yes copilotkit@4.13.1 onboard read stopped/run-failed`.
@@ -0,0 +1,75 @@
1
+ # Prove what this environment can drive
2
+
3
+ The research subagents are running. This phase settles what your coding agent can drive, so
4
+ every later step reads one recorded answer instead of guessing. Do not change application
5
+ code here, and do not wait for the research packets yet.
6
+
7
+ Prove whether your coding-agent environment has browser or device control. Do not assume it
8
+ either way, and do not report what you expect to be true. Use a browser or device tool already
9
+ configured for the coding agent you are running as, the same way a later step uses the
10
+ CopilotKit documentation server. With a browser tool, open one inert page such as
11
+ `about:blank` and read its title. With a device tool and no browser, list the booted devices
12
+ in one command: `adb devices -l`. Record the outcome of that attempt: `available` when the
13
+ tool answered, `unavailable` when there was none to call or the page did not open. Use
14
+ the control that matches the selected surface later.
15
+
16
+ Where the browser probe answered, register nothing. The harness came equipped.
17
+
18
+ Where no browser tool answered, register one for the coding agent you are running as, then
19
+ run the same probe again and record what the second attempt did.
20
+
21
+ Tell the developer in one line what you are about to register, that it lives in this coding
22
+ agent's configuration rather than in their repository, and that they can remove it again.
23
+ Say that before you run the command. The run does not ask again.
24
+
25
+ Register this server:
26
+
27
+ ```text
28
+ npx --yes @playwright/mcp@latest --browser chrome --isolated --output-dir <project>/.copilotkit/proof/browser
29
+ ```
30
+
31
+ Replace `<project>` with the absolute path of the target project directory. The server is
32
+ registered against the coding agent rather than against a directory, so a relative path here
33
+ resolves wherever that server happens to start.
34
+
35
+ `--browser chrome` drives an installed Google Chrome. Where this machine has none, use
36
+ `--browser chromium` instead and expect Playwright to download a browser build. Tell the
37
+ developer before that download starts. If the server then reports no build, run
38
+ `npx playwright install chromium`, and if it still cannot find one, run
39
+ `npx @playwright/mcp install-browser chrome-for-testing`. `--isolated` keeps the profile in
40
+ memory, so it never touches their own Chrome profile. `--output-dir` keeps the snapshots and
41
+ screenshots out of the developer's repository root: without it this server writes them to
42
+ `.playwright-mcp/` beside their code, which a project that never asked for a browser has no
43
+ reason to carry. Register it the way your own harness registers a server, which is the
44
+ mechanism a later step uses for the CopilotKit documentation server.
45
+
46
+ Some coding agents, Claude Code among them, load a newly registered MCP server only at the
47
+ next session start. Tell the developer in one line to expect one restart, then restart and
48
+ re-bind with `npx --yes copilotkit@4.13.1 onboard start --run <onboarding_run_id>`. That
49
+ restart is a step here, not an error.
50
+
51
+ Do not add a browser or device driver to the project. A driver added there is a
52
+ devDependency and a browser download in the diff of a repository that never asked for one,
53
+ which is a different thing from a server registered against the coding agent.
54
+
55
+ Where the second probe still does not answer -- no browser to drive, no network, or a
56
+ harness that cannot register a server -- record `unavailable` and carry it. Do not keep
57
+ trying. Say so in one line. Nothing here is for the developer to decide.
58
+
59
+ Registering a server does not boot a device. Where the device probe found none, that is the
60
+ whole finding.
61
+
62
+ Report that the probe settled, whichever way it came out:
63
+
64
+ ```text
65
+ npx --yes copilotkit@4.13.1 onboard checkpoint --phase surface-probed
66
+ ```
67
+
68
+ Then merge the research:
69
+
70
+ ```text
71
+ npx --yes copilotkit@4.13.1 onboard read research/merge
72
+ ```
73
+
74
+ If inspection stops onboarding, run
75
+ `npx --yes copilotkit@4.13.1 onboard read stopped/run-failed`.
@@ -9,7 +9,7 @@ sends the run down one path.
9
9
  Before you route on, run this from the target app directory:
10
10
 
11
11
  ```text
12
- npx --yes copilotkit@4.12.0 onboard protect
12
+ npx --yes copilotkit@4.13.1 onboard protect
13
13
  ```
14
14
 
15
15
  It reads the working tree itself, records every changed or untracked path with a digest,
@@ -28,6 +28,30 @@ graph exists to create is never stopped by them.
28
28
  If the result starts with `Status: blocked`, report the printed reason and use the stop
29
29
  route at the end of this prompt.
30
30
 
31
+ ## Route a named Channel before the findings
32
+
33
+ The prompt the developer copied names the docs page it came from. A Slack or Teams docs
34
+ page names the surface this run is for. So does a developer who has already said Slack or
35
+ Microsoft Teams. Either one settles the frontend.
36
+
37
+ Record that docs page and give it to every later node and subagent. The copied prompt is
38
+ the only carrier of the surface the developer wants, and no flag states it.
39
+
40
+ On either, run this before you read the three findings below, and without asking the
41
+ purpose question:
42
+
43
+ ```text
44
+ npx --yes copilotkit@4.13.1 onboard read feature/channels/start
45
+ ```
46
+
47
+ Name the provider to that node so it does not ask again. A Slack page names Slack. A Teams
48
+ page names Teams.
49
+
50
+ Take this route whatever the three findings prove. An agent, a frontend and a CopilotKit
51
+ integration are a valid start for a Channel, not a reason to convert the application: the
52
+ run keeps that code as it is and wires a managed Channel onto it. Do not send a Channel
53
+ request to the conversion route.
54
+
31
55
  ## What the merged findings must contain
32
56
 
33
57
  If a repository file exists, each finding must cite it. For an empty project, the subagents
@@ -72,7 +96,7 @@ settle these three from your own reading of the project. Each one comes from the
72
96
  packets or it is not proved.
73
97
 
74
98
  If all three are proved, prove the live starting state before any project file changes. Run
75
- `npx --yes copilotkit@4.12.0 onboard read proof/oss-baseline`.
99
+ `npx --yes copilotkit@4.13.1 onboard read proof/oss-baseline`.
76
100
 
77
101
  Route there before you ask the developer anything else. The questions after this prompt
78
102
  select a framework and a frontend that the findings already name, so a developer who
@@ -83,9 +107,9 @@ these three findings.
83
107
  For every other combination of the three, take one more step first. If neither the
84
108
  developer nor the repository findings prove what the project is for, ask one guided
85
109
  question about the user outcome. This asks what the developer wants to build before you
86
- select a framework. Give two or three short examples and offer a minimal starter. Record
87
- the answer and give it to each later subagent. Then run
88
- `npx --yes copilotkit@4.12.0 onboard read credentials/plan`.
110
+ select a framework. Give two or three short examples. Record the answer and give it to
111
+ each later subagent. Then run
112
+ `npx --yes copilotkit@4.13.1 onboard read credentials/plan`.
89
113
 
90
114
  Do not ask that question on the route above. A project carrying all three states its
91
115
  purpose in the application it already serves.
@@ -97,5 +121,5 @@ A purpose question here names a domain before that choice.
97
121
  Take the same read named above without asking.
98
122
 
99
123
  If authentication or inspection stops onboarding, run
100
- `npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. Neither says anything
124
+ `npx --yes copilotkit@4.13.1 onboard read stopped/run-failed`. Neither says anything
101
125
  about whether this project's stack is supported, which is not yet known at this point.