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,5 +1,5 @@
1
1
  {
2
- "graphTree": "07aa5486282bd324b41fecac4685d20b5ed11bfa",
2
+ "graphTree": "da1c6185427d9e627b0d6a6b6abda10dea05e09a",
3
3
  "intentRoots": {
4
4
  "add-a2ui": "feature/a2ui/start",
5
5
  "add-chat-suggestions": "feature/chat-suggestions/start",
@@ -13,23 +13,36 @@ does is hidden from the developer.
13
13
  ## Command approvals
14
14
 
15
15
  Run each CLI call exactly as written, as its own command: no pipe, `tee`, `&&`, redirect,
16
- or variable prefix. If your harness asks the developer to approve commands, request
17
- escalation on the `onboard identify` call with the prefix rule
18
- `["npx", "--prefer-offline", "--yes", "copilotkit@4.18.0"]`. Every CLI call in this run
19
- matches it. Say then that the install, the dev servers, `curl` to the local app, and `ps`,
20
- `lsof`, and `kill` ask for approval later.
16
+ or variable prefix. Every CLI call in this run matches the prefix rule
17
+ `["npx", "--prefer-offline", "--yes", "copilotkit@4.20.0"]`. If a command can request
18
+ escalation with a prefix rule, request this one on the `onboard identify` call. If your
19
+ harness asks the developer to approve commands, tell them one approval of that prefix covers
20
+ every CLI call. Say then that the install, the dev servers, `curl` to the local app, and
21
+ `ps`, `lsof`, and `kill` ask for approval later.
22
+
23
+ Never add or edit a permission rule or a settings file yourself. That choice belongs to
24
+ the developer.
25
+
26
+ If your harness refuses a CLI call without asking the developer, do not retry it or run it
27
+ another way. Name the refused command, ask the developer to approve it or to switch to a
28
+ mode that asks them, and end your turn. When they answer, run it once more.
29
+ That refusal is a pause, not a stop.
21
30
 
22
31
  ## First, say which coding agent you are
23
32
 
24
33
  Run this before anything else in this prompt, including the welcome message below:
25
34
 
26
35
  ```text
27
- npx --prefer-offline --yes copilotkit@4.18.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id>
36
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
28
37
  ```
29
38
 
30
- Report your own product with one short slug, such as `codex` or `claude-code`. For
31
- `--model`, give the exact model id your instructions name. If they name none, leave out
32
- `--model` rather than guess.
39
+ Report your own product with one short slug, such as `codex` or `claude-code`.
40
+
41
+ - `--model`: copy the model id exactly as your instructions write it. If they name no
42
+ exact model id, leave out `--model` rather than guess.
43
+ - `--model-family`: your model's family, such as `claude-opus` or `gpt-5`. Give it even
44
+ without `--model`, and leave out `--model-family` if you do not know it.
45
+ - Never give your product slug as a model or a family.
33
46
 
34
47
  ## How to run this onboarding
35
48
 
@@ -49,10 +62,10 @@ printed once.
49
62
  Every later command must run from the directory this run started in. A command run
50
63
  somewhere else is refused, because the run it belongs to cannot be found from there. That
51
64
  refusal is a step, not a stop to report: run
52
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard start --run <onboarding_run_id>` where you are
65
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard start --run <onboarding_run_id>` where you are
53
66
  standing, then run the refused command again.
54
67
 
55
- If you no longer hold the id, run `npx --prefer-offline --yes copilotkit@4.18.0 onboard start` in the
68
+ If you no longer hold the id, run `npx --prefer-offline --yes copilotkit@4.20.0 onboard start` in the
56
69
  directory this run started in, with no `--run` and no `--intent`. It reprints the id of the
57
70
  run under way and starts nothing. An id this project does not already hold starts a second
58
71
  run, and the work already done stops counting toward the first.
@@ -119,7 +132,7 @@ the run waits is a pause, not a stop, even when your harness ends it. A terminal
119
132
  the report itself, or says to file none, overrides this.
120
133
 
121
134
  ```text
122
- npx --prefer-offline --yes copilotkit@4.18.0 onboard friction --phase stop --category <slug> --message "<sentences>"
135
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard friction --phase stop --category <slug> --message "<sentences>"
123
136
  ```
124
137
 
125
138
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -134,7 +147,7 @@ rule that stopped you says next: send the report, then stop.
134
147
 
135
148
  ## Check sign-in
136
149
 
137
- Run `npx --prefer-offline --yes copilotkit@4.18.0 login --json` before any project work. This command
150
+ Run `npx --prefer-offline --yes copilotkit@4.20.0 login --json` before any project work. This command
138
151
  checks the current session. It starts sign-in only as needed. Treat this as a long-lived
139
152
  streaming process. Do not wait for the command to exit before you read its standard output.
140
153
 
@@ -147,42 +160,36 @@ Read each JSON Lines record as the running command writes it:
147
160
  When that first URL arrives, send this exact message once. Do not send it when the
148
161
  existing session is already valid, and do not add a feature list or another explanation:
149
162
 
150
- I will open a sign-in page. Signing in gives this project a managed CopilotKit project
163
+ I am opening a sign-in page. Signing in gives this project a managed CopilotKit project
151
164
  and its API key. That key is what lets your users reopen past conversations. You can
152
165
  remove it later to disconnect this workspace.
153
166
 
154
167
  If it carries `user_code`, add: `Check that the page shows this code: <user_code>`.
155
168
 
156
- 3. Open the first `authentication_url` exactly once with the operating system's default
157
- browser. Your own built-in browser is not that opener and does not carry the session
158
- the developer already signed in with. Run the opener separately from the long-lived
159
- login process. Use the command for the host operating system:
160
- - macOS: `open "<authentication_url>"`
161
- - Linux: `xdg-open "<authentication_url>"`
162
- - Windows PowerShell: `Start-Process "<authentication_url>"`
163
- Pass the exact URL as one quoted argument, unchanged.
164
- 4. If the matching opener is unavailable or exits with an error, show the clickable URL to
165
- the developer and ask them to finish sign-in there. Do not retry the opener.
166
- 5. Keep monitoring the original login process after the open attempt. Do not start a
167
- second login command. Do not treat the opener command finishing as sign-in finishing.
168
- 6. Continue onboarding only after that same process emits `type: completed`.
169
- 7. On `type: failed` with `reason: expired`, ask once whether to retry. If yes, start one
169
+ 3. The CLI opens the page in the default browser itself when it can, and the
170
+ `action_required` record says whether it did. With `"browser_opened": true`, do not open
171
+ it again. With `"browser_opened": false`, show the clickable URL to the developer and ask
172
+ them to finish sign-in there. The page works from any device. Your own built-in browser
173
+ does not carry the session the developer already signed in with, so do not use it.
174
+ 4. Keep monitoring the same login process. Do not start a second login command.
175
+ 5. Continue onboarding only after that same process emits `type: completed`.
176
+ 6. On `type: failed` with `reason: expired`, ask once whether to retry. If yes, start one
170
177
  new `login --json`. Use `--force` only when the developer asks.
171
- 8. If that process emits `type: failed`, report the error and stop onboarding. On
178
+ 7. If that process emits `type: failed`, report the error and stop onboarding. On
172
179
  `reason: repeated_expiry`, rerun `login` with `--force` only if the developer asks.
173
180
 
174
181
  If your harness ends the login process or your turn before the process emits
175
182
  `type: completed` or `type: failed`, that is a pause, not a failed sign-in. If the process
176
183
  still runs, end your turn and wait for the developer to say they signed in, then read the
177
184
  same process. If the process ended without emitting `type: failed`, run `login --json`
178
- again and handle a new `authentication_url` as above. Step 5 forbids a second login only while the first one runs.
185
+ again and handle a new `authentication_url` as above. Step 4 forbids a second login only while the first one runs.
179
186
 
180
187
  Do not use `whoami` for this check. Do not put account tokens or credentials in the
181
188
  conversation.
182
189
 
183
190
  When sign-in is settled, run
184
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read research/gather`.
191
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read research/gather`.
185
192
 
186
193
  If sign-in stops onboarding, run
187
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read stopped/run-failed`. It says nothing about
194
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read stopped/run-failed`. It says nothing about
188
195
  whether this project's stack is supported, which is not yet known at this point.
@@ -100,7 +100,7 @@ of this journey, and a drawer that lists nothing is not a reason to mint one. Li
100
100
  tokens stay a self-hosted concern.
101
101
 
102
102
  Where this journey's frontend framework ships no threads drawer -- React Native --, the
103
- fifth item is proved by `npx --prefer-offline --yes copilotkit@4.18.0 verify --round-trip`, which sends a
103
+ fifth item is proved by `npx --prefer-offline --yes copilotkit@4.20.0 verify --round-trip`, which sends a
104
104
  real request and reads the answer back off the thread it landed on. The run says which of
105
105
  the two it proved. Do not send a run to the managed Intelligence dashboard to prove this.
106
106
  An authenticated browser session at a hosted dashboard is the one thing an agent-driven run
@@ -116,7 +116,7 @@ and passed -- so a run scored on either one was scored on the same fact. Every r
116
116
  resolves that condition from, while `licenseStatus` is a compatibility projection of it
117
117
  for older thread surfaces and outlives them only until those surfaces go.
118
118
 
119
- Then run `npx --prefer-offline --yes copilotkit@4.18.0 onboard read credentials/finalize-plan`.
119
+ Then run `npx --prefer-offline --yes copilotkit@4.20.0 onboard read credentials/finalize-plan`.
120
120
 
121
121
  If a selected page does not load after the second method, run
122
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read unsupported/no-validated-path`.
122
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read unsupported/no-validated-path`.
@@ -24,7 +24,7 @@ Choose the starting state from the repository findings:
24
24
  A run served `proof/oss-baseline` records one of the last two.
25
25
 
26
26
  ```text
27
- npx --prefer-offline --yes copilotkit@4.18.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend>
27
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend>
28
28
  ```
29
29
 
30
30
  If a value is refused, fix it from the choices the earlier prompts gave, and run the
@@ -37,7 +37,7 @@ runtime `.env` file, that directory is the target, not the repository root. Do n
37
37
  the developer to another terminal.
38
38
 
39
39
  ```text
40
- npx --prefer-offline --yes copilotkit@4.18.0 onboard credentials --json
40
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard credentials --json
41
41
  ```
42
42
 
43
43
  Every credential this run writes goes to the target's `.env`, the environment path. The
@@ -67,9 +67,9 @@ project from a listing without an answer that names it.
67
67
  `--runtime-url` is the URL port research settled, mount path included:
68
68
 
69
69
  ```text
70
- npx --prefer-offline --yes copilotkit@4.18.0 onboard credentials --create <name> \
70
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard credentials --create <name> \
71
71
  --runtime-url http://localhost:<port>/api/copilotkit --json
72
- npx --prefer-offline --yes copilotkit@4.18.0 onboard credentials --project <slug-or-id> \
72
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard credentials --project <slug-or-id> \
73
73
  --runtime-url http://localhost:<port>/api/copilotkit --json
74
74
  ```
75
75
 
@@ -79,8 +79,8 @@ command unless the developer asks to see their projects, or `notFound` is presen
79
79
  show only what they asked for, and do not order it by creation time:
80
80
 
81
81
  ```text
82
- npx --prefer-offline --yes copilotkit@4.18.0 project list --json
83
- npx --prefer-offline --yes copilotkit@4.18.0 project list --search <query> --json
82
+ npx --prefer-offline --yes copilotkit@4.20.0 project list --json
83
+ npx --prefer-offline --yes copilotkit@4.20.0 project list --search <query> --json
84
84
  ```
85
85
 
86
86
  `app-directory` means that the key landed where no app reads it. Pick the directory in
@@ -95,4 +95,4 @@ the `--project` command from there with `project.slug`. Do not copy or link the
95
95
  reused. The round-trip proof later runs the authenticated Intelligence checks, so record
96
96
  the reused project credentials as unverified in the plan until those checks pass.
97
97
 
98
- Then run `npx --prefer-offline --yes copilotkit@4.18.0 onboard read credentials/settle-credentials`.
98
+ Then run `npx --prefer-offline --yes copilotkit@4.20.0 onboard read credentials/settle-credentials`.
@@ -20,7 +20,33 @@ If the target directory holds no project and the copied prompt came from the Sla
20
20
  Microsoft Teams docs page, do not ask the framework question. The Channel starter brings
21
21
  its own agent, so an answer here decides nothing. Tell the developer that the Channel
22
22
  starter decides the agent, then run
23
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read frontend/plan`.
23
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read frontend/plan`.
24
+
25
+ ## Frameworks this machine cannot run yet
26
+
27
+ The research findings carry the CLI's toolchain reading. Its `unready` list names each
28
+ framework that this machine cannot run until a toolchain is installed, and the toolchain
29
+ it needs. Read that list before you ask the framework question, so the developer learns
30
+ about a missing toolchain before they choose, and not after.
31
+
32
+ - Do not recommend a framework on that list.
33
+ - When you show a framework on that list, show it after the ready ones. In the same line,
34
+ name the toolchain it needs and its install page.
35
+ - Do not install a toolchain yourself.
36
+
37
+ If the developer chooses a framework on that list, or the repository already has an agent
38
+ in one, keep that framework. Before the run changes the project, tell the developer three
39
+ things in one message:
40
+
41
+ 1. Which toolchain to install, and its install page.
42
+ 2. That the coding agent's shell reads PATH when it starts, so it cannot see the new
43
+ toolchain until the developer restarts the coding agent.
44
+ 3. That the run resumes after the restart with
45
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard start --run <onboarding_run_id>`.
46
+
47
+ Then end your turn and wait for the developer. That restart is a step here, not an error.
48
+
49
+ ## Choose the framework
24
50
 
25
51
  Use a gentle wizard. Ask one short question at a time. Do not combine separate choices in
26
52
  one question. Put the recommendation first, give its evidence in one sentence, and keep
@@ -75,26 +101,26 @@ developer's words instead.
75
101
 
76
102
  Use exactly one matching internal route:
77
103
 
78
- 1. AG2: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/ag2`
79
- 2. Agno: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/agno`
80
- 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/built-in`
81
- 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/claude-sdk-python`
82
- 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/claude-sdk-typescript`
83
- 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/crewai-flows`
84
- 7. Deep Agents: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/deep-agents`
85
- 8. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/langgraph-python`
86
- 9. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/langgraph-fastapi`
87
- 10. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/langgraph-typescript`
88
- 11. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/llamaindex`
89
- 12. ADK: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/google-adk`
90
- 13. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/ms-agent-python`
91
- 14. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/ms-agent-dotnet`
92
- 15. Mastra: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/mastra`
93
- 16. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/ms-agent-harness-dotnet`
94
- 17. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/pydantic-ai`
95
- 18. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/strands-python`
96
- 19. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.18.0 onboard read framework/strands-typescript`
104
+ 1. AG2: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/ag2`
105
+ 2. Agno: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/agno`
106
+ 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/built-in`
107
+ 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/claude-sdk-python`
108
+ 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/claude-sdk-typescript`
109
+ 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/crewai-flows`
110
+ 7. Deep Agents: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/deep-agents`
111
+ 8. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/langgraph-python`
112
+ 9. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/langgraph-fastapi`
113
+ 10. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/langgraph-typescript`
114
+ 11. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/llamaindex`
115
+ 12. ADK: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/google-adk`
116
+ 13. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/ms-agent-python`
117
+ 14. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/ms-agent-dotnet`
118
+ 15. Mastra: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/mastra`
119
+ 16. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/ms-agent-harness-dotnet`
120
+ 17. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/pydantic-ai`
121
+ 18. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/strands-python`
122
+ 19. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.20.0 onboard read framework/strands-typescript`
97
123
 
98
124
  If the project has an agent in another framework, or no listed framework fits, keep the
99
125
  developer's current agent and run
100
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read unsupported/no-validated-path`.
126
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read unsupported/no-validated-path`.
@@ -21,7 +21,7 @@ The plan names the model credential variables. Run this from the directory that
21
21
  `environmentPath` in the project step's result, with one `--model-key` for each variable:
22
22
 
23
23
  ```text
24
- npx --prefer-offline --yes copilotkit@4.18.0 onboard credentials --model-key <variable> --json
24
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard credentials --model-key <variable> --json
25
25
  ```
26
26
 
27
27
  When the framework node names another env file for the credential, add
@@ -31,25 +31,39 @@ never prints a value. When every key settles, it protects the credential paths.
31
31
  `status`:
32
32
 
33
33
  - `ready`: continue. Name each `unsupported` or `undetermined` `reason` in `modelKeys` in
34
- the closing report.
35
- - `needs-developer` with `question.status` `missing`: ask the developer where the
36
- credential lives.
34
+ the closing report. When `outsideRepository` names a file, the app does not load it by
35
+ itself. By default, plan to copy the key into the app's env file, which git ignores.
36
+ This command protects that env file, and the copy is a file the run writes itself, so
37
+ list the copy under `Files the run writes itself`, not under `Authorization requested`.
38
+ The developer's approval of the plan is their consent to the copy. Copy the key without
39
+ printing it. Then record the copy with
40
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --accept-credential --path <env file>`. If the developer declines the copy, the plan has the app read the key from an
41
+ environment variable that the developer sets. The plan then says how to set it. Never
42
+ write the outside path into a project file, not even in a config file such as
43
+ `langgraph.json`. A committed file that names a folder in the developer's home directory
44
+ gives every other machine no key, and `onboard audit` fails on a changed file that names
45
+ it. In the closing report, say where the app reads the key from.
46
+ - `needs-developer` with `question.status` `missing`: ask the developer `question.ask` in
47
+ those words. It offers three answers: another env file in this project, a file outside it,
48
+ or the developer adds the key to `question.envFile`. If they name a file, rerun the command
49
+ with `--env-file <path>`. If they add the key, rerun it as it is. Do not replace the
50
+ question with an instruction to paste the value into a file. The key can already be in a
51
+ file that you can point the check at.
37
52
  - `needs-developer` with `question.status` `fail`: tell the developer `question.cause`.
38
53
  `model_quota` means that the key has no credits, and `model_auth` means that the vendor
39
54
  rejected it. Offer three choices: add credits, use another key, or switch the model
40
55
  provider.
41
56
  - `stopped`: the command already filed the stop report. Stop onboarding.
42
57
 
43
- Until the developer answers, the run waits. When you ask, name each variable and the file
44
- it goes in, and say that the run continues when they reply or resume this session. Under a
45
- harness that ends the session with your turn, such as `codex exec`, that message is the only
46
- thing the developer sees. This is a pause, not a stop. The command already reported it.
58
+ Until the developer answers, the run waits. When you ask, name each variable, and say that
59
+ the run continues when they reply or resume this session. Under a harness that ends the
60
+ session with your turn, such as `codex exec`, that message is the only thing the developer
61
+ sees. This is a pause, not a stop. The command already reported it.
47
62
  End your turn. When the developer answers, run the command again. Do not write a
48
63
  placeholder or an empty value.
49
64
 
50
65
  Never read a file outside the project directory to find a credential: a key found that way
51
- bills another project. Asking for a path is not requesting a secret, and neither is asking
52
- the developer to write the value into the env file. A path the developer names is theirs
53
- to give, including one outside the project. A path this run finds is not.
66
+ bills another project. Asking for a path is not requesting a secret. A path the developer
67
+ names is theirs to give, including one outside the project. A path this run finds is not.
54
68
 
55
- Then run `npx --prefer-offline --yes copilotkit@4.18.0 onboard read credentials/write-plan`.
69
+ Then run `npx --prefer-offline --yes copilotkit@4.20.0 onboard read credentials/write-plan`.
@@ -11,7 +11,7 @@ friction command follows the telemetry setting the developer already chose, so i
11
11
  separate question.
12
12
 
13
13
  ```text
14
- npx --prefer-offline --yes copilotkit@4.18.0 onboard friction --phase stop --category <slug> --message "<sentences>"
14
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard friction --phase stop --category <slug> --message "<sentences>"
15
15
  ```
16
16
 
17
17
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -72,7 +72,7 @@ page is selected yet, add the one for the frontend selected above to the same li
72
72
  Native, so the planner proves the thread with `verify --round-trip` instead.
73
73
 
74
74
  Spawn one planning subagent. Tell it to run
75
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read subagent/create-plan` first and follow the prompt
75
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read subagent/create-plan` first and follow the prompt
76
76
  it returns. If that read fails because the subagent cannot use the shell, stop that subagent.
77
77
  Run the same command yourself, then spawn a fresh subagent with the returned prompt and the
78
78
  same handoff. Give it the repository findings, selected framework, frontend, model, credential
@@ -83,7 +83,7 @@ Wait for the subagent to finish.
83
83
  Continue only if the planning result starts with `Status: passed`. For `Status: failed`,
84
84
  send the result back to the planning subagent for repair, up to three attempts. For
85
85
  `Status: blocked`, or a third failed result, run
86
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read stopped/run-failed`. A plan this run cannot
86
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read stopped/run-failed`. A plan this run cannot
87
87
  write is a run that broke, not a stack the documentation does not cover. The exception is
88
88
  a blocked result that names `unsupported/no-validated-path`: the planning subagent found
89
89
  that no page supports the plan, so take the no-supported-path route at the end of this
@@ -96,7 +96,7 @@ for, implementation steps, validation steps, and proof steps. Where the plan upg
96
96
  CopilotKit dependencies, it must name the versions it moves, every other pin it has to
97
97
  move with them, and the revert it falls back to. It must not contain secret values.
98
98
 
99
- Show only the selected framework, frontend, model, planned file changes with the feature explanations below where applicable, any ignore-file line this run adds, the CopilotKit dependency upgrade and the versions it moves, every other dependency the upgrade moves and the versions it moves them to, validation commands, and proof steps.
99
+ Show only the selected framework, frontend, model, planned file changes with the feature explanations below where applicable, any ignore-file line this run adds, the files the run writes itself, the CopilotKit Skills install as a choice the developer approves or declines, the CopilotKit dependency upgrade and the versions it moves, every other dependency the upgrade moves and the versions it moves them to, validation commands, and proof steps.
100
100
 
101
101
  Explain these benefits in your own words within the planned changes, only when the
102
102
  plan includes the feature:
@@ -111,6 +111,9 @@ plan includes the feature:
111
111
  These explanations are required content, not fixed wording. They explain the existing
112
112
  plan. They do not add features, implementation steps, or a separate message or question.
113
113
 
114
+ Carry the developer's answer on the Skills install into the implementation and proof
115
+ handoffs. Approving the plan without a word on the Skills approves the install.
116
+
114
117
  An upgrade to a working install is the developer's call, so it belongs in the plan they
115
118
  approve rather than in the implementation that follows. Do not upgrade a dependency the
116
119
  developer did not approve.
@@ -131,7 +134,7 @@ build. Keep this window open until the app runs." Decide from your own approval
131
134
  as the welcome did, not from your coding-agent slug.
132
135
 
133
136
  If the developer approves the plan, run
134
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read implementation/build-and-validate`.
137
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read implementation/build-and-validate`.
135
138
 
136
139
  If no exact supported path or documentation URL exists, run
137
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read unsupported/no-validated-path`.
140
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read unsupported/no-validated-path`.
@@ -16,7 +16,7 @@ you stop. The friction command follows the telemetry setting the developer alrea
16
16
  so it needs no separate question.
17
17
 
18
18
  ```text
19
- npx --prefer-offline --yes copilotkit@4.18.0 onboard friction --phase stop --category <slug> --message "<sentences>"
19
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard friction --phase stop --category <slug> --message "<sentences>"
20
20
  ```
21
21
 
22
22
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -62,19 +62,19 @@ or frontend, stop onboarding.
62
62
 
63
63
  Use these rules for every protected-path check in this fallback:
64
64
 
65
- - Run `npx --prefer-offline --yes copilotkit@4.18.0 onboard audit` from the target app directory.
65
+ - Run `npx --prefer-offline --yes copilotkit@4.20.0 onboard audit` from the target app directory.
66
66
  - If a result starts with `Status: blocked`, stop onboarding and report the printed reason.
67
67
  It proved nothing changed, so do not report a preservation failure.
68
68
  - If a result reports a changed protected path this run wrote, stop onboarding.
69
69
  - If a result reports a changed env file, this rule replaces the one above, even when this
70
70
  run wrote the file. This run asked the developer to place a
71
71
  credential there, so take the credential route rather than the external one. Accept it
72
- with `npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --accept-credential --path <path>`,
72
+ with `npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --accept-credential --path <path>`,
73
73
  run the audit again, and name it in the closing report. If the command refuses because
74
74
  it names a lost variable, stop onboarding.
75
75
  - Before any proof subagent runs, a changed path that no Files changed section from this
76
76
  run names came from outside the run. Accept it by name with
77
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --accept-external --path <path>`, run the
77
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --accept-external --path <path>`, run the
78
78
  audit again, and name it in the closing report.
79
79
  - After a proof subagent runs, a changed path that no Files changed section from this run
80
80
  names is unsettled rather than outside the run, because the proof subagent here returns
@@ -95,8 +95,10 @@ files, configuration files, dependencies, or tracked files. Allow only operation
95
95
  to project-owned processes, ports, and request options.
96
96
  Require this result format: Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
97
97
  Tell it to use `Status: passed` only when the proof attempt completed with `performed`,
98
- `skipped-no-browser-tool`, or `skipped-no-device`. Use `Status: failed` for any failed proof
99
- step. Use `Status: blocked` when a safety or access limit stops the attempt before a surface
98
+ `skipped-no-browser-tool`, or `skipped-no-device`. Tell it to register no browser server
99
+ and to report `skipped-no-browser-tool` when no browser tool is loaded in this session. Use
100
+ `Status: failed` for any failed proof step. Use
101
+ `Status: blocked` when a safety or access limit stops the attempt before a surface
100
102
  outcome.
101
103
  Wait for the proof subagent to finish. For `Status: blocked`, stop onboarding and report the
102
104
  blocker. For `Status: failed`, classify the cause before retrying.
@@ -118,31 +120,41 @@ Continue only if the proof result starts with `Status: passed`.
118
120
  Run the protected-path check again after the final proof result passes. Apply the
119
121
  protected-path rules. Continue only if the audit starts with `Status: passed`.
120
122
 
121
- Do not block core proof on CopilotKit Skills or MCP configuration. Tell the developer that
122
- the skills install writes a `.agents/skills` directory and `.claude/skills` links into the
123
- working tree before you run it, because both show up in `git status` and this run cannot
124
- know whether the project keeps them in version control. Try these tools after the
125
- application passes proof. Report each tool result separately from the proof result.
123
+ Do not block core proof on the CopilotKit Skills. Tell the developer that the skills
124
+ install writes a `.agents/skills` directory and `.claude/skills` links into the working
125
+ tree before you run it, because both show up in `git status` and this run cannot know
126
+ whether the project keeps them in version control. Install them after the application
127
+ passes proof. Do not register an MCP server: the Skills read the CopilotKit documentation
128
+ without one. Report the Skills result separately from the proof result.
126
129
 
127
130
  Report the documentation gap and each assumption with the proof evidence. Do not claim
128
131
  that the selected documentation proved an inferred step.
129
132
 
130
- When the proof is complete, run `npx --prefer-offline --yes copilotkit@4.18.0 onboard complete`, carrying the
133
+ Record what the proof returned before you complete:
134
+
135
+ ```text
136
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
137
+ ```
138
+
139
+ When the proof is complete, run `npx --prefer-offline --yes copilotkit@4.20.0 onboard complete`, carrying the
131
140
  surface-check result the proof subagent returned. Pass exactly one of `--visual-check` or
132
141
  `--device-check`, matching this journey's surface:
133
142
 
134
143
  ```text
135
- npx --prefer-offline --yes copilotkit@4.18.0 onboard complete --visual-check <outcome>
136
- npx --prefer-offline --yes copilotkit@4.18.0 onboard complete --device-check <outcome>
144
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard complete --visual-check <outcome>
145
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard complete --device-check <outcome>
137
146
  ```
138
147
 
139
148
  `--visual-check` is for a web frontend and takes `performed`, `skipped-no-browser-tool`, or
140
149
  `failed`. `--device-check` is for React Native and takes `performed`, `skipped-no-device`,
141
- or `failed`. Anything but `performed` ends this run as blocked, and the command's output
142
- names the evidence that is missing. Report it that way.
150
+ or `failed`. `failed` and `skipped-no-device` end this run as blocked, and the command's
151
+ output names the evidence that is missing. Report it that way. `skipped-no-browser-tool`
152
+ completes the run when the round trip was recorded as `passed`, and the output names what
153
+ no browser checked. Without that record it blocks.
143
154
 
144
155
  If the proof passed and something after it still blocked this run, add
145
156
  `--blocked-by <cause>` to the same command, with one of `inspector`, `plan-excluded-capability`,
146
- or `other`. It ends the run as blocked and names what the blocker leaves unverified. The
147
- managed Intelligence dashboard is not a cause, because nothing in this graph asks a run to
148
- open it.
157
+ `browser-control-unresponsive`, or `other`. Pass `browser-control-unresponsive` with
158
+ `--visual-check failed`, for a browser tool that stopped answering. It ends the run as
159
+ blocked and names what the blocker leaves unverified. The managed Intelligence dashboard is
160
+ not a cause, because nothing in this graph asks a run to open it.
@@ -18,7 +18,7 @@ without exposing secrets.
18
18
  Before you spawn the implementation subagent, take the authorized list from the CLI:
19
19
 
20
20
  ```text
21
- npx --prefer-offline --yes copilotkit@4.18.0 onboard audit
21
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard audit
22
22
  ```
23
23
 
24
24
  From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
@@ -37,7 +37,7 @@ still go on the record. Name the file and why the work needs it, then end your t
37
37
  for the developer's answer. If they allow it, record their answer before any edit:
38
38
 
39
39
  ```text
40
- npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
40
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
41
41
  ```
42
42
 
43
43
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -49,7 +49,7 @@ feature stop route below.
49
49
  After validation and each repair, run:
50
50
 
51
51
  ```text
52
- npx --prefer-offline --yes copilotkit@4.18.0 onboard audit
52
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard audit
53
53
  ```
54
54
 
55
55
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -60,7 +60,7 @@ with the implementation subagent's `Files changed` section. If that section does
60
60
  the path, accept the developer's external change:
61
61
 
62
62
  ```text
63
- npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --accept-external --path <path>
63
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --accept-external --path <path>
64
64
  ```
65
65
 
66
66
  For an env file where the developer placed a requested credential, use
@@ -73,17 +73,11 @@ Run the audit again after each accepted change. If it still fails, or starts
73
73
  with `Status: blocked`, route out and stop:
74
74
 
75
75
  ```text
76
- npx --prefer-offline --yes copilotkit@4.18.0 onboard read feature/stop
77
- ```
78
-
79
- When implementation validation passes, report it:
80
-
81
- ```text
82
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase build-validated
76
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard read feature/stop
83
77
  ```
84
78
 
85
79
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
86
80
  the feature stop route above without further changes.
87
81
 
88
82
  Otherwise run
89
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read feature/a2ui/proof`.
83
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read feature/a2ui/proof`.
@@ -11,7 +11,7 @@ In the real frontend, send a small request that naturally asks the existing agen
11
11
  one compact card or control using A2UI. Require a visible rendered A2UI surface or operation
12
12
  in the chat, not only streamed tool arguments, an activity skeleton, or a server log. Record
13
13
  the input, visible result, app URL, process IDs, and safe stop commands. If browser control
14
- is unavailable, report that the browser proof is blocked rather than claiming success.
14
+ is unavailable, report `skipped-no-browser-tool`, and do not claim that the card rendered.
15
15
 
16
16
  Fix proof failures caused by changed files, then repeat the same proof. Do not replace the
17
17
  user's agent response with a hard-coded UI.
@@ -27,7 +27,7 @@ still go on the record. Name the file and why the fix needs it, then end your tu
27
27
  for the developer's answer. If they allow it, record their answer before any edit:
28
28
 
29
29
  ```text
30
- npx --prefer-offline --yes copilotkit@4.18.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
30
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
31
31
  ```
32
32
 
33
33
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -36,26 +36,15 @@ same handoff and that list. A subagent that already returned cannot pick up cons
36
36
  after it was spawned. If you cannot ask, or the developer declines, take the feature stop
37
37
  route below.
38
38
 
39
- Report each attempt at the proof as it ends, counting from one:
39
+ Report the outcome of each attempt as it ends, before any repair. The command counts the
40
+ attempts and the repairs:
40
41
 
41
42
  ```text
42
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase journey-attempted --attempt 1
43
- ```
44
-
45
- Report each repair cycle the same way, counting from one:
46
-
47
- ```text
48
- npx --prefer-offline --yes copilotkit@4.18.0 onboard checkpoint --phase repair-attempted --attempt 1
49
- ```
50
-
51
- After the final attempt, report the gate exactly once:
52
-
53
- ```text
54
- npx --prefer-offline --yes copilotkit@4.18.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
43
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
55
44
  ```
56
45
 
57
46
  Use `passed` only for a proved A2UI surface, `failed` for an attempted proof that failed,
58
- and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.18.0 onboard audit`.
47
+ and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.20.0 onboard audit`.
59
48
  Continue only when it starts with `Status: passed`.
60
49
 
61
50
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -70,9 +59,9 @@ the path and the change the audit reports. Run the audit again after each accept
70
59
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
71
60
 
72
61
  ```text
73
- npx --prefer-offline --yes copilotkit@4.18.0 onboard read feature/stop
62
+ npx --prefer-offline --yes copilotkit@4.20.0 onboard read feature/stop
74
63
  ```
75
64
 
76
65
  When the audit passes, run
77
- `npx --prefer-offline --yes copilotkit@4.18.0 onboard read feature/complete` with the actual browser-proof
66
+ `npx --prefer-offline --yes copilotkit@4.20.0 onboard read feature/complete` with the actual browser-proof
78
67
  outcome.