copilotkit 4.23.1 → 4.25.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 (94) hide show
  1. package/README.md +164 -17
  2. package/cli-build-info.json +8 -8
  3. package/exporters/langgraph/README.md +33 -0
  4. package/exporters/langgraph/export_checkpointer.py +16 -0
  5. package/index.js +10909 -8245
  6. package/onboarding/index.json +2 -1
  7. package/onboarding/prompts/authenticate/start.md +50 -42
  8. package/onboarding/prompts/conversion/plan.md +3 -3
  9. package/onboarding/prompts/credentials/finalize-plan.md +30 -8
  10. package/onboarding/prompts/credentials/plan.md +115 -49
  11. package/onboarding/prompts/credentials/settle-credentials.md +16 -5
  12. package/onboarding/prompts/credentials/write-plan.md +15 -15
  13. package/onboarding/prompts/deployment/choose-local.md +62 -14
  14. package/onboarding/prompts/deployment/local-evaluation.md +37 -7
  15. package/onboarding/prompts/fallback/best-effort.md +8 -8
  16. package/onboarding/prompts/feature/a2ui/implement.md +15 -8
  17. package/onboarding/prompts/feature/a2ui/plan.md +15 -7
  18. package/onboarding/prompts/feature/a2ui/proof.md +14 -7
  19. package/onboarding/prompts/feature/a2ui/start.md +26 -8
  20. package/onboarding/prompts/feature/channels/implement.md +21 -9
  21. package/onboarding/prompts/feature/channels/plan.md +15 -7
  22. package/onboarding/prompts/feature/channels/proof.md +14 -7
  23. package/onboarding/prompts/feature/channels/start.md +30 -19
  24. package/onboarding/prompts/feature/chat-suggestions/implement.md +15 -8
  25. package/onboarding/prompts/feature/chat-suggestions/plan.md +15 -7
  26. package/onboarding/prompts/feature/chat-suggestions/proof.md +14 -7
  27. package/onboarding/prompts/feature/chat-suggestions/start.md +26 -8
  28. package/onboarding/prompts/feature/complete.md +2 -2
  29. package/onboarding/prompts/feature/learning/implement.md +32 -18
  30. package/onboarding/prompts/feature/learning/plan.md +15 -7
  31. package/onboarding/prompts/feature/learning/proof.md +76 -9
  32. package/onboarding/prompts/feature/learning/start.md +26 -8
  33. package/onboarding/prompts/feature/open-generative-ui/implement.md +15 -8
  34. package/onboarding/prompts/feature/open-generative-ui/plan.md +15 -7
  35. package/onboarding/prompts/feature/open-generative-ui/proof.md +14 -7
  36. package/onboarding/prompts/feature/open-generative-ui/start.md +26 -8
  37. package/onboarding/prompts/feature/realtime-sync/implement.md +20 -12
  38. package/onboarding/prompts/feature/realtime-sync/plan.md +15 -7
  39. package/onboarding/prompts/feature/realtime-sync/proof.md +14 -7
  40. package/onboarding/prompts/feature/realtime-sync/start.md +25 -7
  41. package/onboarding/prompts/feature/rich-threads/implement.md +21 -13
  42. package/onboarding/prompts/feature/rich-threads/plan.md +15 -7
  43. package/onboarding/prompts/feature/rich-threads/proof.md +14 -7
  44. package/onboarding/prompts/feature/rich-threads/start.md +25 -7
  45. package/onboarding/prompts/feature/stop.md +9 -3
  46. package/onboarding/prompts/feature/voice/implement.md +15 -8
  47. package/onboarding/prompts/feature/voice/plan.md +16 -8
  48. package/onboarding/prompts/feature/voice/proof.md +14 -7
  49. package/onboarding/prompts/feature/voice/start.md +26 -8
  50. package/onboarding/prompts/framework/ag2.md +6 -5
  51. package/onboarding/prompts/framework/agno.md +6 -5
  52. package/onboarding/prompts/framework/built-in.md +9 -6
  53. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  54. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  55. package/onboarding/prompts/framework/crewai-flows.md +12 -4
  56. package/onboarding/prompts/framework/custom-ag-ui.md +8 -2
  57. package/onboarding/prompts/framework/deep-agents.md +6 -5
  58. package/onboarding/prompts/framework/google-adk.md +2 -2
  59. package/onboarding/prompts/framework/langgraph-fastapi.md +8 -5
  60. package/onboarding/prompts/framework/langgraph-python.md +8 -5
  61. package/onboarding/prompts/framework/langgraph-typescript.md +8 -5
  62. package/onboarding/prompts/framework/llamaindex.md +6 -5
  63. package/onboarding/prompts/framework/mastra.md +9 -6
  64. package/onboarding/prompts/framework/ms-agent-dotnet.md +12 -4
  65. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +12 -4
  66. package/onboarding/prompts/framework/ms-agent-python.md +6 -5
  67. package/onboarding/prompts/framework/pydantic-ai.md +6 -5
  68. package/onboarding/prompts/framework/strands-python.md +10 -6
  69. package/onboarding/prompts/framework/strands-typescript.md +10 -6
  70. package/onboarding/prompts/frontend/angular.md +10 -3
  71. package/onboarding/prompts/frontend/nextjs.md +36 -3
  72. package/onboarding/prompts/frontend/plan.md +13 -7
  73. package/onboarding/prompts/frontend/react-native.md +9 -2
  74. package/onboarding/prompts/frontend/react-spa.md +9 -2
  75. package/onboarding/prompts/frontend/vue.md +9 -2
  76. package/onboarding/prompts/implementation/build-and-validate.md +49 -21
  77. package/onboarding/prompts/proof/complete.md +3 -3
  78. package/onboarding/prompts/proof/oss-baseline.md +30 -13
  79. package/onboarding/prompts/proof/round-trip.md +55 -17
  80. package/onboarding/prompts/research/gather.md +21 -11
  81. package/onboarding/prompts/research/merge.md +8 -2
  82. package/onboarding/prompts/research/preflight.md +2 -2
  83. package/onboarding/prompts/research/route.md +14 -7
  84. package/onboarding/prompts/starter/clone.md +151 -9
  85. package/onboarding/prompts/stopped/run-failed.md +8 -2
  86. package/onboarding/prompts/subagent/create-plan.md +9 -2
  87. package/onboarding/prompts/subagent/implement-and-validate.md +2 -2
  88. package/onboarding/prompts/subagent/inspect-repository.md +12 -6
  89. package/onboarding/prompts/subagent/prove-oss-baseline.md +6 -1
  90. package/onboarding/prompts/subagent/prove-round-trip.md +53 -10
  91. package/onboarding/prompts/unsupported/no-validated-path.md +8 -2
  92. package/package.json +1 -1
  93. package/release/release-tool.js +18 -1
  94. package/services/local-auth-worker.js +175 -159
