copilotkit 4.17.0 → 4.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +133 -6
  2. package/cli-build-info.json +7 -7
  3. package/exporters/langgraph/README.md +118 -0
  4. package/exporters/langgraph/export_checkpointer.py +125 -0
  5. package/index.js +13382 -9313
  6. package/onboarding/index.json +1 -1
  7. package/onboarding/prompts/authenticate/start.md +31 -23
  8. package/onboarding/prompts/conversion/plan.md +3 -3
  9. package/onboarding/prompts/credentials/finalize-plan.md +57 -200
  10. package/onboarding/prompts/credentials/plan.md +50 -23
  11. package/onboarding/prompts/credentials/settle-credentials.md +56 -217
  12. package/onboarding/prompts/credentials/write-plan.md +17 -8
  13. package/onboarding/prompts/fallback/best-effort.md +36 -24
  14. package/onboarding/prompts/feature/a2ui/implement.md +7 -7
  15. package/onboarding/prompts/feature/a2ui/proof.md +8 -8
  16. package/onboarding/prompts/feature/a2ui/start.md +53 -9
  17. package/onboarding/prompts/feature/channels/implement.md +8 -8
  18. package/onboarding/prompts/feature/channels/proof.md +7 -7
  19. package/onboarding/prompts/feature/channels/start.md +50 -7
  20. package/onboarding/prompts/feature/chat-suggestions/implement.md +7 -7
  21. package/onboarding/prompts/feature/chat-suggestions/proof.md +7 -7
  22. package/onboarding/prompts/feature/chat-suggestions/start.md +50 -7
  23. package/onboarding/prompts/feature/complete.md +2 -2
  24. package/onboarding/prompts/feature/learning/implement.md +24 -19
  25. package/onboarding/prompts/feature/learning/proof.md +8 -8
  26. package/onboarding/prompts/feature/learning/start.md +43 -20
  27. package/onboarding/prompts/feature/open-generative-ui/implement.md +7 -7
  28. package/onboarding/prompts/feature/open-generative-ui/proof.md +7 -7
  29. package/onboarding/prompts/feature/open-generative-ui/start.md +50 -7
  30. package/onboarding/prompts/feature/realtime-sync/implement.md +8 -8
  31. package/onboarding/prompts/feature/realtime-sync/proof.md +7 -7
  32. package/onboarding/prompts/feature/realtime-sync/start.md +49 -6
  33. package/onboarding/prompts/feature/rich-threads/implement.md +9 -9
  34. package/onboarding/prompts/feature/rich-threads/proof.md +7 -7
  35. package/onboarding/prompts/feature/rich-threads/start.md +49 -6
  36. package/onboarding/prompts/feature/stop.md +5 -5
  37. package/onboarding/prompts/feature/voice/implement.md +7 -7
  38. package/onboarding/prompts/feature/voice/proof.md +7 -7
  39. package/onboarding/prompts/feature/voice/start.md +50 -7
  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 +8 -3
  54. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +8 -3
  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 +3 -3
  60. package/onboarding/prompts/frontend/nextjs.md +3 -3
  61. package/onboarding/prompts/frontend/plan.md +9 -8
  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 +27 -20
  66. package/onboarding/prompts/proof/complete.md +35 -19
  67. package/onboarding/prompts/proof/oss-baseline.md +5 -5
  68. package/onboarding/prompts/proof/round-trip.md +29 -20
  69. package/onboarding/prompts/research/gather.md +6 -6
  70. package/onboarding/prompts/research/merge.md +5 -4
  71. package/onboarding/prompts/research/preflight.md +15 -50
  72. package/onboarding/prompts/research/route.md +7 -6
  73. package/onboarding/prompts/starter/clone.md +8 -7
  74. package/onboarding/prompts/stopped/run-failed.md +4 -4
  75. package/onboarding/prompts/subagent/create-plan.md +19 -1
  76. package/onboarding/prompts/subagent/inspect-repository.md +18 -3
  77. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  78. package/onboarding/prompts/subagent/prove-round-trip.md +106 -62
  79. package/onboarding/prompts/unsupported/no-validated-path.md +4 -4
  80. package/package.json +1 -1
  81. package/release/release-tool.js +28 -5
@@ -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.17.0 onboard read subagent/prove-round-trip` first and follow the
4
+ `npx --prefer-offline --yes copilotkit@4.19.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
@@ -33,21 +35,22 @@ pass the time.
33
35
  Report each attempt at the journey as it ends, counting from one:
34
36
 
