copilotkit 4.26.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 +418 -40
- package/cli-build-info.json +7 -7
- package/index.js +15343 -9085
- package/onboarding/index.json +3 -2
- package/onboarding/prompts/authenticate/start.md +48 -56
- package/onboarding/prompts/conversion/plan.md +3 -3
- package/onboarding/prompts/credentials/finalize-plan.md +42 -29
- package/onboarding/prompts/credentials/plan.md +50 -34
- package/onboarding/prompts/credentials/settle-credentials.md +38 -14
- package/onboarding/prompts/credentials/write-plan.md +122 -47
- package/onboarding/prompts/deployment/choose-local.md +17 -20
- package/onboarding/prompts/deployment/local-evaluation.md +45 -21
- package/onboarding/prompts/fallback/best-effort.md +14 -16
- 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 +10 -8
- package/onboarding/prompts/feature/channels/implement.md +11 -8
- package/onboarding/prompts/feature/channels/plan.md +15 -7
- package/onboarding/prompts/feature/channels/proof.md +8 -7
- package/onboarding/prompts/feature/channels/start.md +11 -10
- 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 +10 -8
- package/onboarding/prompts/feature/complete.md +2 -2
- package/onboarding/prompts/feature/learning/implement.md +14 -12
- package/onboarding/prompts/feature/learning/plan.md +4 -4
- package/onboarding/prompts/feature/learning/proof.md +24 -14
- 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 +10 -8
- package/onboarding/prompts/feature/realtime-sync/implement.md +7 -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 +8 -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 +10 -8
- package/onboarding/prompts/framework/ag2.md +20 -5
- package/onboarding/prompts/framework/agno.md +25 -9
- package/onboarding/prompts/framework/built-in.md +21 -6
- package/onboarding/prompts/framework/claude-sdk-python.md +11 -5
- package/onboarding/prompts/framework/claude-sdk-typescript.md +13 -6
- package/onboarding/prompts/framework/crewai-flows.md +24 -10
- package/onboarding/prompts/framework/custom-ag-ui.md +62 -28
- package/onboarding/prompts/framework/deep-agents.md +26 -9
- package/onboarding/prompts/framework/google-adk.md +18 -5
- package/onboarding/prompts/framework/langgraph-fastapi.md +20 -5
- package/onboarding/prompts/framework/langgraph-python.md +20 -5
- package/onboarding/prompts/framework/langgraph-typescript.md +27 -7
- package/onboarding/prompts/framework/llamaindex.md +24 -8
- package/onboarding/prompts/framework/mastra.md +21 -8
- package/onboarding/prompts/framework/ms-agent-dotnet.md +24 -6
- package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +24 -5
- package/onboarding/prompts/framework/ms-agent-python.md +21 -5
- package/onboarding/prompts/framework/pydantic-ai.md +20 -5
- package/onboarding/prompts/framework/strands-python.md +27 -12
- package/onboarding/prompts/framework/strands-typescript.md +27 -12
- package/onboarding/prompts/frontend/angular.md +4 -4
- package/onboarding/prompts/frontend/nextjs.md +4 -4
- package/onboarding/prompts/frontend/plan.md +21 -13
- 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 +27 -20
- package/onboarding/prompts/proof/complete.md +9 -7
- package/onboarding/prompts/proof/oss-baseline.md +9 -6
- 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 +54 -202
- package/onboarding/prompts/starter/clone.md +141 -57
- package/onboarding/prompts/stopped/run-failed.md +5 -3
- package/onboarding/prompts/subagent/create-plan.md +73 -22
- package/onboarding/prompts/subagent/implement-and-validate.md +27 -34
- package/onboarding/prompts/subagent/inspect-repository.md +3 -2
- package/onboarding/prompts/subagent/prove-oss-baseline.md +10 -5
- package/onboarding/prompts/subagent/prove-round-trip.md +46 -54
- package/onboarding/prompts/unsupported/no-validated-path.md +5 -4
- package/package.json +1 -1
- package/release/release-tool.js +19 -2
|
@@ -26,6 +26,22 @@ bring them into the run root before you report, and name them under Files change
|
|
|
26
26
|
completion step verifies that the changed files exist in this project, so work left in
|
|
27
27
|
another tree ends the run with nothing in the developer's hands.
|
|
28
28
|
|
|
29
|
+
<!-- sandboxed-harness -->
|
|
30
|
+
If your harness runs commands in a sandbox, a sandboxed command has no network, cannot
|
|
31
|
+
listen on a port, and cannot connect to localhost. It does not always fail: a package
|
|
32
|
+
install can wait with no output until you stop it. So request escalation on the first run,
|
|
33
|
+
not after a hang or an error, for these commands:
|
|
34
|
+
|
|
35
|
+
- the dependency install,
|
|
36
|
+
- the commands that start the app and agent servers,
|
|
37
|
+
- HTTP requests to those servers.
|
|
38
|
+
|
|
39
|
+
Where the harness takes a prefix rule, request one for each command, all at once.
|
|
40
|
+
<!-- /sandboxed-harness -->
|
|
41
|
+
|
|
42
|
+
If a command hangs with no output, or fails because it has no network or cannot listen on a
|
|
43
|
+
port, a sandbox probably blocked it. Stop it and run it again with escalation.
|
|
44
|
+
|
|
29
45
|
Before validation, inspect the current changed and untracked paths. Leave out the paths that
|
|
30
46
|
were already changed or untracked when the run started and that this run did not edit.
|
|
31
47
|
Compare every other changed path with the paths the plan named. If a changed path
|
|
@@ -84,6 +100,13 @@ Wiring is not behavior. Add the CopilotKit SDK dependency, wrap the agent in the
|
|
|
84
100
|
middleware, mount the runtime, connect AG-UI, and render what the agent already returns.
|
|
85
101
|
Those are the parts this run adds.
|
|
86
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
|
+
|
|
87
110
|
A run whose `environmentPath` ends in `.env.local` hosts the CopilotKit runtime in that
|
|
88
111
|
Next.js app, never in a separate server: no other process reads the key from that file.
|
|
89
112
|
|
|
@@ -110,10 +133,10 @@ new one. After wiring, run the recorded baseline checks and report any regressio
|
|
|
110
133
|
|
|
111
134
|
Where the plan names a CopilotKit dependency upgrade, apply its moves before you wire
|
|
112
135
|
Intelligence: declare each exact version in its app's manifest, then install with the
|
|
113
|
-
project's package manager. Then check the installed tree:
|
|
136
|
+
project's package manager, under the install rule above. Then check the installed tree:
|
|
114
137
|
|
|
115
138
|
```text
|
|
116
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
139
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --check --json
|
|
117
140
|
```
|
|
118
141
|
|
|
119
142
|
`single` means every direct dependency resolved to one version. `duplicates` names each
|
|
@@ -128,7 +151,7 @@ If the check finds duplicates or the baseline regresses, put the manifests and l
|
|
|
128
151
|
back, leave Intelligence unwired, and report what failed:
|
|
129
152
|
|
|
130
153
|
```text
|
|
131
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
154
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --revert --json
|
|
132
155
|
```
|
|
133
156
|
|
|
134
157
|
Then end your turn. Never add an `overrides`, `resolutions`, or `pnpm.overrides` block to
|
|
@@ -164,7 +187,7 @@ Where the plan names a Learning Container id, check that the container exists fi
|
|
|
164
187
|
this from the target app directory, before you write any selector:
|
|
165
188
|
|
|
166
189
|
```text
|
|
167
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
190
|
+
npx --prefer-offline --yes copilotkit@4.28.0 learning containers get <id> --json
|
|
168
191
|
```
|
|
169
192
|
|
|
170
193
|
`"status": "success"` means the container exists. An `error.code` of
|
|
@@ -186,36 +209,6 @@ constructor for it, and never write an id the plan does not name: a selector poi
|
|
|
186
209
|
id the platform does not hold answers `LEARNING_CONTAINER_NOT_FOUND` on every thread create.
|
|
187
210
|
Where the plan names no container, write no selector.
|
|
188
211
|
|
|
189
|
-
## Install the CopilotKit Skills
|
|
190
|
-
|
|
191
|
-
The main coding agent gives you the developer's answer on the Skills install. Where the
|
|
192
|
-
whole-plan implementation handoff carries no answer, read the approved plan. Approving the
|
|
193
|
-
plan without a word on the Skills approves the install. A repair handoff that carries no
|
|
194
|
-
Skills answer never installs them.
|
|
195
|
-
|
|
196
|
-
Where `.agents/skills` already holds the CopilotKit skills, do not install them again.
|
|
197
|
-
Report that they are in place.
|
|
198
|
-
|
|
199
|
-
Install the Skills only when the developer approved them. Where the developer declined
|
|
200
|
-
them, do not install them, and do not call that a change from the plan. Report in the
|
|
201
|
-
Validation section that the developer declined them.
|
|
202
|
-
|
|
203
|
-
Install them after you run the full validation list. Tell the developer what the skills
|
|
204
|
-
install writes into this project before you run it: a `.agents/skills` directory holding
|
|
205
|
-
one folder per CopilotKit skill, linked into `.claude/skills`. Both sit in the working tree,
|
|
206
|
-
so the install shows up in `git status` and can land in a commit. You cannot know whether
|
|
207
|
-
this project keeps those directories in version control, so name them before you write them
|
|
208
|
-
rather than after.
|
|
209
|
-
|
|
210
|
-
Then run `npx skills add CopilotKit/CopilotKit/skills -y` in the target app directory.
|
|
211
|
-
|
|
212
|
-
The plan names both directories under `Files the run writes itself`, so they are not
|
|
213
|
-
departures. Name them under Files changed. Do not register an MCP server: the Skills read
|
|
214
|
-
the CopilotKit documentation without one.
|
|
215
|
-
|
|
216
|
-
Check whether the install succeeded, and record the command result in the Validation
|
|
217
|
-
section. A failed install does not change your status. Report it and continue.
|
|
218
|
-
|
|
219
212
|
## Report the result
|
|
220
213
|
|
|
221
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
|
|
@@ -58,7 +58,8 @@ Find evidence for:
|
|
|
58
58
|
`detection` block the CLI proposed
|
|
59
59
|
- for an existing agent in no listed framework, whether it speaks AG-UI: a class that
|
|
60
60
|
extends `AbstractAgent` and implements `run`, or an endpoint that streams AG-UI events.
|
|
61
|
-
Cite the
|
|
61
|
+
If it does not, name its entry point: the function or HTTP route that runs it. Cite the
|
|
62
|
+
file
|
|
62
63
|
- current CopilotKit integration and configuration
|
|
63
64
|
- authentication boundaries
|
|
64
65
|
- initial changed and untracked paths, without file contents
|
|
@@ -13,12 +13,15 @@ instance of next dev running?`. A free port does not help. If a `next dev` proce
|
|
|
13
13
|
runs from this app, reuse that server. Prove against its port. If a start still fails with
|
|
14
14
|
that message, name the process that holds the lock. Give its PID and working directory.
|
|
15
15
|
|
|
16
|
+
<!-- sandboxed-harness -->
|
|
16
17
|
If your harness runs commands in a sandbox, a sandboxed command cannot listen on a port or
|
|
17
18
|
connect to localhost. Before the first server start, request escalation with a prefix rule
|
|
18
19
|
for the project's own dev script. Before the first request to a local server, request
|
|
19
|
-
escalation with a prefix rule for `curl`.
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
escalation with a prefix rule for `curl`.
|
|
21
|
+
<!-- /sandboxed-harness -->
|
|
22
|
+
If a local request fails after 0 ms (`Failed to connect ... after 0 ms`) while the port
|
|
23
|
+
shows a listener, a sandbox blocked it. Run it again with escalation, and do not record a
|
|
24
|
+
failed predicate or step.
|
|
22
25
|
|
|
23
26
|
Prove the live runtime in this order:
|
|
24
27
|
|
|
@@ -32,8 +35,10 @@ Prove the live runtime in this order:
|
|
|
32
35
|
4. Confirm from project files that the runtime constructor passes a `runner` option rather
|
|
33
36
|
than an `intelligence` option. A package, import, project file, or key is not use proof.
|
|
34
37
|
5. Run
|
|
35
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
36
|
-
with the runtime URL or auth header options that this project needs.
|
|
38
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
|
|
39
|
+
with the runtime URL or auth header options that this project needs. Add
|
|
40
|
+
`--runtime-url <url>` when the report names a runtime URL the dev server does not
|
|
41
|
+
serve. Require exit zero
|
|
37
42
|
and the JSON `ok` field to be `true`.
|
|
38
43
|
6. Drive one real request through the existing frontend, CopilotKit runtime, and expected
|
|
39
44
|
agent. Require the existing user-visible result.
|
|
@@ -25,11 +25,12 @@ render, and never report a round trip proved by a prompt this run rewrote.
|
|
|
25
25
|
|
|
26
26
|
Run the steps below in the order they appear. They are the proof. Do not design a
|
|
27
27
|
different sequence of your own, and do not drop a step because an earlier one looked
|
|
28
|
-
convincing.
|
|
28
|
+
convincing. A check that passed is the evidence for what it checks. Send only the requests
|
|
29
|
+
the steps name: no SDK calls, AG-UI requests, or thread reads of your own to confirm a pass. Step 6 has a web form and a React Native form: run the one that matches this
|
|
29
30
|
journey's frontend, and run only that one.
|
|
30
31
|
|
|
31
32
|
A run that cloned a starter is the one exception. When the main coding agent tells you
|
|
32
|
-
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
|
|
33
34
|
or device, and report `skipped-cloned-starter` as the surface-check outcome.
|
|
34
35
|
|
|
35
36
|
Where this is a second attempt after a repair, run every step from the proof checks through
|
|
@@ -75,7 +76,7 @@ about the failure it was spawned to clear.
|
|
|
75
76
|
Run this from the target app directory:
|
|
76
77
|
|
|
77
78
|
```text
|
|
78
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
79
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard proof-check --json
|
|
79
80
|
```
|
|
80
81
|
|
|
81
82
|
It starts each app's `dev` script unless a server from that app already listens, and
|
|
@@ -88,8 +89,12 @@ It starts only the apps that depend on CopilotKit. If the agent runs somewhere e
|
|
|
88
89
|
example a Python agent or a root script that starts both halves, pass the start command
|
|
89
90
|
from your Step 1 record with `--server <directory>=<command>`. A relative `<directory>` is
|
|
90
91
|
read from the directory you run the command in, so a sibling agent folder is `../agent`. It
|
|
91
|
-
does not start an app inside that directory a second time.
|
|
92
|
-
|
|
92
|
+
does not start an app inside that directory a second time.
|
|
93
|
+
<!-- sandboxed-harness -->
|
|
94
|
+
If your harness runs commands in a sandbox, request escalation for this command on its
|
|
95
|
+
first run: it starts servers and connects to localhost. Request a prefix rule for `curl`
|
|
96
|
+
in the same request, because Steps 5a and 5b send local requests too.
|
|
97
|
+
<!-- /sandboxed-harness -->
|
|
93
98
|
|
|
94
99
|
When `status` is `passed`, record `servers`, with their process IDs and stop commands, for
|
|
95
100
|
the handoff, and take the URL to open from `frontendUrl`. If `frontendUrl` is absent, the
|
|
@@ -97,8 +102,9 @@ project named no port the CLI can read: take the URL from the frontend server's
|
|
|
97
102
|
use `localhost` as its host.
|
|
98
103
|
|
|
99
104
|
A pass on `runtime-process-in-project` proves only that the process runs inside this
|
|
100
|
-
project.
|
|
101
|
-
expected agent ID from Step 1.
|
|
105
|
+
project. Read the agent IDs the runtime declares from the `verify:runtime_agents_declared`
|
|
106
|
+
detail, and compare them with the expected agent ID from Step 1. Do not send a request of
|
|
107
|
+
your own for them. If they differ, an older build still answers on the port.
|
|
102
108
|
Report it, and stop it only under the rule below. The servers keep running after
|
|
103
109
|
the proof. Then go to Step 5a. On Windows, and in a container that hides which process
|
|
104
110
|
holds a port, the CLI cannot read the port's owner. There `runtime-process-in-project` is
|
|
@@ -126,7 +132,7 @@ Otherwise sort `firstFailure`, and run the command again after each repair:
|
|
|
126
132
|
asking. Read the port from the log, not from the plan, and record it:
|
|
127
133
|
|
|
128
134
|
```text
|
|
129
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
135
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard runtime-url --url <runtime-url>
|
|
130
136
|
```
|
|
131
137
|
|
|
132
138
|
`<runtime-url>` is the project's runtime URL, or the plan's, with its port replaced by the
|
|
@@ -171,6 +177,13 @@ Otherwise sort `firstFailure`, and run the command again after each repair:
|
|
|
171
177
|
|
|
172
178
|
Where the handoff carries a thread id from the developer, skip the numbered steps above
|
|
173
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.
|
|
174
187
|
- `round-trip:page_context_reaches_agent` at `fail`: the agent answered the plain request
|
|
175
188
|
and recorded nothing for the request that carried context. Return it with its evidence as
|
|
176
189
|
a failed proof step. At `undetermined` and marked `advisory`, the agent answered without
|
|
@@ -206,10 +219,11 @@ for the same reason. Skip both steps and send no run. Record that they sent no r
|
|
|
206
219
|
reason, and prove the page's data and the component in the browser instead, at Steps 6
|
|
207
220
|
and 7.
|
|
208
221
|
|
|
209
|
-
`verify --round-trip` asks a question that needs no context.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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
|
|
213
227
|
`undetermined`, and this step is then the only proof of the path. A `pass` does not prove
|
|
214
228
|
that the page's own entries arrive in the shape the agent reads. Nothing else before the
|
|
215
229
|
browser reads that path, so a page whose data the agent never sees answers fluently over a
|
|
@@ -222,9 +236,15 @@ the agent sees the request the browser sends rather than a thinner one. Read the
|
|
|
222
236
|
files the main coding agent named in the handoff, and search the project only for a file it
|
|
223
237
|
did not name. Do not search the dependencies for the shape of an entry: the page's own call
|
|
224
238
|
shows it. Send the same run
|
|
225
|
-
body twice
|
|
239
|
+
body twice: once carrying the context entries the page
|
|
226
240
|
publishes, and once carrying the same entries with one value changed. Use the step 1
|
|
227
|
-
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.
|
|
228
248
|
|
|
229
249
|
For the changed run, pick one record the step 1 request matches. Add a marker to a text
|
|
230
250
|
field that the answer repeats and that the step 1 request does not quote, such as its title
|
|
@@ -237,7 +257,8 @@ nothing to copy invents records. That failure belongs to the probe, not to the i
|
|
|
237
257
|
|
|
238
258
|
Read each answer against the context it carried. The run carrying the page's context has to
|
|
239
259
|
name the project's own records and no others. The run carrying the changed entry has to
|
|
240
|
-
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
|
|
241
262
|
model that the context never reaches cannot produce the marker. A model that invents a
|
|
242
263
|
different record on every call cannot produce it either, so two answers that only differ
|
|
243
264
|
prove nothing. An answer without the marker means the page's data is not reaching the model.
|
|
@@ -264,8 +285,8 @@ Read the registrations this project's frontend declares, by name. Step 5a alread
|
|
|
264
285
|
step 1 request with those declarations, so read the tool calls out of the events Step 5a
|
|
265
286
|
captured for the run carrying the page's unchanged context. Do not send that request again.
|
|
266
287
|
Where Step 5a sent no run because the proof checks needed `--thread`, send no run here
|
|
267
|
-
either. Where Step 5a sent no run, because this journey shares no page data, send the step 1 request
|
|
268
|
-
|
|
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
|
|
269
290
|
of that run's own events. Where the Step 5a run carried none of those declarations, send
|
|
270
291
|
that run once more with them, and read that run instead. Never report a wiring gap from a run
|
|
271
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
|
|
@@ -296,7 +317,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
|
|
|
296
317
|
same request the baseline recorded, require the same kind of user-visible result the
|
|
297
318
|
baseline produced, and require that the thread for that request is listed in the drawer.
|
|
298
319
|
Where this journey's frontend framework ships no threads drawer -- React Native --, prove
|
|
299
|
-
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
|
|
300
321
|
answer back off the thread and needs no browser. Where the proof checks needed `--thread`,
|
|
301
322
|
prove the thread for this request with `verify --thread <id>` instead. Record which of the
|
|
302
323
|
two you proved.
|
|
@@ -326,7 +347,7 @@ limit can be ten minutes. You cannot interrupt a call while it runs, so the limi
|
|
|
326
347
|
what you do after one. If a browser call took longer than 60 seconds to return, the browser
|
|
327
348
|
control is unresponsive. Do not call the browser again in this attempt. A second call to a
|
|
328
349
|
hung tool waits as long as the first one did. Run
|
|
329
|
-
`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,
|
|
330
351
|
and record the `frontend_assets_served` result. Report the outcome `failed` with the cause
|
|
331
352
|
`browser-control-unresponsive`. The application is not at fault on this evidence: every
|
|
332
353
|
step before the browser proved the runtime without one, and no repair to the project can
|
|
@@ -336,7 +357,7 @@ reach the tool.
|
|
|
336
357
|
the page to finish loading. Do not retype the host, and do not substitute a URL a tool
|
|
337
358
|
offers you by default. Where the page loads but its styling is missing or the chat
|
|
338
359
|
control is dead, run
|
|
339
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
360
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 verify --frontend-url <the url you opened> --json`
|
|
340
361
|
before you diagnose anything else. A dev server can serve its page and refuse every
|
|
341
362
|
static chunk behind it, and on screen that is indistinguishable from a broken
|
|
342
363
|
integration. The `frontend_assets_served` check tells the two apart.
|
|
@@ -350,7 +371,10 @@ reach the tool.
|
|
|
350
371
|
turn is finished when the streamed text stops growing and the generative UI component
|
|
351
372
|
has rendered. For a recorded `both-oss` starting state, this step has no component, and
|
|
352
373
|
the turn is finished when the streamed text stops growing.
|
|
353
|
-
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.
|
|
354
378
|
7. Read the browser console a second time, and record every error that step 3 did not
|
|
355
379
|
already list. Those belong to the request.
|
|
356
380
|
8. Read the network requests. Record every request the page made to the runtime endpoint
|
|
@@ -440,39 +464,7 @@ it, rather than reading the compatibility field as a pass.
|
|
|
440
464
|
|
|
441
465
|
For every other starting state, record Step 8 as not applicable.
|
|
442
466
|
|
|
443
|
-
|
|
444
|
-
Step 9 can write only the tool files named by its guide or by this step.
|
|
445
|
-
|
|
446
|
-
## Step 9 -- Set up the continued-development tools
|
|
447
|
-
|
|
448
|
-
Fetch the continued-development guide from the main coding agent with the proof
|
|
449
|
-
documentation. Try the continued-development tools after the application passes proof.
|
|
450
|
-
|
|
451
|
-
The implementation subagent installs the Skills when the developer approved them. Check that
|
|
452
|
-
it did. Look for the `.agents/skills` directory and the `.claude/skills` links in this
|
|
453
|
-
project, and read the Skills result the implementation reported. Do not install them again.
|
|
454
|
-
|
|
455
|
-
Where the developer declined them, do not install them, and do not call that a change from
|
|
456
|
-
the plan. Report the command for them to run later instead:
|
|
457
|
-
`npx skills add CopilotKit/CopilotKit/skills -y`.
|
|
458
|
-
|
|
459
|
-
Where the developer approved them and they are missing, install them as a recovery step.
|
|
460
|
-
Tell the developer what the skills install writes into this project before you run it: a
|
|
461
|
-
`.agents/skills` directory holding one folder per CopilotKit skill, linked into
|
|
462
|
-
`.claude/skills`. Both sit in the working tree, so the install shows up in `git status`
|
|
463
|
-
and can land in a commit. You cannot know whether this project keeps those directories in
|
|
464
|
-
version control, so name them before you write them rather than after. Then run
|
|
465
|
-
`npx skills add CopilotKit/CopilotKit/skills -y` to install the
|
|
466
|
-
project-scoped CopilotKit Skills. Record that the proof ran the install because the
|
|
467
|
-
implementation did not.
|
|
468
|
-
|
|
469
|
-
Do not register an MCP server: the Skills read the CopilotKit documentation without one.
|
|
470
|
-
|
|
471
|
-
Check whether the install succeeded and record what you found. Record the command result.
|
|
472
|
-
Report the Skills result separately from the proof result. A tool error does not change the
|
|
473
|
-
proof result: this journey proved or it did not, whatever the install did.
|
|
474
|
-
|
|
475
|
-
## Step 10 -- Return the result
|
|
467
|
+
## Step 9 -- Return the result
|
|
476
468
|
|
|
477
469
|
Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
|
|
478
470
|
Use `Status: passed` when the proof attempt completed with `performed`,
|
|
@@ -10,7 +10,8 @@ If the CLI stopped this run with `## Stop: this run deleted or moved the develop
|
|
|
10
10
|
name each path and change it listed, in the words it printed. A report that says only that
|
|
11
11
|
files changed cannot be acted on: nobody reading it can tell which file moved.
|
|
12
12
|
This step prints `## The developer's files` below: relay that report as printed, with its
|
|
13
|
-
restore command.
|
|
13
|
+
restore command. When the report says the run started in an empty folder, relay that one
|
|
14
|
+
line alone: list no files and offer no restore.
|
|
14
15
|
|
|
15
16
|
Stop onboarding without making more repository changes by default.
|
|
16
17
|
|
|
@@ -35,17 +36,17 @@ Before you show the best-effort plan, require this complete packet:
|
|
|
35
36
|
Before you end your turn to wait for the developer, report the pause:
|
|
36
37
|
|
|
37
38
|
```text
|
|
38
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
39
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
|
|
39
40
|
```
|
|
40
41
|
|
|
41
42
|
After the developer approves the best-effort plan, run
|
|
42
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
43
|
+
`npx --prefer-offline --yes copilotkit@4.28.0 onboard read fallback/best-effort`.
|
|
43
44
|
|
|
44
45
|
Send one short report. The friction command follows the telemetry setting the developer
|
|
45
46
|
already chose, so it needs no separate question.
|
|
46
47
|
|
|
47
48
|
```text
|
|
48
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
49
|
+
npx --prefer-offline --yes copilotkit@4.28.0 onboard friction --phase stop --category <slug> --message "<sentences>"
|
|
49
50
|
```
|
|
50
51
|
|
|
51
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
|
@@ -14931,7 +14931,7 @@ var FLAG_DEFINITIONS = defineFlags({
|
|
|
14931
14931
|
// gateway stores browser event batches. Both surfaces read the derived
|
|
14932
14932
|
// FF_LEARNING_TRAJECTORIES override; the gateway mirrors the env default.
|
|
14933
14933
|
"learning.trajectories": {
|
|
14934
|
-
purpose: "Gates Trajectory capture, saved reads, and Trajectory sessions as a Learning source in app-api, the realtime gateway, the web app, and the Learning scheduler and runners.",
|
|
14934
|
+
purpose: "Gates Trajectory capture, saved reads, live viewing, and Trajectory sessions as a Learning source in app-api, the realtime gateway, the web app, and the Learning scheduler and runners. Live viewing also requires learning.trajectory-live-view.",
|
|
14935
14935
|
owner: "learning",
|
|
14936
14936
|
createdAt: "2026-10-01",
|
|
14937
14937
|
status: "rollout",
|
|
@@ -14944,6 +14944,16 @@ var FLAG_DEFINITIONS = defineFlags({
|
|
|
14944
14944
|
],
|
|
14945
14945
|
defaultByEnv: { dev: true, ci: true, prod: false }
|
|
14946
14946
|
},
|
|
14947
|
+
// Keep existing capture deployments on saved reads until every API and gateway
|
|
14948
|
+
// replica supports live viewing and descending history. CI exercises both paths.
|
|
14949
|
+
"learning.trajectory-live-view": {
|
|
14950
|
+
purpose: "Enables operator live viewing and newest-first history after app-api and every realtime gateway replica support them.",
|
|
14951
|
+
owner: "learning",
|
|
14952
|
+
createdAt: "2026-10-09",
|
|
14953
|
+
status: "rollout",
|
|
14954
|
+
surfaces: ["app-api", "realtime-gateway", "app-frontend"],
|
|
14955
|
+
defaultByEnv: { dev: false, ci: true, prod: false }
|
|
14956
|
+
},
|
|
14947
14957
|
"analytics.pipeline": {
|
|
14948
14958
|
purpose: "Gates project-scoped analytics reads and realtime projection while the durable pipeline rolls out.",
|
|
14949
14959
|
owner: "analytics",
|
|
@@ -14974,7 +14984,7 @@ init_define_CLI_LOCAL_EVALUATION_SUPPORT();
|
|
|
14974
14984
|
|
|
14975
14985
|
// apps/cli/src/config.ts
|
|
14976
14986
|
function getTemplateRef() {
|
|
14977
|
-
return true ? "
|
|
14987
|
+
return true ? "c616389550105d5a96d74501f77c6921aa79ecee" : "main";
|
|
14978
14988
|
}
|
|
14979
14989
|
|
|
14980
14990
|
// apps/cli/src/services/agentcore-config.ts
|
|
@@ -15172,6 +15182,13 @@ var TELEMETRY_ERROR_CODES = {
|
|
|
15172
15182
|
* tell "the caller guessed a slug" from a malformed request.
|
|
15173
15183
|
*/
|
|
15174
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",
|
|
15175
15192
|
/**
|
|
15176
15193
|
* `project select` persisted the record and the key-provisioning call did
|
|
15177
15194
|
* not succeed. Buckets as `network` because that is what it almost always
|