copilotkit 4.9.4 → 4.9.24
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 +26 -12
- package/cli-build-info.json +8 -8
- package/index.js +3508 -2375
- package/onboarding/index.json +15 -1
- package/onboarding/prompts/authenticate/start.md +129 -65
- package/onboarding/prompts/conversion/plan.md +113 -0
- package/onboarding/prompts/credentials/finalize-plan.md +174 -138
- package/onboarding/prompts/credentials/plan.md +26 -21
- package/onboarding/prompts/fallback/best-effort.md +103 -22
- package/onboarding/prompts/framework/ag2.md +7 -7
- package/onboarding/prompts/framework/agno.md +11 -8
- package/onboarding/prompts/framework/built-in.md +2 -2
- package/onboarding/prompts/framework/claude-sdk-python.md +7 -7
- package/onboarding/prompts/framework/claude-sdk-typescript.md +9 -9
- package/onboarding/prompts/framework/crewai-flows.md +27 -11
- package/onboarding/prompts/framework/deep-agents.md +8 -7
- 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 +6 -6
- package/onboarding/prompts/framework/mastra.md +3 -3
- package/onboarding/prompts/framework/ms-agent-dotnet.md +3 -3
- package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +7 -9
- package/onboarding/prompts/framework/ms-agent-python.md +3 -3
- package/onboarding/prompts/framework/pydantic-ai.md +26 -15
- package/onboarding/prompts/framework/strands-python.md +7 -6
- package/onboarding/prompts/framework/strands-typescript.md +9 -7
- package/onboarding/prompts/frontend/angular.md +16 -3
- package/onboarding/prompts/frontend/nextjs.md +3 -3
- package/onboarding/prompts/frontend/plan.md +6 -6
- package/onboarding/prompts/frontend/react-native.md +7 -2
- package/onboarding/prompts/frontend/react-spa.md +2 -2
- package/onboarding/prompts/frontend/vue.md +7 -2
- package/onboarding/prompts/implementation/build-and-validate.md +45 -79
- package/onboarding/prompts/proof/complete.md +31 -12
- package/onboarding/prompts/proof/oss-baseline.md +15 -50
- package/onboarding/prompts/proof/round-trip.md +88 -268
- package/onboarding/prompts/starter/clone.md +17 -8
- package/onboarding/prompts/subagent/create-plan.md +52 -1
- package/onboarding/prompts/subagent/implement-and-validate.md +70 -44
- package/onboarding/prompts/subagent/inspect-repository.md +26 -4
- package/onboarding/prompts/subagent/prove-oss-baseline.md +2 -1
- package/onboarding/prompts/subagent/prove-round-trip.md +156 -36
- package/onboarding/prompts/unsupported/no-validated-path.md +10 -2
- package/package.json +1 -1
- package/release/release-tool.js +1 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# Prove the user journey
|
|
2
2
|
|
|
3
|
-
Do not do the proof work yourself. Spawn one proof subagent.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Do not do the proof work yourself. Spawn one proof subagent. Tell it to run
|
|
4
|
+
`npx --yes copilotkit@4.9.24 onboard read subagent/prove-round-trip` first and follow the
|
|
5
|
+
prompt it returns. If that read fails because the subagent cannot use the shell, stop that
|
|
6
|
+
subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
|
|
7
|
+
and the same handoff. Give it the selected framework, frontend, model, approved plan, selected
|
|
8
|
+
documentation URLs, and validation evidence. Give it the documentation policy recorded during
|
|
9
|
+
framework selection or conversion planning. On a conversion, also give it the frozen
|
|
10
|
+
criterion. Give it the protected path list.
|
|
8
11
|
|
|
9
12
|
Give it the browser or device control you recorded in the preflight as well. The subagent
|
|
10
13
|
drives the surface and cannot see your environment, so without that finding it spends the
|
|
@@ -16,280 +19,97 @@ https://docs.copilotkit.ai/build-with-agents.md
|
|
|
16
19
|
|
|
17
20
|
Wait for the subagent to finish.
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
`npx --yes copilotkit@4.9.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
For every protected-path audit in this prompt, run
|
|
23
|
+
`npx --yes copilotkit@4.9.24 onboard audit` from the target app directory. If its result
|
|
24
|
+
starts with `Status: blocked`, report the printed reason and use the route-out rules below.
|
|
25
|
+
A blocked audit proved nothing changed and is not a preservation failure. If a
|
|
26
|
+
protected-path audit reports a changed path, use the route-out rules below. Never repair,
|
|
27
|
+
reset, or revert a protected path.
|
|
28
|
+
|
|
29
|
+
If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
|
|
30
|
+
`proof/complete` only if that audit passes. After the audit passes, run
|
|
31
|
+
`npx --yes copilotkit@4.9.24 onboard read proof/complete`. A performed surface outcome with
|
|
32
|
+
the full round trip is core success even if a continued-development tool fails. A skipped
|
|
33
|
+
surface outcome still enters `proof/complete` so the CLI records the blocked result. Do not
|
|
34
|
+
describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
|
|
35
|
+
result.
|
|
36
|
+
|
|
37
|
+
If the round trip proves and something after it blocks this run anyway -- the debugging
|
|
38
|
+
surface, or a capability the approved plan already excluded for this framework -- read
|
|
39
|
+
`proof/complete` all the same, with the command above, and carry the blocker there with
|
|
40
|
+
`--blocked-by`.
|
|
28
41
|
The stop terminal is for a journey this release cannot carry. It is
|
|
29
42
|
not for a journey that worked and then hit a wall: routing a proved run there tells the
|
|
30
43
|
developer that a framework and frontend that just worked are unsupported, and hands them a
|
|
31
44
|
stop report instead of the application they now have.
|
|
32
45
|
|
|
33
|
-
If the round trip fails, decide which kind of failure it is before you route.
|
|
34
|
-
|
|
35
|
-
|
|
46
|
+
If the round trip fails, decide which kind of failure it is before you route. The proof
|
|
47
|
+
subagent can repair only project-owned processes, ports, and request options. A failure caused
|
|
48
|
+
by a source, configuration, dependency, or tracked-file change is a defect in the new work.
|
|
49
|
+
|
|
50
|
+
Retry the proof subagent only for a project-owned process, port, or request-option failure.
|
|
51
|
+
Give it the failure evidence and the failed attempt's pinned Step 1 record. Wait for the
|
|
52
|
+
proof subagent after each operational repair.
|
|
53
|
+
If the result passes, use the passed-result route above. Retry a failed result at most three
|
|
54
|
+
times. Use the route-out rules below for a blocked or third failed result.
|
|
55
|
+
|
|
56
|
+
Enter the code-repair branch only for a source, configuration, dependency, or tracked-file
|
|
57
|
+
defect.
|
|
58
|
+
|
|
59
|
+
If the starter shortcut created the selected path, spawn one repair subagent. Give it the
|
|
60
|
+
failed step, proof evidence, generated path list, selected framework, frontend, model, exact
|
|
61
|
+
target app directory, documentation, and policy.
|
|
62
|
+
Require it to change only files that the starter command generated. Do not read or return
|
|
63
|
+
secret values. Require its result to start with `Status: passed`, `Status: failed`, or
|
|
64
|
+
`Status: blocked`, followed by Files changed, Validation, and Blockers. Otherwise, send the
|
|
65
|
+
defect to the implementation subagent that validated the planned implementation path. Give it
|
|
66
|
+
the approved plan and proof evidence. Treat the worker that gets the defect as the repair worker.
|
|
67
|
+
Give the repair worker the protected path list. Do not let a generated or repaired path
|
|
68
|
+
overlap a protected path.
|
|
69
|
+
|
|
70
|
+
Require the full validation list to pass again. Wait for the repair worker to finish.
|
|
71
|
+
Continue only if its result starts with `Status: passed`. If the repair worker returns
|
|
72
|
+
`Status: failed`, retry the repair with its evidence. Run the protected-path audit after the
|
|
73
|
+
repair passes. Send the full validation list to the validator for the selected path. Use the
|
|
74
|
+
implementation worker for a planned implementation path. Use the repair worker for a starter
|
|
75
|
+
path. Wait for the validator to finish. If its result starts with `Status: passed`, continue.
|
|
76
|
+
If the validator returns `Status: failed`, return its evidence to the repair
|
|
77
|
+
worker. Repeat repair and validation at most three times. If either worker returns
|
|
78
|
+
`Status: blocked`, use the route-out rules below.
|
|
79
|
+
|
|
80
|
+
Run the protected-path audit again after validation passes. Continue only if its result
|
|
81
|
+
starts with `Status: passed`.
|
|
82
|
+
|
|
83
|
+
Restart each project-owned process changed by the repair. Then spawn a fresh proof subagent
|
|
84
|
+
with the full original proof handoff, failed proof evidence, and new validation evidence.
|
|
85
|
+
This handoff includes the plan, documentation, policy, current process IDs, ports,
|
|
86
|
+
surface-control state, the continued-tools guide, and the failed attempt's pinned Step 1
|
|
87
|
+
record. Carry that record so the second attempt sends the request the first one failed on.
|
|
88
|
+
A fresh subagent given the plan alone writes its own request where the plan named none, and
|
|
89
|
+
its grounding check then speaks about a question the failed attempt never asked.
|
|
90
|
+
Wait for the fresh proof subagent to finish.
|
|
91
|
+
If the fresh proof result starts with `Status: passed`, run the protected-path audit and use
|
|
92
|
+
the passed-result route above. If it starts with `Status: failed`, begin the next bounded
|
|
93
|
+
repair cycle. Use the route-out rules below for `Status: blocked`. Stop after three repair
|
|
94
|
+
and proof cycles.
|
|
36
95
|
|
|
37
96
|
Route out only when the failure is not yours to fix, when the same proof still fails after
|
|
38
97
|
three attempts, or when no evidence of the round trip can be produced. In those cases run
|
|
39
|
-
`npx --yes copilotkit@4.9.
|
|
98
|
+
`npx --yes copilotkit@4.9.24 onboard read unsupported/no-validated-path`. All three are
|
|
40
99
|
about the round trip itself. A round trip that proved is not one of them, whatever failed
|
|
41
100
|
after it.
|
|
42
101
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
# Prove the complete round trip
|
|
50
|
-
|
|
51
|
-
Use the proof steps and documentation URLs from the approved plan. Follow the documentation
|
|
52
|
-
policy the main coding agent gives you before you start.
|
|
53
|
-
|
|
54
|
-
Run the steps below in the order they appear. They are the proof. Do not design a
|
|
55
|
-
different sequence of your own, and do not drop a step because an earlier one looked
|
|
56
|
-
convincing. Step 6 has a web form and a React Native form: run the one that matches this
|
|
57
|
-
journey's frontend, and run only that one.
|
|
58
|
-
|
|
59
|
-
Record the result of every step as you go. A step with nothing recorded did not happen.
|
|
60
|
-
Write each captured file to `.copilotkit/proof/` inside the project and name the path in
|
|
61
|
-
the record. That directory holds regenerable evidence rather than application code. Where
|
|
62
|
-
a browser or device tool writes to a location of its own, keep that location and record
|
|
63
|
-
it instead.
|
|
64
|
-
|
|
65
|
-
Gather what you need in as few commands as possible. Combine independent reads into one
|
|
66
|
-
command rather than running them one at a time. Split a command only when its result decides
|
|
67
|
-
what you run next.
|
|
68
|
-
|
|
69
|
-
## Step 1 -- Read what the proof needs
|
|
70
|
-
|
|
71
|
-
Read all of this from the approved plan in one pass, before you start anything:
|
|
72
|
-
|
|
73
|
-
- the exact request to send through the frontend, in the words the plan gave it,
|
|
74
|
-
- the user-visible result that request has to produce,
|
|
75
|
-
- the expected agent id,
|
|
76
|
-
- where the project's own data lives, and which entities the answer has to name,
|
|
77
|
-
- the start command for the agent and for the frontend, from the plan where it named
|
|
78
|
-
one and from the project's own scripts otherwise,
|
|
79
|
-
- the runtime URL.
|
|
80
|
-
|
|
81
|
-
Where the plan named no request, write one that produces the outcome the plan named, and
|
|
82
|
-
record the request you wrote. Every later step uses these words unchanged, so that the
|
|
83
|
-
browser, the device, and the grounding check all speak about one request.
|
|
84
|
-
|
|
85
|
-
## Step 2 -- Start the agent and the frontend
|
|
102
|
+
If you stop here without taking that route -- a repair cycle you cannot finish, a limit in
|
|
103
|
+
your own harness, a run that has run out -- send one short report before you stop.
|
|
104
|
+
Run the feedback command without another developer question. The CLI telemetry gate decides
|
|
105
|
+
whether the report is sent.
|
|
86
106
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
already running. Before you bind any new server, check that the port is free and pick
|
|
90
|
-
another one if it is not. Record every port you used.
|
|
91
|
-
|
|
92
|
-
The table names what each frontend's own scaffolder writes, for recognizing a port in a
|
|
93
|
-
started process's output. The project's configuration wins over the table.
|
|
94
|
-
|
|
95
|
-
| Frontend | Dev server the scaffolder writes |
|
|
96
|
-
| ------------ | -------------------------------- |
|
|
97
|
-
| Next.js | `next dev`, port 3000 |
|
|
98
|
-
| React SPA | Vite, port 5173 |
|
|
99
|
-
| Vue 3 | Vite, port 5173 |
|
|
100
|
-
| Angular | `ng serve`, port 4200 |
|
|
101
|
-
| React Native | Metro, port 8081 |
|
|
102
|
-
|
|
103
|
-
Where this project's runtime runs as a process of its own, the frontend documentation
|
|
104
|
-
puts it on port 8200. Use the runtime URL from step 1 rather than that number.
|
|
105
|
-
|
|
106
|
-
Start each server in the background with the project's own script. Then wait for it to
|
|
107
|
-
answer rather than for a fixed number of seconds:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
ready=
|
|
111
|
-
for _ in $(seq 90); do
|
|
112
|
-
curl -fs -o /dev/null "<url>" && ready=1 && break
|
|
113
|
-
sleep 1
|
|
114
|
-
done
|
|
115
|
-
[ "$ready" = 1 ] && echo "up" || echo "no answer from <url> after 90 seconds"
|
|
107
|
+
```text
|
|
108
|
+
npx --yes copilotkit@4.9.24 onboard feedback
|
|
116
109
|
```
|
|
117
110
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
safe command that stops that process. Record the frontend URL and the commands that start
|
|
124
|
-
both servers again.
|
|
125
|
-
|
|
126
|
-
## Step 3 -- Identify the process that answered
|
|
127
|
-
|
|
128
|
-
Before you trust the agent, confirm that the process answering is the one in this
|
|
129
|
-
repository. `verify` reports which agents the runtime declares and has nothing to compare
|
|
130
|
-
them against, and `--round-trip` proves an agent answers under the declared id without
|
|
131
|
-
proving which deployment did, so this comparison is yours. A health endpoint that returns
|
|
132
|
-
success proves only that something listens on
|
|
133
|
-
that port. An agent from earlier work often still holds it, and a stale process answers
|
|
134
|
-
as though it were the new one. Ask the running agent which graph or agent id it serves
|
|
135
|
-
and compare that with the id declared in this project.
|
|
136
|
-
|
|
137
|
-
If they do not match, find out whose process it is before you signal anything.
|
|
138
|
-
`lsof -ti :<port> -sTCP:LISTEN` gives the process id, and `lsof -a -p <pid> -d cwd` gives
|
|
139
|
-
the directory it runs in. Stop it only when that directory is inside this project, and
|
|
140
|
-
stop its children before the parent so nothing survives by reparenting. A holder outside
|
|
141
|
-
this project belongs to other work: leave it running, report it, and bind to another port.
|
|
142
|
-
Never stop a process because its command line matches a name. One `pkill` pattern reaches
|
|
143
|
-
every project on the machine and takes down work that has nothing to do with this run.
|
|
144
|
-
Never continue against a process you cannot identify, and never report a round trip proven
|
|
145
|
-
by one.
|
|
146
|
-
|
|
147
|
-
Address a local agent by host name rather than by an IP literal. Some local agents bind
|
|
148
|
-
IPv6 only, so an IPv4 literal fails against the correct port.
|
|
149
|
-
|
|
150
|
-
## Step 4 -- Check the wiring
|
|
151
|
-
|
|
152
|
-
With both running, check the wiring in one command before you open a browser:
|
|
153
|
-
`npx --yes copilotkit@4.9.4 verify --json`. Add `--runtime-url` when the runtime is not at
|
|
154
|
-
`http://localhost:3000/api/copilotkit`. Read the individual checks rather than the summary
|
|
155
|
-
alone: a check reported `undetermined` did not run, and that is not a pass. Fix anything
|
|
156
|
-
that is not a pass before the browser, because a browser failure stacked on broken wiring
|
|
157
|
-
costs a round of debugging to reach an answer this command already gave.
|
|
158
|
-
|
|
159
|
-
Treat `intelligence_consumed` as the check that matters most here. A journey that finishes
|
|
160
|
-
with the Intelligence credential never read looks complete and proves nothing about the
|
|
161
|
-
paid surface. `api_key_authenticates` passing beside it says the key is real and the
|
|
162
|
-
runtime never used it.
|
|
163
|
-
|
|
164
|
-
`intelligence_thread_routes` fails when the runtime reports a license but serves no
|
|
165
|
-
thread routes, which means saved Threads cannot load in a browser. The usual cause is a
|
|
166
|
-
handler mounted `mode: "single-route"`: remove that option so the handler serves its full
|
|
167
|
-
route set, and mount it at a catch-all route. If instead that check is `undetermined`
|
|
168
|
-
because the runtime reports no thread-endpoint state, the runtime predates the field.
|
|
169
|
-
Record that and move on -- there is nothing to repair.
|
|
170
|
-
|
|
171
|
-
## Step 5 -- Prove that the agent runs
|
|
172
|
-
|
|
173
|
-
Run `npx --yes copilotkit@4.9.4 verify --round-trip --json`. It sends one request through
|
|
174
|
-
the runtime and reads the answer back from the thread, so it separates an agent that is
|
|
175
|
-
configured from an agent that works. Use `--agent <id>` when the runtime declares more
|
|
176
|
-
than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
|
|
177
|
-
session the CLI does not carry: pass what it reads with `--header "Name: value"` and run
|
|
178
|
-
it again, because an auth-gated app refusing an unauthenticated caller is that app
|
|
179
|
-
working. Do not continue until this passes, and never report a round trip proven without
|
|
180
|
-
it.
|
|
181
|
-
|
|
182
|
-
## Step 6 -- Drive the surface
|
|
183
|
-
|
|
184
|
-
Now send one real request through the running frontend, on this journey's own surface.
|
|
185
|
-
Make sure that the request passes through CopilotKit and reaches the selected agent, and
|
|
186
|
-
that the frontend receives working generative UI from the agent. This is the step that
|
|
187
|
-
covers realtime delivery, the frontend provider being wired to this runtime, and a
|
|
188
|
-
generative UI component actually rendering, and no command-line check reaches any of them.
|
|
189
|
-
It is not optional polish: a run that skips it has proven the agent and not the journey,
|
|
190
|
-
and the graph ends such a run as blocked rather than complete.
|
|
191
|
-
|
|
192
|
-
Use the surface control the main coding agent recorded for your environment. It either had
|
|
193
|
-
one already or registered one before this step, so that finding is the answer and there is
|
|
194
|
-
nothing here for you to go looking for. Do not add a browser driver or a device tool to this
|
|
195
|
-
project: a devDependency and a browser download land in the diff and tax a repository that
|
|
196
|
-
never asked for one, which is a different thing from the server registered against the
|
|
197
|
-
coding agent. If nothing in your environment can drive the surface this journey needs, skip
|
|
198
|
-
this step rather than installing one, and report the skip outcome named below.
|
|
199
|
-
|
|
200
|
-
Never report a result you did not see, on either surface.
|
|
201
|
-
|
|
202
|
-
### Step 6a -- Web frontends: React SPA, Next.js, Angular, Vue 3
|
|
203
|
-
|
|
204
|
-
The surface is a browser, and it also covers browser-origin CORS and CSP, which a CLI
|
|
205
|
-
request never exercises. Drive it with the browser control step 6 named.
|
|
206
|
-
|
|
207
|
-
1. Open the frontend URL from step 2 and wait for the page to finish loading.
|
|
208
|
-
2. Take one page snapshot. Record whether the CopilotKit surface is on the page. A page
|
|
209
|
-
that renders without it is a wiring failure rather than a proof to retry.
|
|
210
|
-
3. Read the browser console before you type anything, and record every error already
|
|
211
|
-
there. An error at this point belongs to page load rather than to the request.
|
|
212
|
-
4. Enter the step 1 request into the CopilotKit input, in the words step 1 recorded, and
|
|
213
|
-
submit it.
|
|
214
|
-
5. Wait for the assistant turn to finish rather than for a fixed number of seconds. The
|
|
215
|
-
turn is finished when the streamed text stops growing and the generative UI component
|
|
216
|
-
has rendered.
|
|
217
|
-
6. Take one screenshot of the finished turn and record where you wrote it.
|
|
218
|
-
7. Read the browser console a second time, and record every error that step 3 did not
|
|
219
|
-
already list. Those belong to the request.
|
|
220
|
-
8. Read the network requests. Record every request the page made to the runtime endpoint
|
|
221
|
-
and the status each returned. An answer on the page with no successful request to this
|
|
222
|
-
runtime behind it came from something else, and that is a failed proof rather than a
|
|
223
|
-
passing one.
|
|
224
|
-
9. Record one line for the finished turn: the time, the page URL, the element you read
|
|
225
|
-
the answer from, and what that element showed.
|
|
226
|
-
|
|
227
|
-
Report exactly one of `performed`, `skipped-no-browser-tool`, or `failed` for a web
|
|
228
|
-
frontend.
|
|
229
|
-
|
|
230
|
-
### Step 6b -- React Native
|
|
231
|
-
|
|
232
|
-
The surface is a device or emulator, and a browser cannot stand in for it.
|
|
233
|
-
|
|
234
|
-
1. List the booted devices in one command: `adb devices -l`. With no booted device this
|
|
235
|
-
step is `skipped-no-device`. Do not substitute a browser.
|
|
236
|
-
2. Build and install the app on the booted device with the project's own script, which
|
|
237
|
-
an Expo or React Native CLI project names in `package.json`.
|
|
238
|
-
3. Clear the log buffer before the request: `adb logcat -c`.
|
|
239
|
-
4. Open the CopilotKit surface in the running app and enter the step 1 request, in the
|
|
240
|
-
words step 1 recorded.
|
|
241
|
-
5. Wait for the assistant turn to finish rather than for a fixed number of seconds.
|
|
242
|
-
6. Capture the terminal state with
|
|
243
|
-
`adb exec-out screencap -p > .copilotkit/proof/surface.png`, and record that path.
|
|
244
|
-
7. Read the log for the request with `adb logcat -d -t 500`. A redbox is a runtime failure
|
|
245
|
-
the terminal state never shows.
|
|
246
|
-
8. Record one line for the finished turn: the time, the platform, the device id, the
|
|
247
|
-
screen you were on, and what that screen showed.
|
|
248
|
-
|
|
249
|
-
An Android emulator reaches a runtime on the host machine at `10.0.2.2` rather than at
|
|
250
|
-
`localhost`. A request that fails against the runtime with nothing in the runtime's own
|
|
251
|
-
log is that, rather than a broken runtime.
|
|
252
|
-
|
|
253
|
-
Report exactly one of `performed`, `skipped-no-device`, or `failed` for React Native.
|
|
254
|
-
|
|
255
|
-
## Step 7 -- Check the answer against the project's data
|
|
256
|
-
|
|
257
|
-
Where the answer is meant to be about data the project holds, check it against that data.
|
|
258
|
-
Read the entities the project holds -- the ids, names, or records the answer claims to
|
|
259
|
-
describe -- and confirm the answer names those and no others. Record the entities you
|
|
260
|
-
compared. Where the outcome of this journey references no project data, record that
|
|
261
|
-
instead, and do not invent a comparison to pass this step.
|
|
262
|
-
|
|
263
|
-
An answer that renders correctly over entities the project does not hold looks the same as
|
|
264
|
-
a correct one in a browser, in a screenshot, and in a video, so this comparison is the only
|
|
265
|
-
stage that separates them. An answer that names an entity the project does not hold is a
|
|
266
|
-
failed proof, not a passing one. Find which of these it is before you change anything: the
|
|
267
|
-
project's data never reaches the agent, the agent receives it and its instructions ignore
|
|
268
|
-
it, the page loads its data after the context was registered, or the run wired a different
|
|
269
|
-
source than the page renders. Fix that cause, then prove again.
|
|
270
|
-
|
|
271
|
-
## Step 8 -- Compare with the recorded OSS baseline
|
|
272
|
-
|
|
273
|
-
Run this step only for a recorded `both-oss` starting state. Compare the final round trip
|
|
274
|
-
with the recorded OSS baseline. The same frontend request must still reach the same agent
|
|
275
|
-
and produce the same kind of user-visible result. The runtime must now report
|
|
276
|
-
`licenseStatus`, and the authenticated Intelligence checks must pass. Record both before
|
|
277
|
-
and after evidence.
|
|
278
|
-
|
|
279
|
-
## Step 9 -- Set up the continued-development tools
|
|
280
|
-
|
|
281
|
-
Fetch the continued-development guide from the main coding agent with the proof
|
|
282
|
-
documentation. Try the continued-development tools after the application passes proof.
|
|
283
|
-
Use it to install the project-scoped CopilotKit Skills.
|
|
284
|
-
Use it to configure the CopilotKit documentation MCP server for the current coding agent.
|
|
285
|
-
|
|
286
|
-
Do not validate whether the Skills or MCP server installed correctly. Record the command
|
|
287
|
-
result for each attempt. Report each tool result separately. A tool error does not change
|
|
288
|
-
the proof result.
|
|
289
|
-
|
|
290
|
-
## Step 10 -- Return the result
|
|
291
|
-
|
|
292
|
-
Return the proof or the exact failed step to the main coding agent, together with the
|
|
293
|
-
input, the visible result, the relevant process status, the evidence locations, the
|
|
294
|
-
surface-check outcome, and which surface that outcome speaks for. Do not return secret
|
|
295
|
-
values. Stop after you return the result.
|
|
111
|
+
Write at most four lines to standard input: the step you stopped at and what stopped it.
|
|
112
|
+
Send no secrets, source code, logs, or command output. The command refuses a report that
|
|
113
|
+
carries any of those, prints the reason, and exits zero. A refused report is not a failed
|
|
114
|
+
step. Report friction only from a run that finished, never from a stop. A run that dies in
|
|
115
|
+
this phase is the one this graph most needs to hear about and the one it hears from least.
|
|
@@ -34,11 +34,18 @@ selected pair is not in the table, or the directory name is not valid, stop the
|
|
|
34
34
|
Do not run `init`. Treat this result as a failed shortcut and follow the final failure
|
|
35
35
|
instruction in this prompt.
|
|
36
36
|
|
|
37
|
-
If the developer did not name an Intelligence project,
|
|
37
|
+
If the developer did not name an Intelligence project, create one for the app being
|
|
38
|
+
cloned. This directory is new, so no existing project is already its own: take the project
|
|
39
|
+
name from the target directory name derived above, and ask the developer to confirm it or
|
|
40
|
+
give another. Do not list the projects in the organization. If no developer answers, use
|
|
41
|
+
the derived name.
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
Only if the developer asks for an existing project, or asks to see the projects they have,
|
|
44
|
+
read the choices:
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
`npx --yes copilotkit@4.9.24 project list --json`
|
|
47
|
+
|
|
48
|
+
Then ask which one to use. Do not order the projects by creation time. If the developer
|
|
42
49
|
already gave this answer, do not ask again. Do not read a secret value. Do not show or
|
|
43
50
|
store a secret value.
|
|
44
51
|
|
|
@@ -46,10 +53,12 @@ Run the command from the parent directory. Do not inspect another entry in the p
|
|
|
46
53
|
directory. Replace each placeholder with the recorded value. Do not run a placeholder as
|
|
47
54
|
a shell argument.
|
|
48
55
|
|
|
49
|
-
`npx --yes copilotkit@4.9.
|
|
56
|
+
`npx --yes copilotkit@4.9.24 init --name <project-name> --framework <framework-id> --channel none --no-banner --create <name> --install`
|
|
50
57
|
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
Pass the confirmed name to both `--name` and `--create`: the app directory and its
|
|
59
|
+
Intelligence project take the same name here. If the developer names an existing project,
|
|
60
|
+
use `--project <slug-or-id>` instead of `--create <name>`. If the developer asked to skip
|
|
61
|
+
the dependency install, use
|
|
53
62
|
`--no-install` instead of `--install`. Do not wait for an interactive prompt. Pass every
|
|
54
63
|
answer as a flag.
|
|
55
64
|
|
|
@@ -60,8 +69,8 @@ account. The command does not need terminal input.
|
|
|
60
69
|
If the command succeeds, do not rebuild the starter by hand. Inspect only the generated
|
|
61
70
|
paths inside the target directory. Record the files, install result, project connection,
|
|
62
71
|
and validation commands. Then run
|
|
63
|
-
`npx --yes copilotkit@4.9.
|
|
72
|
+
`npx --yes copilotkit@4.9.24 onboard read proof/round-trip`.
|
|
64
73
|
|
|
65
74
|
If the command fails, report its exact error and do not claim that the starter is ready.
|
|
66
75
|
Then run
|
|
67
|
-
`npx --yes copilotkit@4.9.
|
|
76
|
+
`npx --yes copilotkit@4.9.24 onboard read unsupported/no-validated-path`.
|
|
@@ -35,13 +35,18 @@ reference naming hosts that route nothing, and it requires the platform URLs the
|
|
|
35
35
|
documentation calls optional. A run that reads that reference configures the runtime
|
|
36
36
|
against a dead host, and the failure arrives as an empty-body 404 with no cause named.
|
|
37
37
|
|
|
38
|
-
If any `@copilotkit/*` dependency is below 1.
|
|
38
|
+
If any `@copilotkit/*` dependency is below 1.70.0, plan to upgrade every `@copilotkit/*`
|
|
39
39
|
dependency to its latest published version. Packages that share a version line must end
|
|
40
40
|
on the same version. Never force a package onto a version line it does not publish on.
|
|
41
41
|
Resolve each latest version at run time rather than from a remembered version number.
|
|
42
42
|
Where every `@copilotkit/*` dependency already meets that floor, plan no dependency
|
|
43
43
|
change.
|
|
44
44
|
|
|
45
|
+
The floor is 1.70.0 because the runtime resolves managed Intelligence entitlement
|
|
46
|
+
authority from that version. A runtime below it reports its license from a self-hosted
|
|
47
|
+
token alone. A managed project holds no such token, so the threads drawer this conversion
|
|
48
|
+
adds lists nothing even after every command-line check passes.
|
|
49
|
+
|
|
45
50
|
Plan the upgrade as its own step before the Intelligence runtime wiring, and plan to
|
|
46
51
|
re-run the recorded baseline checks immediately after it. Name the revert: restore the
|
|
47
52
|
manifest and lockfile to their recorded state and stop, rather than wiring Intelligence
|
|
@@ -73,6 +78,51 @@ Create one plan for implementation, validation, and proof. Name each file or are
|
|
|
73
78
|
change. Name the commands that can validate the result.
|
|
74
79
|
Name the commands or user path that prove a real generative-UI round trip.
|
|
75
80
|
|
|
81
|
+
The terminal is one component rendered through this frontend's own registration -- the
|
|
82
|
+
`useComponent` hook, or Angular's `registerComponent` -- over entities the project holds.
|
|
83
|
+
Plan that component: name it, name the fields it shows, and name which of the project's own
|
|
84
|
+
records fill them. Do not plan a declarative A2UI card unless the developer asks for one:
|
|
85
|
+
the terminal needs no renderer package and nothing added to the agent, because the tool is
|
|
86
|
+
declared by the frontend and forwarded over AG-UI.
|
|
87
|
+
|
|
88
|
+
A prose answer is not the terminal. The structure is what the grounding comparison reads: a
|
|
89
|
+
component with named fields can be checked field by field against the records the project
|
|
90
|
+
holds, and that comparison is the only thing separating a correct answer from a confident
|
|
91
|
+
invented one.
|
|
92
|
+
|
|
93
|
+
For a recorded `both-oss` starting state, plan no generative-UI component. The terminal is
|
|
94
|
+
the baseline request still working over the same frontend, the runtime now constructed
|
|
95
|
+
with `intelligence`, and the thread that request creates listed in this frontend's threads
|
|
96
|
+
drawer. A `both-oss` project already has its user-visible result. The conversion preserves
|
|
97
|
+
that result rather than replacing it with a new one, and a generative-UI component added
|
|
98
|
+
here is work the developer did not ask for.
|
|
99
|
+
|
|
100
|
+
Plan the threads drawer itself: add it from the selected drawer page, where this frontend
|
|
101
|
+
does not already render one. Where this journey's frontend framework ships no threads
|
|
102
|
+
drawer -- React Native --, plan that the thread is proved by
|
|
103
|
+
`npx --yes copilotkit@4.9.24 verify --round-trip`, which needs no browser. Do not plan a
|
|
104
|
+
step that opens the managed Intelligence dashboard.
|
|
105
|
+
|
|
106
|
+
## Order the plan into steps
|
|
107
|
+
|
|
108
|
+
Create one ordered list of implementation steps. For each step, name the outcome, the exact
|
|
109
|
+
files or directories it changes, its validation commands, and the steps it depends on.
|
|
110
|
+
|
|
111
|
+
One implementation subagent runs every step in that order. Do not split the steps across
|
|
112
|
+
concurrent subagents, and do not plan a separate step to reconcile a split.
|
|
113
|
+
|
|
114
|
+
Use the protected path list you were given. It is the baseline the CLI captured, not a
|
|
115
|
+
list to re-derive: a path you leave out of it is not protected, and a path you add to it
|
|
116
|
+
is not in the baseline the audit reads. Do not name a protected path as a path a step
|
|
117
|
+
changes. Do not name a path that overlaps a protected path. The paths overlap when they are
|
|
118
|
+
equal or either path is an ancestor directory on a path-segment boundary. `apps/a` overlaps
|
|
119
|
+
`apps/a/src`, but not `apps/ab`. `app.ts` does not overlap `app.tsx`. If the plan needs
|
|
120
|
+
one, return `Status: blocked` before approval.
|
|
121
|
+
Return the protected path list as part of the plan.
|
|
122
|
+
|
|
123
|
+
Keep final validation and proof outside the implementation steps. The developer approves
|
|
124
|
+
one plan.
|
|
125
|
+
|
|
76
126
|
Keep a production build out of the validation commands. A type check plus the real round
|
|
77
127
|
trip is the proof, and the round trip runs in development mode. Name the production build
|
|
78
128
|
as a follow-up for the developer instead. Never raise a bundle budget or relax a lint rule
|
|
@@ -88,5 +138,6 @@ Gather what you need in as few commands as possible. Combine independent reads i
|
|
|
88
138
|
command rather than running them one at a time. Split a command only when its result decides
|
|
89
139
|
what you run next.
|
|
90
140
|
|
|
141
|
+
Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
|
|
91
142
|
Return the plan, the URLs that you read, and each documentation gap. Stop after you return
|
|
92
143
|
the findings to the main coding agent.
|