@@ -12,7 +12,7 @@ The approval is a wait for the developer. Before you end your turn to wait, repo
12
12
  pause:
13
13
 
14
14
  ```text
15
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
15
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
16
16
  ```
17
17
 
18
18
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
@@ -34,7 +34,7 @@ you plan. Run `onboard protect` again from the target app directory: on the same
34
34
  prints the baseline the run already holds.
35
35
 
36
36
  ```text
37
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
37
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
38
38
  ```
39
39
 
40
40
  Then have one read-only subagent repeat the inspection for the findings above, and wait
@@ -64,19 +64,27 @@ Show a concise plan for managed runtime/thread prerequisites, a stable selected
64
64
  the documented `getLearningContainerId` selector, validation, and a visible assignment
65
65
  proof. Ask for approval as its own question.
66
66
 
67
+ Before you end your turn to wait for the developer, report the pause:
68
+
69
+ ```text
70
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-plan-approval
71
+ ```
72
+
67
73
  The plan must list every protected path it needs to change under `Authorization requested`,
68
- with one sentence explaining why. Write `None` when it needs none. Authorization covers
69
- changing a protected path, not removing it, so the plan must not delete, move, or rename
70
- one.
74
+ with one sentence explaining why. Write `None` when it needs none. A step that installs or
75
+ upgrades a package changes its manifest, so list a protected manifest such as `package.json`
76
+ or `pyproject.toml`. Its consent covers its lockfile, beside it or at the workspace root.
77
+ Authorization covers changing a protected path, not removing it, so the plan must not
78
+ delete, move, or rename one.
71
79
 
