copilotkit 4.27.0 → 4.28.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 (92) hide show
  1. package/README.md +155 -23
  2. package/cli-build-info.json +7 -7
  3. package/index.js +7748 -4981
  4. package/onboarding/index.json +3 -2
  5. package/onboarding/prompts/authenticate/start.md +42 -55
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +28 -24
  8. package/onboarding/prompts/credentials/plan.md +31 -28
  9. package/onboarding/prompts/credentials/settle-credentials.md +7 -7
  10. package/onboarding/prompts/credentials/write-plan.md +54 -36
  11. package/onboarding/prompts/deployment/choose-local.md +9 -9
  12. package/onboarding/prompts/deployment/local-evaluation.md +11 -11
  13. package/onboarding/prompts/fallback/best-effort.md +9 -13
  14. package/onboarding/prompts/feature/a2ui/implement.md +4 -4
  15. package/onboarding/prompts/feature/a2ui/plan.md +3 -3
  16. package/onboarding/prompts/feature/a2ui/proof.md +5 -5
  17. package/onboarding/prompts/feature/a2ui/start.md +8 -8
  18. package/onboarding/prompts/feature/channels/implement.md +7 -7
  19. package/onboarding/prompts/feature/channels/plan.md +5 -5
  20. package/onboarding/prompts/feature/channels/proof.md +8 -7
  21. package/onboarding/prompts/feature/channels/start.md +9 -9
  22. package/onboarding/prompts/feature/chat-suggestions/implement.md +4 -4
  23. package/onboarding/prompts/feature/chat-suggestions/plan.md +3 -3
  24. package/onboarding/prompts/feature/chat-suggestions/proof.md +5 -5
  25. package/onboarding/prompts/feature/chat-suggestions/start.md +8 -8
  26. package/onboarding/prompts/feature/complete.md +2 -2
  27. package/onboarding/prompts/feature/learning/implement.md +12 -12
  28. package/onboarding/prompts/feature/learning/plan.md +4 -4
  29. package/onboarding/prompts/feature/learning/proof.md +13 -13
  30. package/onboarding/prompts/feature/learning/start.md +8 -8
  31. package/onboarding/prompts/feature/open-generative-ui/implement.md +4 -4
  32. package/onboarding/prompts/feature/open-generative-ui/plan.md +3 -3
  33. package/onboarding/prompts/feature/open-generative-ui/proof.md +5 -5
  34. package/onboarding/prompts/feature/open-generative-ui/start.md +8 -8
  35. package/onboarding/prompts/feature/realtime-sync/implement.md +5 -5
  36. package/onboarding/prompts/feature/realtime-sync/plan.md +3 -3
  37. package/onboarding/prompts/feature/realtime-sync/proof.md +5 -5
  38. package/onboarding/prompts/feature/realtime-sync/start.md +7 -7
  39. package/onboarding/prompts/feature/rich-threads/implement.md +6 -6
  40. package/onboarding/prompts/feature/rich-threads/plan.md +3 -3
  41. package/onboarding/prompts/feature/rich-threads/proof.md +5 -5
  42. package/onboarding/prompts/feature/rich-threads/start.md +7 -7
  43. package/onboarding/prompts/feature/stop.md +4 -4
  44. package/onboarding/prompts/feature/voice/implement.md +4 -4
  45. package/onboarding/prompts/feature/voice/plan.md +4 -4
  46. package/onboarding/prompts/feature/voice/proof.md +5 -5
  47. package/onboarding/prompts/feature/voice/start.md +8 -8
  48. package/onboarding/prompts/framework/ag2.md +3 -3
  49. package/onboarding/prompts/framework/agno.md +3 -3
  50. package/onboarding/prompts/framework/built-in.md +3 -3
  51. package/onboarding/prompts/framework/claude-sdk-python.md +3 -3
  52. package/onboarding/prompts/framework/claude-sdk-typescript.md +3 -3
  53. package/onboarding/prompts/framework/crewai-flows.md +6 -6
  54. package/onboarding/prompts/framework/custom-ag-ui.md +4 -4
  55. package/onboarding/prompts/framework/deep-agents.md +3 -3
  56. package/onboarding/prompts/framework/google-adk.md +3 -3
  57. package/onboarding/prompts/framework/langgraph-fastapi.md +3 -3
  58. package/onboarding/prompts/framework/langgraph-python.md +3 -3
  59. package/onboarding/prompts/framework/langgraph-typescript.md +3 -3
  60. package/onboarding/prompts/framework/llamaindex.md +3 -3
  61. package/onboarding/prompts/framework/mastra.md +3 -3
  62. package/onboarding/prompts/framework/ms-agent-dotnet.md +5 -5
  63. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +5 -5
  64. package/onboarding/prompts/framework/ms-agent-python.md +3 -3
  65. package/onboarding/prompts/framework/pydantic-ai.md +3 -3
  66. package/onboarding/prompts/framework/strands-python.md +3 -3
  67. package/onboarding/prompts/framework/strands-typescript.md +3 -3
  68. package/onboarding/prompts/frontend/angular.md +4 -4
  69. package/onboarding/prompts/frontend/nextjs.md +4 -4
  70. package/onboarding/prompts/frontend/plan.md +12 -12
  71. package/onboarding/prompts/frontend/react-native.md +3 -3
  72. package/onboarding/prompts/frontend/react-spa.md +3 -3
  73. package/onboarding/prompts/frontend/vue.md +3 -3
  74. package/onboarding/prompts/implementation/build-and-validate.md +16 -14
  75. package/onboarding/prompts/proof/complete.md +6 -7
  76. package/onboarding/prompts/proof/oss-baseline.md +8 -5
  77. package/onboarding/prompts/proof/round-trip.md +18 -20
  78. package/onboarding/prompts/research/gather.md +38 -10
  79. package/onboarding/prompts/research/merge.md +3 -3
  80. package/onboarding/prompts/research/preflight.md +2 -2
  81. package/onboarding/prompts/research/route.md +10 -4
  82. package/onboarding/prompts/setup/questions.md +53 -234
  83. package/onboarding/prompts/starter/clone.md +42 -33
  84. package/onboarding/prompts/stopped/run-failed.md +3 -3
  85. package/onboarding/prompts/subagent/create-plan.md +32 -34
  86. package/onboarding/prompts/subagent/implement-and-validate.md +12 -35
  87. package/onboarding/prompts/subagent/inspect-repository.md +1 -1
  88. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  89. package/onboarding/prompts/subagent/prove-round-trip.md +35 -52
  90. package/onboarding/prompts/unsupported/no-validated-path.md +3 -3
  91. package/package.json +1 -1
  92. package/release/release-tool.js +8 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "graphTree": "761ec1a0c9afe1db037029abc373e555159ce088",
