copilotkit 4.9.31 → 4.9.47

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 (45) hide show
  1. package/README.md +59 -6
  2. package/cli-build-info.json +8 -8
  3. package/index.js +3460 -2584
  4. package/onboarding/index.json +1 -1
  5. package/onboarding/prompts/authenticate/start.md +41 -15
  6. package/onboarding/prompts/conversion/plan.md +12 -4
  7. package/onboarding/prompts/credentials/finalize-plan.md +13 -13
  8. package/onboarding/prompts/credentials/plan.md +20 -20
  9. package/onboarding/prompts/fallback/best-effort.md +6 -6
  10. package/onboarding/prompts/framework/ag2.md +2 -2
  11. package/onboarding/prompts/framework/agno.md +2 -2
  12. package/onboarding/prompts/framework/built-in.md +2 -2
  13. package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
  14. package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
  15. package/onboarding/prompts/framework/crewai-flows.md +2 -2
  16. package/onboarding/prompts/framework/deep-agents.md +2 -2
  17. package/onboarding/prompts/framework/google-adk.md +2 -2
  18. package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
  19. package/onboarding/prompts/framework/langgraph-python.md +2 -2
  20. package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
  21. package/onboarding/prompts/framework/llamaindex.md +2 -2
  22. package/onboarding/prompts/framework/mastra.md +2 -2
  23. package/onboarding/prompts/framework/ms-agent-dotnet.md +2 -2
  24. package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +2 -2
  25. package/onboarding/prompts/framework/ms-agent-python.md +2 -2
  26. package/onboarding/prompts/framework/pydantic-ai.md +2 -2
  27. package/onboarding/prompts/framework/strands-python.md +2 -2
  28. package/onboarding/prompts/framework/strands-typescript.md +2 -2
  29. package/onboarding/prompts/frontend/angular.md +3 -3
  30. package/onboarding/prompts/frontend/nextjs.md +3 -3
  31. package/onboarding/prompts/frontend/plan.md +6 -6
  32. package/onboarding/prompts/frontend/react-native.md +2 -2
  33. package/onboarding/prompts/frontend/react-spa.md +2 -2
  34. package/onboarding/prompts/frontend/vue.md +2 -2
  35. package/onboarding/prompts/implementation/build-and-validate.md +18 -6
  36. package/onboarding/prompts/proof/complete.md +31 -6
  37. package/onboarding/prompts/proof/oss-baseline.md +21 -4
  38. package/onboarding/prompts/proof/round-trip.md +30 -7
  39. package/onboarding/prompts/starter/clone.md +11 -5
  40. package/onboarding/prompts/subagent/create-plan.md +1 -1
  41. package/onboarding/prompts/subagent/prove-oss-baseline.md +6 -3
  42. package/onboarding/prompts/subagent/prove-round-trip.md +44 -20
  43. package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
  44. package/package.json +1 -1
  45. package/release/release-tool.js +1 -1
@@ -15,7 +15,7 @@ documents `useRenderTool`, which is React Native's own hook for drawing a tool t
15
15
  already has. That is a different job and needs a tool in the agent.
16
16
 
17
17
  If the pages support the selection, record React Native and these URLs. Then run
18
- `npx --yes copilotkit@4.9.31 onboard read credentials/finalize-plan`.
18
+ `npx --yes copilotkit@4.9.47 onboard read credentials/finalize-plan`.
19
19
 
20
20
  If the documentation does not support the selection, run
21
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`.
21
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`.
@@ -11,7 +11,7 @@ not move the agent into it.
11
11
  - https://docs.copilotkit.ai/react-spa.md
12
12
 
13
13
  If the page supports the selection, record React SPA and this URL. Then run
14
- `npx --yes copilotkit@4.9.31 onboard read credentials/finalize-plan`.
14
+ `npx --yes copilotkit@4.9.47 onboard read credentials/finalize-plan`.
15
15
 
16
16
  If the documentation does not support the selection, run
17
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`.
17
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`.
@@ -16,7 +16,7 @@ page above. Vue has its own `useComponent`, which is not the React package. Take
16
16
  that reference page rather than from a Vue generative-UI guide, which is not published.
17
17
 
18
18
  If the pages support the selection, record Vue 3 and these URLs. Then run
