copilotkit 4.28.0 → 4.30.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 (97) hide show
  1. package/README.md +317 -36
  2. package/cli-build-info.json +7 -7
  3. package/exporters/claude-sdk/README.md +93 -0
  4. package/exporters/claude-sdk/export_session_store.py +39 -0
  5. package/exporters/claude-sdk/store-export.ts +61 -0
  6. package/index.js +212799 -109146
  7. package/onboarding/index.json +51 -5
  8. package/onboarding/prompts/authenticate/start.md +66 -52
  9. package/onboarding/prompts/conversion/plan.md +3 -3
  10. package/onboarding/prompts/credentials/finalize-plan.md +15 -15
  11. package/onboarding/prompts/credentials/plan.md +25 -29
  12. package/onboarding/prompts/credentials/settle-credentials.md +13 -8
  13. package/onboarding/prompts/credentials/write-plan.md +40 -30
  14. package/onboarding/prompts/deployment/choose-local.md +13 -12
  15. package/onboarding/prompts/deployment/local-evaluation.md +12 -12
  16. package/onboarding/prompts/fallback/best-effort.md +10 -11
  17. package/onboarding/prompts/feature/a2ui/implement.md +7 -5
  18. package/onboarding/prompts/feature/a2ui/plan.md +7 -3
  19. package/onboarding/prompts/feature/a2ui/proof.md +8 -6
  20. package/onboarding/prompts/feature/a2ui/start.md +18 -9
  21. package/onboarding/prompts/feature/channels/implement.md +10 -8
  22. package/onboarding/prompts/feature/channels/plan.md +9 -5
  23. package/onboarding/prompts/feature/channels/proof.md +8 -6
  24. package/onboarding/prompts/feature/channels/start.md +25 -12
  25. package/onboarding/prompts/feature/chat-suggestions/implement.md +7 -5
  26. package/onboarding/prompts/feature/chat-suggestions/plan.md +7 -3
  27. package/onboarding/prompts/feature/chat-suggestions/proof.md +8 -6
  28. package/onboarding/prompts/feature/chat-suggestions/start.md +18 -9
  29. package/onboarding/prompts/feature/complete.md +3 -3
  30. package/onboarding/prompts/feature/learning/implement.md +15 -13
  31. package/onboarding/prompts/feature/learning/plan.md +8 -4
  32. package/onboarding/prompts/feature/learning/proof.md +16 -14
  33. package/onboarding/prompts/feature/learning/start.md +18 -9
  34. package/onboarding/prompts/feature/open-generative-ui/implement.md +7 -5
  35. package/onboarding/prompts/feature/open-generative-ui/plan.md +7 -3
  36. package/onboarding/prompts/feature/open-generative-ui/proof.md +8 -6
  37. package/onboarding/prompts/feature/open-generative-ui/start.md +18 -9
  38. package/onboarding/prompts/feature/realtime-sync/implement.md +8 -6
  39. package/onboarding/prompts/feature/realtime-sync/plan.md +7 -3
  40. package/onboarding/prompts/feature/realtime-sync/proof.md +8 -6
  41. package/onboarding/prompts/feature/realtime-sync/start.md +17 -8
  42. package/onboarding/prompts/feature/rich-threads/implement.md +9 -7
  43. package/onboarding/prompts/feature/rich-threads/plan.md +7 -3
  44. package/onboarding/prompts/feature/rich-threads/proof.md +8 -6
  45. package/onboarding/prompts/feature/rich-threads/start.md +17 -8
  46. package/onboarding/prompts/feature/stop.md +4 -4
  47. package/onboarding/prompts/feature/voice/implement.md +7 -5
  48. package/onboarding/prompts/feature/voice/plan.md +8 -4
  49. package/onboarding/prompts/feature/voice/proof.md +8 -6
  50. package/onboarding/prompts/feature/voice/start.md +18 -9
  51. package/onboarding/prompts/framework/ag2.md +4 -11
  52. package/onboarding/prompts/framework/agno.md +4 -11
  53. package/onboarding/prompts/framework/built-in.md +3 -3
  54. package/onboarding/prompts/framework/claude-sdk-python.md +3 -3
  55. package/onboarding/prompts/framework/claude-sdk-typescript.md +3 -3
  56. package/onboarding/prompts/framework/crewai-flows.md +6 -12
  57. package/onboarding/prompts/framework/custom-ag-ui.md +5 -11
  58. package/onboarding/prompts/framework/deep-agents.md +5 -11
  59. package/onboarding/prompts/framework/google-adk.md +4 -8
  60. package/onboarding/prompts/framework/langgraph-fastapi.md +4 -10
  61. package/onboarding/prompts/framework/langgraph-python.md +4 -10
  62. package/onboarding/prompts/framework/langgraph-typescript.md +5 -11
  63. package/onboarding/prompts/framework/llamaindex.md +4 -10
  64. package/onboarding/prompts/framework/mastra.md +4 -10
  65. package/onboarding/prompts/framework/ms-agent-dotnet.md +6 -13
  66. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +7 -13
  67. package/onboarding/prompts/framework/ms-agent-python.md +5 -11
  68. package/onboarding/prompts/framework/pydantic-ai.md +4 -10
  69. package/onboarding/prompts/framework/strands-python.md +4 -10
  70. package/onboarding/prompts/framework/strands-typescript.md +4 -10
  71. package/onboarding/prompts/frontend/angular.md +4 -4
  72. package/onboarding/prompts/frontend/nextjs.md +4 -4
  73. package/onboarding/prompts/frontend/plan.md +10 -10
  74. package/onboarding/prompts/frontend/react-native.md +3 -3
  75. package/onboarding/prompts/frontend/react-spa.md +3 -3
  76. package/onboarding/prompts/frontend/vue.md +3 -3
  77. package/onboarding/prompts/implementation/build-and-validate.md +48 -15
  78. package/onboarding/prompts/proof/complete.md +22 -19
  79. package/onboarding/prompts/proof/oss-baseline.md +21 -5
  80. package/onboarding/prompts/proof/round-trip.md +55 -13
  81. package/onboarding/prompts/research/gather.md +60 -43
  82. package/onboarding/prompts/research/merge.md +6 -5
  83. package/onboarding/prompts/research/preflight.md +2 -2
  84. package/onboarding/prompts/research/route.md +5 -5
  85. package/onboarding/prompts/setup/questions.md +11 -9
  86. package/onboarding/prompts/starter/clone.md +78 -76
  87. package/onboarding/prompts/starter/setup.md +111 -0
  88. package/onboarding/prompts/stopped/declined.md +44 -0
  89. package/onboarding/prompts/stopped/run-failed.md +6 -6
  90. package/onboarding/prompts/subagent/create-plan.md +29 -4
  91. package/onboarding/prompts/subagent/implement-and-validate.md +31 -3
  92. package/onboarding/prompts/subagent/inspect-repository.md +17 -4
  93. package/onboarding/prompts/subagent/prove-oss-baseline.md +24 -1
  94. package/onboarding/prompts/subagent/prove-round-trip.md +43 -7
  95. package/onboarding/prompts/unsupported/no-validated-path.md +6 -6
  96. package/package.json +4 -1
  97. package/release/release-tool.js +383 -112
