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.
@@ -37,7 +37,7 @@ you plan. Run `onboard protect` again from the target app directory: on the same
37
37
  prints the baseline the run already holds.
38
38
 
39
39
  ```text
40
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
40
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
41
41
  ```
42
42
 
43
43
  Then have one read-only subagent repeat the inspection for the findings above, and wait
@@ -67,19 +67,27 @@ only `channels add <name> --adapter slack|teams`, with the project's directory o
67
67
  name as `<name>`. On Teams, skip Slack-only tools and the Slack e2e harness. Name focused
68
68
  tests and a real mention proof on the chosen provider. Ask for approval as its own question.
69
69
 
70
+ Before you end your turn to wait for the developer, report the pause:
71
+
72
+ ```text
73
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-plan-approval
74
+ ```
75
+
70
76
  The plan must list every protected path it needs to change under `Authorization requested`,
71
- with one sentence explaining why. Write `None` when it needs none. Authorization covers
72
- changing a protected path, not removing it, so the plan must not delete, move, or rename
73
- one.
77
+ with one sentence explaining why. Write `None` when it needs none. A step that installs or
78
+ upgrades a package changes its manifest, so list a protected manifest such as `package.json`
79
+ or `pyproject.toml`. Its consent covers its lockfile, beside it or at the workspace root.
80
+ Authorization covers changing a protected path, not removing it, so the plan must not
81
+ delete, move, or rename one.
74
82
 
75
83
  After approval, record each approved path before implementation:
76
84
 
77
85
  ```text
78
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
86
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
79
87
  ```
80
88
 
81
89
  If an approved path changed after capture and no implementation step has run, add
82
90
  `--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
83
91
  authorize a path the approved plan did not list.
84
92
 
85
- Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/channels/implement`.
93
+ Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/channels/implement`.
@@ -27,11 +27,18 @@ not edit it. It returns a result that starts with `Status: blocked` and names th
27
27
  Blockers.
28
28
 
29
29
  That result is a question for the developer. The file has not changed yet, so consent can
30
- still go on the record. Name the file and why the fix needs it, then end your turn and wait
31
- for the developer's answer. If they allow it, record their answer before any edit:
30
+ still go on the record. Name the file and why the fix needs it.
31
+ Before you end your turn to wait for the developer, report the pause:
32
32
 
33
33
  ```text
34
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
34
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
35
+ ```
36
+
37
+ Then end your turn and wait for the developer's answer. If they allow it, record their
38
+ answer before any edit:
39
+
40
+ ```text
41
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
35
42
  ```
36
43
 
37
44
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -44,11 +51,11 @@ Report the outcome of each attempt as it ends, before any repair. The command co
44
51
  attempts and the repairs:
45
52
 
46
53
  ```text
47
- npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
54
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
48
55
  ```
49
56
 
50
57
  Use `passed` only for a proved mention reply, `failed` for an attempted proof that
51
- failed, and `skipped` when the proof did not run. Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit`.
58
+ failed, and `skipped` when the proof did not run. Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard audit`.
52
59
  Continue only when it starts with `Status: passed`.
53
60
 
54
61
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -63,11 +70,11 @@ the path and the change the audit reports. Run the audit again after each accept
63
70
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
64
71
 
65
72
  ```text
66
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
73
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
67
74
  ```
68
75
 
69
76
  When the audit passes and the round trip you reported above was `passed`, run
70
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/complete` and complete with
77
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/complete` and complete with
71
78
  `--visual-check channels-proof-passed`. The recorded mention and reply are this run's
72
79
  proof, so no web app check is missing. Use `--visual-check performed` only when a
73
80
  browser drove Slack or Teams web and proved the mention reply. Do not use
@@ -1,22 +1,27 @@
1
1
  # Add a managed Channel for Slack or Microsoft Teams
2
2
 
3
- First, report your coding agent identity using the same command as generic onboarding:
3
+ Treat Slack or Teams as the UI for this run. A CopilotKit web app is not required.
4
+ Empty folders, agent-only folders, and existing CopilotKit apps are all valid starts.
5
+ Orchestrate with separate read-only, implementation, and proof subagents, each
6
+ restricted to the target project.
7
+
8
+ ## First, say which coding agent you are
9
+
10
+ Run this before anything else in this prompt:
4
11
 
5
12
  ```text