19
- `npx --yes copilotkit@4.9.31 onboard read credentials/finalize-plan`.
19
+ `npx --yes copilotkit@4.9.47 onboard read credentials/finalize-plan`.
20
20
 
21
21
  If the documentation does not support the selection, run
22
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`.
22
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`.
@@ -7,7 +7,7 @@ Do not implement the plan yourself. Use the step order in the approved plan.
7
7
  Run the audit from the target app directory:
8
8
 
9
9
  ```text
10
- npx --yes copilotkit@4.9.31 onboard audit
10
+ npx --yes copilotkit@4.9.47 onboard audit
11
11
  ```
12
12
 
13
13
  It compares every protected path with the digest the CLI captured for it. Its result starts
@@ -29,7 +29,7 @@ A path that no Files changed section names changed outside the run, and it is th
29
29
  developer's own file. Accept it by name:
30
30
 
31
31
  ```text
32
- npx --yes copilotkit@4.9.31 onboard protect --accept-external --path <path>
32
+ npx --yes copilotkit@4.9.47 onboard protect --accept-external --path <path>
33
33
  ```
34
34
 
35
35
  Pass one `--path` for each path you accept. Accept only a path the audit named, and only
@@ -45,8 +45,14 @@ protected path as changed. Report the printed reason and use the route-out rules
45
45
  An audit that has not passed never continues the run by itself. Continue only after an
46
46
  acceptance clears it, or route out. Do not send an audit result to a repair worker.
47
47
 
48
+ Report the plan this run is about to implement:
49
+
50
+ ```text
51
+ npx --yes copilotkit@4.9.47 onboard checkpoint --phase plan-written
52
+ ```
53
+
48
54
  Spawn one implementation subagent. Tell it to run
49
- `npx --yes copilotkit@4.9.31 onboard read subagent/implement-and-validate` first and follow
55
+ `npx --yes copilotkit@4.9.47 onboard read subagent/implement-and-validate` first and follow
50
56
  the prompt it returns. If that read fails because the subagent cannot use the shell, stop that
51
57
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
52
58
  and the same handoff. Give it the plan, selected framework, frontend, model, exact target app
@@ -63,8 +69,14 @@ Run the protected-path audit after the implementation subagent passes. Decide ea
63
69
  names the same way as above, against the Files changed section that subagent just
64
70
  returned. Continue to proof only when that audit passes.
65
71
 
66
- After the selected implementation path passes, run
67
- `npx --yes copilotkit@4.9.31 onboard read proof/round-trip`.
72
+ After the selected implementation path passes, report it:
73
+
74
+ ```text
75
+ npx --yes copilotkit@4.9.47 onboard checkpoint --phase build-validated
76
+ ```
77
+
78
+ Then run
79
+ `npx --yes copilotkit@4.9.47 onboard read proof/round-trip`.
68
80
 
69
81
  ## Repair rules
70
82
 
@@ -82,4 +94,4 @@ Route out for `Status: blocked`. Route out only when the failure is not yours to
82
94
  failure is in code this run did not write, the fix requires changing the developer's existing
83
95
  agent or frontend, the same command still fails after three repair attempts, or the
84
96
  documentation does not support the plan. In those cases run
85
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`.
97
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`.
@@ -64,7 +64,7 @@ Name the debugging surface this journey's frontend can reach, rather than the on
64
64
  of the documentation leads with. For a web frontend it is the CopilotKit Inspector. For
65
65
  React Native there is no Inspector: it is a browser overlay built on a DOM custom element,
66
66
  and `@copilotkit/react-native` does not ship it. Give a mobile developer
67
- `npx --yes copilotkit@4.9.31 verify --round-trip`, the runtime's own log, the AG-UI
67
+ `npx --yes copilotkit@4.9.47 verify --round-trip`, the runtime's own log, the AG-UI
68
68
  Event Inspector in the CopilotKit VS Code extension, and the Intelligence thread view
69
69
  instead. Naming the Inspector to a developer who cannot open it costs them the time it
70
70
  takes to conclude their own wiring is broken.
@@ -76,7 +76,7 @@ the friction commands without another developer question. The CLI telemetry gate
76
76
  whether the report is sent.
77
77
 