@@ -89,6 +89,19 @@ approved paths that do not overwrite such a file, unless the plan lists it under
89
89
  running the scaffolder. Ask the main coding agent to revise credential setup when a
90
90
  required variable is missing. Do not provision another key to repair a scaffold overwrite.
91
91
 
92
+ ## When a command is refused
93
+
94
+ If you are a subagent and your harness refuses a command, return at once. Name the
95
+ command, the directory you ran it from, and the refusal, and run nothing else. Do not wait
96
+ for an approval: nobody sees it. The main coding agent runs the command itself and passes
97
+ the result on. The one wait allowed is a harness escalation request that this brief tells
98
+ you to make for a command. Make that request and wait for its answer.
99
+
100
+ If your handoff holds a command's result, use it and do not run that command again.
101
+
102
+ If you are the main coding agent and follow this brief yourself, this section is not for
103
+ you. Do not return: handle a refused command as the run's other prompts say.
104
+
92
105
  ## What the existing agent's behavior is
93
106
 
94
107
  The existing agent's behavior is four things: its system prompt and instructions, its
@@ -136,7 +149,7 @@ Intelligence: declare each exact version in its app's manifest, then install wit
136
149
  project's package manager, under the install rule above. Then check the installed tree:
137
150
 
138
151
  ```text
139
- npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --check --json
152
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard upgrade-plan --check --json
140
153
  ```
