copilotkit 4.17.0 → 4.19.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 +133 -6
  2. package/cli-build-info.json +7 -7
  3. package/exporters/langgraph/README.md +118 -0
  4. package/exporters/langgraph/export_checkpointer.py +125 -0
  5. package/index.js +13382 -9313
  6. package/onboarding/index.json +1 -1
  7. package/onboarding/prompts/authenticate/start.md +31 -23
  8. package/onboarding/prompts/conversion/plan.md +3 -3
  9. package/onboarding/prompts/credentials/finalize-plan.md +57 -200
  10. package/onboarding/prompts/credentials/plan.md +50 -23
  11. package/onboarding/prompts/credentials/settle-credentials.md +56 -217
  12. package/onboarding/prompts/credentials/write-plan.md +17 -8
  13. package/onboarding/prompts/fallback/best-effort.md +36 -24
  14. package/onboarding/prompts/feature/a2ui/implement.md +7 -7
  15. package/onboarding/prompts/feature/a2ui/proof.md +8 -8
  16. package/onboarding/prompts/feature/a2ui/start.md +53 -9
  17. package/onboarding/prompts/feature/channels/implement.md +8 -8
  18. package/onboarding/prompts/feature/channels/proof.md +7 -7
  19. package/onboarding/prompts/feature/channels/start.md +50 -7
  20. package/onboarding/prompts/feature/chat-suggestions/implement.md +7 -7
  21. package/onboarding/prompts/feature/chat-suggestions/proof.md +7 -7
  22. package/onboarding/prompts/feature/chat-suggestions/start.md +50 -7
  23. package/onboarding/prompts/feature/complete.md +2 -2
  24. package/onboarding/prompts/feature/learning/implement.md +24 -19
  25. package/onboarding/prompts/feature/learning/proof.md +8 -8
  26. package/onboarding/prompts/feature/learning/start.md +43 -20
  27. package/onboarding/prompts/feature/open-generative-ui/implement.md +7 -7
  28. package/onboarding/prompts/feature/open-generative-ui/proof.md +7 -7
  29. package/onboarding/prompts/feature/open-generative-ui/start.md +50 -7
  30. package/onboarding/prompts/feature/realtime-sync/implement.md +8 -8
  31. package/onboarding/prompts/feature/realtime-sync/proof.md +7 -7
  32. package/onboarding/prompts/feature/realtime-sync/start.md +49 -6
  33. package/onboarding/prompts/feature/rich-threads/implement.md +9 -9
  34. package/onboarding/prompts/feature/rich-threads/proof.md +7 -7
  35. package/onboarding/prompts/feature/rich-threads/start.md +49 -6
  36. package/onboarding/prompts/feature/stop.md +5 -5
  37. package/onboarding/prompts/feature/voice/implement.md +7 -7
  38. package/onboarding/prompts/feature/voice/proof.md +7 -7
  39. package/onboarding/prompts/feature/voice/start.md +50 -7
  40. package/onboarding/prompts/framework/ag2.md +2 -2
  41. package/onboarding/prompts/framework/agno.md +2 -2
  42. package/onboarding/prompts/framework/built-in.md +2 -2
  43. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  44. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  45. package/onboarding/prompts/framework/crewai-flows.md +2 -2
  46. package/onboarding/prompts/framework/deep-agents.md +2 -2
  47. package/onboarding/prompts/framework/google-adk.md +2 -2
  48. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  49. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  50. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  51. package/onboarding/prompts/framework/llamaindex.md +2 -2
  52. package/onboarding/prompts/framework/mastra.md +2 -2
  53. package/onboarding/prompts/framework/ms-agent-dotnet.md +8 -3
  54. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +8 -3
  55. package/onboarding/prompts/framework/ms-agent-python.md +2 -2
  56. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  57. package/onboarding/prompts/framework/strands-python.md +2 -2
  58. package/onboarding/prompts/framework/strands-typescript.md +2 -2
  59. package/onboarding/prompts/frontend/angular.md +3 -3
  60. package/onboarding/prompts/frontend/nextjs.md +3 -3
  61. package/onboarding/prompts/frontend/plan.md +9 -8
  62. package/onboarding/prompts/frontend/react-native.md +2 -2
  63. package/onboarding/prompts/frontend/react-spa.md +2 -2
  64. package/onboarding/prompts/frontend/vue.md +2 -2
  65. package/onboarding/prompts/implementation/build-and-validate.md +27 -20
  66. package/onboarding/prompts/proof/complete.md +35 -19
  67. package/onboarding/prompts/proof/oss-baseline.md +5 -5
  68. package/onboarding/prompts/proof/round-trip.md +29 -20
  69. package/onboarding/prompts/research/gather.md +6 -6
  70. package/onboarding/prompts/research/merge.md +5 -4
  71. package/onboarding/prompts/research/preflight.md +15 -50
  72. package/onboarding/prompts/research/route.md +7 -6
  73. package/onboarding/prompts/starter/clone.md +8 -7
  74. package/onboarding/prompts/stopped/run-failed.md +4 -4
  75. package/onboarding/prompts/subagent/create-plan.md +19 -1
  76. package/onboarding/prompts/subagent/inspect-repository.md +18 -3
  77. package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
  78. package/onboarding/prompts/subagent/prove-round-trip.md +106 -62
  79. package/onboarding/prompts/unsupported/no-validated-path.md +4 -4
  80. package/package.json +1 -1
  81. package/release/release-tool.js +28 -5