72
80
  After approval, record each approved path before implementation:
73
81
 
74
82
  ```text
75
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
83
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
76
84
  ```
77
85
 
78
86
  If an approved path changed after capture and no implementation step has run, add
79
87
  `--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
80
88
  authorize a path the approved plan did not list.
81
89
 
82
- Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/learning/implement`.
90
+ Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/learning/implement`.
@@ -2,17 +2,77 @@
2
2
 
3
3
  Delegate proof to a fresh subagent. In the real authenticated app, create or use a thread,
4
4
  send a normal agent request, and confirm the resulting run reached the selected Learning
5
- Container. Confirm the thread remains associated with the expected user.
5
+ Container. Confirm the thread remains associated with the expected user. Where the proof
6
+ uses `--thread` (below), that command cannot show the user, so read the user from the app.
7
+
8
+ ## Check the local Learning model first
9
+
10
+ If the app directory has `.copilotkit/local.json`, the app uses a local evaluation stack.
11
+ A local stack runs Learning only with a model that the developer gave it. Before the proof,
12
+ run this command from the app directory:
13
+
14
+ ```text
15
+ npx --prefer-offline --yes copilotkit@4.25.0 local status --json
16
+ ```
17
+
18
+ Read `learning.configuration`. If it is `configured`, continue with the proof. Any other
19
+ value means that the stack has no Learning model.
20
+
21
+ If the developer chose "configure later" in `deployment/choose-local`, and the run's plan
22
+ records that choice, do not ask again. Continue with the proof, and report it as below.
23
+
24
+ Otherwise, tell the developer that Learning cannot process this container's threads until
25
+ it has a model. Ask them to run this command in their own terminal window, in the app
26
+ directory:
27
+
28
+ ```text
29
+ npx --prefer-offline --yes copilotkit@4.25.0 local setup
30
+ ```
31
+
32
+ Do not give it as a `!` line, and do not run it yourself. Its guided model prompt needs a
33
+ terminal, and a coding agent's shell has none. Without a terminal, the command stops and
34
+ changes nothing. The prompt asks for the model and its key, and it saves them privately.
35
+ On a running stack, it restarts only Learning. The container and its threads stay. Do not
36
+ ask the developer to write a model file, and do not read or print the model key.
37
+
38
+ Say that the run continues when they reply or resume this session. Report the pause with
39
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-model-credential`, end your
40
+ turn, and wait. When the developer replies, run `local status --json` again.
41
+ When it reports `configured`, continue with the proof.
42
+
43
+ If the developer declines, continue with the proof, because the container assignment can
44
+ still be proved. In the closing report, write "Learning configuration incomplete". Name the
45
+ command that adds the model later: `npx --prefer-offline --yes copilotkit@4.25.0 local setup`, run from
46
+ the app directory. `learning.verified` is always `false`. It does not mean that Learning
47
+ failed.
48
+
49
+ ## Prove the container assignment
6
50
 
7
51
  One command decides it:
8
52
 
9
53
  ```text
10
- npx --prefer-offline --yes copilotkit@4.23.1 verify --expect-runtime intelligence --round-trip --agent <agent-id> --expect-learning-container <id> --json
54
+ npx --prefer-offline --yes copilotkit@4.25.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --expect-learning-container <id> --json
11
55
  ```
12
56
 
13
57
  It reads the thread back from the platform, so it answers for any runtime mount, and it
14
58
  passes only when that thread carries the container this run selected.
15
59
 