78
78
  ```text
79
- npx --yes copilotkit@4.9.31 onboard friction --category <slug> --cost-seconds <seconds>
79
+ npx --yes copilotkit@4.9.47 onboard friction --category <slug> --cost-seconds <seconds>
80
80
  ```
81
81
 
82
82
  Write one or two sentences on the command's standard input. Pick one category from
@@ -84,6 +84,18 @@ docs-missing, docs-wrong, docs-sequential, cli-gap, sdk-gap, environment,
84
84
  port-collision, credential, validation-loop, and other. For the seconds, give your
85
85
  own estimate of what that one papercut cost this run.
86
86
 
87
+ Pass --docs-path only for a docs-missing or docs-wrong report, naming the page the report
88
+ is about:
89
+
90
+ ```text
91
+ npx --yes copilotkit@4.9.47 onboard friction --category docs-wrong --cost-seconds 300 --docs-path /docs/threads/drawer
92
+ ```
93
+
94
+ Give the page's site-relative path or its full URL, with no spaces, query string, or
95
+ fragment. A report that names its page can be counted against that page. A report that
96
+ describes the page in prose cannot. Leave the flag off for every other category, and leave
97
+ it off when no single page is at fault.
98
+
87
99
  Send no secrets, source code, logs, or command output. The command refuses a report
88
100
  that carries any of those, prints the reason, and exits zero. A refused report is not
89
101
  a failed step and not a failed onboarding run. Reword it and send it again, or move
@@ -93,14 +105,14 @@ Tell the developer when you send a friction report. Do not quote or summarize th
93
105
  unless the developer asks. If the CLI says that telemetry is disabled or unavailable,
94
106
  state that the report was not sent and continue without another question.
95
107
 
96
- When the evidence is gathered, run `npx --yes copilotkit@4.9.31 onboard complete`, carrying
108
+ When the evidence is gathered, run `npx --yes copilotkit@4.9.47 onboard complete`, carrying
97
109
  the surface-check outcome the proof subagent returned. Pass exactly one flag, and pass the
98
110
  one that matches this journey's surface.
99
111
 
100
112
  For a web frontend -- React SPA, Next.js, Angular, Vue:
101
113
 
102
114
  ```text
103
- npx --yes copilotkit@4.9.31 onboard complete --visual-check <outcome>
115
+ npx --yes copilotkit@4.9.47 onboard complete --visual-check <outcome>
104
116
  ```
105
117
 
106
118
  The outcome is one of `performed`, `skipped-no-browser-tool`, or `failed`.
@@ -108,7 +120,7 @@ The outcome is one of `performed`, `skipped-no-browser-tool`, or `failed`.
108
120
  For React Native:
109
121
 
110
122
  ```text
111
- npx --yes copilotkit@4.9.31 onboard complete --device-check <outcome>
123
+ npx --yes copilotkit@4.9.47 onboard complete --device-check <outcome>
112
124
  ```
113
125
 
114
126
  The outcome is one of `performed`, `skipped-no-device`, or `failed`.
@@ -117,6 +129,19 @@ The two flags are not interchangeable and neither takes the other's outcomes. A
117
129
  proves nothing about a React Native view tree, and a device capture proves nothing about
118
130
  browser-origin CORS, so the flag you pass is how this run states which surface it proved.
119
131
 
132
+ For a web frontend, also pass the URL the browser opened:
133
+
134
+ ```text
135
+ npx --yes copilotkit@4.9.47 onboard complete --visual-check <outcome> \
136
+ --frontend-url <the url you opened>
137
+ ```
138
+
139
+ Pass the URL from the proof subagent's record, unchanged. Only the kind of host is
140
+ recorded -- a loopback hostname, a loopback IP literal, another IP literal, or another
141
+ name -- and never the host itself. A run that opened the loopback IP literal loses every
142
+ static chunk to a refusal, and the field is how that stops being invisible. Leave the flag
143
+ off for React Native, which opens no URL.
144
+
120
145
  Pass the outcome you were given rather than the one you wanted. Anything but `performed`
121
146
  prints what the missing check leaves unverified and ends this run as blocked. That output
122
147
  is the developer's finding, so carry it into the summary rather than restating it as a
@@ -126,7 +151,7 @@ If the round trip proved and something after it still blocked this run, add `--b
126
151
  to the same command:
127
152
 
128
153
  ```text