35
37
  ```text
36
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase journey-attempted --attempt 1
38
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase journey-attempted --attempt 1
37
39
  ```
38
40
 
39
41
  Record what that proof returned before you route on it:
40
42
 
41
43
  ```text
42
- npx --prefer-offline --yes copilotkit@4.17.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
44
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
43
45
  ```
44
46
 
45
- Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. The
46
- command prints one line and sends nothing else. Where a repair cycle runs the proof again,
47
+ Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. A
48
+ round trip that `verify --round-trip` ran and saw fail is `failed`, and the command refuses
49
+ to record it as `skipped`. The command prints one line and sends nothing else. Where a repair cycle runs the proof again,
47
50
  record each attempt as it ends.
48
51
 
49
52
  For every protected-path audit in this prompt, run
50
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard audit` from the target app directory. If its result
53
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard audit` from the target app directory. If its result
51
54
  starts with `Status: blocked`, report the printed reason and use the route-out rules below.
52
55
  A blocked audit proved nothing changed and is not a preservation failure. If a
53
56
  protected-path audit reports a changed path, decide it the way the implementation prompt
@@ -56,7 +59,7 @@ returns none, so a finding with no Files changed section to test against routes
56
59
  path one of those sections names is this run's own change and routes out too. Accept a
57
60
  path only when a section this run collected covers the step that wrote it and does not
58
61
  name it:
59
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --accept-external --path <path>`. Then run
62
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard protect --accept-external --path <path>`. Then run
60
63
  the audit again and name the path in the closing summary. Never repair, reset, or revert a
61
64
  protected path.
62
65
 
@@ -64,17 +67,23 @@ That holds for a repair cycle too. When the fix for a failing check lands on a p
64
67
  path, the path is still the developer's, however right the diagnosis is and however small
65
68
  the fix. Reading the file never settles who wrote it. Ask the developer to allow the
66
69
  change, and record their answer with
67
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
70
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
68
71
  or route out. Never repair it, and never send it to a repair worker.
69
72
 
70
73
  If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
71
74
  `proof/complete` only if that audit passes. After the audit passes, run
72
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read proof/complete`. A performed surface outcome with
75
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read proof/complete`. A performed surface outcome with
73
76
  the full round trip is core success even if a continued-development tool fails. A skipped
74
- surface outcome still enters `proof/complete` so the CLI records the blocked result.
75
- `skipped-cloned-starter` is the exception: the CLI records that run as complete. Do not
76
- describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
77
- result.
77
+ surface outcome still enters `proof/complete`. The CLI records `skipped-cloned-starter` and
78
+ `skipped-no-browser-tool` after a passed round trip as complete, and `skipped-no-device` as
79
+ blocked. Do not describe a
80
+ skipped surface as proved. Keep the Skills result separate from the proof result.
81
+
82
+ A passed result can carry the surface-check outcome `failed` with the cause
83
+ `browser-control-unresponsive`. It means that the browser tool stopped answering, not that
84
+ the journey failed. Record the round trip as `passed`, and carry the cause to
85
+ `proof/complete`. Do not send it to a repair worker, and do not run the proof again. No
86
+ repair to the project reaches the tool, and a second attempt waits on the same hang.
78
87
 
79
88
  If the round trip proves and something after it blocks this run anyway -- the debugging
80
89
  surface, or a capability the approved plan already excluded for this framework -- read
@@ -147,7 +156,7 @@ Restart each project-owned process changed by the repair. Report the cycle, coun
147
156
  one:
148
157
 
149
158
  ```text
150
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase repair-attempted --attempt 1
159
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase repair-attempted --attempt 1
151
160
  ```
152
161
 
153
162
  Then spawn a fresh proof subagent
@@ -165,18 +174,18 @@ proof cycles, use the route-out rules below.
165
174
 
166
175
  Route out only when the failure is not yours to fix, when the same proof still fails after
167
176
  three attempts, or when no evidence of the round trip can be produced. In those cases run
168
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`. The stack is supported:
177
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read stopped/run-failed`. The stack is supported:
169
178
  this run did not finish, which is a different ending and a different report. All three are
170
179
  about the round trip itself. A round trip that proved is not one of them, whatever failed
171
180
  after it.
172
181
 
173
182
  If you stop here without taking that route -- a repair cycle you cannot finish, a limit in
174
- your own harness, a run that has run out -- send one short report before you stop. Run the
175
- friction command without another developer question: it applies the telemetry setting the
176
- developer already set.
183
+ your own harness, a run that has run out -- send one short report before you stop. The
184
+ friction command follows the telemetry setting the developer already chose, so it needs no
185
+ separate question.
177
186
 
