copilotkit 4.9.47 → 4.9.50
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 +135 -5
- package/cli-build-info.json +6 -6
- package/index.js +6200 -3380
- package/onboarding/index.json +162 -1
- package/onboarding/prompts/authenticate/start.md +9 -9
- package/onboarding/prompts/conversion/plan.md +3 -3
- package/onboarding/prompts/credentials/finalize-plan.md +11 -11
- 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 +44 -0
- package/onboarding/prompts/feature/learning/proof.md +27 -0
- package/onboarding/prompts/feature/learning/start.md +52 -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 +33 -13
- package/onboarding/prompts/proof/complete.md +8 -8
- package/onboarding/prompts/proof/oss-baseline.md +5 -5
- package/onboarding/prompts/proof/round-trip.md +9 -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 +6 -6
- package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
- package/package.json +1 -1
- package/release/release-tool.js +36 -10
|
@@ -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.50 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.50 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.50 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.50 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.50 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.50 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.50 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.50 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,7 +138,7 @@ 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.50 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
|
|
|
@@ -153,7 +153,7 @@ named no port the CLI can read: keep step 2's URL, and rewrite its host as `loca
|
|
|
153
153
|
before you use it.
|
|
154
154
|
|
|
155
155
|
Then run the command once more with the URL you are about to open:
|
|
156
|
-
`npx --yes copilotkit@4.9.
|
|
156
|
+
`npx --yes copilotkit@4.9.50 verify --frontend-url <that url> --json`. The
|
|
157
157
|
`frontend_assets_served` check asks that server for its page and for one of the page's own
|
|
158
158
|
assets, on that exact host. A `fail` there means the dev server refuses its own static
|
|
159
159
|
assets on the host you were about to use, and the check names the URL to use instead. This
|
|
@@ -161,7 +161,7 @@ is the cheapest step that can save the most expensive one, so run it before the
|
|
|
161
161
|
|
|
162
162
|
## Step 5 -- Prove that the agent runs
|
|
163
163
|
|
|
164
|
-
Run `npx --yes copilotkit@4.9.
|
|
164
|
+
Run `npx --yes copilotkit@4.9.50 verify --round-trip --json`. It sends one request through
|
|
165
165
|
the runtime and reads the answer back from the thread, so it separates an agent that is
|
|
166
166
|
configured from an agent that works. Use `--agent <id>` when the runtime declares more
|
|
167
167
|
than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
|
|
@@ -238,7 +238,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
|
|
|
238
238
|
same request the baseline recorded, require the same kind of user-visible result the
|
|
239
239
|
baseline produced, and require that the thread for that request is listed in the drawer.
|
|
240
240
|
Where this journey's frontend framework ships no threads drawer -- React Native --, prove
|
|
241
|
-
that thread with `npx --yes copilotkit@4.9.
|
|
241
|
+
that thread with `npx --yes copilotkit@4.9.50 verify --round-trip`, which reads the
|
|
242
242
|
answer back off the thread and needs no browser. Record which of the two you proved.
|
|
243
243
|
|
|
244
244
|
Use the surface control the main coding agent recorded for your environment. It either had
|
|
@@ -266,7 +266,7 @@ request never exercises. Drive it with the browser control step 6 named.
|
|
|
266
266
|
the page to finish loading. Do not retype the host, and do not substitute a URL a tool
|
|
267
267
|
offers you by default. Where the page loads but its styling is missing or the chat
|
|
268
268
|
control is dead, run
|
|
269
|
-
`npx --yes copilotkit@4.9.
|
|
269
|
+
`npx --yes copilotkit@4.9.50 verify --frontend-url <the url you opened> --json`
|
|
270
270
|
before you diagnose anything else. A dev server can serve its page and refuse every
|
|
271
271
|
static chunk behind it, and on screen that is indistinguishable from a broken
|
|
272
272
|
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.50 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.50 onboard feedback
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
Write the feedback message to the command's standard input, in at most four lines.
|
package/package.json
CHANGED
package/release/release-tool.js
CHANGED
|
@@ -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 {
|