@@ -10,6 +10,12 @@ and the credential write that Step 4 names for `api_key_loadable_by_app`.
10
10
  Do not write a path that overlaps a protected path. If a required proof or tool path
11
11
  overlaps one, return `Status: blocked` before writing it.
12
12
 
13
+ One CLI command is the exception to both rules. The Step 2 `onboard runtime-url` command
14
+ can write `.copilotkit/project.json` even when that path is protected. It moves the
15
+ protected-path baseline with its own write. If only the record's `runtimeUrl` changed since
16
+ the baseline, it replaces that URL and settles the record. It refuses any other change.
17
+ Never edit that file any other way.
18
+
13
19
  The existing agent's behavior is outside every step of this proof. It is four things: the
14
20
  agent's system prompt and instructions, its tools and what those tools do, its model and
15
21
  provider configuration, and its memory or state handling. A failing predicate is repaired
@@ -123,6 +129,22 @@ A zero exit means the server answered. Any other exit means that it did not answ
123
129
  seconds. A server that never answered has written the reason to its own output, and
124
130
  reading that output is faster than starting it again.
125
131
 
132
+ When the server that serves the runtime answers, record the URL it serves on. Read the port
133
+ from that server's own output or its listener, not from the plan. A dev server whose port
134
+ is taken moves to the next free one without asking. Where the runtime runs as a process of
135
+ its own, this is the runtime's port, not the frontend's.
136
+
137
+ ```text
138
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard runtime-url --url <runtime-url>
139
+ ```
140
+
141
+ `<runtime-url>` is the Step 1 runtime URL with its port replaced by the port that server
142
+ bound. Keep its host and its mount path unchanged.
143
+
144
+ The command writes `runtimeUrl` into `.copilotkit/project.json` and changes nothing else. It
145
+ mints no key and does not touch `.env`. Step 4 reads that record, so `verify` probes the
146
+ server you started. Run the command again after any restart that binds another port.
147
+
126
148
  That coupling also turns an ordinary restart into a false failure. Where you stop a server
127
149
  to pick up an installed dependency, start both again and wait for both to answer before you
128
150
  read the round trip. A check run against a frontend whose agent was stopped with it reports
@@ -163,10 +185,10 @@ IPv6 only, so an IPv4 literal fails against the correct port.
163
185
  ## Step 4 -- Check the wiring
164
186
 
165
187
  With both running, check the wiring in one command before you open a browser:
166
- `npx --prefer-offline --yes copilotkit@4.17.0 verify --json`. It reads the port from this project, so a
188
+ `npx --prefer-offline --yes copilotkit@4.19.0 verify --json`. It reads the port from this project, so a
167
189
  non-default port needs no flag. The payload reports `runtimeUrl` and `runtimeUrlSource`. A
168
- `runtimeUrlSource` of `default` means nothing in the project named a port, so pass
169
- `--runtime-url` with the URL from step 1 in that case. Read the individual checks rather than
190
+ `runtimeUrlSource` of `default` means nothing in the project named a port, so the Step 2
191
+ record is missing. Run the Step 2 `onboard runtime-url` command, then run `verify` again. Read the individual checks rather than
170
192
  the summary alone: a check reported `undetermined` did not run, and that is not a pass.
