copilotkit 4.8.3 → 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.
Files changed (47) hide show
  1. package/README.md +183 -2
  2. package/cli-build-info.json +7 -7
  3. package/index.js +5645 -3567
  4. package/onboarding/index.json +33 -33
  5. package/onboarding/prompts/authenticate/start.md +63 -10
  6. package/onboarding/prompts/credentials/finalize-plan.md +168 -15
  7. package/onboarding/prompts/credentials/plan.md +55 -49
  8. package/onboarding/prompts/fallback/best-effort.md +29 -0
  9. package/onboarding/prompts/framework/ag2.md +33 -7
  10. package/onboarding/prompts/framework/agno.md +32 -7
  11. package/onboarding/prompts/framework/built-in.md +30 -8
  12. package/onboarding/prompts/framework/claude-sdk-python.md +35 -7
  13. package/onboarding/prompts/framework/claude-sdk-typescript.md +39 -7
  14. package/onboarding/prompts/framework/crewai-flows.md +41 -7
  15. package/onboarding/prompts/framework/deep-agents.md +30 -6
  16. package/onboarding/prompts/framework/google-adk.md +32 -8
  17. package/onboarding/prompts/framework/langgraph-fastapi.md +24 -5
  18. package/onboarding/prompts/framework/langgraph-python.md +15 -5
  19. package/onboarding/prompts/framework/langgraph-typescript.md +15 -5
  20. package/onboarding/prompts/framework/llamaindex.md +35 -7
  21. package/onboarding/prompts/framework/mastra.md +48 -6
  22. package/onboarding/prompts/framework/ms-agent-dotnet.md +57 -7
  23. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +48 -8
  24. package/onboarding/prompts/framework/ms-agent-python.md +32 -7
  25. package/onboarding/prompts/framework/pydantic-ai.md +34 -9
  26. package/onboarding/prompts/framework/strands-python.md +28 -9
  27. package/onboarding/prompts/framework/strands-typescript.md +28 -9
  28. package/onboarding/prompts/frontend/angular.md +20 -5
  29. package/onboarding/prompts/frontend/nextjs.md +13 -3
  30. package/onboarding/prompts/frontend/plan.md +20 -19
  31. package/onboarding/prompts/frontend/react-native.md +9 -3
  32. package/onboarding/prompts/frontend/react-spa.md +20 -5
  33. package/onboarding/prompts/frontend/vue.md +9 -3
  34. package/onboarding/prompts/implementation/build-and-validate.md +82 -7
  35. package/onboarding/prompts/proof/complete.md +63 -2
  36. package/onboarding/prompts/proof/oss-baseline.md +59 -0
  37. package/onboarding/prompts/proof/round-trip.md +150 -8
  38. package/onboarding/prompts/subagent/create-plan.md +69 -2
  39. package/onboarding/prompts/subagent/implement-and-validate.md +48 -3
  40. package/onboarding/prompts/subagent/inspect-repository.md +13 -3
  41. package/onboarding/prompts/subagent/prove-oss-baseline.md +35 -0
  42. package/onboarding/prompts/subagent/prove-round-trip.md +118 -11
  43. package/onboarding/prompts/unsupported/no-validated-path.md +27 -9
  44. package/package.json +1 -1
  45. package/release/release-tool.js +32 -4
  46. package/onboarding/prompts/frontend/slack.md +0 -20
  47. package/onboarding/prompts/frontend/teams.md +0 -20
@@ -1,20 +1,127 @@
1
1
  # Prove the complete round trip
2
2
 
3
- Use the proof steps and documentation URLs from the approved plan. Fetch each selected URL
4
- before you start. Do not use remembered CopilotKit instructions.
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.
5
6
 
6
- Start the agent and the selected frontend. Send one real request through the frontend.
7
- Make sure that the request passes through CopilotKit and reaches the selected agent.
7
+ A fetch tool that refuses a URL, or fails to reach it, reports a limit of the tool and
8
+ not a fact about the page. Retrieve the same URL a second way before you judge it. Run
9
+ `curl -fsSL <url>`, or read the same page without the `.md` suffix. Report a
10
+ documentation gap only after a second method also fails.
8
11
 
9
- Make sure that the frontend receives working generative UI from the agent. Record the input,
10
- visible result, relevant process status, and evidence locations. Do not return secret values.
12
+ Read the port the developer's agent already serves from this project's own
13
+ configuration. Do not assume a default, and do not start a second copy of an agent this
14
+ project is already running. Before you bind any new server, check that the port is free
15
+ and pick another one if it is not. Record every port you used.
11
16
 