178
187
  ```text
179
- npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
188
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard friction --phase stop --category <slug> --message "<sentences>"
180
189
  ```
181
190
 
182
191
  `--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.17.0 onboard checkpoint --phase awaiting-developer
47
+ npx --prefer-offline --yes copilotkit@4.19.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.17.0 onboard checkpoint --phase delegation-unavailable
67
+ npx --prefer-offline --yes copilotkit@4.19.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.17.0 onboard read subagent/inspect-repository` first and follow the
80
+ `npx --prefer-offline --yes copilotkit@4.19.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.
@@ -91,7 +91,7 @@ Start both research subagents in parallel:
91
91
  Report that both subagents started:
92
92
 
93
93
  ```text
94
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase research-dispatched
94
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase research-dispatched
95
95
  ```
96
96
 
97
97
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
@@ -100,8 +100,8 @@ failed step.
100
100
  The research is under way. Continue to the surface-control preflight while it runs:
101
101
 
102
102
  ```text
103
- npx --prefer-offline --yes copilotkit@4.17.0 onboard read research/preflight
103
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard read research/preflight
104
104
  ```
105
105
 
106
106
  If inspection stops onboarding, run
107
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`.
107
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read stopped/run-failed`.
@@ -21,7 +21,7 @@ Project selection is where the settled port is written down, through `--runtime-
21
21
  Then report that the research came back:
22
22
 
23
23
  ```text
24
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase research-returned
24
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase research-returned
25
25
  ```
26
26
 
27
27
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
@@ -39,7 +39,8 @@ verifier result.
39
39
 
40
40
  A target project directory that holds no project has no app directory to key on, and
41
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
42
+ directory and no environment row. Keep the toolchain reading: it is about this machine, not
43
+ a directory, and the framework question reads it. Then take the read below. Do not send a focused directory
43
44
  check, and do not use the stop route: neither worker can find a directory a developer has
44
45
  not created yet, and the route below is where such a project picks its starter.
45
46
 
@@ -54,7 +55,7 @@ worker a focused directory check. Continue only when both workers return the sam
54
55
  app directory. Both results must start with `Status: passed`. Otherwise, use the stop route.
55
56
 
56
57
  When both research results are merged, run
57
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read research/route`.
58
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read research/route`.
58
59
 
59
60
  If inspection stops onboarding, run
60
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`.
61
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read stopped/run-failed`.
@@ -5,71 +5,36 @@ every later step reads one recorded answer instead of guessing. Do not change ap
5
5
  code here, and do not wait for the research packets yet.
6
6
 
7
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
8
+ either way, and do not report what you expect to be true. Use a browser or device tool that
9
+ is already loaded in this session. With a browser tool, open one inert page such as
11
10
  `about:blank` and read its title. With a device tool and no browser, list the booted devices
12
11
  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.
12
+ tool answered, `unavailable` when there was none to call or the page did not open. Use the
13
+ control that matches the selected surface later.
15
14
 
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 --prefer-offline --yes copilotkit@4.17.0 onboard start --run <onboarding_run_id>`. That
49
- restart is a step here, not an error.
15
+ Register nothing. Do not add a browser MCP server to this coding agent, and do not install a
16
+ browser. A server registered during a run loads only in the next session, so it cannot help
17
+ this one. Where no tool answered, the run still completes: the proof step reports
18
+ `skipped-no-browser-tool`, and the closing report tells the developer how to add a browser
19
+ for their next session. Say in one line that the live UI check will be skipped and that the
20
+ run can still complete.
50
21
 
51
22
  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.
23
+ devDependency and a browser download in the diff of a repository that never asked for one.
58
24
 
59
- Registering a server does not boot a device. Where the device probe found none, that is the
60
- whole finding.
25
+ Where the device probe found no booted device, that is the whole finding.
61
26
 
62
27
  Report that the probe settled, whichever way it came out:
63
28
 
64
29
  ```text
65
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase surface-probed
30
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase surface-probed
66
31
  ```
67
32
 
68
33
  Then merge the research:
69
34
 
70
35
  ```text
71
- npx --prefer-offline --yes copilotkit@4.17.0 onboard read research/merge
36
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard read research/merge
72
37
  ```
73
38
 
74
39
  If inspection stops onboarding, run
75
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`.
40
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read stopped/run-failed`.
@@ -9,11 +9,12 @@ 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 --prefer-offline --yes copilotkit@4.17.0 onboard protect
12
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard protect
13
13
  ```