171
193
  Repair a failed check only within the limits above. Otherwise, return the check and its
172
194
  evidence before the browser.
@@ -191,13 +213,17 @@ this check: that mount serves the thread routes inside its envelope. If the chec
191
213
  `undetermined`, the runtime cannot report the state, and the check names the upgrade. Record
192
214
  that and continue.
193
215
 
216
+ `single_route_core_supports_intelligence` and `frontend_runtime_url_resolvable` read the
217
+ installed `@copilotkit/core` and the frontend's `runtimeUrl`. Each names the upgrade or the
218
+ URL that fixes it. Return the check for implementation. Do not edit it.
219
+
194
220
  Take the frontend URL from the payload's `frontendUrl`. It replaces whatever step 2
195
221
  recorded, and every later step uses it unchanged. Where the field is absent, the project
196
222
  named no port the CLI can read: keep step 2's URL, and rewrite its host as `localhost`
197
223
  before you use it.
198
224
 
199
225
  Then run the command once more with the URL you are about to open:
200
- `npx --prefer-offline --yes copilotkit@4.17.0 verify --frontend-url <that url> --json`. The
226
+ `npx --prefer-offline --yes copilotkit@4.19.0 verify --frontend-url <that url> --json`. The
201
227
  `frontend_assets_served` check asks that server for its page and for one of the page's own
202
228
  assets, on that exact host. A `fail` there means the dev server refuses its own static
203
229
  assets on the host you were about to use, and the check names the URL to use instead. This
@@ -205,20 +231,29 @@ is the cheapest step that can save the most expensive one, so run it before the
205
231
 
206
232
  ## Step 5 -- Prove that the agent runs
207
233
 
208
- Run `npx --prefer-offline --yes copilotkit@4.17.0 verify --round-trip --json`. It sends one request through
234
+ Run `npx --prefer-offline --yes copilotkit@4.19.0 verify --round-trip --json`. It sends one request through
209
235
  the runtime and reads the answer back from the thread, so it separates an agent that is
210
236
  configured from an agent that works. Use `--agent <id>` when the runtime declares more
211
237
  than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
212
238
  session the CLI does not carry: pass what it reads with `--header "Name: value"` and run
213
239
  it again, because an auth-gated app refusing an unauthenticated caller is that app
214
- working. Do not continue until this passes, and never report a round trip proven without
215
- it.
240
+ working. Do not continue until the `roundTrip` entry passes, and never report a round trip
241
+ proven without it.
242
+
243
+ The command exits non-zero for any check that is not `pass`, including each `extraChecks`
244
+ entry, so route on each entry's own `status` rather than on the exit status. Where the
245
+ frontend's files call a context hook, one entry has the `id` `page_context_reaches_agent`:
246
+
247
+ - `pass` proves that the agent's model sees context the page sends.
248
+ - `fail` is a defect: context the page sends never reaches the model. Return it with its
249
+ evidence as a failed proof step.
250
+ - `undetermined` means the context round trip did not complete. Record it and continue.
216
251
 
217
252
  Where this run settled a Learning Container, add the flag to the call above rather than
218
253
  running a second round trip:
219
254
 
220
255
  ```text
221
- npx --prefer-offline --yes copilotkit@4.17.0 verify --round-trip --expect-learning-container <container id> --json
256
+ npx --prefer-offline --yes copilotkit@4.19.0 verify --round-trip --expect-learning-container <container id> --json
222
257
  ```
223
258
 
224
259
  The check reads the thread that this run created, so a second round trip proves a second
@@ -252,7 +287,7 @@ the credential was written holds an empty key while the file beside it carries t
252
287
  one. Run this from the target app directory:
253
288
 
254
289
  ```text
255
- npx --prefer-offline --yes copilotkit@4.17.0 onboard env-staleness
290
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard env-staleness
256
291
  ```
257
292
 
258
293
  A `stale` line names the env file and how long after launch it was written. Report that,
@@ -268,7 +303,7 @@ environment on to every process it starts, so a provider base URL exported for t
268
303
  reaches the dev servers. Run this from the target app directory:
269
304
 
270
305
  ```text
271
- npx --prefer-offline --yes copilotkit@4.17.0 onboard inspect --json
306
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard inspect --json
272
307
  ```
273
308
 
274
309
  Read `providerEndpoints` for the app directory. An entry with a `null` `source` came from
@@ -279,24 +314,35 @@ edit a project file to answer it: the value lives in the shell, not in the proje
279
314
 
280
315
  ### Step 5a -- Prove that the page's data reaches the model
281
316
 
282
- `verify --round-trip` sends `context: []` and asks a question that needs no context. It
283
- passes against an agent the page's data never reaches, and that is the right job for an
284
- install check. Nothing else before the browser reads that path, so a page whose data the
285
- agent never sees answers fluently over a record it invented, and the first thing to notice
286
- is a card in a screenshot.
317
+ `verify --round-trip` asks a question that needs no context. Where the frontend's files call
318
+ a context hook, it also sends one token as context and reports
319
+ `page_context_reaches_agent`, which proves that the agent's model sees context at all. It
320
+ does not prove that the page's own entries arrive in the shape the agent reads. Nothing
321
+ else before the browser reads that path, so a page whose data the agent never sees answers
322
+ fluently over a record it invented, and the first thing to notice is a card in a
323
+ screenshot.
287
324
 
288
325
  Where this journey shares page data with the agent, prove that path here. Read the context
289
326
  entries this project's frontend publishes, from its own context call. Read the tool
290
327
  declarations it registers as well, and carry both the way the page carries them, so that
291
328
  the agent sees the request the browser sends rather than a thinner one. Send the same run
292
329
  body twice, to `<runtime>/agent/<agent id>/run`: once carrying the context entries the page
293
- publishes, and once carrying `context: []`. Use the step 1 request both times. Record the
294
- streamed events from each, and name both capture paths.
295
-
296
- Read the two answers against each other. The run carrying the page's context has to name
297
- the project's own records. The run carrying an empty context has to say the page sent
298
- nothing. Two answers that describe the same record mean the context changed nothing, and
299
- the page's data is not reaching the model.
330
+ publishes, and once carrying the same entries with one value changed. Use the step 1
331
+ request both times. Record the streamed events from each, and name both capture paths.
332
+
333
+ For the changed run, pick one record the step 1 request matches. Add a marker to a text
334
+ field that the answer repeats, such as its title or name:
335
+ ` [probe-<8 random hex characters>]`. Choose a new marker for each run, record it, and
336
+ change nothing else. Do not remove the entry or send `context: []` instead. The page always
337
+ sends its entries. A model with a request about records, a tool that needs them, and
338
+ nothing to copy invents records. That failure belongs to the probe, not to the integration.
339
+
340
+ Read each answer against the context it carried. The run carrying the page's context has to
341
+ name the project's own records and no others. The run carrying the changed entry has to
342
+ carry the marker, character for character, and name no record its context did not hold. A
343
+ model that the context never reaches cannot produce the marker. A model that invents a
344
+ different record on every call cannot produce it either, so two answers that only differ
345
+ prove nothing. An answer without the marker means the page's data is not reaching the model.
300
346
 
301
347
  Return the cause and both captures on a failed comparison. Do not open a browser on a
302
348
  failed comparison, and do not edit the project here.
@@ -346,16 +392,15 @@ For a recorded `both-oss` starting state, this step has no component to render.
346
392
  same request the baseline recorded, require the same kind of user-visible result the
347
393
  baseline produced, and require that the thread for that request is listed in the drawer.
348
394
  Where this journey's frontend framework ships no threads drawer -- React Native --, prove
349
- that thread with `npx --prefer-offline --yes copilotkit@4.17.0 verify --round-trip`, which reads the
395
+ that thread with `npx --prefer-offline --yes copilotkit@4.19.0 verify --round-trip`, which reads the
350
396
  answer back off the thread and needs no browser. Record which of the two you proved.
351
397
 
