copilotkit 4.26.0 → 4.27.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 +271 -25
  2. package/cli-build-info.json +7 -7
  3. package/index.js +6785 -3294
  4. package/onboarding/index.json +2 -2
  5. package/onboarding/prompts/authenticate/start.md +28 -23
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +34 -25
  8. package/onboarding/prompts/credentials/plan.md +46 -33
  9. package/onboarding/prompts/credentials/settle-credentials.md +38 -14
  10. package/onboarding/prompts/credentials/write-plan.md +104 -47
  11. package/onboarding/prompts/deployment/choose-local.md +17 -20
  12. package/onboarding/prompts/deployment/local-evaluation.md +45 -21
  13. package/onboarding/prompts/fallback/best-effort.md +11 -9
  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 +10 -8
  18. package/onboarding/prompts/feature/channels/implement.md +11 -8
  19. package/onboarding/prompts/feature/channels/plan.md +15 -7
  20. package/onboarding/prompts/feature/channels/proof.md +5 -5
  21. package/onboarding/prompts/feature/channels/start.md +11 -10
  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 +10 -8
  26. package/onboarding/prompts/feature/complete.md +2 -2
  27. package/onboarding/prompts/feature/learning/implement.md +14 -12
  28. package/onboarding/prompts/feature/learning/plan.md +4 -4
  29. package/onboarding/prompts/feature/learning/proof.md +24 -14
  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 +10 -8
  35. package/onboarding/prompts/feature/realtime-sync/implement.md +7 -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 +8 -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 +10 -8
  48. package/onboarding/prompts/framework/ag2.md +20 -5
  49. package/onboarding/prompts/framework/agno.md +25 -9
  50. package/onboarding/prompts/framework/built-in.md +21 -6
  51. package/onboarding/prompts/framework/claude-sdk-python.md +11 -5
  52. package/onboarding/prompts/framework/claude-sdk-typescript.md +13 -6
  53. package/onboarding/prompts/framework/crewai-flows.md +24 -10
  54. package/onboarding/prompts/framework/custom-ag-ui.md +62 -28
  55. package/onboarding/prompts/framework/deep-agents.md +26 -9
  56. package/onboarding/prompts/framework/google-adk.md +18 -5
  57. package/onboarding/prompts/framework/langgraph-fastapi.md +20 -5
  58. package/onboarding/prompts/framework/langgraph-python.md +20 -5
  59. package/onboarding/prompts/framework/langgraph-typescript.md +27 -7
  60. package/onboarding/prompts/framework/llamaindex.md +24 -8
  61. package/onboarding/prompts/framework/mastra.md +21 -8
  62. package/onboarding/prompts/framework/ms-agent-dotnet.md +24 -6
  63. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +24 -5
  64. package/onboarding/prompts/framework/ms-agent-python.md +21 -5
  65. package/onboarding/prompts/framework/pydantic-ai.md +20 -5
  66. package/onboarding/prompts/framework/strands-python.md +27 -12
  67. package/onboarding/prompts/framework/strands-typescript.md +27 -12
  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 +21 -13
  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 +25 -20
  75. package/onboarding/prompts/proof/complete.md +10 -7
  76. package/onboarding/prompts/proof/oss-baseline.md +6 -6
  77. package/onboarding/prompts/proof/round-trip.md +10 -10
  78. package/onboarding/prompts/research/gather.md +8 -8
  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 +4 -4
  82. package/onboarding/prompts/setup/questions.md +192 -159
  83. package/onboarding/prompts/starter/clone.md +126 -51
  84. package/onboarding/prompts/stopped/run-failed.md +5 -3
  85. package/onboarding/prompts/subagent/create-plan.md +73 -20
  86. package/onboarding/prompts/subagent/implement-and-validate.md +30 -14
  87. package/onboarding/prompts/subagent/inspect-repository.md +3 -2
  88. package/onboarding/prompts/subagent/prove-oss-baseline.md +10 -5
  89. package/onboarding/prompts/subagent/prove-round-trip.md +23 -14
  90. package/onboarding/prompts/unsupported/no-validated-path.md +5 -4
  91. package/package.json +1 -1
  92. package/release/release-tool.js +12 -2
