copilotkit 4.24.0 → 4.25.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 (91) hide show
  1. package/README.md +75 -14
  2. package/cli-build-info.json +7 -7
  3. package/index.js +8544 -6674
  4. package/onboarding/index.json +2 -2
  5. package/onboarding/prompts/authenticate/start.md +50 -45
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +30 -8
  8. package/onboarding/prompts/credentials/plan.md +115 -49
  9. package/onboarding/prompts/credentials/settle-credentials.md +7 -5
  10. package/onboarding/prompts/credentials/write-plan.md +15 -15
  11. package/onboarding/prompts/deployment/choose-local.md +44 -7
  12. package/onboarding/prompts/deployment/local-evaluation.md +12 -6
  13. package/onboarding/prompts/fallback/best-effort.md +8 -8
  14. package/onboarding/prompts/feature/a2ui/implement.md +15 -8
  15. package/onboarding/prompts/feature/a2ui/plan.md +15 -7
  16. package/onboarding/prompts/feature/a2ui/proof.md +14 -7
  17. package/onboarding/prompts/feature/a2ui/start.md +15 -14
  18. package/onboarding/prompts/feature/channels/implement.md +21 -9
  19. package/onboarding/prompts/feature/channels/plan.md +15 -7
  20. package/onboarding/prompts/feature/channels/proof.md +14 -7
  21. package/onboarding/prompts/feature/channels/start.md +20 -13
  22. package/onboarding/prompts/feature/chat-suggestions/implement.md +15 -8
  23. package/onboarding/prompts/feature/chat-suggestions/plan.md +15 -7
  24. package/onboarding/prompts/feature/chat-suggestions/proof.md +14 -7
  25. package/onboarding/prompts/feature/chat-suggestions/start.md +15 -14
  26. package/onboarding/prompts/feature/complete.md +2 -2
  27. package/onboarding/prompts/feature/learning/implement.md +32 -18
  28. package/onboarding/prompts/feature/learning/plan.md +15 -7
  29. package/onboarding/prompts/feature/learning/proof.md +37 -13
  30. package/onboarding/prompts/feature/learning/start.md +15 -14
  31. package/onboarding/prompts/feature/open-generative-ui/implement.md +15 -8
  32. package/onboarding/prompts/feature/open-generative-ui/plan.md +15 -7
  33. package/onboarding/prompts/feature/open-generative-ui/proof.md +14 -7
  34. package/onboarding/prompts/feature/open-generative-ui/start.md +15 -14
  35. package/onboarding/prompts/feature/realtime-sync/implement.md +20 -12
  36. package/onboarding/prompts/feature/realtime-sync/plan.md +15 -7
  37. package/onboarding/prompts/feature/realtime-sync/proof.md +14 -7
  38. package/onboarding/prompts/feature/realtime-sync/start.md +14 -13
  39. package/onboarding/prompts/feature/rich-threads/implement.md +21 -13
  40. package/onboarding/prompts/feature/rich-threads/plan.md +15 -7
  41. package/onboarding/prompts/feature/rich-threads/proof.md +14 -7
  42. package/onboarding/prompts/feature/rich-threads/start.md +14 -13
  43. package/onboarding/prompts/feature/stop.md +9 -3
  44. package/onboarding/prompts/feature/voice/implement.md +15 -8
  45. package/onboarding/prompts/feature/voice/plan.md +16 -8
  46. package/onboarding/prompts/feature/voice/proof.md +14 -7
  47. package/onboarding/prompts/feature/voice/start.md +15 -14
  48. package/onboarding/prompts/framework/ag2.md +6 -5
  49. package/onboarding/prompts/framework/agno.md +6 -5
  50. package/onboarding/prompts/framework/built-in.md +9 -6
  51. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  52. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  53. package/onboarding/prompts/framework/crewai-flows.md +12 -4
  54. package/onboarding/prompts/framework/custom-ag-ui.md +8 -2
  55. package/onboarding/prompts/framework/deep-agents.md +6 -5
  56. package/onboarding/prompts/framework/google-adk.md +2 -2
  57. package/onboarding/prompts/framework/langgraph-fastapi.md +8 -5
  58. package/onboarding/prompts/framework/langgraph-python.md +8 -5
  59. package/onboarding/prompts/framework/langgraph-typescript.md +8 -5
  60. package/onboarding/prompts/framework/llamaindex.md +6 -5
  61. package/onboarding/prompts/framework/mastra.md +9 -6
  62. package/onboarding/prompts/framework/ms-agent-dotnet.md +12 -4
  63. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +12 -4
  64. package/onboarding/prompts/framework/ms-agent-python.md +6 -5
  65. package/onboarding/prompts/framework/pydantic-ai.md +6 -5
  66. package/onboarding/prompts/framework/strands-python.md +10 -6
  67. package/onboarding/prompts/framework/strands-typescript.md +10 -6
  68. package/onboarding/prompts/frontend/angular.md +10 -3
  69. package/onboarding/prompts/frontend/nextjs.md +36 -3
  70. package/onboarding/prompts/frontend/plan.md +13 -7
  71. package/onboarding/prompts/frontend/react-native.md +9 -2
  72. package/onboarding/prompts/frontend/react-spa.md +9 -2
  73. package/onboarding/prompts/frontend/vue.md +9 -2
  74. package/onboarding/prompts/implementation/build-and-validate.md +45 -19
  75. package/onboarding/prompts/proof/complete.md +3 -3
  76. package/onboarding/prompts/proof/oss-baseline.md +30 -13
  77. package/onboarding/prompts/proof/round-trip.md +55 -17
  78. package/onboarding/prompts/research/gather.md +21 -11
  79. package/onboarding/prompts/research/merge.md +8 -2
  80. package/onboarding/prompts/research/preflight.md +2 -2
  81. package/onboarding/prompts/research/route.md +14 -7
  82. package/onboarding/prompts/starter/clone.md +73 -16
  83. package/onboarding/prompts/stopped/run-failed.md +8 -2
  84. package/onboarding/prompts/subagent/create-plan.md +9 -2
  85. package/onboarding/prompts/subagent/implement-and-validate.md +2 -2
  86. package/onboarding/prompts/subagent/inspect-repository.md +12 -6
  87. package/onboarding/prompts/subagent/prove-oss-baseline.md +6 -1
  88. package/onboarding/prompts/subagent/prove-round-trip.md +50 -9
  89. package/onboarding/prompts/unsupported/no-validated-path.md +8 -2
  90. package/package.json +1 -1
  91. package/release/release-tool.js +9 -3
