copilotkit 4.10.1 → 4.12.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/LICENSE +11 -0
- package/README.md +153 -17
- package/cli-build-info.json +8 -8
- package/index.js +5104 -4673
- package/onboarding/index.json +9 -2
- package/onboarding/prompts/authenticate/start.md +35 -19
- package/onboarding/prompts/conversion/plan.md +3 -3
- package/onboarding/prompts/credentials/finalize-plan.md +37 -27
- package/onboarding/prompts/credentials/plan.md +20 -20
- package/onboarding/prompts/credentials/settle-credentials.md +57 -25
- package/onboarding/prompts/credentials/write-plan.md +7 -7
- package/onboarding/prompts/fallback/best-effort.md +9 -8
- package/onboarding/prompts/feature/a2ui/implement.md +7 -7
- package/onboarding/prompts/feature/a2ui/proof.md +6 -6
- package/onboarding/prompts/feature/a2ui/start.md +10 -8
- package/onboarding/prompts/feature/blocked-by-plan.md +32 -0
- package/onboarding/prompts/feature/channels/implement.md +9 -9
- package/onboarding/prompts/feature/channels/proof.md +6 -6
- package/onboarding/prompts/feature/channels/start.md +20 -15
- package/onboarding/prompts/feature/chat-suggestions/implement.md +7 -7
- package/onboarding/prompts/feature/chat-suggestions/proof.md +6 -6
- package/onboarding/prompts/feature/chat-suggestions/start.md +10 -8
- package/onboarding/prompts/feature/complete.md +1 -1
- package/onboarding/prompts/feature/learning/implement.md +73 -14
- package/onboarding/prompts/feature/learning/proof.md +10 -9
- package/onboarding/prompts/feature/learning/start.md +61 -7
- package/onboarding/prompts/feature/open-generative-ui/implement.md +7 -7
- package/onboarding/prompts/feature/open-generative-ui/proof.md +6 -6
- package/onboarding/prompts/feature/open-generative-ui/start.md +10 -8
- package/onboarding/prompts/feature/realtime-sync/implement.md +8 -8
- package/onboarding/prompts/feature/realtime-sync/proof.md +6 -6
- package/onboarding/prompts/feature/realtime-sync/start.md +9 -7
- package/onboarding/prompts/feature/rich-threads/implement.md +9 -9
- package/onboarding/prompts/feature/rich-threads/proof.md +6 -6
- package/onboarding/prompts/feature/rich-threads/start.md +9 -7
- package/onboarding/prompts/feature/stop.md +6 -6
- package/onboarding/prompts/feature/voice/implement.md +7 -7
- package/onboarding/prompts/feature/voice/proof.md +6 -6
- package/onboarding/prompts/feature/voice/start.md +10 -8
- package/onboarding/prompts/framework/ag2.md +2 -2
- package/onboarding/prompts/framework/agno.md +2 -2
- package/onboarding/prompts/framework/built-in.md +2 -2
- package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
- package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
- package/onboarding/prompts/framework/crewai-flows.md +2 -2
- package/onboarding/prompts/framework/deep-agents.md +2 -2
- package/onboarding/prompts/framework/google-adk.md +2 -2
- package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
- package/onboarding/prompts/framework/langgraph-python.md +2 -2
- package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
- package/onboarding/prompts/framework/llamaindex.md +2 -2
- package/onboarding/prompts/framework/mastra.md +2 -2
- package/onboarding/prompts/framework/ms-agent-dotnet.md +2 -2
- package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
- package/onboarding/prompts/framework/ms-agent-python.md +2 -2
- package/onboarding/prompts/framework/pydantic-ai.md +2 -2
- package/onboarding/prompts/framework/strands-python.md +2 -2
- package/onboarding/prompts/framework/strands-typescript.md +2 -2
- package/onboarding/prompts/frontend/angular.md +5 -5
- package/onboarding/prompts/frontend/nextjs.md +4 -4
- package/onboarding/prompts/frontend/plan.md +17 -12
- package/onboarding/prompts/frontend/react-native.md +2 -2
- package/onboarding/prompts/frontend/react-spa.md +2 -2
- package/onboarding/prompts/frontend/vue.md +2 -2
- package/onboarding/prompts/implementation/build-and-validate.md +35 -18
- package/onboarding/prompts/proof/complete.md +26 -17
- package/onboarding/prompts/proof/oss-baseline.md +5 -5
- package/onboarding/prompts/proof/round-trip.md +16 -15
- package/onboarding/prompts/research/gather.md +55 -9
- package/onboarding/prompts/research/route.md +30 -10
- package/onboarding/prompts/starter/clone.md +6 -6
- package/onboarding/prompts/stopped/run-failed.md +32 -3
- package/onboarding/prompts/subagent/create-plan.md +7 -1
- package/onboarding/prompts/subagent/implement-and-validate.md +2 -1
- package/onboarding/prompts/subagent/inspect-repository.md +43 -16
- package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
- package/onboarding/prompts/subagent/prove-round-trip.md +52 -18
- package/onboarding/prompts/unsupported/no-validated-path.md +4 -4
- package/package.json +4 -3
- package/release/release-tool.js +1 -1
package/onboarding/index.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"graphTree": "
|
|
2
|
+
"graphTree": "aca3eeff60c7fed03d24e93e166829ff405da63d",
|
|
3
3
|
"intentRoots": {
|
|
4
4
|
"add-a2ui": "feature/a2ui/start",
|
|
5
|
-
"add-channels": "feature/channels/start",
|
|
6
5
|
"add-chat-suggestions": "feature/chat-suggestions/start",
|
|
7
6
|
"add-learning": "feature/learning/start",
|
|
8
7
|
"add-open-generative-ui": "feature/open-generative-ui/start",
|
|
@@ -107,6 +106,11 @@
|
|
|
107
106
|
"milestone": "feature",
|
|
108
107
|
"name": "feature/a2ui/start"
|
|
109
108
|
},
|
|
109
|
+
{
|
|
110
|
+
"edges": [],
|
|
111
|
+
"milestone": "feature",
|
|
112
|
+
"name": "feature/blocked-by-plan"
|
|
113
|
+
},
|
|
110
114
|
{
|
|
111
115
|
"edges": [
|
|
112
116
|
"feature/stop",
|
|
@@ -162,6 +166,7 @@
|
|
|
162
166
|
},
|
|
163
167
|
{
|
|
164
168
|
"edges": [
|
|
169
|
+
"feature/blocked-by-plan",
|
|
165
170
|
"feature/stop",
|
|
166
171
|
"feature/learning/proof"
|
|
167
172
|
],
|
|
@@ -178,6 +183,7 @@
|
|
|
178
183
|
},
|
|
179
184
|
{
|
|
180
185
|
"edges": [
|
|
186
|
+
"feature/blocked-by-plan",
|
|
181
187
|
"feature/stop",
|
|
182
188
|
"feature/learning/implement"
|
|
183
189
|
],
|
|
@@ -462,6 +468,7 @@
|
|
|
462
468
|
"frontend/angular",
|
|
463
469
|
"frontend/vue",
|
|
464
470
|
"frontend/react-native",
|
|
471
|
+
"feature/channels/start",
|
|
465
472
|
"unsupported/no-validated-path"
|
|
466
473
|
],
|
|
467
474
|
"milestone": "frontend",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
Run this before anything else in this prompt, including the welcome message below:
|
|
6
6
|
|
|
7
7
|
```text
|
|
8
|
-
npx --yes copilotkit@4.
|
|
8
|
+
npx --yes copilotkit@4.12.0 onboard identify --coding-agent <coding-agent-slug>
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Report your own product with one short slug, such as `codex` or `claude-code`.
|
|
@@ -34,13 +34,15 @@ id. Keep that id for the whole run. Every later command reports against it, and
|
|
|
34
34
|
printed once.
|
|
35
35
|
|
|
36
36
|
Every later command must run from the directory this run started in. A command run
|
|
37
|
-
somewhere else,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
somewhere else is refused, because the run it belongs to cannot be found from there. That
|
|
38
|
+
refusal is a step, not a stop to report: run
|
|
39
|
+
`npx --yes copilotkit@4.12.0 onboard start --run <onboarding_run_id>` where you are
|
|
40
|
+
standing, then run the refused command again.
|
|
41
|
+
|
|
42
|
+
If you no longer hold the id, run `npx --yes copilotkit@4.12.0 onboard start` in the
|
|
43
|
+
directory this run started in, with no `--run` and no `--intent`. It reprints the id of the
|
|
44
|
+
run under way and starts nothing. An id this project does not already hold starts a second
|
|
45
|
+
run, and the work already done stops counting toward the first.
|
|
44
46
|
|
|
45
47
|
Read only inside the target project directory. Every subagent you spawn inherits that
|
|
46
48
|
limit, including one this graph does not name. Answer a CopilotKit API or configuration
|
|
@@ -48,12 +50,18 @@ question from the documentation this graph gives you. Another checkout on this m
|
|
|
48
50
|
not a source. The developer running this has none, so an answer taken from one is an
|
|
49
51
|
answer they cannot get, and it hides the documentation gap that blocks them.
|
|
50
52
|
|
|
53
|
+
Say `CopilotKit Intelligence` in full the first time you name the platform, and never the
|
|
54
|
+
bare word `Intelligence`: it names nothing a developer has met yet. In a question, leave
|
|
55
|
+
the product name out and say what they get. This governs what you say, not the flags you
|
|
56
|
+
pass.
|
|
57
|
+
|
|
51
58
|
Send this exact message once, as your first message in this onboarding run, before
|
|
52
59
|
anything else:
|
|
53
60
|
|
|
54
61
|
Welcome to CopilotKit. By the end of this run your own application talks to an AI agent,
|
|
55
62
|
and its chat history stays. A user can close the tab, come back, and reopen any past
|
|
56
|
-
conversation in full. The managed Intelligence platform is what keeps them. I
|
|
63
|
+
conversation in full. The managed CopilotKit Intelligence platform is what keeps them. I
|
|
64
|
+
prove that
|
|
57
65
|
round trip in the running app before I call it done. You finish with working software and
|
|
58
66
|
the evidence that it works.
|
|
59
67
|
|
|
@@ -74,15 +82,27 @@ first send, and a developer who reads it repeatedly learns to skim the region it
|
|
|
74
82
|
Do not ask for separate feedback consent. The feedback commands enforce the developer's
|
|
75
83
|
CLI telemetry setting when a later step tries to send a report.
|
|
76
84
|
|
|
85
|
+
## Where commands run
|
|
86
|
+
|
|
87
|
+
Run every command from the directory this run started in. That directory is the run root,
|
|
88
|
+
and every `--path` argument is read against it rather than against wherever you are
|
|
89
|
+
standing, so one path names one file from anywhere in the project.
|
|
90
|
+
|
|
91
|
+
One command is deliberately different. `project select` writes the credential into the
|
|
92
|
+
`.env` beside the directory it runs in, because that is the file the application process
|
|
93
|
+
loads. Run it from the directory whose application reads that file. It hoists the project
|
|
94
|
+
record to the repository root by itself and prints where it put it.
|
|
95
|
+
|
|
77
96
|
## Report a stop, wherever it happens
|
|
78
97
|
|
|
79
98
|
This run reports its own stops. If you stop this run at any point, send one short report
|
|
80
99
|
before you stop. That covers a stop this prompt names, a stop a later prompt names, and a
|
|
81
|
-
stop no prompt anticipated, including one your own harness causes. Run the friction
|
|
82
|
-
|
|
100
|
+
stop no prompt anticipated, including one your own harness causes. Run the friction
|
|
101
|
+
command without another developer question. Do not ask the developer about telemetry: the
|
|
102
|
+
command applies the setting they already have.
|
|
83
103
|
|
|
84
104
|
```text
|
|
85
|
-
npx --yes copilotkit@4.
|
|
105
|
+
npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
|
|
86
106
|
```
|
|
87
107
|
|
|
88
108
|
Write one or two sentences to standard input: the step you stopped at and what stopped it.
|
|
@@ -97,13 +117,9 @@ Reporting a stop is not a route change. It does not resume the run, it is not a
|
|
|
97
117
|
for the developer, and it does not replace whatever the rule that stopped you says to do
|
|
98
118
|
next: send the report, then stop.
|
|
99
119
|
|
|
100
|
-
Until now the route out of an unsupported path was the only place that asked for a report,
|
|
101
|
-
so a stop anywhere else left no trace at all. A stop nobody hears about is a stop this
|
|
102
|
-
graph cannot fix.
|
|
103
|
-
|
|
104
120
|
## Check sign-in
|
|
105
121
|
|
|
106
|
-
Run `npx --yes copilotkit@4.
|
|
122
|
+
Run `npx --yes copilotkit@4.12.0 login --json` before any project work. This command
|
|
107
123
|
checks the current session. It starts sign-in only as needed. Treat this as a long-lived
|
|
108
124
|
streaming process. Do not wait for the command to exit before you read its standard output.
|
|
109
125
|
|
|
@@ -139,8 +155,8 @@ Do not use `whoami` for this check. It has no JSON output and some failures exit
|
|
|
139
155
|
zero. Do not put account tokens or credentials in the conversation.
|
|
140
156
|
|
|
141
157
|
When sign-in is settled, run
|
|
142
|
-
`npx --yes copilotkit@4.
|
|
158
|
+
`npx --yes copilotkit@4.12.0 onboard read research/gather`.
|
|
143
159
|
|
|
144
160
|
If sign-in stops onboarding, run
|
|
145
|
-
`npx --yes copilotkit@4.
|
|
161
|
+
`npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. It says nothing about
|
|
146
162
|
whether this project's stack is supported, which is not yet known at this point.
|
|
@@ -100,7 +100,7 @@ of this journey, and a drawer that lists nothing is not a reason to mint one. Li
|
|
|
100
100
|
tokens stay a self-hosted concern.
|
|
101
101
|
|
|
102
102
|
Where this journey's frontend framework ships no threads drawer -- React Native --, the
|
|
103
|
-
fifth item is proved by `npx --yes copilotkit@4.
|
|
103
|
+
fifth item is proved by `npx --yes copilotkit@4.12.0 verify --round-trip`, which sends a
|
|
104
104
|
real request and reads the answer back off the thread it landed on. The run says which of
|
|
105
105
|
the two it proved. Do not send a run to the managed Intelligence dashboard to prove this.
|
|
106
106
|
An authenticated browser session at a hosted dashboard is the one thing an agent-driven run
|
|
@@ -116,7 +116,7 @@ and passed -- so a run scored on either one was scored on the same fact. Every r
|
|
|
116
116
|
resolves that condition from, while `licenseStatus` is a compatibility projection of it
|
|
117
117
|
for older thread surfaces and outlives them only until those surfaces go.
|
|
118
118
|
|
|
119
|
-
Then run `npx --yes copilotkit@4.
|
|
119
|
+
Then run `npx --yes copilotkit@4.12.0 onboard read credentials/finalize-plan`.
|
|
120
120
|
|
|
121
121
|
If a selected page does not load after the second method, run
|
|
122
|
-
`npx --yes copilotkit@4.
|
|
122
|
+
`npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
|
|
@@ -9,21 +9,21 @@ a secret value.
|
|
|
9
9
|
|
|
10
10
|
Use a gentle wizard. Ask one short question at a time. Do not combine separate choices in
|
|
11
11
|
one question. Put the recommendation first, give its evidence in one sentence, and keep
|
|
12
|
-
the alternatives short. When project selection is unknown, ask only which
|
|
13
|
-
|
|
12
|
+
the alternatives short. When project selection is unknown, ask only which project to
|
|
13
|
+
use. Keep final plan approval as its own later question.
|
|
14
14
|
|
|
15
15
|
## If you stop in this phase
|
|
16
16
|
|
|
17
17
|
Several rules below stop onboarding: a refused classification value, a project selection
|
|
18
18
|
that reports a false field, a failed credential check, a model credential nobody can
|
|
19
|
-
place. Each one ends a run that reached project selection and never got a plan
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
place. Each one ends a run that reached project selection and never got a plan. Name the
|
|
20
|
+
exact file, value, or check that stopped you: a report that names only the step cannot be
|
|
21
|
+
acted on. Send one short report before you stop. Run the friction command without another
|
|
22
|
+
developer question. Do not ask the developer about telemetry: the command applies the
|
|
23
|
+
setting they already have.
|
|
24
24
|
|
|
25
25
|
```text
|
|
26
|
-
npx --yes copilotkit@4.
|
|
26
|
+
npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
Write one or two sentences to standard input: the step you stopped at and what stopped it.
|
|
@@ -58,7 +58,7 @@ the command refuses one of them from a run that was served that node.
|
|
|
58
58
|
Run this command with the exact selected slugs:
|
|
59
59
|
|
|
60
60
|
```text
|
|
61
|
-
npx --yes copilotkit@4.
|
|
61
|
+
npx --yes copilotkit@4.12.0 onboard classify --starting-state <starting-state> --agent-framework <agent-framework> --frontend <frontend>
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
Do not continue if a value is refused. Fix the value from the choices that the earlier
|
|
@@ -71,8 +71,8 @@ the runtime `.env` file, do not default to the repository root.
|
|
|
71
71
|
Set the environment path to `<target>/.env`.
|
|
72
72
|
|
|
73
73
|
Every credential this run writes goes to the environment path. That covers the project
|
|
74
|
-
key
|
|
75
|
-
|
|
74
|
+
key and the model credential. Do not write a credential to `.env.local`, or to any second
|
|
75
|
+
env file beside it. A project ignore file usually covers `.env` and not
|
|
76
76
|
`.env.local`, so a credential written there is untracked, visible, and added by the first
|
|
77
77
|
`git add -A`. And a second env file beside `.env` outranks it when a key is read back, so
|
|
78
78
|
the value the run depends on is the one it did not write.
|
|
@@ -131,11 +131,14 @@ way to finish.
|
|
|
131
131
|
### Create a project for this directory
|
|
132
132
|
|
|
133
133
|
No project is bound to this directory, so creating a project for this directory is the
|
|
134
|
-
default. Take the name from the directory that holds the expected project-record path.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
134
|
+
default. Take the name from the directory that holds the expected project-record path.
|
|
135
|
+
|
|
136
|
+
The CLI refuses a name that says nothing: a layer word from `project`, `app`, `apps`,
|
|
137
|
+
`src`, `web`, `frontend`, `backend`, `server`, `packages`, `repo`, a scratch name such as
|
|
138
|
+
`run-a`, `test-2`, or `tmp`, and anything under three characters. When the directory name
|
|
139
|
+
is one of those, use the nearest enclosing directory whose name is not. Ask when no
|
|
140
|
+
enclosing directory passes either: the parent of a scratch directory is usually another
|
|
141
|
+
one, and a second derived guess collides with the first.
|
|
139
142
|
|
|
140
143
|
Ask one question: confirm that name, give another, or ask to use a project they already
|
|
141
144
|
have. Name that third answer, so a developer who has one is not asked to guess
|
|
@@ -149,12 +152,16 @@ a project from a listing without an answer that names it. A project another run
|
|
|
149
152
|
minutes ago reads exactly like this directory's own, and every check after the selection
|
|
150
153
|
passes against the wrong one.
|
|
151
154
|
|
|
152
|
-
Create it, from the target directory:
|
|
155
|
+
Create it, from the target directory, passing the port research settled:
|
|
153
156
|
|
|
154
157
|
```text
|
|
155
|
-
npx --yes copilotkit@4.
|
|
158
|
+
npx --yes copilotkit@4.12.0 project select --create <name> \
|
|
159
|
+
--runtime-url http://localhost:<port>/api/copilotkit --json
|
|
156
160
|
```
|
|
157
161
|
|
|
162
|
+
`--runtime-url` is the only place the settled port is written down. Give the URL the
|
|
163
|
+
application serves on, mount path included.
|
|
164
|
+
|
|
158
165
|
If the command fails as a duplicate, the organization already holds that display name and
|
|
159
166
|
the refusal names the colliding slug. Do not select the colliding project. Ask whether that
|
|
160
167
|
project is this app's. If no developer answers, run the command again with the next free
|
|
@@ -166,13 +173,13 @@ Take this branch only when the developer asks for an existing project, or asks t
|
|
|
166
173
|
projects they have. Read the choices:
|
|
167
174
|
|
|
168
175
|
```text
|
|
169
|
-
npx --yes copilotkit@4.
|
|
176
|
+
npx --yes copilotkit@4.12.0 project list --json
|
|
170
177
|
```
|
|
171
178
|
|
|
172
179
|
Narrow them:
|
|
173
180
|
|
|
174
181
|
```text
|
|
175
|
-
npx --yes copilotkit@4.
|
|
182
|
+
npx --yes copilotkit@4.12.0 project list --search <query> --json
|
|
176
183
|
```
|
|
177
184
|
|
|
178
185
|
With `--json` the payload is the only thing on standard output, so it is safe to parse. Do
|
|
@@ -181,20 +188,23 @@ more. Do not order the projects by creation time: the newest project in the orga
|
|
|
181
188
|
the one another run created while this one was working, and it is the least likely to be
|
|
182
189
|
this directory's.
|
|
183
190
|
|
|
184
|
-
Then record the project they name, from the target directory
|
|
191
|
+
Then record the project they name, from the target directory, with the same
|
|
192
|
+
`--runtime-url`:
|
|
185
193
|
|
|
186
194
|
```text
|
|
187
|
-
npx --yes copilotkit@4.
|
|
195
|
+
npx --yes copilotkit@4.12.0 project select --project <slug-or-id> \
|
|
196
|
+
--runtime-url http://localhost:<port>/api/copilotkit --json
|
|
188
197
|
```
|
|
189
198
|
|
|
190
199
|
The two flags cannot be combined. A slug that does not exist fails and lists the real ones,
|
|
191
200
|
so a typo cannot record a selection that points at nothing.
|
|
192
201
|
|
|
193
202
|
Read the JSON result. It reports `selected_project_slug`, `config_path`,
|
|
194
|
-
`api_key_provisioned`, `project_file_written`,
|
|
195
|
-
level. The result does not contain a secret. Report
|
|
196
|
-
slug that the server selected or created.
|
|
197
|
-
`project_file_written`, and `environment_file_written`
|
|
203
|
+
`api_key_provisioned`, `project_file_written`, `environment_file_written`, and
|
|
204
|
+
`environment_file` at the top level. The result does not contain a secret. Report
|
|
205
|
+
`selected_project_slug` as the project slug that the server selected or created.
|
|
206
|
+
Require `api_key_provisioned`, `project_file_written`, and `environment_file_written`
|
|
207
|
+
to be true.
|
|
198
208
|
|
|
199
209
|
A run that wrote the project record without a key exits 75 and reports `"type": "partial"`
|
|
200
210
|
with a `retry_command`. That is the recoverable half: the record is kept, and the failure
|
|
@@ -226,4 +236,4 @@ project-record path and environment path as the credential setup path list. Do n
|
|
|
226
236
|
to the baseline yet.
|
|
227
237
|
|
|
228
238
|
When project selection is settled, run
|
|
229
|
-
`npx --yes copilotkit@4.
|
|
239
|
+
`npx --yes copilotkit@4.12.0 onboard read credentials/settle-credentials`.
|
|
@@ -68,26 +68,26 @@ another framework. Do not show the internal route.
|
|
|
68
68
|
|
|
69
69
|
Use exactly one matching internal route:
|
|
70
70
|
|
|
71
|
-
1. AG2: `npx --yes copilotkit@4.
|
|
72
|
-
2. Agno: `npx --yes copilotkit@4.
|
|
73
|
-
3. Built-in CopilotKit agent: `npx --yes copilotkit@4.
|
|
74
|
-
4. Claude Agent SDK Python: `npx --yes copilotkit@4.
|
|
75
|
-
5. Claude Agent SDK TypeScript: `npx --yes copilotkit@4.
|
|
76
|
-
6. CrewAI Flows: `npx --yes copilotkit@4.
|
|
77
|
-
7. Deep Agents: `npx --yes copilotkit@4.
|
|
78
|
-
8. LangGraph Python: `npx --yes copilotkit@4.
|
|
79
|
-
9. LangGraph FastAPI: `npx --yes copilotkit@4.
|
|
80
|
-
10. LangGraph TypeScript: `npx --yes copilotkit@4.
|
|
81
|
-
11. LlamaIndex: `npx --yes copilotkit@4.
|
|
82
|
-
12. ADK: `npx --yes copilotkit@4.
|
|
83
|
-
13. Microsoft Agent Framework Python: `npx --yes copilotkit@4.
|
|
84
|
-
14. Microsoft Agent Framework .NET: `npx --yes copilotkit@4.
|
|
85
|
-
15. Mastra: `npx --yes copilotkit@4.
|
|
86
|
-
16. MS Agent Harness .NET: `npx --yes copilotkit@4.
|
|
87
|
-
17. Pydantic AI: `npx --yes copilotkit@4.
|
|
88
|
-
18. Strands Agents Python: `npx --yes copilotkit@4.
|
|
89
|
-
19. Strands Agents TypeScript: `npx --yes copilotkit@4.
|
|
71
|
+
1. AG2: `npx --yes copilotkit@4.12.0 onboard read framework/ag2`
|
|
72
|
+
2. Agno: `npx --yes copilotkit@4.12.0 onboard read framework/agno`
|
|
73
|
+
3. Built-in CopilotKit agent: `npx --yes copilotkit@4.12.0 onboard read framework/built-in`
|
|
74
|
+
4. Claude Agent SDK Python: `npx --yes copilotkit@4.12.0 onboard read framework/claude-sdk-python`
|
|
75
|
+
5. Claude Agent SDK TypeScript: `npx --yes copilotkit@4.12.0 onboard read framework/claude-sdk-typescript`
|
|
76
|
+
6. CrewAI Flows: `npx --yes copilotkit@4.12.0 onboard read framework/crewai-flows`
|
|
77
|
+
7. Deep Agents: `npx --yes copilotkit@4.12.0 onboard read framework/deep-agents`
|
|
78
|
+
8. LangGraph Python: `npx --yes copilotkit@4.12.0 onboard read framework/langgraph-python`
|
|
79
|
+
9. LangGraph FastAPI: `npx --yes copilotkit@4.12.0 onboard read framework/langgraph-fastapi`
|
|
80
|
+
10. LangGraph TypeScript: `npx --yes copilotkit@4.12.0 onboard read framework/langgraph-typescript`
|
|
81
|
+
11. LlamaIndex: `npx --yes copilotkit@4.12.0 onboard read framework/llamaindex`
|
|
82
|
+
12. ADK: `npx --yes copilotkit@4.12.0 onboard read framework/google-adk`
|
|
83
|
+
13. Microsoft Agent Framework Python: `npx --yes copilotkit@4.12.0 onboard read framework/ms-agent-python`
|
|
84
|
+
14. Microsoft Agent Framework .NET: `npx --yes copilotkit@4.12.0 onboard read framework/ms-agent-dotnet`
|
|
85
|
+
15. Mastra: `npx --yes copilotkit@4.12.0 onboard read framework/mastra`
|
|
86
|
+
16. MS Agent Harness .NET: `npx --yes copilotkit@4.12.0 onboard read framework/ms-agent-harness-dotnet`
|
|
87
|
+
17. Pydantic AI: `npx --yes copilotkit@4.12.0 onboard read framework/pydantic-ai`
|
|
88
|
+
18. Strands Agents Python: `npx --yes copilotkit@4.12.0 onboard read framework/strands-python`
|
|
89
|
+
19. Strands Agents TypeScript: `npx --yes copilotkit@4.12.0 onboard read framework/strands-typescript`
|
|
90
90
|
|
|
91
91
|
If the project has an agent in another framework, or no listed framework fits, keep the
|
|
92
92
|
developer's current agent and run
|
|
93
|
-
`npx --yes copilotkit@4.
|
|
93
|
+
`npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
|
|
@@ -7,11 +7,11 @@ not read, show, store, or request a secret value.
|
|
|
7
7
|
## If you stop in this phase
|
|
8
8
|
|
|
9
9
|
Name the exact file, value, or check that stopped you, then send one short report. Run the
|
|
10
|
-
friction command without another developer question.
|
|
11
|
-
the
|
|
10
|
+
friction command without another developer question. Do not ask the developer about
|
|
11
|
+
telemetry: the command applies the setting they already have.
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
|
-
npx --yes copilotkit@4.
|
|
14
|
+
npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Write one or two sentences to standard input: the step you stopped at and what stopped it.
|
|
@@ -22,32 +22,64 @@ the whole run, so the estimate is optional on a stop report and only there. Send
|
|
|
22
22
|
source code, logs, or command output. A refused report is not a failed step: reword it and
|
|
23
23
|
send it again, or stop without a report.
|
|
24
24
|
|
|
25
|
+
## Check that the key landed where the application reads it
|
|
26
|
+
|
|
27
|
+
Do this first, before the Learning Container, and only on a run that selected a project.
|
|
28
|
+
A run that reused one wrote no key and has nothing to read.
|
|
29
|
+
|
|
30
|
+
`environment_file_written` in the selection result says a file was written. It does not say
|
|
31
|
+
which file, and it does not say whether the application reads it. `environment_file` says
|
|
32
|
+
both: `path` is the file, and `loadable_by_app` is whether an application loads env files
|
|
33
|
+
from that directory. Project selection is the only step that can answer the second one.
|
|
34
|
+
|
|
35
|
+
- `pass`: the key is where the application's own process reads it. Continue.
|
|
36
|
+
- `fail`: it is not. `environment_file.apps` names the directories that do load env files.
|
|
37
|
+
Run the selection again from one of them, with `--project <selected slug>` and the same
|
|
38
|
+
`--runtime-url`, then read the new result.
|
|
39
|
+
- `undetermined`: no application package was found, so the question has no answer. Record
|
|
40
|
+
that and continue.
|
|
41
|
+
|
|
42
|
+
Do not repair a `fail` by copying the file, linking it, or writing the key a second time.
|
|
43
|
+
One key in two files is a secret in a place nobody tracks, and the copy goes stale as soon
|
|
44
|
+
as the original is rotated.
|
|
45
|
+
|
|
46
|
+
A key the application cannot load stops nothing here. It fails the round-trip proof
|
|
47
|
+
instead, which is the most expensive step in the run.
|
|
48
|
+
|
|
25
49
|
## Settle the Learning Container for this project
|
|
26
50
|
|
|
27
51
|
Do this now, directly after project selection reports `selected_project_slug`, and before
|
|
28
52
|
the plan. On a run that reused a project rather than selecting one, take the slug from the
|
|
29
53
|
`projectSlug` field in the project record, which the follow-up check above already proved
|
|
30
|
-
is non-empty. Both paths reach this step. Learning assigns real threads to a Learning Container
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
54
|
+
is non-empty. Both paths reach this step. Learning assigns real threads to a Learning Container once.
|
|
55
|
+
New and existing threads can receive their first assignment, including after agent runs.
|
|
56
|
+
Set up the container here so new conversations contribute from the start. Existing threads
|
|
57
|
+
can join later, and Learning can collect only history whose source events still survive.
|
|
58
|
+
|
|
59
|
+
One container for this project is the default scope, so the id comes from the selected
|
|
60
|
+
project slug. Ask the CLI for it, from the target directory:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
npx --yes copilotkit@4.12.0 learning containers default-id --json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The command reads the local project record. It needs no credential and makes no network
|
|
67
|
+
call, so it answers before the run asks the platform anything. Read `status` from the
|
|
68
|
+
payload:
|
|
69
|
+
|
|
70
|
+
- `"status": "success"` carries the id in `containerId`. Use that exact string.
|
|
71
|
+
- `"status": "skipped"` means there is no id to use. `slug-unusable` means the slug leaves
|
|
72
|
+
nothing the id contract accepts. `no-project-record` means no project is selected in
|
|
73
|
+
this directory. Skip this step and name the skip, rather than inventing a name.
|
|
74
|
+
|
|
75
|
+
Never spell the id yourself. Two spellings of one project's id give it two containers,
|
|
76
|
+
each below the 15-conversation line on its own, and nothing reports that the split
|
|
77
|
+
happened.
|
|
46
78
|
|
|
47
79
|
Then ask the platform about that id, from the target directory:
|
|
48
80
|
|
|
49
81
|
```text
|
|
50
|
-
npx --yes copilotkit@4.
|
|
82
|
+
npx --yes copilotkit@4.12.0 learning containers get <id> --json
|
|
51
83
|
```
|
|
52
84
|
|
|
53
85
|
The read carries the same availability gate as the create, so it answers the entitlement
|
|
@@ -72,7 +104,7 @@ Never invent an id, scrape a dashboard, or treat an arbitrary string as a contai
|
|
|
72
104
|
Report what the read found, before anything is planned:
|
|
73
105
|
|
|
74
106
|
```text
|
|
75
|
-
npx --yes copilotkit@4.
|
|
107
|
+
npx --yes copilotkit@4.12.0 onboard checkpoint --phase container-surveyed
|
|
76
108
|
```
|
|
77
109
|
|
|
78
110
|
Carry the derived id into the planning subagent's handoff, with whether the platform
|
|
@@ -102,7 +134,7 @@ protected path list. Also add each project file that the developer changed for m
|
|
|
102
134
|
credentials. Record them in the baseline from the target app directory:
|
|
103
135
|
|
|
104
136
|
```text
|
|
105
|
-
npx --yes copilotkit@4.
|
|
137
|
+
npx --yes copilotkit@4.12.0 onboard protect --path <path>
|
|
106
138
|
```
|
|
107
139
|
|
|
108
140
|
Pass one `--path` for each. The command captures a digest for each path and never re-reads
|
|
@@ -116,7 +148,7 @@ Then re-capture the files this graph wrote itself. For each path the first captu
|
|
|
116
148
|
as `deferred` that this run has now written, run:
|
|
117
149
|
|
|
118
150
|
```text
|
|
119
|
-
npx --yes copilotkit@4.
|
|
151
|
+
npx --yes copilotkit@4.12.0 onboard protect --rebaseline --path <path>
|
|
120
152
|
```
|
|
121
153
|
|
|
122
154
|
From that point they are protected like any other path, so a later step that rewrites
|
|
@@ -135,7 +167,7 @@ environment path. The command below is what to run at that point, from the targe
|
|
|
135
167
|
directory:
|
|
136
168
|
|
|
137
169
|
```text
|
|
138
|
-
npx --yes copilotkit@4.
|
|
170
|
+
npx --yes copilotkit@4.12.0 onboard protect --accept-credential --path <environment path>
|
|
139
171
|
```
|
|
140
172
|
|
|
141
173
|
The command compares the variable names the baseline recorded with the names the file holds
|
|
@@ -150,4 +182,4 @@ now. Read its result:
|
|
|
150
182
|
is not a failed step. It answers the question and the run carries on.
|
|
151
183
|
|
|
152
184
|
When the credential question is answered, run
|
|
153
|
-
`npx --yes copilotkit@4.
|
|
185
|
+
`npx --yes copilotkit@4.12.0 onboard read credentials/write-plan`.
|
|
@@ -7,11 +7,11 @@ the run needs from them.
|
|
|
7
7
|
## If you stop in this phase
|
|
8
8
|
|
|
9
9
|
Name the exact file, value, or check that stopped you, then send one short report. Run the
|
|
10
|
-
friction command without another developer question.
|
|
11
|
-
the
|
|
10
|
+
friction command without another developer question. Do not ask the developer about
|
|
11
|
+
telemetry: the command applies the setting they already have.
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
|
-
npx --yes copilotkit@4.
|
|
14
|
+
npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Write one or two sentences to standard input: the step you stopped at and what stopped it.
|
|
@@ -52,7 +52,7 @@ proof subagents:
|
|
|
52
52
|
Fetch them together with the pages already selected rather than on their own.
|
|
53
53
|
|
|
54
54
|
Spawn one planning subagent. Tell it to run
|
|
55
|
-
`npx --yes copilotkit@4.
|
|
55
|
+
`npx --yes copilotkit@4.12.0 onboard read subagent/create-plan` first and follow the prompt
|
|
56
56
|
it returns. If that read fails because the subagent cannot use the shell, stop that subagent.
|
|
57
57
|
Run the same command yourself, then spawn a fresh subagent with the returned prompt and the
|
|
58
58
|
same handoff. Give it the repository findings, selected framework, frontend, model, credential
|
|
@@ -63,7 +63,7 @@ Wait for the subagent to finish.
|
|
|
63
63
|
Continue only if the planning result starts with `Status: passed`. For `Status: failed`,
|
|
64
64
|
send the result back to the planning subagent for repair, up to three attempts. For
|
|
65
65
|
`Status: blocked`, or a third failed result, run
|
|
66
|
-
`npx --yes copilotkit@4.
|
|
66
|
+
`npx --yes copilotkit@4.12.0 onboard read stopped/run-failed`. A plan this run cannot
|
|
67
67
|
write is a run that broke, not a stack the documentation does not cover. Do not show or
|
|
68
68
|
ask for approval of a non-pass plan.
|
|
69
69
|
|
|
@@ -87,7 +87,7 @@ that waits at the terminal through all of them for a question that never comes.
|
|
|
87
87
|
the same message as the plan, and do not turn it into a second question.
|
|
88
88
|
|
|
89
89
|
If the developer approves the plan, run
|
|
90
|
-
`npx --yes copilotkit@4.
|
|
90
|
+
`npx --yes copilotkit@4.12.0 onboard read implementation/build-and-validate`.
|
|
91
91
|
|
|
92
92
|
If no exact supported path or documentation URL exists, run
|
|
93
|
-
`npx --yes copilotkit@4.
|
|
93
|
+
`npx --yes copilotkit@4.12.0 onboard read unsupported/no-validated-path`.
|
|
@@ -9,11 +9,12 @@ This fallback contains unproved steps. Use the approved plan in step order.
|
|
|
9
9
|
|
|
10
10
|
Several rules below stop onboarding: a blocked or third failed implementation result, a
|
|
11
11
|
changed protected path, a blocked or third failed proof, a fix that needs changes to the
|
|
12
|
-
existing agent or frontend. Send one short report before you stop. Run the friction
|
|
13
|
-
|
|
12
|
+
existing agent or frontend. Send one short report before you stop. Run the friction
|
|
13
|
+
command without another developer question. Do not ask the developer about telemetry: the
|
|
14
|
+
command applies the setting they already have.
|
|
14
15
|
|
|
15
16
|
```text
|
|
16
|
-
npx --yes copilotkit@4.
|
|
17
|
+
npx --yes copilotkit@4.12.0 onboard friction --phase stop --category <slug>
|
|
17
18
|
```
|
|
18
19
|
|
|
19
20
|
Write one or two sentences to standard input: the step you stopped at and what stopped it.
|
|
@@ -59,13 +60,13 @@ stop.
|
|
|
59
60
|
|
|
60
61
|
Use these rules for every protected-path check in this fallback:
|
|
61
62
|
|
|
62
|
-
- Run `npx --yes copilotkit@4.
|
|
63
|
+
- Run `npx --yes copilotkit@4.12.0 onboard audit` from the target app directory.
|
|
63
64
|
- If a result starts with `Status: blocked`, stop onboarding and report the printed reason.
|
|
64
65
|
It proved nothing changed, so do not report a preservation failure.
|
|
65
66
|
- If a result reports a changed protected path this run wrote, stop onboarding.
|
|
66
67
|
- If a result reports a changed path that no Files changed section from this run names,
|
|
67
68
|
the change came from outside the run. Accept it by name with
|
|
68
|
-
`npx --yes copilotkit@4.
|
|
69
|
+
`npx --yes copilotkit@4.12.0 onboard protect --accept-external --path <path>`, run the
|
|
69
70
|
audit again, and name it in the closing report.
|
|
70
71
|
- If no Files changed section from this run covers the step that wrote it, stop
|
|
71
72
|
onboarding. The proof subagent here returns no such section, so a finding it raises is
|
|
@@ -118,13 +119,13 @@ application passes proof. Report each tool result separately from the proof resu
|
|
|
118
119
|
Report the documentation gap and each assumption with the proof evidence. Do not claim
|
|
119
120
|
that the selected documentation proved an inferred step.
|
|
120
121
|
|
|
121
|
-
When the proof is complete, run `npx --yes copilotkit@4.
|
|
122
|
+
When the proof is complete, run `npx --yes copilotkit@4.12.0 onboard complete`, carrying the
|
|
122
123
|
surface-check result the proof subagent returned. Pass exactly one flag, matching this
|
|
123
124
|
journey's surface:
|
|
124
125
|
|
|
125
126
|
```text
|
|
126
|
-
npx --yes copilotkit@4.
|
|
127
|
-
npx --yes copilotkit@4.
|
|
127
|
+
npx --yes copilotkit@4.12.0 onboard complete --visual-check <outcome>
|
|
128
|
+
npx --yes copilotkit@4.12.0 onboard complete --device-check <outcome>
|
|
128
129
|
```
|
|
129
130
|
|
|
130
131
|
`--visual-check` is for a web frontend and takes `performed`, `skipped-no-browser-tool`, or
|