copilotkit 4.15.0 → 4.17.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 (81) hide show
  1. package/README.md +118 -10
  2. package/cli-build-info.json +8 -8
  3. package/index.js +24194 -3483
  4. package/onboarding/index.json +1 -1
  5. package/onboarding/prompts/authenticate/start.md +17 -15
  6. package/onboarding/prompts/conversion/plan.md +3 -3
  7. package/onboarding/prompts/credentials/finalize-plan.md +20 -20
  8. package/onboarding/prompts/credentials/plan.md +21 -21
  9. package/onboarding/prompts/credentials/settle-credentials.md +46 -10
  10. package/onboarding/prompts/credentials/write-plan.md +35 -20
  11. package/onboarding/prompts/fallback/best-effort.md +23 -15
  12. package/onboarding/prompts/feature/a2ui/implement.md +40 -12
  13. package/onboarding/prompts/feature/a2ui/proof.md +29 -9
  14. package/onboarding/prompts/feature/a2ui/start.md +8 -10
  15. package/onboarding/prompts/feature/blocked-by-plan.md +4 -4
  16. package/onboarding/prompts/feature/channels/implement.md +41 -13
  17. package/onboarding/prompts/feature/channels/proof.md +30 -11
  18. package/onboarding/prompts/feature/channels/start.md +11 -9
  19. package/onboarding/prompts/feature/chat-suggestions/implement.md +40 -12
  20. package/onboarding/prompts/feature/chat-suggestions/proof.md +29 -9
  21. package/onboarding/prompts/feature/chat-suggestions/start.md +8 -10
  22. package/onboarding/prompts/feature/complete.md +2 -2
  23. package/onboarding/prompts/feature/learning/implement.md +58 -26
  24. package/onboarding/prompts/feature/learning/proof.md +30 -10
  25. package/onboarding/prompts/feature/learning/start.md +15 -12
  26. package/onboarding/prompts/feature/open-generative-ui/implement.md +41 -13
  27. package/onboarding/prompts/feature/open-generative-ui/proof.md +29 -9
  28. package/onboarding/prompts/feature/open-generative-ui/start.md +8 -10
  29. package/onboarding/prompts/feature/realtime-sync/implement.md +41 -13
  30. package/onboarding/prompts/feature/realtime-sync/proof.md +31 -10
  31. package/onboarding/prompts/feature/realtime-sync/start.md +8 -9
  32. package/onboarding/prompts/feature/rich-threads/implement.md +42 -14
  33. package/onboarding/prompts/feature/rich-threads/proof.md +31 -10
  34. package/onboarding/prompts/feature/rich-threads/start.md +8 -9
  35. package/onboarding/prompts/feature/stop.md +3 -3
  36. package/onboarding/prompts/feature/voice/implement.md +40 -12
  37. package/onboarding/prompts/feature/voice/proof.md +29 -9
  38. package/onboarding/prompts/feature/voice/start.md +8 -9
  39. package/onboarding/prompts/framework/ag2.md +2 -2
  40. package/onboarding/prompts/framework/agno.md +4 -4
  41. package/onboarding/prompts/framework/built-in.md +2 -2
  42. package/onboarding/prompts/framework/claude-sdk-python.md +8 -7
  43. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  44. package/onboarding/prompts/framework/crewai-flows.md +15 -7
  45. package/onboarding/prompts/framework/deep-agents.md +4 -3
  46. package/onboarding/prompts/framework/google-adk.md +7 -7
  47. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  48. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  49. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  50. package/onboarding/prompts/framework/llamaindex.md +4 -4
  51. package/onboarding/prompts/framework/mastra.md +2 -2
  52. package/onboarding/prompts/framework/ms-agent-dotnet.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  54. package/onboarding/prompts/framework/ms-agent-python.md +6 -6
  55. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  56. package/onboarding/prompts/framework/strands-python.md +4 -4
  57. package/onboarding/prompts/framework/strands-typescript.md +4 -4
  58. package/onboarding/prompts/frontend/angular.md +3 -3
  59. package/onboarding/prompts/frontend/nextjs.md +16 -3
  60. package/onboarding/prompts/frontend/plan.md +7 -7
  61. package/onboarding/prompts/frontend/react-native.md +2 -2
  62. package/onboarding/prompts/frontend/react-spa.md +2 -2
  63. package/onboarding/prompts/frontend/vue.md +2 -2
  64. package/onboarding/prompts/implementation/build-and-validate.md +67 -28
  65. package/onboarding/prompts/proof/complete.md +21 -14
  66. package/onboarding/prompts/proof/oss-baseline.md +16 -12
  67. package/onboarding/prompts/proof/round-trip.md +33 -22
  68. package/onboarding/prompts/research/gather.md +8 -7
  69. package/onboarding/prompts/research/merge.md +3 -3
  70. package/onboarding/prompts/research/preflight.md +4 -4
  71. package/onboarding/prompts/research/route.md +6 -6
  72. package/onboarding/prompts/starter/clone.md +30 -20
  73. package/onboarding/prompts/stopped/run-failed.md +15 -9
  74. package/onboarding/prompts/subagent/create-plan.md +15 -10
  75. package/onboarding/prompts/subagent/implement-and-validate.md +25 -11
  76. package/onboarding/prompts/subagent/inspect-repository.md +14 -6
  77. package/onboarding/prompts/subagent/prove-oss-baseline.md +11 -4
  78. package/onboarding/prompts/subagent/prove-round-trip.md +48 -14
  79. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  80. package/package.json +1 -5
  81. package/release/release-tool.js +222 -46