package/README.md CHANGED
@@ -283,15 +283,22 @@ The CLI prints a page URL that carries an eight-character code, such as
283
283
  `WDJB-MJHT`, and prints the code too. Open the URL in a browser on any device
284
284
  and sign in if asked. The page opens on the confirmation screen: check that it
285
285
  shows the same code and where the request came from, then approve it. You can
286
- also open the plain page and type the code. The CLI polls until you approve,
287
- and gives up after 10 minutes.
286
+ also open the plain page and type the code. A code lasts 10 minutes. If
287
+ nobody approves it in time, the CLI prints a new code and keeps polling. It
288
+ does this twice, so it gives up after about 30 minutes.
288
289
 
289
290
  Under `--json`, the first `authentication_url` record is the URL with the code
290
- in it, and it also carries `user_code` and `expires_at`. A sign-in that ends without a session writes a `failed`
291
+ in it, and it also carries `user_code` and `expires_at`. A renewed code writes
292
+ another `authentication_url` record, with `renewed: true` and its `renewal`
293
+ number, and another `action_required` record. The old page then shows an
294
+ expired code, so show the developer the new one. A sign-in that ends without a session writes a `failed`
291
295
  record with `reason: expired` or `reason: access_denied`, and with
292
- `retry: ask_developer`: a person must act before a new code can work. After 2
293
- codes in a row expire with nobody approving them, `login --json` refuses to
294
- request another. It writes a `failed` record with `reason: repeated_expiry` and
296
+ `retry: ask_developer`: a person must act before a new code can work. If a
297
+ code expired and the request for its replacement failed, for example on a rate
298
+ limit, the record says `reason: renewal_failed` and its `error` names that
299
+ failure. After 2
300
+ sign-ins in a row end with nobody approving any of their codes, `login --json`
301
+ refuses to request another. It writes a `failed` record with `reason: repeated_expiry` and
295
302
  exits non-zero. Run `copilotkit login --json --force` when someone is ready to
296
303
  approve. Any sign-in that succeeds resets the count, and the count lapses after
297
304
  a day.
@@ -387,20 +394,33 @@ frontend.
387
394
  Its first prompt records the coding agent with `onboard identify`, including when
388
395
  the entry command omitted `--coding-agent`. The agent also passes `--model` with