352
- Use the surface control the main coding agent recorded for your environment. It either had
353
- one already or registered one before this step, so that finding is the answer and there is
354
- nothing here for you to go looking for. Do not add a browser driver or a device tool to this
355
- project: a devDependency and a browser download land in the diff and tax a repository that
356
- never asked for one, which is a different thing from the server registered against the
357
- coding agent. If nothing in your environment can drive the surface this journey needs, skip
358
- this step rather than installing one, and report the skip outcome named below.
398
+ Use the surface control the main coding agent recorded for your environment. That finding
399
+ is the answer, and there is nothing here for you to go looking for. Do not register a
400
+ browser server with the coding agent, and do not add a browser driver or a device tool to
401
+ this project: a devDependency and a browser download land in the diff and tax a repository
402
+ that never asked for one. If nothing in your environment can drive the surface this journey
403
+ needs, skip this step rather than installing one, and report the skip outcome named below.
359
404
 
360
405
  Never report a result you did not see, on either surface.
361
406
 
@@ -370,11 +415,22 @@ under a name that says what it was.
370
415
  The surface is a browser, and it also covers browser-origin CORS and CSP, which a CLI
371
416
  request never exercises. Drive it with the browser control step 6 named.
372
417
 
418
+ A browser call can hang. It then returns only when the tool's own limit ends it, and that
419
+ limit can be ten minutes. You cannot interrupt a call while it runs, so the limit here is on
420
+ what you do after one. If a browser call took longer than 60 seconds to return, the browser
421
+ control is unresponsive. Do not call the browser again in this attempt. A second call to a
422
+ hung tool waits as long as the first one did. Run
423
+ `npx --prefer-offline --yes copilotkit@4.19.0 verify --frontend-url <the url step 4 resolved> --json` once,
424
+ and record the `frontend_assets_served` result. Report the outcome `failed` with the cause
425
+ `browser-control-unresponsive`. The application is not at fault on this evidence: every
426
+ step before the browser proved the runtime without one, and no repair to the project can
427
+ reach the tool.
428
+
373
429
  1. Open the frontend URL step 4 resolved, exactly as that step recorded it, and wait for
374
430
  the page to finish loading. Do not retype the host, and do not substitute a URL a tool
375
431
  offers you by default. Where the page loads but its styling is missing or the chat
376
432
  control is dead, run
377
- `npx --prefer-offline --yes copilotkit@4.17.0 verify --frontend-url <the url you opened> --json`
433
+ `npx --prefer-offline --yes copilotkit@4.19.0 verify --frontend-url <the url you opened> --json`
378
434
  before you diagnose anything else. A dev server can serve its page and refuse every
379
435
  static chunk behind it, and on screen that is indistinguishable from a broken
380
436
  integration. The `frontend_assets_served` check tells the two apart.
@@ -399,9 +455,12 @@ request never exercises. Drive it with the browser control step 6 named.
399
455
  the answer from, and what that element showed.
400
456
 
401
457
  Report exactly one of `performed`, `skipped-no-browser-tool`, `skipped-cloned-starter`, or
402
- `failed` for a web frontend. Report `skipped-cloned-starter` when the main coding agent told
403
- you to open no browser because the run cloned a starter. The cloned-starter exception above
404
- Step 1 says which steps to run.
458
+ `failed` for a web frontend. With `failed`, also report the cause
459
+ `browser-control-unresponsive` if the browser control stopped answering. Report
460
+ `skipped-cloned-starter` when the main coding agent told you to open no browser because the
461
+ run cloned a starter. Report `skipped-no-browser-tool` when no browser tool is loaded in
462
+ this session. Do not register one yourself in either case.
463
+ The cloned-starter exception above Step 1 says which steps to run.
405
464
 
406
465
  ### Step 6b -- React Native
407
466
 
@@ -487,40 +546,25 @@ Tell the developer what the skills install writes into this project before you r
487
546
  `.agents/skills` directory holding one folder per CopilotKit skill, linked into
488
547
  `.claude/skills`. Both sit in the working tree, so the install shows up in `git status`
489
548
  and can land in a commit. You cannot know whether this project keeps those directories in