129
- npx --yes copilotkit@4.9.31 onboard complete --visual-check performed --blocked-by <cause>
154
+ npx --yes copilotkit@4.9.47 onboard complete --visual-check performed --blocked-by <cause>
130
155
  ```
131
156
 
132
157
  The cause is one of `inspector` for a debugging surface that did not open,
@@ -1,7 +1,7 @@
1
1
  # Prove the existing OSS baseline
2
2
 
3
3
  Do not prove the baseline yourself. Spawn one proof subagent. Tell it to run
4
- `npx --yes copilotkit@4.9.31 onboard read subagent/prove-oss-baseline` first and follow the
4
+ `npx --yes copilotkit@4.9.47 onboard read subagent/prove-oss-baseline` first and follow the
5
5
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
6
6
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
7
7
  and the same handoff. Give it the repository findings and exact CLI package spec.
@@ -14,18 +14,35 @@ for a substitute.
14
14
 
15
15
  Wait for the subagent to finish.
16
16
 
17
+ Record what that proof returned before you route on it:
18
+
19
+ ```text
20
+ npx --yes copilotkit@4.9.47 onboard proof --step oss-baseline --outcome <passed|failed|skipped> [--predicate <1-6>]
21
+ ```
22
+
23
+ Report the gate whatever it returned. Pass `passed` when the subagent proved a predicate,
24
+ and `failed` when it cannot classify the baseline.
25
+ A proof that never ran is `skipped`, not failed. The command prints one line and sends
26
+ nothing else.
27
+
28
+ Add `--predicate` with the number the subagent returned, for a failure or a skip. The
29
+ subagent returns all six results, and the number is the only part of them this command
30
+ carries. Pass it on a failure with the predicate that failed, and on a skip with the
31
+ predicate that was skipped, which is `6` where the preflight recorded no surface control.
32
+ A passed gate takes no predicate.
33
+
17
34
  Do not change project files before this proof ends. Starting existing development
18
35
  processes and their ignored runtime files is allowed.
19
36
 
20
37
  If the subagent proves the `both-oss` predicate, keep its evidence with the plan and run
21
- `npx --yes copilotkit@4.9.31 onboard read conversion/plan`. That project already works.
38
+ `npx --yes copilotkit@4.9.47 onboard read conversion/plan`. That project already works.
22
39
  What it needs is the conversion, not a build.
23
40
 
24
41
  If it proves another supported starting state, record that state and run
25
- `npx --yes copilotkit@4.9.31 onboard read credentials/plan`. This prompt is served
42
+ `npx --yes copilotkit@4.9.47 onboard read credentials/plan`. This prompt is served
26
43
  whenever a project looks like an OSS integration, so a baseline that did not prove is an
27
44
  ordinary starting state rather than a failure.
28
45
 
29
46
  If it cannot identify the running process safely, exposes a secret, or finds a baseline
30
47
  failure that cannot be classified, run
31
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`.
48
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`.
@@ -1,7 +1,7 @@
1
1
  # Prove the user journey
2
2
 
3
3
  Do not do the proof work yourself. Spawn one proof subagent. Tell it to run
4
- `npx --yes copilotkit@4.9.31 onboard read subagent/prove-round-trip` first and follow the
4
+ `npx --yes copilotkit@4.9.47 onboard read subagent/prove-round-trip` first and follow the
5
5
  prompt it returns. If that read fails because the subagent cannot use the shell, stop that
6
6
  subagent. Run the same command yourself, then spawn a fresh subagent with the returned prompt
7
7
  and the same handoff. Give it the selected framework, frontend, model, approved plan, selected
@@ -20,8 +20,24 @@ https://docs.copilotkit.ai/build-with-agents.md
20
20
  Wait for the subagent to finish. Its result arrives as a notification. Do not sleep to
21
21
  pass the time.
22
22
 
23
+ Report each attempt at the journey as it ends, counting from one:
24
+
25
+ ```text
26
+ npx --yes copilotkit@4.9.47 onboard checkpoint --phase journey-attempted --attempt 1
27
+ ```
28
+
29
+ Record what that proof returned before you route on it:
30
+
31
+ ```text
32
+ npx --yes copilotkit@4.9.47 onboard proof --step round-trip --outcome <passed|failed|skipped>
33
+ ```
34
+
35
+ Report the gate whatever it returned. A proof that never ran is `skipped`, not failed. The
36
+ command prints one line and sends nothing else. Where a repair cycle runs the proof again,
37
+ record each attempt as it ends.
38
+
23
39
  For every protected-path audit in this prompt, run
24
- `npx --yes copilotkit@4.9.31 onboard audit` from the target app directory. If its result
40
+ `npx --yes copilotkit@4.9.47 onboard audit` from the target app directory. If its result
25
41
  starts with `Status: blocked`, report the printed reason and use the route-out rules below.
26
42
  A blocked audit proved nothing changed and is not a preservation failure. If a
27
43
  protected-path audit reports a changed path, decide it the way the implementation prompt
@@ -30,13 +46,13 @@ returns none, so a finding with no Files changed section to test against routes
30
46
  path one of those sections names is this run's own change and routes out too. Accept a
31
47
  path only when a section this run collected covers the step that wrote it and does not
32
48
  name it:
33
- `npx --yes copilotkit@4.9.31 onboard protect --accept-external --path <path>`. Then run
49
+ `npx --yes copilotkit@4.9.47 onboard protect --accept-external --path <path>`. Then run
34
50
  the audit again and name the path in the closing summary. Never repair, reset, or revert a
35
51
  protected path.
36
52
 
37
53
  If the proof result starts with `Status: passed`, run the protected-path audit. Continue to
38
54
  `proof/complete` only if that audit passes. After the audit passes, run
39
- `npx --yes copilotkit@4.9.31 onboard read proof/complete`. A performed surface outcome with
55
+ `npx --yes copilotkit@4.9.47 onboard read proof/complete`. A performed surface outcome with
40
56
  the full round trip is core success even if a continued-development tool fails. A skipped
41
57
  surface outcome still enters `proof/complete` so the CLI records the blocked result. Do not
42
58
  describe a skipped surface as proved. Keep the Skills and MCP results separate from the proof
@@ -88,7 +104,14 @@ worker. Repeat repair and validation at most three times. If either worker retur
88
104
  Run the protected-path audit again after validation passes. Continue only if its result
89
105
  starts with `Status: passed`.
90
106
 
91
- Restart each project-owned process changed by the repair. Then spawn a fresh proof subagent
107
+ Restart each project-owned process changed by the repair. Report the cycle, counting from
108
+ one:
109
+
110
+ ```text
111
+ npx --yes copilotkit@4.9.47 onboard checkpoint --phase repair-attempted --attempt 1
112
+ ```
113
+
114
+ Then spawn a fresh proof subagent
92
115
  with the full original proof handoff, failed proof evidence, and new validation evidence.
93
116
  This handoff includes the plan, documentation, policy, current process IDs, ports,
94
117
  surface-control state, the continued-tools guide, and the failed attempt's pinned Step 1
@@ -103,7 +126,7 @@ and proof cycles.
103
126
 
104
127
  Route out only when the failure is not yours to fix, when the same proof still fails after
105
128
  three attempts, or when no evidence of the round trip can be produced. In those cases run
106
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`. All three are
129
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`. All three are
107
130
  about the round trip itself. A round trip that proved is not one of them, whatever failed
108
131
  after it.
109
132
 
@@ -113,7 +136,7 @@ Run the feedback command without another developer question. The CLI telemetry g
113
136
  whether the report is sent.
114
137
 
115
138
  ```text
