copilotkit 4.16.0 → 4.17.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 +69 -4
  2. package/cli-build-info.json +7 -7
  3. package/index.js +3993 -2742
  4. package/onboarding/index.json +1 -1
  5. package/onboarding/prompts/authenticate/start.md +17 -15
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +20 -20
  8. package/onboarding/prompts/credentials/plan.md +21 -21
  9. package/onboarding/prompts/credentials/settle-credentials.md +46 -10
  10. package/onboarding/prompts/credentials/write-plan.md +35 -20
  11. package/onboarding/prompts/fallback/best-effort.md +23 -15
  12. package/onboarding/prompts/feature/a2ui/implement.md +40 -12
  13. package/onboarding/prompts/feature/a2ui/proof.md +29 -9
  14. package/onboarding/prompts/feature/a2ui/start.md +8 -10
  15. package/onboarding/prompts/feature/blocked-by-plan.md +4 -4
  16. package/onboarding/prompts/feature/channels/implement.md +41 -13
  17. package/onboarding/prompts/feature/channels/proof.md +30 -11
  18. package/onboarding/prompts/feature/channels/start.md +11 -9
  19. package/onboarding/prompts/feature/chat-suggestions/implement.md +40 -12
  20. package/onboarding/prompts/feature/chat-suggestions/proof.md +29 -9
  21. package/onboarding/prompts/feature/chat-suggestions/start.md +8 -10
  22. package/onboarding/prompts/feature/complete.md +2 -2
  23. package/onboarding/prompts/feature/learning/implement.md +58 -26
  24. package/onboarding/prompts/feature/learning/proof.md +30 -10
  25. package/onboarding/prompts/feature/learning/start.md +15 -12
  26. package/onboarding/prompts/feature/open-generative-ui/implement.md +41 -13
  27. package/onboarding/prompts/feature/open-generative-ui/proof.md +29 -9
  28. package/onboarding/prompts/feature/open-generative-ui/start.md +8 -10
  29. package/onboarding/prompts/feature/realtime-sync/implement.md +41 -13
  30. package/onboarding/prompts/feature/realtime-sync/proof.md +31 -10
  31. package/onboarding/prompts/feature/realtime-sync/start.md +8 -9
  32. package/onboarding/prompts/feature/rich-threads/implement.md +42 -14
  33. package/onboarding/prompts/feature/rich-threads/proof.md +31 -10
  34. package/onboarding/prompts/feature/rich-threads/start.md +8 -9
  35. package/onboarding/prompts/feature/stop.md +3 -3
  36. package/onboarding/prompts/feature/voice/implement.md +40 -12
  37. package/onboarding/prompts/feature/voice/proof.md +29 -9
  38. package/onboarding/prompts/feature/voice/start.md +8 -9
  39. package/onboarding/prompts/framework/ag2.md +2 -2
  40. package/onboarding/prompts/framework/agno.md +4 -4
  41. package/onboarding/prompts/framework/built-in.md +2 -2
  42. package/onboarding/prompts/framework/claude-sdk-python.md +8 -7
  43. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  44. package/onboarding/prompts/framework/crewai-flows.md +15 -7
  45. package/onboarding/prompts/framework/deep-agents.md +4 -3
  46. package/onboarding/prompts/framework/google-adk.md +7 -7
  47. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  48. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  49. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  50. package/onboarding/prompts/framework/llamaindex.md +4 -4
  51. package/onboarding/prompts/framework/mastra.md +2 -2
  52. package/onboarding/prompts/framework/ms-agent-dotnet.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  54. package/onboarding/prompts/framework/ms-agent-python.md +6 -6
  55. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  56. package/onboarding/prompts/framework/strands-python.md +4 -4
  57. package/onboarding/prompts/framework/strands-typescript.md +4 -4
  58. package/onboarding/prompts/frontend/angular.md +3 -3
  59. package/onboarding/prompts/frontend/nextjs.md +16 -3
  60. package/onboarding/prompts/frontend/plan.md +7 -7
  61. package/onboarding/prompts/frontend/react-native.md +2 -2
  62. package/onboarding/prompts/frontend/react-spa.md +2 -2
  63. package/onboarding/prompts/frontend/vue.md +2 -2
  64. package/onboarding/prompts/implementation/build-and-validate.md +67 -28
  65. package/onboarding/prompts/proof/complete.md +21 -14
  66. package/onboarding/prompts/proof/oss-baseline.md +16 -12
  67. package/onboarding/prompts/proof/round-trip.md +33 -22
  68. package/onboarding/prompts/research/gather.md +8 -7
  69. package/onboarding/prompts/research/merge.md +3 -3
  70. package/onboarding/prompts/research/preflight.md +4 -4
  71. package/onboarding/prompts/research/route.md +6 -6
  72. package/onboarding/prompts/starter/clone.md +14 -11
  73. package/onboarding/prompts/stopped/run-failed.md +9 -9
  74. package/onboarding/prompts/subagent/create-plan.md +15 -10
  75. package/onboarding/prompts/subagent/implement-and-validate.md +25 -11
  76. package/onboarding/prompts/subagent/inspect-repository.md +14 -6
  77. package/onboarding/prompts/subagent/prove-oss-baseline.md +5 -4
  78. package/onboarding/prompts/subagent/prove-round-trip.md +38 -14
  79. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  80. package/package.json +1 -5
  81. package/release/release-tool.js +171 -40