@@ -1,5 +1,5 @@
1
1
  {
2
- "graphTree": "62f012b65ba17a579b853bdbbd55bc81dc4759ac",
2
+ "graphTree": "761ec1a0c9afe1db037029abc373e555159ce088",
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.26.0",
12
+ "packageSpec": "copilotkit@4.27.0",
13
13
  "root": "authenticate/start",
14
14
  "prompts": [
15
15
  {
@@ -6,24 +6,28 @@ 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 and changes files only after the developer approves a written plan. CopilotKit
9
+ directory. It changes files only after writing the plan, and asks before any risky change
10
+ the plan names. CopilotKit
10
11
  Intelligence has a free Developer plan, and this run needs no paid subscription.
11
12
 
12
13
  ## Command approvals
13
14
 
14
15
  Run each CLI call exactly as written, as its own command: no pipe, `tee`, `&&`, redirect,
15
16
  or variable prefix. Every CLI call in this run matches the prefix rule
16
- `["npx", "--prefer-offline", "--yes", "copilotkit@4.26.0"]`. If a command can request
17
- escalation with a prefix rule, request this one on the `onboard identify` call. If your
18
- harness asks the developer to approve commands, tell them one approval of that prefix covers
19
- every CLI call. Say then that the install, the dev servers, `curl` to the local app, and
17
+ `["npx", "--prefer-offline", "--yes", "copilotkit@4.27.0"]`.
18
+ <!-- sandboxed-harness -->
19
+ If a command can request escalation with a prefix rule, request this one on the
20
+ `onboard identify` call.
21
+ <!-- /sandboxed-harness -->
22
+ If your harness asks the developer to approve commands, tell them one approval of that
23
+ prefix covers every CLI call. Say then that the install, the dev servers, `curl` to the local app, and
20
24
  `ps`, `lsof`, and `kill` ask for approval later.
21
25
 
22
26
  Never add or edit a permission rule or a settings file yourself. That choice belongs to
23
27
  the developer.
24
28
 
25
29
  If your harness refuses a CLI call without asking the developer, do not retry it or run it
26
- another way. Report the pause: `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer`.
30
+ another way. Report the pause: `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`.
27
31
  Name the refused command, ask the developer to approve it or to switch to a
28
32
  mode that asks them, and end your turn. When they answer, run it once more.
29
33
  That refusal is a pause, not a stop.
@@ -33,7 +37,7 @@ That refusal is a pause, not a stop.
33
37
  Run this first, before the welcome message below:
34
38
 
35
39
  ```text
36
- npx --prefer-offline --yes copilotkit@4.26.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
40
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard identify --coding-agent <coding-agent-slug> --model <model-id> --model-family <model-family>
37
41
  ```
38
42
 
39
43
  Report your product slug, such as `codex` or `claude-code`.
@@ -66,28 +70,29 @@ keeps each conversation as Rich Threads. Users can return to earlier work. Where
66
70
  Automatic Learning then helps your agent improve from that history: it finds usage patterns
67
71
  and proposes reusable Skills, and you approve which Skills it gets.
68
72
 
69
- I will check sign-in, inspect your project, recommend a setup, and show you a plan before
70
- I change files. After you approve the plan, I will build the integration, prove the full
71
- round trip, and leave the app running with its URLs.
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.
72
77
 
73
- Everything I need from you comes before that approval: sign-in, a few short setup questions,
74
- and the plan itself. If I need you to approve a command, or something blocks me, I will ask
75
- you here. Otherwise you hear from me next when the app is running and I hand you its URLs.
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.
76
81
  To self-host on your machine with Docker, say so before you sign in.
77
82
 
78
83
  That message belongs to the run. Send it only once, including after a second read of this prompt.
79
- Then run `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase welcome-sent`.
84
+ Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase welcome-sent`.
80
85
 
81
86
  ## Report a stop, wherever it happens
82
87
 
83
88
  If you stop this run at any point, send one short report before you stop. This includes
84
89
  unexpected stops and stops caused by your harness.
85
90
  A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
86
- Report the pause: `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer`.
91
+ Report the pause: `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`.
87
92
  A terminal that sends the report itself, or says to file none, overrides this.
88
93
 
89
94
  ```text
90
- npx --prefer-offline --yes copilotkit@4.26.0 onboard friction --phase stop --category <slug> --message "<sentences>"
95
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard friction --phase stop --category <slug> --message "<sentences>"
91
96
  ```
92
97
 
93
98
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
@@ -105,15 +110,15 @@ rule that stopped you says next: send the report, then stop.
105
110
  Take the local route only when the developer already asked to run CopilotKit locally,
106
111
  with Docker, or self-hosted: in their request, the copied prompt, or a later reply, or
107
112
  when this run already recorded local. Then run
108
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard read deployment/choose-local` instead.
113
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard read deployment/choose-local` instead.
109
114
 
110
115
  Otherwise keep managed. Do not ask the developer to choose. Run
111
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard deployment --choice managed`, then continue with
116
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard deployment --choice managed`, then continue with
112
117
  “Check sign-in”. If it refuses because of a local stack, take the local route.
113
118
 
114
119
  ## Check sign-in
115
120
 
116
- Run `npx --prefer-offline --yes copilotkit@4.26.0 login --json` before any project work. It checks the
121
+ Run `npx --prefer-offline --yes copilotkit@4.27.0 login --json` before any project work. It checks the
117
122
  session and starts sign-in only as needed. Treat this as a long-lived
118
123
  streaming process. Do not wait for the command to exit before you read its standard output.
119
124
 
@@ -147,11 +152,11 @@ Read each JSON Lines record as it arrives:
147
152
  7. If that process emits `type: failed`, report the error and stop onboarding. On
148
153
  `reason: repeated_expiry`, rerun `login` with `--force` only if the developer asks.
149
154
 
150
- On `type: completed`, run `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase sign-in-settled`
155
+ On `type: completed`, run `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase sign-in-settled`
151
156
  before you continue.
152
157
 
153
158
  If your harness ends the login process or your turn before the process emits
154
- `type: completed` or `type: failed`, that is a pause, not a failed sign-in. Report the pause: `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer`.
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`.
155
160
  If the process
156
161
  still runs, end your turn and wait for the developer to say they signed in, then read the
157
162
  same process. If the process ended without emitting `type: failed`, run `login --json`
@@ -162,9 +167,9 @@ conversation.
162
167
 
163
168
  Research reads only this project and needs no account. Start it as soon as the session is
164
169
  valid or the developer has the sign-in page, and keep monitoring the login process while it
165
- runs: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read research/gather`. If this run already
170
+ runs: `npx --prefer-offline --yes copilotkit@4.27.0 onboard read research/gather`. If this run already
166
171
  started the research, do not start it again.
167
172
 
168
173
  If sign-in stops onboarding, run
169
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard read stopped/run-failed`. It does not judge
174
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard read stopped/run-failed`. It does not judge
170
175
  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.26.0 verify --round-trip`, which sends a
103
+ fifth item is proved by `npx --prefer-offline --yes copilotkit@4.27.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.26.0 onboard read credentials/finalize-plan`.
119
+ Then run `npx --prefer-offline --yes copilotkit@4.27.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.26.0 onboard read unsupported/no-validated-path`.
122
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard read unsupported/no-validated-path`.
@@ -1,23 +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.26.0 onboard read deployment/local-evaluation`.
5
- That path obtains approval and connects the local project. Skip hosted selection.
4
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard read deployment/local-evaluation`.
5
+ That path connects the local project with the approval the setup message took.
6
+ Skip hosted selection.
6
7
  Keep the implementation and feature-proof requirements.
7
8
 
8
9
  Use the selected framework, frontend, model vendor, model, documentation URLs, and
9
- repository findings. On a conversion, use the values the conversion prompt recorded, and
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
10
12
  ask no framework or frontend question. Do not change application code in this phase. Do
11
13
  not read, show, store, or request a secret value.
12
14
 
13
15
  Ask every choice that is still open at this point in one message, one numbered line per
14
- choice, and end your turn to wait for the answer. Put the recommendation first, with its
15
- evidence in one sentence. Keep plan approval a separate, later question.
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
18
+ reason only when it names something in the developer's own project. Do not ask about the plan here.
16
19
 
17
20
  Before you end your turn to wait for the developer, report the pause:
18
21
 
19
22
  ```text
20
- npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer
23
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer
21
24
  ```
22
25
 
23
26
  ## Record the audit cell
@@ -35,12 +38,12 @@ Choose the starting state from the repository findings:
35
38
  A run served `proof/oss-baseline` records one of the last two.
36
39
 
37
40
  ```text
38
- npx --prefer-offline --yes copilotkit@4.26.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.27.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend> --model-vendor <model-vendor> --model-vendor-choice <model-vendor-choice>
39
42
  ```
40
43
 
41
- `<model-vendor>` is `openai`, `anthropic`, `google`, or `other`. `<model-vendor-choice>` is
42
- how the framework step chose it: `developer`, `default`, or `existing`. If the run
43
- recorded no vendor, leave out both flags.
44
+ `<model-vendor>` is `openai`, `anthropic`, `google`, `openai-compatible`, or `other`.
45
+ `<model-vendor-choice>` is how the framework step chose it: `developer`, `default`, or
46
+ `existing`. If the run recorded no vendor, leave out both flags.
44
47
 
45
48
  If a value is refused, fix it from the choices the earlier prompts gave, and run the
46
49
  command again.
@@ -52,7 +55,7 @@ runtime `.env` file, that directory is the target, not the repository root. Do n
52
55
  the developer to another terminal.
53
56
 
54
57
  ```text
55
- npx --prefer-offline --yes copilotkit@4.26.0 onboard credentials --json
58
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --json
56
59
  ```
57
60
 
58
61
  Every credential this run writes goes to the environment path: the target's `.env`, or
@@ -71,11 +74,14 @@ Read `status`:
71
74
 
72
75
  ### Ask the question
73
76
 
74
- Use the project answer that `setup/questions` recorded. A new project runs `--create` with
75
- the name the developer accepted or gave. A new project with no recorded name takes
76
- `suggestedName`. A project they already have runs `--project`. Ask
77
- the developer only when `question.taken` or `question.notFound` is present, or when no
78
- answer was recorded.
77
+ The developer answered this in the setup message. `question.recorded` carries the answer
78
+ the CLI kept: run `--create` with `question.recorded.create`, or `--project` with
79
+ `question.recorded.project`, and do not ask again. Without `question.recorded`, use the
80
+ project answer `setup/questions` gave you. A new project with no recorded name takes
81
+ `suggestedName`. Ask the developer only when `question.taken` or `question.notFound` is
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
84
+ `--project <slug>`.
79
85
 
80
86
  `project-name` means that no project is bound here, so creating a project for this
81
87
  directory is the default. Ask one question: use `suggestedName`, give another name, or ask
@@ -87,7 +93,7 @@ unless the developer says that it is this app's.
87
93
  Before you end your turn to wait for the developer, report the pause:
88
94
 
89
95
  ```text
90
- npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer
96
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer
91
97
  ```
92
98
 
93
99
  If no developer answers, create with the derived name in `suggestedName`. Never select a
@@ -96,9 +102,9 @@ project from a listing without an answer that names it.
96
102
  `--runtime-url` is the URL port research settled, mount path included:
97
103
 
98
104
  ```text
99
- npx --prefer-offline --yes copilotkit@4.26.0 onboard credentials --create <name> \
105
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --create <name> \
100
106
  --runtime-url http://localhost:<port>/api/copilotkit --json
101
- npx --prefer-offline --yes copilotkit@4.26.0 onboard credentials --project <slug-or-id> \
107
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --project <slug-or-id> \
102
108
  --runtime-url http://localhost:<port>/api/copilotkit --json
103
109
  ```
104
110
 
@@ -110,12 +116,12 @@ show only what they asked for, and do not order it by creation time:
110
116
  Before you end your turn to wait for the developer, report the pause:
111
117
 
112
118
  ```text
113
- npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer
119
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer
114
120
  ```
115
121
 
116
122
  ```text
117
- npx --prefer-offline --yes copilotkit@4.26.0 project list --json
118
- npx --prefer-offline --yes copilotkit@4.26.0 project list --search <query> --json
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
119
125
  ```
120
126
 
121
127
  `app-directory` means that the key landed where no app reads it. Pick the directory in
@@ -134,7 +140,7 @@ run the same command again with `question.alternative.rerun` added. The CLI adds
134
140
  If they approve the untrack, add
135
141
  `question.ignoreLine` to `question.ignoreFile`. If `question.untrack` is present, run it
136
142
  too. Or the developer does both. Report the pause with
137
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer`, end your
143
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`, end your
138
144
  turn, and wait for the answer. Then run the same command again. Write the key only to
139
145
  `question.file`, or to `question.alternative.file` by rerunning with
140
146
  `question.alternative.rerun`.
@@ -142,9 +148,12 @@ turn, and wait for the answer. Then run the same command again. Write the key on
142
148
  ## Carry the result into the plan
143
149
 
144
150
  - `planChanges`: list each file in the plan. Mark each one that has uncommitted changes, so
145
- the developer sees it when they approve the plan. It does not end the run.
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.
146
155
  - `project.slug` is the selected project. `"key": "unverified"` means the project was
147
156
  reused. The round-trip proof later runs the authenticated Intelligence checks, so record
148
157
  the reused project credentials as unverified in the plan until those checks pass.
149
158
 
150
- Then run `npx --prefer-offline --yes copilotkit@4.26.0 onboard read credentials/settle-credentials`.
159
+ Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard read credentials/settle-credentials`.
@@ -1,16 +1,28 @@
1
1
  # Select the agent framework
2
2
 
3
- Use the framework and the model vendor that `setup/questions` recorded. That node asked the
4
- developer, so ask nothing here. A run that proved its existing agent, frontend, and
3
+ First run `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers`. It prints the answers that
4
+ `setup/questions` recorded, even after this conversation lost them. Use its `framework` and
5
+ its `vendor`, with `vendor.choice`, `vendor.baseUrl` and `vendor.modelId`. That node asked
6
+ the developer, so ask nothing here. A run that proved its existing agent, frontend, and
5
7
  CopilotKit integration did not read that node: keep the agent's framework from the
6
8
  findings, with the vendor `existing`.
7
9
 
8
- If no setup answers are in your context at all, as after a context reset or a resumed
9
- session, do not guess. Ask the framework and model provider lines in one message. Recommend
10
- the framework that the repository findings show, or, for an empty project, a documented
11
- default. For the provider, offer the vendors the framework's CopilotKit pages document.
10
+ Ask only for what the record lacks and no other path settles. When it holds no
11
+ 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
13
+ alternatives on one `Other:` line. When
14
+ it holds a framework and no vendor, ask the model provider line alone: without an answer, the
15
+ framework node uses OpenAI, which the developer never chose. Recommend the framework that
16
+ 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
19
+ OpenAI-compatible provider: if the developer names Anthropic or Google for a new agent
20
+ there, say that this release supports the row's vendors on that framework, that Anthropic
21
+ and Google come in a later release, and offer the Built-in CopilotKit agent if they need
22
+ them now. Record the answers with
23
+ `onboard setup-answers --framework <name> --vendor <vendor> --vendor-choice <choice>`.
12
24
  Report the pause with
13
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-developer`, then end your
25
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer`, then end your
14
26
  turn and wait for the answer. A route that records no framework or vendor on purpose is not
15
27
  this case: an empty project with Slack or Microsoft Teams, a "Project-defined" vendor, or
16
28
  "The agent's own" vendor.
@@ -34,36 +46,37 @@ Microsoft Teams docs page, do not ask the framework question. So does an empty p
34
46
  whose frontend `setup/questions` recorded as Slack or Microsoft Teams: it recorded no
35
47
  framework. The Channel starter brings its own agent, so an answer here decides nothing. Tell the developer that the Channel
36
48
  starter decides the agent, then run
37
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard read frontend/plan`.
49
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard read frontend/plan`.
38
50
 
39
51
  ## Route on the recorded framework
40
52
 
41
- The framework and vendor come from `setup/questions`, with how the vendor was chosen:
42
- `developer`, `default`, or `existing`. The framework route uses this vendor.
53
+ The framework and vendor come from `onboard setup-answers`, with how the vendor was
54
+ chosen: `developer`, `default`, or `existing`. The framework route uses this vendor.
43
55
 
44
56
  Use exactly one matching internal route:
45
57
 
46
- 1. AG2: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/ag2`
47
- 2. Agno: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/agno`
48
- 3. Built-in CopilotKit agent: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/built-in`
49
- 4. Claude Agent SDK Python: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/claude-sdk-python`
50
- 5. Claude Agent SDK TypeScript: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/claude-sdk-typescript`
51
- 6. CrewAI Flows: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/crewai-flows`
52
- 7. Existing AG-UI agent: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/custom-ag-ui`
53
- 8. Deep Agents: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/deep-agents`
54
- 9. LangGraph Python: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/langgraph-python`
55
- 10. LangGraph FastAPI: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/langgraph-fastapi`
56
- 11. LangGraph TypeScript: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/langgraph-typescript`
57
- 12. LlamaIndex: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/llamaindex`
58
- 13. ADK: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/google-adk`
59
- 14. Microsoft Agent Framework Python: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/ms-agent-python`
60
- 15. Microsoft Agent Framework .NET: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/ms-agent-dotnet`
61
- 16. Mastra: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/mastra`
62
- 17. MS Agent Harness .NET: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/ms-agent-harness-dotnet`
63
- 18. Pydantic AI: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/pydantic-ai`
64
- 19. Strands Agents Python: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/strands-python`
65
- 20. Strands Agents TypeScript: `npx --prefer-offline --yes copilotkit@4.26.0 onboard read framework/strands-typescript`
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`
66
78
 
67
- If the project has an agent in another framework that does not speak AG-UI, or no
68
- listed framework fits, keep the developer's current agent and run
69
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard read unsupported/no-validated-path`.
79
+ An agent in any other framework takes route 7, whether or not it speaks AG-UI. So does a
80
+ new agent on a framework that is not listed. If the developer declines route 7 and every
81
+ listed framework, keep their current agent and run
82
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard read unsupported/no-validated-path`.
@@ -8,7 +8,7 @@ application code here. Do not read, show, store, or request a secret value.
8
8
  Read `learningContainer` from the `onboard credentials` result:
9
9
 
10
10
  - `exists`: reuse `id` and create nothing.
11
- - `plan-create`: plan `id`, and create it after the developer approves the plan.
11
+ - `plan-create`: plan `id`, and create it after the run shows the plan.
12
12
  - `skipped`: plan no container and no selector. Name `reason` in the plan and in the
13
13
  closing report. Do not stop.
14
14
 
@@ -21,10 +21,11 @@ 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.26.0 onboard credentials --model-key <variable> --json
24
+ npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --model-key <variable> --json
25
25
  ```
26
26
 
27
- If `setup/questions` recorded a key file, add `--env-path <file>` to the first check.
27
+ Run `npx --prefer-offline --yes copilotkit@4.27.0 onboard setup-answers` for the key answer the setup
28
+ message recorded. If it holds `key.file`, add `--env-path <key.file>` to the first check.
28
29
  When the framework node names another env file for the credential, add
29
30
  `--env-path <file>`. When the agent runs as its own service, such as a remote AG-UI agent,
30
31
  that service reads its own env file. Add `--copy-to <service>/.env` for it. The command
@@ -38,25 +39,43 @@ never prints a value. Read `status`:
38
39
  itself. By default, plan to copy the key into `environmentPath`, the app's env file that git ignores.
39
40
  The copy is a file the run writes itself, so list the copy under
40
41
  `Files the run writes itself`.
41
- The developer's approval of the plan is their consent to the copy. After the approval,
42
- copy the key with the command that `next` names. It has this form:
43
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard credentials --model-key <variable> --env-path <file> --copy-to <env file> --json`.
42
+ The developer's answer to the key file line in the setup questions is their consent to
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
45
  `<env file>` is `environmentPath`, never the tracked `.env` of a run that chose
45
46
  `question.alternative.file`. It writes the key without printing it. Do not copy the key
46
47
  yourself, and do not write a `sed`, `grep`, or `cat` command for it. If you cannot run
47
48
  the command, for example because a sandbox refuses the path, ask the developer to run it.
48
49
  Give them exactly this one line, with `<app directory>` as the directory that holds
49
50
  `environmentPath`:
50
- `! cd <app directory> && npx --prefer-offline --yes copilotkit@4.26.0 onboard credentials --model-key <variable> --env-path <file> --copy-to <env file>`.
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
52
  The command needs no input. Without `!`, they run the same command in a terminal.
52
53
  Report the pause with
53
- `npx --prefer-offline --yes copilotkit@4.26.0 onboard checkpoint --phase awaiting-model-credential`,
54
+ `npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-model-credential`,
54
55
  end your turn, and wait. When they reply, run the same command with `--json` and read `copiedKeys`.
55
56
  If the developer declines the copy, the plan has the app read the key from an
56
57
  environment variable that the developer sets. The plan then says how to set it. Never
57
58
  write the outside path into a project file, not even in a config file such as
58
59
  `langgraph.json`. A committed file that names a folder in the developer's home directory
59
60
  gives every other machine no key. In the closing report, say where the app reads the key from.
61
+ The `reason` `keyless-local-endpoint` means that the base URL is a local server, such as
62
+ Ollama or LM Studio, that answered without a key. The key holds the stand-in
63
+ `not-needed`.
64
+ The `reason` `unread-base-url` means that the env file sets `OPENAI_API_BASE`. This app
65
+ reads only `OPENAI_BASE_URL`, so it sends the key to OpenAI. Rename the variable to
66
+ `OPENAI_BASE_URL` in that file, and run this step again.
67
+ The `reason` `base-url-query` means that the base URL has a query string, and
68
+ `base-url-redirect` means that it redirects. Name either one in the closing report.
69
+ The `reason` `compatible-base-url-missing` or `key-not-openai` means that the key belongs
70
+ to an OpenAI-compatible provider, but no file names its base URL, so nothing was sent.
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>`,
73
+ and run this step again.
74
+ - `needs-developer` with `question.reason` `local-endpoint-no-key`: the base URL is a local
75
+ server that needs no key, such as Ollama or LM Studio. The OpenAI SDKs refuse an empty
76
+ key. Do what `next` says: write `<variable>=not-needed` to `question.envFile`, the key's
77
+ own file, and run this step again. For the Microsoft Agent Framework Python starter,
78
+ that file is `agent/.env`.
60
79
  - `needs-developer` with `question.status` `missing`: if the developer said they will add the
61
80
  key later, do not ask or pause here. Carry the missing key into the plan: name the
62
81
  variable and `question.envFile`, then continue. Otherwise ask the developer `question.ask` in
@@ -65,10 +84,14 @@ never prints a value. Read `status`:
65
84
  with `--env-path <path>`. If they add the key, rerun it as it is. Do not replace the
66
85
  question with an instruction to paste the value into a file. The key can already be in a
67
86
  file that you can point the check at.
68
- - `needs-developer` with `question.status` `fail`: tell the developer `question.cause`.
69
- `model_quota` means that the key has no credits, and `model_auth` means that the vendor
70
- rejected it. Offer three choices: add credits, use another key, or switch the model
71
- provider.
87
+ - `needs-developer` with `question.status` `fail`: ask the developer `question.ask` in
88
+ those words. It says why the vendor refused the key and how to fix it. If they choose
89
+ another provider that the framework can use, record that vendor and its variable, and
90
+ run this step again with that variable. The plan changes the model code. With the cause
91
+ `model_unavailable`, the key works and the app's model does not: the vendor does not
92
+ serve the model that `COPILOTKIT_AGENT_MODEL` names. When the developer agrees to the
93
+ model that `question.ask` names, or names another, change `COPILOTKIT_AGENT_MODEL`
94
+ where `question.ask` says, and run this step again.
72
95
  - `needs-developer` with `question.kind` `env-file-exposed`: git tracks an env file the
73
96
  key goes into, or does not ignore it. So nothing was written. Ask the developer `question.ask` in those
74
97
  words. If they choose `question.alternative`, run the command again with the same flags
@@ -83,10 +106,11 @@ the run continues when they reply or resume this session. Under a harness that e
83
106
  session with your turn, such as `codex exec`, that message is the only thing the developer
84
107
  sees. This is a pause, not a stop. The command already reported it.
85
108
  End your turn. When the developer answers, run the command again. Do not write a
86
- placeholder or an empty value.
109
+ placeholder or an empty value. The one exception is `not-needed` for the reason
110
+ `local-endpoint-no-key` above.
87
111
 
88
112
  Never read a file outside the project directory to find a credential: a key found that way
89
113
  bills another project. Asking for a path is not requesting a secret. A path the developer
90
114
  names is theirs to give, including one outside the project. A path this run finds is not.
91
115
 
92
- Then run `npx --prefer-offline --yes copilotkit@4.26.0 onboard read credentials/write-plan`.
116
+ Then run `npx --prefer-offline --yes copilotkit@4.27.0 onboard read credentials/write-plan`.