116
- npx --yes copilotkit@4.9.31 onboard feedback
139
+ npx --yes copilotkit@4.9.47 onboard feedback
117
140
  ```
118
141
 
119
142
  Write at most four lines to standard input: the step you stopped at and what stopped it.
@@ -43,7 +43,7 @@ the derived name.
43
43
  Only if the developer asks for an existing project, or asks to see the projects they have,
44
44
  read the choices:
45
45
 
46
- `npx --yes copilotkit@4.9.31 project list --json`
46
+ `npx --yes copilotkit@4.9.47 project list --json`
47
47
 
48
48
  Then ask which one to use. Do not order the projects by creation time. If the developer
49
49
  already gave this answer, do not ask again. Do not read a secret value. Do not show or
@@ -53,7 +53,7 @@ Run the command from the parent directory. Do not inspect another entry in the p
53
53
  directory. Replace each placeholder with the recorded value. Do not run a placeholder as
54
54
  a shell argument.
55
55
 
56
- `npx --yes copilotkit@4.9.31 init --name <project-name> --framework <framework-id> --channel none --no-banner --create <name> --install`
56
+ `npx --yes copilotkit@4.9.47 init --name <project-name> --framework <framework-id> --channel none --no-banner --create <name> --install`
57
57
 
58
58
  Pass the confirmed name to both `--name` and `--create`: the app directory and its
59
59
  Intelligence project take the same name here. If the developer names an existing project,
@@ -66,11 +66,17 @@ The command clones the starter into the empty target directory. It also connects
66
66
  starter to the developer's Intelligence project. The earlier login phase supplies the
67
67
  account. The command does not need terminal input.
68
68
 
69
- If the command succeeds, do not rebuild the starter by hand. Inspect only the generated
69
+ If the command succeeds, do not rebuild the starter by hand. Report the clone first:
70
+
71
+ ```text
72
+ npx --yes copilotkit@4.9.47 onboard checkpoint --phase starter-cloned
73
+ ```
74
+
75
+ Then inspect only the generated
70
76
  paths inside the target directory. Record the files, install result, project connection,
71
77
  and validation commands. Then run
72
- `npx --yes copilotkit@4.9.31 onboard read proof/round-trip`.
78
+ `npx --yes copilotkit@4.9.47 onboard read proof/round-trip`.
73
79
 
74
80
  If the command fails, report its exact error and do not claim that the starter is ready.
75
81
  Then run
76
- `npx --yes copilotkit@4.9.31 onboard read unsupported/no-validated-path`.
82
+ `npx --yes copilotkit@4.9.47 onboard read unsupported/no-validated-path`.
@@ -122,7 +122,7 @@ here is work the developer did not ask for.
122
122
  Plan the threads drawer itself: add it from the selected drawer page, where this frontend
123
123
  does not already render one. Where this journey's frontend framework ships no threads
124
124
  drawer -- React Native --, plan that the thread is proved by
125
- `npx --yes copilotkit@4.9.31 verify --round-trip`, which needs no browser. Do not plan a
125
+ `npx --yes copilotkit@4.9.47 verify --round-trip`, which needs no browser. Do not plan a
126
126
  step that opens the managed Intelligence dashboard.
127
127
 
128
128
  ## Order the plan into steps
@@ -11,12 +11,15 @@ Prove the live runtime in this order:
11
11
 
12
12
  1. GET `/info` from the project's CopilotKit runtime and require a valid response.
13
13
  2. Require `/info` to declare the expected agent id.
14
- 3. Confirm that `licenseStatus` is absent. Its presence means the live runtime uses
15
- Intelligence and is not an OSS starting state.
14
+ 3. Confirm that both `runtimeEntitlements` and `licenseStatus` are absent. The presence
15
+ of either means the live runtime uses Intelligence and is not an OSS starting state.
16
+ A runtime below `@copilotkit/runtime` 1.70.0 reports `licenseStatus` and no
17
+ `runtimeEntitlements`, so the second field is the one that catches it. A check that
18
+ reads only the first passes an Intelligence project as an OSS baseline.
16
19
  4. Confirm from project files that the runtime constructor passes a `runner` option rather
17
20
  than an `intelligence` option. A package, import, project file, or key is not use proof.
18
21
  5. Run
19
- `npx --yes copilotkit@4.9.31 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
22
+ `npx --yes copilotkit@4.9.47 verify --expect-runtime oss --round-trip --agent <expected-agent-id> --json`,
20
23
  with the runtime URL or auth header options that this project needs. Require exit zero