60
+ That command starts its own run on a new thread. An app that runs only threads it created,
61
+ or whose `identifyUser` reads a session, refuses that run, and the container check never
62
+ runs. Do not change the app to accept it. Send one request on a new thread in the app, as
63
+ a signed-in user, read that request's `threadId` from the request body the page sent to
64
+ the runtime, and prove the same thread. Where the page needs a sign-in, do not create an
65
+ account and do not enter credentials. Where you cannot send the request yourself, ask the
66
+ developer to send one message on a new thread and give you its thread id. Report the pause
67
+ with `npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer`, then
68
+ end your turn and wait. When the developer gives the id, prove that thread:
69
+
70
+ ```text
71
+ npx --prefer-offline --yes copilotkit@4.25.0 verify --expect-runtime intelligence --thread <thread-id> --expect-learning-container <id> --json
72
+ ```
73
+
74
+ It reads that thread from the platform with the project key and starts no run.
75
+
16
76
  Two other signals look like proof and are not. `features.self_learning` is a plan
17
77
  entitlement and is already true before any wiring. The `/info` response reports Learning
18
78
  from the presence of a callback, not from a single assigned thread. Never report either one
@@ -36,11 +96,18 @@ not edit it. It returns a result that starts with `Status: blocked` and names th
36
96
  Blockers.
37
97
 
38
98
  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:
99
+ still go on the record. Name the file and why the fix needs it.
100
+ Before you end your turn to wait for the developer, report the pause:
101
+
102
+ ```text
103
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
104
+ ```
105
+
106
+ Then end your turn and wait for the developer's answer. If they allow it, record their
107
+ answer before any edit:
41
108
 
42
109
  ```text
43
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
110
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
44
111
  ```
45
112
 
46
113
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -53,12 +120,12 @@ Report the outcome of each attempt as it ends, before any repair. The command co
53
120
  attempts and the repairs:
54
121
 
55
122
  ```text
56
- npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
123
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
57
124
  ```
58
125
 
59
126
  Use `passed` only for a proved Container assignment, `failed` for an attempted proof that
60
127
  failed, and `skipped` when the proof could not run. Then run
61
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit`. Continue only when it starts with
128
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard audit`. Continue only when it starts with
62
129
  `Status: passed`.
63
130
 
64
131
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -73,9 +140,9 @@ the path and the change the audit reports. Run the audit again after each accept
73
140
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
74
141
 
75
142
  ```text
76
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
143
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
77
144
  ```
78
145
 
79
146
  When the audit passes, run
80
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/complete` with the actual surface
147
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/complete` with the actual surface
81
148
  outcome.
@@ -4,6 +4,24 @@ Treat Learning as a managed Intelligence feature that assigns real threads to a
4
4
  Learning Container. Orchestrate with separate read-only, implementation, and proof
5
5
  subagents. Work only inside the target project and preserve its existing agent and chat.
6
6
 
7
+ ## First, say which coding agent you are
8
+
9
+ Run this before anything else in this prompt:
10
+
11
+ ```text
12
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
13
+ ```
14
+
15
+ Report your product slug, such as `codex` or `claude-code`. The command needs no sign-in,
16
+ browser, or project. If this run already ran `onboard identify`, skip this step.
17
+
18
+ - `--model`: copy the model id exactly as your instructions write it. Without an exact
19
+ model id, leave out `--model` rather than guess.
20
+ - `--model-family`: give it even without `--model`. Closest of: `claude-opus`,
21
+ `claude-sonnet`, `claude-haiku`, `gpt-5`, `gemini`, `grok`, `glm`, `minimax`, `mimo`,
22
+ `deepseek`, `qwen`, `kimi`, else the model's series. Leave it out if you do not know it.
23
+ - Never give your product slug as a model, or as an unlisted family.
24
+
7
25
  ## Waits, stops, and subagents
8
26
 
9
27
  A run that starts here has not read these rules yet, so they come first. They cover this
@@ -20,13 +38,13 @@ carry on. Keep a read-only assignment read-only. If no subagent works at all, re
20
38
  once:
21
39
 