389
396
  the exact model id its instructions name, and leaves it out when they name none.
390
- It passes `--model-family` with its model family, such as `gpt-5`, for the agent
391
- that cannot see its exact id. The event records a missing id or family as
392
- `unknown`, and a value that is not a model, such as a coding-agent product name,
393
- as `unreportable`. It records the coding agent the environment shows as
397
+ It always passes `--model-family`, picked from a fixed list such as `claude-opus`
398
+ or `gpt-5`. The event reports `coding_agent` and `model_family` normalized to
399
+ fixed lists, so `copilot` and `github-copilot-cli` both read `github-copilot`,
400
+ and keeps what the agent wrote in `coding_agent_raw` and `model_family_raw`. A
401
+ missing family is read from the model id when it names one. The event records a
402
+ missing id or family as `unknown`, a value that is not a model, such as a
403
+ coding-agent product name, as `unreportable`, and a name not on the list as
404
+ `other`. It records the coding agent the environment shows as
394
405
  `detected_coding_agent`, and sets `coding_agent_mismatch` when that agent differs
395
- from the declared one. `cli.onboarding.started` also carries
406
+ from the declared one. The CLI reads the agent from environment variables the
407
+ agent sets. When only markers that leak into child agents are set (`AI_AGENT`,
408
+ `CLAUDECODE`), or several agents' markers are, the nearest parent process that
409
+ is an agent's binary decides. With no marker, it reads the parent processes.
410
+ Set `COPILOTKIT_SKIP_AGENT_PROCESS_PROBE=1` to skip the parent-process walk. It
411
+ sends only the matched agent name, never a path or a command line, and records
412
+ where it found it in `detected_coding_agent_source`. `cli.onboarding.started` also carries
396
413
  `detected_coding_agent`, because a run that stops before `onboard identify` sends
397
414
  no identify event. It also carries `audience`: `detected-agent` when the
398
415
  environment shows an agent, `human-terminal` for a terminal with no detected
399
416
  agent, and `non-tty` otherwise. Before sign-in, the first prompt records where the
400
417
  app stores data with `onboard deployment --choice <managed|local>`. The
401
418
  `cli.onboarding.deployment_chosen` event carries that `deployment` and
402
- `local_offered`, which this CLI release reads from its local evaluation flag. A
403
- managed run with `local_offered: false` was never offered local. Channel setup stage events include
419
+ `local_offered`, which this CLI release reads from its local evaluation flag.
420
+ No run is asked to choose, so `local_offered: true` means only that this release
421
+ can run local. A developer who asks for local after the first prompt recorded
422
+ managed sends a second event with `local`, so the last event in a run is its
423
+ choice. Channel setup stage events include
404
424
  the existing `onboarding_run_id` when the command runs inside an onboarding run;
405
425
  standalone commands omit it. These events use the CLI's existing telemetry consent gate.
406
426
 
@@ -1324,6 +1344,31 @@ correctly. Pass what it reads with `--header`, repeatable. `verify` sends
1324
1344
  the header on every request to the runtime, `/info` included, so a runtime
1325
1345
  behind auth needs no local proxy.
1326
1346
 
1347
+ ### Proving a thread the app created
1348
+
1349
+ Some apps refuse a run that `verify` starts: an `identifyUser` that reads a
1350
+ signed-in session, or an app that runs only threads it created. For those, send
1351
+ one message in the app and pass that thread's id with `--thread`:
1352
+
1353
+ ```bash
1354
+ copilotkit verify --thread <thread-id>
1355
+ copilotkit verify --thread <thread-id> --expect-learning-container support-desk
1356
+ copilotkit onboard proof-check --thread <thread-id> --json
1357
+ ```
1358
+
1359
+ `--thread` replaces `--round-trip`. It starts no agent run and asks the app for
1360
+ no thread. It reads the thread from app-api with the project key, so it needs no session, and
1361
+ `--expect-learning-container` checks that same thread. A pass proves that the
1362
+ agent's answer was recorded on that thread. It does not prove which end user the
1363
+ thread belongs to. A thread app-api does not hold for this project is a `FAIL`.
1364
+ Only an answer after the thread's newest user message counts. Inside an
1365
+ onboarding run, a thread that did not change after the run started is a `FAIL`,
1366
+ because its answer can predate the app as it is now. With `--agent`, a thread
1367
+ of another agent is a `FAIL`, and the evidence names the thread's own agent.
1368
+ Telemetry marks a proof made this way with `proof_source: app-thread`.
1369
+ The page-context check needs a run of its own, so with `--thread` it is a
1370
+ warning that names the browser as the place to prove it.
1371
+
1327
1372
  ### What `verify` still does not prove