21
24
  and the JSON `ok` field to be `true`.
22
25
  6. Drive one real request through the existing frontend, CopilotKit runtime, and expected
@@ -90,8 +90,11 @@ A server that never answered has written the reason to its own output, and readi
90
90
  output is faster than starting it again.
91
91
 
92
92
  Leave the agent and frontend servers running after proof. Record each process ID and a
93
- safe command that stops that process. Record the frontend URL, written with `localhost`
94
- rather than an IP literal, and the commands that start both servers again.
93
+ safe command that stops that process. Record the commands that start both servers again.
94
+
95
+ Record the frontend URL the server you started reports, and treat it as provisional. Step 4
96
+ replaces it with the URL the CLI resolves. Do not compose one of your own from a port you
97
+ read here.
95
98
 
96
99
  ## Step 3 -- Identify the process that answered
97
100
 
@@ -120,7 +123,7 @@ IPv6 only, so an IPv4 literal fails against the correct port.
120
123
  ## Step 4 -- Check the wiring
121
124
 
122
125
  With both running, check the wiring in one command before you open a browser:
123
- `npx --yes copilotkit@4.9.31 verify --json`. It reads the port from this project, so a
126
+ `npx --yes copilotkit@4.9.47 verify --json`. It reads the port from this project, so a
124
127
  non-default port needs no flag. The payload reports `runtimeUrl` and `runtimeUrlSource`. A