package/README.md CHANGED
@@ -280,8 +280,14 @@ and gives up after 10 minutes.
280
280
 
281
281
  Under `--json`, the first `authentication_url` record is the URL with the code
282
282
  in it, and it also carries `user_code` and `expires_at`. A sign-in that ends without a session writes a `failed`
283
- record with `reason: expired` or `reason: access_denied`. If the Ops service
284
- has no device routes, `login --json` falls back to the loopback flow.
283
+ record with `reason: expired` or `reason: access_denied`, and with
284
+ `retry: ask_developer`: a person must act before a new code can work. After 2
285
+ codes in a row expire with nobody approving them, `login --json` refuses to
286
+ request another. It writes a `failed` record with `reason: repeated_expiry` and
287
+ exits non-zero. Run `copilotkit login --json --force` when someone is ready to
288
+ approve. Any sign-in that succeeds resets the count, and the count lapses after
289
+ a day. If the Ops service has no device routes, `login --json` falls back to the
290
+ loopback flow.
285
291
 
286
292
  Approve a code only if your own terminal or coding agent showed it to you. If
287
293
  someone sent you a code, deny the request: approving it signs their CLI in as
@@ -334,7 +340,10 @@ asks which frontend they want and offers Slack and Microsoft Teams there. If the
334
340
  copied prompt came from a Slack or Teams docs page, that page is the named
335
341
  frontend.
336
342
  Its first prompt records the coding agent with `onboard identify`, including when
337
- the entry command omitted `--coding-agent`. Channel setup stage events include
343
+ the entry command omitted `--coding-agent`. The agent also passes `--model` with
344
+ the exact model id its instructions name, and leaves it out when they name none.
345
+ The event records a missing id as `unknown`, and the coding agent the environment
346
+ shows as `detected_coding_agent`. Channel setup stage events include
338
347
  the existing `onboarding_run_id` when the command runs inside an onboarding run;
339
348
  standalone commands omit it. These events use the CLI's existing telemetry consent gate.
340
349
 
@@ -350,6 +359,24 @@ subagent returns, when the plan is approved, when implementation validation
350
359
  passes, and on each proof attempt and repair cycle. A run that cannot go on
351
360
  reads `feature/stop`, reports from there, and does not run `onboard complete`.
352
361
 
