copilotkit 4.9.47 → 4.9.60
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 +179 -9
- package/cli-build-info.json +8 -8
- package/index.js +13012 -8898
- package/onboarding/index.json +162 -1
- package/onboarding/prompts/authenticate/start.md +41 -14
- package/onboarding/prompts/conversion/plan.md +3 -3
- package/onboarding/prompts/credentials/finalize-plan.md +54 -13
- package/onboarding/prompts/credentials/plan.md +20 -20
- package/onboarding/prompts/fallback/best-effort.md +6 -6
- package/onboarding/prompts/feature/a2ui/implement.md +32 -0
- package/onboarding/prompts/feature/a2ui/proof.md +34 -0
- package/onboarding/prompts/feature/a2ui/start.md +55 -0
- package/onboarding/prompts/feature/chat-suggestions/implement.md +28 -0
- package/onboarding/prompts/feature/chat-suggestions/proof.md +26 -0
- package/onboarding/prompts/feature/chat-suggestions/start.md +46 -0
- package/onboarding/prompts/feature/learning/implement.md +106 -0
- package/onboarding/prompts/feature/learning/proof.md +45 -0
- package/onboarding/prompts/feature/learning/start.md +56 -0
- package/onboarding/prompts/feature/open-generative-ui/implement.md +28 -0
- package/onboarding/prompts/feature/open-generative-ui/proof.md +27 -0
- package/onboarding/prompts/feature/open-generative-ui/start.md +47 -0
- package/onboarding/prompts/feature/realtime-sync/implement.md +38 -0
- package/onboarding/prompts/feature/realtime-sync/proof.md +28 -0
- package/onboarding/prompts/feature/realtime-sync/start.md +50 -0
- package/onboarding/prompts/feature/rich-threads/implement.md +41 -0
- package/onboarding/prompts/feature/rich-threads/proof.md +27 -0
- package/onboarding/prompts/feature/rich-threads/start.md +52 -0
- package/onboarding/prompts/feature/stop.md +41 -0
- package/onboarding/prompts/feature/voice/implement.md +28 -0
- package/onboarding/prompts/feature/voice/proof.md +27 -0
- package/onboarding/prompts/feature/voice/start.md +45 -0
- 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 +3 -3
- package/onboarding/prompts/frontend/nextjs.md +3 -3
- package/onboarding/prompts/frontend/plan.md +6 -6
- 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 +83 -13
- package/onboarding/prompts/proof/complete.md +10 -10
- package/onboarding/prompts/proof/oss-baseline.md +16 -7
- package/onboarding/prompts/proof/round-trip.md +16 -9
- package/onboarding/prompts/starter/clone.md +5 -5
- package/onboarding/prompts/subagent/create-plan.md +11 -3
- package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
- package/onboarding/prompts/subagent/prove-round-trip.md +13 -10
- package/onboarding/prompts/unsupported/no-validated-path.md +4 -4
- package/package.json +1 -1
- package/release/release-tool.js +37 -11
|
@@ -2,12 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
Do not implement the plan yourself. Use the step order in the approved plan.
|
|
4
4
|
|
|
5
|
+
## Authorization requested by the plan
|
|
6
|
+
|
|
7
|
+
Approving the plan is the developer agreeing to every path it listed under
|
|
8
|
+
`Authorization requested`. Record each one before any implementation starts, from the target
|
|
9
|
+
app directory:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
npx --yes copilotkit@4.9.60 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Consent has to be on the record before the file moves, so a call made after the change is
|
|
16
|
+
refused. Continue only if every result starts with `Status: passed`. If the plan listed
|
|
17
|
+
nothing there, skip this section.
|
|
18
|
+
|
|
19
|
+
If a path the plan listed has already changed, the developer changed it after the capture.
|
|
20
|
+
No implementation step has run yet, so the change is theirs rather than this run's. Record
|
|
21
|
+
consent over it by adding one flag:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
npx --yes copilotkit@4.9.60 onboard protect --authorize --path <path> --reason "<the plan's sentence>" --with-prior-change
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The flag records their change as drift beside the consent, so the closing report names both
|
|
28
|
+
the change they made and the change this run was allowed to make. Use it only here, before
|
|
29
|
+
any implementation step runs. After one has run, a changed path is this run's own work, and
|
|
30
|
+
the route-out rules apply.
|
|
31
|
+
|
|
32
|
+
This section is the only place the plan's own authorizations are recorded. Once this run
|
|
33
|
+
reports its plan, the CLI refuses `--authorize` for every path the plan did not name. The
|
|
34
|
+
developer approved a plan, not a permission to reach further, so there is no consent to
|
|
35
|
+
record for a path that comes up later. If you find such a path mid-run, use the route below
|
|
36
|
+
rather than this section.
|
|
37
|
+
|
|
5
38
|
## Protected-path audit
|
|
6
39
|
|
|
7
40
|
Run the audit from the target app directory:
|
|
8
41
|
|
|
9
42
|
```text
|
|
10
|
-
npx --yes copilotkit@4.9.
|
|
43
|
+
npx --yes copilotkit@4.9.60 onboard audit
|
|
11
44
|
```
|
|
12
45
|
|
|
13
46
|
It compares every protected path with the digest the CLI captured for it. Its result starts
|
|
@@ -18,26 +51,63 @@ the result starts with `Status: passed`.
|
|
|
18
51
|
revert a protected path. Also do not retry the audit: it reads files, so a second run of it
|
|
19
52
|
answers the same.
|
|
20
53
|
|
|
21
|
-
Decide each path the audit names, one at a time.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
54
|
+
Decide each path the audit names, one at a time.
|
|
55
|
+
|
|
56
|
+
A path the audit lists under `Authorized to change:` is not a finding. The developer approved
|
|
57
|
+
it, the record says why, and the audit reports it rather than failing on it. Carry it into the
|
|
58
|
+
summary with its reason. Nothing else is needed for it.
|
|
59
|
+
|
|
60
|
+
For every other path, the rule is unchanged. Accept a path only when you can show that this
|
|
61
|
+
run did not write it. Every implementation subagent reports what it touched in its Files
|
|
62
|
+
changed section, so the test is whether the path appears in any Files changed section this
|
|
63
|
+
run collected. If it appears in one, or the sections do not settle it, the change is this
|
|
64
|
+
run's own: use the route-out rules. A plan names a protected path only under
|
|
65
|
+
`Authorization requested`, so a plan that does not name it there proves nothing on its own.
|
|
66
|
+
|
|
67
|
+
A Files changed section is the only evidence that settles who wrote a file. Reading the
|
|
68
|
+
file settles nothing. Recognizing the code, knowing what it is for, seeing that it matches
|
|
69
|
+
what this run was building, believing this run wrote it, or finding it broken in a way this
|
|
70
|
+
run explains are all readings of the file, and the file cannot say who wrote it.
|
|
71
|
+
A path you cannot find in a Files changed section is the developer's, however sure you are
|
|
72
|
+
that it is not.
|
|
27
73
|
|
|
28
74
|
A path that no Files changed section names changed outside the run, and it is the
|
|
29
75
|
developer's own file. Accept it by name:
|
|
30
76
|
|
|
31
77
|
```text
|
|
32
|
-
npx --yes copilotkit@4.9.
|
|
78
|
+
npx --yes copilotkit@4.9.60 onboard protect --accept-external --path <path>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
A changed env file is its own case. This run asked the developer to place a credential
|
|
82
|
+
there, so it takes the credential route rather than this one:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
npx --yes copilotkit@4.9.60 onboard protect --accept-credential --path <path>
|
|
33
86
|
```
|
|
34
87
|
|
|
88
|
+
That route proves no recorded credential was lost, instead of taking the run's word that it
|
|
89
|
+
did not write the file. Read its refusal and stop if it names a lost variable.
|
|
90
|
+
|
|
35
91
|
Pass one `--path` for each path you accept. Accept only a path the audit named, and only
|
|
36
92
|
when no step of this run wrote it. The command re-captures that path, records that this
|
|
37
93
|
run accepted the change, and prints it. Run the audit again afterwards: it passes and
|
|
38
94
|
names every accepted path, and the closing summary must name them too. An acceptance is
|
|
39
95
|
not a repair. It proves nothing about what the file now holds.
|
|
40
96
|
|
|
97
|
+
The prohibition on repairing a protected path holds wherever the path comes up, not only
|
|
98
|
+
here. A failing check is the usual way it comes up: the diagnosis lands on a file, and the
|
|
99
|
+
file turns out to be protected. A correct diagnosis does not make the file this run's, and
|
|
100
|
+
neither does a one-line fix. Never repair, reset, or revert it. Ask the developer to allow
|
|
101
|
+
the change, and record the answer they give:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
npx --yes copilotkit@4.9.60 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Use it only for an answer a developer actually gave. It records the consent as taken
|
|
108
|
+
outside the approved plan, and every later audit and the closing report say so, which is
|
|
109
|
+
what tells the developer they were asked mid-run. If you cannot ask, route out.
|
|
110
|
+
|
|
41
111
|
`Status: blocked` means the audit has no baseline to read. A blocked audit compared
|
|
42
112
|
nothing and proved nothing changed. It is not a preservation failure: do not report a
|
|
43
113
|
protected path as changed. Report the printed reason and use the route-out rules.
|
|
@@ -48,11 +118,11 @@ acceptance clears it, or route out. Do not send an audit result to a repair work
|
|
|
48
118
|
Report the plan this run is about to implement:
|
|
49
119
|
|
|
50
120
|
```text
|
|
51
|
-
npx --yes copilotkit@4.9.
|
|
121
|
+
npx --yes copilotkit@4.9.60 onboard checkpoint --phase plan-written
|
|
52
122
|
```
|
|
53
123
|
|
|
54
124
|
Spawn one implementation subagent. Tell it to run
|
|
55
|
-
`npx --yes copilotkit@4.9.
|
|
125
|
+
`npx --yes copilotkit@4.9.60 onboard read subagent/implement-and-validate` first and follow
|
|
56
126
|
the prompt it returns. If that read fails because the subagent cannot use the shell, stop that
|
|
57
127
|
subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
|
|
58
128
|
and the same handoff. Give it the plan, selected framework, frontend, model, exact target app
|
|
@@ -72,11 +142,11 @@ returned. Continue to proof only when that audit passes.
|
|
|
72
142
|
After the selected implementation path passes, report it:
|
|
73
143
|
|
|
74
144
|
```text
|
|
75
|
-
npx --yes copilotkit@4.9.
|
|
145
|
+
npx --yes copilotkit@4.9.60 onboard checkpoint --phase build-validated
|
|
76
146
|
```
|
|
77
147
|
|
|
78
148
|
Then run
|
|
79
|
-
`npx --yes copilotkit@4.9.
|
|
149
|
+
`npx --yes copilotkit@4.9.60 onboard read proof/round-trip`.
|
|
80
150
|
|
|
81
151
|
## Repair rules
|
|
82
152
|
|
|
@@ -94,4 +164,4 @@ Route out for `Status: blocked`. Route out only when the failure is not yours to
|
|
|
94
164
|
failure is in code this run did not write, the fix requires changing the developer's existing
|
|
95
165
|
agent or frontend, the same command still fails after three repair attempts, or the
|
|
96
166
|
documentation does not support the plan. In those cases run
|
|
97
|
-
`npx --yes copilotkit@4.9.
|
|
167
|
+
`npx --yes copilotkit@4.9.60 onboard read unsupported/no-validated-path`.
|
|
@@ -64,7 +64,7 @@ Name the debugging surface this journey's frontend can reach, rather than the on
|
|
|
64
64
|
of the documentation leads with. For a web frontend it is the CopilotKit Inspector. For
|
|
65
65
|
React Native there is no Inspector: it is a browser overlay built on a DOM custom element,
|
|
66
66
|
and `@copilotkit/react-native` does not ship it. Give a mobile developer
|
|
67
|
-
`npx --yes copilotkit@4.9.
|
|
67
|
+
`npx --yes copilotkit@4.9.60 verify --round-trip`, the runtime's own log, the AG-UI
|
|
68
68
|
Event Inspector in the CopilotKit VS Code extension, and the Intelligence thread view
|
|
69
69
|
instead. Naming the Inspector to a developer who cannot open it costs them the time it
|
|
70
70
|
takes to conclude their own wiring is broken.
|
|
@@ -76,7 +76,7 @@ the friction commands without another developer question. The CLI telemetry gate
|
|
|
76
76
|
whether the report is sent.
|
|
77
77
|
|
|
78
78
|
```text
|
|
79
|
-
npx --yes copilotkit@4.9.
|
|
79
|
+
npx --yes copilotkit@4.9.60 onboard friction --category <slug> --cost-seconds <seconds>
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
Write one or two sentences on the command's standard input. Pick one category from
|
|
@@ -88,7 +88,7 @@ Pass --docs-path only for a docs-missing or docs-wrong report, naming the page t
|
|
|
88
88
|
is about:
|
|
89
89
|
|
|
90
90
|
```text
|
|
91
|
-
npx --yes copilotkit@4.9.
|
|
91
|
+
npx --yes copilotkit@4.9.60 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
Give the page's site-relative path or its full URL, with no spaces, query string, or
|
|
@@ -102,17 +102,17 @@ a failed step and not a failed onboarding run. Reword it and send it again, or m
|
|
|
102
102
|
on. A run that proves a round trip is complete whether or not it reported friction.
|
|
103
103
|
|
|
104
104
|
Tell the developer when you send a friction report. Do not quote or summarize the report
|
|
105
|
-
unless the developer asks. If the CLI says
|
|
106
|
-
state
|
|
105
|
+
unless the developer asks. If the CLI says the report was not sent,
|
|
106
|
+
state what it said and continue without another question.
|
|
107
107
|
|
|
108
|
-
When the evidence is gathered, run `npx --yes copilotkit@4.9.
|
|
108
|
+
When the evidence is gathered, run `npx --yes copilotkit@4.9.60 onboard complete`, carrying
|
|
109
109
|
the surface-check outcome the proof subagent returned. Pass exactly one flag, and pass the
|
|
110
110
|
one that matches this journey's surface.
|
|
111
111
|
|
|
112
112
|
For a web frontend -- React SPA, Next.js, Angular, Vue:
|
|
113
113
|
|
|
114
114
|
```text
|
|
115
|
-
npx --yes copilotkit@4.9.
|
|
115
|
+
npx --yes copilotkit@4.9.60 onboard complete --visual-check <outcome>
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
The outcome is one of `performed`, `skipped-no-browser-tool`, or `failed`.
|
|
@@ -120,7 +120,7 @@ The outcome is one of `performed`, `skipped-no-browser-tool`, or `failed`.
|
|
|
120
120
|
For React Native:
|
|
121
121
|
|
|
122
122
|
```text
|
|
123
|
-
npx --yes copilotkit@4.9.
|
|
123
|
+
npx --yes copilotkit@4.9.60 onboard complete --device-check <outcome>
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
The outcome is one of `performed`, `skipped-no-device`, or `failed`.
|
|
@@ -132,7 +132,7 @@ browser-origin CORS, so the flag you pass is how this run states which surface i
|
|
|
132
132
|
For a web frontend, also pass the URL the browser opened:
|
|
133
133
|
|
|
134
134
|
```text
|
|
135
|
-
npx --yes copilotkit@4.9.
|
|
135
|
+
npx --yes copilotkit@4.9.60 onboard complete --visual-check <outcome> \
|
|
136
136
|
--frontend-url <the url you opened>
|
|
137
137
|
```
|
|
138
138
|
|
|
@@ -151,7 +151,7 @@ If the round trip proved and something after it still blocked this run, add `--b
|
|
|
151
151
|
to the same command:
|
|
152
152
|
|
|
153
153
|
```text
|
|
154
|
-
npx --yes copilotkit@4.9.
|
|
154
|
+
npx --yes copilotkit@4.9.60 onboard complete --visual-check performed --blocked-by <cause>
|
|
155
155
|
```
|
|
156
156
|
|
|
157
157
|
The cause is one of `inspector` for a debugging surface that did not open,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Prove the existing OSS baseline
|
|
2
2
|
|
|
3
3
|
Do not prove the baseline yourself. Spawn one proof subagent. Tell it to run
|
|
4
|
-
`npx --yes copilotkit@4.9.
|
|
4
|
+
`npx --yes copilotkit@4.9.60 onboard read subagent/prove-oss-baseline` first and follow the
|
|
5
5
|
prompt it returns. If that read fails because the subagent cannot use the shell, stop that
|
|
6
6
|
subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
|
|
7
7
|
and the same handoff. Give it the repository findings and exact CLI package spec.
|
|
@@ -17,7 +17,7 @@ Wait for the subagent to finish.
|
|
|
17
17
|
Record what that proof returned before you route on it:
|
|
18
18
|
|
|
19
19
|
```text
|
|
20
|
-
npx --yes copilotkit@4.9.
|
|
20
|
+
npx --yes copilotkit@4.9.60 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Report the gate whatever it returned. Pass `passed` when the subagent proved a predicate,
|
|
@@ -35,14 +35,23 @@ Do not change project files before this proof ends. Starting existing developmen
|
|
|
35
35
|
processes and their ignored runtime files is allowed.
|
|
36
36
|
|
|
37
37
|
If the subagent proves the `both-oss` predicate, keep its evidence with the plan and run
|
|
38
|
-
`npx --yes copilotkit@4.9.
|
|
38
|
+
`npx --yes copilotkit@4.9.60 onboard read conversion/plan`. That project already works.
|
|
39
39
|
What it needs is the conversion, not a build.
|
|
40
40
|
|
|
41
|
-
If
|
|
42
|
-
`
|
|
41
|
+
If the proof does not establish the baseline, record the starting state
|
|
42
|
+
`both-copilotkit-unproved` and run
|
|
43
|
+
`npx --yes copilotkit@4.9.60 onboard read credentials/plan`. This prompt is served
|
|
43
44
|
whenever a project looks like an OSS integration, so a baseline that did not prove is an
|
|
44
|
-
ordinary starting state rather than a failure.
|
|
45
|
+
ordinary starting state rather than a failure. Keep the failing predicate with the plan.
|
|
46
|
+
|
|
47
|
+
Do not record a state that says the CopilotKit integration is absent. This prompt is
|
|
48
|
+
reached only when the merged findings prove that the integration is there, so `both` is
|
|
49
|
+
a different project from this one, and `classify` refuses it later in the run.
|
|
50
|
+
|
|
51
|
+
Where the proof fails predicate 3, the live runtime already holds an Intelligence
|
|
52
|
+
client. Say so in the plan. Part of the work this run exists for is in place already,
|
|
53
|
+
and the plan preserves it rather than repeating it.
|
|
45
54
|
|
|
46
55
|
If it cannot identify the running process safely, exposes a secret, or finds a baseline
|
|
47
56
|
failure that cannot be classified, run
|
|
48
|
-
`npx --yes copilotkit@4.9.
|
|
57
|
+
`npx --yes copilotkit@4.9.60 onboard read unsupported/no-validated-path`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Prove the user journey
|
|
2
2
|
|
|
3
3
|
Do not do the proof work yourself. Spawn one proof subagent. Tell it to run
|
|
4
|
-
`npx --yes copilotkit@4.9.
|
|
4
|
+
`npx --yes copilotkit@4.9.60 onboard read subagent/prove-round-trip` first and follow the
|
|
5
5
|
prompt it returns. If that read fails because the subagent cannot use the shell, stop that
|
|
6
6
|
subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
|
|
7
7
|
and the same handoff. Give it the selected framework, frontend, model, approved plan, selected
|
|
@@ -23,13 +23,13 @@ pass the time.
|
|
|
23
23
|
Report each attempt at the journey as it ends, counting from one:
|
|
24
24
|
|
|
25
25
|
```text
|
|
26
|
-
npx --yes copilotkit@4.9.
|
|
26
|
+
npx --yes copilotkit@4.9.60 onboard checkpoint --phase journey-attempted --attempt 1
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
Record what that proof returned before you route on it:
|
|
30
30
|
|
|
31
31
|
```text
|
|
32
|
-
npx --yes copilotkit@4.9.
|
|
32
|
+
npx --yes copilotkit@4.9.60 onboard proof --step round-trip --outcome <passed|failed|skipped>
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. The
|
|
@@ -37,7 +37,7 @@ command prints one line and sends nothing else. Where a repair cycle runs the pr
|
|
|
37
37
|
record each attempt as it ends.
|
|
38
38
|
|
|
39
39
|
For every protected-path audit in this prompt, run
|
|
40
|
-
`npx --yes copilotkit@4.9.
|
|
40
|
+
`npx --yes copilotkit@4.9.60 onboard audit` from the target app directory. If its result
|
|
41
41
|
starts with `Status: blocked`, report the printed reason and use the route-out rules below.
|
|
42
42
|
A blocked audit proved nothing changed and is not a preservation failure. If a
|
|
43
43
|
protected-path audit reports a changed path, decide it the way the implementation prompt
|
|
@@ -46,13 +46,20 @@ returns none, so a finding with no Files changed section to test against routes
|
|
|
46
46
|
path one of those sections names is this run's own change and routes out too. Accept a
|
|
47
47
|
path only when a section this run collected covers the step that wrote it and does not
|
|
48
48
|
name it:
|
|
49
|
-
`npx --yes copilotkit@4.9.
|
|
49
|
+
`npx --yes copilotkit@4.9.60 onboard protect --accept-external --path <path>`. Then run
|
|
50
50
|
the audit again and name the path in the closing summary. Never repair, reset, or revert a
|
|
51
51
|
protected path.
|
|
52
52
|
|
|
53
|
+
That holds for a repair cycle too. When the fix for a failing check lands on a protected
|
|
54
|
+
path, the path is still the developer's, however right the diagnosis is and however small
|
|
55
|
+
the fix. Reading the file never settles who wrote it. Ask the developer to allow the
|
|
56
|
+
change, and record their answer with
|
|
57
|
+
`npx --yes copilotkit@4.9.60 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"`,
|
|
58
|
+
or route out. Never repair it, and never send it to a repair worker.
|
|
59
|
+
|
|
53
60
|
If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
|
|
54
61
|
`proof/complete` only if that audit passes. After the audit passes, run
|
|
55
|
-
`npx --yes copilotkit@4.9.
|
|
62
|
+
`npx --yes copilotkit@4.9.60 onboard read proof/complete`. A performed surface outcome with
|
|
56
63
|
the full round trip is core success even if a continued-development tool fails. A skipped
|
|
57
64
|
surface outcome still enters `proof/complete` so the CLI records the blocked result. Do not
|
|
58
65
|
describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
|
|
@@ -108,7 +115,7 @@ Restart each project-owned process changed by the repair. Report the cycle, coun
|
|
|
108
115
|
one:
|
|
109
116
|
|
|
110
117
|
```text
|
|
111
|
-
npx --yes copilotkit@4.9.
|
|
118
|
+
npx --yes copilotkit@4.9.60 onboard checkpoint --phase repair-attempted --attempt 1
|
|
112
119
|
```
|
|
113
120
|
|
|
114
121
|
Then spawn a fresh proof subagent
|
|
@@ -126,7 +133,7 @@ and proof cycles.
|
|
|
126
133
|
|
|
127
134
|
Route out only when the failure is not yours to fix, when the same proof still fails after
|
|
128
135
|
three attempts, or when no evidence of the round trip can be produced. In those cases run
|
|
129
|
-
`npx --yes copilotkit@4.9.
|
|
136
|
+
`npx --yes copilotkit@4.9.60 onboard read unsupported/no-validated-path`. All three are
|
|
130
137
|
about the round trip itself. A round trip that proved is not one of them, whatever failed
|
|
131
138
|
after it.
|
|
132
139
|
|
|
@@ -136,7 +143,7 @@ Run the feedback command without another developer question. The CLI telemetry g
|
|
|
136
143
|
whether the report is sent.
|
|
137
144
|
|
|
138
145
|
```text
|
|
139
|
-
npx --yes copilotkit@4.9.
|
|
146
|
+
npx --yes copilotkit@4.9.60 onboard feedback
|
|
140
147
|
```
|
|
141
148
|
|
|
142
149
|
Write at most four lines to standard input: the step you stopped at and what stopped it.
|
|
@@ -43,7 +43,7 @@ the derived name.
|
|
|
43
43
|
Only if the developer asks for an existing project, or asks to see the projects they have,
|
|
44
44
|
read the choices:
|
|
45
45
|
|
|
46
|
-
`npx --yes copilotkit@4.9.
|
|
46
|
+
`npx --yes copilotkit@4.9.60 project list --json`
|
|
47
47
|
|
|
48
48
|
Then ask which one to use. Do not order the projects by creation time. If the developer
|
|
49
49
|
already gave this answer, do not ask again. Do not read a secret value. Do not show or
|
|
@@ -53,7 +53,7 @@ Run the command from the parent directory. Do not inspect another entry in the p
|
|
|
53
53
|
directory. Replace each placeholder with the recorded value. Do not run a placeholder as
|
|
54
54
|
a shell argument.
|
|
55
55
|
|
|
56
|
-
`npx --yes copilotkit@4.9.
|
|
56
|
+
`npx --yes copilotkit@4.9.60 init --name <project-name> --framework <framework-id> --channel none --no-banner --create <name> --install`
|
|
57
57
|
|
|
58
58
|
Pass the confirmed name to both `--name` and `--create`: the app directory and its
|
|
59
59
|
Intelligence project take the same name here. If the developer names an existing project,
|
|
@@ -69,14 +69,14 @@ account. The command does not need terminal input.
|
|
|
69
69
|
If the command succeeds, do not rebuild the starter by hand. Report the clone first:
|
|
70
70
|
|
|
71
71
|
```text
|
|
72
|
-
npx --yes copilotkit@4.9.
|
|
72
|
+
npx --yes copilotkit@4.9.60 onboard checkpoint --phase starter-cloned
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
Then inspect only the generated
|
|
76
76
|
paths inside the target directory. Record the files, install result, project connection,
|
|
77
77
|
and validation commands. Then run
|
|
78
|
-
`npx --yes copilotkit@4.9.
|
|
78
|
+
`npx --yes copilotkit@4.9.60 onboard read proof/round-trip`.
|
|
79
79
|
|
|
80
80
|
If the command fails, report its exact error and do not claim that the starter is ready.
|
|
81
81
|
Then run
|
|
82
|
-
`npx --yes copilotkit@4.9.
|
|
82
|
+
`npx --yes copilotkit@4.9.60 onboard read unsupported/no-validated-path`.
|
|
@@ -122,7 +122,7 @@ here is work the developer did not ask for.
|
|
|
122
122
|
Plan the threads drawer itself: add it from the selected drawer page, where this frontend
|
|
123
123
|
does not already render one. Where this journey's frontend framework ships no threads
|
|
124
124
|
drawer -- React Native --, plan that the thread is proved by
|
|
125
|
-
`npx --yes copilotkit@4.9.
|
|
125
|
+
`npx --yes copilotkit@4.9.60 verify --round-trip`, which needs no browser. Do not plan a
|
|
126
126
|
step that opens the managed Intelligence dashboard.
|
|
127
127
|
|
|
128
128
|
## Order the plan into steps
|
|
@@ -138,8 +138,16 @@ list to re-derive: a path you leave out of it is not protected, and a path you a
|
|
|
138
138
|
is not in the baseline the audit reads. Do not name a protected path as a path a step
|
|
139
139
|
changes. Do not name a path that overlaps a protected path. The paths overlap when they are
|
|
140
140
|
equal or either path is an ancestor directory on a path-segment boundary. `apps/a` overlaps
|
|
141
|
-
`apps/a/src`, but not `apps/ab`. `app.ts` does not overlap `app.tsx`.
|
|
142
|
-
|
|
141
|
+
`apps/a/src`, but not `apps/ab`. `app.ts` does not overlap `app.tsx`.
|
|
142
|
+
|
|
143
|
+
If a step cannot be written any other way, ask for the path instead of taking it. Adding a
|
|
144
|
+
feature to an app the developer already built is the case this exists for: the option lives
|
|
145
|
+
in a file they wrote, and on an app whose work was never committed that file is in the
|
|
146
|
+
baseline. List every such path under `Authorization requested`, one line each, with the path
|
|
147
|
+
and one sentence saying what the step changes there and why no other file will do. Keep the
|
|
148
|
+
step in the plan. Return `Status: blocked` only when the plan needs a protected path you
|
|
149
|
+
cannot justify in that sentence.
|
|
150
|
+
|
|
143
151
|
Return the protected path list as part of the plan.
|
|
144
152
|
|
|
145
153
|
Keep final validation and proof outside the implementation steps. The developer approves
|
|
@@ -19,7 +19,7 @@ Prove the live runtime in this order:
|
|
|
19
19
|
4. Confirm from project files that the runtime constructor passes a `runner` option rather
|
|
20
20
|
than an `intelligence` option. A package, import, project file, or key is not use proof.
|
|
21
21
|
5. Run
|
|
22
|
-
`npx --yes copilotkit@4.9.
|
|
22
|
+
`npx --yes copilotkit@4.9.60 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
|
|
23
23
|
with the runtime URL or auth header options that this project needs. Require exit zero
|
|
24
24
|
and the JSON `ok` field to be `true`.
|
|
25
25
|
6. Drive one real request through the existing frontend, CopilotKit runtime, and expected
|
|
@@ -123,7 +123,7 @@ IPv6 only, so an IPv4 literal fails against the correct port.
|
|
|
123
123
|
## Step 4 -- Check the wiring
|
|
124
124
|
|
|
125
125
|
With both running, check the wiring in one command before you open a browser:
|
|
126
|
-
`npx --yes copilotkit@4.9.
|
|
126
|
+
`npx --yes copilotkit@4.9.60 verify --json`. It reads the port from this project, so a
|
|
127
127
|
non-default port needs no flag. The payload reports `runtimeUrl` and `runtimeUrlSource`. A
|
|
128
128
|
`runtimeUrlSource` of `default` means nothing in the project named a port, so pass
|
|
129
129
|
`--runtime-url` with the URL from step 1 in that case. Read the individual checks rather than
|
|
@@ -138,14 +138,17 @@ used the Intelligence credential. `api_key_authenticates` proves only that the k
|
|
|
138
138
|
will not read. `verify` searches upward for the credential and a framework's env loader
|
|
139
139
|
does not, so a key at the repository root is invisible to an app in a subdirectory. The
|
|
140
140
|
check names the file to write instead. Write the key there, or run
|
|
141
|
-
`npx --yes copilotkit@4.9.
|
|
141
|
+
`npx --yes copilotkit@4.9.60 project select` from the app directory. Do not link,
|
|
142
142
|
copy, or symlink the file to work around it, and do not treat the credential as missing:
|
|
143
143
|
the check above already reported that it exists.
|
|
144
144
|
|
|
145
|
-
`intelligence_thread_routes` fails when a licensed runtime serves no thread routes. A
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
`intelligence_thread_routes` fails when a licensed runtime serves no thread routes. A missing
|
|
146
|
+
`identifyUser` is the usual cause: it gates the whole web surface. Return the check for
|
|
147
|
+
implementation to pass `identifyUser` where the runtime is constructed. Do not edit it.
|
|
148
|
+
A handler mounted `mode: "single-route"` is not a cause and must never be removed to satisfy
|
|
149
|
+
this check: that mount serves the thread routes inside its envelope. If the check is
|
|
150
|
+
`undetermined`, the runtime cannot report the state, and the check names the upgrade. Record
|
|
151
|
+
that and continue.
|
|
149
152
|
|
|
150
153
|
Take the frontend URL from the payload's `frontendUrl`. It replaces whatever step 2
|
|
151
154
|
recorded, and every later step uses it unchanged. Where the field is absent, the project
|
|
@@ -153,7 +156,7 @@ named no port the CLI can read: keep step 2's URL, and rewrite its host as `loca
|
|
|
153
156
|
before you use it.
|
|
154
157
|
|
|
155
158
|
Then run the command once more with the URL you are about to open:
|
|
156
|
-
`npx --yes copilotkit@4.9.
|
|
159
|
+
`npx --yes copilotkit@4.9.60 verify --frontend-url <that url> --json`. The
|
|
157
160
|
`frontend_assets_served` check asks that server for its page and for one of the page's own
|
|
158
161
|
assets, on that exact host. A `fail` there means the dev server refuses its own static
|
|
159
162
|
assets on the host you were about to use, and the check names the URL to use instead. This
|
|
@@ -161,7 +164,7 @@ is the cheapest step that can save the most expensive one, so run it before the
|
|
|
161
164
|
|
|
162
165
|
## Step 5 -- Prove that the agent runs
|
|
163
166
|
|
|
164
|
-
Run `npx --yes copilotkit@4.9.
|
|
167
|
+
Run `npx --yes copilotkit@4.9.60 verify --round-trip --json`. It sends one request through
|
|
165
168
|
the runtime and reads the answer back from the thread, so it separates an agent that is
|
|
166
169
|
configured from an agent that works. Use `--agent <id>` when the runtime declares more
|
|
167
170
|
than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
|
|
@@ -238,7 +241,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
|
|
|
238
241
|
same request the baseline recorded, require the same kind of user-visible result the
|
|
239
242
|
baseline produced, and require that the thread for that request is listed in the drawer.
|
|
240
243
|
Where this journey's frontend framework ships no threads drawer -- React Native --, prove
|
|
241
|
-
that thread with `npx --yes copilotkit@4.9.
|
|
244
|
+
that thread with `npx --yes copilotkit@4.9.60 verify --round-trip`, which reads the
|
|
242
245
|
answer back off the thread and needs no browser. Record which of the two you proved.
|
|
243
246
|
|
|
244
247
|
Use the surface control the main coding agent recorded for your environment. It either had
|
|
@@ -266,7 +269,7 @@ request never exercises. Drive it with the browser control step 6 named.
|
|
|
266
269
|
the page to finish loading. Do not retype the host, and do not substitute a URL a tool
|
|
267
270
|
offers you by default. Where the page loads but its styling is missing or the chat
|
|
268
271
|
control is dead, run
|
|
269
|
-
`npx --yes copilotkit@4.9.
|
|
272
|
+
`npx --yes copilotkit@4.9.60 verify --frontend-url <the url you opened> --json`
|
|
270
273
|
before you diagnose anything else. A dev server can serve its page and refuse every
|
|
271
274
|
static chunk behind it, and on screen that is indistinguishable from a broken
|
|
272
275
|
integration. The `frontend_assets_served` check tells the two apart.
|
|
@@ -30,13 +30,13 @@ Before you show the best-effort plan, require this complete packet:
|
|
|
30
30
|
- Give the ordered proof rules.
|
|
31
31
|
|
|
32
32
|
After the developer approves the best-effort plan, run
|
|
33
|
-
`npx --yes copilotkit@4.9.
|
|
33
|
+
`npx --yes copilotkit@4.9.60 onboard read fallback/best-effort`.
|
|
34
34
|
|
|
35
35
|
Send one short report. Run the feedback command without another developer question. The
|
|
36
36
|
CLI telemetry gate decides whether the report is sent.
|
|
37
37
|
|
|
38
38
|
```text
|
|
39
|
-
npx --yes copilotkit@4.9.
|
|
39
|
+
npx --yes copilotkit@4.9.60 onboard feedback
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
Write the feedback message to the command's standard input, in at most four lines.
|
|
@@ -44,5 +44,5 @@ Send no secrets, source code, logs, or command output. The command refuses a rep
|
|
|
44
44
|
that carries any of those, prints the reason, and exits zero. A refused report is not
|
|
45
45
|
a failed step. Reword it and send it again, or stop without a report. The command
|
|
46
46
|
prints what it sent. This is the channel for a stop. Report friction only from a run that
|
|
47
|
-
finished, never from here. If the CLI says
|
|
48
|
-
state
|
|
47
|
+
finished, never from here. If the CLI says the report was not sent,
|
|
48
|
+
state what it said and stop without another question.
|
package/package.json
CHANGED
package/release/release-tool.js
CHANGED
|
@@ -14698,7 +14698,7 @@ import * as path4 from "node:path";
|
|
|
14698
14698
|
|
|
14699
14699
|
// apps/cli/src/config.ts
|
|
14700
14700
|
function getTemplateRef() {
|
|
14701
|
-
return true ? "
|
|
14701
|
+
return true ? "d1584b840f904674b470be5d2b16c4ccca99c4f4" : "main";
|
|
14702
14702
|
}
|
|
14703
14703
|
|
|
14704
14704
|
// apps/cli/src/services/agentcore-config.ts
|
|
@@ -14896,8 +14896,15 @@ var TELEMETRY_ERROR_CODES = {
|
|
|
14896
14896
|
*/
|
|
14897
14897
|
KEY_PROVISION_REFUSED: "KEY_PROVISION_REFUSED",
|
|
14898
14898
|
CLI_PRODUCT_BINARY_TOO_LARGE: "CLI_PRODUCT_BINARY_TOO_LARGE",
|
|
14899
|
+
LEARNING_CANDIDATE_CONFLICT: "LEARNING_CANDIDATE_CONFLICT",
|
|
14900
|
+
LEARNING_CANDIDATE_SETTLED: "LEARNING_CANDIDATE_SETTLED",
|
|
14901
|
+
LEARNING_CANDIDATE_ID_INVALID: "LEARNING_CANDIDATE_ID_INVALID",
|
|
14899
14902
|
LEARNING_CONTAINER_ID_INVALID: "LEARNING_CONTAINER_ID_INVALID",
|
|
14903
|
+
LEARNING_CONTAINER_INPUT_INVALID: "LEARNING_CONTAINER_INPUT_INVALID",
|
|
14904
|
+
LEARNING_CONTAINER_NOT_FOUND: "LEARNING_CONTAINER_NOT_FOUND",
|
|
14905
|
+
LEARNING_CONTAINER_RESPONSE_INVALID: "LEARNING_CONTAINER_RESPONSE_INVALID",
|
|
14900
14906
|
LEARNING_PROJECT_ID_INVALID: "LEARNING_PROJECT_ID_INVALID",
|
|
14907
|
+
LEARNING_RESPONSE_INVALID: "LEARNING_RESPONSE_INVALID",
|
|
14901
14908
|
LEARNING_SKILLS_BUNDLE_INVALID: "LEARNING_SKILLS_BUNDLE_INVALID",
|
|
14902
14909
|
LEARNING_SKILLS_INTEGRITY_FAILED: "LEARNING_SKILLS_INTEGRITY_FAILED",
|
|
14903
14910
|
LEARNING_SKILLS_OUTPUT_EXISTS: "LEARNING_SKILLS_OUTPUT_EXISTS"
|
|
@@ -15173,20 +15180,18 @@ var FRAMEWORK_TEMPLATES = {
|
|
|
15173
15180
|
TEMPLATE_REPOS["microsoft-agent-framework-dotnet"],
|
|
15174
15181
|
`\u{1FA81}\u{1F91D}${FRAMEWORK_EMOJI["microsoft-agent-framework-dotnet"]}`
|
|
15175
15182
|
),
|
|
15176
|
-
// No root-`.env` vendor gate: the agent's
|
|
15177
|
-
// via dotnet user-secrets
|
|
15178
|
-
//
|
|
15179
|
-
//
|
|
15180
|
-
//
|
|
15181
|
-
// surfaced as explicit credential guidance below instead.
|
|
15183
|
+
// No root-`.env` vendor gate: the agent's OpenAI credential is configured
|
|
15184
|
+
// via dotnet user-secrets. It does not live in the root `.env`, so a fixed
|
|
15185
|
+
// root-`.env` key requirement would falsely warn. The user-secrets command
|
|
15186
|
+
// is credential setup (not a generic post-install build step), so it is
|
|
15187
|
+
// surfaced as explicit guidance below.
|
|
15182
15188
|
environment: [],
|
|
15183
15189
|
setupNotes: [
|
|
15184
15190
|
{ text: " Set up the agent model credentials:" },
|
|
15185
15191
|
{
|
|
15186
|
-
text: "
|
|
15187
|
-
code: 'cd agent && dotnet user-secrets set
|
|
15188
|
-
}
|
|
15189
|
-
{ text: " or OpenAI / Azure OpenAI \u2014 see the agent README" }
|
|
15192
|
+
text: " OpenAI: ",
|
|
15193
|
+
code: 'cd agent && dotnet user-secrets set OPENAI_API_KEY "<your-openai-api-key>"'
|
|
15194
|
+
}
|
|
15190
15195
|
]
|
|
15191
15196
|
},
|
|
15192
15197
|
"microsoft-agent-framework-py": {
|
|
@@ -15487,6 +15492,27 @@ async function scaffoldStarterForSmoke(input, scaffold = scaffoldProject) {
|
|
|
15487
15492
|
}
|
|
15488
15493
|
await scaffold({ projectDir, template: configuredTemplate });
|
|
15489
15494
|
await definition.postScaffold?.(projectDir);
|
|
15495
|
+
if (input.framework === "microsoft-agent-framework-dotnet") {
|
|
15496
|
+
const command = definition.setupNotes?.find(
|
|
15497
|
+
(note) => note.code?.includes("dotnet user-secrets set")
|
|
15498
|
+
)?.code;
|
|
15499
|
+
const credential = command?.match(
|
|
15500
|
+
/dotnet user-secrets set ([A-Za-z0-9_]+)/
|
|
15501
|
+
)?.[1];
|
|
15502
|
+
const programPath = path4.join(projectDir, "agent", "Program.cs");
|
|
15503
|
+
const program = fs4.existsSync(programPath) ? fs4.readFileSync(programPath, "utf8") : "";
|
|
15504
|
+
if (!credential || !program.includes(credential)) {
|
|
15505
|
+
throw new StarterSmokeError(
|
|
15506
|
+
"STARTER_CREDENTIAL_MISMATCH",
|
|
15507
|
+
"Microsoft Agent Framework .NET credential guidance does not match the bound starter",
|
|
15508
|
+
{
|
|
15509
|
+
framework: input.framework,
|
|
15510
|
+
credential,
|
|
15511
|
+
revision: input.template.revision
|
|
15512
|
+
}
|
|
15513
|
+
);
|
|
15514
|
+
}
|
|
15515
|
+
}
|
|
15490
15516
|
const entries = fs4.readdirSync(projectDir);
|
|
15491
15517
|
return entries.join("\n");
|
|
15492
15518
|
} finally {
|