22
40
  ```text
23
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase delegation-unavailable
41
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase delegation-unavailable
24
42
  ```
25
43
 
26
44
  Before you end your turn to wait for the developer, report the pause:
27
45
 
28
46
  ```text
29
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
47
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
30
48
  ```
31
49
 
32
50
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
@@ -36,7 +54,7 @@ If you stop this run, send one short report before you stop. The friction comman
36
54
  the telemetry setting the developer already chose, so it needs no separate question.
37
55
 
38
56
  ```text
39
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
57
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --phase stop --category <slug> --message "<sentences>"
40
58
  ```
41
59
 
42
60
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -66,7 +84,7 @@ status:
66
84
  before the capture, the inspection, and any edit:
67
85
 
68
86
  ```text
69
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/blocked-by-plan
87
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/blocked-by-plan
70
88
  ```
71
89
 
72
90
  - `LEARNING_AVAILABILITY_UNAVAILABLE` means the platform did not resolve the answer. It is
@@ -87,7 +105,7 @@ again: it has no answer, so it carries the question forward rather than ending o
87
105
  Before any subagent or project process runs, capture the developer's existing work:
88
106
 
89
107
  ```text
90
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
108
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
91
109
  ```
92
110
 
93
111
  Keep the exact protected path list it prints and give that list to every subagent. No
@@ -101,20 +119,20 @@ test/dev commands. Prove the current round trip and inspect `/info`.
101
119
  Wait for the inspection subagent to finish. Then report that the inspection came back:
102
120
 
103
121
  ```text
104
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase research-returned
122
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase research-returned
105
123
  ```
106
124
 
107
125
  If the inspection did not prove the baseline this intent extends, stop here without
108
126
  changing files:
109
127
 
110
128
  ```text
111
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
129
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
112
130
  ```
113
131
 
114
132
  When the inspection proved what this intent needs, read the next prompt now, in this turn:
115
133
 
116
134
  ```text
117
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/learning/plan
135
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/learning/plan
118
136
  ```
119
137
 
120
138
  That prompt holds the plan, the developer's approval, and the paths the plan changes.
@@ -16,7 +16,7 @@ validation results without secrets.
16
16
  Before you spawn the implementation subagent, take the authorized list from the CLI:
17
17
 
18
18
  ```text
19
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
19
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
20
20
  ```
21
21
 
22
22
  From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
@@ -31,11 +31,18 @@ protected path, it must not edit it. It returns a result that starts with `Statu
31
31
  and names the file under Blockers.
32
32
 
33
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:
34
+ still go on the record. Name the file and why the work needs it.
35
+ Before you end your turn to wait for the developer, report the pause:
36
36
 
37
37
  ```text
38
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
38
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
39
+ ```
40
+
41
+ Then end your turn and wait for the developer's answer. If they allow it, record their
42
+ answer before any edit:
43
+
44
+ ```text
45
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
39
46
  ```
40
47
 
41
48
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -47,7 +54,7 @@ feature stop route below.
47
54
  After validation and each repair, run:
48
55
 
49
56
  ```text
50
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
57
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
51
58
  ```
52
59
 
53
60
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -58,7 +65,7 @@ with the implementation subagent's `Files changed` section. If that section does
58
65
  the path, accept the developer's external change:
59
66
 
60
67
  ```text
61
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
68
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-external --path <path>
62
69
  ```
63
70
 
64
71
  For an env file where the developer placed a requested credential, use
@@ -71,11 +78,11 @@ Run the audit again after each accepted change. If it still fails, or starts
71
78
  with `Status: blocked`, route out and stop:
72
79
 
73
80
  ```text
74
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
81
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
75
82
  ```
76
83
 
77
84
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
78
85
  the feature stop route above without further changes.
79
86
 
80
87
  Otherwise run
81
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/open-generative-ui/proof`.
88
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/open-generative-ui/proof`.
@@ -12,7 +12,7 @@ The approval is a wait for the developer. Before you end your turn to wait, repo
12
12
  pause:
13
13
 
14
14
  ```text