@@ -6,7 +6,7 @@ implementation, and proof to separate subagents and keep all work inside the tar
6
6
  Before any subagent or project process runs, capture the developer's existing work:
7
7
 
8
8
  ```text
9
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect
9
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect
10
10
  ```
11
11
 
12
12
  Keep the exact protected path list it prints and give that list to every subagent. No
@@ -15,15 +15,13 @@ approved authorization before implementation.
15
15
 
16
16
  Before edits, identify the current CopilotKit provider, chat component, message lifecycle,
17
17
  agent id, package version, and test/dev commands. Prove the existing OSS round trip with
18
- `/info`, `npx --prefer-offline --yes copilotkit@4.16.0 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
19
- and one real frontend request when browser control is available. If there is no proven
20
- existing CopilotKit chat, leave files unchanged and direct the developer to generic
21
- onboarding first.
18
+ `/info`, `npx --prefer-offline --yes copilotkit@4.17.0 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
19
+ and one real frontend request when browser control is available.
22
20
 
23
21
  Wait for the inspection subagent to finish. Then report that the inspection came back:
24
22
 
25
23
  ```text
26
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase research-returned
24
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase research-returned
27
25
  ```
28
26
 
29
27
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
@@ -33,7 +31,7 @@ If the inspection did not prove the baseline this intent extends, stop here with
33
31
  changing files:
34
32
 
35
33
  ```text
36
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
34
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
37
35
  ```
38
36
 
39
37
  Do not run login, provision Intelligence, request a credential, replace the agent, or alter
@@ -55,7 +53,7 @@ one.
55
53
  After approval, record each approved path before implementation:
56
54
 
57
55
  ```text
58
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
56
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
59
57
  ```
60
58
 
61
59
  If an approved path changed after capture and no implementation step has run, add
@@ -65,7 +63,7 @@ authorize a path the approved plan did not list.
65
63
  Then report the plan this run is about to implement:
66
64
 
67
65
  ```text
68
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase plan-written
66
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase plan-written
69
67
  ```
70
68
 
71
- Then run `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/chat-suggestions/implement`.
69
+ Then run `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/chat-suggestions/implement`.
@@ -3,7 +3,7 @@
3
3
  Use the outcome the proof step observed. Run:
4
4
 
5
5
  ```text
6
- npx --prefer-offline --yes copilotkit@4.16.0 onboard complete --visual-check <performed|skipped-no-browser-tool|channels-proof-passed|failed>
6
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard complete --visual-check <performed|skipped-no-browser-tool|channels-proof-passed|failed>
7
7
  ```
8
8
 
9
9
  Use `channels-proof-passed` for a Slack or Teams run that recorded a passed round-trip proof
@@ -20,7 +20,7 @@ Before `onboard complete`, send the friction this run mentioned to the developer
20
20
  report each, at most four, costliest first:
21
21
 
22
22
  ```text
23
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
23
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
24
24
  ```
25
25
 
26
26
  Put one or two sentences in `--message`, with no secrets, source, or logs. Pick the
@@ -7,16 +7,17 @@ require the secret-safe project/key provisioning summary before wiring the runti
7
7
 