490
- version control, so name them before you write them rather than after. Say the same
491
- thing about the MCP registration below where it writes `.mcp.json`: that file lands in the
492
- working tree beside them, for the same reason and with the same consequence.
493
-
494
- Use it to install the project-scoped CopilotKit Skills.
495
- Use it to configure the CopilotKit documentation MCP server for the coding-agent slug this
496
- run reported to `onboard identify`.
497
-
498
- Register it in this project wherever that agent reads a project-scoped file. For
499
- `claude-code` that is `claude mcp add --scope project`, which writes `.mcp.json` at the
500
- project root. Without that flag the command writes the agent's own configuration under the
501
- developer's home directory, outside this project, so pass it even where the command line
502
- you were given leaves it out. For `github-copilot` the project-scoped file is
503
- `.vscode/mcp.json`, and for `cursor` it is the project `mcp.json`.
504
-
505
- Where the agent reads no project-scoped file at all, do not run the registration. `codex`
506
- and `windsurf` write only under the home directory, and the desktop and web clients
507
- register through a settings screen this run cannot reach. Print the exact command or
508
- setting the guide gives for that agent, and tell the developer it is theirs to run. Record
509
- that as handed over rather than as failed: nothing went wrong, and this run is not allowed
510
- to edit configuration outside the project.
511
-
512
- Check whether each install succeeded and record what you found. Record the command result
513
- for each attempt. Report the Skills result and the MCP result separately from the proof
514
- result. A tool error does not change the proof result: this journey proved or it did not,
515
- whatever these two tools did.
549
+ version control, so name them before you write them rather than after.
550
+
551
+ Use it to install the project-scoped CopilotKit Skills. Do not register an MCP server: the
552
+ Skills read the CopilotKit documentation without one.
553
+
554
+ Check whether the install succeeded and record what you found. Record the command result.
555
+ Report the Skills result separately from the proof result. A tool error does not change the
556
+ proof result: this journey proved or it did not, whatever the install did.
516
557
 
517
558
  ## Step 10 -- Return the result
518
559
 
519
560
  Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
520
561
  Use `Status: passed` when the proof attempt completed with `performed`,
521
562
  `skipped-no-browser-tool`, `skipped-no-device`, or `skipped-cloned-starter`. The parent
522
- records a skip through the standard completion route, which ends every skip but
523
- `skipped-cloned-starter` as blocked. Use `Status: failed` for a failed proof step. Use
563
+ records a skip through the standard completion route, which ends `skipped-no-device` as
564
+ blocked and the other two skips as complete. Use `Status: passed` with the surface-check outcome `failed` and the cause
565
+ `browser-control-unresponsive` when every step before the browser passed and the browser
566
+ control then stopped answering. The round trip is proved, and the parent must not send a
567
+ tool fault to a repair. Use `Status: failed` for a failed proof step. Use
524
568
  `Status: blocked` when a safety or access limit stops the attempt before a surface outcome.
525
569
  Return the proof or the exact failed step to the main coding agent, together with the
526
570
  input, the visible result, the relevant process status, the evidence locations, the
@@ -30,13 +30,13 @@ Before you show the best-effort plan, require this complete packet:
30
30
  - Give the ordered proof rules.
31
31
 
32
32
  After the developer approves the best-effort plan, run
33
- `npx --prefer-offline --yes copilotkit@4.17.0 onboard read fallback/best-effort`.
33
+ `npx --prefer-offline --yes copilotkit@4.19.0 onboard read fallback/best-effort`.
34
34
 
35
- Send one short report. Run the friction command without another developer question. Do not
36
- ask the developer about telemetry: the command applies the setting they already have.
35
+ Send one short report. The friction command follows the telemetry setting the developer
36
+ already chose, so it needs no separate question.
37
37
 
38
38
  ```text
39
- npx --prefer-offline --yes copilotkit@4.17.0 onboard friction --phase stop --category <slug> --message "<sentences>"
39
+ npx --prefer-offline --yes copilotkit@4.19.0 onboard friction --phase stop --category <slug> --message "<sentences>"
40
40
  ```
41
41
 
42
42
  `--message` takes one or two sentences: the step you stopped at and what stopped it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copilotkit",