141
154
 
142
155
  `single` means every direct dependency resolved to one version. `duplicates` names each
@@ -151,7 +164,7 @@ If the check finds duplicates or the baseline regresses, put the manifests and l
151
164
  back, leave Intelligence unwired, and report what failed:
152
165
 
153
166
  ```text
154
- npx --prefer-offline --yes copilotkit@4.28.0 onboard upgrade-plan --revert --json
167
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard upgrade-plan --revert --json
155
168
  ```
156
169
 
157
170
  Then end your turn. Never add an `overrides`, `resolutions`, or `pnpm.overrides` block to
@@ -183,11 +196,16 @@ project does not hold, and the rendered result looks the same either way.
183
196
  Run the full validation list. Record changed files, command results, and errors. Do not
184
197
  claim that the real user journey works in this phase.
185
198
 
199
+ Your validation stops at `verify`. The proof step runs the round trip and records the
200
+ proof, once. Do not run `verify --round-trip`, `onboard proof-check`, or `onboard proof`.
201
+ Where the validation list names the round trip, leave it to the proof step and say so in
202
+ the Validation section.
203
+
186
204
  Where the plan names a Learning Container id, check that the container exists first. Run
187
205
  this from the target app directory, before you write any selector:
188
206
 
189
207
  ```text
190
- npx --prefer-offline --yes copilotkit@4.28.0 learning containers get <id> --json
208
+ npx --prefer-offline --yes copilotkit@4.30.0 learning containers get <id> --json
191
209
  ```
192
210
 
193
211
  `"status": "success"` means the container exists. An `error.code` of
@@ -220,6 +238,16 @@ Gather what you need in as few commands as possible. Combine independent reads i
220
238
  command rather than running them one at a time. Split a command only when its result decides
221
239
  what you run next.
222
240
 
241
+ Before you return, record that you are returning:
242
+
243
+ ```text
244
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard checkpoint --phase subagent-returned --brief implement-and-validate --result <ok|failed>
245
+ ```
246
+
247
+ The Status line of your result decides the value. Pass `ok` only for `Status: passed`.
248
+ Pass `failed` for `Status: failed` or `Status: blocked`. If your harness refuses this command, say so in your result and return
249
+ anyway: the main coding agent records it.
250
+
223
251
  Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
224
252
  Return exactly four sections: Status, Files changed, Validation, and Blockers. Then end
225
253
  your turn.
@@ -8,13 +8,13 @@ Your handoff holds the JSON of this command, which the main coding agent ran fro
8
8
  target project directory:
9
9
 
10
10
  ```text
11
- npx --prefer-offline --yes copilotkit@4.28.0 onboard inspect --json
11
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard inspect --json
12
12
  ```
13
13
 
14
14
  Read that JSON. Do not run the command again. If the handoff holds no inspection JSON, run
15
- the command yourself. If your harness refuses it, return at once with no packet. Say that
16
- the harness refused the command, name it, and do not wait for an approval. That is not
17
- `Status: blocked`: the main coding agent can run the command and do this work itself.
15
+ the command yourself. If your harness refuses it, return with no packet, as "When a command
16
+ is refused" below says. That is not `Status: blocked`: the main coding agent can run the
17
+ command and do this work itself.
18
18
 
19
19
  The JSON answers the deterministic half of both packets exactly, from the same code
20
20
  `copilotkit verify` uses: the project record by presence, and, for each app or runtime
@@ -48,6 +48,19 @@ target directory that holds no project yet, and `no-declared-dependency` for a p
48
48
  where no directory declares one. Report that reason as the finding. Do not report that
49
49
  the inspection found nothing.
50
50
 
51
+ ## When a command is refused
52
+
53
+ If you are a subagent and your harness refuses a command, return at once. Name the
54
+ command, the directory you ran it from, and the refusal, and run nothing else. Do not wait
55
+ for an approval: nobody sees it. The main coding agent runs the command itself and passes
56
+ the result on. The one wait allowed is a harness escalation request that this brief tells
57
+ you to make for a command. Make that request and wait for its answer.
58
+
59
+ If your handoff holds a command's result, use it and do not run that command again.
60
+
61
+ If you are the main coding agent and follow this brief yourself, this section is not for
62
+ you. Do not return: handle a refused command as the run's other prompts say.
63
+
51
64
  ## Project evidence packet