14
14
 
15
15
  It reads the working tree itself, records every changed or untracked path with a digest,
16
- and prints the list. Require its result to start with `Status: passed`.
16
+ and prints the list. Require its result to start with `Status: passed`. On a restart of the
17
+ same run, it prints the baseline the run already holds and re-reads nothing.
17
18
 
18
19
  Use the printed list as the protected path list for the rest of the run. Do not assemble
19
20
  that list yourself, and do not ask a subagent to hold it: every later audit reads the
@@ -41,7 +42,7 @@ On either, run this before you read the three findings below, and without asking
41
42
  purpose question:
42
43
 
43
44
  ```text
44
- npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/channels/start
45
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard read feature/channels/start
45
46
  ```
46
47
 
47
48
  Name the provider to that node so it does not ask again. A Slack page names Slack. A Teams
@@ -96,7 +97,7 @@ settle these three from your own reading of the project. Each one comes from the
96
97
  packets or it is not proved.
97
98
 
98
99
  If all three are proved, prove the live starting state before any project file changes. Run
99
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read proof/oss-baseline`.
100
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read proof/oss-baseline`.
100
101
 
101
102
  Route there before you ask the developer anything else. The questions after this prompt
102
103
  select a framework and a frontend that the findings already name, so a developer who
@@ -109,7 +110,7 @@ developer nor the repository findings prove what the project is for, ask one gui
109
110
  question about the user outcome. This asks what the developer wants to build before you
110
111
  select a framework. Give two or three short examples. Record the answer and give it to
111
112
  each later subagent. Then run
112
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read credentials/plan`.
113
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read credentials/plan`.
113
114
 
114
115
  Do not ask that question on the route above. A project carrying all three states its
115
116
  purpose in the application it already serves.
@@ -123,5 +124,5 @@ A purpose question here names a domain before that choice.
123
124
  Take the same read named above without asking.
124
125
 
125
126
  If authentication, inspection, or the baseline capture stops onboarding, run
126
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`. None of them says anything
127
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read stopped/run-failed`. None of them says anything
127
128
  about whether this project's stack is supported, which is not yet known at this point.
@@ -55,7 +55,7 @@ the derived name.
55
55
  Only if the developer asks for an existing project, or asks to see the projects they have,
56
56
  read the choices:
57
57
 
58
- `npx --prefer-offline --yes copilotkit@4.17.0 project list --json`
58
+ `npx --prefer-offline --yes copilotkit@4.19.0 project list --json`
59
59
 
60
60
  Then ask which one to use. Do not order the projects by creation time. If the developer
61
61
  already gave this answer, do not ask again. Do not read a secret value. Do not show or
@@ -82,7 +82,7 @@ Run the command from the parent directory. Do not inspect another entry in the p
82
82
  directory. Replace each placeholder with the recorded value. Do not run a placeholder as
83
83
  a shell argument. If the directory name holds a space, put it in double quotes.
84
84
 
85
- `npx --prefer-offline --yes copilotkit@4.17.0 init --name <directory-name> --framework <framework-id> --channel none --no-banner --no-key-prompt --create <name> --install`
85
+ `npx --prefer-offline --yes copilotkit@4.19.0 init --name <directory-name> --framework <framework-id> --channel none --no-banner --no-key-prompt --create <name> --install`
86
86
 
87
87
  `--name` is always the target directory name derived above, because `init` creates the
88
88
  app at `<parent>/<name>`. Any other value puts the app in a new folder beside the target,
@@ -108,7 +108,7 @@ account. The command does not need terminal input.
108
108
  Report the clone before you inspect anything:
109
109
 
110
110
  ```text
111
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase starter-cloned
111
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase starter-cloned
112
112
  ```
113
113
 
114
114
  This is its own step, not an aside. A run that clones and then goes quiet is
@@ -149,10 +149,11 @@ The two Microsoft Agent Framework starters keep their key outside `<target>/.env
149
149
  `cd <target>/agent && dotnet user-secrets set OPENAI_API_KEY "<key>"` themselves, even
150
150
  if they named a key file.
151
151
 
152
- Then report the pause and end your turn:
152
+ When you ask, name each variable and the file it goes in, and say that the run continues
153
+ when they reply or resume this session. Then report the pause and end your turn:
153
154
 
154
155
  ```text