8
8
  ## If you stop in this phase
9
9
 
10
- Four rules below end this run without completing it: an entitlement the platform will not
11
- resolve, a container id that never resolves, an audit that stays blocked, and validation
12
- that cannot pass. Each one stops onboarding for a developer who has already approved a
10
+ Five rules below end this run without completing it: an entitlement the platform will not
11
+ resolve, a container id that never resolves, an audit that still fails or is blocked or
12
+ cannot be cleared, validation that cannot pass, and an intent that needs a prerequisite the
13
+ app does not have. Each one stops onboarding for a developer who has already approved a
13
14
  plan. Name the exact command, id, and error code that stopped you: a report that names only
14
15
  the step cannot be acted on. Send one short report before you stop. Run the friction
15
16
  command without another developer question. Do not ask the developer about telemetry: the
16
17
  command applies the setting they already have.
17
18
 
18
19
  ```text
19
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
20
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
20
21
  ```
21
22
 
22
23
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -29,7 +30,9 @@ those, prints the reason, and exits zero. A refused report is not a failed step.
29
30
  report, then stop.
30
31
 
31
32
  A refusal by the platform is the one exception. It reaches `feature/blocked-by-plan`, which
32
- reports the ending by itself and says to file nothing further.
33
+ reports the ending by itself and says to file nothing further. A stop that routes to
34
+ `feature/stop` also sends no report here: that prompt first asks the developer about one
35
+ scoped fix, and sends the report itself when no fix is approved.
33
36
 
34
37
  After the project is selected, settle the container from the terminal.
35
38
 
@@ -41,7 +44,7 @@ settled refusal rather than a missing baseline, so stop here, before any file ch
41
44
  take its own ending:
42
45
 
43
46
  ```text
44
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/blocked-by-plan
47
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/blocked-by-plan
45
48
  ```
46
49
 
47
50
  `LEARNING_AVAILABILITY_UNAVAILABLE` means the platform did not resolve the answer. It is
@@ -55,7 +58,7 @@ then, so the read below is where its refusal surfaces.
55
58
  When the plan or the repository already names an id, ask about that one id and nothing else:
56
59
 
57
60
  ```text
58
- npx --prefer-offline --yes copilotkit@4.16.0 learning containers get <id> --json
61
+ npx --prefer-offline --yes copilotkit@4.17.0 learning containers get <id> --json
59
62
  ```
60
63
 
61
64
  One call answers it, and no list is needed.
@@ -63,7 +66,7 @@ One call answers it, and no list is needed.
63
66
  When no id is in hand, survey what the project holds:
64
67
 
65
68
  ```text
66
- npx --prefer-offline --yes copilotkit@4.16.0 learning containers list --json
69
+ npx --prefer-offline --yes copilotkit@4.17.0 learning containers list --json
67
70
  ```
68
71
 
69
72
  One call returns at most 500 containers. When `nextCursor` in the result is not null, read
@@ -74,7 +77,7 @@ second container for work the first one already covers.
74
77
  Report what the read found before asking anyone anything:
75
78
 
76
79
  ```text
77
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase container-surveyed
80
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase container-surveyed
78
81
  ```
79
82
 
80
83
  Everything after this waits on a person, so a run that stops past this point stopped on a
@@ -95,7 +98,7 @@ user, so the callback can return a different id per tier or per customer.
95
98
  Ask the CLI for the id rather than spelling one yourself:
96
99
 
97
100
  ```text
98
- npx --prefer-offline --yes copilotkit@4.16.0 learning containers default-id --json
101
+ npx --prefer-offline --yes copilotkit@4.17.0 learning containers default-id --json
99
102
  ```
100
103
 
101
104
  It derives the project-scoped id from the selected project's slug, reads the local project
@@ -109,7 +112,7 @@ run that spells the id differently gives one project two containers, each below
109
112
  above on its own. One command is what keeps the two spellings identical.
110
113
 
111
114
  ```text
112
- npx --prefer-offline --yes copilotkit@4.16.0 learning containers create --id <id> --name <name> --json
115
+ npx --prefer-offline --yes copilotkit@4.17.0 learning containers create --id <id> --name <name> --json
113
116
  ```
114
117
 