362
+ ### Onboarding for an existing Intelligence project
363
+
364
+ Use the optional `--project` flag when the developer already chose a hosted
365
+ Intelligence project, for example from the Threads or Analytics page of that
366
+ project. It takes the numeric project id. The run then selects that project at
367
+ the project-selection step instead of asking which project to use or creating
368
+ one. The CLI still checks that the signed-in organization holds the project, so a
369
+ link cannot point a run at another organization's project.
370
+
371
+ ```bash
372
+ npx --yes copilotkit@latest onboard start \
373
+ --project <project-id> \
374
+ --run <12-character-id>
375
+ ```
376
+
377
+ `--project` accepts digits only and refuses anything else before a run starts.
378
+ A later `onboard start` that re-enters the same run keeps its project.
379
+
353
380
  ### Coming back after a run that broke
354
381
 
355
382
  A run whose stack this release serves, and which broke anyway, reads
@@ -432,13 +459,21 @@ copilotkit init -n my-agent -f langgraph-py \
432
459
  - `--project <slug-or-id>` selects an existing hosted Intelligence project, and
433
460
  `--create <name>` makes one. They are mutually exclusive, and they resolve the
434
461
  same way `copilotkit project select` does: a typo fails with the available
435
- slugs instead of creating something you did not ask for.
462
+ slugs instead of creating something you did not ask for. A refused value fails
463
+ before `init` writes any file, so you can retry into the same directory.
436
464
  - `-y`/`--yes` installs dependencies without asking; `--no-install` answers the
437
465
  same question without installing. `--install` is a longhand for `--yes`.
438
466
  - `--no-key-prompt` skips the question about a missing model key. Use it where the
439
467
  shell is a pseudo-terminal but nobody types, such as a coding agent's shell:
440
468
  there `init` sees a terminal and would ask anyway. The next steps still name
441
469
  each missing key.
470
+ - `--model-key-file <path>` copies the model key the starter needs from an env
471
+ file you name into the new app. Only that variable is copied, into the file the
472
+ starter reads (`agent/.env` for the Microsoft Agent Framework Python starter).
473
+ `init` prints the variable name and never the value. A real value already in
474
+ the app is kept. A missing or unreadable file stops `init` before it clones
475
+ anything. The .NET starter keeps its key in `dotnet user-secrets`, so this flag
476
+ does not fill it.
442
477
 
443
478
  A run with no terminal is refused only for what it has not answered, and every
444
479
  missing flag is named at once. Sign-in is the one answer no flag supplies:
@@ -460,7 +495,16 @@ are supported. Configure source identity and access with the
460
495
  [`MASTRA_IMPORT_*` variables](../../libs/import-mastra/README.md); destination
461
496
  Intelligence credentials use the usual import options.
462
497
 
463
- Local access requires Node 22.13+. Use the same source namespace when switching
498
+ Local access requires Node 22.13+ and npm. The CLI does not ship the LibSQL
499
+ driver, so the first local import installs `@mastra/libsql@1.14.3` and
500
+ `@mastra/core@1.48.0` into `~/.copilotkit/cache/mastra-driver/`
501
+ (`$XDG_CACHE_HOME/copilotkit/mastra-driver/` when that variable is an absolute
502
+ path) and reuses them after that. The install overrides the npm settings
503
+ `legacy-peer-deps` and `omit=optional`, which would otherwise leave out a
504
+ required peer or the native binary. If that install fails, the error prints the
505
+ `npm install` command to run by hand. Server mode installs nothing.
506
+
507
+ Use the same source namespace when switching
464
508
  between local and remote access so repeat imports deduplicate. Import while the
465
509
  source is idle. This reads existing history and pending data; it does not execute
466
510
  models, tools or native resume operations.
@@ -990,6 +1034,24 @@ exits zero only when `/info` is valid, declares the agent named by `--agent`,
990
1034
  reports no Intelligence entitlement, and `--round-trip` passes. Both `--round-trip` and
