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.
- package/README.md +155 -23
- package/cli-build-info.json +7 -7
- package/index.js +7748 -4981
- package/onboarding/index.json +3 -2
- package/onboarding/prompts/authenticate/start.md +42 -55
- package/onboarding/prompts/conversion/plan.md +3 -3
- package/onboarding/prompts/credentials/finalize-plan.md +28 -24
- package/onboarding/prompts/credentials/plan.md +31 -28
- package/onboarding/prompts/credentials/settle-credentials.md +7 -7
- package/onboarding/prompts/credentials/write-plan.md +54 -36
- package/onboarding/prompts/deployment/choose-local.md +9 -9
- package/onboarding/prompts/deployment/local-evaluation.md +11 -11
- package/onboarding/prompts/fallback/best-effort.md +9 -13
- package/onboarding/prompts/feature/a2ui/implement.md +4 -4
- package/onboarding/prompts/feature/a2ui/plan.md +3 -3
- package/onboarding/prompts/feature/a2ui/proof.md +5 -5
- package/onboarding/prompts/feature/a2ui/start.md +8 -8
- package/onboarding/prompts/feature/channels/implement.md +7 -7
- package/onboarding/prompts/feature/channels/plan.md +5 -5
- package/onboarding/prompts/feature/channels/proof.md +8 -7
- package/onboarding/prompts/feature/channels/start.md +9 -9
- package/onboarding/prompts/feature/chat-suggestions/implement.md +4 -4
- package/onboarding/prompts/feature/chat-suggestions/plan.md +3 -3
- package/onboarding/prompts/feature/chat-suggestions/proof.md +5 -5
- package/onboarding/prompts/feature/chat-suggestions/start.md +8 -8
- package/onboarding/prompts/feature/complete.md +2 -2
- package/onboarding/prompts/feature/learning/implement.md +12 -12
- package/onboarding/prompts/feature/learning/plan.md +4 -4
- package/onboarding/prompts/feature/learning/proof.md +13 -13
- package/onboarding/prompts/feature/learning/start.md +8 -8
- package/onboarding/prompts/feature/open-generative-ui/implement.md +4 -4
- package/onboarding/prompts/feature/open-generative-ui/plan.md +3 -3
- package/onboarding/prompts/feature/open-generative-ui/proof.md +5 -5
- package/onboarding/prompts/feature/open-generative-ui/start.md +8 -8
- package/onboarding/prompts/feature/realtime-sync/implement.md +5 -5
- package/onboarding/prompts/feature/realtime-sync/plan.md +3 -3
- package/onboarding/prompts/feature/realtime-sync/proof.md +5 -5
- package/onboarding/prompts/feature/realtime-sync/start.md +7 -7
- package/onboarding/prompts/feature/rich-threads/implement.md +6 -6
- package/onboarding/prompts/feature/rich-threads/plan.md +3 -3
- package/onboarding/prompts/feature/rich-threads/proof.md +5 -5
- package/onboarding/prompts/feature/rich-threads/start.md +7 -7
- package/onboarding/prompts/feature/stop.md +4 -4
- package/onboarding/prompts/feature/voice/implement.md +4 -4
- package/onboarding/prompts/feature/voice/plan.md +4 -4
- package/onboarding/prompts/feature/voice/proof.md +5 -5
- package/onboarding/prompts/feature/voice/start.md +8 -8
- package/onboarding/prompts/framework/ag2.md +3 -3
- package/onboarding/prompts/framework/agno.md +3 -3
- package/onboarding/prompts/framework/built-in.md +3 -3
- package/onboarding/prompts/framework/claude-sdk-python.md +3 -3
- package/onboarding/prompts/framework/claude-sdk-typescript.md +3 -3
- package/onboarding/prompts/framework/crewai-flows.md +6 -6
- package/onboarding/prompts/framework/custom-ag-ui.md +4 -4
- package/onboarding/prompts/framework/deep-agents.md +3 -3
- package/onboarding/prompts/framework/google-adk.md +3 -3
- package/onboarding/prompts/framework/langgraph-fastapi.md +3 -3
- package/onboarding/prompts/framework/langgraph-python.md +3 -3
- package/onboarding/prompts/framework/langgraph-typescript.md +3 -3
- package/onboarding/prompts/framework/llamaindex.md +3 -3
- package/onboarding/prompts/framework/mastra.md +3 -3
- package/onboarding/prompts/framework/ms-agent-dotnet.md +5 -5
- package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +5 -5
- package/onboarding/prompts/framework/ms-agent-python.md +3 -3
- package/onboarding/prompts/framework/pydantic-ai.md +3 -3
- package/onboarding/prompts/framework/strands-python.md +3 -3
- package/onboarding/prompts/framework/strands-typescript.md +3 -3
- package/onboarding/prompts/frontend/angular.md +4 -4
- package/onboarding/prompts/frontend/nextjs.md +4 -4
- package/onboarding/prompts/frontend/plan.md +12 -12
- package/onboarding/prompts/frontend/react-native.md +3 -3
- package/onboarding/prompts/frontend/react-spa.md +3 -3
- package/onboarding/prompts/frontend/vue.md +3 -3
- package/onboarding/prompts/implementation/build-and-validate.md +16 -14
- package/onboarding/prompts/proof/complete.md +6 -7
- package/onboarding/prompts/proof/oss-baseline.md +8 -5
- package/onboarding/prompts/proof/round-trip.md +18 -20
- package/onboarding/prompts/research/gather.md +38 -10
- package/onboarding/prompts/research/merge.md +3 -3
- package/onboarding/prompts/research/preflight.md +2 -2
- package/onboarding/prompts/research/route.md +10 -4
- package/onboarding/prompts/setup/questions.md +53 -234
- package/onboarding/prompts/starter/clone.md +42 -33
- package/onboarding/prompts/stopped/run-failed.md +3 -3
- package/onboarding/prompts/subagent/create-plan.md +32 -34
- package/onboarding/prompts/subagent/implement-and-validate.md +12 -35
- package/onboarding/prompts/subagent/inspect-repository.md +1 -1
- package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
- package/onboarding/prompts/subagent/prove-round-trip.md +35 -52
- package/onboarding/prompts/unsupported/no-validated-path.md +3 -3
- package/package.json +1 -1
- package/release/release-tool.js +8 -1
|
@@ -1,246 +1,65 @@
|
|
|
1
1
|
# Ask the setup questions together
|
|
2
2
|
|
|
3
3
|
Do not change application code in this phase. Do not read, show, store, or request a secret value.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- An
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
the
|
|
39
|
-
|
|
40
|
-
```text
|
|
41
|
-
Reply **go** to use all five, or tell me what to change.
|
|
42
|
-
|
|
43
|
-
1. Framework: **LangGraph TypeScript**
|
|
44
|
-
Other, for example: LangGraph Python · Mastra · ADK
|
|
45
|
-
2. Model: **OpenAI**
|
|
46
|
-
Other, for example: Groq · OpenRouter (any OpenAI-compatible provider)
|
|
47
|
-
3. Key: **I ask for the key file after I build the app**
|
|
48
|
-
Other: name the file now (outside this folder)
|
|
49
|
-
4. Frontend: **Next.js**
|
|
50
|
-
Other: React SPA · Vue 3 · React Native · Angular · Slack · Microsoft Teams
|
|
51
|
-
5. Project: **new project "copilotkit-assistant"**
|
|
52
|
-
Other: another name · a project you already have
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
A line that recommends nothing keeps its own wording and has no "Other:" line: the
|
|
56
|
-
`env-file-exposed` line with `question.untrack` and no `question.alternative`, the
|
|
57
|
-
uncommitted-changes line, or a held-back vendor, with the note "Read the reply" gives.
|
|
58
|
-
**go** does not answer it. Open with "Reply **go** to use the other <count>, and answer
|
|
59
|
-
line <number>." For several, "Reply **go** to use the others, and answer lines <a> and
|
|
60
|
-
<b>." With one line: "Reply **go** to use it, or tell me what to change." When every line
|
|
61
|
-
needs its own answer, write no **go** sentence: open with "Answer each line."
|
|
62
|
-
|
|
63
|
-
**The purpose line.**
|
|
64
|
-
|
|
65
|
-
Ask this line only when neither the request nor the repository shows what the project is
|
|
66
|
-
for. Recommend "a general assistant", and give two short examples. In an empty target, do
|
|
67
|
-
not ask it: record the purpose the request names, or "a general assistant".
|
|
68
|
-
|
|
69
|
-
**The framework line.**
|
|
70
|
-
|
|
71
|
-
If the project has no agent, ask this line. Recommend a framework in the repository's
|
|
72
|
-
language. In an empty target, use the example's line.
|
|
73
|
-
|
|
74
|
-
The vendors each framework takes in this release, default first:
|
|
75
|
-
|
|
76
|
-
| Framework | Vendors |
|
|
77
|
-
| ---------------------------------- | -------------------------------------------- |
|
|
78
|
-
| AG2 | OpenAI, OpenAI-compatible |
|
|
79
|
-
| ADK | Google, OpenAI, OpenAI-compatible |
|
|
80
|
-
| Agno | OpenAI, OpenAI-compatible |
|
|
81
|
-
| Built-in CopilotKit agent | OpenAI, Anthropic, Google, OpenAI-compatible |
|
|
82
|
-
| Claude Agent SDK (Python) | Anthropic only |
|
|
83
|
-
| Claude Agent SDK (TypeScript) | Anthropic only |
|
|
84
|
-
| CrewAI Flows | Project-defined |
|
|
85
|
-
| Custom agent | The agent's own |
|
|
86
|
-
| Deep Agents | OpenAI, OpenAI-compatible |
|
|
87
|
-
| LangGraph FastAPI | OpenAI, OpenAI-compatible |
|
|
88
|
-
| LangGraph Python | OpenAI, OpenAI-compatible |
|
|
89
|
-
| LangGraph TypeScript | OpenAI, OpenAI-compatible |
|
|
90
|
-
| LlamaIndex | OpenAI, OpenAI-compatible |
|
|
91
|
-
| Mastra | OpenAI, OpenAI-compatible |
|
|
92
|
-
| Microsoft Agent Framework (.NET) | OpenAI, OpenAI-compatible |
|
|
93
|
-
| Microsoft Agent Framework (Python) | OpenAI, OpenAI-compatible |
|
|
94
|
-
| MS Agent Harness (.NET) | OpenAI, OpenAI-compatible |
|
|
95
|
-
| Pydantic AI | OpenAI, OpenAI-compatible |
|
|
96
|
-
| Strands Agents (Python) | OpenAI, OpenAI-compatible |
|
|
97
|
-
| Strands Agents (TypeScript) | OpenAI, OpenAI-compatible |
|
|
98
|
-
|
|
99
|
-
"Project-defined" keeps the repository's vendor, or asks once when it shows none.
|
|
100
|
-
|
|
101
|
-
"The agent's own" keeps the existing agent's vendor, with no vendor question. A new agent
|
|
102
|
-
on the Custom agent route asks the model and key lines like any new agent, with OpenAI as
|
|
103
|
-
its default vendor.
|
|
104
|
-
|
|
105
|
-
For a new agent in a framework the table does not list, record its name and take the Custom
|
|
106
|
-
agent route.
|
|
107
|
-
|
|
108
|
-
**The model and key lines.**
|
|
109
|
-
|
|
110
|
-
For a new agent, ask the model line, even if the framework needed no question. Skip it for
|
|
111
|
-
"Project-defined" or "The agent's own". The model line names providers only: the row's
|
|
112
|
-
default vendor, then its other vendors on "Other, for example:", except on an "only" row,
|
|
113
|
-
where the model line has no "Other:" line.
|
|
114
|
-
|
|
115
|
-
Ask the key line for a new agent only. Never ask for the key itself. Recommend the key file
|
|
116
|
-
the developer named, or the project's env file under the rule below, or else "I ask for the
|
|
117
|
-
key file after I build the app", which **go** takes. Its "Other:" is the example's, or
|
|
118
|
-
"later" after a file.
|
|
119
|
-
|
|
120
|
-
An OpenAI-compatible provider uses `OPENAI_API_KEY`. When the developer names one, ask in
|
|
121
|
-
the same line for its model id, and its base URL unless the key file sets
|
|
122
|
-
`OPENAI_BASE_URL`. Neither is a secret.
|
|
123
|
-
|
|
124
|
-
When the developer has no key yet, name the ways forward on the key line: credit on the
|
|
125
|
-
vendor's account, and, when the chosen framework can use Google, a free key from Google AI
|
|
126
|
-
Studio at https://aistudio.google.com/apikey. The free tier limits requests per minute, so
|
|
127
|
-
tell them that a slow first reply is that limit and not a fault.
|
|
128
|
-
|
|
129
|
-
A path the developer names is theirs to give, even outside the project. Recommend the
|
|
130
|
-
project's env file only when it exists, holds the key, and git ignores and does not track
|
|
131
|
-
it, and no `env-file-exposed` line is open. In an empty target, a new key file goes outside
|
|
132
|
-
the target directory, because `init` refuses a target with a `.env` file. Tell the
|
|
133
|
-
developer only where it goes.
|
|
134
|
-
|
|
135
|
-
**The frontend line.**
|
|
136
|
-
|
|
137
|
-
If the project has no frontend, ask this line. Recommend the one the developer names, or
|
|
138
|
-
Next.js. "Other:" is the example's list.
|
|
139
|
-
|
|
140
|
-
**The project line.** On the local route, ask the local lines below instead. For an
|
|
141
|
-
existing app, first run `npx --prefer-offline --yes copilotkit@4.27.0 onboard credentials --json` from the target app
|
|
142
|
-
directory. It only reads: it creates no project and writes no file. Read `status`:
|
|
143
|
-
|
|
144
|
-
- `ready`: the app has a project. Leave the line out.
|
|
145
|
-
- `needs-developer` with `project-name`: recommend `suggestedName`, with the
|
|
146
|
-
example's "Other:" line. If there is no `suggestedName`, ask for a name. Do not list
|
|
147
|
-
the organization's projects.
|
|
148
|
-
- `needs-developer` with `env-file-exposed`: git tracks the env file the key goes into, or
|
|
149
|
-
does not ignore it. Add `question.ask` as its own line, word for word: never shorten it or
|
|
150
|
-
drop what it says about teammates. Without `question.untrack`, recommend approving it:
|
|
151
|
-
without it, the run writes no key, and **go** approves it. With `question.untrack`, git
|
|
152
|
-
tracks the file: recommend `question.alternative` if present, since the key then goes into
|
|
153
|
-
`question.alternative.file`, which affects no teammate, and **go** takes it. Otherwise
|
|
154
|
-
recommend nothing. Untracking removes the file for everyone who pulls the next commit. A
|
|
155
|
-
reply that accepts every recommendation never approves the untrack. Never suggest a
|
|
156
|
-
reply that approves it. Then offer a new project for this app, or a project the developer
|
|
157
|
-
already has.
|
|
158
|
-
- `stopped`: the command already filed the stop report. Tell the developer
|
|
159
|
-
`stopReason.detail` in one sentence, then stop onboarding.
|
|
160
|
-
|
|
161
|
-
For an empty target, recommend a new project named after the target directory, with the
|
|
162
|
-
same "Other:" line. When that name is generic, such as `project`, `app`,
|
|
163
|
-
`web`, `frontend`, or `src`, name it after the README title or the `package.json` `name`
|
|
164
|
-
instead.
|
|
165
|
-
|
|
166
|
-
**Local lines.** On the local route only:
|
|
167
|
-
|
|
168
|
-
- Run `npx --prefer-offline --yes copilotkit@4.27.0 onboard local-terms --json` and follow `next`.
|
|
169
|
-
- "Learning model: **configure later**", then "Other:
|
|
170
|
-
guided setup in your own terminal · a private model file you have".
|
|
171
|
-
- "Local connection: **install the local stack, then write `<app directory>/<env file>`
|
|
172
|
-
and `<app directory>/.copilotkit/project.json`**", then "Other: not now". A reply that
|
|
173
|
-
accepts every recommendation approves the connection.
|
|
174
|
-
- When the env file or `.copilotkit/project.json` has uncommitted changes, add one line that
|
|
175
|
-
names every one of them: "Uncommitted changes: `<files>` have edits that are not
|
|
176
|
-
committed, and the connection changes their settings. Allow it, or commit first?" One
|
|
177
|
-
answer covers every file on that line. A reply that accepts every
|
|
178
|
-
recommendation never approves those writes.
|
|
179
|
-
|
|
180
|
-
Before you end your turn to wait for the developer, report the pause:
|
|
4
|
+
Never ask for the key itself: the message asks only for the file that holds it.
|
|
5
|
+
|
|
6
|
+
## Record what the findings already answer
|
|
7
|
+
|
|
8
|
+
Do not ask the developer for a fact that the repository or their request answers. Record
|
|
9
|
+
each one with `npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-answers` before you build the
|
|
10
|
+
message, so the message leaves it out:
|
|
11
|
+
|
|
12
|
+
- An agent the project already has: `--framework <name>` with its vendor and the choice
|
|
13
|
+
`existing`: `--vendor <vendor> --vendor-choice existing`, or `--vendor other
|
|
14
|
+
--vendor-choice existing` if you cannot tell the vendor. An
|
|
15
|
+
agent in no framework the CLI names takes the Custom agent route: add
|
|
16
|
+
`--custom-framework`. It keeps the agent and connects it through AG-UI.
|
|
17
|
+
- A frontend the project already has: `--frontend <name>`.
|
|
18
|
+
- What the project is for, when the request or the repository shows it: `--purpose <text>`.
|
|
19
|
+
- A choice the developer named in their request or a later reply, and a framework the
|
|
20
|
+
project's README names, even in an otherwise empty target: the matching flag. For a
|
|
21
|
+
framework, add `--framework-choice developer`. A vendor the developer named goes on the
|
|
22
|
+
command below as `--vendor`, not here.
|
|
23
|
+
- For a project with no agent, you can infer the language's usual framework. Record it
|
|
24
|
+
without `--framework-choice`, and the CLI keeps it as a default the developer can change.
|
|
25
|
+
- A key file the developer named: `--key-file <path>`. Record the project's env file only
|
|
26
|
+
when it exists, holds the key, and git ignores it and does not track it.
|
|
27
|
+
|
|
28
|
+
## Build the message
|
|
29
|
+
|
|
30
|
+
For an existing app on the managed route, the command reads the app's project itself, so its
|
|
31
|
+
env-file and project lines are in the same message as the key. That read creates no project
|
|
32
|
+
and writes no file. If the command prints `status: stopped`, do what its `next` says.
|
|
33
|
+
|
|
34
|
+
On the local route, first run `npx --prefer-offline --yes copilotkit@4.28.0 onboard local-terms --json`.
|
|
35
|
+
If it reports `signed-out` or `unavailable`, follow its `next`. Do not add its
|
|
36
|
+
`question.ask` yourself: the setup message already carries the agreement line.
|
|
37
|
+
|
|
38
|
+
From the target app directory, run:
|
|
181
39
|
|
|
182
40
|
```text
|
|
183
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
41
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard setup-message --target <empty|existing> [--language <typescript|python|dotnet>] [--vendor <vendor>]
|
|
184
42
|
```
|
|
185
43
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
A reply such as "go", "yes" or "go ahead" accepts every recommendation. A line the reply
|
|
191
|
-
changes takes the new answer. A line it does not mention keeps its recommendation.
|
|
192
|
-
|
|
193
|
-
If a changed line makes another answer invalid, ask again, in one message:
|
|
194
|
-
|
|
195
|
-
- A vendor that the chosen framework's own model layer cannot use, such as OpenAI for the
|
|
196
|
-
Claude Agent SDK: say so, and offer the framework with its default vendor, or another
|
|
197
|
-
framework for their vendor.
|
|
198
|
-
- Anthropic or Google for a new agent on a row without it: say that this release supports
|
|
199
|
-
the row's vendors there, that Anthropic and Google come in a later release, and offer the Built-in
|
|
200
|
-
CopilotKit agent if they need them now.
|
|
201
|
-
- Slack or Microsoft Teams as the frontend of an empty project: the Channel starter brings
|
|
202
|
-
its own agent, so the framework, model, and key lines decide nothing. Drop all three:
|
|
203
|
-
`<count>` counts only the lines shown.
|
|
204
|
-
|
|
205
|
-
If the developer chooses a framework on the `unready` list, or the repository already has
|
|
206
|
-
an agent in one, keep that framework. Before the run changes the project, tell the
|
|
207
|
-
developer in one message:
|
|
208
|
-
|
|
209
|
-
1. Which toolchain to install, and its install page.
|
|
210
|
-
2. That the coding agent sees the toolchain only after a restart, since its shell
|
|
211
|
-
reads PATH at start.
|
|
212
|
-
3. That the run resumes after the restart with
|
|
213
|
-
`npx --prefer-offline --yes copilotkit@4.27.0 onboard start --run <onboarding_run_id>`.
|
|
214
|
-
|
|
215
|
-
Before you end your turn to wait for the developer, report the pause:
|
|
216
|
-
|
|
217
|
-
```text
|
|
218
|
-
npx --prefer-offline --yes copilotkit@4.27.0 onboard checkpoint --phase awaiting-developer
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
Then end your turn and wait for the developer. That restart is a step here, not an error.
|
|
222
|
-
|
|
223
|
-
## Record the answers
|
|
224
|
-
|
|
225
|
-
Record every answer in the CLI. They answer
|
|
226
|
-
the framework, provider, and frontend questions for the rest of the run. Give them to each
|
|
227
|
-
subagent too. Pass the flags that apply:
|
|
44
|
+
- `--target empty` for a target with no project yet, `existing` for one with a project.
|
|
45
|
+
- `--language` is the project's language, for a project with no agent.
|
|
46
|
+
- `--vendor` is a model vendor the developer named, as `openai`, `anthropic`, `google`, or
|
|
47
|
+
`openai-compatible`.
|
|
228
48
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
(an existing agent's). For
|
|
234
|
-
`openai-compatible`, add `--model-id <id>`, and `--base-url <url>` unless the CLI
|
|
235
|
-
printed `keyFileBaseUrl`: show that one.
|
|
236
|
-
- `--create <name>` for a new project or `--project <slug>` for theirs, and
|
|
237
|
-
`--key-file <path>` or `--key-later`.
|
|
238
|
-
- On the local route: `--learning later`, `--learning guided`, or `--learning-file <path>`.
|
|
239
|
-
Then `--connection approved` or `declined`. For an uncommitted-changes line the reply
|
|
240
|
-
answered, add `--uncommitted-writes approved` or `declined`.
|
|
49
|
+
Then do what its `next` says. With no `message`, as for `settled` or `needs-credentials`,
|
|
50
|
+
ask the developer nothing and go on as `next` says. When it prints a `message`, write it in
|
|
51
|
+
your own reply word for word. The developer does not see your tool output. Before it you can
|
|
52
|
+
put the one short line `next` names, and add nothing else. Before you end your turn to wait for the developer, report the pause:
|
|
241
53
|
|
|
242
54
|
```text
|
|
243
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
55
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
244
56
|
```
|
|
245
57
|
|
|
246
|
-
Then
|
|
58
|
+
Then end your turn and wait for the developer. When the developer replies, record their
|
|
59
|
+
answers with `onboard setup-answers`, and run `onboard setup-message` again with
|
|
60
|
+
`--accept-defaults`, as `next` says. When it prints `status: settled`, run
|
|
61
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard read credentials/plan`. If you came here from
|
|
62
|
+
`research/gather` before the research merged, do not read `credentials/plan` yet: finish the
|
|
63
|
+
research. If it returns and the developer has not replied, record what the findings settle
|
|
64
|
+
with `onboard setup-answers`, then end your turn and send the developer nothing. Report
|
|
65
|
+
the pause with `onboard checkpoint --phase awaiting-developer` first.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Clone a starter
|
|
2
2
|
|
|
3
|
-
First run `npx --prefer-offline --yes copilotkit@4.
|
|
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: `framework`, `frontend`,
|
|
5
5
|
`vendor`, `project`, `key`, and on the local route `learning`. Take every "recorded" answer
|
|
6
6
|
below from the record, or this conversation when the record lacks it. Do not ask a question
|
|
@@ -22,7 +22,7 @@ project to use, or to open the coding agent in a new empty folder.
|
|
|
22
22
|
Before you end your turn to wait for the developer, report the pause:
|
|
23
23
|
|
|
24
24
|
```text
|
|
25
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
25
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
Match the selected agent framework and frontend to this table:
|
|
@@ -68,7 +68,7 @@ again.
|
|
|
68
68
|
|
|
69
69
|
If neither the record nor this conversation holds a project answer, ask here. If the developer did not name a
|
|
70
70
|
project, create one for the app being cloned. This directory is new, so no existing project is already its own: take the project
|
|
71
|
-
name from the target directory name derived above, and ask as the setup
|
|
71
|
+
name from the target directory name derived above, and ask as the options view of `onboard setup-message` does:
|
|
72
72
|
"Project: **new project "<name>"**", then "Other: another name · a project you already
|
|
73
73
|
have". Do not list the projects in the organization. If no developer answers, use
|
|
74
74
|
the derived name.
|
|
@@ -76,7 +76,7 @@ the derived name.
|
|
|
76
76
|
Only if the developer asks for an existing project, or asks to see the projects they have,
|
|
77
77
|
read the choices:
|
|
78
78
|
|
|
79
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
79
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 project list --json`
|
|
80
80
|
|
|
81
81
|
Then ask which one to use. Do not order the projects by creation time. If the developer
|
|
82
82
|
already gave this answer, do not ask again. Do not read a secret value. Do not show or
|
|
@@ -85,7 +85,7 @@ store a secret value.
|
|
|
85
85
|
Before you end your turn to wait for the developer, report the pause:
|
|
86
86
|
|
|
87
87
|
```text
|
|
88
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
88
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
## Ask where the model credential lives
|
|
@@ -119,7 +119,7 @@ stops the clone. Pass the new file with `--model-key-file`, as for any other key
|
|
|
119
119
|
Before you end your turn to wait for the developer, report the pause:
|
|
120
120
|
|
|
121
121
|
```text
|
|
122
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
122
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-model-credential
|
|
123
123
|
```
|
|
124
124
|
|
|
125
125
|
A path the developer names is theirs to give, including one outside the project. A path
|
|
@@ -132,7 +132,7 @@ This route skips the plan step that records the path, so record it here, once, b
|
|
|
132
132
|
the clone:
|
|
133
133
|
|
|
134
134
|
```text
|
|
135
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
135
|
+
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>
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
- `<starting-state>`: the starting state the research recorded, usually `empty`.
|
|
@@ -155,13 +155,15 @@ Do not inspect another entry in the parent directory. Replace each placeholder w
|
|
|
155
155
|
recorded value. Do not run a placeholder as a shell argument. If the path holds a space,
|
|
156
156
|
put it in double quotes.
|
|
157
157
|
|
|
158
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
158
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 init --dir <absolute-target-directory> --framework <framework-id> --channel none --no-banner --no-key-prompt --create <name> --install`
|
|
159
159
|
|
|
160
160
|
`--dir` is always the absolute path of the target directory. `init` builds the app in that
|
|
161
161
|
directory and gives the app the directory's name. Do not add `--name`: `init` refuses
|
|
162
162
|
`--name` together with `--dir`. Pass the confirmed project name to `--create` only. If the
|
|
163
163
|
developer names an existing project, use `--project <slug-or-id>` instead of
|
|
164
|
-
`--create <name>`. If the
|
|
164
|
+
`--create <name>`. If `init` says that the account already has a project with that name,
|
|
165
|
+
ask the developer for a new name, or which of their projects to use. Do not select the
|
|
166
|
+
existing project until they name it. If the developer asked to skip the dependency install, use
|
|
165
167
|
`--no-install` instead of `--install`. Do not wait for an interactive prompt. Pass every
|
|
166
168
|
answer as a flag. `--no-key-prompt` stops `init` from asking for a model key. The `init`
|
|
167
169
|
output still names each missing key as `Set <VARIABLE> in .env`.
|
|
@@ -176,23 +178,23 @@ the developer for the right path, or run the command again without the flag.
|
|
|
176
178
|
Before you end your turn to wait for the developer, report the pause:
|
|
177
179
|
|
|
178
180
|
```text
|
|
179
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
181
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-model-credential
|
|
180
182
|
```
|
|
181
183
|
|
|
182
184
|
If you cannot pass the key file to `init`, for example because a sandbox refuses the path,
|
|
183
185
|
clone without `--model-key-file`. Then copy the key from `<target>` with one command:
|
|
184
|
-
`cd <target> && npx --prefer-offline --yes copilotkit@4.
|
|
186
|
+
`cd <target> && npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <VARIABLE> --env-path <key-file> --copy-to <env file> --json`.
|
|
185
187
|
`<env file>` is `.env`, or `agent/.env` for the Microsoft Agent Framework Python starter.
|
|
186
188
|
The command writes the key into that file without printing it. If the
|
|
187
189
|
command is refused too, ask the developer to run it. Give them exactly this one line:
|
|
188
|
-
`! cd <target> && npx --prefer-offline --yes copilotkit@4.
|
|
190
|
+
`! cd <target> && npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <VARIABLE> --env-path <key-file> --copy-to <env file>`.
|
|
189
191
|
The command needs no input. Without `!`, they run the same command in a terminal.
|
|
190
192
|
Do not write a `sed`, `grep`, or `cat` command to copy the key.
|
|
191
193
|
|
|
192
194
|
Before you end your turn to wait for the developer, report the pause:
|
|
193
195
|
|
|
194
196
|
```text
|
|
195
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
197
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-model-credential
|
|
196
198
|
```
|
|
197
199
|
|
|
198
200
|
### For a recorded local choice
|
|
@@ -202,7 +204,7 @@ command instead of the hosted command above. Do not ask the project questions ab
|
|
|
202
204
|
Local evaluation creates its own empty project, and `init --local` refuses `--create` and
|
|
203
205
|
`--project`.
|
|
204
206
|
|
|
205
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
207
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 init --dir <absolute-target-directory> --framework <framework-id> --channel none --no-banner --no-key-prompt --local --defer-model --install`
|
|
206
208
|
|
|
207
209
|
Use the `learning` answer from the record, or this conversation. Use the default only when
|
|
208
210
|
neither holds one.
|
|
@@ -212,11 +214,11 @@ file. The CLI selects the latest stable release. If the developer gave a candida
|
|
|
212
214
|
manifest for release testing, add `--candidate <manifest.json>`. Otherwise, do not add it.
|
|
213
215
|
The `--dir`, `--no-install` and `--model-key-file` rules above apply here too.
|
|
214
216
|
|
|
215
|
-
Before `init`, run `npx --prefer-offline --yes copilotkit@4.
|
|
217
|
+
Before `init`, run `npx --prefer-offline --yes copilotkit@4.28.0 onboard local-terms --json`. If `accepted`
|
|
216
218
|
is false, pause here. Give the developer this exact command to run in their own terminal:
|
|
217
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
219
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 local accept-terms`. Never accept the agreement yourself.
|
|
218
220
|
Report the pause with
|
|
219
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
221
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer`, end your turn,
|
|
220
222
|
and wait for "done". Then run `local-terms` again, and continue only when `accepted` is
|
|
221
223
|
true. A local command that fails with `eula_acceptance_required` comes back to this step.
|
|
222
224
|
|
|
@@ -226,7 +228,7 @@ After `init` reports the stack ready:
|
|
|
226
228
|
Ask the developer to run this command in their own terminal window, in `<target>`:
|
|
227
229
|
|
|
228
230
|
```text
|
|
229
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
231
|
+
npx --prefer-offline --yes copilotkit@4.28.0 local setup
|
|
230
232
|
```
|
|
231
233
|
|
|
232
234
|
Do not give it as a `!` line, and do not run it yourself. Its guided model prompt needs a
|
|
@@ -235,9 +237,9 @@ changes nothing. The prompt asks for the model and its key, and it saves them pr
|
|
|
235
237
|
On a running stack, it restarts only Learning. Do not ask for a model file.
|
|
236
238
|
|
|
237
239
|
Say that the run continues when they reply or resume this session. Report the pause with
|
|
238
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
240
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-model-credential`, end your
|
|
239
241
|
turn, and wait. When the developer replies, run
|
|
240
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
242
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 local status --json` from `<target>` and read `learning.configuration`.
|
|
241
243
|
|
|
242
244
|
The command installs the local stack, then connects the starter to it. It writes the
|
|
243
245
|
gitignored `.copilotkit/local.json` stack reference and `.copilotkit/project.json` with the
|
|
@@ -275,7 +277,7 @@ later release, and offer the Built-in CopilotKit agent if they need them now.
|
|
|
275
277
|
2. For an OpenAI-compatible provider, set `COPILOTKIT_AGENT_MODEL` to
|
|
276
278
|
`openai:<vendor.modelId>`, and `OPENAI_BASE_URL` to `vendor.baseUrl`.
|
|
277
279
|
3. If the developer named a key file, copy the key with the `onboard credentials
|
|
278
|
-
|
|
280
|
+
--model-key <VARIABLE> --env-path <key-file> --copy-to <env file> --json` command above,
|
|
279
281
|
with the recorded vendor's variable. Otherwise the next section pauses for it.
|
|
280
282
|
|
|
281
283
|
For the Microsoft Agent Framework .NET starter, set these values with
|
|
@@ -299,7 +301,15 @@ grep -c '^<VARIABLE>=.' <target>/.env
|
|
|
299
301
|
`1` means the variable holds a value. `0` means it is empty or absent. The command prints
|
|
300
302
|
a count and never the value.
|
|
301
303
|
|
|
302
|
-
If a variable is empty,
|
|
304
|
+
If a variable is empty, run
|
|
305
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <VARIABLE> --json` from
|
|
306
|
+
`<target>`, and show the developer `question.ask` word for word. It names the file by its
|
|
307
|
+
full path and the line to add. If they reply with the path of a file that holds the key, run
|
|
308
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <VARIABLE> --env-path <file> --copy-to <question.envFile> --json`
|
|
309
|
+
from `<target>`. Ask nothing else first. Quote a path that holds a space. The command copies
|
|
310
|
+
the key without printing it. When it reports `ready`, the key is in `question.envFile`. Run
|
|
311
|
+
the check above again, and continue. Follow this paragraph, not the packet's `next`, which is
|
|
312
|
+
written for an existing app that copies the key only after its plan.
|
|
303
313
|
|
|
304
314
|
A local server needs no key. That is a server such as Ollama or LM Studio, with
|
|
305
315
|
`OPENAI_BASE_URL` on `localhost`, `127.0.0.1` or `::1` in `<target>/.env`. A local base
|
|
@@ -313,18 +323,17 @@ The two Microsoft Agent Framework starters keep their key outside `<target>/.env
|
|
|
313
323
|
|
|
314
324
|
- For the Python starter, a key file passed to `init` fills `<target>/agent/.env`, and the
|
|
315
325
|
output says so. Otherwise, run the same check for `OPENAI_API_KEY` against
|
|
316
|
-
`<target>/agent/.env`. A missing file counts as `0`. If it is empty, ask
|
|
317
|
-
|
|
326
|
+
`<target>/agent/.env`. A missing file counts as `0`. If it is empty, ask as above, with
|
|
327
|
+
`--env-path agent/.env` added to the first command.
|
|
318
328
|
- For the .NET starter, the key lives in `dotnet user-secrets`, and no check can read it
|
|
319
329
|
without printing the value. Ask the developer to run
|
|
320
330
|
`cd <target>/agent && dotnet user-secrets set OPENAI_API_KEY "<key>"` themselves, even
|
|
321
331
|
if they named a key file.
|
|
322
332
|
|
|
323
|
-
When you ask,
|
|
324
|
-
when they reply or resume this session. Then report the pause and end your turn:
|
|
333
|
+
When you ask, say that the run continues when they reply or resume this session. Then report the pause and end your turn:
|
|
325
334
|
|
|
326
335
|
```text
|
|
327
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
336
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-model-credential
|
|
328
337
|
```
|
|
329
338
|
|
|
330
339
|
This is a pause, not a stop. Do not send a stop report, and do not take a stop route.
|
|
@@ -340,7 +349,7 @@ Run this from `<target>`, with one `--model-key` for each variable. For the Micr
|
|
|
340
349
|
Framework Python starter, add `--env-path agent/.env`. Skip it for the .NET starter.
|
|
341
350
|
|
|
342
351
|
```text
|
|
343
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
352
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard credentials --model-key <VARIABLE> --json
|
|
344
353
|
```
|
|
345
354
|
|
|
346
355
|
The command never prints a value. If `status` is `ready`, continue. Otherwise do what
|
|
@@ -353,7 +362,7 @@ works and the app's model does not: the vendor does not serve the model that
|
|
|
353
362
|
names, or names another, change `COPILOTKIT_AGENT_MODEL` where `question.ask` says, and
|
|
354
363
|
run the command again.
|
|
355
364
|
|
|
356
|
-
Then run `npx --prefer-offline --yes copilotkit@4.
|
|
365
|
+
Then run `npx --prefer-offline --yes copilotkit@4.28.0 onboard read proof/round-trip`.
|
|
357
366
|
|
|
358
367
|
If the local command fails, `init` keeps the cloned starter in `<target>`, and its error
|
|
359
368
|
says whether it installed the starter's dependencies, or names the command that does. Do
|
|
@@ -366,14 +375,14 @@ available memory, or 40 GiB storage. Tell the developer what to change in Docker
|
|
|
366
375
|
memory, pass on the amount the message names. Then report the pause and end your turn:
|
|
367
376
|
|
|
368
377
|
```text
|
|
369
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
378
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
370
379
|
```
|
|
371
380
|
|
|
372
381
|
When the developer says that Docker is ready, resume from `<target>` with the same model
|
|
373
382
|
choice. If the run used a `--candidate`, add the same one:
|
|
374
383
|
|
|
375
384
|
```text
|
|
376
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
385
|
+
npx --prefer-offline --yes copilotkit@4.28.0 local setup --defer-model --json
|
|
377
386
|
```
|
|
378
387
|
|
|
379
388
|
If the run used model settings, replace `--defer-model` with `--model-config <private-file>`.
|
|
@@ -381,7 +390,7 @@ Read blockers and the recorded failed step. Do not delete or recreate a failed s
|
|
|
381
390
|
setup reports the stack ready, connect the starter from `<target>`:
|
|
382
391
|
|
|
383
392
|
```text
|
|
384
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
393
|
+
npx --prefer-offline --yes copilotkit@4.28.0 local connect --approve-connection --json
|
|
385
394
|
```
|
|
386
395
|
|
|
387
396
|
The connection writes `.copilotkit/local.json`, `.copilotkit/project.json`, and the local
|
|
@@ -391,6 +400,6 @@ take the route below.
|
|
|
391
400
|
|
|
392
401
|
If the command fails, report its exact error and do not claim that the starter is ready.
|
|
393
402
|
Then run
|
|
394
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
403
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard read stopped/run-failed`. The starter is one this
|
|
395
404
|
graph ships and the stack was chosen from its own supported list, so a command that
|
|
396
405
|
returned an error is a run that broke, not a setup this release does not support.
|
|
@@ -42,13 +42,13 @@ put to them, stop here and send the report below.
|
|
|
42
42
|
Before you end your turn to wait for the developer, report the pause:
|
|
43
43
|
|
|
44
44
|
```text
|
|
45
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
45
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
If they approve it, make that one fix and nothing else. Then come back into this run:
|
|
49
49
|
|
|
50
50
|
```text
|
|
51
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
51
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard resume --message "<approval>"
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Put the developer's approval in `--message`, in one or two sentences: the fix they
|
|
@@ -71,7 +71,7 @@ Send one short report. The friction command follows the telemetry setting the de
|
|
|
71
71
|
already chose, so it needs no separate question.
|
|
72
72
|
|
|
73
73
|
```text
|
|
74
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
74
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard friction --phase stop --category <slug> --message "<sentences>"
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
`--message` takes one or two sentences: the step you stopped at and what stopped
|