115
118
  An id already in use answers `LEARNING_CONTAINER_ALREADY_EXISTS`. That is a container to
@@ -124,7 +127,7 @@ or a guessed id.
124
127
  Then report that the container is settled, before any edit:
125
128
 
126
129
  ```text
127
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase container-settled
130
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase container-settled
128
131
  ```
129
132
 
130
133
  Everything above happens between two prompts, so a run that stopped on a developer who could
@@ -145,13 +148,44 @@ non-zero on an app that is working. Pass what `identifyUser` reads with a repeat
145
148
  It is not a defect to repair.
146
149
 
147
150
  Run focused tests and
148
- `npx --prefer-offline --yes copilotkit@4.16.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --json`.
151
+ `npx --prefer-offline --yes copilotkit@4.17.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --json`.
149
152
  Repair changed-file failures and record secret-safe evidence.
150
153
 
154
+ Before you spawn the implementation subagent, take the authorized list from the CLI:
155
+
156
+ ```text
157
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard audit
158
+ ```
159
+
160
+ From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
161
+ no such block means that nothing is authorized. Read only that block now, and decide the
162
+ findings of a failed audit after implementation, with the audit rules below. If this audit
163
+ starts with `Status: blocked`, the CLI cannot supply the list. Report the printed reason and
164
+ take the feature stop route below.
165
+
166
+ Give the implementation subagent the protected path list and the authorized list. Tell it
167
+ this rule: it can change a path on the authorized list. When the work needs any other
168
+ protected path, it must not edit it. It returns a result that starts with `Status: blocked`
169
+ and names the file under Blockers.
170
+
171
+ That result is a question for the developer. The file has not changed yet, so consent can
172
+ still go on the record. Name the file and why the work needs it, then end your turn and wait
173
+ for the developer's answer. If they allow it, record their answer before any edit:
174
+
175
+ ```text
176
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
177
+ ```
178
+
179
+ Continue only when the result starts with `Status: passed`. Run the audit again, take the
180
+ new list from its `Authorized to modify:` block, and spawn a fresh implementation subagent
181
+ with the same handoff and that list. A subagent that already returned cannot pick up consent
182
+ recorded after it was spawned. If you cannot ask, or the developer declines, take the
183
+ feature stop route below.
184
+
151
185
  After validation and each repair, run:
152
186
 
153
187
  ```text
154
- npx --prefer-offline --yes copilotkit@4.16.0 onboard audit
188
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard audit
155
189
  ```
156
190
 
157
191
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -162,33 +196,31 @@ with the implementation subagent's `Files changed` section. If that section does
162
196
  the path, accept the developer's external change:
163
197
 
164
198
  ```text
165
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --accept-external --path <path>
199
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --accept-external --path <path>
166
200
  ```
167
201
 
168
202
  For an env file where the developer placed a requested credential, use
169
203
  `onboard protect --accept-credential --path <path>` instead. If the subagent names the path,
170
- or its report does not settle who changed it, ask the developer to allow the unplanned
171
- change. Only after they agree, record their answer:
172
-
173
- ```text
174
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
175
- ```
204
+ or its report does not settle who changed it, the change is this run's own, made without
205
+ consent. Do not ask the developer to allow it: the CLI refuses consent for a path that
206
+ already changed. Route out, and name the path and the change the audit reports.
176
207
 
177
- Run the audit again after each accepted or authorized change. If it still fails, or starts
178
- with `Status: blocked`, route out and stop:
208
+ Run the audit again after each accepted change. If it still fails, or starts
209
+ with `Status: blocked`, route out and stop. Route out the same way when
210
+ `--accept-credential` refuses because it names a lost variable:
179
211
 
180
212
  ```text
181
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
213
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
182
214
  ```
183
215
 
184
216
  When implementation validation passes, report it:
185
217
 
186
218
  ```text
187
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase build-validated
219
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase build-validated
188
220
  ```
189
221
 
190
222
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
191
223
  the feature stop route above without further changes.
192
224
 
193
225
  Otherwise run
194
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/learning/proof`.
226
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/learning/proof`.
@@ -7,7 +7,7 @@ Container. Confirm the thread remains associated with the expected user.
7
7
  One command decides it:
8
8
 