6
- npx --prefer-offline --yes copilotkit@4.23.1 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
13
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
7
14
  ```
8
15
 
9
- Use your own product's slug, such as `codex` or `claude-code`. For `--model`, copy the
10
- model id exactly as your instructions write it. If they name no exact model id, leave out
11
- `--model` rather than guess. For `--model-family`, give the family of the model you run,
12
- such as `claude-opus` or `gpt-5`, and leave it out if you do not know it. Never give your
13
- product slug as a model or a family. This also covers entry commands that omit `--coding-agent`. It needs no login,
14
- browser, or project setup.
16
+ Report your product slug, such as `codex` or `claude-code`. The command needs no sign-in,
17
+ browser, or project. If this run already ran `onboard identify`, skip this step.
15
18
 
16
- Treat Slack or Teams as the UI for this run. A CopilotKit web app is not required.
17
- Empty folders, agent-only folders, and existing CopilotKit apps are all valid starts.
18
- Orchestrate with separate read-only, implementation, and proof subagents, each
19
- restricted to the target project.
19
+ - `--model`: copy the model id exactly as your instructions write it. Without an exact
20
+ model id, leave out `--model` rather than guess.
21
+ - `--model-family`: give it even without `--model`. Closest of: `claude-opus`,
22
+ `claude-sonnet`, `claude-haiku`, `gpt-5`, `gemini`, `grok`, `glm`, `minimax`, `mimo`,
23
+ `deepseek`, `qwen`, `kimi`, else the model's series. Leave it out if you do not know it.
24
+ - Never give your product slug as a model, or as an unlisted family.
20
25
 
21
26
  ## Waits, stops, and subagents
22
27
 
@@ -34,13 +39,13 @@ carry on. Keep a read-only assignment read-only. If no subagent works at all, re
34
39
  once:
35
40
 
36
41
  ```text
37
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase delegation-unavailable
42
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase delegation-unavailable
38
43
  ```
39
44
 
40
45
  Before you end your turn to wait for the developer, report the pause:
41
46
 
42
47
  ```text
43
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
48
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
44
49
  ```
45
50
 
46
51
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
@@ -50,7 +55,7 @@ If you stop this run, send one short report before you stop. The friction comman
50
55
  the telemetry setting the developer already chose, so it needs no separate question.
51
56
 
52
57
  ```text
53
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
58
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --phase stop --category <slug> --message "<sentences>"
54
59
  ```
55
60
 
56
61
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -64,7 +69,7 @@ one scoped fix, and sends the report itself when no fix is approved.
64
69
  Before any subagent or project process runs, capture the developer's existing work:
65
70
 
66
71
  ```text
67
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
72
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect
68
73
  ```
69
74
 
70
75
  Keep the exact protected path list it prints and give that list to every subagent. Do not
@@ -94,13 +99,19 @@ This one does not.
94
99
  Wait for the inspection subagent to finish. Then report that the inspection came back:
95
100
 
96
101
  ```text
97
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase research-returned
102
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase research-returned
98
103
  ```
99
104
 
100
105
  If the folder is empty, check Node 22, `uv`, and Python before cloning. Python 3.12 or
101
106
  newer satisfies the check. If no Python 3.12 or newer is present and `uv` is, offer once
102
107
  to install one with `uv python install 3.12`, and continue after the developer approves.
103
108
 
109
+ Before you end your turn to wait for the developer, report the pause:
110
+
111
+ ```text
112
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
113
+ ```
114
+
104
115
  Stop here without cloning only when Node 22 is missing, `uv` is missing, or the developer
105
116
  declines that install. Do not switch to a custom build in silence. Name the missing tool
106
117
  and its install command in the message the developer sees: `nvm install 22` for Node 22,
@@ -108,13 +119,13 @@ and its install command in the message the developer sees: `nvm install 22` for
108
119
  for Python. Offer a custom headless build as a later path. Then route out:
109
120
 
110
121
  ```text
111
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
122
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
112
123
  ```
113
124
 
114
125
  When the tools this run needs are present, read the next prompt now, in this turn:
115
126
 
116
127
  ```text
117
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/channels/plan
128
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/channels/plan
118
129
  ```
119
130
 
120
131
  That prompt holds the plan, the developer's approval, and the paths the plan changes.
@@ -15,7 +15,7 @@ Run focused type/test checks and start the app. Record the changed files and val
15
15
  Before you spawn the implementation subagent, take the authorized list from the CLI:
16
16
 
17
17
  ```text
18
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
18
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
19
19
  ```
20
20
 
21
21
  From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
@@ -30,11 +30,18 @@ protected path, it must not edit it. It returns a result that starts with `Statu
30
30
  and names the file under Blockers.
31
31
 
