copilotkit 4.8.4 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -5
- package/cli-build-info.json +7 -7
- package/index.js +109 -33
- package/onboarding/index.json +140 -1
- package/onboarding/prompts/authenticate/start.md +21 -4
- package/onboarding/prompts/credentials/finalize-plan.md +39 -14
- package/onboarding/prompts/credentials/plan.md +48 -16
- package/onboarding/prompts/fallback/best-effort.md +29 -0
- package/onboarding/prompts/framework/ag2.md +48 -0
- package/onboarding/prompts/framework/agno.md +48 -0
- package/onboarding/prompts/framework/built-in.md +43 -0
- package/onboarding/prompts/framework/claude-sdk-python.md +49 -0
- package/onboarding/prompts/framework/claude-sdk-typescript.md +53 -0
- package/onboarding/prompts/framework/crewai-flows.md +56 -0
- package/onboarding/prompts/framework/deep-agents.md +45 -0
- package/onboarding/prompts/framework/google-adk.md +8 -3
- package/onboarding/prompts/framework/langgraph-fastapi.md +42 -0
- package/onboarding/prompts/framework/langgraph-python.md +8 -3
- package/onboarding/prompts/framework/langgraph-typescript.md +8 -3
- package/onboarding/prompts/framework/llamaindex.md +51 -0
- package/onboarding/prompts/framework/mastra.md +8 -3
- package/onboarding/prompts/framework/ms-agent-dotnet.md +8 -3
- package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +62 -0
- package/onboarding/prompts/framework/ms-agent-python.md +8 -3
- package/onboarding/prompts/framework/pydantic-ai.md +48 -0
- package/onboarding/prompts/framework/strands-python.md +42 -0
- package/onboarding/prompts/framework/strands-typescript.md +42 -0
- package/onboarding/prompts/frontend/angular.md +9 -3
- package/onboarding/prompts/frontend/nextjs.md +8 -3
- package/onboarding/prompts/frontend/plan.md +16 -10
- package/onboarding/prompts/frontend/react-native.md +9 -3
- package/onboarding/prompts/frontend/react-spa.md +20 -5
- package/onboarding/prompts/frontend/vue.md +9 -3
- package/onboarding/prompts/implementation/build-and-validate.md +12 -2
- package/onboarding/prompts/proof/complete.md +18 -9
- package/onboarding/prompts/proof/oss-baseline.md +59 -0
- package/onboarding/prompts/proof/round-trip.md +26 -11
- package/onboarding/prompts/subagent/create-plan.md +14 -2
- package/onboarding/prompts/subagent/implement-and-validate.md +10 -0
- package/onboarding/prompts/subagent/prove-oss-baseline.md +35 -0
- package/onboarding/prompts/subagent/prove-round-trip.md +21 -8
- package/onboarding/prompts/unsupported/no-validated-path.md +22 -9
- package/package.json +1 -1
- package/release/release-tool.js +1 -1
package/README.md
CHANGED
|
@@ -44,6 +44,7 @@ answer up front and run anywhere:
|
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
46
|
copilotkit project list --json # see the choices
|
|
47
|
+
copilotkit project list --search support --json # search name, slug, or id
|
|
47
48
|
copilotkit project select --project <slug-or-id> # pick an existing one
|
|
48
49
|
copilotkit project select --create "My App" --json # create one and select it
|
|
49
50
|
```
|
|
@@ -57,12 +58,19 @@ slugs instead of recording a selection that points at nothing.
|
|
|
57
58
|
```json
|
|
58
59
|
{
|
|
59
60
|
"type": "completed",
|
|
61
|
+
"selected_project_slug": "my-app",
|
|
60
62
|
"project": { "id": "220", "slug": "my-app", "organizationId": "org_123" },
|
|
61
63
|
"config_path": "/work/my-repo/.copilotkit/project.json",
|
|
62
|
-
"
|
|
64
|
+
"project_file_written": true,
|
|
65
|
+
"api_key_provisioned": true,
|
|
66
|
+
"environment_file_written": true
|
|
63
67
|
}
|
|
64
68
|
```
|
|
65
69
|
|
|
70
|
+
The four top-level summary fields let a coding agent read the result without
|
|
71
|
+
searching the nested object or reading either file. The payload never contains
|
|
72
|
+
the API key.
|
|
73
|
+
|
|
66
74
|
`config_path` is absolute, and it is not always under the directory you ran in.
|
|
67
75
|
The project record is repository-scoped: it goes into an existing `.copilotkit/`
|
|
68
76
|
at or above the current directory when there is one, and otherwise into the
|
|
@@ -75,11 +83,12 @@ directory you ran in, because that is the file the app process loads — so in a
|
|
|
75
83
|
repository with a `web/` and an `agent/` half, run `project select` in the half
|
|
76
84
|
that needs the key.
|
|
77
85
|
|
|
78
|
-
**Check
|
|
86
|
+
**Check all four summary fields, not just the exit code.** Key provisioning is
|
|
79
87
|
deliberately non-fatal: if it fails, the selection is still persisted, a warning
|
|
80
88
|
goes to stderr, and the command still exits 0 — leaving a scaffold with no
|
|
81
89
|
`INTELLIGENCE_API_KEY`, whose first run fails with an opaque "Failed to
|
|
82
|
-
initialize thread".
|
|
90
|
+
initialize thread". `api_key_provisioned` and `environment_file_written` are
|
|
91
|
+
false in this state.
|
|
83
92
|
Re-running `project select` is a valid recovery.
|
|
84
93
|
|
|
85
94
|
Failures use the `login --json` shape, `{"error": "...", "type": "failed"}`, and
|
|
@@ -454,6 +463,7 @@ copilotkit verify
|
|
|
454
463
|
copilotkit verify --json # machine-readable output
|
|
455
464
|
copilotkit verify --runtime-url http://localhost:8080/copilotkit
|
|
456
465
|
copilotkit verify --round-trip # also run the agent
|
|
466
|
+
copilotkit verify --expect-runtime oss --round-trip --agent incident_triage
|
|
457
467
|
```
|
|
458
468
|
|
|
459
469
|
It checks that a hosted project is selected, that a project API key is present
|
|
@@ -485,6 +495,12 @@ a caller can branch on the command instead of parsing it. With `--json` the
|
|
|
485
495
|
payload is the only thing on stdout and every diagnostic goes to stderr, so
|
|
486
496
|
piping is safe.
|
|
487
497
|
|
|
498
|
+
Use `--expect-runtime oss` to prove an open-source runtime instead. In this
|
|
499
|
+
mode, hosted project, key, and thread-route checks do not apply. The command
|
|
500
|
+
exits zero only when `/info` is valid, declares the agent named by `--agent`,
|
|
501
|
+
omits `licenseStatus`, and `--round-trip` passes. Both `--round-trip` and
|
|
502
|
+
`--agent` are required for an OSS pass.
|
|
503
|
+
|
|
488
504
|
The runtime URL defaults to `http://localhost:3000/api/copilotkit` and the
|
|
489
505
|
report always states which URL it probed, because a wrong default is the most
|
|
490
506
|
likely reason for a runtime failure. Pass `--runtime-url` when the frontend
|
|
@@ -634,8 +650,9 @@ report `<version>-pre.<shortsha>` from `copilotkit --version`, so a tester's
|
|
|
634
650
|
build is always identifiable. `copilotkit version` also reports the canonical
|
|
635
651
|
Intelligence and first-party CopilotKit commits embedded in the artifact.
|
|
636
652
|
|
|
637
|
-
Pushes
|
|
638
|
-
|
|
653
|
+
Pushes publish `CLI_ENV=local` builds automatically. Pull requests publish
|
|
654
|
+
`CLI_ENV=production` builds under the separate `copilotkit-pr` package name so
|
|
655
|
+
testers can use hosted login without confusing the artifact with a release.
|
|
639
656
|
|
|
640
657
|
Note: `workflow_dispatch` only works against refs that contain the dispatch
|
|
641
658
|
trigger — branches cut before this workflow landed need a merge from `main`
|
package/cli-build-info.json
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": {
|
|
4
4
|
"name": "copilotkit",
|
|
5
|
-
"version": "4.
|
|
5
|
+
"version": "4.9.0"
|
|
6
6
|
},
|
|
7
7
|
"intelligence": {
|
|
8
|
-
"commit": "
|
|
8
|
+
"commit": "fab380427c6324aaf090b195af0f51eaf4a1a407"
|
|
9
9
|
},
|
|
10
10
|
"copilotKit": {
|
|
11
|
-
"submittedInput": "
|
|
12
|
-
"commit": "
|
|
11
|
+
"submittedInput": "bf2068734bcc42b9dc9999b183d0fd07a673f713",
|
|
12
|
+
"commit": "bf2068734bcc42b9dc9999b183d0fd07a673f713"
|
|
13
13
|
},
|
|
14
14
|
"channel": "production",
|
|
15
15
|
"triggeringActor": "MikeRyanDev",
|
|
16
16
|
"workflow": {
|
|
17
|
-
"runId": "
|
|
18
|
-
"runUrl": "https://github.com/CopilotKit/Intelligence/actions/runs/
|
|
17
|
+
"runId": "32886074334",
|
|
18
|
+
"runUrl": "https://github.com/CopilotKit/Intelligence/actions/runs/32886074334"
|
|
19
19
|
},
|
|
20
20
|
"validationResult": "passed",
|
|
21
21
|
"ag2": {
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"revision": "main",
|
|
25
25
|
"pinned": false
|
|
26
26
|
},
|
|
27
|
-
"builtAt": "2026-08-
|
|
27
|
+
"builtAt": "2026-08-25T18:51:51Z"
|
|
28
28
|
}
|
package/index.js
CHANGED
|
@@ -96,14 +96,14 @@ function getTelemetryEndpointUrl() {
|
|
|
96
96
|
}
|
|
97
97
|
function getBuildInfo() {
|
|
98
98
|
return {
|
|
99
|
-
version: true ? "4.
|
|
100
|
-
buildNumber: true ? "
|
|
101
|
-
commitSha: true ? "
|
|
99
|
+
version: true ? "4.9.0" : "dev",
|
|
100
|
+
buildNumber: true ? "32886074334" : "dev",
|
|
101
|
+
commitSha: true ? "fab380427c6324aaf090b195af0f51eaf4a1a407" : "dev",
|
|
102
102
|
copilotKitCommit: getTemplateRef()
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
105
|
function getTemplateRef() {
|
|
106
|
-
return true ? "
|
|
106
|
+
return true ? "bf2068734bcc42b9dc9999b183d0fd07a673f713" : "main";
|
|
107
107
|
}
|
|
108
108
|
function getC15tBackendUrl() {
|
|
109
109
|
return true ? "https://calm-hazelnut-joy-copilotkit.inth.app" : "";
|
|
@@ -94890,8 +94890,12 @@ var project_list_exports = {};
|
|
|
94890
94890
|
__export(project_list_exports, {
|
|
94891
94891
|
runProjectList: () => runProjectList
|
|
94892
94892
|
});
|
|
94893
|
-
function renderTable(projects, selectedId, organizationId) {
|
|
94893
|
+
function renderTable(projects, selectedId, organizationId, search) {
|
|
94894
94894
|
if (projects.length === 0) {
|
|
94895
|
+
if (search !== void 0) {
|
|
94896
|
+
return `No hosted Intelligence projects match "${search}" in ${organizationId}.
|
|
94897
|
+
`;
|
|
94898
|
+
}
|
|
94895
94899
|
return `No hosted Intelligence projects exist in ${organizationId} yet.
|
|
94896
94900
|
Run \`copilotkit project select --create <name>\` to create one.
|
|
94897
94901
|
`;
|
|
@@ -94933,8 +94937,16 @@ async function driveProjectList(options) {
|
|
|
94933
94937
|
return { kind: "api-error", error: error98 };
|
|
94934
94938
|
}
|
|
94935
94939
|
const selectedId = findProjectConfig(process.cwd())?.projectId;
|
|
94940
|
+
const trimmedSearch = options.search?.trim();
|
|
94941
|
+
const search = trimmedSearch === "" ? void 0 : trimmedSearch;
|
|
94942
|
+
const matchedProjects = search === void 0 || search.length === 0 ? projects : projects.filter((project) => {
|
|
94943
|
+
const query = search.toLocaleLowerCase();
|
|
94944
|
+
return [project.id, project.slug, project.name].some(
|
|
94945
|
+
(value) => value.toLocaleLowerCase().includes(query)
|
|
94946
|
+
);
|
|
94947
|
+
});
|
|
94936
94948
|
if (options.json) {
|
|
94937
|
-
const rows =
|
|
94949
|
+
const rows = matchedProjects.map((project) => ({
|
|
94938
94950
|
id: project.id,
|
|
94939
94951
|
slug: project.slug,
|
|
94940
94952
|
name: project.name,
|
|
@@ -94947,6 +94959,7 @@ async function driveProjectList(options) {
|
|
|
94947
94959
|
{
|
|
94948
94960
|
organizationId: auth2.clerkOrgId,
|
|
94949
94961
|
selectedProjectId: selectedId ?? null,
|
|
94962
|
+
search: search ?? null,
|
|
94950
94963
|
projects: rows
|
|
94951
94964
|
},
|
|
94952
94965
|
null,
|
|
@@ -94956,7 +94969,9 @@ async function driveProjectList(options) {
|
|
|
94956
94969
|
);
|
|
94957
94970
|
return { kind: "success" };
|
|
94958
94971
|
}
|
|
94959
|
-
process.stdout.write(
|
|
94972
|
+
process.stdout.write(
|
|
94973
|
+
renderTable(matchedProjects, selectedId, auth2.clerkOrgId, search)
|
|
94974
|
+
);
|
|
94960
94975
|
return { kind: "success" };
|
|
94961
94976
|
}
|
|
94962
94977
|
async function runProjectList(options) {
|
|
@@ -95691,13 +95706,16 @@ Run \`copilotkit project list --json\` to see ids alongside slugs.
|
|
|
95691
95706
|
function buildProjectSelectJson(selection, apiKeyProvisioned, configPath) {
|
|
95692
95707
|
return {
|
|
95693
95708
|
type: "completed",
|
|
95709
|
+
selected_project_slug: selection.projectSlug,
|
|
95694
95710
|
project: {
|
|
95695
95711
|
id: selection.projectId,
|
|
95696
95712
|
slug: selection.projectSlug,
|
|
95697
95713
|
organizationId: selection.organizationId
|
|
95698
95714
|
},
|
|
95699
95715
|
config_path: configPath,
|
|
95700
|
-
|
|
95716
|
+
project_file_written: true,
|
|
95717
|
+
api_key_provisioned: apiKeyProvisioned,
|
|
95718
|
+
environment_file_written: apiKeyProvisioned
|
|
95701
95719
|
};
|
|
95702
95720
|
}
|
|
95703
95721
|
var init_project_select_flags = __esm({
|
|
@@ -373441,7 +373459,7 @@ function intelligenceConsumedCheck(credential, runtime) {
|
|
|
373441
373459
|
}
|
|
373442
373460
|
if (runtime.info.licenseStatus === void 0) {
|
|
373443
373461
|
return {
|
|
373444
|
-
detail: `The key authenticates, but the runtime reports no license, which means it was built without an Intelligence client and is running in SSE mode. The key is never read
|
|
373462
|
+
detail: `The key authenticates, but the runtime reports no license, which means it was built without an Intelligence client and is running in OSS/SSE mode. The key is never read and nothing reaches the platform. The default in-memory OSS runner is ephemeral. SQLite, custom, or framework persistence can be durable. Pass \`intelligence: new CopilotKitIntelligence({ apiKey })\` where the runtime is constructed \u2014 https://docs.copilotkit.ai/premium/connect-your-runtime`,
|
|
373445
373463
|
id: "intelligence_consumed",
|
|
373446
373464
|
status: "fail",
|
|
373447
373465
|
title
|
|
@@ -373454,6 +373472,31 @@ function intelligenceConsumedCheck(credential, runtime) {
|
|
|
373454
373472
|
title
|
|
373455
373473
|
};
|
|
373456
373474
|
}
|
|
373475
|
+
function ossRuntimeModeCheck(runtime) {
|
|
373476
|
+
const title = "The runtime uses the expected OSS mode";
|
|
373477
|
+
if (runtime.kind !== "ok") {
|
|
373478
|
+
return {
|
|
373479
|
+
detail: "Not attempted: the runtime did not return valid /info data. Fix the runtime check above first.",
|
|
373480
|
+
id: "runtime_mode",
|
|
373481
|
+
status: "undetermined",
|
|
373482
|
+
title
|
|
373483
|
+
};
|
|
373484
|
+
}
|
|
373485
|
+
if (runtime.info.licenseStatus !== void 0) {
|
|
373486
|
+
return {
|
|
373487
|
+
detail: `The runtime reports license ${runtime.info.licenseStatus}, so it uses Intelligence rather than OSS mode.`,
|
|
373488
|
+
id: "runtime_mode",
|
|
373489
|
+
status: "fail",
|
|
373490
|
+
title
|
|
373491
|
+
};
|
|
373492
|
+
}
|
|
373493
|
+
return {
|
|
373494
|
+
detail: "The runtime returned valid /info data without licenseStatus, as expected for OSS mode.",
|
|
373495
|
+
id: "runtime_mode",
|
|
373496
|
+
status: "pass",
|
|
373497
|
+
title
|
|
373498
|
+
};
|
|
373499
|
+
}
|
|
373457
373500
|
function intelligenceThreadRoutesCheck(runtime) {
|
|
373458
373501
|
const title = "The runtime serves the Intelligence thread routes";
|
|
373459
373502
|
if (runtime.kind !== "ok") {
|
|
@@ -373515,8 +373558,12 @@ function collectFacts(input) {
|
|
|
373515
373558
|
runtimeVersion: info?.version
|
|
373516
373559
|
};
|
|
373517
373560
|
}
|
|
373518
|
-
function runVerifyChecks(input) {
|
|
373519
|
-
const checks = [
|
|
373561
|
+
function runVerifyChecks(input, expectedRuntime = "intelligence") {
|
|
373562
|
+
const checks = expectedRuntime === "oss" ? [
|
|
373563
|
+
runtimeReachableCheck(input.runtime),
|
|
373564
|
+
runtimeAgentsCheck(input.runtime),
|
|
373565
|
+
ossRuntimeModeCheck(input.runtime)
|
|
373566
|
+
] : [
|
|
373520
373567
|
projectSelectedCheck(input.projectConfig),
|
|
373521
373568
|
apiKeyPresentCheck(
|
|
373522
373569
|
input.apiKeyVariableName,
|
|
@@ -373861,18 +373908,24 @@ async function runVerify(options, overrides = {}) {
|
|
|
373861
373908
|
probeRuntimeInfo(runtimeUrl, deps.fetchImpl)
|
|
373862
373909
|
]);
|
|
373863
373910
|
const apiKeySource = apiKey === void 0 || deps.env[apiKey.variableName] !== void 0 ? void 0 : projectEnv.origins[apiKey.variableName];
|
|
373864
|
-
const
|
|
373865
|
-
|
|
373866
|
-
|
|
373867
|
-
|
|
373868
|
-
|
|
373869
|
-
|
|
373870
|
-
|
|
373911
|
+
const expectedRuntime = options.expectRuntime ?? "intelligence";
|
|
373912
|
+
const result = runVerifyChecks(
|
|
373913
|
+
{
|
|
373914
|
+
apiKeySource,
|
|
373915
|
+
apiKeyVariableName: apiKey?.variableName,
|
|
373916
|
+
credential,
|
|
373917
|
+
envSearch: {
|
|
373918
|
+
ceiling: projectEnv.ceiling,
|
|
373919
|
+
searchedFrom: projectEnv.searchedFrom
|
|
373920
|
+
},
|
|
373921
|
+
projectConfig,
|
|
373922
|
+
runtime
|
|
373871
373923
|
},
|
|
373872
|
-
|
|
373873
|
-
|
|
373874
|
-
|
|
373875
|
-
|
|
373924
|
+
expectedRuntime
|
|
373925
|
+
);
|
|
373926
|
+
const roundTrip = expectedRuntime === "oss" && (options.roundTrip !== true || options.agent === void 0) ? notAttempted(
|
|
373927
|
+
"Not attempted: --expect-runtime oss requires --round-trip --agent <id> so the named agent must answer before this command can pass."
|
|
373928
|
+
) : options.roundTrip === true ? await runLiveRoundTrip(options, deps, runtimeUrl, runtime) : void 0;
|
|
373876
373929
|
const context3 = { runtimeUrl, runtimeUrlSource };
|
|
373877
373930
|
deps.stdout(
|
|
373878
373931
|
options.json ? renderVerifyJson(result, context3, roundTrip) : renderVerifyReport(result, context3, roundTrip)
|
|
@@ -384402,6 +384455,7 @@ refused before anything is sent, and the reason is printed. Both commands print
|
|
|
384402
384455
|
what they sent. Every refusal exits zero and leaves onboarding unaffected.
|
|
384403
384456
|
`,
|
|
384404
384457
|
verify: `Usage: copilotkit verify [--json] [--runtime-url <url>] [--round-trip]
|
|
384458
|
+
[--expect-runtime <mode>]
|
|
384405
384459
|
|
|
384406
384460
|
Check that this project's CopilotKit wiring works, and report what it found.
|
|
384407
384461
|
|
|
@@ -384418,10 +384472,15 @@ the answer back from the thread, which is the only check here that proves the
|
|
|
384418
384472
|
agent runs rather than that it is configured. That costs a model call and
|
|
384419
384473
|
records a thread, so it is opt-in.
|
|
384420
384474
|
|
|
384475
|
+
With --expect-runtime oss, hosted project and credential checks do not apply.
|
|
384476
|
+
The command exits zero only when valid /info data declares the named agent,
|
|
384477
|
+
licenseStatus is absent, and --round-trip --agent <id> passes.
|
|
384478
|
+
|
|
384421
384479
|
Options:
|
|
384422
384480
|
--json Emit a machine-readable payload alone on stdout
|
|
384423
384481
|
--runtime-url <url> The CopilotKit runtime endpoint to probe
|
|
384424
384482
|
(default: http://localhost:3000/api/copilotkit)
|
|
384483
|
+
--expect-runtime <mode> Require intelligence (default) or oss runtime mode
|
|
384425
384484
|
--round-trip Also run the agent and read its answer back
|
|
384426
384485
|
--agent <id> Which declared agent to run, when there are several
|
|
384427
384486
|
--timeout <seconds> How long to wait for the answer (default: 90)
|
|
@@ -384612,6 +384671,7 @@ one currently selected in .copilotkit/project.json.
|
|
|
384612
384671
|
|
|
384613
384672
|
Options:
|
|
384614
384673
|
--json Emit a machine-readable payload instead of a table
|
|
384674
|
+
--search <query> Match a project name, slug, or id
|
|
384615
384675
|
-h, --help Show help for project list
|
|
384616
384676
|
|
|
384617
384677
|
Runs with no TTY, so a coding agent can read the choices before selecting one.
|
|
@@ -384641,9 +384701,10 @@ organization's real projects, so a typo fails with the available slugs rather
|
|
|
384641
384701
|
than recording a selection that points at nothing. Run
|
|
384642
384702
|
\`copilotkit project list --json\` first to see them.
|
|
384643
384703
|
|
|
384644
|
-
--json reports
|
|
384645
|
-
|
|
384646
|
-
|
|
384704
|
+
--json reports selected_project_slug, project_file_written,
|
|
384705
|
+
api_key_provisioned, and environment_file_written. Key provisioning is
|
|
384706
|
+
deliberately non-fatal, so the key fields can be false after exit 0. The payload
|
|
384707
|
+
never contains the API key.
|
|
384647
384708
|
|
|
384648
384709
|
With --json the payload is the ONLY thing on stdout: warnings, errors, and the
|
|
384649
384710
|
interactive picker itself all render to stderr, so piping stdout into a parser
|
|
@@ -385196,15 +385257,22 @@ async function runProjectCommand(argv) {
|
|
|
385196
385257
|
const parsed2 = parseArgs4({
|
|
385197
385258
|
args: [...argv.slice(1)],
|
|
385198
385259
|
options: {
|
|
385199
|
-
json: { type: "boolean" }
|
|
385260
|
+
json: { type: "boolean" },
|
|
385261
|
+
search: { type: "string" }
|
|
385200
385262
|
},
|
|
385201
385263
|
strict: true,
|
|
385202
385264
|
allowPositionals: false
|
|
385203
385265
|
});
|
|
385204
|
-
await withTelemetry(
|
|
385205
|
-
|
|
385206
|
-
|
|
385207
|
-
|
|
385266
|
+
await withTelemetry(
|
|
385267
|
+
{ command: "project", subcommand: "list" },
|
|
385268
|
+
async () => {
|
|
385269
|
+
const { runProjectList: runProjectList2 } = await Promise.resolve().then(() => (init_project_list(), project_list_exports));
|
|
385270
|
+
await runProjectList2({
|
|
385271
|
+
json: parsed2.values["json"] === true,
|
|
385272
|
+
search: parsed2.values["search"]
|
|
385273
|
+
});
|
|
385274
|
+
}
|
|
385275
|
+
);
|
|
385208
385276
|
return;
|
|
385209
385277
|
}
|
|
385210
385278
|
if (subcommand !== "select") {
|
|
@@ -385558,6 +385626,7 @@ async function runVerifyCommand(argv) {
|
|
|
385558
385626
|
args: [...argv],
|
|
385559
385627
|
options: {
|
|
385560
385628
|
agent: { type: "string" },
|
|
385629
|
+
"expect-runtime": { type: "string" },
|
|
385561
385630
|
header: { multiple: true, type: "string" },
|
|
385562
385631
|
json: { type: "boolean" },
|
|
385563
385632
|
"round-trip": { type: "boolean" },
|
|
@@ -385581,6 +385650,14 @@ async function runVerifyCommand(argv) {
|
|
|
385581
385650
|
if (timeoutSeconds !== void 0 && !/^\d+$/.test(timeoutSeconds)) {
|
|
385582
385651
|
process.stderr.write(
|
|
385583
385652
|
`Error: --timeout must be a whole number of seconds (received "${timeoutSeconds}").
|
|
385653
|
+
`
|
|
385654
|
+
);
|
|
385655
|
+
await exitWithFlush(1);
|
|
385656
|
+
}
|
|
385657
|
+
const expectedRuntime = parsed.values["expect-runtime"];
|
|
385658
|
+
if (expectedRuntime !== void 0 && expectedRuntime !== "intelligence" && expectedRuntime !== "oss") {
|
|
385659
|
+
process.stderr.write(
|
|
385660
|
+
`Error: --expect-runtime must be intelligence or oss (received "${expectedRuntime}").
|
|
385584
385661
|
`
|
|
385585
385662
|
);
|
|
385586
385663
|
await exitWithFlush(1);
|
|
@@ -385589,9 +385666,7 @@ async function runVerifyCommand(argv) {
|
|
|
385589
385666
|
parsed.values["header"] ?? []
|
|
385590
385667
|
);
|
|
385591
385668
|
if (headers === void 0) {
|
|
385592
|
-
process.stderr.write(
|
|
385593
|
-
'Error: --header expects "Name: value".\n'
|
|
385594
|
-
);
|
|
385669
|
+
process.stderr.write('Error: --header expects "Name: value".\n');
|
|
385595
385670
|
await exitWithFlush(1);
|
|
385596
385671
|
}
|
|
385597
385672
|
const agent = parsed.values["agent"];
|
|
@@ -385599,6 +385674,7 @@ async function runVerifyCommand(argv) {
|
|
|
385599
385674
|
await runVerify2({
|
|
385600
385675
|
json: parsed.values["json"] === true,
|
|
385601
385676
|
...agent === void 0 ? {} : { agent },
|
|
385677
|
+
...expectedRuntime === void 0 ? {} : { expectRuntime: expectedRuntime },
|
|
385602
385678
|
...headers === void 0 || Object.keys(headers).length === 0 ? {} : { headers },
|
|
385603
385679
|
...parsed.values["round-trip"] === true ? { roundTrip: true } : {},
|
|
385604
385680
|
...runtimeUrl === void 0 ? {} : { runtimeUrl },
|
package/onboarding/index.json
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"prompts": [
|
|
4
4
|
{
|
|
5
5
|
"edges": [
|
|
6
|
+
"proof/oss-baseline",
|
|
6
7
|
"credentials/plan",
|
|
7
8
|
"unsupported/no-validated-path"
|
|
8
9
|
],
|
|
@@ -19,17 +20,91 @@
|
|
|
19
20
|
},
|
|
20
21
|
{
|
|
21
22
|
"edges": [
|
|
23
|
+
"framework/ag2",
|
|
24
|
+
"framework/agno",
|
|
25
|
+
"framework/built-in",
|
|
26
|
+
"framework/claude-sdk-python",
|
|
27
|
+
"framework/claude-sdk-typescript",
|
|
28
|
+
"framework/crewai-flows",
|
|
29
|
+
"framework/deep-agents",
|
|
22
30
|
"framework/langgraph-python",
|
|
31
|
+
"framework/langgraph-fastapi",
|
|
23
32
|
"framework/langgraph-typescript",
|
|
33
|
+
"framework/llamaindex",
|
|
24
34
|
"framework/google-adk",
|
|
25
35
|
"framework/ms-agent-python",
|
|
26
36
|
"framework/ms-agent-dotnet",
|
|
27
37
|
"framework/mastra",
|
|
38
|
+
"framework/ms-agent-harness-dotnet",
|
|
39
|
+
"framework/pydantic-ai",
|
|
40
|
+
"framework/strands-python",
|
|
41
|
+
"framework/strands-typescript",
|
|
28
42
|
"unsupported/no-validated-path"
|
|
29
43
|
],
|
|
30
44
|
"milestone": "credentials",
|
|
31
45
|
"name": "credentials/plan"
|
|
32
46
|
},
|
|
47
|
+
{
|
|
48
|
+
"edges": [],
|
|
49
|
+
"milestone": "fallback",
|
|
50
|
+
"name": "fallback/best-effort"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"edges": [
|
|
54
|
+
"frontend/plan",
|
|
55
|
+
"unsupported/no-validated-path"
|
|
56
|
+
],
|
|
57
|
+
"milestone": "framework",
|
|
58
|
+
"name": "framework/ag2"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"edges": [
|
|
62
|
+
"frontend/plan",
|
|
63
|
+
"unsupported/no-validated-path"
|
|
64
|
+
],
|
|
65
|
+
"milestone": "framework",
|
|
66
|
+
"name": "framework/agno"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"edges": [
|
|
70
|
+
"frontend/plan",
|
|
71
|
+
"unsupported/no-validated-path"
|
|
72
|
+
],
|
|
73
|
+
"milestone": "framework",
|
|
74
|
+
"name": "framework/built-in"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"edges": [
|
|
78
|
+
"frontend/plan",
|
|
79
|
+
"unsupported/no-validated-path"
|
|
80
|
+
],
|
|
81
|
+
"milestone": "framework",
|
|
82
|
+
"name": "framework/claude-sdk-python"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"edges": [
|
|
86
|
+
"frontend/plan",
|
|
87
|
+
"unsupported/no-validated-path"
|
|
88
|
+
],
|
|
89
|
+
"milestone": "framework",
|
|
90
|
+
"name": "framework/claude-sdk-typescript"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"edges": [
|
|
94
|
+
"frontend/plan",
|
|
95
|
+
"unsupported/no-validated-path"
|
|
96
|
+
],
|
|
97
|
+
"milestone": "framework",
|
|
98
|
+
"name": "framework/crewai-flows"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"edges": [
|
|
102
|
+
"frontend/plan",
|
|
103
|
+
"unsupported/no-validated-path"
|
|
104
|
+
],
|
|
105
|
+
"milestone": "framework",
|
|
106
|
+
"name": "framework/deep-agents"
|
|
107
|
+
},
|
|
33
108
|
{
|
|
34
109
|
"edges": [
|
|
35
110
|
"frontend/plan",
|
|
@@ -38,6 +113,14 @@
|
|
|
38
113
|
"milestone": "framework",
|
|
39
114
|
"name": "framework/google-adk"
|
|
40
115
|
},
|
|
116
|
+
{
|
|
117
|
+
"edges": [
|
|
118
|
+
"frontend/plan",
|
|
119
|
+
"unsupported/no-validated-path"
|
|
120
|
+
],
|
|
121
|
+
"milestone": "framework",
|
|
122
|
+
"name": "framework/langgraph-fastapi"
|
|
123
|
+
},
|
|
41
124
|
{
|
|
42
125
|
"edges": [
|
|
43
126
|
"frontend/plan",
|
|
@@ -54,6 +137,14 @@
|
|
|
54
137
|
"milestone": "framework",
|
|
55
138
|
"name": "framework/langgraph-typescript"
|
|
56
139
|
},
|
|
140
|
+
{
|
|
141
|
+
"edges": [
|
|
142
|
+
"frontend/plan",
|
|
143
|
+
"unsupported/no-validated-path"
|
|
144
|
+
],
|
|
145
|
+
"milestone": "framework",
|
|
146
|
+
"name": "framework/llamaindex"
|
|
147
|
+
},
|
|
57
148
|
{
|
|
58
149
|
"edges": [
|
|
59
150
|
"frontend/plan",
|
|
@@ -70,6 +161,14 @@
|
|
|
70
161
|
"milestone": "framework",
|
|
71
162
|
"name": "framework/ms-agent-dotnet"
|
|
72
163
|
},
|
|
164
|
+
{
|
|
165
|
+
"edges": [
|
|
166
|
+
"frontend/plan",
|
|
167
|
+
"unsupported/no-validated-path"
|
|
168
|
+
],
|
|
169
|
+
"milestone": "framework",
|
|
170
|
+
"name": "framework/ms-agent-harness-dotnet"
|
|
171
|
+
},
|
|
73
172
|
{
|
|
74
173
|
"edges": [
|
|
75
174
|
"frontend/plan",
|
|
@@ -78,6 +177,30 @@
|
|
|
78
177
|
"milestone": "framework",
|
|
79
178
|
"name": "framework/ms-agent-python"
|
|
80
179
|
},
|
|
180
|
+
{
|
|
181
|
+
"edges": [
|
|
182
|
+
"frontend/plan",
|
|
183
|
+
"unsupported/no-validated-path"
|
|
184
|
+
],
|
|
185
|
+
"milestone": "framework",
|
|
186
|
+
"name": "framework/pydantic-ai"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"edges": [
|
|
190
|
+
"frontend/plan",
|
|
191
|
+
"unsupported/no-validated-path"
|
|
192
|
+
],
|
|
193
|
+
"milestone": "framework",
|
|
194
|
+
"name": "framework/strands-python"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"edges": [
|
|
198
|
+
"frontend/plan",
|
|
199
|
+
"unsupported/no-validated-path"
|
|
200
|
+
],
|
|
201
|
+
"milestone": "framework",
|
|
202
|
+
"name": "framework/strands-typescript"
|
|
203
|
+
},
|
|
81
204
|
{
|
|
82
205
|
"edges": [
|
|
83
206
|
"credentials/finalize-plan",
|
|
@@ -116,6 +239,7 @@
|
|
|
116
239
|
},
|
|
117
240
|
{
|
|
118
241
|
"edges": [
|
|
242
|
+
"credentials/finalize-plan",
|
|
119
243
|
"unsupported/no-validated-path"
|
|
120
244
|
],
|
|
121
245
|
"milestone": "frontend",
|
|
@@ -142,6 +266,14 @@
|
|
|
142
266
|
"milestone": "proof",
|
|
143
267
|
"name": "proof/complete"
|
|
144
268
|
},
|
|
269
|
+
{
|
|
270
|
+
"edges": [
|
|
271
|
+
"credentials/plan",
|
|
272
|
+
"unsupported/no-validated-path"
|
|
273
|
+
],
|
|
274
|
+
"milestone": "proof",
|
|
275
|
+
"name": "proof/oss-baseline"
|
|
276
|
+
},
|
|
145
277
|
{
|
|
146
278
|
"edges": [
|
|
147
279
|
"proof/complete",
|
|
@@ -168,10 +300,17 @@
|
|
|
168
300
|
{
|
|
169
301
|
"edges": [],
|
|
170
302
|
"milestone": "subagent",
|
|
171
|
-
"name": "subagent/prove-
|
|
303
|
+
"name": "subagent/prove-oss-baseline"
|
|
172
304
|
},
|
|
173
305
|
{
|
|
174
306
|
"edges": [],
|
|
307
|
+
"milestone": "subagent",
|
|
308
|
+
"name": "subagent/prove-round-trip"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"edges": [
|
|
312
|
+
"fallback/best-effort"
|
|
313
|
+
],
|
|
175
314
|
"milestone": "unsupported",
|
|
176
315
|
"name": "unsupported/no-validated-path"
|
|
177
316
|
}
|
|
@@ -14,7 +14,12 @@ question from the documentation this graph gives you. Another checkout on this m
|
|
|
14
14
|
not a source. The developer running this has none, so an answer taken from one is an
|
|
15
15
|
answer they cannot get, and it hides the documentation gap that blocks them.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Tell the developer that onboarding can send feedback outside this machine. Explain that
|
|
18
|
+
the reports contain short descriptions of CLI or documentation problems. Ask whether the
|
|
19
|
+
developer permits these reports before project work starts. Record the answer. Do not send
|
|
20
|
+
feedback unless the developer permits it.
|
|
21
|
+
|
|
22
|
+
Run `npx --yes copilotkit@4.9.0 login --json` before any project work. This command checks the
|
|
18
23
|
current session. It starts sign-in only as needed.
|
|
19
24
|
|
|
20
25
|
Read its JSON Lines output in order:
|
|
@@ -34,10 +39,17 @@ prompt and tell it to follow that brief and return only its findings. Add these
|
|
|
34
39
|
- Check whether `.copilotkit/project.json` has `projectId`, `projectSlug`, and `clerkOrgId`.
|
|
35
40
|
- Check whether `.env` has a non-empty `INTELLIGENCE_API_KEY` entry.
|
|
36
41
|
- Record the `.env` file modification time without returning it.
|
|
42
|
+
- Report whether an agent, frontend, and CopilotKit integration are present.
|
|
43
|
+
- Report whether the runtime constructor uses a `runner` option, an `intelligence`
|
|
44
|
+
option, or neither can be proved from project files.
|
|
37
45
|
|
|
38
46
|
Do not print either file or any secret value. Return only paths, presence checks, and missing
|
|
39
47
|
field names. Wait for the subagent to finish.
|
|
40
48
|
|
|
49
|
+
If the findings show an empty project and do not prove its purpose, ask what the developer
|
|
50
|
+
wants to build before you select a framework. Ask this question immediately. Record the
|
|
51
|
+
answer and give it to each later subagent.
|
|
52
|
+
|
|
41
53
|
If a repository file exists, each finding must cite it. For an empty project, the subagent
|
|
42
54
|
must cite its directory check and report absent parts.
|
|
43
55
|
|
|
@@ -45,11 +57,16 @@ The findings must cover what the project is for, the agent, frontend, CopilotKit
|
|
|
45
57
|
authentication, credential names, and validation path. Do not ask the developer for facts
|
|
46
58
|
that the repository answers.
|
|
47
59
|
|
|
48
|
-
|
|
49
|
-
|
|
60
|
+
Do not infer a working OSS path from packages, imports, project files, or keys. If an
|
|
61
|
+
agent, frontend, and CopilotKit integration are present, prove the live starting state
|
|
62
|
+
before any project file changes. Run
|
|
63
|
+
`npx --yes copilotkit@4.9.0 onboard read proof/oss-baseline`.
|
|
64
|
+
|
|
65
|
+
For every other inspected state, run
|
|
66
|
+
`npx --yes copilotkit@4.9.0 onboard read credentials/plan`.
|
|
50
67
|
|
|
51
68
|
If authentication or inspection stops onboarding, run
|
|
52
|
-
`npx copilotkit@4.
|
|
69
|
+
`npx --yes copilotkit@4.9.0 onboard read unsupported/no-validated-path`.
|
|
53
70
|
|
|
54
71
|
## Research subagent brief
|
|
55
72
|
|