52
65
 
53
66
  Find evidence for:
@@ -3,6 +3,19 @@
3
3
  Read and run only inside the project directory. Do not edit source, configuration,
4
4
  dependencies, or tracked files. Do not read, show, store, or return secret values.
5
5
 
6
+ ## When a command is refused
7
+
8
+ If you are a subagent and your harness refuses a command, return at once. Name the
9
+ command, the directory you ran it from, and the refusal, and run nothing else. Do not wait
10
+ for an approval: nobody sees it. The main coding agent runs the command itself and passes
11
+ the result on. The one wait allowed is a harness escalation request that this brief tells
12
+ you to make for a command. Make that request and wait for its answer.
13
+
14
+ If your handoff holds a command's result, use it and do not run that command again.
15
+
16
+ If you are the main coding agent and follow this brief yourself, this section is not for
17
+ you. Do not return: handle a refused command as the run's other prompts say.
18
+
6
19
  Find the expected agent id from the project. Start the existing agent and frontend only
7
20
  when they are not already running. Before using a port, identify its process and working
8
21
  directory. Do not stop a process outside this project.
@@ -35,7 +48,7 @@ Prove the live runtime in this order:
35
48
  4. Confirm from project files that the runtime constructor passes a `runner` option rather
36
49
  than an `intelligence` option. A package, import, project file, or key is not use proof.
37
50
  5. Run
38
- `npx --prefer-offline --yes copilotkit@4.28.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
51
+ `npx --prefer-offline --yes copilotkit@4.30.0 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
39
52
  with the runtime URL or auth header options that this project needs. Add
40
53
  `--runtime-url <url>` when the report names a runtime URL the dev server does not
41
54
  serve. Require exit zero
@@ -68,5 +81,15 @@ The default in-memory OSS runner is ephemeral. SQLite, custom, or framework pers
68
81
  can be durable. Report the persistence that project evidence proves, or `unproved`. Do not
69
82
  replace it and do not describe all OSS runs as ephemeral.
70
83
 
84
+ Before you return, record that you are returning:
85
+
86
+ ```text
87
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard checkpoint --phase subagent-returned --brief prove-oss-baseline --result <ok|failed>
88
+ ```
89
+
90
+ The Status line of your result decides the value. Pass `ok` only for `Status: passed`.
91
+ Pass `failed` for `Status: failed` or `Status: blocked`. If your harness refuses this command, say so in your result and return
92
+ anyway: the main coding agent records it.
93
+
71
94
  Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
72
95
  End your turn after returning the baseline result, process ids and ports used, and evidence paths.
@@ -50,6 +50,19 @@ Gather what you need in as few commands as possible. Combine independent reads i
50
50
  command rather than running them one at a time. Split a command only when its result decides
51
51
  what you run next.
52
52
 
53
+ ## When a command is refused
54
+
55
+ If you are a subagent and your harness refuses a command, return at once. Name the
56
+ command, the directory you ran it from, and the refusal, and run nothing else. Do not wait
57
+ for an approval: nobody sees it. The main coding agent runs the command itself and passes
58
+ the result on. The one wait allowed is a harness escalation request that this brief tells
59
+ you to make for a command. Make that request and wait for its answer.
60
+
61
+ If your handoff holds a command's result, use it and do not run that command again.
62
+
63
+ If you are the main coding agent and follow this brief yourself, this section is not for
64
+ you. Do not return: handle a refused command as the run's other prompts say.
65
+
53
66
  ## Step 1 -- Read what the proof needs
54
67
 
55
68
  Read all of this from the approved plan in one pass, before you start anything:
@@ -73,10 +86,14 @@ about the failure it was spawned to clear.
73
86
 
74
87
  ## Steps 2 to 5 -- Run the proof checks
75
88
 
89
+ Where your handoff holds an `onboard proof-check` result, that is your first run of the
90
+ proof checks. Read it as the result of the command below. Run the command again only after
91
+ a repair, as the rules below say.
92
+
76
93
  Run this from the target app directory:
77
94
 
78
95
  ```text
79
- npx --prefer-offline --yes copilotkit@4.28.0 onboard proof-check --json
96
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard proof-check --json
80
97
  ```