9
9
  ```text
10
- npx --prefer-offline --yes copilotkit@4.16.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --expect-learning-container <id> --json
10
+ npx --prefer-offline --yes copilotkit@4.17.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --expect-learning-container <id> --json
11
11
  ```
12
12
 
13
13
  It reads the thread back from the platform, so it answers for any runtime mount, and it
@@ -29,27 +29,47 @@ counts. Existing threads can join this container if they never belonged to anoth
29
29
  Their surviving earlier history then becomes eligible for collection and counts toward the
30
30
  same threshold. Existing threads do not join automatically just because a container exists.
31
31
 
32
+ Give the proof subagent the protected path list and the authorized list. Take that list from
33
+ the latest audit, and copy the paths under `Authorized to modify:`. Tell it this rule: a fix
34
+ can change a path on the authorized list. When a fix needs any other protected path, it must
35
+ not edit it. It returns a result that starts with `Status: blocked` and names the file under
36
+ Blockers.
37
+
38
+ That result is a question for the developer. The file has not changed yet, so consent can
39
+ still go on the record. Name the file and why the fix needs it, then end your turn and wait
40
+ for the developer's answer. If they allow it, record their answer before any edit:
41
+
42
+ ```text
43
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
44
+ ```
45
+
46
+ Continue only when the result starts with `Status: passed`. Run the audit again, take the
47
+ new list from its `Authorized to modify:` block, and spawn a fresh proof subagent with the
48
+ same handoff and that list. A subagent that already returned cannot pick up consent recorded
49
+ after it was spawned. If you cannot ask, or the developer declines, take the feature stop
50
+ route below.
51
+
32
52
  Report each attempt at the proof as it ends, counting from one:
33
53
 
34
54
  ```text
35
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase journey-attempted --attempt 1
55
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase journey-attempted --attempt 1
36
56
  ```
37
57
 
38
58
  Report each repair cycle the same way, counting from one:
39
59
 
40
60
  ```text
41
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase repair-attempted --attempt 1
61
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase repair-attempted --attempt 1
42
62
  ```
43
63
 
44
64
  After the final attempt, report the gate exactly once:
45
65
 
46
66
  ```text
47
- npx --prefer-offline --yes copilotkit@4.16.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
67
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
48
68
  ```
49
69
 
50
70
  Use `passed` only for a proved Container assignment, `failed` for an attempted proof that
51
71
  failed, and `skipped` when the proof could not run. Then run
52
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard audit`. Continue only when it starts with
72
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard audit`. Continue only when it starts with
53
73
  `Status: passed`.
54
74
 
55
75
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -57,16 +77,16 @@ with the proof subagent's `Files changed` section. If that section does not name
57
77
  run `onboard protect --accept-external --path <path>`, or
58
78
  `onboard protect --accept-credential --path <path>` for an env file where the developer
59
79
  placed a requested credential. If the subagent names the path, or its report does not settle
60
- who changed it, ask the developer to allow it. Only after they agree, run
61
- `onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`.
62
- Run the audit again after each accepted or authorized change.
80
+ who changed it, the change is this run's own, made without consent. Do not ask the developer
81
+ to allow it: the CLI refuses consent for a path that already changed. Route out, and name
82
+ the path and the change the audit reports. Run the audit again after each accepted change.
63
83
 
64
84
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
65
85
 
66
86
  ```text
67
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
87
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
68
88
  ```
69
89
 
70
90
  When the audit passes, run
71
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/complete` with the actual surface
91
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/complete` with the actual surface
72
92
  outcome.
@@ -11,7 +11,7 @@ friction command without another developer question. Do not ask the developer ab
11
11
  telemetry: the command applies the setting they already have.
12
12
 
13
13
  ```text
14
- npx --prefer-offline --yes copilotkit@4.16.0 onboard friction --phase stop --category <slug> --message "<sentences>"
14
+ npx --prefer-offline --yes copilotkit@4.17.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.
@@ -22,6 +22,11 @@ the whole run, so the estimate is optional on a stop report and only there. Send
22
22
  source code, logs, or command output. A refused report is not a failed step: reword it and
23
23
  send it again, or stop without a report.
24
24
 
25
+ A refusal by the platform is the one exception. It reaches `feature/blocked-by-plan`, which
26
+ reports the ending by itself and says to file nothing further. A stop that routes to
27
+ `feature/stop` also sends no report here: that prompt first asks the developer about one
28
+ scoped fix, and sends the report itself when no fix is approved.
29
+
25
30
  Ask the platform whether this organization may use Learning before doing any work. The
26
31
  read carries the same availability gate as the create, so it answers the entitlement
27
32
  question in one call and writes nothing:
@@ -38,7 +43,7 @@ status:
38
43
  before the capture, the inspection, and any edit:
39
44
 
40
45
  ```text
