copilotkit 4.8.2 → 4.8.4
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 +218 -4
- package/cli-build-info.json +7 -7
- package/index.js +43404 -20635
- package/onboarding/index.json +179 -0
- package/onboarding/prompts/authenticate/start.md +83 -0
- package/onboarding/prompts/credentials/finalize-plan.md +185 -0
- package/onboarding/prompts/credentials/plan.md +38 -0
- package/onboarding/prompts/framework/google-adk.md +41 -0
- package/onboarding/prompts/framework/langgraph-python.md +28 -0
- package/onboarding/prompts/framework/langgraph-typescript.md +28 -0
- package/onboarding/prompts/framework/mastra.md +58 -0
- package/onboarding/prompts/framework/ms-agent-dotnet.md +66 -0
- package/onboarding/prompts/framework/ms-agent-python.md +41 -0
- package/onboarding/prompts/frontend/angular.md +27 -0
- package/onboarding/prompts/frontend/nextjs.md +23 -0
- package/onboarding/prompts/frontend/plan.md +27 -0
- package/onboarding/prompts/frontend/react-native.md +18 -0
- package/onboarding/prompts/frontend/react-spa.md +12 -0
- package/onboarding/prompts/frontend/vue.md +18 -0
- package/onboarding/prompts/implementation/build-and-validate.md +78 -0
- package/onboarding/prompts/proof/complete.md +59 -0
- package/onboarding/prompts/proof/round-trip.md +143 -0
- package/onboarding/prompts/subagent/create-plan.md +69 -0
- package/onboarding/prompts/subagent/implement-and-validate.md +48 -0
- package/onboarding/prompts/subagent/inspect-repository.md +24 -0
- package/onboarding/prompts/subagent/prove-round-trip.md +114 -0
- package/onboarding/prompts/unsupported/no-validated-path.md +22 -0
- package/package.json +4 -1
- package/release/release-tool.js +39 -5
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Inspect the repository
|
|
2
|
+
|
|
3
|
+
Inspect the repository without changing it. Find evidence for:
|
|
4
|
+
|
|
5
|
+
- what the project is for, in the project's own words
|
|
6
|
+
- any existing agent framework
|
|
7
|
+
- any existing frontend
|
|
8
|
+
- current CopilotKit packages and configuration
|
|
9
|
+
- authentication boundaries
|
|
10
|
+
- names of required credential variables, without reading their values
|
|
11
|
+
|
|
12
|
+
A project states what it is for in its `README.md`, in its package description, or in
|
|
13
|
+
the prompt of an agent it already has. Quote that statement rather than rewriting it. An
|
|
14
|
+
empty project carries it in the README alone, and that makes the README the whole of the
|
|
15
|
+
evidence. State the purpose as unproved when the project never says.
|
|
16
|
+
|
|
17
|
+
Gather what you need in as few commands as possible. Combine independent reads into one
|
|
18
|
+
command rather than running them one at a time. Split a command only when its result decides
|
|
19
|
+
what you run next.
|
|
20
|
+
|
|
21
|
+
Return the file paths and a short finding for each item. State each absent or unproved item.
|
|
22
|
+
Do not read, print, or return secret values. Do not read a file outside the project
|
|
23
|
+
directory. Do not run or return another onboarding command. Stop after returning the
|
|
24
|
+
findings to the main coding agent.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Prove the complete round trip
|
|
2
|
+
|
|
3
|
+
Use the proof steps and documentation URLs from the approved plan. Fetch every selected
|
|
4
|
+
URL in one step before you start, rather than one after another.
|
|
5
|
+
Do not use remembered CopilotKit instructions.
|
|
6
|
+
|
|
7
|
+
Read the port the developer's agent already serves from this project's own
|
|
8
|
+
configuration. Do not assume a default, and do not start a second copy of an agent this
|
|
9
|
+
project is already running. Before you bind any new server, check that the port is free
|
|
10
|
+
and pick another one if it is not. Record every port you used.
|
|
11
|
+
|
|
12
|
+
Start the agent and the selected frontend.
|
|
13
|
+
|
|
14
|
+
With both running, check the wiring in one command before you open a browser:
|
|
15
|
+
`npx copilotkit@4.8.4 verify --json`. Add `--runtime-url` when the runtime is not at
|
|
16
|
+
`http://localhost:3000/api/copilotkit`. Read the individual checks rather than the summary
|
|
17
|
+
alone: a check reported `undetermined` did not run, and that is not a pass. Fix anything
|
|
18
|
+
that is not a pass before the browser, because a browser failure stacked on broken wiring
|
|
19
|
+
costs a round of debugging to reach an answer this command already gave.
|
|
20
|
+
|
|
21
|
+
Treat `intelligence_consumed` as the check that matters most here. A journey that finishes
|
|
22
|
+
with the Intelligence credential never read looks complete and proves nothing about the
|
|
23
|
+
paid surface. `api_key_authenticates` passing beside it says the key is real and the
|
|
24
|
+
runtime never used it.
|
|
25
|
+
|
|
26
|
+
`intelligence_thread_routes` fails when the runtime reports a license but serves no
|
|
27
|
+
thread routes, which means saved Threads cannot load in a browser. The usual cause is a
|
|
28
|
+
handler mounted `mode: "single-route"`: remove that option so the handler serves its full
|
|
29
|
+
route set, and mount it at a catch-all route. If instead that check is `undetermined`
|
|
30
|
+
because the runtime reports no thread-endpoint state, the runtime predates the field.
|
|
31
|
+
Record that and move on — there is nothing to repair.
|
|
32
|
+
|
|
33
|
+
Then prove that the agent actually runs, which is the gate for this node:
|
|
34
|
+
`npx copilotkit@4.8.4 verify --round-trip --json`. It sends one request through the
|
|
35
|
+
runtime and reads the answer back from the thread, so it separates an agent that is
|
|
36
|
+
configured from an agent that works. Use `--agent <id>` when the runtime declares more
|
|
37
|
+
than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
|
|
38
|
+
session the CLI does not carry: pass what it reads with `--header "Name: value"` and run
|
|
39
|
+
it again, because an auth-gated app refusing an unauthenticated caller is that app
|
|
40
|
+
working. Do not continue until this passes, and never report a round trip proven without
|
|
41
|
+
it.
|
|
42
|
+
|
|
43
|
+
Then send one real request through the frontend. Make sure that the request passes through
|
|
44
|
+
CopilotKit and reaches the selected agent.
|
|
45
|
+
|
|
46
|
+
Before you trust the agent, confirm that the process answering is the one in this
|
|
47
|
+
repository. `verify` reports which agents the runtime declares and has nothing to compare
|
|
48
|
+
them against, and `--round-trip` proves an agent answers under the declared id without
|
|
49
|
+
proving which deployment did, so this comparison is yours. A health endpoint that returns success proves only that something listens on
|
|
50
|
+
that port. An agent from earlier work often still holds it, and a stale process answers
|
|
51
|
+
as though it were the new one. Ask the running agent which graph or agent id it serves
|
|
52
|
+
and compare that with the id declared in this project.
|
|
53
|
+
|
|
54
|
+
If they do not match, find out whose process it is before you signal anything.
|
|
55
|
+
`lsof -ti :<port> -sTCP:LISTEN` gives the process id, and `lsof -a -p <pid> -d cwd` gives
|
|
56
|
+
the directory it runs in. Stop it only when that directory is inside this project, and
|
|
57
|
+
stop its children before the parent so nothing survives by reparenting. A holder outside
|
|
58
|
+
this project belongs to other work: leave it running, report it, and bind to another port.
|
|
59
|
+
Never stop a process because its command line matches a name. One `pkill` pattern reaches
|
|
60
|
+
every project on the machine and takes down work that has nothing to do with this run.
|
|
61
|
+
Never continue against a process you cannot identify, and never report a round trip proven
|
|
62
|
+
by one.
|
|
63
|
+
|
|
64
|
+
Address a local agent by host name rather than by an IP literal. Some local agents bind
|
|
65
|
+
IPv6 only, so an IPv4 literal fails against the correct port.
|
|
66
|
+
|
|
67
|
+
Drive the real UI in a browser whenever your environment can, and make sure that the
|
|
68
|
+
frontend receives working generative UI from the agent. Prefer this: it is the only step
|
|
69
|
+
that covers realtime delivery to a browser, browser-origin CORS and CSP, the frontend
|
|
70
|
+
provider being wired to this runtime, and a generative UI component actually rendering,
|
|
71
|
+
and no command-line check reaches any of them.
|
|
72
|
+
|
|
73
|
+
Use a browser MCP server already configured for the coding agent you are running as, the
|
|
74
|
+
same way the CopilotKit documentation MCP server below is configured. Do not add a browser
|
|
75
|
+
driver to this project: a devDependency and a browser download land in the diff and tax a
|
|
76
|
+
repository that never asked for one. If nothing in your environment can drive a
|
|
77
|
+
browser, skip this step rather than installing one, and never report a visual result you
|
|
78
|
+
did not see.
|
|
79
|
+
|
|
80
|
+
Report exactly one of `performed`, `skipped-no-browser-tool`, or `failed` for this step.
|
|
81
|
+
|
|
82
|
+
Record the input, visible result, relevant process status, and evidence locations. Do not
|
|
83
|
+
return secret values.
|
|
84
|
+
|
|
85
|
+
Where the answer is meant to be about data the project holds, check it against that data.
|
|
86
|
+
Read the entities the project holds -- the ids, names, or records the answer claims to
|
|
87
|
+
describe -- and confirm the answer names those and no others. Record the entities you
|
|
88
|
+
compared. Where the outcome of this journey references no project data, record that
|
|
89
|
+
instead, and do not invent a comparison to pass this step.
|
|
90
|
+
|
|
91
|
+
An answer that renders correctly over entities the project does not hold looks the same as
|
|
92
|
+
a correct one in a browser, in a screenshot, and in a video, so this comparison is the only
|
|
93
|
+
stage that separates them. An answer that names an entity the project does not hold is a
|
|
94
|
+
failed proof, not a passing one. Find which of these it is before you change anything: the
|
|
95
|
+
project's data never reaches the agent, the agent receives it and its instructions ignore
|
|
96
|
+
it, the page loads its data after the context was registered, or the run wired a different
|
|
97
|
+
source than the page renders. Fix that cause, then prove again.
|
|
98
|
+
|
|
99
|
+
Install the continued-development tools while you drive the round trip, not after it. The
|
|
100
|
+
two are independent, so running them one after the other adds minutes to the journey for
|
|
101
|
+
no reason. Fetch the continued-development guide from the main coding agent at the same
|
|
102
|
+
time as the proof documentation.
|
|
103
|
+
Use it to install the project-scoped CopilotKit Skills.
|
|
104
|
+
Use it to configure the CopilotKit documentation MCP server for the current coding agent.
|
|
105
|
+
|
|
106
|
+
Record the installed Skills and the configured MCP server. If either tool step fails, return
|
|
107
|
+
the exact documentation gap or error.
|
|
108
|
+
|
|
109
|
+
Gather what you need in as few commands as possible. Combine independent reads into one
|
|
110
|
+
command rather than running them one at a time. Split a command only when its result decides
|
|
111
|
+
what you run next.
|
|
112
|
+
|
|
113
|
+
Return the proof or the exact failed step to the main coding agent, together with the
|
|
114
|
+
visual-check outcome. Stop after you return the result.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# No validated path in this release
|
|
2
|
+
|
|
3
|
+
Stop onboarding without making more repository changes. Keep the developer's current agent,
|
|
4
|
+
frontend, authentication, and package choices.
|
|
5
|
+
|
|
6
|
+
Explain the exact step that failed. State whether authentication, project selection, project
|
|
7
|
+
credentials, the journey, a documentation URL, implementation, validation, or proof caused
|
|
8
|
+
the stop. Do not invent an adapter or claim that an untested path works.
|
|
9
|
+
|
|
10
|
+
If useful, send one short report:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
npx copilotkit@4.8.4 onboard feedback
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Write the feedback message to the command's standard input, in at most four lines.
|
|
17
|
+
Send no secrets, source code, logs, or command output. The command refuses a report
|
|
18
|
+
that carries any of those, prints the reason, and exits zero. A refused report is not
|
|
19
|
+
a failed step. Reword it and send it again, or stop without a report. The command
|
|
20
|
+
prints what it sent. This is the channel for a stop. Report friction only from a run that
|
|
21
|
+
finished, never from here. Stop after the explanation or optional feedback. This
|
|
22
|
+
unsupported outcome does not complete onboarding.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "copilotkit",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,5 +9,8 @@
|
|
|
9
9
|
},
|
|
10
10
|
"bin": {
|
|
11
11
|
"copilotkit": "./index.js"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@microsoft/teams.cli": "3.0.3"
|
|
12
15
|
}
|
|
13
16
|
}
|
package/release/release-tool.js
CHANGED
|
@@ -91,6 +91,9 @@ var STARTER_SOURCE_CATALOG = {
|
|
|
91
91
|
adk: copilotKitStarter("examples/integrations/adk"),
|
|
92
92
|
"adk-angular": copilotKitStarter("examples/integrations/adk-angular"),
|
|
93
93
|
"aws-strands-py": copilotKitStarter("examples/integrations/strands-python"),
|
|
94
|
+
"aws-strands-ts": copilotKitStarter(
|
|
95
|
+
"examples/integrations/strands-typescript"
|
|
96
|
+
),
|
|
94
97
|
a2a: copilotKitStarter("examples/integrations/a2a-middleware"),
|
|
95
98
|
"microsoft-agent-framework-dotnet": copilotKitStarter(
|
|
96
99
|
"examples/integrations/ms-agent-framework-dotnet"
|
|
@@ -13900,6 +13903,15 @@ config(en_default());
|
|
|
13900
13903
|
// apps/cli/src/release/release-schemas.ts
|
|
13901
13904
|
var import_starter_source_policy2 = __toESM(require_starter_source_policy(), 1);
|
|
13902
13905
|
var CLI_BUILD_INFO_FILENAME = "cli-build-info.json";
|
|
13906
|
+
var PROVENANCE_CHANNELS = [
|
|
13907
|
+
"production",
|
|
13908
|
+
"dev",
|
|
13909
|
+
"staging",
|
|
13910
|
+
"preview",
|
|
13911
|
+
"push",
|
|
13912
|
+
"pull-request",
|
|
13913
|
+
"validation"
|
|
13914
|
+
];
|
|
13903
13915
|
var canonicalCommitSchema = external_exports.string().regex(/^[0-9a-f]{40}$/);
|
|
13904
13916
|
var instantSchema = external_exports.iso.datetime({ offset: true });
|
|
13905
13917
|
var packageVersionSchema = external_exports.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/);
|
|
@@ -13921,7 +13933,7 @@ var buildInfoSchema = external_exports.object({
|
|
|
13921
13933
|
submittedInput: external_exports.string().min(1),
|
|
13922
13934
|
commit: canonicalCommitSchema
|
|
13923
13935
|
}).strict(),
|
|
13924
|
-
channel: external_exports.enum(
|
|
13936
|
+
channel: external_exports.enum(PROVENANCE_CHANNELS),
|
|
13925
13937
|
triggeringActor: external_exports.string().min(1),
|
|
13926
13938
|
workflow: external_exports.object({
|
|
13927
13939
|
runId: external_exports.string().min(1),
|
|
@@ -14683,7 +14695,7 @@ import * as path4 from "node:path";
|
|
|
14683
14695
|
|
|
14684
14696
|
// apps/cli/src/config.ts
|
|
14685
14697
|
function getTemplateRef() {
|
|
14686
|
-
return true ? "
|
|
14698
|
+
return true ? "47c5510b4909f6728288ecf28d7b14cd14922d33" : "main";
|
|
14687
14699
|
}
|
|
14688
14700
|
|
|
14689
14701
|
// apps/cli/src/services/agentcore-config.ts
|
|
@@ -14859,7 +14871,19 @@ var TELEMETRY_ERROR_CODES = {
|
|
|
14859
14871
|
AUTH_FAILED: "AUTH_FAILED",
|
|
14860
14872
|
USER_ABORTED: "USER_ABORTED",
|
|
14861
14873
|
NON_INTERACTIVE: "NON_INTERACTIVE",
|
|
14862
|
-
FILESYSTEM_WRITE_FAILED: "FILESYSTEM_WRITE_FAILED"
|
|
14874
|
+
FILESYSTEM_WRITE_FAILED: "FILESYSTEM_WRITE_FAILED",
|
|
14875
|
+
/**
|
|
14876
|
+
* `project select --project` named a project the active organization does
|
|
14877
|
+
* not have. Distinct from a generic validation failure so the funnel can
|
|
14878
|
+
* tell "the caller guessed a slug" from a malformed request.
|
|
14879
|
+
*/
|
|
14880
|
+
PROJECT_NOT_FOUND: "PROJECT_NOT_FOUND",
|
|
14881
|
+
CLI_PRODUCT_BINARY_TOO_LARGE: "CLI_PRODUCT_BINARY_TOO_LARGE",
|
|
14882
|
+
LEARNING_CONTAINER_ID_INVALID: "LEARNING_CONTAINER_ID_INVALID",
|
|
14883
|
+
LEARNING_PROJECT_ID_INVALID: "LEARNING_PROJECT_ID_INVALID",
|
|
14884
|
+
LEARNING_SKILLS_BUNDLE_INVALID: "LEARNING_SKILLS_BUNDLE_INVALID",
|
|
14885
|
+
LEARNING_SKILLS_INTEGRITY_FAILED: "LEARNING_SKILLS_INTEGRITY_FAILED",
|
|
14886
|
+
LEARNING_SKILLS_OUTPUT_EXISTS: "LEARNING_SKILLS_OUTPUT_EXISTS"
|
|
14863
14887
|
};
|
|
14864
14888
|
function tagError(err, code) {
|
|
14865
14889
|
err.code = code;
|
|
@@ -14885,6 +14909,7 @@ var FRAMEWORK_EMOJI = {
|
|
|
14885
14909
|
"adk-angular": "\u{1F53A}",
|
|
14886
14910
|
a2a: "\u{1F916}",
|
|
14887
14911
|
"aws-strands-py": "\u{1F9EC}",
|
|
14912
|
+
"aws-strands-ts": "\u{1F9EC}",
|
|
14888
14913
|
"microsoft-agent-framework-dotnet": "\u{1F7E6}",
|
|
14889
14914
|
"microsoft-agent-framework-py": "\u{1F7E6}",
|
|
14890
14915
|
"mcp-apps": "\u{1F9E9}",
|
|
@@ -14919,6 +14944,10 @@ var FRAMEWORK_CHOICES = [
|
|
|
14919
14944
|
label: `${FRAMEWORK_EMOJI["aws-strands-py"]} AWS Strands (Python)`,
|
|
14920
14945
|
value: "aws-strands-py"
|
|
14921
14946
|
},
|
|
14947
|
+
{
|
|
14948
|
+
label: `${FRAMEWORK_EMOJI["aws-strands-ts"]} AWS Strands (TypeScript)`,
|
|
14949
|
+
value: "aws-strands-ts"
|
|
14950
|
+
},
|
|
14922
14951
|
{ label: `${FRAMEWORK_EMOJI.adk} ADK`, value: "adk" },
|
|
14923
14952
|
{
|
|
14924
14953
|
label: `${FRAMEWORK_EMOJI["adk-angular"]} Angular + ADK`,
|
|
@@ -15093,6 +15122,11 @@ var FRAMEWORK_TEMPLATES = {
|
|
|
15093
15122
|
TEMPLATE_REPOS["aws-strands-py"],
|
|
15094
15123
|
`\u{1FA81}\u{1F91D}${FRAMEWORK_EMOJI["aws-strands-py"]}`
|
|
15095
15124
|
),
|
|
15125
|
+
"aws-strands-ts": standardTemplate(
|
|
15126
|
+
"aws-strands-ts",
|
|
15127
|
+
TEMPLATE_REPOS["aws-strands-ts"],
|
|
15128
|
+
`\u{1FA81}\u{1F91D}${FRAMEWORK_EMOJI["aws-strands-ts"]}`
|
|
15129
|
+
),
|
|
15096
15130
|
a2a: {
|
|
15097
15131
|
...standardTemplate(
|
|
15098
15132
|
"a2a",
|
|
@@ -15432,7 +15466,7 @@ async function scaffoldStarterForSmoke(input, scaffold = scaffoldProject) {
|
|
|
15432
15466
|
}
|
|
15433
15467
|
}
|
|
15434
15468
|
async function executeStarterSmokeChild(command) {
|
|
15435
|
-
return new Promise((
|
|
15469
|
+
return new Promise((resolve4, reject) => {
|
|
15436
15470
|
execFile(
|
|
15437
15471
|
command.executable,
|
|
15438
15472
|
[...command.args],
|
|
@@ -15446,7 +15480,7 @@ async function executeStarterSmokeChild(command) {
|
|
|
15446
15480
|
reject(error48);
|
|
15447
15481
|
return;
|
|
15448
15482
|
}
|
|
15449
|
-
|
|
15483
|
+
resolve4(stdout);
|
|
15450
15484
|
}
|
|
15451
15485
|
);
|
|
15452
15486
|
});
|