32
32
  That result is a question for the developer. The file has not changed yet, so consent can
33
- still go on the record. Name the file and why the work needs it, then end your turn and wait
34
- for the developer's answer. If they allow it, record their answer before any edit:
33
+ still go on the record. Name the file and why the work needs it.
34
+ Before you end your turn to wait for the developer, report the pause:
35
35
 
36
36
  ```text
37
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
37
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
38
+ ```
39
+
40
+ Then end your turn and wait for the developer's answer. If they allow it, record their
41
+ answer before any edit:
42
+
43
+ ```text
44
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
38
45
  ```
39
46
 
40
47
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -46,7 +53,7 @@ feature stop route below.
46
53
  After validation and each repair, run:
47
54
 
48
55
  ```text
49
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
56
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
50
57
  ```
51
58
 
52
59
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -57,7 +64,7 @@ with the implementation subagent's `Files changed` section. If that section does
57
64
  the path, accept the developer's external change:
58
65
 
59
66
  ```text
60
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
67
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-external --path <path>
61
68
  ```
62
69
 
63
70
  For an env file where the developer placed a requested credential, use
@@ -70,11 +77,11 @@ Run the audit again after each accepted change. If it still fails, or starts
70
77
  with `Status: blocked`, route out and stop:
71
78
 
72
79
  ```text
73
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
80
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
74
81
  ```
75
82
 
76
83
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
77
84
  the feature stop route above without further changes.
78
85
 
79
86
  Otherwise run
80
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/chat-suggestions/proof`.
87
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/chat-suggestions/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
@@ -53,19 +53,27 @@ context-dependent follow-ups. Show an approved-plan-sized diff, a focused test,
53
53
  proof that a visible suggestion submits the intended message. Ask for approval as its own
54
54
  question.
55
55
 
56
+ Before you end your turn to wait for the developer, report the pause:
57
+
58
+ ```text
59
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-plan-approval
60
+ ```
61
+
56
62
  The plan must list every protected path it needs to change under `Authorization requested`,
57
- with one sentence explaining why. Write `None` when it needs none. Authorization covers
58
- changing a protected path, not removing it, so the plan must not delete, move, or rename
59
- one.
63
+ with one sentence explaining why. Write `None` when it needs none. A step that installs or
64
+ upgrades a package changes its manifest, so list a protected manifest such as `package.json`
65
+ or `pyproject.toml`. Its consent covers its lockfile, beside it or at the workspace root.
66
+ Authorization covers changing a protected path, not removing it, so the plan must not
67
+ delete, move, or rename one.
60
68
 
61
69
  After approval, record each approved path before implementation:
62
70
 
63
71
  ```text
64
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
72
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
65
73
  ```
66
74
 
67
75
  If an approved path changed after capture and no implementation step has run, add
68
76
  `--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
69
77
  authorize a path the approved plan did not list.
70
78
 
71
- Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/chat-suggestions/implement`.
79
+ Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/chat-suggestions/implement`.
@@ -16,11 +16,18 @@ not edit it. It returns a result that starts with `Status: blocked` and names th
16
16
  Blockers.
17
17
 
18
18
  That result is a question for the developer. The file has not changed yet, so consent can
19
- still go on the record. Name the file and why the fix needs it, then end your turn and wait
20
- for the developer's answer. If they allow it, record their answer before any edit:
19
+ still go on the record. Name the file and why the fix needs it.
20
+ Before you end your turn to wait for the developer, report the pause:
21
21
 
22
22
  ```text
23
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
23
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
24
+ ```
25
+
26
+ Then end your turn and wait for the developer's answer. If they allow it, record their
27
+ answer before any edit:
28
+
29
+ ```text
30
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
24
31
  ```
25
32
 
26
33
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -33,11 +40,11 @@ Report the outcome of each attempt as it ends, before any repair. The command co
33
40
  attempts and the repairs:
34
41
 
35
42
  ```text
36
- npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
43
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard proof --step round-trip --outcome <passed|failed|skipped>
37
44
  ```
38
45
 
39
46
  Use `passed` only for a proved sent suggestion, `failed` for an attempted proof that failed,
40
- and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit`.
47
+ and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.25.0 onboard audit`.
41
48
  Continue only when it starts with `Status: passed`.
42
49
 
43
50
  If the audit fails, never repair, reset, or revert a protected path. Compare each named path
@@ -52,9 +59,9 @@ the path and the change the audit reports. Run the audit again after each accept
52
59
  If the audit still fails, or starts with `Status: blocked`, route out and stop:
53
60
 