41
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/blocked-by-plan
46
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/blocked-by-plan
42
47
  ```
43
48
 
44
49
  - `LEARNING_AVAILABILITY_UNAVAILABLE` means the platform did not resolve the answer. It is
@@ -59,7 +64,7 @@ again: it has no answer, so it carries the question forward rather than ending o
59
64
  Before any subagent or project process runs, capture the developer's existing work:
60
65
 
61
66
  ```text
62
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect
67
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect
63
68
  ```
64
69
 
65
70
  Keep the exact protected path list it prints and give that list to every subagent. No
@@ -68,14 +73,12 @@ approved authorization before implementation.
68
73
 
69
74
  Before edits, inspect the runtime, agent id, provider/chat, server-side user identity,
70
75
  existing Intelligence configuration (presence only), existing thread routes, and the normal
71
- test/dev commands. Prove the current round trip and inspect `/info`. If the project does not
72
- already have a CopilotKit app, leave it unchanged and direct the developer to generic
73
- onboarding.
76
+ test/dev commands. Prove the current round trip and inspect `/info`.
74
77
 
75
78
  Wait for the inspection subagent to finish. Then report that the inspection came back:
76
79
 
77
80
  ```text
78
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase research-returned
81
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase research-returned
79
82
  ```
80
83
 
81
84
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
@@ -85,13 +88,13 @@ If the inspection did not prove the baseline this intent extends, stop here with
85
88
  changing files:
86
89
 
87
90
  ```text
88
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
91
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
89
92
  ```
90
93
 
91
94
  Fetch the current official guides before planning:
92
95
  https://docs.copilotkit.ai/learning.md
93
96
  https://docs.copilotkit.ai/backend/copilot-runtime.md
94
- https://docs.copilotkit.ai/intelligence/connect-your-runtime.md
97
+ https://docs.copilotkit.ai/intelligence/quickstart.md
95
98
  https://docs.copilotkit.ai/threads.md
96
99
  Use a second retrieval method if needed.
97
100
 
@@ -117,7 +120,7 @@ one.
117
120
  After approval, record each approved path before implementation:
118
121
 
119
122
  ```text
120
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
123
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
121
124
  ```
122
125
 
123
126
  If an approved path changed after capture and no implementation step has run, add
@@ -127,7 +130,7 @@ authorize a path the approved plan did not list.
127
130
  Then report the plan this run is about to implement:
128
131
 
129
132
  ```text
130
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase plan-written
133
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase plan-written
131
134
  ```
132
135
 
133
- Then run `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/learning/implement`.
136
+ Then run `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/learning/implement`.
@@ -1,7 +1,7 @@
1
1
  # Implement Open Generative UI with the existing chat surface
2
2
 
3
3
  Delegate implementation to one subagent with the approved plan and the fetched official
4
- guide. Add only the documented Open Generative UI runtime middleware and any documented
4
+ guide. Enable only the documented `openGenerativeUI` runtime option and any documented
5
5
  provider wiring the current package versions require. Preserve the existing agent, runtime
6
6
  route, persistence, chat surface, and model setup.
7
7
 
@@ -13,10 +13,41 @@ Run the project's focused validation commands. Start the app and confirm `/info`
13
13
  `openGenerativeUIEnabled`, while treating that only as capability evidence. Record changed paths and
14
14
  validation results without secrets.
15
15
 
16
+ Before you spawn the implementation subagent, take the authorized list from the CLI:
17
+
18
+ ```text
19
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard audit
20
+ ```
21
+
22
+ From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
23
+ no such block means that nothing is authorized. Read only that block now, and decide the
24
+ findings of a failed audit after implementation, with the audit rules below. If this audit
25
+ starts with `Status: blocked`, the CLI cannot supply the list. Report the printed reason and
26
+ take the feature stop route below.
27
+
28
+ Give the implementation subagent the protected path list and the authorized list. Tell it
29
+ this rule: it can change a path on the authorized list. When the work needs any other
30
+ protected path, it must not edit it. It returns a result that starts with `Status: blocked`
31
+ and names the file under Blockers.
32
+
33
+ That result is a question for the developer. The file has not changed yet, so consent can
34
+ still go on the record. Name the file and why the work needs it, then end your turn and wait
35
+ for the developer's answer. If they allow it, record their answer before any edit:
36
+
37
+ ```text
38
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
39
+ ```
40
+
41
+ Continue only when the result starts with `Status: passed`. Run the audit again, take the
42
+ new list from its `Authorized to modify:` block, and spawn a fresh implementation subagent
43
+ with the same handoff and that list. A subagent that already returned cannot pick up consent
44
+ recorded after it was spawned. If you cannot ask, or the developer declines, take the
45
+ feature stop route below.
46
+
16
47
  After validation and each repair, run:
17
48
 
18
49
  ```text