991
1035
  `--agent` are required for an OSS pass.
992
1036
 
1037
+ Without `--expect-runtime`, `verify` checks an app as open source on its own
1038
+ when nothing points at a hosted setup: no `.copilotkit/project.json`, no
1039
+ Intelligence key, and a runtime that answers `/info` without an Intelligence
1040
+ client. The report says so at the top, names the runtime URL it checked, and
1041
+ says when that URL was only assumed. `--json` reports
1042
+ `"expectRuntime": "oss"` with `"expectRuntimeSource": "detected"` (otherwise
1043
+ `"flag"` or `"default"`). The round trip still has to pass. It runs against the
1044
+ agent `--agent` names, with or without `--round-trip`. Without `--agent`, when
1045
+ the runtime declares exactly one agent, `verify` runs it and names it. With no
1046
+ agent or several, the run fails and names `--round-trip --agent <id>`. A runtime
1047
+ mounted `mode: "single-route"` cannot pass this way without a key, because
1048
+ `verify` reads a single-route answer from the Intelligence platform and an
1049
+ open-source runtime records nothing there. Mount it multi-route (the default)
1050
+ and point `--runtime-url` at that endpoint.
1051
+ Pass `--expect-runtime intelligence` to check the hosted setup instead. A
1052
+ recorded project, a key, or a runtime that does not answer keeps the hosted
1053
+ checks.
1054
+
993
1055
  ### Which runtime URL gets probed
994
1056
 
995
1057
  `verify` works the port out from the project rather than assuming one. In order:
@@ -1173,6 +1235,35 @@ started, and a starter that serves both halves from one script loses both when
1173
1235
  either one goes down. Restart what you started, with the command you started it
1174
1236
  with, and leave the rest running.
1175
1237
 
1238
+ ### A model key has no credits or is rejected
1239
+
1240
+ A key with no credits passes every static check. The first model call then
1241
+ fails inside the agent, and the round-trip proof reports only a timeout.
1242
+
1243
+ Ask the vendor about one key before the build:
1244
+
1245
+ ```bash
1246
+ copilotkit onboard model-key --key OPENAI_API_KEY
1247
+ copilotkit onboard model-key --key ANTHROPIC_API_KEY --env-file agent/.env --json
1248
+ ```
1249
+
1250
+ The command reads the key from the env file (`.env` by default) and sends one
1251
+ request with a one-token answer to that vendor. The call costs a fraction of a
1252
+ cent. It knows `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, and `GOOGLE_API_KEY`.
1253
+
1254
+ - `pass`: the vendor served a model call with the key.
1255
+ - `fail`: the vendor refused the key. The cause is `model_quota` (no credits) or
1256
+ `model_auth` (a rejected key).
1257
+ - `missing`: the env file or the key is absent, or the value is a placeholder.
1258
+ - `unsupported` or `undetermined`: the check did not settle it. A rate limit, a
1259
+ vendor outage, or a probe model the key may not use proves nothing about the
1260
+ key, so none of them is a `fail`.
1261
+
1262
+ It does not send the key when a base URL such as `OPENAI_BASE_URL` points the
1263
+ SDK at another endpoint, or when the shell exports a different value for the
1264
+ key. It never prints the key, and it never prints the vendor's error message,
1265
+ because a vendor can echo part of the key in it.
1266
+
1176
1267
  ### A command, subcommand, or flag that should exist is rejected
1177
1268
 
1178
1269
  `npx` keys its cache on the spec string, so `copilotkit@latest` can keep serving
@@ -1271,7 +1362,8 @@ projects created with the CLI. See the [package license map](../../docs/licensin
1271
1362
  ### Add existing threads to Learning
1272
1363
 
1273
1364
  Use `learning threads` to add prior conversations to a Container. A thread can
1274
- join one Container permanently. Already-bound threads are ineligible.
1365
+ join this Container without changing their other memberships. Threads already
1366
+ in this Container are ineligible for another addition.
1275
1367
 
1276
1368
  ```bash