54
61
  ```text
55
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
62
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
56
63
  ```
57
64
 
58
65
  When the audit passes, run
59
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/complete` with the real browser-proof
66
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/complete` with the real browser-proof
60
67
  outcome.
@@ -3,6 +3,24 @@
3
3
  Treat this as an additive OSS chat-surface feature. Delegate repository inspection,
4
4
  implementation, and proof to separate subagents and keep all work inside the target project.
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
@@ -58,26 +76,26 @@ approved authorization before implementation.
58
76
 
59
77
  Before edits, identify the current CopilotKit provider, chat component, message lifecycle,
60
78
  agent id, package version, and test/dev commands. Prove the existing OSS round trip with
61
- `/info`, `npx --prefer-offline --yes copilotkit@4.23.1 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
79
+ `/info`, `npx --prefer-offline --yes copilotkit@4.25.0 verify --expect-runtime oss --round-trip --agent <agent-id> --json`,
62
80
  and one real frontend request when browser control is available.
63
81
 
64
82
  Wait for the inspection subagent to finish. Then report that the inspection came back:
65
83
 
66
84
  ```text
67
- npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase research-returned
85
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase research-returned
68
86
  ```
69
87
 
70
88
  If the inspection did not prove the baseline this intent extends, stop here without
71
89
  changing files:
72
90
 
73
91
  ```text
74
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
92
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
75
93
  ```
76
94
 
77
95
  When the inspection proved what this intent needs, read the next prompt now, in this turn:
78
96
 
79
97
  ```text
80
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/chat-suggestions/plan
98
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/chat-suggestions/plan
81
99
  ```
82
100
 
83
101
  That prompt holds the plan, the developer's approval, and the paths the plan changes.
@@ -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.23.1 onboard complete --visual-check <performed|skipped-no-browser-tool|channels-proof-passed|failed>
6
+ npx --prefer-offline --yes copilotkit@4.25.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
@@ -22,7 +22,7 @@ Before `onboard complete`, send the friction this run mentioned to the developer
22
22
  report each, at most four, costliest first:
23
23
 
24
24
  ```text
25
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
25
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --category <slug> --cost-seconds <seconds> --message "<sentences>"
26
26
  ```
27
27
 
28
28
  Put one or two sentences in `--message`, with no secrets, source, or logs. Pick the
@@ -17,7 +17,7 @@ follows the telemetry setting the developer already chose, so it needs no separa
17
17
  question.
18
18
 
19
19
  ```text
20
- npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
20
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard friction --phase stop --category <slug> --message "<sentences>"
21
21
  ```
22
22
 
23
23
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -49,7 +49,7 @@ settled refusal rather than a missing baseline, so stop here, before any file ch
49
49
  take its own ending:
50
50
 
51
51
  ```text
52
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/blocked-by-plan
52
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/blocked-by-plan
53
53
  ```
54
54
 
55
55
  `LEARNING_AVAILABILITY_UNAVAILABLE` means the platform did not resolve the answer. It is
@@ -63,7 +63,7 @@ then, so the read below is where its refusal surfaces.
63
63
  When the plan or the repository already names an id, ask about that one id and nothing else:
64
64
 
65
65
  ```text
66
- npx --prefer-offline --yes copilotkit@4.23.1 learning containers get <id> --json
66
+ npx --prefer-offline --yes copilotkit@4.25.0 learning containers get <id> --json
67
67
  ```
68
68
 
69
69
  One call answers it, and no list is needed.
@@ -71,7 +71,7 @@ One call answers it, and no list is needed.
71
71
  When no id is in hand, survey what the project holds:
72
72
 
73
73
  ```text
74
- npx --prefer-offline --yes copilotkit@4.23.1 learning containers list --json
74
+ npx --prefer-offline --yes copilotkit@4.25.0 learning containers list --json
75
75
  ```
76
76
 
77
77
  One call returns at most 500 containers. When `nextCursor` in the result is not null, read
@@ -82,6 +82,12 @@ second container for work the first one already covers.
82
82
  Reuse an existing container when one covers the workflow this run is instrumenting, and ask
83
83
  the developer which one when more than one could. Otherwise create one.
84
84
 
85
+ Before you end your turn to wait for the developer, report the pause:
86
+
87
+ ```text
88
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
89
+ ```
90
+
85
91
  Default to one container for this project, and name it after the project. Learning needs
86
92
  evidence to work with: the first automatic run wants threads from 15 distinct conversations
87
93
  in one container, so splitting a new project across several leaves every one of them below
@@ -94,7 +100,7 @@ user, so the callback can return a different id per tier or per customer.
94
100
  Ask the CLI for the id rather than spelling one yourself:
95
101
 
96
102
  ```text