19
- npx --prefer-offline --yes copilotkit@4.16.0 onboard audit
50
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard audit
20
51
  ```
21
52
 
22
53
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -27,33 +58,30 @@ with the implementation subagent's `Files changed` section. If that section does
27
58
  the path, accept the developer's external change:
28
59
 
29
60
  ```text
30
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --accept-external --path <path>
61
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --accept-external --path <path>
31
62
  ```
32
63
 
33
64
  For an env file where the developer placed a requested credential, use
34
65
  `onboard protect --accept-credential --path <path>` instead. If the subagent names the path,
35
- or its report does not settle who changed it, ask the developer to allow the unplanned
36
- change. Only after they agree, record their answer:
37
-
38
- ```text
39
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
40
- ```
66
+ or its report does not settle who changed it, the change is this run's own, made without
67
+ consent. Do not ask the developer to allow it: the CLI refuses consent for a path that
68
+ already changed. Route out, and name the path and the change the audit reports.
41
69
 
42
- Run the audit again after each accepted or authorized change. If it still fails, or starts
70
+ Run the audit again after each accepted change. If it still fails, or starts
43
71
  with `Status: blocked`, route out and stop:
44
72
 
45
73
  ```text
46
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
74
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
47
75
  ```
48
76
 
49
77
  When implementation validation passes, report it:
50
78
 
51
79
  ```text
52
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase build-validated
80
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase build-validated
53
81
  ```
54
82
 
55
83
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
56
84
  the feature stop route above without further changes.
57
85
 
58
86
  Otherwise run
59
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/open-generative-ui/proof`.
87
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/open-generative-ui/proof`.
@@ -10,26 +10,46 @@ project-owned services running. Repair a failure caused by changed files and pro
10
10
  do not replace the output with a hard-coded component. If browser control is absent, report
11
11
  the missing visual proof honestly.
12
12
 
13
+ Give the proof subagent the protected path list and the authorized list. Take that list from
14
+ the latest audit, and copy the paths under `Authorized to modify:`. Tell it this rule: a fix
15
+ can change a path on the authorized list. When a fix needs any other protected path, it must
16
+ not edit it. It returns a result that starts with `Status: blocked` and names the file under
17
+ Blockers.
18
+
19
+ That result is a question for the developer. The file has not changed yet, so consent can
20
+ still go on the record. Name the file and why the fix needs it, then end your turn and wait
21
+ for the developer's answer. If they allow it, record their answer before any edit:
22
+
23
+ ```text
24
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
25
+ ```
26
+
27
+ Continue only when the result starts with `Status: passed`. Run the audit again, take the
28
+ new list from its `Authorized to modify:` block, and spawn a fresh proof subagent with the
29
+ same handoff and that list. A subagent that already returned cannot pick up consent recorded
30
+ after it was spawned. If you cannot ask, or the developer declines, take the feature stop
31
+ route below.
32
+
13
33
  Report each attempt at the proof as it ends, counting from one:
14
34
 
15
35
  ```text
16
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase journey-attempted --attempt 1
36
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase journey-attempted --attempt 1
17
37
  ```
18
38
 
19
39
  Report each repair cycle the same way, counting from one:
20
40
 
21
41
  ```text