155
- npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase awaiting-developer
156
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard checkpoint --phase awaiting-model-credential
156
157
  ```
157
158
 
158
159
  This is a pause, not a stop. Do not send a stop report, and do not take a stop route.
@@ -163,10 +164,10 @@ call.
163
164
 
164
165
  If no credential is missing, report no pause and continue.
165
166
 
166
- Then run `npx --prefer-offline --yes copilotkit@4.17.0 onboard read proof/round-trip`.
167
+ Then run `npx --prefer-offline --yes copilotkit@4.19.0 onboard read proof/round-trip`.
167
168
 
168
169
  If the command fails, report its exact error and do not claim that the starter is ready.
169
170
  Then run
170
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read stopped/run-failed`. The starter is one this
171
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read stopped/run-failed`. The starter is one this
171
172
  graph ships and the stack was chosen from its own supported list, so a command that
172
173
  returned an error is a run that broke, not a setup this release does not support.
@@ -41,7 +41,7 @@ put to them, stop here and send the report below.
41
41
  If they approve it, make that one fix and nothing else. Then come back into this run:
42
42
 
43
43
  ```text
44
- npx --prefer-offline --yes copilotkit@4.17.0 onboard resume --message "<approval>"
44
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard resume --message "<approval>"
45
45
  ```
46
46
 
47
47
  Put the developer's approval in `--message`, in one or two sentences: the fix they
@@ -60,11 +60,11 @@ said and stop.
60
60
 
61
61
  Stop onboarding without making more repository changes.
62
62
 
63
- Send one short report. Run the friction command without another developer question. Do not
64
- ask the developer about telemetry: the command applies the setting they already have.
63
+ Send one short report. The friction command follows the telemetry setting the developer
64
+ already chose, so it needs no separate question.
65
65
 
66
66
  ```text