12
- After the round trip works, fetch the continued-development guide from the main coding agent.
17
+ Start the agent and the selected frontend.
18
+
19
+ Leave the agent and frontend servers running after proof. Record each process ID and a
20
+ safe command that stops that process. Record the frontend URL and the commands that start
21
+ both servers again.
22
+
23
+ With both running, check the wiring in one command before you open a browser:
24
+ `npx --yes copilotkit@4.9.0 verify --json`. Add `--runtime-url` when the runtime is not at
25
+ `http://localhost:3000/api/copilotkit`. Read the individual checks rather than the summary
26
+ alone: a check reported `undetermined` did not run, and that is not a pass. Fix anything
27
+ that is not a pass before the browser, because a browser failure stacked on broken wiring
28
+ costs a round of debugging to reach an answer this command already gave.
29
+
30
+ Treat `intelligence_consumed` as the check that matters most here. A journey that finishes
31
+ with the Intelligence credential never read looks complete and proves nothing about the
32
+ paid surface. `api_key_authenticates` passing beside it says the key is real and the
33
+ runtime never used it.
34
+
35
+ `intelligence_thread_routes` fails when the runtime reports a license but serves no
36
+ thread routes, which means saved Threads cannot load in a browser. The usual cause is a
37
+ handler mounted `mode: "single-route"`: remove that option so the handler serves its full
38
+ route set, and mount it at a catch-all route. If instead that check is `undetermined`
39
+ because the runtime reports no thread-endpoint state, the runtime predates the field.
40
+ Record that and move on — there is nothing to repair.
41
+
42
+ Then prove that the agent actually runs, which is the gate for this node:
43
+ `npx --yes copilotkit@4.9.0 verify --round-trip --json`. It sends one request through the
44
+ runtime and reads the answer back from the thread, so it separates an agent that is
45
+ configured from an agent that works. Use `--agent <id>` when the runtime declares more
46
+ than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
47
+ session the CLI does not carry: pass what it reads with `--header "Name: value"` and run
48
+ it again, because an auth-gated app refusing an unauthenticated caller is that app
49
+ working. Do not continue until this passes, and never report a round trip proven without
50
+ it.
51
+
52
+ Then send one real request through the frontend. Make sure that the request passes through
53
+ CopilotKit and reaches the selected agent.
54
+
55
+ For a recorded `both-oss` starting state: Compare the final round trip with the recorded
56
+ OSS baseline. The same frontend request must still reach the same agent and produce the
57
+ same kind of user-visible result. The runtime must now report `licenseStatus`, and the
58
+ authenticated Intelligence checks must pass. Record both before and after evidence.
59
+
60
+ Before you trust the agent, confirm that the process answering is the one in this
61
+ repository. `verify` reports which agents the runtime declares and has nothing to compare
62
+ them against, and `--round-trip` proves an agent answers under the declared id without
63
+ proving which deployment did, so this comparison is yours. A health endpoint that returns success proves only that something listens on
64
+ that port. An agent from earlier work often still holds it, and a stale process answers
65
+ as though it were the new one. Ask the running agent which graph or agent id it serves
66
+ and compare that with the id declared in this project.
67
+
68
+ If they do not match, find out whose process it is before you signal anything.
69
+ `lsof -ti :<port> -sTCP:LISTEN` gives the process id, and `lsof -a -p <pid> -d cwd` gives
70
+ the directory it runs in. Stop it only when that directory is inside this project, and
71
+ stop its children before the parent so nothing survives by reparenting. A holder outside
72
+ this project belongs to other work: leave it running, report it, and bind to another port.
73
+ Never stop a process because its command line matches a name. One `pkill` pattern reaches
74
+ every project on the machine and takes down work that has nothing to do with this run.
75
+ Never continue against a process you cannot identify, and never report a round trip proven
76
+ by one.
77
+
78
+ Address a local agent by host name rather than by an IP literal. Some local agents bind
79
+ IPv6 only, so an IPv4 literal fails against the correct port.
80
+
81
+ Drive the real UI in a browser whenever your environment can, and make sure that the
82
+ frontend receives working generative UI from the agent. Prefer this: it is the only step
83
+ that covers realtime delivery to a browser, browser-origin CORS and CSP, the frontend
84
+ provider being wired to this runtime, and a generative UI component actually rendering,
85
+ and no command-line check reaches any of them.
86
+
87
+ Use a browser MCP server already configured for the coding agent you are running as, the
88
+ same way the CopilotKit documentation MCP server below is configured. Do not add a browser
89
+ driver to this project: a devDependency and a browser download land in the diff and tax a
90
+ repository that never asked for one. If nothing in your environment can drive a
91
+ browser, skip this step rather than installing one, and never report a visual result you
92
+ did not see.
93
+
94
+ Report exactly one of `performed`, `skipped-no-browser-tool`, or `failed` for this step.
95
+
96
+ Record the input, visible result, relevant process status, and evidence locations. Do not
97
+ return secret values.
98
+
99
+ Where the answer is meant to be about data the project holds, check it against that data.
100
+ Read the entities the project holds -- the ids, names, or records the answer claims to
101
+ describe -- and confirm the answer names those and no others. Record the entities you
102
+ compared. Where the outcome of this journey references no project data, record that
103
+ instead, and do not invent a comparison to pass this step.
104
+
105
+ An answer that renders correctly over entities the project does not hold looks the same as
106
+ a correct one in a browser, in a screenshot, and in a video, so this comparison is the only
107
+ stage that separates them. An answer that names an entity the project does not hold is a
108
+ failed proof, not a passing one. Find which of these it is before you change anything: the
109
+ project's data never reaches the agent, the agent receives it and its instructions ignore
110
+ it, the page loads its data after the context was registered, or the run wired a different
111
+ source than the page renders. Fix that cause, then prove again.
112
+
113
+ Fetch the continued-development guide from the main coding agent with the proof
114
+ documentation. Try the continued-development tools after the application passes proof.
13
115
  Use it to install the project-scoped CopilotKit Skills.