1328
1373
 
1329
1374
  It does not drive a browser. Realtime delivery to a browser over the gateway,
@@ -1438,10 +1483,16 @@ The command reads the key from the env file (`.env` by default) and sends one
1438
1483
  request with a one-token answer to that vendor. The call costs a fraction of a
1439
1484
  cent. It knows `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, and `GOOGLE_API_KEY`.
1440
1485
 
1486
+ When the env file has no real value for the key, the command checks the value
1487
+ in the environment instead. A key you export in the shell, or set with direnv or
1488
+ `op run`, reaches the dev server the same way. `source` in the JSON says where
1489
+ the value came from: `env-file` or `environment`.
1490
+
1441
1491
  - `pass`: the vendor served a model call with the key.
1442
1492
  - `fail`: the vendor refused the key. The cause is `model_quota` (no credits) or
1443
1493
  `model_auth` (a rejected key).
1444
- - `missing`: the env file or the key is absent, or the value is a placeholder.
1494
+ - `missing`: neither the env file nor the environment holds a real value for
1495
+ the key.
1445
1496
  - `unsupported` or `undetermined`: the check did not settle it. A rate limit, a
1446
1497
  vendor outage, or a probe model the key may not use proves nothing about the
1447
1498
  key, so none of them is a `fail`.
@@ -1451,6 +1502,10 @@ SDK at another endpoint, or when the shell exports a different value for the
1451
1502
  key. It never prints the key, and it never prints the vendor's error message,
1452
1503
  because a vendor can echo part of the key in it.
1453
1504
 
1505
+ During an onboarding run, a `pass` also replaces a `missing` or `fail` that the
1506
+ credentials step kept for the same key in the same env file. So after the
1507
+ developer fixes the key, `onboard proof-check` runs the round trip again.
1508
+
1454
1509
  ### An onboarding run stops while it selects the project
1455
1510
 
1456
1511
  The onboarding graph settles the project, its key, and the Learning Container
@@ -1724,6 +1779,12 @@ Release ordering: merge the CopilotKit starter before releasing this command. Th
1724
1779
 
1725
1780
  ## Local evaluation candidate setup
1726
1781
 
1782
+ Local evaluation is how the CLI offers self-hosting: `init` lists it as
1783
+ "Self-hosted: try it on your machine (Docker)". It runs the full stack on the
1784
+ developer's machine. The CLI does not install into a cluster; for that, use the
1785
+ [self-hosting guide](https://docs.copilotkit.ai/intelligence/self-hosting) and its
1786
+ Helm chart.
1787
+
1727
1788
  This preview accepts macOS with Docker Desktop and Linux with rootful Docker Engine.
1728
1789
  The CLI checks daemon identity and refuses unknown engines, rootless Docker, Podman,
1729
1790
  non-Desktop macOS engines, Windows, and Docker Desktop on Linux. The Windows init picker
@@ -2,20 +2,20 @@
2
2
  "schemaVersion": 1,
3
3
  "package": {
4
4
  "name": "copilotkit",
5
- "version": "4.24.0"
5
+ "version": "4.25.0"
6
6
  },
7
7
  "intelligence": {
8
- "commit": "414f50da283d14f22e2b350dff662b4b18cb1017"
8
+ "commit": "9d0e411b31a75cac62342c22a7da942463eaca55"
9
9
  },
10
10
  "copilotKit": {
11
- "submittedInput": "c88a2dd2a4c0",
12
- "commit": "c88a2dd2a4c024e956e3f88b6b86d5715951e284"
11
+ "submittedInput": "1477c8eab6f88833fa93236fe766746c9800a991",
12
+ "commit": "1477c8eab6f88833fa93236fe766746c9800a991"
13
13
  },
14
14
  "channel": "production",
15
15
  "triggeringActor": "BenTaylorDev",
16
16
  "workflow": {
17
- "runId": "37064724012",
18
- "runUrl": "https://github.com/CopilotKit/Intelligence/actions/runs/37064724012"
17
+ "runId": "37398681686",
18
+ "runUrl": "https://github.com/CopilotKit/Intelligence/actions/runs/37398681686"
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-10-02T21:07:52Z"
27
+ "builtAt": "2026-10-06T01:22:51Z"
28
28
  }