2
+ "graphTree": "7638f7b001415b1dbd5bdd5204b9c296810439f7",
3
3
  "intentRoots": {
4
4
  "add-a2ui": "feature/a2ui/start",
5
5
  "add-chat-suggestions": "feature/chat-suggestions/start",
@@ -9,7 +9,7 @@
9
9
  "add-rich-threads": "feature/rich-threads/start",
10
10
  "add-voice": "feature/voice/start"
11
11
  },
12
- "packageSpec": "copilotkit@4.27.0",
12
+ "packageSpec": "copilotkit@4.28.0",
13
13
  "root": "authenticate/start",
14
14
  "prompts": [
15
15
  {
@@ -620,6 +620,7 @@
620
620
  {
621
621
  "edges": [
622
622
  "subagent/inspect-repository",
623
+ "setup/questions",
623
624
  "research/preflight",
624
625
  "stopped/run-failed"
625
626
  ],
@@ -6,19 +6,23 @@ This run executes the CopilotKit CLI through `npx`.
6
6
  It spawns read-only inspection subagents inside the target project. It sends checkpoints
7
7
  and optional friction reports to CopilotKit under the developer's telemetry setting. It
8
8
  reads nothing outside the project
9
- directory. It changes files only after writing the plan, and asks before any risky change
10
- the plan names. CopilotKit
9
+ directory. It changes files only after writing the plan, and asks before any change the
10
+ plan says needs the developer's approval. CopilotKit
11
11
  Intelligence has a free Developer plan, and this run needs no paid subscription.
12
12
 
13
13
  ## Command approvals
14
14
 
15
15
  Run each CLI call exactly as written, as its own command: no pipe, `tee`, `&&`, redirect,
16
16
  or variable prefix. Every CLI call in this run matches the prefix rule
17
- `["npx", "--prefer-offline", "--yes", "copilotkit@4.27.0"]`.
17
+ `["npx", "--prefer-offline", "--yes", "copilotkit@4.28.0"]`.
18
+
18
19
  <!-- sandboxed-harness -->
20
+
19
21
  If a command can request escalation with a prefix rule, request this one on the
20
22
  `onboard identify` call.
23
+
21
24
  <!-- /sandboxed-harness -->
25
+
22
26
  If your harness asks the developer to approve commands, tell them one approval of that
23
27
  prefix covers every CLI call. Say then that the install, the dev servers, `curl` to the local app, and
24
28
  `ps`, `lsof`, and `kill` ask for approval later.
@@ -27,17 +31,21 @@ Never add or edit a permission rule or a settings file yourself. That choice bel
27
31
  the developer.
28
32
 
29
33
  If your harness refuses a CLI call without asking the developer, do not retry it or run it
30
- another way. Report the pause: `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`.
34
+ another way. Report the pause: `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer`.
31
35
  Name the refused command, ask the developer to approve it or to switch to a
32
36
  mode that asks them, and end your turn. When they answer, run it once more.
33
37
  That refusal is a pause, not a stop.
34
38
 
35
39
  ## First, say which coding agent you are
36
40
 
37
- Run this first, before the welcome message below:
41
+ Before you run any other command, write this one line in your own reply: "Setting up
42
+ CopilotKit: I check your sign-in and your project, then show you the setup." The developer
43
+ does not see your tool output, and the welcome comes later, with the setup message.
44
+
45
+ Then run this:
38
46
 
39
47
  ```text
40
- npx --prefer-offline --yes copilotkit@4.27.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
48
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
41
49
  ```
42
50
 
43
51
  Report your product slug, such as `codex` or `claude-code`.
@@ -62,37 +70,20 @@ the whole run. Every later command reports against it.
62
70
 
63
71
  `onboard read research/gather` gives the rules for the rest of the run.
64
72
 
65
- Send this exact message once, as your first message in this onboarding run, before
66
- anything else:
67
-
68
- Welcome to CopilotKit! By the end of this run, your application talks to an AI agent and
69
- keeps each conversation as Rich Threads. Users can return to earlier work. Where enabled,
70
- Automatic Learning then helps your agent improve from that history: it finds usage patterns
71
- and proposes reusable Skills, and you approve which Skills it gets.
72
-
73
- I will check sign-in, inspect your project, and recommend a setup. You get a written plan
74
- before any change, and your approval before anything risky. `onboard restore` puts back
75
- the files my backup holds, and my closing report names any it left out. Then I build the
76
- integration, prove the full round trip, and leave the app running with its URLs.
77
-
78
- Everything I need from you comes first: sign-in and a few short setup questions. If I need
79
- you to approve a command, or something blocks me, I will ask you here. Otherwise you hear
80
- from me next when the app is running and I hand you its URLs.
81
- To self-host on your machine with Docker, say so before you sign in.
82
-
83
- That message belongs to the run. Send it only once, including after a second read of this prompt.
84
- Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase welcome-sent`.
73
+ Do not write a welcome of your own. The CLI puts the run's welcome at the top of the setup
74
+ message, which says to write it in your own reply, because the developer does not see your
75
+ tool output.
85
76
 
86
77
  ## Report a stop, wherever it happens
87
78
 
88
79
  If you stop this run at any point, send one short report before you stop. This includes
89
80
  unexpected stops and stops caused by your harness.
90
81
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
91
- Report the pause: `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`.
82
+ Report the pause: `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer`.
92
83
  A terminal that sends the report itself, or says to file none, overrides this.
93
84
 
94
85
  ```text
95
- npx --prefer-offline --yes copilotkit@4.27.0 onboard friction --phase stop --category <slug> --message "<sentences>"
86
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard friction --phase stop --category <slug> --message "<sentences>"
96
87
  ```
97
88
 
98
89
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -110,15 +101,15 @@ rule that stopped you says next: send the report, then stop.
110
101
  Take the local route only when the developer already asked to run CopilotKit locally,
111
102
  with Docker, or self-hosted: in their request, the copied prompt, or a later reply, or
112
103
  when this run already recorded local. Then run
113
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard read deployment/choose-local` instead.
104
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard read deployment/choose-local` instead.
114
105
 
115
106
  Otherwise keep managed. Do not ask the developer to choose. Run
116
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard deployment --choice managed`, then continue with
107
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard deployment --choice managed`, then continue with
117
108
  “Check sign-in”. If it refuses because of a local stack, take the local route.
118
109
 
119
110
  ## Check sign-in
120
111
 
121
- Run `npx --prefer-offline --yes copilotkit@4.27.0 login --json` before any project work. It checks the
112
+ Run `npx --prefer-offline --yes copilotkit@4.28.0 login --json --onboarding` before any project work. It checks the
122
113
  session and starts sign-in only as needed. Treat this as a long-lived
123
114
  streaming process. Do not wait for the command to exit before you read its standard output.
124
115
 
@@ -126,40 +117,36 @@ Read each JSON Lines record as it arrives:
126
117
 
127
118
  1. If the process emits `type: completed` without an `authentication_url`, continue: the
128
119
  existing session is valid.
129
- 2. If the process emits `authentication_url`, read the first `authentication_url` without
130
- changing it. The process is still running.
131
- When that first URL arrives, send this exact message once. Add no feature list or other
132
- explanation:
133
-
134
- I am opening a sign-in page. Signing in gives this project a managed CopilotKit project
135
- and its API key. That key is what lets your users reopen past conversations. You can
136
- remove it later to disconnect this workspace.
137
-
138
- If it carries `user_code`, add: `Check that the page shows this code: <user_code>`.
139
-
140
- 3. The CLI opens the page in the default browser itself when it can, and the
141
- `action_required` record says whether it did. With `"browser_opened": true`, do not open
142
- it again. With `"browser_opened": false`, show the clickable URL to the developer and ask
143
- them to finish sign-in there. Your own built-in browser
144
- does not carry the session the developer already signed in with, so do not use it.
120
+ 2. If the process emits `authentication_url`, the developer must sign in. The process is
121
+ still running.
122
+ 3. The CLI does not open the page. The first `action_required` record carries a `message`:
123
+ why to sign in, then the link and the code. Write that `message` in your own reply, word
124
+ for word, and add nothing else. The developer does not see your tool output. Do not open
125
+ the page yourself: the developer opens it from your message. Then report the pause with
126
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer` and end your
127
+ turn. Until the developer says they signed in, send them nothing more. When the research or
128
+ another helper returns, record what it found and end your turn without a message. Your own
129
+ built-in browser does not carry the session the developer already signed in with,
130
+ so do not use it.
145
131
  A later `authentication_url` record with `"renewed": true` means the earlier code expired.
146
- Do not resend the sign-in message. Show only the new code, and the URL if
147
- `browser_opened` is false.
132
+ Write its `message` the same way.
148
133
  4. Keep monitoring the same login process. Do not start a second login command.
149
134
  5. Go past the research only after that same process emits `type: completed`.
150
135
  6. On `type: failed` with `reason: expired` or `reason: renewal_failed`, ask once whether to
151
- retry. If yes, start one new `login --json`. Use `--force` only when the developer asks.
136
+ retry. If yes, start one new `login --json --onboarding`. Use `--force` only when the
137
+ developer asks.
152
138
  7. If that process emits `type: failed`, report the error and stop onboarding. On
153
139
  `reason: repeated_expiry`, rerun `login` with `--force` only if the developer asks.
154
140
 
155
- On `type: completed`, run `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase sign-in-settled`
141
+ On `type: completed`, run `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase sign-in-settled`
156
142
  before you continue.
157
143
 
158
144
  If your harness ends the login process or your turn before the process emits
159
- `type: completed` or `type: failed`, that is a pause, not a failed sign-in. Report the pause: `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`.
145
+ `type: completed` or `type: failed`, that is a pause, not a failed sign-in. Report the pause: `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer`.
160
146
  If the process
161
147
  still runs, end your turn and wait for the developer to say they signed in, then read the
162
- same process. If the process ended without emitting `type: failed`, run `login --json`
148
+ same process. If the process ended without emitting `type: failed`, run
149
+ `login --json --onboarding`
163
150
  again and handle a new `authentication_url` as above. Step 4 forbids a second login only while the first one runs.
164
151
 
165
152
  Do not use `whoami` for this check. Do not put account tokens or credentials in the
@@ -167,9 +154,9 @@ conversation.
167
154
 
168
155
  Research reads only this project and needs no account. Start it as soon as the session is
169
156
  valid or the developer has the sign-in page, and keep monitoring the login process while it
170
- runs: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read research/gather`. If this run already
157
+ runs: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read research/gather`. If this run already
171
158
  started the research, do not start it again.
172
159
 
173
160
  If sign-in stops onboarding, run
174
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard read stopped/run-failed`. It does not judge
161
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard read stopped/run-failed`. It does not judge
175
162
  this project's stack.
@@ -100,7 +100,7 @@ of this journey, and a drawer that lists nothing is not a reason to mint one. Li
100
100
  tokens stay a self-hosted concern.
101
101
 
102
102
  Where this journey's frontend framework ships no threads drawer -- React Native --, the
103
- fifth item is proved by `npx --prefer-offline --yes copilotkit@4.27.0 verify --round-trip`, which sends a
103
+ fifth item is proved by `npx --prefer-offline --yes copilotkit@4.28.0 verify --round-trip`, which sends a
104
104
  real request and reads the answer back off the thread it landed on. The run says which of
105
105
  the two it proved. Do not send a run to the managed Intelligence dashboard to prove this.
106
106
  An authenticated browser session at a hosted dashboard is the one thing an agent-driven run
@@ -116,7 +116,7 @@ and passed -- so a run scored on either one was scored on the same fact. Every r
116
116
  resolves that condition from, while `licenseStatus` is a compatibility projection of it
117
117
  for older thread surfaces and outlives them only until those surfaces go.
118
118
 
119
- Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard read credentials/finalize-plan`.
119
+ Then run `npx --prefer-offline --yes copilotkit@4.28.0 onboard read credentials/finalize-plan`.
120
120
 
121
121
  If a selected page does not load after the second method, run
122
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard read unsupported/no-validated-path`.
122
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard read unsupported/no-validated-path`.
@@ -1,26 +1,26 @@
1
1
  # Select the Intelligence project
2
2
 
3
3
  For a recorded local choice, run
4
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard read deployment/local-evaluation`.
4
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard read deployment/local-evaluation`.
5
5
  That path connects the local project with the approval the setup message took.
6
6
  Skip hosted selection.
7
7
  Keep the implementation and feature-proof requirements.
8
8
 
9
9
  Use the selected framework, frontend, model vendor, model, documentation URLs, and
10
10
  repository findings. When the framework, frontend or vendor is not in your context, read it
11
- from `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers`, and do not ask again. On a conversion, use the values the conversion prompt recorded, and
11
+ from `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers`, and do not ask again. On a conversion, use the values the conversion prompt recorded, and
12
12
  ask no framework or frontend question. Do not change application code in this phase. Do
13
13
  not read, show, store, or request a secret value.
14
14
 
15
15
  Ask every choice that is still open at this point in one message, one numbered line per
16
- choice, and end your turn to wait for the answer. Write each as the setup message does: the
17
- recommendation first, in bold, and the alternatives on one `Other:` line. Add a short
16
+ choice, and end your turn to wait for the answer. Write each as the options view of `onboard setup-message`
17
+ does: the recommendation first, in bold, and the alternatives on one `Other:` line. Add a short
18
18
  reason only when it names something in the developer's own project. Do not ask about the plan here.
19
19
 
20
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.27.0 onboard checkpoint --phase awaiting-developer
23
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
24
24
  ```
25
25
 
26
26
  ## Record the audit cell
@@ -38,7 +38,7 @@ Choose the starting state from the repository findings:
38
38
  A run served `proof/oss-baseline` records one of the last two.
39
39
 
40
40
  ```text
41
- npx --prefer-offline --yes copilotkit@4.27.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend> --model-vendor <model-vendor> --model-vendor-choice <model-vendor-choice>
41
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend> --model-vendor <model-vendor> --model-vendor-choice <model-vendor-choice>
42
42
  ```
43
43
 
44
44
  `<model-vendor>` is `openai`, `anthropic`, `google`, `openai-compatible`, or `other`.
@@ -55,7 +55,7 @@ runtime `.env` file, that directory is the target, not the repository root. Do n
55
55
  the developer to another terminal.
56
56
 
57
57
  ```text
58
- npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --json
58
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --json
59
59
  ```
60
60
 
61
61
  Every credential this run writes goes to the environment path: the target's `.env`, or
@@ -80,7 +80,7 @@ the CLI kept: run `--create` with `question.recorded.create`, or `--project` wit
80
80
  project answer `setup/questions` gave you. A new project with no recorded name takes
81
81
  `suggestedName`. Ask the developer only when `question.taken` or `question.notFound` is
82
82
  present, or when no answer was recorded. When they then give another project, record it
83
- with `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers --create <name>` or
83
+ with `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers --create <name>` or
84
84
  `--project <slug>`.
85
85
 
86
86
  `project-name` means that no project is bound here, so creating a project for this
@@ -93,7 +93,7 @@ unless the developer says that it is this app's.
93
93
  Before you end your turn to wait for the developer, report the pause:
94
94
 
95
95
  ```text
96
- npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer
96
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
97
97
  ```
98
98
 
99
99
  If no developer answers, create with the derived name in `suggestedName`. Never select a
@@ -102,9 +102,9 @@ project from a listing without an answer that names it.
102
102
  `--runtime-url` is the URL port research settled, mount path included:
103
103
 
104
104
  ```text
105
- npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --create <name> \
105
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --create <name> \
106
106
  --runtime-url http://localhost:<port>/api/copilotkit --json
107
- npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --project <slug-or-id> \
107
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --project <slug-or-id> \
108
108
  --runtime-url http://localhost:<port>/api/copilotkit --json
109
109
  ```
110
110
 
@@ -116,12 +116,12 @@ show only what they asked for, and do not order it by creation time:
116
116
  Before you end your turn to wait for the developer, report the pause:
117
117
 
118
118
  ```text
119
- npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer
119
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
120
120
  ```
121
121
 
122
122
  ```text
123
- npx --prefer-offline --yes copilotkit@4.27.0 project list --json
124
- npx --prefer-offline --yes copilotkit@4.27.0 project list --search <query> --json
123
+ npx --prefer-offline --yes copilotkit@4.28.0 project list --json
124
+ npx --prefer-offline --yes copilotkit@4.28.0 project list --search <query> --json
125
125
  ```
126
126
 
127
127
  `app-directory` means that the key landed where no app reads it. Pick the directory in
@@ -129,10 +129,14 @@ npx --prefer-offline --yes copilotkit@4.27.0 project list --search <query> --jso
129
129
  the `--project` command from there with `project.slug`. Do not copy or link the key file.
130
130
 
131
131
  `env-file-exposed` means that git tracks the env file the key goes into, or does not
132
- ignore it. So nothing was written. If the developer already approved that line in the setup
133
- message, apply it without asking again. An accepting reply to the setup message never
134
- approves a line with `question.untrack`. Ask it now as its own question, unless the
135
- developer answered that line itself. For a line that is still open, ask the developer
132
+ ignore it. So nothing was written. Read `envFile` from
133
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers`, which keeps the developer's answer to
134
+ that line in the setup message: `approved` approves the change the line asks for,
135
+ `alternative` chose `question.alternative`, and `declined` declined both. Act on it without
136
+ asking again. An accepting reply to the setup message never approves a line with
137
+ `question.untrack`: it takes `question.alternative` when there is one. Without `envFile`,
138
+ ask it now as its own question, and record the answer with `onboard setup-answers
139
+ --env-line <approved|alternative|declined>`. For a line that is still open, ask the developer
136
140
  `question.ask` in those words. When `question.alternative` is present, the question offers
137
141
  two choices. If the developer chose `question.alternative`, here or in the setup message,
138
142
  run the same command again with `question.alternative.rerun` added. The CLI adds
@@ -140,7 +144,7 @@ run the same command again with `question.alternative.rerun` added. The CLI adds
140
144
  If they approve the untrack, add
141
145
  `question.ignoreLine` to `question.ignoreFile`. If `question.untrack` is present, run it
142
146
  too. Or the developer does both. Report the pause with
143
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`, end your
147
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer`, end your
144
148
  turn, and wait for the answer. Then run the same command again. Write the key only to
145
149
  `question.file`, or to `question.alternative.file` by rerunning with
146
150
  `question.alternative.rerun`.
@@ -148,12 +152,12 @@ turn, and wait for the answer. Then run the same command again. Write the key on
148
152
  ## Carry the result into the plan
149
153
 
150
154
  - `planChanges`: list each file in the plan. Mark each one that has uncommitted changes, so
151
- the developer sees it in the plan. It is a risky change, so the plan asks about it. It
152
- does not end the run.
153
- - `backup`: give it to the planning subagent. A `partial` or `failed` backup is a risky
154
- change, because `onboard restore` cannot put back what the backup does not hold.
155
+ the developer sees it in the plan. It is a change that needs approval, so the plan asks
156
+ about it. It does not end the run.
157
+ - `backup`: give it to the planning subagent. A `partial` or `failed` backup needs
158
+ approval, because `onboard restore` cannot put back what the backup does not hold.
155
159
  - `project.slug` is the selected project. `"key": "unverified"` means the project was
156
160
  reused. The round-trip proof later runs the authenticated Intelligence checks, so record
157
161
  the reused project credentials as unverified in the plan until those checks pass.
158
162
 
159
- Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard read credentials/settle-credentials`.
163
+ Then run `npx --prefer-offline --yes copilotkit@4.28.0 onboard read credentials/settle-credentials`.
@@ -1,28 +1,31 @@
1
1
  # Select the agent framework
2
2
 
3
- First run `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers`. It prints the answers that
3
+ First run `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers`. It prints the answers that
4
4
  `setup/questions` recorded, even after this conversation lost them. Use its `framework` and
5
5
  its `vendor`, with `vendor.choice`, `vendor.baseUrl` and `vendor.modelId`. That node asked
6
6
  the developer, so ask nothing here. A run that proved its existing agent, frontend, and
7
7
  CopilotKit integration did not read that node: keep the agent's framework from the
8
- findings, with the vendor `existing`.
8
+ findings. Record it with
9
+ `onboard setup-answers --framework <name> --vendor <vendor> --vendor-choice existing`, or
10
+ with `--vendor other --vendor-choice existing` when the findings do not show its vendor.
11
+ `existing` is a choice, not a vendor.
9
12
 
10
13
  Ask only for what the record lacks and no other path settles. When it holds no
11
14
  framework and no vendor, ask the framework and model provider lines in one message.
12
- Write each as the setup message does: the recommendation first, in bold, and the
15
+ Write each as the options view of `onboard setup-message` does: the recommendation first, in bold, and the
13
16
  alternatives on one `Other:` line. When
14
17
  it holds a framework and no vendor, ask the model provider line alone: without an answer, the
15
18
  framework node uses OpenAI, which the developer never chose. Recommend the framework that
16
19
  the repository findings show, or, for an empty project, a documented default. For the
17
- provider, recommend the framework's default vendor, and offer only the other vendors its row
18
- in the `setup/questions` table lists. On most frameworks that is OpenAI or an
20
+ provider, recommend the framework's default vendor, and offer only the other vendors it takes:
21
+ `onboard setup-answers` refuses any other and names the ones it takes. On most frameworks that is OpenAI or an
19
22
  OpenAI-compatible provider: if the developer names Anthropic or Google for a new agent
20
23
  there, say that this release supports the row's vendors on that framework, that Anthropic
21
24
  and Google come in a later release, and offer the Built-in CopilotKit agent if they need
22
25
  them now. Record the answers with
23
26
  `onboard setup-answers --framework <name> --vendor <vendor> --vendor-choice <choice>`.
24
27
  Report the pause with
25
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`, then end your
28
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer`, then end your
26
29
  turn and wait for the answer. A route that records no framework or vendor on purpose is not
27
30
  this case: an empty project with Slack or Microsoft Teams, a "Project-defined" vendor, or
28
31
  "The agent's own" vendor.
@@ -46,7 +49,7 @@ Microsoft Teams docs page, do not ask the framework question. So does an empty p
46
49
  whose frontend `setup/questions` recorded as Slack or Microsoft Teams: it recorded no
47
50
  framework. The Channel starter brings its own agent, so an answer here decides nothing. Tell the developer that the Channel
48
51
  starter decides the agent, then run
49
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard read frontend/plan`.
52
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard read frontend/plan`.
50
53
 
51
54
  ## Route on the recorded framework
52
55
 
@@ -55,28 +58,28 @@ chosen: `developer`, `default`, or `existing`. The framework route uses this ven
55
58
 
56
59
  Use exactly one matching internal route:
57
60
 
58
- 1. AG2: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/ag2`
59
- 2. Agno: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/agno`
60
- 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/built-in`
61
- 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/claude-sdk-python`
62
- 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/claude-sdk-typescript`
63
- 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/crewai-flows`
64
- 7. Custom agent: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/custom-ag-ui`
65
- 8. Deep Agents: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/deep-agents`
66
- 9. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/langgraph-python`
67
- 10. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/langgraph-fastapi`
68
- 11. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/langgraph-typescript`
69
- 12. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/llamaindex`
70
- 13. ADK: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/google-adk`
71
- 14. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/ms-agent-python`
72
- 15. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/ms-agent-dotnet`
73
- 16. Mastra: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/mastra`
74
- 17. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/ms-agent-harness-dotnet`
75
- 18. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/pydantic-ai`
76
- 19. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/strands-python`
77
- 20. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read framework/strands-typescript`
61
+ 1. AG2: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/ag2`
62
+ 2. Agno: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/agno`
63
+ 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/built-in`
64
+ 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/claude-sdk-python`
65
+ 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/claude-sdk-typescript`
66
+ 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/crewai-flows`
67
+ 7. Custom agent: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/custom-ag-ui`
68
+ 8. Deep Agents: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/deep-agents`
69
+ 9. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/langgraph-python`
70
+ 10. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/langgraph-fastapi`
71
+ 11. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/langgraph-typescript`
72
+ 12. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/llamaindex`
73
+ 13. ADK: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/google-adk`
74
+ 14. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/ms-agent-python`
75
+ 15. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/ms-agent-dotnet`
76
+ 16. Mastra: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/mastra`
77
+ 17. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/ms-agent-harness-dotnet`
78
+ 18. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/pydantic-ai`
79
+ 19. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/strands-python`
80
+ 20. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.28.0 onboard read framework/strands-typescript`
78
81
 
79
82
  An agent in any other framework takes route 7, whether or not it speaks AG-UI. So does a
80
83
  new agent on a framework that is not listed. If the developer declines route 7 and every
81
84
  listed framework, keep their current agent and run
82
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard read unsupported/no-validated-path`.
85
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard read unsupported/no-validated-path`.
@@ -21,10 +21,10 @@ The plan names the model credential variables. Run this from the directory that
21
21
  `environmentPath` in the project step's result, with one `--model-key` for each variable:
22
22
 
23
23
  ```text
24
- npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --model-key <variable> --json
24
+ npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <variable> --json
25
25
  ```
26
26
 
27
- Run `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers` for the key answer the setup
27
+ Run `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers` for the key answer the setup
28
28
  message recorded. If it holds `key.file`, add `--env-path <key.file>` to the first check.
29
29
  When the framework node names another env file for the credential, add
30
30
  `--env-path <file>`. When the agent runs as its own service, such as a remote AG-UI agent,
@@ -41,17 +41,17 @@ never prints a value. Read `status`:
41
41
  `Files the run writes itself`.
42
42
  The developer's answer to the key file line in the setup questions is their consent to
43
43
  the copy. After the run shows the plan, copy the key with the command that `next` names. It has this form:
44
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --model-key <variable> --env-path <file> --copy-to <env file> --json`.
44
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <variable> --env-path <file> --copy-to <env file> --json`.
45
45
  `<env file>` is `environmentPath`, never the tracked `.env` of a run that chose
46
46
  `question.alternative.file`. It writes the key without printing it. Do not copy the key
47
47
  yourself, and do not write a `sed`, `grep`, or `cat` command for it. If you cannot run
48
48
  the command, for example because a sandbox refuses the path, ask the developer to run it.
49
49
  Give them exactly this one line, with `<app directory>` as the directory that holds
50
50
  `environmentPath`:
51
- `! cd <app directory> && npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --model-key <variable> --env-path <file> --copy-to <env file>`.
51
+ `! cd <app directory> && npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <variable> --env-path <file> --copy-to <env file>`.
52
52
  The command needs no input. Without `!`, they run the same command in a terminal.
53
53
  Report the pause with
54
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-model-credential`,
54
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-model-credential`,
55
55
  end your turn, and wait. When they reply, run the same command with `--json` and read `copiedKeys`.
56
56
  If the developer declines the copy, the plan has the app read the key from an
57
57
  environment variable that the developer sets. The plan then says how to set it. Never
@@ -69,7 +69,7 @@ never prints a value. Read `status`:
69
69
  The `reason` `compatible-base-url-missing` or `key-not-openai` means that the key belongs
70
70
  to an OpenAI-compatible provider, but no file names its base URL, so nothing was sent.
71
71
  Ask the developer for the provider's base URL, record it with
72
- `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers --vendor openai-compatible --base-url <url> --model-id <id>`,
72
+ `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers --vendor openai-compatible --base-url <url> --model-id <id>`,
73
73
  and run this step again.
74
74
  - `needs-developer` with `question.reason` `local-endpoint-no-key`: the base URL is a local
75
75
  server that needs no key, such as Ollama or LM Studio. The OpenAI SDKs refuse an empty
@@ -113,4 +113,4 @@ Never read a file outside the project directory to find a credential: a key foun
113
113
  bills another project. Asking for a path is not requesting a secret. A path the developer
114
114
  names is theirs to give, including one outside the project. A path this run finds is not.
115
115
 
116
- Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard read credentials/write-plan`.
116
+ Then run `npx --prefer-offline --yes copilotkit@4.28.0 onboard read credentials/write-plan`.