67
- npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
67
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard friction --phase stop --category <slug> --message "<sentences>"
68
68
  ```
69
69
 
70
70
  `--message` takes one or two sentences: the step you stopped at and what stopped
@@ -103,6 +103,15 @@ it moves to. The `@ag-ui/*` packages are the CopilotKit protocol layer, on their
103
103
  line, so they are the ones this meets most often, but the rule is the intersection rather
104
104
  than that namespace.
105
105
 
106
+ A package the plan adds that a `@copilotkit/*` or `@ag-ui/*` package also depends on, such
107
+ as `zod`, takes the version that tree resolves, not the latest published one. A peer range
108
+ does not settle it. `@copilotkit/react-core@1.75.0` declares `zod >=3.25`, while
109
+ `@ag-ui/core@0.0.59` requires `zod ^3.22.4`, so a plan that adds zod 4 installs two copies.
110
+ Read the range with `npm view @ag-ui/core@<version> dependencies`, for the `@ag-ui/core`
111
+ version the target `@copilotkit/*` release requires, and plan the latest version inside it.
112
+ Where the project already depends on that package, keep its version if that tree accepts
113
+ it. Otherwise name the move as above.
114
+
106
115
  The intersection includes what a `@copilotkit/*` package on its own version line declares
107
116
  about the `1.x` line. `@copilotkit/angular` is the one that has this, and its declaration
108
117
  is materialized at publish time rather than written in the repository, so read it from the
@@ -174,7 +183,7 @@ here is work the developer did not ask for.
174
183
  Plan the threads drawer itself: add it from the selected drawer page, where this frontend
175
184
  does not already render one. Where this journey's frontend framework ships no threads
176
185
  drawer -- React Native --, plan that the thread is proved by
177
- `npx --prefer-offline --yes copilotkit@4.17.0 verify --round-trip`, which needs no browser. Do not plan a
186
+ `npx --prefer-offline --yes copilotkit@4.19.0 verify --round-trip`, which needs no browser. Do not plan a
178
187
  step that opens the managed Intelligence dashboard.
179
188
 
180
189
  ## Order the plan into steps
@@ -219,6 +228,15 @@ to make a build pass during onboarding.
219
228
 
220
229
  The type check runs against the project's own configuration. If the project has no
221
230
  type-check command, add one that uses the configuration the project already has.
231
+ Where the repository findings carry a `typescript.migration` for an app, plan it as its
232
+ own step, before the first step that imports a CopilotKit package in that app. Name the
233
+ migration `file` and each change in `changes`, and give its `reason` in one sentence.
234
+ Under `node` or `node10` resolution, TypeScript ignores a package's `exports` map, so
235
+ every CopilotKit subpath import fails the type check while the app still runs. A plan
236
+ without this step stops after approval to ask for it. If the file is a protected path,
237
+ list it under `Authorization requested`. Where no migration is reported, do not change
238
+ `moduleResolution` or `module`. This change does not weaken type safety.
239
+
222
240
  Do not add compiler strictness the project did not have. Nothing later in the run is
223
241
  allowed to weaken type safety, so a stricter gate named here is one the run cannot get
224
242
  back out of.
@@ -7,7 +7,7 @@ Work only on the packet you were assigned. Inspect the repository without changi
7
7
  Run this first, from the target project directory:
8
8
 
9
9
  ```text
10
- npx --prefer-offline --yes copilotkit@4.17.0 onboard inspect --json
10
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard inspect --json
11
11
  ```
12
12
 
13
13
  It answers the deterministic half of both packets exactly, from the same code
@@ -15,7 +15,8 @@ It answers the deterministic half of both packets exactly, from the same code
15
15
  directory on its own, the env files, which variable carries the Intelligence key and which
16
16
  file it came from, whether that directory's own process can load it, the package manager
17
17
  its lockfile proves, the port it declares, the exact installed version of every
18
- `@copilotkit/*` dependency, and every provider base URL its process will read. It reads
18
+ `@copilotkit/*` dependency, every provider base URL its process will read, and the
19
+ module resolution its `tsconfig.json` sets, read through the `extends` chain. It reads
19
20
  only and prints no secret value.
20
21
 
21
22
  Report each `providerEndpoints` entry with the variable, its origin, and where it came
@@ -23,6 +24,13 @@ from. A `null` `source` means the process environment supplied it. A coding agen
23
24
  passes that value on to every dev server it starts, so it decides where the model calls
24
25
  go before any project file does. Carry its `warning` as it came back.
25
26
 
27
+ The packet's `toolchains` block reads the .NET SDK, Node.js, and Python 3 from PATH. Its
28
+ `unready` list names every framework that this machine cannot run yet, with the toolchain
29
+ each one needs. Report both as they came back. The framework question reads them before
30
+ the developer chooses. This reading is about the machine, not about one directory, so
31
+ report it once and not per app. Report it when `apps` is empty too: a project that does
32
+ not exist yet still picks a framework.
33
+
26
34
  Carry those readings into your findings as they came back. Do not work one of them out
27
35
  again by reading files. The directory that owns `.env` is the hard case and the CLI holds
28
36
  the fixes for it, so a second answer derived here is a guess competing with a proof.
@@ -61,12 +69,19 @@ reading of the files will not reproduce.
61
69
  - names of required credential variables, beyond the Intelligence key the CLI reported
62
70
  - the `.env` modification time, or that no `.env` exists, for a later comparison. It is a
63
71
  timestamp, not a value from the file
64
- - required toolchains and their installed versions
72
+ - required toolchains and their installed versions. Start from the CLI's `toolchains`
73
+ block, and add only the version of each toolchain it reported as present
65
74
  - whether each port the CLI reported as declared is free
66
75
  - whether the runtime constructor uses a `runner` option, an `intelligence` option, or
67
76
  neither can be proved from project files
68
77
  - package compatibility risks, and whether any `@copilotkit/*` version the CLI reported is
69
78
  below 1.70.0
79
+ - the `tsconfig.json` change each app needs, from `typescript.migration`: its file and each
80
+ change, as they came back. The change lets CopilotKit subpath imports such as
81
+ `@copilotkit/runtime/v2` type-check. A `null` migration means that no change is needed.
82
+ Where `typescript.status` is `unreadable` or `typescript.unresolvedExtends` is not
83
+ empty, read that app's `tsconfig.json` chain and report its `moduleResolution` and
84
+ `module` values, or report them as unproved
70
85
 
71
86
  Key every environment finding by its app or runtime directory. Do not combine findings
72
87
  from different directories. The CLI packet keys its own readings the same way.
@@ -32,7 +32,7 @@ Prove the live runtime in this order:
32
32
  4. Confirm from project files that the runtime constructor passes a `runner` option rather
33
33
  than an `intelligence` option. A package, import, project file, or key is not use proof.
34
34
  5. Run
35
- `npx --prefer-offline --yes copilotkit@4.17.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
35
+ `npx --prefer-offline --yes copilotkit@4.19.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
36
36
  with the runtime URL or auth header options that this project needs. Require exit zero
37
37
  and the JSON `ok` field to be `true`.
38
38
  6. Drive one real request through the existing frontend, CopilotKit runtime, and expected