22
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase repair-attempted --attempt 1
42
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase repair-attempted --attempt 1
23
43
  ```
24
44
 
25
45
  After the final attempt, report the gate exactly once:
26
46
 
27
47
  ```text
28
- npx --prefer-offline --yes copilotkit@4.16.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
48
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
29
49
  ```
30
50
 
31
51
  Use `passed` only for a proved generated UI, `failed` for an attempted proof that failed,
32
- and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.16.0 onboard audit`.
52
+ and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.17.0 onboard audit`.
33
53
  Continue only when it starts with `Status: passed`.
34
54
 
35
55
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -37,16 +57,16 @@ with the proof subagent's `Files changed` section. If that section does not name
37
57
  run `onboard protect --accept-external --path <path>`, or
38
58
  `onboard protect --accept-credential --path <path>` for an env file where the developer
39
59
  placed a requested credential. If the subagent names the path, or its report does not settle
40
- who changed it, ask the developer to allow it. Only after they agree, run
41
- `onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`.
42
- Run the audit again after each accepted or authorized change.
60
+ who changed it, the change is this run's own, made without consent. Do not ask the developer
61
+ to allow it: the CLI refuses consent for a path that already changed. Route out, and name
62
+ the path and the change the audit reports. Run the audit again after each accepted change.
43
63
 
44
64
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
45
65
 
46
66
  ```text
47
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
67
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
48
68
  ```
49
69
 
50
70
  When the audit passes, run
51
- `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/complete` with the outcome actually
71
+ `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/complete` with the outcome actually
52
72
  observed.
@@ -6,7 +6,7 @@ implementation, and proof subagents, all restricted to the target project direct
6
6
  Before any subagent or project process runs, capture the developer's existing work:
7
7
 
8
8
  ```text
9
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect
9
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect
10
10
  ```
11
11
 
12
12
  Keep the exact protected path list it prints and give that list to every subagent. No
@@ -16,15 +16,13 @@ approved authorization before implementation.
16
16
  Before edits, have a research subagent identify the current CopilotKit runtime route,
17
17
  provider/chat component, agent id, package versions, existing middleware, sandbox/CSP
18
18
  constraints, and normal test/dev commands. Prove the existing app first with `/info`,
19
- `npx --prefer-offline --yes copilotkit@4.16.0 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
20
- and a real frontend request when browser control is available. If the app is not an existing
21
- OSS CopilotKit app with a proven round trip, change nothing and direct the developer to the
22
- generic onboarding path first.
19
+ `npx --prefer-offline --yes copilotkit@4.17.0 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
20
+ and a real frontend request when browser control is available.
23
21
 
24
22
  Wait for the inspection subagent to finish. Then report that the inspection came back:
25
23
 
26
24
  ```text
27
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase research-returned
25
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase research-returned
28
26
  ```
29
27
 
30
28
  A refused checkpoint prints its reason and leaves onboarding unaffected. It is not a
@@ -34,7 +32,7 @@ If the inspection did not prove the baseline this intent extends, stop here with
34
32
  changing files:
35
33
 
36
34
  ```text
37
- npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/stop
35
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/stop
38
36
  ```
39
37
 
40
38
  Do not sign in, select an Intelligence project, create credentials, change the existing
@@ -56,7 +54,7 @@ one.
56
54
  After approval, record each approved path before implementation:
57
55
 
58
56
  ```text
59
- npx --prefer-offline --yes copilotkit@4.16.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
57
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
60
58
  ```
61
59
 
62
60
  If an approved path changed after capture and no implementation step has run, add
@@ -66,7 +64,7 @@ authorize a path the approved plan did not list.
66
64
  Then report the plan this run is about to implement:
67
65
 
68
66
  ```text
69
- npx --prefer-offline --yes copilotkit@4.16.0 onboard checkpoint --phase plan-written
67
+ npx --prefer-offline --yes copilotkit@4.17.0 onboard checkpoint --phase plan-written
70
68
  ```
71
69
 
72
- Then run `npx --prefer-offline --yes copilotkit@4.16.0 onboard read feature/open-generative-ui/implement`.
70
+ Then run `npx --prefer-offline --yes copilotkit@4.17.0 onboard read feature/open-generative-ui/implement`.