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
|
@@ -32,8 +32,8 @@ Wiring is not behavior. The CopilotKit SDK dependency, the middleware the agent
|
|
|
32
32
|
in, the runtime mount, the AG-UI connection, and a frontend that renders what the agent
|
|
33
33
|
already returns are wiring. Plan them as ordinary steps.
|
|
34
34
|
|
|
35
|
-
Every item on the behavior list is a change the developer has to approve, so it
|
|
36
|
-
|
|
35
|
+
Every item on the behavior list is a change the developer has to approve, so it goes under
|
|
36
|
+
`Changes that need your approval`. Where a step needs one, plan it as its own item, name the file and the exact change, and state that it
|
|
37
37
|
changes how the agent answers everywhere, not only in CopilotKit. A system prompt the
|
|
38
38
|
developer wrote is the agent's behavior rather than a setting this run tunes until a
|
|
39
39
|
component renders. Where the plan cannot be written without such a change and you cannot
|
|
@@ -97,7 +97,7 @@ against a dead host, and the failure arrives as an empty-body 404 with no cause
|
|
|
97
97
|
Ask the CLI for the dependency upgrade, from the target directory:
|
|
98
98
|
|
|
99
99
|
```text
|
|
100
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
100
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --json
|
|
101
101
|
```
|
|
102
102
|
|
|
103
103
|
It reads the installed tree and the registry. Read `status`:
|
|
@@ -118,7 +118,7 @@ It reads the installed tree and the registry. Read `status`:
|
|
|
118
118
|
|
|
119
119
|
The floor is 1.70.0 because the runtime resolves managed Intelligence entitlement
|
|
120
120
|
authority from that version. Below it, the Intelligence features stay dark with no error.
|
|
121
|
-
An exact pin is usually deliberate, so a move of one is a
|
|
121
|
+
An exact pin is usually deliberate, so a move of one is a change the developer
|
|
122
122
|
approves, not a repair the run invents halfway through. Where the developer needs a pin held, return
|
|
123
123
|
`Status: blocked` and name `unsupported/no-validated-path` as the outcome.
|
|
124
124
|
|
|
@@ -185,33 +185,22 @@ here is work the developer did not ask for.
|
|
|
185
185
|
Plan the threads drawer itself: add it from the selected drawer page, where this frontend
|
|
186
186
|
does not already render one. Where this journey's frontend framework ships no threads
|
|
187
187
|
drawer -- React Native --, plan that the thread is proved by
|
|
188
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
188
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --round-trip`, which needs no browser. Do not plan a
|
|
189
189
|
step that opens the managed Intelligence dashboard.
|
|
190
190
|
|
|
191
191
|
## Name the files the run writes itself
|
|
192
192
|
|
|
193
193
|
List these in the plan under `Files the run writes itself`, apart from the implementation
|
|
194
|
-
steps. They are not steps, and they
|
|
194
|
+
steps. They are not steps, and they need no approval, except a file that is also under
|
|
195
|
+
`Uncommitted files`: list that one under `Changes that need your approval` too.
|
|
195
196
|
|
|
196
197
|
- Each `planChanges` entry from `onboard credentials`: the project key in the env file
|
|
197
198
|
`environmentPath` names, the project record, and, where it lists `ignore-entries`, the
|
|
198
|
-
lines `project select` adds to `.gitignore` so that no credential env file
|
|
199
|
-
committed.
|
|
199
|
+
lines `project select` adds to `.gitignore` so that no credential env file and no
|
|
200
|
+
`.playwright-mcp/` browser snapshot can be committed.
|
|
200
201
|
- `.copilotkit/proof/`, where the proof writes its evidence. It holds no source. The
|
|
201
202
|
developer can delete it after the run.
|
|
202
203
|
|
|
203
|
-
## Name the Skills install
|
|
204
|
-
|
|
205
|
-
List the CopilotKit Skills install under `Skills install`, as its own line:
|
|
206
|
-
`npx skills add CopilotKit/CopilotKit/skills -y`. It writes `.agents/skills/` and links it
|
|
207
|
-
into `.claude/skills/`. End the line with "say **no Skills** to skip". Where
|
|
208
|
-
`.agents/skills` already holds the CopilotKit skills, write `in place` instead, and plan no
|
|
209
|
-
install.
|
|
210
|
-
|
|
211
|
-
The Skills install is not a risky change. It adds agent-rule files only, holds no secret,
|
|
212
|
-
changes nothing the app runs, and comes out with one delete. Do not list it under
|
|
213
|
-
`Risky changes`.
|
|
214
|
-
|
|
215
204
|
## Scaffold an empty project
|
|
216
205
|
|
|
217
206
|
This section applies when the starting state is `empty` and a step runs a scaffolder, such
|
|
@@ -243,7 +232,7 @@ the plan under `Uncommitted files`, one line each, with the path and one sentenc
|
|
|
243
232
|
what the step changes there and why no other file will do. Keep the step in the plan.
|
|
244
233
|
Adding a feature to an app the developer already built is the case this exists for: the
|
|
245
234
|
option lives in a file they wrote, and on an app whose work was never committed that file
|
|
246
|
-
has uncommitted changes. Each of those edits
|
|
235
|
+
has uncommitted changes. Each of those edits needs approval, so the developer's answer
|
|
247
236
|
to the plan is their consent. The CLI records none.
|
|
248
237
|
|
|
249
238
|
Installing or upgrading a package changes the manifest that lists it, such as `package.json`
|
|
@@ -288,15 +277,16 @@ Do not add compiler strictness the project did not have. Nothing later in the ru
|
|
|
288
277
|
allowed to weaken type safety, so a stricter gate named here is one the run cannot get
|
|
289
278
|
back out of.
|
|
290
279
|
|
|
291
|
-
## Name the
|
|
280
|
+
## Name the changes that need approval
|
|
292
281
|
|
|
293
282
|
The run shows the plan to the developer and goes on to build it without waiting. It stops
|
|
294
|
-
for an answer only when the plan makes a
|
|
295
|
-
`onboard restore` undoes any other change the backup holds.
|
|
283
|
+
for an answer only when the plan makes a change that needs approval. `onboard start` took a
|
|
284
|
+
backup, so `onboard restore` undoes any other change the backup holds.
|
|
296
285
|
|
|
297
|
-
List each
|
|
298
|
-
step does to it, and why the plan needs it. Write `none` when there is
|
|
299
|
-
step makes a
|
|
286
|
+
List each change that needs approval under `Changes that need your approval`, one line each: the path
|
|
287
|
+
or package, what the step does to it, and why the plan needs it. Write `none` when there is
|
|
288
|
+
none. List every other change under `What I will change`. A step makes a change that needs
|
|
289
|
+
approval when it:
|
|
300
290
|
|
|
301
291
|
- upgrades a dependency by a major version: a move whose `to` has a different major version
|
|
302
292
|
than `from`, or a move of an exact pin
|
|
@@ -306,26 +296,34 @@ step makes a risky change when it:
|
|
|
306
296
|
- changes a file that has uncommitted changes, from `Uncommitted files`
|
|
307
297
|
- untracks a file or changes `.gitignore`, other than the lines under
|
|
308
298
|
`Files the run writes itself`
|
|
309
|
-
- writes to an env file the app already uses, other than the key line the
|
|
310
|
-
|
|
299
|
+
- writes to an env file the app already uses, other than the key line for the key file
|
|
300
|
+
the setup answers recorded
|
|
311
301
|
- changes the existing agent's behavior, as `What the existing agent's behavior is`
|
|
312
302
|
defines it
|
|
313
|
-
- changes more than 10 files in all
|
|
314
|
-
|
|
303
|
+
- changes more than 10 files in all. Count only the files the plan's own steps change. Do
|
|
304
|
+
not count a file the framework's own tooling writes by itself, such as the `AGENTS.md`
|
|
305
|
+
and `CLAUDE.md` that `next dev` writes, or a file under `Files the run writes itself`.
|
|
306
|
+
The limit is the same one the backup tripwire sets for deleted files
|
|
315
307
|
- writes a file outside the project directory
|
|
316
308
|
- changes the version of any CopilotKit dependency: an `@copilotkit/*` package or the
|
|
317
309
|
`copilotkit` Python package, by any amount
|
|
318
310
|
|
|
319
|
-
|
|
311
|
+
A change the developer approved in the setup message needs no approval in the plan. The setup
|
|
312
|
+
answers the main coding agent gives you show it: `envFile` is `approved` for the untrack or
|
|
313
|
+
the `.gitignore` line that the env-file line named, and `alternative` for the key in the other
|
|
314
|
+
env file. `uncommittedWrites: approved` allows the connection's writes to the env file and
|
|
315
|
+
`.copilotkit/project.json`. Name each one under the notes instead.
|
|
316
|
+
|
|
317
|
+
The plan also needs approval when the backup does not hold every file: `backup.status` is
|
|
320
318
|
`partial` or `failed` in the `backup` result the main coding agent gives you. Name it as a
|
|
321
319
|
line of its own. For `partial`, name each path in `backup.notHeld` with its `why`, which
|
|
322
320
|
names the limit for a size skip, and the count in `backup.moreNotHeld` if any. For
|
|
323
321
|
`failed`, name the cause in `backup.detail`, and that `onboard restore` puts nothing back.
|
|
324
|
-
A step that changes one of those paths cannot be undone. `pending`
|
|
322
|
+
A step that changes one of those paths cannot be undone. `pending` needs no approval: the CLI
|
|
325
323
|
takes the backup when the run moves to the chosen project, or at the next step, before any
|
|
326
324
|
change. Say that in the plan.
|
|
327
325
|
|
|
328
|
-
Do not leave a
|
|
326
|
+
Do not leave a change that needs approval out of the list to keep the run moving.
|
|
329
327
|
|
|
330
328
|
Gather what you need in as few commands as possible. Combine independent reads into one
|
|
331
329
|
command rather than running them one at a time. Split a command only when its result decides
|
|
@@ -32,7 +32,7 @@ listen on a port, and cannot connect to localhost. It does not always fail: a pa
|
|
|
32
32
|
install can wait with no output until you stop it. So request escalation on the first run,
|
|
33
33
|
not after a hang or an error, for these commands:
|
|
34
34
|
|
|
35
|
-
- the dependency install
|
|
35
|
+
- the dependency install,
|
|
36
36
|
- the commands that start the app and agent servers,
|
|
37
37
|
- HTTP requests to those servers.
|
|
38
38
|
|
|
@@ -100,6 +100,13 @@ Wiring is not behavior. Add the CopilotKit SDK dependency, wrap the agent in the
|
|
|
100
100
|
middleware, mount the runtime, connect AG-UI, and render what the agent already returns.
|
|
101
101
|
Those are the parts this run adds.
|
|
102
102
|
|
|
103
|
+
Every install in this step follows one rule for a version the registry does not serve
|
|
104
|
+
yet. npm reports it as `ETARGET`, pnpm as `ERR_PNPM_NO_MATCHING_VERSION`, Yarn as
|
|
105
|
+
`Couldn't find any versions` or `No candidates found`, and Bun as `No version matching`.
|
|
106
|
+
A package published minutes earlier can name a dependency whose publish has not reached
|
|
107
|
+
the registry. Wait 30 seconds and run the same install once more. If it fails again,
|
|
108
|
+
report the first error.
|
|
109
|
+
|
|
103
110
|
A run whose `environmentPath` ends in `.env.local` hosts the CopilotKit runtime in that
|
|
104
111
|
Next.js app, never in a separate server: no other process reads the key from that file.
|
|
105
112
|
|
|
@@ -126,10 +133,10 @@ new one. After wiring, run the recorded baseline checks and report any regressio
|
|
|
126
133
|
|
|
127
134
|
Where the plan names a CopilotKit dependency upgrade, apply its moves before you wire
|
|
128
135
|
Intelligence: declare each exact version in its app's manifest, then install with the
|
|
129
|
-
project's package manager. Then check the installed tree:
|
|
136
|
+
project's package manager, under the install rule above. Then check the installed tree:
|
|
130
137
|
|
|
131
138
|
```text
|
|
132
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
139
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --check --json
|
|
133
140
|
```
|
|
134
141
|
|
|
135
142
|
`single` means every direct dependency resolved to one version. `duplicates` names each
|
|
@@ -144,7 +151,7 @@ If the check finds duplicates or the baseline regresses, put the manifests and l
|
|
|
144
151
|
back, leave Intelligence unwired, and report what failed:
|
|
145
152
|
|
|
146
153
|
```text
|
|
147
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
154
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --revert --json
|
|
148
155
|
```
|
|
149
156
|
|
|
150
157
|
Then end your turn. Never add an `overrides`, `resolutions`, or `pnpm.overrides` block to
|
|
@@ -180,7 +187,7 @@ Where the plan names a Learning Container id, check that the container exists fi
|
|
|
180
187
|
this from the target app directory, before you write any selector:
|
|
181
188
|
|
|
182
189
|
```text
|
|
183
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
190
|
+
npx --prefer-offline --yes copilotkit@4.28.0 learning containers get <id> --json
|
|
184
191
|
```
|
|
185
192
|
|
|
186
193
|
`"status": "success"` means the container exists. An `error.code` of
|
|
@@ -202,36 +209,6 @@ constructor for it, and never write an id the plan does not name: a selector poi
|
|
|
202
209
|
id the platform does not hold answers `LEARNING_CONTAINER_NOT_FOUND` on every thread create.
|
|
203
210
|
Where the plan names no container, write no selector.
|
|
204
211
|
|
|
205
|
-
## Install the CopilotKit Skills
|
|
206
|
-
|
|
207
|
-
The plan names the Skills install on its own line, and the build does not wait for an
|
|
208
|
-
answer on it. Install them in a whole-plan implementation. Skip it only when the developer
|
|
209
|
-
said no, which the main coding agent passes in the handoff. A repair handoff never installs
|
|
210
|
-
them.
|
|
211
|
-
|
|
212
|
-
Where `.agents/skills` already holds the CopilotKit skills, do not install them again.
|
|
213
|
-
Report that they are in place.
|
|
214
|
-
|
|
215
|
-
Where the developer said no, do not install them, and do not call that a change from the
|
|
216
|
-
plan. Report in the Validation section that the developer declined them.
|
|
217
|
-
|
|
218
|
-
Install them at the same time as the project's dependencies, not after validation: start both installs together. Where this run installs no dependencies,
|
|
219
|
-
install them before you run the validation list. Tell the developer what the skills
|
|
220
|
-
install writes into this project before you run it: a `.agents/skills` directory holding
|
|
221
|
-
one folder per CopilotKit skill, linked into `.claude/skills`. Both sit in the working tree,
|
|
222
|
-
so the install shows up in `git status` and can land in a commit. You cannot know whether
|
|
223
|
-
this project keeps those directories in version control, so name them before you write them
|
|
224
|
-
rather than after.
|
|
225
|
-
|
|
226
|
-
Then run `npx skills add CopilotKit/CopilotKit/skills -y` in the target app directory.
|
|
227
|
-
|
|
228
|
-
The plan names both directories under `Skills install`, so they are not departures. Name
|
|
229
|
-
them under Files changed. Do not register an MCP server: the Skills read the CopilotKit
|
|
230
|
-
documentation without one.
|
|
231
|
-
|
|
232
|
-
Check whether the install succeeded, and record the command result in the Validation
|
|
233
|
-
section. A failed install does not change your status. Report it and continue.
|
|
234
|
-
|
|
235
212
|
## Report the result
|
|
236
213
|
|
|
237
214
|
Report the runtime constructor you wrote. Name whether it passes `intelligence` or
|
|
@@ -8,7 +8,7 @@ Your handoff holds the JSON of this command, which the main coding agent ran fro
|
|
|
8
8
|
target project directory:
|
|
9
9
|
|
|
10
10
|
```text
|
|
11
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
11
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard inspect --json
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Read that JSON. Do not run the command again. If the handoff holds no inspection JSON, run
|
|
@@ -35,7 +35,7 @@ Prove the live runtime in this order:
|
|
|
35
35
|
4. Confirm from project files that the runtime constructor passes a `runner` option rather
|
|
36
36
|
than an `intelligence` option. A package, import, project file, or key is not use proof.
|
|
37
37
|
5. Run
|
|
38
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
38
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
|
|
39
39
|
with the runtime URL or auth header options that this project needs. Add
|
|
40
40
|
`--runtime-url <url>` when the report names a runtime URL the dev server does not
|
|
41
41
|
serve. Require exit zero
|
|
@@ -30,7 +30,7 @@ the steps name: no SDK calls, AG-UI requests, or thread reads of your own to con
|
|
|
30
30
|
journey's frontend, and run only that one.
|
|
31
31
|
|
|
32
32
|
A run that cloned a starter is the one exception. When the main coding agent tells you
|
|
33
|
-
that this run cloned a starter, run Step 1 and the proof checks, then go to Step
|
|
33
|
+
that this run cloned a starter, run Step 1 and the proof checks, then go to Step 9. Skip Steps 5a through 8, open no browser
|
|
34
34
|
or device, and report `skipped-cloned-starter` as the surface-check outcome.
|
|
35
35
|
|
|
36
36
|
Where this is a second attempt after a repair, run every step from the proof checks through
|
|
@@ -76,7 +76,7 @@ about the failure it was spawned to clear.
|
|
|
76
76
|
Run this from the target app directory:
|
|
77
77
|
|
|
78
78
|
```text
|
|
79
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
79
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard proof-check --json
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
It starts each app's `dev` script unless a server from that app already listens, and
|
|
@@ -132,7 +132,7 @@ Otherwise sort `firstFailure`, and run the command again after each repair:
|
|
|
132
132
|
asking. Read the port from the log, not from the plan, and record it:
|
|
133
133
|
|
|
134
134
|
```text
|
|
135
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
135
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard runtime-url --url <runtime-url>
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
`<runtime-url>` is the project's runtime URL, or the plan's, with its port replaced by the
|
|
@@ -177,6 +177,13 @@ Otherwise sort `firstFailure`, and run the command again after each repair:
|
|
|
177
177
|
|
|
178
178
|
Where the handoff carries a thread id from the developer, skip the numbered steps above
|
|
179
179
|
and do not open the app for them. Run the checks with `--thread <id>` at once.
|
|
180
|
+
- `round-trip:page_context_reaches_agent` with a detail that says the starter does not pass
|
|
181
|
+
page context yet: it is marked `advisory`, and the checks pass. This framework's starter
|
|
182
|
+
and its AG-UI adapter keep the page's context off the model's prompt. That is a known gap,
|
|
183
|
+
not a fault of this run. Do not repair the adapter. Still run Step 5a where it applies. If
|
|
184
|
+
its context comparison fails, record that under the same warning rather than as a failed
|
|
185
|
+
step. Return the warning with the proof result. The rules below are for every other
|
|
186
|
+
page-context result.
|
|
180
187
|
- `round-trip:page_context_reaches_agent` at `fail`: the agent answered the plain request
|
|
181
188
|
and recorded nothing for the request that carried context. Return it with its evidence as
|
|
182
189
|
a failed proof step. At `undetermined` and marked `advisory`, the agent answered without
|
|
@@ -212,10 +219,11 @@ for the same reason. Skip both steps and send no run. Record that they sent no r
|
|
|
212
219
|
reason, and prove the page's data and the component in the browser instead, at Steps 6
|
|
213
220
|
and 7.
|
|
214
221
|
|
|
215
|
-
`verify --round-trip` asks a question that needs no context.
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
222
|
+
`verify --round-trip` asks a question that needs no context. It then sends one token as
|
|
223
|
+
context and reports `page_context_reaches_agent`, also where the frontend's files call no
|
|
224
|
+
context hook, because the CopilotKit frontend sends context entries of its own. Without a
|
|
225
|
+
context hook, a `pass` proves only that a run with context answers. Where the files call a
|
|
226
|
+
context hook, a `pass` proves that the agent's model sees context at all. An agent scoped to its own task answers without the token, so that check is often
|
|
219
227
|
`undetermined`, and this step is then the only proof of the path. A `pass` does not prove
|
|
220
228
|
that the page's own entries arrive in the shape the agent reads. Nothing else before the
|
|
221
229
|
browser reads that path, so a page whose data the agent never sees answers fluently over a
|
|
@@ -228,9 +236,15 @@ the agent sees the request the browser sends rather than a thinner one. Read the
|
|
|
228
236
|
files the main coding agent named in the handoff, and search the project only for a file it
|
|
229
237
|
did not name. Do not search the dependencies for the shape of an entry: the page's own call
|
|
230
238
|
shows it. Send the same run
|
|
231
|
-
body twice
|
|
239
|
+
body twice: once carrying the context entries the page
|
|
232
240
|
publishes, and once carrying the same entries with one value changed. Use the step 1
|
|
233
|
-
request both times.
|
|
241
|
+
request both times. Write each body to a JSON file in `.copilotkit/proof/`, and send it with
|
|
242
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --send-run <file> --agent <agent id> --json`.
|
|
243
|
+
The command sends the body to `<runtime>/agent/<agent id>/run` and reads the events the run
|
|
244
|
+
streams. It writes them to `<file name>.events.jsonl` beside the body, and prints that path
|
|
245
|
+
with the answer text and the tool calls. Do not send a run with `curl` and read its events
|
|
246
|
+
with a client of your own. A managed runtime streams the events over the gateway, behind a
|
|
247
|
+
join token that expires 30 seconds after the run starts. Name both capture paths.
|
|
234
248
|
|
|
235
249
|
For the changed run, pick one record the step 1 request matches. Add a marker to a text
|
|
236
250
|
field that the answer repeats and that the step 1 request does not quote, such as its title
|
|
@@ -243,7 +257,8 @@ nothing to copy invents records. That failure belongs to the probe, not to the i
|
|
|
243
257
|
|
|
244
258
|
Read each answer against the context it carried. The run carrying the page's context has to
|
|
245
259
|
name the project's own records and no others. The run carrying the changed entry has to
|
|
246
|
-
carry the marker
|
|
260
|
+
carry the marker's 8 hex characters anywhere in it, in any case and with any punctuation
|
|
261
|
+
around them, and name no record its context did not hold. The model can reword the rest. A
|
|
247
262
|
model that the context never reaches cannot produce the marker. A model that invents a
|
|
248
263
|
different record on every call cannot produce it either, so two answers that only differ
|
|
249
264
|
prove nothing. An answer without the marker means the page's data is not reaching the model.
|
|
@@ -270,8 +285,8 @@ Read the registrations this project's frontend declares, by name. Step 5a alread
|
|
|
270
285
|
step 1 request with those declarations, so read the tool calls out of the events Step 5a
|
|
271
286
|
captured for the run carrying the page's unchanged context. Do not send that request again.
|
|
272
287
|
Where Step 5a sent no run because the proof checks needed `--thread`, send no run here
|
|
273
|
-
either. Where Step 5a sent no run, because this journey shares no page data, send the step 1 request
|
|
274
|
-
|
|
288
|
+
either. Where Step 5a sent no run, because this journey shares no page data, send the step 1 request,
|
|
289
|
+
carrying those declarations, with `verify --send-run` the way Step 5a does, and read the tool calls out
|
|
275
290
|
of that run's own events. Where the Step 5a run carried none of those declarations, send
|
|
276
291
|
that run once more with them, and read that run instead. Never report a wiring gap from a run
|
|
277
292
|
that carried no declarations: the agent has no component to call in it. The agent has to call one of the names the frontend registered. An
|
|
@@ -302,7 +317,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
|
|
|
302
317
|
same request the baseline recorded, require the same kind of user-visible result the
|
|
303
318
|
baseline produced, and require that the thread for that request is listed in the drawer.
|
|
304
319
|
Where this journey's frontend framework ships no threads drawer -- React Native --, prove
|
|
305
|
-
that thread with `npx --prefer-offline --yes copilotkit@4.
|
|
320
|
+
that thread with `npx --prefer-offline --yes copilotkit@4.28.0 verify --round-trip`, which reads the
|
|
306
321
|
answer back off the thread and needs no browser. Where the proof checks needed `--thread`,
|
|
307
322
|
prove the thread for this request with `verify --thread <id>` instead. Record which of the
|
|
308
323
|
two you proved.
|
|
@@ -332,7 +347,7 @@ limit can be ten minutes. You cannot interrupt a call while it runs, so the limi
|
|
|
332
347
|
what you do after one. If a browser call took longer than 60 seconds to return, the browser
|
|
333
348
|
control is unresponsive. Do not call the browser again in this attempt. A second call to a
|
|
334
349
|
hung tool waits as long as the first one did. Run
|
|
335
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
350
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --frontend-url <the frontendUrl the proof checks resolved> --json` once,
|
|
336
351
|
and record the `frontend_assets_served` result. Report the outcome `failed` with the cause
|
|
337
352
|
`browser-control-unresponsive`. The application is not at fault on this evidence: every
|
|
338
353
|
step before the browser proved the runtime without one, and no repair to the project can
|
|
@@ -342,7 +357,7 @@ reach the tool.
|
|
|
342
357
|
the page to finish loading. Do not retype the host, and do not substitute a URL a tool
|
|
343
358
|
offers you by default. Where the page loads but its styling is missing or the chat
|
|
344
359
|
control is dead, run
|
|
345
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
360
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --frontend-url <the url you opened> --json`
|
|
346
361
|
before you diagnose anything else. A dev server can serve its page and refuse every
|
|
347
362
|
static chunk behind it, and on screen that is indistinguishable from a broken
|
|
348
363
|
integration. The `frontend_assets_served` check tells the two apart.
|
|
@@ -356,7 +371,10 @@ reach the tool.
|
|
|
356
371
|
turn is finished when the streamed text stops growing and the generative UI component
|
|
357
372
|
has rendered. For a recorded `both-oss` starting state, this step has no component, and
|
|
358
373
|
the turn is finished when the streamed text stops growing.
|
|
359
|
-
6. Take one screenshot of the finished turn and record
|
|
374
|
+
6. Take one screenshot of the finished turn, and record its path. Where the browser tool
|
|
375
|
+
takes a path, save it in `.copilotkit/proof/`. A tool that writes into its own output
|
|
376
|
+
folder, such as `.playwright-mcp/`, can keep it there. Never save it among the project's
|
|
377
|
+
own files.
|
|
360
378
|
7. Read the browser console a second time, and record every error that step 3 did not
|
|
361
379
|
already list. Those belong to the request.
|
|
362
380
|
8. Read the network requests. Record every request the page made to the runtime endpoint
|
|
@@ -446,42 +464,7 @@ it, rather than reading the compatibility field as a pass.
|
|
|
446
464
|
|
|
447
465
|
For every other starting state, record Step 8 as not applicable.
|
|
448
466
|
|
|
449
|
-
|
|
450
|
-
Step 9 can write only the tool files named by its guide or by this step.
|
|
451
|
-
|
|
452
|
-
## Step 9 -- Set up the continued-development tools
|
|
453
|
-
|
|
454
|
-
Fetch the continued-development guide from the main coding agent with the proof
|
|
455
|
-
documentation. Try the continued-development tools after the application passes proof.
|
|
456
|
-
|
|
457
|
-
The implementation subagent installs the Skills unless the developer declined them. Check that
|
|
458
|
-
it did. Look for the `.agents/skills` directory and the `.claude/skills` links in this
|
|
459
|
-
project, and read the Skills result the implementation reported. Do not install them again.
|
|
460
|
-
|
|
461
|
-
Where the developer declined them, do not install them, and do not call that a change from
|
|
462
|
-
the plan. Report the command for them to run later instead:
|
|
463
|
-
`npx skills add CopilotKit/CopilotKit/skills -y`.
|
|
464
|
-
|
|
465
|
-
Where the developer did not decline them and they are missing, install them as a recovery step.
|
|
466
|
-
Tell the developer what the skills install writes into this project before you run it: a
|
|
467
|
-
`.agents/skills` directory holding one folder per CopilotKit skill, linked into
|
|
468
|
-
`.claude/skills`. Both sit in the working tree, so the install shows up in `git status`
|
|
469
|
-
and can land in a commit. You cannot know whether this project keeps those directories in
|
|
470
|
-
version control, so name them before you write them rather than after. Then run
|
|
471
|
-
`npx skills add CopilotKit/CopilotKit/skills -y` to install the
|
|
472
|
-
project-scoped CopilotKit Skills.
|
|
473
|
-
<!-- sandboxed-harness -->
|
|
474
|
-
It needs the network, so in a sandbox request escalation for it on its first run.
|
|
475
|
-
<!-- /sandboxed-harness -->
|
|
476
|
-
Record that the proof ran the install because the implementation did not.
|
|
477
|
-
|
|
478
|
-
Do not register an MCP server: the Skills read the CopilotKit documentation without one.
|
|
479
|
-
|
|
480
|
-
Check whether the install succeeded and record what you found. Record the command result.
|
|
481
|
-
Report the Skills result separately from the proof result. A tool error does not change the
|
|
482
|
-
proof result: this journey proved or it did not, whatever the install did.
|
|
483
|
-
|
|
484
|
-
## Step 10 -- Return the result
|
|
467
|
+
## Step 9 -- Return the result
|
|
485
468
|
|
|
486
469
|
Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
|
|
487
470
|
Use `Status: passed` when the proof attempt completed with `performed`,
|
|
@@ -36,17 +36,17 @@ Before you show the best-effort plan, require this complete packet:
|
|
|
36
36
|
Before you end your turn to wait for the developer, report the pause:
|
|
37
37
|
|
|
38
38
|
```text
|
|
39
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
39
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
After the developer approves the best-effort plan, run
|
|
43
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
43
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard read fallback/best-effort`.
|
|
44
44
|
|
|
45
45
|
Send one short report. The friction command follows the telemetry setting the developer
|
|
46
46
|
already chose, so it needs no separate question.
|
|
47
47
|
|
|
48
48
|
```text
|
|
49
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
49
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard friction --phase stop --category <slug> --message "<sentences>"
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
`--message` takes one or two sentences: the step you stopped at and what stopped it.
|
package/package.json
CHANGED
package/release/release-tool.js
CHANGED
|
@@ -14984,7 +14984,7 @@ init_define_CLI_LOCAL_EVALUATION_SUPPORT();
|
|
|
14984
14984
|
|
|
14985
14985
|
// apps/cli/src/config.ts
|
|
14986
14986
|
function getTemplateRef() {
|
|
14987
|
-
return true ? "
|
|
14987
|
+
return true ? "c616389550105d5a96d74501f77c6921aa79ecee" : "main";
|
|
14988
14988
|
}
|
|
14989
14989
|
|
|
14990
14990
|
// apps/cli/src/services/agentcore-config.ts
|
|
@@ -15182,6 +15182,13 @@ var TELEMETRY_ERROR_CODES = {
|
|
|
15182
15182
|
* tell "the caller guessed a slug" from a malformed request.
|
|
15183
15183
|
*/
|
|
15184
15184
|
PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
|
|
15185
|
+
/**
|
|
15186
|
+
* `init --create` named a project the active organization already has.
|
|
15187
|
+
* Distinct from {@link TELEMETRY_ERROR_CODES.PROJECT_NOT_FOUND}, which it was
|
|
15188
|
+
* tagged as, so the dashboard counted a taken name as a missing project
|
|
15189
|
+
* (PE-784).
|
|
15190
|
+
*/
|
|
15191
|
+
PROJECT_NAME_TAKEN: "PROJECT_NAME_TAKEN",
|
|
15185
15192
|
/**
|
|
15186
15193
|
* `project select` persisted the record and the key-provisioning call did
|
|
15187
15194
|
* not succeed. Buckets as `network` because that is what it almost always
|