14
116
  Use it to configure the CopilotKit documentation MCP server for the current coding agent.
15
117
 
16
- Record the installed Skills and the configured MCP server. If either tool step fails, return
17
- the exact documentation gap or error.
118
+ Do not validate whether the Skills or MCP server installed correctly. Record the command
119
+ result for each attempt. Report each tool result separately. A tool error does not change
120
+ the proof result.
121
+
122
+ Gather what you need in as few commands as possible. Combine independent reads into one
123
+ command rather than running them one at a time. Split a command only when its result decides
124
+ what you run next.
18
125
 
19
- Return the proof or the exact failed step to the main coding agent. Stop after you return the
20
- result.
126
+ Return the proof or the exact failed step to the main coding agent, together with the
127
+ visual-check outcome. Stop after you return the result.
@@ -1,17 +1,35 @@
1
- # No validated path in this release
1
+ # Stop without a supported path
2
2
 
3
- Stop onboarding without making more repository changes. Keep the developer's current agent,
4
- frontend, authentication, and package choices.
3
+ Keep the developer's current agent, frontend, authentication, and package choices.
5
4
 
6
5
  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.
6
+ credentials, the journey, a documentation URL, implementation, validation, or the round
7
+ trip caused the route change. Do not say a path works when this release does not support it.
9
8
 
10
- If useful, send one short report without secrets, source code, logs, or command output:
9
+ Stop onboarding without making more repository changes by default.
10
+
11
+ The documentation-gap exception applies only before implementation starts. If implementation,
12
+ validation, or proof already started, do not use the documentation-gap exception.
13
+
14
+ If the only cause is a failed documentation URL or missing documentation, use the exception.
15
+ Tell the developer about the gap. Then make a best-effort plan from the official pages that
16
+ are available. Search the broader official CopilotKit documentation before you infer an API.
17
+ Mark each step that the selected pages do not prove. Do not treat the documentation gap as
18
+ proof that the requested integration is unsupported.
19
+
20
+ After the developer approves the best-effort plan, run
21
+ `npx --yes copilotkit@4.9.0 onboard read fallback/best-effort`.
22
+
23
+ If the developer permitted external feedback at the start, you can send one short report:
11
24
 
12
25
  ```text
13
- npx copilotkit@4.8.3 onboard feedback
26
+ npx --yes copilotkit@4.9.0 onboard feedback
14
27
  ```
15
28
 
16
- Write the feedback message to the command's standard input. Stop after the explanation or
17
- optional feedback. This unsupported outcome does not complete onboarding.
29
+ Write the feedback message to the command's standard input, in at most four lines.
30
+ Send no secrets, source code, logs, or command output. The command refuses a report
31
+ that carries any of those, prints the reason, and exits zero. A refused report is not
32
+ a failed step. Reword it and send it again, or stop without a report. The command
33
+ prints what it sent. This is the channel for a stop. Report friction only from a run that
34
+ finished, never from here. If the developer did not permit feedback, do not run the
35
+ command.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copilotkit",
3
- "version": "4.8.3",
3
+ "version": "4.9.0",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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(["production", "dev", "staging", "preview", "validation"]),
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 ? "e0a2f00cca326c76739217e8ca40902e609539a4" : "main";
14698
+ return true ? "bf2068734bcc42b9dc9999b183d0fd07a673f713" : "main";
14687
14699
  }
14688
14700
 
14689
14701
  // apps/cli/src/services/agentcore-config.ts