15
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
15
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
16
16
  ```
17
17
 
18
18
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
@@ -33,7 +33,7 @@ you plan. Run `onboard protect` again from the target app directory: on the same
33
33
  prints the baseline the run already holds.
34
34
 
35
35
  ```text
36
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
36
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
37
37
  ```
38
38
 
39
39
  Then have one read-only subagent repeat the inspection for the findings above, and wait
@@ -52,19 +52,27 @@ Retry through a second retrieval method if needed. Setup is the documented
52
52
  Show a small plan covering that runtime option, the existing provider's renderer path,
53
53
  likely CSP/sandbox implications, tests, and a user-visible generated UI proof. Ask for approval as its own question.
54
54
 
55
+ Before you end your turn to wait for the developer, report the pause:
56
+
57
+ ```text
58
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-plan-approval
59
+ ```
60
+
55
61
  The plan must list every protected path it needs to change under `Authorization requested`,
56
- with one sentence explaining why. Write `None` when it needs none. Authorization covers
57
- changing a protected path, not removing it, so the plan must not delete, move, or rename
58
- one.
62
+ with one sentence explaining why. Write `None` when it needs none. A step that installs or
63
+ upgrades a package changes its manifest, so list a protected manifest such as `package.json`
64
+ or `pyproject.toml`. Its consent covers its lockfile, beside it or at the workspace root.
65
+ Authorization covers changing a protected path, not removing it, so the plan must not
66
+ delete, move, or rename one.
59
67
 
60
68
  After approval, record each approved path before implementation:
61
69
 
62
70
  ```text
63
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
71
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
64
72
  ```
65
73
 
66
74
  If an approved path changed after capture and no implementation step has run, add
67
75
  `--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
68
76
  authorize a path the approved plan did not list.
69
77
 
70
- Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/open-generative-ui/implement`.
78
+ Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/open-generative-ui/implement`.
@@ -17,11 +17,18 @@ not edit it. It returns a result that starts with `Status: blocked` and names th
17
17
  Blockers.
18
18
 
19
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:
20
+ still go on the record. Name the file and why the fix needs it.
21
+ Before you end your turn to wait for the developer, report the pause:
22
22
 
23
23
  ```text
24
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
24
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
25
+ ```
26
+
27
+ Then end your turn and wait for the developer's answer. If they allow it, record their
28
+ answer before any edit:
29
+
30
+ ```text
31
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
25
32
  ```
26
33
 
27
34
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -34,11 +41,11 @@ Report the outcome of each attempt as it ends, before any repair. The command co
34
41
  attempts and the repairs:
35
42
 
36
43
  ```text
37
- npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
44
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
38
45
  ```
39
46
 
40
47
  Use `passed` only for a proved generated UI, `failed` for an attempted proof that failed,
41
- and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit`.
48
+ and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard audit`.
42
49
  Continue only when it starts with `Status: passed`.
43
50
 
44
51
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -53,9 +60,9 @@ the path and the change the audit reports. Run the audit again after each accept
53
60
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
54
61
 
55
62
  ```text
56
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
63
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
57
64
  ```
58
65
 
59
66
  When the audit passes, run
60
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/complete` with the outcome actually
67
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/complete` with the outcome actually
61
68
  observed.
@@ -3,6 +3,24 @@
3
3
  Treat this as a focused OSS enhancement. Orchestrate the work with separate read-only,
4
4
  implementation, and proof subagents, all restricted to the target project directory.
5
5
 
6
+ ## First, say which coding agent you are
7
+
8
+ Run this before anything else in this prompt:
9
+
10
+ ```text
11
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
12
+ ```
13
+
14
+ Report your product slug, such as `codex` or `claude-code`. The command needs no sign-in,
15
+ browser, or project. If this run already ran `onboard identify`, skip this step.
16
+
17
+ - `--model`: copy the model id exactly as your instructions write it. Without an exact
18
+ model id, leave out `--model` rather than guess.
19
+ - `--model-family`: give it even without `--model`. Closest of: `claude-opus`,
20
+ `claude-sonnet`, `claude-haiku`, `gpt-5`, `gemini`, `grok`, `glm`, `minimax`, `mimo`,
21
+ `deepseek`, `qwen`, `kimi`, else the model's series. Leave it out if you do not know it.
22
+ - Never give your product slug as a model, or as an unlisted family.
23
+
6
24
  ## Waits, stops, and subagents