125
128
  `runtimeUrlSource` of `default` means nothing in the project named a port, so pass
126
129
  `--runtime-url` with the URL from step 1 in that case. Read the individual checks rather than
@@ -135,7 +138,7 @@ used the Intelligence credential. `api_key_authenticates` proves only that the k
135
138
  will not read. `verify` searches upward for the credential and a framework's env loader
136
139
  does not, so a key at the repository root is invisible to an app in a subdirectory. The
137
140
  check names the file to write instead. Write the key there, or run
138
- `npx --yes copilotkit@4.9.31 project select` from the app directory. Do not link,
141
+ `npx --yes copilotkit@4.9.47 project select` from the app directory. Do not link,
139
142
  copy, or symlink the file to work around it, and do not treat the credential as missing:
140
143
  the check above already reported that it exists.
141
144
 
@@ -144,9 +147,21 @@ mounted `mode: "single-route"` is the usual cause. Return it for implementation
144
147
  option and use a catch-all route. Do not edit it. If the check is `undetermined` because no
145
148
  thread-endpoint state exists, the runtime predates the field. Record that and continue.
146
149
 
150
+ Take the frontend URL from the payload's `frontendUrl`. It replaces whatever step 2
151
+ recorded, and every later step uses it unchanged. Where the field is absent, the project
152
+ named no port the CLI can read: keep step 2's URL, and rewrite its host as `localhost`
153
+ before you use it.
154
+
155
+ Then run the command once more with the URL you are about to open:
156
+ `npx --yes copilotkit@4.9.47 verify --frontend-url <that url> --json`. The
157
+ `frontend_assets_served` check asks that server for its page and for one of the page's own
158
+ assets, on that exact host. A `fail` there means the dev server refuses its own static
159
+ assets on the host you were about to use, and the check names the URL to use instead. This
160
+ is the cheapest step that can save the most expensive one, so run it before the browser.
161
+
147
162
  ## Step 5 -- Prove that the agent runs
148
163
 
149
- Run `npx --yes copilotkit@4.9.31 verify --round-trip --json`. It sends one request through
164
+ Run `npx --yes copilotkit@4.9.47 verify --round-trip --json`. It sends one request through
150
165
  the runtime and reads the answer back from the thread, so it separates an agent that is
151
166
  configured from an agent that works. Use `--agent <id>` when the runtime declares more
152
167
  than one. If it reports `user-not-identified`, this project's `identifyUser` reads a
@@ -223,7 +238,7 @@ For a recorded `both-oss` starting state, this step has no component to render.
223
238
  same request the baseline recorded, require the same kind of user-visible result the
224
239
  baseline produced, and require that the thread for that request is listed in the drawer.
225
240
  Where this journey's frontend framework ships no threads drawer -- React Native --, prove
226
- that thread with `npx --yes copilotkit@4.9.31 verify --round-trip`, which reads the
241
+ that thread with `npx --yes copilotkit@4.9.47 verify --round-trip`, which reads the
227
242
  answer back off the thread and needs no browser. Record which of the two you proved.
228
243
 
229
244
  Use the surface control the main coding agent recorded for your environment. It either had
@@ -247,11 +262,14 @@ under a name that says what it was.
247
262
  The surface is a browser, and it also covers browser-origin CORS and CSP, which a CLI
248
263
  request never exercises. Drive it with the browser control step 6 named.
249
264
 
