copilotkit 4.22.0 → 4.23.1
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.
- package/README.md +390 -17
- package/cli-build-info.json +8 -8
- package/index.js +52224 -34474
- package/onboarding/index.json +83 -9
- package/onboarding/prompts/authenticate/start.md +44 -34
- package/onboarding/prompts/conversion/plan.md +3 -3
- package/onboarding/prompts/credentials/finalize-plan.md +12 -7
- package/onboarding/prompts/credentials/plan.md +23 -23
- package/onboarding/prompts/credentials/settle-credentials.md +10 -7
- package/onboarding/prompts/credentials/write-plan.md +17 -7
- package/onboarding/prompts/deployment/choose-local.md +46 -0
- package/onboarding/prompts/deployment/local-evaluation.md +71 -0
- package/onboarding/prompts/fallback/best-effort.md +8 -8
- package/onboarding/prompts/feature/a2ui/implement.md +6 -6
- package/onboarding/prompts/feature/a2ui/plan.md +72 -0
- package/onboarding/prompts/feature/a2ui/proof.md +5 -5
- package/onboarding/prompts/feature/a2ui/start.md +11 -32
- package/onboarding/prompts/feature/channels/implement.md +23 -16
- package/onboarding/prompts/feature/channels/plan.md +85 -0
- package/onboarding/prompts/feature/channels/proof.md +5 -5
- package/onboarding/prompts/feature/channels/start.md +14 -41
- package/onboarding/prompts/feature/chat-suggestions/implement.md +6 -6
- package/onboarding/prompts/feature/chat-suggestions/plan.md +71 -0
- package/onboarding/prompts/feature/chat-suggestions/proof.md +5 -5
- package/onboarding/prompts/feature/chat-suggestions/start.md +11 -30
- package/onboarding/prompts/feature/complete.md +2 -2
- package/onboarding/prompts/feature/learning/implement.md +13 -13
- package/onboarding/prompts/feature/learning/plan.md +82 -0
- package/onboarding/prompts/feature/learning/proof.md +6 -6
- package/onboarding/prompts/feature/learning/start.md +11 -40
- package/onboarding/prompts/feature/open-generative-ui/implement.md +6 -6
- package/onboarding/prompts/feature/open-generative-ui/plan.md +70 -0
- package/onboarding/prompts/feature/open-generative-ui/proof.md +5 -5
- package/onboarding/prompts/feature/open-generative-ui/start.md +11 -30
- package/onboarding/prompts/feature/realtime-sync/implement.md +7 -7
- package/onboarding/prompts/feature/realtime-sync/plan.md +75 -0
- package/onboarding/prompts/feature/realtime-sync/proof.md +5 -5
- package/onboarding/prompts/feature/realtime-sync/start.md +10 -33
- package/onboarding/prompts/feature/rich-threads/implement.md +8 -8
- package/onboarding/prompts/feature/rich-threads/plan.md +77 -0
- package/onboarding/prompts/feature/rich-threads/proof.md +5 -5
- package/onboarding/prompts/feature/rich-threads/start.md +10 -35
- package/onboarding/prompts/feature/stop.md +3 -3
- package/onboarding/prompts/feature/voice/implement.md +6 -6
- package/onboarding/prompts/feature/voice/plan.md +74 -0
- package/onboarding/prompts/feature/voice/proof.md +5 -5
- package/onboarding/prompts/feature/voice/start.md +11 -29
- package/onboarding/prompts/framework/ag2.md +2 -2
- package/onboarding/prompts/framework/agno.md +2 -2
- package/onboarding/prompts/framework/built-in.md +2 -2
- package/onboarding/prompts/framework/claude-sdk-python.md +2 -2
- package/onboarding/prompts/framework/claude-sdk-typescript.md +2 -2
- package/onboarding/prompts/framework/crewai-flows.md +2 -2
- package/onboarding/prompts/framework/custom-ag-ui.md +5 -2
- package/onboarding/prompts/framework/deep-agents.md +2 -2
- package/onboarding/prompts/framework/google-adk.md +2 -2
- package/onboarding/prompts/framework/langgraph-fastapi.md +2 -2
- package/onboarding/prompts/framework/langgraph-python.md +2 -2
- package/onboarding/prompts/framework/langgraph-typescript.md +2 -2
- package/onboarding/prompts/framework/llamaindex.md +2 -2
- package/onboarding/prompts/framework/mastra.md +2 -2
- package/onboarding/prompts/framework/ms-agent-dotnet.md +3 -3
- package/onboarding/prompts/framework/ms-agent-harness-dotnet.md +3 -3
- package/onboarding/prompts/framework/ms-agent-python.md +2 -2
- package/onboarding/prompts/framework/pydantic-ai.md +2 -2
- package/onboarding/prompts/framework/strands-python.md +2 -2
- package/onboarding/prompts/framework/strands-typescript.md +2 -2
- package/onboarding/prompts/frontend/angular.md +3 -3
- package/onboarding/prompts/frontend/nextjs.md +3 -3
- package/onboarding/prompts/frontend/plan.md +7 -7
- package/onboarding/prompts/frontend/react-native.md +2 -2
- package/onboarding/prompts/frontend/react-spa.md +2 -2
- package/onboarding/prompts/frontend/vue.md +2 -2
- package/onboarding/prompts/implementation/build-and-validate.md +14 -13
- package/onboarding/prompts/proof/complete.md +3 -3
- package/onboarding/prompts/proof/oss-baseline.md +5 -5
- package/onboarding/prompts/proof/round-trip.md +16 -11
- package/onboarding/prompts/research/gather.md +9 -8
- package/onboarding/prompts/research/merge.md +6 -3
- package/onboarding/prompts/research/preflight.md +2 -2
- package/onboarding/prompts/research/route.md +22 -14
- package/onboarding/prompts/starter/clone.md +5 -5
- package/onboarding/prompts/stopped/run-failed.md +2 -2
- package/onboarding/prompts/subagent/create-plan.md +9 -2
- package/onboarding/prompts/subagent/implement-and-validate.md +34 -2
- package/onboarding/prompts/subagent/inspect-repository.md +1 -1
- package/onboarding/prompts/subagent/prove-oss-baseline.md +1 -1
- package/onboarding/prompts/subagent/prove-round-trip.md +39 -21
- package/onboarding/prompts/unsupported/no-validated-path.md +2 -2
- package/package.json +4 -1
- package/release/release-tool.js +167 -18
- package/services/local-auth-worker.js +21465 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Choose local evaluation
|
|
2
|
+
|
|
3
|
+
This node records the developer's local deployment choice in the onboarding route.
|
|
4
|
+
Use that choice for both new and existing apps throughout this run. Pass it to each
|
|
5
|
+
worker. Do not offer a hosted project later in this run.
|
|
6
|
+
|
|
7
|
+
Explain these conditions before sign-in:
|
|
8
|
+
|
|
9
|
+
- The developer supplies Docker with 4 CPUs, 12 GiB RAM, and 40 GiB free storage
|
|
10
|
+
available for this stack, after other workloads.
|
|
11
|
+
- The CLI installs Threads, Learning, Channels, the dashboard, CLI-approved local sign-in,
|
|
12
|
+
databases, and persistent object storage. Memory and analytics are excluded.
|
|
13
|
+
- CopilotKit sign-in issues a renewable plan-based license. Local dashboard
|
|
14
|
+
sign-in is separate. After setup, valid licenses are checked locally.
|
|
15
|
+
- The developer supplies model access. Learning can use compatible app settings,
|
|
16
|
+
separate settings, or remain configuration incomplete until settings are supplied.
|
|
17
|
+
- Slack and Teams need internet access and a developer-provided public HTTPS endpoint.
|
|
18
|
+
|
|
19
|
+
Collect a path to the published candidate manifest. There is no selected default.
|
|
20
|
+
Do not substitute an arbitrary chart tag or a checkout build. If no manifest exists,
|
|
21
|
+
report that candidate publication is needed and take the failure path below.
|
|
22
|
+
Never ask the developer to paste credentials into the conversation.
|
|
23
|
+
|
|
24
|
+
Collect the model choice. For reuse, have the developer place their compatible app
|
|
25
|
+
model settings in a private JSON file with `model`, `provider`, and any needed
|
|
26
|
+
`baseUrl` and `apiKey` fields. Use that file with `--model-config`. Separate settings
|
|
27
|
+
use the same private file format. Deferral uses `--defer-model`.
|
|
28
|
+
|
|
29
|
+
Record the candidate path and model choice in the plan, but no secret values.
|
|
30
|
+
Create no cluster and change no app files at this step. The developer can still decline sign-in.
|
|
31
|
+
If declined, take the failure path below.
|
|
32
|
+
|
|
33
|
+
Run `npx --prefer-offline --yes copilotkit@4.23.1 login --json`. Follow the streaming sign-in
|
|
34
|
+
protocol from “Check sign-in” in the start prompt: open the first authentication URL
|
|
35
|
+
once, keep the same process running, and continue only after its completed record.
|
|
36
|
+
Explain that this sign-in obtains the evaluation license, not the local dashboard login.
|
|
37
|
+
On failed or declined sign-in, take the failure path below.
|
|
38
|
+
|
|
39
|
+
After sign-in completes, continue with
|
|
40
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 onboard read research/gather`.
|
|
41
|
+
Keep the local choice and collected paths in the run's plan and worker context.
|
|
42
|
+
|
|
43
|
+
## Failure path
|
|
44
|
+
|
|
45
|
+
If the candidate is missing or sign-in fails or is declined, stop before cluster creation.
|
|
46
|
+
Run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read stopped/run-failed`.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Install and connect the local evaluation
|
|
2
|
+
|
|
3
|
+
Use this path for the local choice recorded before sign-in. The app directory is now
|
|
4
|
+
known, whether research selected a new starter or an existing app. Keep the app's
|
|
5
|
+
framework and existing code. Do not run the full init command from this graph.
|
|
6
|
+
|
|
7
|
+
## Approve the app connection
|
|
8
|
+
|
|
9
|
+
Before changing files, show a short plan with the exact app directory and these writes:
|
|
10
|
+
|
|
11
|
+
- `.gitignore` and the gitignored `.copilotkit/local.json` stack reference.
|
|
12
|
+
- `.env`: `INTELLIGENCE_API_URL`, `INTELLIGENCE_GATEWAY_WS_URL`,
|
|
13
|
+
`CPK_INTELLIGENCE_API_KEY`, and `SL_ENABLED`.
|
|
14
|
+
- `.copilotkit/project.json`: the local project selection.
|
|
15
|
+
|
|
16
|
+
Explain that local setup creates an empty local project. It copies no hosted data.
|
|
17
|
+
Prior connection settings are saved in private CLI state before the app changes.
|
|
18
|
+
`local cancel` restores only settings that still match this setup's writes and reports
|
|
19
|
+
conflicting setting names. It preserves later edits and the stack's data.
|
|
20
|
+
|
|
21
|
+
Get approval for the local installation and these connection writes. Apply the existing
|
|
22
|
+
protected-path authorization rules to these exact files. Approval for a scaffold alone
|
|
23
|
+
does not authorize replacing an existing app's connection.
|
|
24
|
+
|
|
25
|
+
## Run the shared installer
|
|
26
|
+
|
|
27
|
+
From the exact app directory, use the collected candidate and model choice:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
npx --prefer-offline --yes copilotkit@4.23.1 local setup --candidate <manifest.json> --defer-model --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For supplied model access, replace `--defer-model` with `--model-config <private-file>`.
|
|
34
|
+
Do not print or read the model file into the conversation. Do not install or manage Docker.
|
|
35
|
+
The CLI supplies its pinned Helm and k3d tools and checks the available Docker budget.
|
|
36
|
+
|
|
37
|
+
On a retry, run `local setup --json` with no new candidate. It uses saved inputs.
|
|
38
|
+
Read blockers and the recorded failed step. Do not delete or recreate a failed stack.
|
|
39
|
+
A copied app needs explicit `--share-stack`. Do not infer sharing from a copied reference.
|
|
40
|
+
|
|
41
|
+
After setup reports the stack ready, run the approved connection step from that directory:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
npx --prefer-offline --yes copilotkit@4.23.1 local connect --approve-connection --json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Read the local `.copilotkit/project.json` for its project ID and slug. Do not run hosted
|
|
48
|
+
project selection or provision a second app key. The bootstrap already created both.
|
|
49
|
+
Report the dashboard URL. Tell the developer to run `local credentials` themselves for
|
|
50
|
+
the sign-in approval steps. Do not copy its output into the conversation or reports.
|
|
51
|
+
|
|
52
|
+
## Keep the existing feature proofs
|
|
53
|
+
|
|
54
|
+
Use the existing Threads round-trip proof against this local project. Verify a real
|
|
55
|
+
message, reply, and saved conversation. Installation readiness alone is not that proof.
|
|
56
|
+
|
|
57
|
+
Learning needs valid model settings for this installation. A previous local installation
|
|
58
|
+
proves nothing about these settings. If deferred, report “Learning configuration
|
|
59
|
+
incomplete.” No Learning run is required to finish onboarding configuration.
|
|
60
|
+
|
|
61
|
+
Channels remain incomplete until the existing proof observes a useful reply to a real mention.
|
|
62
|
+
Use the existing approved HTTPS tunnel instructions when inbound traffic needs a public URL.
|
|
63
|
+
The developer supplies and manages the tunnel. Missing ingress or provider credentials
|
|
64
|
+
must not block Threads, the dashboard, or later Learning configuration.
|
|
65
|
+
|
|
66
|
+
If the developer cancels the connection, run `local cancel --json` from the app directory.
|
|
67
|
+
Report conflict names only. Keep the stack unless deletion is separately confirmed.
|
|
68
|
+
|
|
69
|
+
Continue with `npx --prefer-offline --yes copilotkit@4.23.1 onboard read credentials/settle-credentials`.
|
|
70
|
+
For this local route, skip the hosted selection-result checks and use the local project
|
|
71
|
+
record. Continue the existing implementation and proof paths against local endpoints.
|
|
@@ -16,7 +16,7 @@ you stop. The friction command follows the telemetry setting the developer alrea
|
|
|
16
16
|
so it needs no separate question.
|
|
17
17
|
|
|
18
18
|
```text
|
|
19
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
19
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
`--message` takes one or two sentences: the step you stopped at and what stopped it.
|
|
@@ -62,19 +62,19 @@ or frontend, stop onboarding.
|
|
|
62
62
|
|
|
63
63
|
Use these rules for every protected-path check in this fallback:
|
|
64
64
|
|
|
65
|
-
- Run `npx --prefer-offline --yes copilotkit@4.
|
|
65
|
+
- Run `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit` from the target app directory.
|
|
66
66
|
- If a result starts with `Status: blocked`, stop onboarding and report the printed reason.
|
|
67
67
|
It proved nothing changed, so do not report a preservation failure.
|
|
68
68
|
- If a result reports a changed protected path this run wrote, stop onboarding.
|
|
69
69
|
- If a result reports a changed env file, this rule replaces the one above, even when this
|
|
70
70
|
run wrote the file. This run asked the developer to place a
|
|
71
71
|
credential there, so take the credential route rather than the external one. Accept it
|
|
72
|
-
with `npx --prefer-offline --yes copilotkit@4.
|
|
72
|
+
with `npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-credential --path <path>`,
|
|
73
73
|
run the audit again, and name it in the closing report. If the command refuses because
|
|
74
74
|
it names a lost variable, stop onboarding.
|
|
75
75
|
- Before any proof subagent runs, a changed path that no Files changed section from this
|
|
76
76
|
run names came from outside the run. Accept it by name with
|
|
77
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
77
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>`, run the
|
|
78
78
|
audit again, and name it in the closing report.
|
|
79
79
|
- After a proof subagent runs, a changed path that no Files changed section from this run
|
|
80
80
|
names is unsettled rather than outside the run, because the proof subagent here returns
|
|
@@ -133,16 +133,16 @@ that the selected documentation proved an inferred step.
|
|
|
133
133
|
Record what the proof returned before you complete:
|
|
134
134
|
|
|
135
135
|
```text
|
|
136
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
136
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
When the proof is complete, run `npx --prefer-offline --yes copilotkit@4.
|
|
139
|
+
When the proof is complete, run `npx --prefer-offline --yes copilotkit@4.23.1 onboard complete`, carrying the
|
|
140
140
|
surface-check result the proof subagent returned. Pass exactly one of `--visual-check` or
|
|
141
141
|
`--device-check`, matching this journey's surface:
|
|
142
142
|
|
|
143
143
|
```text
|
|
144
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
145
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
144
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard complete --visual-check <outcome>
|
|
145
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard complete --device-check <outcome>
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
`--visual-check` is for a web frontend and takes `performed`, `skipped-no-browser-tool`, or
|
|
@@ -18,7 +18,7 @@ without exposing secrets.
|
|
|
18
18
|
Before you spawn the implementation subagent, take the authorized list from the CLI:
|
|
19
19
|
|
|
20
20
|
```text
|
|
21
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
21
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
|
|
@@ -37,7 +37,7 @@ still go on the record. Name the file and why the work needs it, then end your t
|
|
|
37
37
|
for the developer's answer. If they allow it, record their answer before any edit:
|
|
38
38
|
|
|
39
39
|
```text
|
|
40
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
40
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
Continue only when the result starts with `Status: passed`. Run the audit again, take the
|
|
@@ -49,7 +49,7 @@ feature stop route below.
|
|
|
49
49
|
After validation and each repair, run:
|
|
50
50
|
|
|
51
51
|
```text
|
|
52
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
52
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
|
|
@@ -60,7 +60,7 @@ with the implementation subagent's `Files changed` section. If that section does
|
|
|
60
60
|
the path, accept the developer's external change:
|
|
61
61
|
|
|
62
62
|
```text
|
|
63
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
63
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
For an env file where the developer placed a requested credential, use
|
|
@@ -73,11 +73,11 @@ Run the audit again after each accepted change. If it still fails, or starts
|
|
|
73
73
|
with `Status: blocked`, route out and stop:
|
|
74
74
|
|
|
75
75
|
```text
|
|
76
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
76
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
If validation cannot pass, or this intent needs a prerequisite the app does not have, use
|
|
80
80
|
the feature stop route above without further changes.
|
|
81
81
|
|
|
82
82
|
Otherwise run
|
|
83
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
83
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/a2ui/proof`.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Plan A2UI with the developer
|
|
2
|
+
|
|
3
|
+
The inspection in `feature/a2ui/start` came back and proved what this intent needs. This
|
|
4
|
+
prompt turns it into a plan, asks the developer to approve it, and records the protected
|
|
5
|
+
paths the plan changes. Do not change project files in this prompt.
|
|
6
|
+
|
|
7
|
+
## Waits and stops
|
|
8
|
+
|
|
9
|
+
The rules in `feature/a2ui/start` still hold here.
|
|
10
|
+
|
|
11
|
+
The approval is a wait for the developer. Before you end your turn to wait, report the
|
|
12
|
+
pause:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
|
|
19
|
+
When the answer arrives, continue from the step that paused. If the developer asks for a
|
|
20
|
+
change, show the changed plan and ask again.
|
|
21
|
+
|
|
22
|
+
## What this prompt takes from the start
|
|
23
|
+
|
|
24
|
+
Keep these from `feature/a2ui/start`, and give them to every subagent:
|
|
25
|
+
|
|
26
|
+
- the protected path list that `onboard protect` printed, and
|
|
27
|
+
- the paths and findings the inspection returned: the CopilotKit runtime, provider, chat
|
|
28
|
+
surface, agent id, package versions, existing A2UI configuration, development and test
|
|
29
|
+
commands, and the round trip that `verify` proved.
|
|
30
|
+
|
|
31
|
+
If you do not hold them, as after `onboard resume` in a new session, get them back before
|
|
32
|
+
you plan. Run `onboard protect` again from the target app directory: on the same run it
|
|
33
|
+
prints the baseline the run already holds.
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Then have one read-only subagent repeat the inspection for the findings above, and wait
|
|
40
|
+
for it. It changes no files.
|
|
41
|
+
|
|
42
|
+
## Plan the change
|
|
43
|
+
|
|
44
|
+
Do not run `login`, select an Intelligence project, add an Intelligence client, mint a
|
|
45
|
+
credential, or replace the existing agent, runtime, persistence, or chat surface. A2UI can
|
|
46
|
+
be added to an OSS runtime.
|
|
47
|
+
|
|
48
|
+
Fetch the current official A2UI guide before forming the plan:
|
|
49
|
+
https://docs.copilotkit.ai/generative-ui/a2ui.md
|
|
50
|
+
Fetch it a second way if the first fetch fails. Use only APIs that the fetched guide and the
|
|
51
|
+
installed package versions support.
|
|
52
|
+
|
|
53
|
+
Show a concise plan that names the existing runtime/provider files, the smallest A2UI
|
|
54
|
+
catalog or runtime wiring required, the test command, and a browser proof request that
|
|
55
|
+
renders a compact visible surface. Ask for approval as its own question.
|
|
56
|
+
|
|
57
|
+
The plan must list every protected path it needs to change under `Authorization requested`,
|
|
58
|
+
with one sentence explaining why. Write `None` when it needs none. Authorization covers
|
|
59
|
+
changing a protected path, not removing it, so the plan must not delete, move, or rename
|
|
60
|
+
one.
|
|
61
|
+
|
|
62
|
+
After approval, record each approved path before implementation:
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If an approved path changed after capture and no implementation step has run, add
|
|
69
|
+
`--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
|
|
70
|
+
authorize a path the approved plan did not list.
|
|
71
|
+
|
|
72
|
+
Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/a2ui/implement`.
|
|
@@ -27,7 +27,7 @@ still go on the record. Name the file and why the fix needs it, then end your tu
|
|
|
27
27
|
for the developer's answer. If they allow it, record their answer before any edit:
|
|
28
28
|
|
|
29
29
|
```text
|
|
30
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
30
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Continue only when the result starts with `Status: passed`. Run the audit again, take the
|
|
@@ -40,11 +40,11 @@ Report the outcome of each attempt as it ends, before any repair. The command co
|
|
|
40
40
|
attempts and the repairs:
|
|
41
41
|
|
|
42
42
|
```text
|
|
43
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
43
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
Use `passed` only for a proved A2UI surface, `failed` for an attempted proof that failed,
|
|
47
|
-
and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.
|
|
47
|
+
and `skipped` when the proof could not run. Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit`.
|
|
48
48
|
Continue only when it starts with `Status: passed`.
|
|
49
49
|
|
|
50
50
|
If the audit fails, never repair, reset, or revert a protected path. Compare each named path
|
|
@@ -59,9 +59,9 @@ the path and the change the audit reports. Run the audit again after each accept
|
|
|
59
59
|
If the audit still fails, or starts with `Status: blocked`, route out and stop:
|
|
60
60
|
|
|
61
61
|
```text
|
|
62
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
62
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
When the audit passes, run
|
|
66
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
66
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/complete` with the actual browser-proof
|
|
67
67
|
outcome.
|
|
@@ -21,13 +21,13 @@ carry on. Keep a read-only assignment read-only. If no subagent works at all, re
|
|
|
21
21
|
once:
|
|
22
22
|
|
|
23
23
|
```text
|
|
24
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
24
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase delegation-unavailable
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Before you end your turn to wait for the developer, report the pause:
|
|
28
28
|
|
|
29
29
|
```text
|
|
30
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
30
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
|
|
@@ -37,7 +37,7 @@ If you stop this run, send one short report before you stop. The friction comman
|
|
|
37
37
|
the telemetry setting the developer already chose, so it needs no separate question.
|
|
38
38
|
|
|
39
39
|
```text
|
|
40
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
40
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard friction --phase stop --category <slug> --message "<sentences>"
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
`--message` takes one or two sentences: the step you stopped at and what stopped it.
|
|
@@ -51,7 +51,7 @@ one scoped fix, and sends the report itself when no fix is approved.
|
|
|
51
51
|
Before any subagent or project process runs, capture the developer's existing work:
|
|
52
52
|
|
|
53
53
|
```text
|
|
54
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
54
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
Keep the exact protected path list it prints and give that list to every subagent. No
|
|
@@ -66,48 +66,27 @@ development/test commands. It must return paths and secret-safe presence checks
|
|
|
66
66
|
|
|
67
67
|
Require an existing frontend, agent, and CopilotKit round trip. Start only project-owned
|
|
68
68
|
processes when needed, inspect `/info`, and run
|
|
69
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
69
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 verify --expect-runtime oss --round-trip --agent <agent-id> --json`.
|
|
70
70
|
Also drive one existing request through the frontend when browser control is available.
|
|
71
71
|
|
|
72
72
|
Wait for the inspection subagent to finish. Then report that the inspection came back:
|
|
73
73
|
|
|
74
74
|
```text
|
|
75
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
75
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase research-returned
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
If the inspection did not prove the baseline this intent extends, stop here without
|
|
79
79
|
changing files:
|
|
80
80
|
|
|
81
81
|
```text
|
|
82
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
82
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
credential, or replace the existing agent, runtime, persistence, or chat surface. A2UI can
|
|
87
|
-
be added to an OSS runtime.
|
|
88
|
-
|
|
89
|
-
Fetch the current official A2UI guide before forming the plan:
|
|
90
|
-
https://docs.copilotkit.ai/generative-ui/a2ui.md
|
|
91
|
-
Fetch it a second way if the first fetch fails. Use only APIs that the fetched guide and the
|
|
92
|
-
installed package versions support.
|
|
93
|
-
|
|
94
|
-
Show a concise plan that names the existing runtime/provider files, the smallest A2UI
|
|
95
|
-
catalog or runtime wiring required, the test command, and a browser proof request that
|
|
96
|
-
renders a compact visible surface. Ask for plan approval as its own question.
|
|
97
|
-
|
|
98
|
-
The plan must list every protected path it needs to change under `Authorization requested`,
|
|
99
|
-
with one sentence explaining why. Write `None` when it needs none. Authorization covers
|
|
100
|
-
changing a protected path, not removing it, so the plan must not delete, move, or rename
|
|
101
|
-
one.
|
|
102
|
-
|
|
103
|
-
After approval, record each approved path before implementation:
|
|
85
|
+
When the inspection proved what this intent needs, read the next prompt now, in this turn:
|
|
104
86
|
|
|
105
87
|
```text
|
|
106
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
88
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/a2ui/plan
|
|
107
89
|
```
|
|
108
90
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
authorize a path the approved plan did not list.
|
|
112
|
-
|
|
113
|
-
Then run `npx --prefer-offline --yes copilotkit@4.22.0 onboard read feature/a2ui/implement`.
|
|
91
|
+
That prompt holds the plan, the developer's approval, and the paths the plan changes.
|
|
92
|
+
Do not write the plan or change project files in this prompt.
|
|
@@ -19,7 +19,7 @@ On Teams, skip Slack-only tools and the Slack e2e harness. Do not add a CopilotK
|
|
|
19
19
|
web app to make this run look complete. Do not replace the existing agent.
|
|
20
20
|
|
|
21
21
|
If repository evidence does not prove an existing valid Intelligence selection, sign in
|
|
22
|
-
yourself with `npx --prefer-offline --yes copilotkit@4.
|
|
22
|
+
yourself with `npx --prefer-offline --yes copilotkit@4.23.1 login --json`: the same single streaming
|
|
23
23
|
session generic onboarding uses. Read its JSON Lines while the process runs. The CLI opens
|
|
24
24
|
the page itself when it can: with `"browser_opened": false` in `action_required`, show the
|
|
25
25
|
developer the clickable URL and ask them to finish sign-in there. If the record carries
|
|
@@ -75,7 +75,7 @@ starter to satisfy this rule, and do not report the page that shows it.
|
|
|
75
75
|
Before you spawn the implementation subagent, take the authorized list from the CLI:
|
|
76
76
|
|
|
77
77
|
```text
|
|
78
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
78
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
From its result, copy the paths under `Authorized to modify:`. A passed or failed audit with
|
|
@@ -94,7 +94,7 @@ still go on the record. Name the file and why the work needs it, then end your t
|
|
|
94
94
|
for the developer's answer. If they allow it, record their answer before any edit:
|
|
95
95
|
|
|
96
96
|
```text
|
|
97
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
97
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Continue only when the result starts with `Status: passed`. Run the audit again, take the
|
|
@@ -106,7 +106,7 @@ feature stop route below.
|
|
|
106
106
|
After validation and each repair, run:
|
|
107
107
|
|
|
108
108
|
```text
|
|
109
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
109
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard audit
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
Continue only when it starts with `Status: passed`. A path under `Authorized to modify:` is
|
|
@@ -117,7 +117,7 @@ with the implementation subagent's `Files changed` section. If that section does
|
|
|
117
117
|
the path, accept the developer's external change:
|
|
118
118
|
|
|
119
119
|
```text
|
|
120
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
120
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --accept-external --path <path>
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
For an env file where the developer placed a requested credential, use
|
|
@@ -130,17 +130,17 @@ Run the audit again after each accepted change. If it still fails, or starts
|
|
|
130
130
|
with `Status: blocked`, route out and stop:
|
|
131
131
|
|
|
132
132
|
```text
|
|
133
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
133
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
## Values this run writes, and the one credential the developer supplies
|
|
137
137
|
|
|
138
|
-
Never ask the developer for `
|
|
139
|
-
holds both, and writing them is your work, not theirs.
|
|
138
|
+
Never ask the developer for `INTELLIGENCE_CHANNEL_NAME` or `CPK_INTELLIGENCE_API_KEY`. This
|
|
139
|
+
run already holds both, and writing them is your work, not theirs.
|
|
140
140
|
|
|
141
|
-
`
|
|
142
|
-
records the same name. `CPK_INTELLIGENCE_API_KEY` is the project
|
|
143
|
-
wrote.
|
|
141
|
+
`INTELLIGENCE_CHANNEL_NAME` is the Channel name `channels add` declared.
|
|
142
|
+
`.copilotkit/channels.json` records the same name. `CPK_INTELLIGENCE_API_KEY` is the project
|
|
143
|
+
key `project select` wrote. These are the names the Channel host reads.
|
|
144
144
|
|
|
145
145
|
Write both into the environment file the application loads, which is the `.env` of the app
|
|
146
146
|
or runtime directory that reads it. Read the project to find that directory instead of
|
|
@@ -148,11 +148,18 @@ defaulting to the repository root, and keep both values in that one file. Carry
|
|
|
148
148
|
key over only when that file does not already set it, and move the line without displaying
|
|
149
149
|
what it holds.
|
|
150
150
|
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
If the folder was empty and this run cloned OpenTag, OpenTag reads the project key as
|
|
152
|
+
`INTELLIGENCE_API_KEY`, not `CPK_INTELLIGENCE_API_KEY`. In that case, write the key under
|
|
153
|
+
both `CPK_INTELLIGENCE_API_KEY` and `INTELLIGENCE_API_KEY`, with the same value. OpenTag also
|
|
154
|
+
requires `AGENT_URL`. Take its line from OpenTag's `.env.example`, which points at the
|
|
155
|
+
bundled agent. The `open-tag` name in OpenTag's `.env.example` is a placeholder. Replace it
|
|
156
|
+
with the Channel name this run declared.
|
|
153
157
|
|
|
154
|
-
|
|
155
|
-
|
|
158
|
+
Check both by name. Never read, print, echo, or log either value, and never put one
|
|
159
|
+
in a report, a command line, or a commit.
|
|
160
|
+
|
|
161
|
+
If that file already sets `INTELLIGENCE_CHANNEL_NAME` to a different Channel, change
|
|
162
|
+
nothing. Ask the developer which Channel this project serves and wait for their answer.
|
|
156
163
|
|
|
157
164
|
The only credential the developer supplies is their model provider key, such as
|
|
158
165
|
`OPENAI_API_KEY`, and the run asks for it once as part of plan approval. Never ask for it
|
|
@@ -167,4 +174,4 @@ If validation cannot pass, or this run needs a prerequisite the app does not hav
|
|
|
167
174
|
the feature stop route above without further changes.
|
|
168
175
|
|
|
169
176
|
Otherwise run
|
|
170
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
177
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/channels/proof`.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Plan the managed Channel with the developer
|
|
2
|
+
|
|
3
|
+
The inspection in `feature/channels/start` came back, and the tools this run needs are
|
|
4
|
+
present. This prompt turns it into a plan, asks the developer to approve it, and records
|
|
5
|
+
the protected paths the plan changes. Do not change project files in this prompt.
|
|
6
|
+
|
|
7
|
+
## Waits and stops
|
|
8
|
+
|
|
9
|
+
The rules in `feature/channels/start` still hold here.
|
|
10
|
+
|
|
11
|
+
The approval is a wait for the developer. Before you end your turn to wait, report the
|
|
12
|
+
pause:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard checkpoint --phase awaiting-developer
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
A turn that ends while the run waits is a pause, not a stop, even when your harness ends it.
|
|
19
|
+
When the answer arrives, continue from the step that paused. If the developer asks for a
|
|
20
|
+
change, show the changed plan and ask again.
|
|
21
|
+
|
|
22
|
+
## What this prompt takes from the start
|
|
23
|
+
|
|
24
|
+
Keep these from `feature/channels/start`, and give them to every subagent:
|
|
25
|
+
|
|
26
|
+
- the protected path list that `onboard protect` printed,
|
|
27
|
+
- the paths and findings the inspection returned: the target directory, Git state, package
|
|
28
|
+
manager, Node and Python versions, `uv`, existing agent code, CopilotKit runtime,
|
|
29
|
+
Channel and Intelligence configuration (presence only), and test and dev commands,
|
|
30
|
+
- the Slack or Teams answer,
|
|
31
|
+
- whether the folder was empty,
|
|
32
|
+
- the docs page or request that named the Channel, and
|
|
33
|
+
- the result of the Node 22, `uv`, and Python check.
|
|
34
|
+
|
|
35
|
+
If you do not hold them, as after `onboard resume` in a new session, get them back before
|
|
36
|
+
you plan. Run `onboard protect` again from the target app directory: on the same run it
|
|
37
|
+
prints the baseline the run already holds.
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Then have one read-only subagent repeat the inspection for the findings above, and wait
|
|
44
|
+
for it. It changes no files. If the Slack or Teams answer is lost, ask it once as its own
|
|
45
|
+
question. That answer stands in for a lost docs page or request. The repeated inspection
|
|
46
|
+
says again whether the folder is empty and which Node, Python, and `uv` versions are
|
|
47
|
+
present.
|
|
48
|
+
|
|
49
|
+
## Plan the change
|
|
50
|
+
|
|
51
|
+
Do not run login, select Intelligence, or create a credential until the developer
|
|
52
|
+
approves the plan. Fetch the connect guide for the chosen provider before planning:
|
|
53
|
+
https://docs.copilotkit.ai/slack/connect.md for Slack,
|
|
54
|
+
https://docs.copilotkit.ai/teams/connect.md for Teams.
|
|
55
|
+
Retry it a second way if needed.
|
|
56
|
+
|
|
57
|
+
For an empty folder, OpenTag runs its own agent on `OPENAI_API_KEY`. State that before the
|
|
58
|
+
plan. Check the target `.env` and the environment for that name. Report presence only, and
|
|
59
|
+
never read, print, or store the value. If it is absent, ask the developer to place it as
|
|
60
|
+
part of the plan approval, not at backend start. Say that the key is never displayed and
|
|
61
|
+
goes only into the project `.env`. Asking for a key the developer already owns is not
|
|
62
|
+
creating a credential.
|
|
63
|
+
|
|
64
|
+
Show a small plan. For an empty folder, clone OpenTag and do not rewrite it. For an
|
|
65
|
+
existing agent or app, keep that code and wire a managed Channel. Slack or Teams is
|
|
66
|
+
only `channels add <name> --adapter slack|teams`, with the project's directory or package
|
|
67
|
+
name as `<name>`. On Teams, skip Slack-only tools and the Slack e2e harness. Name focused
|
|
68
|
+
tests and a real mention proof on the chosen provider. Ask for approval as its own question.
|
|
69
|
+
|
|
70
|
+
The plan must list every protected path it needs to change under `Authorization requested`,
|
|
71
|
+
with one sentence explaining why. Write `None` when it needs none. Authorization covers
|
|
72
|
+
changing a protected path, not removing it, so the plan must not delete, move, or rename
|
|
73
|
+
one.
|
|
74
|
+
|
|
75
|
+
After approval, record each approved path before implementation:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --path <path> --reason "<the plan's sentence>"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
If an approved path changed after capture and no implementation step has run, add
|
|
82
|
+
`--with-prior-change`. Continue only when every result starts with `Status: passed`. Do not
|
|
83
|
+
authorize a path the approved plan did not list.
|
|
84
|
+
|
|
85
|
+
Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/channels/implement`.
|
|
@@ -31,7 +31,7 @@ still go on the record. Name the file and why the fix needs it, then end your tu
|
|
|
31
31
|
for the developer's answer. If they allow it, record their answer before any edit:
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
34
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard protect --authorize --unplanned --path <path> --reason "<what the developer said>"
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Continue only when the result starts with `Status: passed`. Run the audit again, take the
|
|
@@ -44,11 +44,11 @@ Report the outcome of each attempt as it ends, before any repair. The command co
|
|
|
44
44
|
attempts and the repairs:
|
|
45
45
|
|
|
46
46
|
```text
|
|
47
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
47
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard proof --step round-trip --outcome <passed|failed|skipped>
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
Use `passed` only for a proved mention reply, `failed` for an attempted proof that
|
|
51
|
-
failed, and `skipped` when the proof did not run. Then run `npx --prefer-offline --yes copilotkit@4.
|
|
51
|
+
failed, and `skipped` when the proof did not run. Then run `npx --prefer-offline --yes copilotkit@4.23.1 onboard audit`.
|
|
52
52
|
Continue only when it starts with `Status: passed`.
|
|
53
53
|
|
|
54
54
|
If the audit fails, never repair, reset, or revert a protected path. Compare each named path
|
|
@@ -63,11 +63,11 @@ the path and the change the audit reports. Run the audit again after each accept
|
|
|
63
63
|
If the audit still fails, or starts with `Status: blocked`, route out and stop:
|
|
64
64
|
|
|
65
65
|
```text
|
|
66
|
-
npx --prefer-offline --yes copilotkit@4.
|
|
66
|
+
npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/stop
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
When the audit passes and the round trip you reported above was `passed`, run
|
|
70
|
-
`npx --prefer-offline --yes copilotkit@4.
|
|
70
|
+
`npx --prefer-offline --yes copilotkit@4.23.1 onboard read feature/complete` and complete with
|
|
71
71
|
`--visual-check channels-proof-passed`. The recorded mention and reply are this run's
|
|
72
72
|
proof, so no web app check is missing. Use `--visual-check performed` only when a
|
|
73
73
|
browser drove Slack or Teams web and proved the mention reply. Do not use
|