7
25
 
8
26
  A run that starts here has not read these rules yet, so they come first. They cover this
@@ -19,13 +37,13 @@ carry on. Keep a read-only assignment read-only. If no subagent works at all, re
19
37
  once:
20
38
 
21
39
  ```text
22
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase delegation-unavailable
40
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase delegation-unavailable
23
41
  ```
24
42
 
25
43
  Before you end your turn to wait for the developer, report the pause:
26
44
 
27
45
  ```text
28
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
46
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
29
47
  ```
30
48
 
31
49
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
@@ -35,7 +53,7 @@ If you stop this run, send one short report before you stop. The friction comman
35
53
  the telemetry setting the developer already chose, so it needs no separate question.
36
54
 
37
55
  ```text
38
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
56
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --phase stop --category <slug> --message "<sentences>"
39
57
  ```
40
58
 
41
59
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -49,7 +67,7 @@ one scoped fix, and sends the report itself when no fix is approved.
49
67
  Before any subagent or project process runs, capture the developer's existing work:
50
68
 
51
69
  ```text
52
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
70
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
53
71
  ```
54
72
 
55
73
  Keep the exact protected path list it prints and give that list to every subagent. No
@@ -59,26 +77,26 @@ approved authorization before implementation.
59
77
  Before edits, have a research subagent identify the current CopilotKit runtime route,
60
78
  provider/chat component, agent id, package versions, existing middleware, sandbox/CSP
61
79
  constraints, and normal test/dev commands. Prove the existing app first with `/info`,
62
- `npx --prefer-offline --yes copilotkit@4.23.1 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
80
+ `npx --prefer-offline --yes copilotkit@4.25.0 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
63
81
  and a real frontend request when browser control is available.
64
82
 
65
83
  Wait for the inspection subagent to finish. Then report that the inspection came back:
66
84
 
67
85
  ```text
68
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase research-returned
86
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase research-returned
69
87
  ```
70
88
 
71
89
  If the inspection did not prove the baseline this intent extends, stop here without
72
90
  changing files:
73
91
 
74
92
  ```text
75
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
93
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
76
94
  ```
77
95
 
78
96
  When the inspection proved what this intent needs, read the next prompt now, in this turn:
79
97
 
80
98
  ```text
81
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/open-generative-ui/plan
99
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/open-generative-ui/plan
82
100
  ```
83
101
 
84
102
  That prompt holds the plan, the developer's approval, and the paths the plan changes.
@@ -12,19 +12,20 @@ or rewrite either endpoint. For hosted setup, do not add a speculative URL.
12
12
 
13
13
  An Intelligence runtime requires `identifyUser`, and it usually reads a signed-in session
14
14
  that a CLI request does not carry. That makes the round trip UNKNOWN and the command exit
15
- non-zero on an app that is working. Pass what `identifyUser` reads with a repeatable
16
- `--header "Name: value"`, or record UNKNOWN as the expected result for an auth-gated app.
17
- It is not a defect to repair.
15
+ non-zero on an app that is working. It is not a defect to repair. The proof step proves
16
+ such an app on a thread the app created, with `--thread <id>`, which needs no session. Pass
17
+ `--header "Name: value"` only when the developer offers what `identifyUser` reads, or
18
+ record UNKNOWN as the expected result here.
18
19
 
19
20
  Run focused tests and
20
- `npx --prefer-offline --yes copilotkit@4.23.1 verify --expect-runtime intelligence --round-trip --agent <agent-id> --json`.
21
+ `npx --prefer-offline --yes copilotkit@4.25.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --json`.
21
22
  Repair changed-file failures and record changed paths and secret-safe validation