250
- 1. Open the frontend URL from step 2 and wait for the page to finish loading.
251
- Address it as `localhost` rather than an IP literal, for the reason step 3 gives
252
- for the agent. A dev server reached on the IP literal can refuse its own static
253
- assets, and a page that loads without them leaves the chat control dead. That
254
- reads as a broken integration rather than as the host name you used.
265
+ 1. Open the frontend URL step 4 resolved, exactly as that step recorded it, and wait for
266
+ the page to finish loading. Do not retype the host, and do not substitute a URL a tool
267
+ offers you by default. Where the page loads but its styling is missing or the chat
268
+ control is dead, run
269
+ `npx --yes copilotkit@4.9.47 verify --frontend-url <the url you opened> --json`
270
+ before you diagnose anything else. A dev server can serve its page and refuse every
271
+ static chunk behind it, and on screen that is indistinguishable from a broken
272
+ integration. The `frontend_assets_served` check tells the two apart.
255
273
  2. Take one page snapshot. Record whether the CopilotKit surface is on the page. A page
256
274
  that renders without it is a wiring failure rather than a proof to retry.
257
275
  3. Read the browser console before you type anything, and record every error already
@@ -328,15 +346,21 @@ Return the cause and its evidence. Do not edit it during proof.
328
346
  Run this step only for a recorded `both-oss` starting state. Compare the final round trip
329
347
  with the recorded OSS baseline against the criterion the conversion prompt froze. The same
330
348
  frontend request must still reach the same agent and produce the same kind of user-visible
331
- result. The runtime must now report `licenseStatus`, and the authenticated Intelligence
332
- checks must pass. A thread for that request must be persisted and visible. Record both
333
- before and after evidence, and record that the criterion was `conversion-v1`.
334
-
335
- `licenseStatus` reports `unknown` while the runtime entitlement lookup for this project
336
- has not resolved yet. That value is transient rather than a failure, and the drawer
337
- renders its locked view for as long as it stands. Re-read `/info` and re-open the drawer
338
- before you judge either one. Criterion 4 requires `licenseStatus` to be present, and a
339
- present `unknown` meets it.
349
+ result. The runtime must now report `runtimeEntitlements`, and the authenticated
350
+ Intelligence checks must pass. A thread for that request must be persisted and
351
+ visible. Record both before and after evidence, and record that the criterion was
352
+ `conversion-v1`.
353
+
354
+ `runtimeEntitlements` reports a `status` other than `ready` with a retryable error while
355
+ the entitlement lookup for this project has not resolved yet. That state is transient
356
+ rather than a failure, and the drawer renders its locked view for as long as it stands.
357
+ Re-read `/info` and re-open the drawer before you judge either one. Criterion 4 requires
358
+ `runtimeEntitlements` to be present, and a present unresolved lookup meets it.
359
+
360
+ A runtime that reports `licenseStatus` and no `runtimeEntitlements` is below
361
+ `@copilotkit/runtime` 1.70.0, which is this conversion's dependency floor. Criterion 4 is
362
+ not met by the older field. Record the floor as unmet and say which dependency is below
363
+ it, rather than reading the compatibility field as a pass.
340
364
 
341
365
  For every other starting state, record Step 8 as not applicable.
342
366
 
@@ -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 --yes copilotkit@4.9.31 onboard read fallback/best-effort`.
33
+ `npx --yes copilotkit@4.9.47 onboard read fallback/best-effort`.
34
34
 
35
35
  Send one short report. Run the feedback command without another developer question. The
36
36
  CLI telemetry gate decides whether the report is sent.
37
37
 
38
38
  ```text
39
- npx --yes copilotkit@4.9.31 onboard feedback
39
+ npx --yes copilotkit@4.9.47 onboard feedback
40
40
  ```
41
41
 
42
42
  Write the feedback message to the command's standard input, in at most four lines.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "copilotkit",
3
- "version": "4.9.31",
3
+ "version": "4.9.47",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14698,7 +14698,7 @@ import * as path4 from "node:path";
14698
14698
 
14699
14699
  // apps/cli/src/config.ts
14700
14700
  function getTemplateRef() {
14701
- return true ? "c2038cf52ced16dc814e2ff0bd60894f2a53f5c1" : "main";
14701
+ return true ? "380ad1220a7bc78104baedc469c4d086c8910494" : "main";
14702
14702
  }
14703
14703
 
14704
14704
  // apps/cli/src/services/agentcore-config.ts