81
98
 
82
99
  It starts each app's `dev` script unless a server from that app already listens, and
@@ -132,7 +149,7 @@ Otherwise sort `firstFailure`, and run the command again after each repair:
132
149
  asking. Read the port from the log, not from the plan, and record it:
133
150
 
134
151
  ```text
135
- npx --prefer-offline --yes copilotkit@4.28.0 onboard runtime-url --url <runtime-url>
152
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard runtime-url --url <runtime-url>
136
153
  ```
137
154
 
138
155
  `<runtime-url>` is the project's runtime URL, or the plan's, with its port replaced by the
@@ -207,11 +224,20 @@ Never report a round trip proved unless `round-trip:agent_answers` passed.
207
224
 
208
225
  The checks leave every process they did not start running. If a repair needs a process
209
226
  stopped, stop a process only when its directory is inside this project, and stop its children
210
- before the parent. Never stop a process because its command line matches a name: one
227
+ before the parent. Wait for its listener to exit before rerunning the proof checks, so
228
+ the command starts only one replacement. Reuse a healthy project-owned frontend instead
229
+ of starting another copy. Never stop a process because its command line matches a name: one
211
230
  `pkill` pattern reaches every project on the machine. If a local request in Steps 5a and
212
231
  5b fails after 0 ms while the port listens, the sandbox blocked it. Request escalation
213
232
  with a prefix rule for `curl`, run it again, and do not record a failed predicate.
214
233
 
234
+ Next.js allows only one dev server per project directory. A second `next dev` can
235
+ announce port 3001 and print `Ready` before exiting with `Another next dev server is
236
+ already running` or a `.next/dev/lock` error. Changing ports does not fix that collision.
237
+ Do not delete a live server's lock. Identify the project-owned server and reuse it, or
238
+ stop it under the rule above before rerunning the proof checks. Confirm the replacement
239
+ stays running and serves the app before continuing. Leave other projects' processes alone.
240
+
215
241
  ### Step 5a -- Prove that the page's data reaches the model
216
242
 
217
243
  Where the proof checks needed `--thread`, the app refuses a run that Steps 5a and 5b send,
@@ -239,7 +265,7 @@ shows it. Send the same run
239
265
  body twice: once carrying the context entries the page
240
266
  publishes, and once carrying the same entries with one value changed. Use the step 1
241
267
  request both times. Write each body to a JSON file in `.copilotkit/proof/`, and send it with
242
- `npx --prefer-offline --yes copilotkit@4.28.0 verify --send-run <file> --agent <agent id> --json`.
268
+ `npx --prefer-offline --yes copilotkit@4.30.0 verify --send-run <file> --agent <agent id> --json`.
243
269
  The command sends the body to `<runtime>/agent/<agent id>/run` and reads the events the run
244
270
  streams. It writes them to `<file name>.events.jsonl` beside the body, and prints that path
245
271
  with the answer text and the tool calls. Do not send a run with `curl` and read its events
@@ -317,7 +343,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
317
343
  same request the baseline recorded, require the same kind of user-visible result the
318
344
  baseline produced, and require that the thread for that request is listed in the drawer.
319
345
  Where this journey's frontend framework ships no threads drawer -- React Native --, prove
320
- that thread with `npx --prefer-offline --yes copilotkit@4.28.0 verify --round-trip`, which reads the
346
+ that thread with `npx --prefer-offline --yes copilotkit@4.30.0 verify --round-trip`, which reads the
321
347
  answer back off the thread and needs no browser. Where the proof checks needed `--thread`,
322
348
  prove the thread for this request with `verify --thread <id>` instead. Record which of the
323
349
  two you proved.
@@ -347,7 +373,7 @@ limit can be ten minutes. You cannot interrupt a call while it runs, so the limi
347
373
  what you do after one. If a browser call took longer than 60 seconds to return, the browser
348
374
  control is unresponsive. Do not call the browser again in this attempt. A second call to a
349
375
  hung tool waits as long as the first one did. Run
350
- `npx --prefer-offline --yes copilotkit@4.28.0 verify --frontend-url <the frontendUrl the proof checks resolved> --json` once,
376
+ `npx --prefer-offline --yes copilotkit@4.30.0 verify --frontend-url <the frontendUrl the proof checks resolved> --json` once,
351
377
  and record the `frontend_assets_served` result. Report the outcome `failed` with the cause