97
- npx --prefer-offline --yes copilotkit@4.23.1 learning containers default-id --json
103
+ npx --prefer-offline --yes copilotkit@4.25.0 learning containers default-id --json
98
104
  ```
99
105
 
100
106
  It derives the project-scoped id from the selected project's slug, reads the local project
@@ -108,7 +114,7 @@ run that spells the id differently gives one project two containers, each below
108
114
  above on its own. One command is what keeps the two spellings identical.
109
115
 
110
116
  ```text
111
- npx --prefer-offline --yes copilotkit@4.23.1 learning containers create --id <id> --name <name> --json
117
+ npx --prefer-offline --yes copilotkit@4.25.0 learning containers create --id <id> --name <name> --json
112
118
  ```
113
119
 
114
120
  An id already in use answers `LEARNING_CONTAINER_ALREADY_EXISTS`. That is a container to
@@ -129,18 +135,19 @@ and persistence.
129
135
 
130
136
  An Intelligence runtime requires `identifyUser`, and it usually reads a signed-in session
131
137
  that a CLI request does not carry. That makes the round trip UNKNOWN and the command exit
132
- non-zero on an app that is working. Pass what `identifyUser` reads with a repeatable
133
- `--header "Name: value"`, or record UNKNOWN as the expected result for an auth-gated app.
134
- It is not a defect to repair.
138
+ non-zero on an app that is working. It is not a defect to repair. The proof step proves
139
+ such an app on a thread the app created, with `--thread <id>`, which needs no session. Pass
140
+ `--header "Name: value"` only when the developer offers what `identifyUser` reads, or
141
+ record UNKNOWN as the expected result here.
135
142
 
136
143
  Run focused tests and
137
- `npx --prefer-offline --yes copilotkit@4.23.1 verify --expect-runtime intelligence --round-trip --agent <agent-id> --json`.
144
+ `npx --prefer-offline --yes copilotkit@4.25.0 verify --expect-runtime intelligence --round-trip --agent <agent-id> --json`.
138
145
  Repair changed-file failures and record secret-safe evidence.
139
146
 
140
147
  Before you spawn the implementation subagent, take the authorized list from the CLI:
141
148
 
142
149
  ```text
143
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
150
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
144
151
  ```
145
152
 
146
153
  From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
@@ -155,11 +162,18 @@ protected path, it must not edit it. It returns a result that starts with `Statu
155
162
  and names the file under Blockers.
156
163
 
157
164
  That result is a question for the developer. The file has not changed yet, so consent can
158
- still go on the record. Name the file and why the work needs it, then end your turn and wait
159
- for the developer's answer. If they allow it, record their answer before any edit:
165
+ still go on the record. Name the file and why the work needs it.
166
+ Before you end your turn to wait for the developer, report the pause:
167
+
168
+ ```text
169
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard checkpoint --phase awaiting-developer
170
+ ```
171
+
172
+ Then end your turn and wait for the developer's answer. If they allow it, record their
173
+ answer before any edit:
160
174
 
161
175
  ```text
162
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
176
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
163
177
  ```
164
178
 
165
179
  Continue only when the result starts with `Status: passed`. Run the audit again, take the
@@ -171,7 +185,7 @@ feature stop route below.
171
185
  After validation and each repair, run:
172
186
 
173
187
  ```text
174
- npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
188
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard audit
175
189
  ```
176
190
 
177
191
  Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
@@ -182,7 +196,7 @@ with the implementation subagent's `Files changed` section. If that section does
182
196
  the path, accept the developer's external change:
183
197
 
184
198
  ```text
185
- npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
199
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard protect --accept-external --path <path>
186
200
  ```
187
201
 
188
202
  For an env file where the developer placed a requested credential, use
@@ -196,11 +210,11 @@ with `Status: blocked`, route out and stop. Route out the same way when
196
210
  `--accept-credential` refuses because it names a lost variable:
197
211
 
198
212
  ```text
199
- npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
213
+ npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/stop
200
214
  ```
201
215
 
202
216
  If validation cannot pass, or this intent needs a prerequisite the app does not have, use
203
217
  the feature stop route above without further changes.
204
218
 
205
219
  Otherwise run
206
- `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/learning/proof`.
220
+ `npx --prefer-offline --yes copilotkit@4.25.0 onboard read feature/learning/proof`.