22
23
  evidence.
23
24
 
24
25
  Before you spawn the implementation subagent, take the authorized list from the CLI:
25
26
 
26
27
  ```text
27
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
28
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
28
29
  ```
29
30
 
30
31
  From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
@@ -39,11 +40,18 @@ protected path, it must not edit it. It returns a result that starts with `Statu
39
40
  and names the file under Blockers.
40
41
 
41
42
  That result is a question for the developer. The file has not changed yet, so consent can
42
- still go on the record. Name the file and why the work needs it, then end your turn and wait
43
- for the developer's answer. If they allow it, record their answer before any edit:
43
+ still go on the record. Name the file and why the work needs it.
44
+ Before you end your turn to wait for the developer, report the pause:
44
45
 
45
46
  ```text
46
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
47
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
48
+ ```
49
+
50
+ Then end your turn and wait for the developer's answer. If they allow it, record their
51
+ answer before any edit:
52
+
53
+ ```text
54
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
47
55
  ```
48
56
 
49
57
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -55,7 +63,7 @@ feature stop route below.
55
63
  After validation and each repair, run:
56
64
 
57
65
  ```text
58
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
66
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
59
67
  ```
60
68
 
61
69
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -66,7 +74,7 @@ with the implementation subagent's `Files changed` section. If that section does
66
74
  the path, accept the developer's external change:
67
75
 
68
76
  ```text
69
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
77
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-external --path <path>
70
78
  ```
71
79
 
72
80
  For an env file where the developer placed a requested credential, use
@@ -79,11 +87,11 @@ Run the audit again after each accepted change. If it still fails, or starts
79
87
  with `Status: blocked`, route out and stop:
80
88
 
81
89
  ```text
82
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
90
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
83
91
  ```
84
92
 
85
93
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
86
94
  the feature stop route above without further changes.
87
95
 
88
96
  Otherwise run
89
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/realtime-sync/proof`.
97
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/realtime-sync/proof`.
@@ -12,7 +12,7 @@ The approval is a wait for the developer. Before you end your turn to wait, repo
12
12
  pause:
13
13
 
14
14
  ```text
15
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
15
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
16
16
  ```
17
17
 
18
18
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
@@ -34,7 +34,7 @@ you plan. Run `onboard protect` again from the target app directory: on the same
34
34
  prints the baseline the run already holds.
35
35
 
36
36
  ```text
37
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
37
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
38
38
  ```
39
39
 
40
40
  Then have one read-only subagent repeat the inspection for the findings above, and wait
@@ -57,19 +57,27 @@ from explicit developer-owned values. Never derive one from the other. The clien
57
57
  `/api` itself, so an `apiUrl` that already ends in `/api` produces `/api/api/...`. Hosted setup may not
58
58
  need a `wsUrl`. Ask for approval as its own question.
59
59
 
60
+ Before you end your turn to wait for the developer, report the pause:
61
+
62
+ ```text
63
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-plan-approval
64
+ ```
65
+
60
66
  The plan must list every protected path it needs to change under `Authorization requested`,
61
- with one sentence explaining why. Write `None` when it needs none. Authorization covers
62
- changing a protected path, not removing it, so the plan must not delete, move, or rename
63
- one.
67
+ with one sentence explaining why. Write `None` when it needs none. A step that installs or
68
+ upgrades a package changes its manifest, so list a protected manifest such as `package.json`
69
+ or `pyproject.toml`. Its consent covers its lockfile, beside it or at the workspace root.
70
+ Authorization covers changing a protected path, not removing it, so the plan must not
71
+ delete, move, or rename one.
64
72
 
65
73
  After approval, record each approved path before implementation:
66
74
 
67
75
  ```text
68
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
76
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
69
77
  ```
70
78
 
71
79
  If an approved path changed after capture and no implementation step has run, add
72
80
  `--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
73
81
  authorize a path the approved plan did not list.
74
82
 
75
- Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/realtime-sync/implement`.
83
+ Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/realtime-sync/implement`.