352
378
  `browser-control-unresponsive`. The application is not at fault on this evidence: every
353
379
  step before the browser proved the runtime without one, and no repair to the project can
@@ -357,7 +383,7 @@ reach the tool.
357
383
  the page to finish loading. Do not retype the host, and do not substitute a URL a tool
358
384
  offers you by default. Where the page loads but its styling is missing or the chat
359
385
  control is dead, run
360
- `npx --prefer-offline --yes copilotkit@4.28.0 verify --frontend-url <the url you opened> --json`
386
+ `npx --prefer-offline --yes copilotkit@4.30.0 verify --frontend-url <the url you opened> --json`
361
387
  before you diagnose anything else. A dev server can serve its page and refuse every
362
388
  static chunk behind it, and on screen that is indistinguishable from a broken
363
389
  integration. The `frontend_assets_served` check tells the two apart.
@@ -466,6 +492,16 @@ For every other starting state, record Step 8 as not applicable.
466
492
 
467
493
  ## Step 9 -- Return the result
468
494
 
495
+ Before you return, record that you are returning:
496
+
497
+ ```text
498
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard checkpoint --phase subagent-returned --brief prove-round-trip --result <ok|failed>
499
+ ```
500
+
501
+ The Status line of your result decides the value. Pass `ok` only for `Status: passed`.
502
+ Pass `failed` for `Status: failed` or `Status: blocked`. If your harness refuses this command, say so in your result and return
503
+ anyway: the main coding agent records it.
504
+
469
505
  Start with `Status: passed`, `Status: failed`, or `Status: blocked`.
470
506
  Use `Status: passed` when the proof attempt completed with `performed`,
471
507
  `skipped-no-browser-tool`, `skipped-no-device`, or `skipped-cloned-starter`. The parent
@@ -9,9 +9,9 @@ trip caused the route change. Do not say a path works when this release does not
9
9
  If the CLI stopped this run with `## Stop: this run deleted or moved the developer's work`,
10
10
  name each path and change it listed, in the words it printed. A report that says only that
11
11
  files changed cannot be acted on: nobody reading it can tell which file moved.
12
- This step prints `## The developer's files` below: relay that report as printed, with its
13
- restore command. When the report says the run started in an empty folder, relay that one
14
- line alone: list no files and offer no restore.
12
+ This step prints `## Your files` below: relay that report as printed, with its restore
13
+ command. A run that started in an empty folder prints no such section: list no files and
14
+ offer no restore.
15
15
 
16
16
  Stop onboarding without making more repository changes by default.
17
17
 
@@ -36,17 +36,17 @@ Before you show the best-effort plan, require this complete packet:
36
36
  Before you end your turn to wait for the developer, report the pause:
37
37
 
38
38
  ```text
39
- npx --prefer-offline --yes copilotkit@4.28.0 onboard checkpoint --phase awaiting-developer
39
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard checkpoint --phase awaiting-plan-approval
40
40
  ```
41
41
 
42
42
  After the developer approves the best-effort plan, run
43
- `npx --prefer-offline --yes copilotkit@4.28.0 onboard read fallback/best-effort`.
43
+ `npx --prefer-offline --yes copilotkit@4.30.0 onboard read fallback/best-effort`.
44
44
 
45
45
  Send one short report. The friction command follows the telemetry setting the developer
46
46
  already chose, so it needs no separate question.
47
47
 
48
48
  ```text
49
- npx --prefer-offline --yes copilotkit@4.28.0 onboard friction --phase stop --category <slug> --message "<sentences>"
49
+ npx --prefer-offline --yes copilotkit@4.30.0 onboard friction --phase stop --category <slug> --message "<sentences>"
50
50
  ```
51
51
 
52
52
  `--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.28.0",
3
+ "version": "4.30.0",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=20.9.0"
@@ -19,5 +19,8 @@
19
19
  "dependencies": {
20
20
  "oidc-provider": "9.12.2"
21
21
  },
22
+ "devDependencies": {
23
+ "@ag-ui/client": "0.0.57"
24
+ },
22
25
  "license": "SEE LICENSE IN LICENSE"
23
26
  }