1277
1369
  copilotkit learning threads list support --binding all --json
@@ -1289,15 +1381,31 @@ The binding filter accepts `all`, `unbound`, `this_container`, or `other_contain
1289
1381
  The source filter accepts `all`, `app`, `slack`, or `teams`, where `app` means the
1290
1382
  thread arrived straight from the Runtime and the provider values select threads a
1291
1383
  Channel created.
1384
+ `unbound` means no active Container membership. `other_container` means active
1385
+ membership elsewhere, without membership in this Container. Those threads remain
1386
+ eligible for addition to this Container.
1292
1387
 
1293
- Read the preview before commit. `--yes` approves permanent assignment of that
1294
- saved selection. Each operation accepts at most 10,000 threads. New matching
1388
+ Read the preview before commit. `--yes` adds or restores memberships for that
1389
+ saved selection. Existing memberships in other Containers stay active. Each operation accepts at most 10,000 threads. New matching
1295
1390
  threads cannot enter an existing preview, and a repeated commit cannot bind a
1296
- second batch. Threads bound by another action after preview are skipped and
1297
- reported. Recovery continues in the background after the CLI exits.
1391
+ second batch. Threads already added to the same Container after preview are skipped and
1392
+ reported. A retry of a committed operation does not undo a later removal. Recovery continues in the background after the CLI exits.
1298
1393
 
1299
1394
  Results distinguish threads bound, runs harvested, runs unrecoverable, other
1300
1395
  skipped runs, and pending runs. Pending work is not a completed harvest. The
1301
1396
  preview reflects retained history at its timestamp; delayed events or retention
1302
1397
  changes can change the final result. `--json` prints a versioned result envelope
1303
1398
  on stdout, including errors, and failures exit nonzero.
1399
+
1400
+ ## Download skills from several containers
1401
+
1402
+ ```bash
1403
+ copilotkit skills download support company-wide --output ./skills
1404
+ ```
1405
+
1406
+ Several container IDs produce separate directories, such as `./skills/support/refund-policy/SKILL.md`.
1407
+ A single container keeps the existing flat layout, such as `./skills/refund-policy/SKILL.md`.
1408
+ The destination must not already exist. The CLI validates every bundle before it creates the destination.
1409
+ If a download or validation fails, the CLI leaves no partial destination.
1410
+ Container IDs must be unique and belong to the selected project. Select up to 50 containers.
1411
+ Multiple containers use one product API batch request. If any container fails, the whole request fails.
@@ -2,20 +2,20 @@
2
2
  "schemaVersion": 1,
3
3
  "package": {
4
4
  "name": "copilotkit",
5
- "version": "4.15.0"
5
+ "version": "4.17.0"
6
6
  },
7
7
  "intelligence": {
8
- "commit": "f6de0940e2aac5d2e323767f3d6431354715d2e6"
8
+ "commit": "f6f91f8357a9058dcda3f2ef07a3283e23ddb9e8"
9
9
  },
10
10
  "copilotKit": {
11
- "submittedInput": "33db9a81ccfd",
12
- "commit": "33db9a81ccfd2d6e820defe3c1616594909439af"
11
+ "submittedInput": "0c8647a7f4ec",
12
+ "commit": "0c8647a7f4ecf565e58405642539c9d9744f62c5"
13
13
  },
14
14
  "channel": "production",
15
- "triggeringActor": "AlemTuzlak",
15
+ "triggeringActor": "BenTaylorDev",
16
16
  "workflow": {
17
- "runId": "36016174452",
18
- "runUrl": "https://github.com/CopilotKit/Intelligence/actions/runs/36016174452"
17
+ "runId": "36178536102",
18
+ "runUrl": "https://github.com/CopilotKit/Intelligence/actions/runs/36178536102"
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-09-24T14:55:57Z"
27
+ "builtAt": "2026-09-25T19:17:42Z"
28
28
  }