3
- "version": "4.17.0",
3
+ "version": "4.19.0",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=20.9.0"
@@ -14760,6 +14760,14 @@ var FLAG_DEFINITIONS = defineFlags({
14760
14760
  defaultByEnv: { dev: true, ci: true, prod: false },
14761
14761
  envVar: "FF_MANAGED_BOTS"
14762
14762
  },
14763
+ "self-hosted.local-evaluation": {
14764
+ purpose: "Gates new local evaluation discovery and license issuance until exact published artifacts pass promotion checks. Installed lifecycle and renewal stay available.",
14765
+ owner: "platform",
14766
+ createdAt: "2026-09-23",
14767
+ status: "rollout",
14768
+ surfaces: ["cli", "ops-api"],
14769
+ defaultByEnv: { dev: true, ci: true, prod: false }
14770
+ },
14763
14771
  "managed-channels": {
14764
14772
  purpose: "Canonical Managed Channels rollout gate, evaluated alongside the legacy FF_MANAGED_BOTS override while deployments migrate.",
14765
14773
  owner: "channels",
@@ -14811,7 +14819,7 @@ var FLAG_DEFINITIONS = defineFlags({
14811
14819
 
14812
14820
  // apps/cli/src/config.ts
14813
14821
  function getTemplateRef() {
14814
- return true ? "0c8647a7f4ecf565e58405642539c9d9744f62c5" : "main";
14822
+ return true ? "bb299bd0e71963c139b78c5bc9ac0bc0fd6d614f" : "main";
14815
14823
  }
14816
14824
 
14817
14825
  // apps/cli/src/services/agentcore-config.ts
@@ -15027,7 +15035,21 @@ var TELEMETRY_ERROR_CODES = {
15027
15035
  LEARNING_RESPONSE_INVALID: "LEARNING_RESPONSE_INVALID",
15028
15036
  LEARNING_SKILLS_BUNDLE_INVALID: "LEARNING_SKILLS_BUNDLE_INVALID",
15029
15037
  LEARNING_SKILLS_INTEGRITY_FAILED: "LEARNING_SKILLS_INTEGRITY_FAILED",
15030
- LEARNING_SKILLS_OUTPUT_EXISTS: "LEARNING_SKILLS_OUTPUT_EXISTS"
15038
+ LEARNING_SKILLS_OUTPUT_EXISTS: "LEARNING_SKILLS_OUTPUT_EXISTS",
15039
+ /** A device sign-in code ran out before anybody approved it. */
15040
+ DEVICE_LOGIN_EXPIRED: "DEVICE_LOGIN_EXPIRED",
15041
+ /** The person denied a device sign-in request. */
15042
+ DEVICE_LOGIN_DENIED: "DEVICE_LOGIN_DENIED",
15043
+ /** The server does not offer device sign-in. */
15044
+ DEVICE_LOGIN_UNAVAILABLE: "DEVICE_LOGIN_UNAVAILABLE",
15045
+ /** `login --json` refused a new code after repeated unapproved expiries. */
15046
+ LOGIN_REPEATED_EXPIRY: "LOGIN_REPEATED_EXPIRY",
15047
+ /**
15048
+ * An import source's environment is missing a required value or holds one
15049
+ * the importer rejects, such as an unset `MASTRA_IMPORT_AGENT_ID` (PE-397),
15050
+ * or a Mastra URL that names a file with no Mastra tables (PE-398).
15051
+ */
15052
+ IMPORT_SOURCE_CONFIG_INVALID: "IMPORT_SOURCE_CONFIG_INVALID"
15031
15053
  };
15032
15054
  function tagError(err, code) {
15033
15055
  err.code = code;
@@ -15428,9 +15450,10 @@ var projectConfigSchema = external_exports.object({
15428
15450
  * container, a port that only ever appears on a command line — says so once
15429
15451
  * instead of passing `--runtime-url` on every invocation (OSS-1090).
15430
15452
  *
15431
- * A person writes it, and so does `project select --runtime-url`. An
15432
- * onboarding run settles a free port and then has nowhere to put it, so
15433
- * `verify` falls back to its assumed default and reports on whatever holds
15453
+ * A person writes it, and so do `project select --runtime-url` and
15454
+ * `onboard runtime-url`, which records the port a started server bound
15455
+ * (PE-368). An onboarding run settles a free port and then has nowhere to
15456
+ * put it, so `verify` falls back to its assumed default and reports on whatever holds
15434
15457
  * that port — in one run, an unrelated checkout (PE-58). The flag is still
15435
15458
  * a statement rather than a guess: the caller has to name the URL.
15436
15459
  */