@@ -14860,6 +14872,12 @@ var TELEMETRY_ERROR_CODES = {
14860
14872
  USER_ABORTED: "USER_ABORTED",
14861
14873
  NON_INTERACTIVE: "NON_INTERACTIVE",
14862
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",
14863
14881
  CLI_PRODUCT_BINARY_TOO_LARGE: "CLI_PRODUCT_BINARY_TOO_LARGE",
14864
14882
  LEARNING_CONTAINER_ID_INVALID: "LEARNING_CONTAINER_ID_INVALID",
14865
14883
  LEARNING_PROJECT_ID_INVALID: "LEARNING_PROJECT_ID_INVALID",
@@ -14891,6 +14909,7 @@ var FRAMEWORK_EMOJI = {
14891
14909
  "adk-angular": "\u{1F53A}",
14892
14910
  a2a: "\u{1F916}",
14893
14911
  "aws-strands-py": "\u{1F9EC}",
14912
+ "aws-strands-ts": "\u{1F9EC}",
14894
14913
  "microsoft-agent-framework-dotnet": "\u{1F7E6}",
14895
14914
  "microsoft-agent-framework-py": "\u{1F7E6}",
14896
14915
  "mcp-apps": "\u{1F9E9}",
@@ -14925,6 +14944,10 @@ var FRAMEWORK_CHOICES = [
14925
14944
  label: `${FRAMEWORK_EMOJI["aws-strands-py"]} AWS Strands (Python)`,
14926
14945
  value: "aws-strands-py"
14927
14946
  },
14947
+ {
14948
+ label: `${FRAMEWORK_EMOJI["aws-strands-ts"]} AWS Strands (TypeScript)`,
14949
+ value: "aws-strands-ts"
14950
+ },
14928
14951
  { label: `${FRAMEWORK_EMOJI.adk} ADK`, value: "adk" },
14929
14952
  {
14930
14953
  label: `${FRAMEWORK_EMOJI["adk-angular"]} Angular + ADK`,
@@ -15099,6 +15122,11 @@ var FRAMEWORK_TEMPLATES = {
15099
15122
  TEMPLATE_REPOS["aws-strands-py"],
15100
15123
  `\u{1FA81}\u{1F91D}${FRAMEWORK_EMOJI["aws-strands-py"]}`
15101
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
+ ),
15102
15130
  a2a: {
15103
15131
  ...standardTemplate(
15104
15132
  "a2a",
@@ -15438,7 +15466,7 @@ async function scaffoldStarterForSmoke(input, scaffold = scaffoldProject) {
15438
15466
  }
15439
15467
  }
15440
15468
  async function executeStarterSmokeChild(command) {
15441
- return new Promise((resolve3, reject) => {
15469
+ return new Promise((resolve4, reject) => {
15442
15470
  execFile(
15443
15471
  command.executable,
15444
15472
  [...command.args],
@@ -15452,7 +15480,7 @@ async function executeStarterSmokeChild(command) {
15452
15480
  reject(error48);
15453
15481
  return;
15454
15482
  }
15455
- resolve3(stdout);
15483
+ resolve4(stdout);
15456
15484
  }
15457
15485
  );
15458
15486
  });
@@ -1,20 +0,0 @@
1
- # Configure Slack
2
-
3
- Use Slack only for an empty or agent-only starting state. Preserve an existing Slack
4
- frontend in those states. Record each required credential variable name. Do not read,
5
- show, store, or request a secret value.
6
-
7
- ## Documentation
8
-
9
- - Credentials and plan: https://docs.copilotkit.ai/slack/intelligence.md
10
- - Implementation and validation: https://docs.copilotkit.ai/slack/connect.md
11
- - Proof: https://docs.copilotkit.ai/slack/deploy-and-operate.md
12
-
13
- Fetch each selected documentation URL. Record Slack as the selected frontend and keep
14
- these URLs. Do not use remembered CopilotKit instructions.
15
-
16
- If the pages support the selection, run
17
- `npx copilotkit@4.8.3 onboard read credentials/finalize-plan`.
18
-
19
- If a page does not load or support the selection, run
20
- `npx copilotkit@4.8.3 onboard read unsupported/no-validated-path`.
@@ -1,20 +0,0 @@
1
- # Configure Microsoft Teams
2
-
3
- Use Microsoft Teams only for an empty or agent-only starting state. Preserve an existing
4
- Teams frontend in those states. Record each required credential variable name. Do not
5
- read, show, store, or request a secret value.
6
-
7
- ## Documentation
8
-
9
- - Credentials and plan: https://docs.copilotkit.ai/teams/intelligence.md
10
- - Implementation and validation: https://docs.copilotkit.ai/teams/connect.md
11
- - Proof: https://docs.copilotkit.ai/teams/deploy-and-operate.md
12
-
13
- Fetch each selected documentation URL. Record Microsoft Teams as the selected frontend
14
- and keep these URLs. Do not use remembered CopilotKit instructions.
15
-
16
- If the pages support the selection, run
17
- `npx copilotkit@4.8.3 onboard read credentials/finalize-plan`.
18
-
19
- If a page does not load or support the selection, run
20
- `npx copilotkit@4.8.3 onboard read unsupported/no-validated-path`.