@chllming/wave-orchestration 0.9.0 → 0.9.2
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/CHANGELOG.md +57 -0
- package/LICENSE.md +21 -0
- package/README.md +133 -20
- package/docs/README.md +12 -4
- package/docs/agents/wave-security-role.md +1 -0
- package/docs/architecture/README.md +1498 -0
- package/docs/concepts/operating-modes.md +2 -2
- package/docs/guides/author-and-run-waves.md +14 -4
- package/docs/guides/planner.md +2 -2
- package/docs/guides/{recommendations-0.9.0.md → recommendations-0.9.2.md} +8 -7
- package/docs/guides/sandboxed-environments.md +158 -0
- package/docs/guides/terminal-surfaces.md +14 -12
- package/docs/plans/current-state.md +11 -3
- package/docs/plans/end-state-architecture.md +3 -1
- package/docs/plans/examples/wave-example-design-handoff.md +1 -1
- package/docs/plans/examples/wave-example-live-proof.md +1 -1
- package/docs/plans/migration.md +70 -19
- package/docs/plans/sandbox-end-state-architecture.md +153 -0
- package/docs/reference/cli-reference.md +71 -7
- package/docs/reference/coordination-and-closure.md +18 -1
- package/docs/reference/corridor.md +225 -0
- package/docs/reference/github-packages-setup.md +1 -1
- package/docs/reference/migration-0.2-to-0.5.md +9 -7
- package/docs/reference/npmjs-token-publishing.md +53 -0
- package/docs/reference/npmjs-trusted-publishing.md +4 -50
- package/docs/reference/package-publishing-flow.md +272 -0
- package/docs/reference/runtime-config/README.md +61 -3
- package/docs/reference/sample-waves.md +5 -5
- package/docs/reference/skills.md +1 -1
- package/docs/reference/wave-control.md +358 -27
- package/docs/roadmap.md +39 -204
- package/package.json +1 -1
- package/releases/manifest.json +38 -0
- package/scripts/wave-cli-bootstrap.mjs +52 -1
- package/scripts/wave-orchestrator/agent-process-runner.mjs +344 -0
- package/scripts/wave-orchestrator/agent-state.mjs +0 -1
- package/scripts/wave-orchestrator/artifact-schemas.mjs +7 -0
- package/scripts/wave-orchestrator/autonomous.mjs +47 -14
- package/scripts/wave-orchestrator/closure-engine.mjs +138 -17
- package/scripts/wave-orchestrator/config.mjs +199 -3
- package/scripts/wave-orchestrator/context7.mjs +231 -29
- package/scripts/wave-orchestrator/control-cli.mjs +42 -5
- package/scripts/wave-orchestrator/coordination.mjs +14 -0
- package/scripts/wave-orchestrator/corridor.mjs +363 -0
- package/scripts/wave-orchestrator/dashboard-renderer.mjs +115 -43
- package/scripts/wave-orchestrator/derived-state-engine.mjs +44 -4
- package/scripts/wave-orchestrator/gate-engine.mjs +126 -38
- package/scripts/wave-orchestrator/install.mjs +46 -0
- package/scripts/wave-orchestrator/launcher-progress.mjs +91 -0
- package/scripts/wave-orchestrator/launcher-runtime.mjs +290 -75
- package/scripts/wave-orchestrator/launcher.mjs +201 -53
- package/scripts/wave-orchestrator/ledger.mjs +7 -2
- package/scripts/wave-orchestrator/planner.mjs +1 -0
- package/scripts/wave-orchestrator/projection-writer.mjs +36 -1
- package/scripts/wave-orchestrator/provider-runtime.mjs +104 -0
- package/scripts/wave-orchestrator/reducer-snapshot.mjs +6 -0
- package/scripts/wave-orchestrator/retry-control.mjs +3 -3
- package/scripts/wave-orchestrator/retry-engine.mjs +93 -6
- package/scripts/wave-orchestrator/role-helpers.mjs +30 -0
- package/scripts/wave-orchestrator/session-supervisor.mjs +94 -85
- package/scripts/wave-orchestrator/shared.mjs +1 -0
- package/scripts/wave-orchestrator/supervisor-cli.mjs +1306 -0
- package/scripts/wave-orchestrator/terminals.mjs +12 -32
- package/scripts/wave-orchestrator/tmux-adapter.mjs +300 -0
- package/scripts/wave-orchestrator/traces.mjs +25 -0
- package/scripts/wave-orchestrator/wave-control-client.mjs +14 -1
- package/scripts/wave-orchestrator/wave-files.mjs +38 -5
- package/scripts/wave.mjs +13 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# npmjs Token Publishing
|
|
2
|
+
|
|
3
|
+
This repo now includes a dedicated npmjs publish workflow at [publish-npm.yml](../../.github/workflows/publish-npm.yml).
|
|
4
|
+
|
|
5
|
+
The current `0.9.2` release procedure publishes through a repository Actions secret named `NPM_TOKEN`.
|
|
6
|
+
|
|
7
|
+
## What This Repo Already Does
|
|
8
|
+
|
|
9
|
+
- `package.json` no longer hardcodes GitHub Packages as the publish registry.
|
|
10
|
+
- `publish-npm.yml` publishes tagged releases to `https://registry.npmjs.org`.
|
|
11
|
+
- `publish-package.yml` still publishes to GitHub Packages explicitly, so both registries can coexist.
|
|
12
|
+
- `publish-npm.yml` expects `NPM_TOKEN` in GitHub Actions secrets.
|
|
13
|
+
- The public install path is already npmjs; GitHub Packages remains the authenticated fallback path.
|
|
14
|
+
|
|
15
|
+
## One-Time npm Setup
|
|
16
|
+
|
|
17
|
+
1. Create an npm granular access token with:
|
|
18
|
+
- package or scope access for `@chllming/wave-orchestration`
|
|
19
|
+
- `Read and write` permission
|
|
20
|
+
- `Bypass 2FA` enabled
|
|
21
|
+
2. In the GitHub repo `chllming/agent-wave-orchestrator`, add that token as an Actions secret named `NPM_TOKEN`.
|
|
22
|
+
3. Rotate or revoke the token when no longer needed.
|
|
23
|
+
|
|
24
|
+
## GitHub Workflow Behavior
|
|
25
|
+
|
|
26
|
+
The npmjs workflow:
|
|
27
|
+
|
|
28
|
+
- runs on GitHub-hosted runners
|
|
29
|
+
- requires `contents: read`
|
|
30
|
+
- installs dependencies with `pnpm install --frozen-lockfile`
|
|
31
|
+
- runs `pnpm test`
|
|
32
|
+
- publishes with `pnpm publish --access public --no-git-checks`
|
|
33
|
+
- authenticates with `NODE_AUTH_TOKEN=${{ secrets.NPM_TOKEN }}`
|
|
34
|
+
|
|
35
|
+
## Security Follow-Up
|
|
36
|
+
|
|
37
|
+
After a successful npm publish:
|
|
38
|
+
|
|
39
|
+
1. Keep the token scoped only to this package or scope.
|
|
40
|
+
2. Rotate the token periodically.
|
|
41
|
+
3. Revoke emergency or temporary tokens once they are no longer needed.
|
|
42
|
+
|
|
43
|
+
If this repo later needs private npm dependencies during CI, consider a separate read-only install token rather than reusing the publish token.
|
|
44
|
+
|
|
45
|
+
## Release Checklist
|
|
46
|
+
|
|
47
|
+
1. Confirm [publish-npm.yml](../../.github/workflows/publish-npm.yml) is on the default branch.
|
|
48
|
+
2. Confirm `NPM_TOKEN` exists in the GitHub repo secrets.
|
|
49
|
+
3. Confirm the package version has been bumped and committed.
|
|
50
|
+
4. Confirm `README.md`, `CHANGELOG.md`, `releases/manifest.json`, and `docs/plans/migration.md` all describe the same release surface.
|
|
51
|
+
5. Push the release commit and release tag, for example `v0.9.2`.
|
|
52
|
+
6. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
|
|
53
|
+
7. Verify the npmjs publish completes successfully for the tagged source.
|
|
@@ -1,53 +1,7 @@
|
|
|
1
|
-
# npmjs Publishing
|
|
1
|
+
# npmjs Trusted Publishing
|
|
2
2
|
|
|
3
|
-
This repo
|
|
3
|
+
This repo does not currently use npm trusted publishing or OIDC-based publish credentials.
|
|
4
4
|
|
|
5
|
-
The
|
|
5
|
+
The live npmjs workflow is token-based and documented in [npmjs-token-publishing.md](./npmjs-token-publishing.md).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
- `package.json` no longer hardcodes GitHub Packages as the publish registry.
|
|
10
|
-
- `publish-npm.yml` publishes tagged releases to `https://registry.npmjs.org`.
|
|
11
|
-
- `publish-package.yml` still publishes to GitHub Packages explicitly, so both registries can coexist.
|
|
12
|
-
- `publish-npm.yml` expects `NPM_TOKEN` in GitHub Actions secrets.
|
|
13
|
-
- The public install path is already npmjs; GitHub Packages remains the authenticated fallback path.
|
|
14
|
-
|
|
15
|
-
## One-Time npm Setup
|
|
16
|
-
|
|
17
|
-
1. Create an npm granular access token with:
|
|
18
|
-
- package or scope access for `@chllming/wave-orchestration`
|
|
19
|
-
- `Read and write` permission
|
|
20
|
-
- `Bypass 2FA` enabled
|
|
21
|
-
2. In the GitHub repo `chllming/agent-wave-orchestrator`, add that token as an Actions secret named `NPM_TOKEN`.
|
|
22
|
-
3. Rotate or revoke the token when no longer needed.
|
|
23
|
-
|
|
24
|
-
## GitHub Workflow Behavior
|
|
25
|
-
|
|
26
|
-
The npmjs workflow:
|
|
27
|
-
|
|
28
|
-
- runs on GitHub-hosted runners
|
|
29
|
-
- requires `contents: read`
|
|
30
|
-
- installs dependencies with `pnpm install --frozen-lockfile`
|
|
31
|
-
- runs `pnpm test`
|
|
32
|
-
- publishes with `pnpm publish --access public --no-git-checks`
|
|
33
|
-
- authenticates with `NODE_AUTH_TOKEN=${{ secrets.NPM_TOKEN }}`
|
|
34
|
-
|
|
35
|
-
## Security Follow-Up
|
|
36
|
-
|
|
37
|
-
After a successful npm publish:
|
|
38
|
-
|
|
39
|
-
1. Keep the token scoped only to this package or scope.
|
|
40
|
-
2. Rotate the token periodically.
|
|
41
|
-
3. Revoke emergency or temporary tokens once they are no longer needed.
|
|
42
|
-
|
|
43
|
-
If this repo later needs private npm dependencies during CI, consider a separate read-only install token rather than reusing the publish token.
|
|
44
|
-
|
|
45
|
-
## Release Checklist
|
|
46
|
-
|
|
47
|
-
1. Confirm [publish-npm.yml](../../.github/workflows/publish-npm.yml) is on the default branch.
|
|
48
|
-
2. Confirm `NPM_TOKEN` exists in the GitHub repo secrets.
|
|
49
|
-
3. Confirm the package version has been bumped and committed.
|
|
50
|
-
4. Confirm `README.md`, `CHANGELOG.md`, `releases/manifest.json`, and `docs/plans/migration.md` all describe the same release surface.
|
|
51
|
-
5. Push the release commit and release tag, for example `v0.9.0`.
|
|
52
|
-
6. Verify both `publish-npm.yml` and `publish-package.yml` start from the tag push.
|
|
53
|
-
7. Verify the npmjs publish completes successfully for the tagged source.
|
|
7
|
+
If this repo later migrates to trusted publishing, replace this compatibility stub with the real OIDC procedure in the same change as the workflow update.
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# Package Publishing Flow
|
|
2
|
+
|
|
3
|
+
This document describes how this repo publishes `@chllming/wave-orchestration` end to end, including the scripts, workflows, release artifacts, and verification steps involved.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The package publish flow has two layers:
|
|
8
|
+
|
|
9
|
+
1. repo-owned release preparation
|
|
10
|
+
2. tag-triggered registry publishing
|
|
11
|
+
|
|
12
|
+
Release preparation happens in the repository itself:
|
|
13
|
+
|
|
14
|
+
- bump `package.json`
|
|
15
|
+
- update release-surface docs and fixtures
|
|
16
|
+
- validate the repo
|
|
17
|
+
- merge the release changes to `main`
|
|
18
|
+
- push a version tag such as `v0.9.2`
|
|
19
|
+
|
|
20
|
+
Registry publishing happens in GitHub Actions after the tag push:
|
|
21
|
+
|
|
22
|
+
- [publish-npm.yml](../../.github/workflows/publish-npm.yml) publishes to npmjs
|
|
23
|
+
- [publish-package.yml](../../.github/workflows/publish-package.yml) publishes to GitHub Packages
|
|
24
|
+
- [npmjs-token-publishing.md](./npmjs-token-publishing.md) documents the npm token setup used by `publish-npm.yml`
|
|
25
|
+
|
|
26
|
+
Both workflows run on tag pushes matching `v*`, and each workflow now fails fast unless `github.ref_name` exactly matches `v${package.json.version}`.
|
|
27
|
+
|
|
28
|
+
## Release Artifacts That Move Together
|
|
29
|
+
|
|
30
|
+
These files are part of the release surface and should be updated in the same change when the package version changes:
|
|
31
|
+
|
|
32
|
+
- `package.json`
|
|
33
|
+
- `README.md`
|
|
34
|
+
- `CHANGELOG.md`
|
|
35
|
+
- `docs/README.md`
|
|
36
|
+
- `docs/plans/current-state.md`
|
|
37
|
+
- `docs/plans/migration.md`
|
|
38
|
+
- `docs/guides/sandboxed-environments.md`
|
|
39
|
+
- `docs/reference/coordination-and-closure.md`
|
|
40
|
+
- `docs/reference/runtime-config/README.md`
|
|
41
|
+
- `releases/manifest.json`
|
|
42
|
+
- `.wave/install-state.json`
|
|
43
|
+
- tracked `.wave/upgrade-history/*`
|
|
44
|
+
- versioned docs such as `docs/guides/recommendations-<version>.md`
|
|
45
|
+
- `AGENTS.md`
|
|
46
|
+
|
|
47
|
+
This repo treats those files as part of the package-facing release contract, not just internal documentation.
|
|
48
|
+
|
|
49
|
+
## Scripts And Commands Involved
|
|
50
|
+
|
|
51
|
+
### Main CLI entrypoint
|
|
52
|
+
|
|
53
|
+
- `scripts/wave.mjs`
|
|
54
|
+
Routes install and lifecycle commands into `scripts/wave-orchestrator/install.mjs`.
|
|
55
|
+
|
|
56
|
+
The lifecycle commands relevant to publishing are:
|
|
57
|
+
|
|
58
|
+
- `wave doctor`
|
|
59
|
+
- `wave changelog`
|
|
60
|
+
- `wave upgrade`
|
|
61
|
+
- `wave self-update`
|
|
62
|
+
|
|
63
|
+
### Install and release-state module
|
|
64
|
+
|
|
65
|
+
- `scripts/wave-orchestrator/install.mjs`
|
|
66
|
+
|
|
67
|
+
This module owns the local package-lifecycle surfaces:
|
|
68
|
+
|
|
69
|
+
- `wave init`
|
|
70
|
+
Seeds or adopts starter workspace files.
|
|
71
|
+
- `wave doctor`
|
|
72
|
+
Validates that the current workspace matches the installed package expectations.
|
|
73
|
+
- `wave changelog`
|
|
74
|
+
Reads `releases/manifest.json` and prints release notes.
|
|
75
|
+
- `wave upgrade`
|
|
76
|
+
Writes `.wave/install-state.json` and a markdown/json report into `.wave/upgrade-history/`.
|
|
77
|
+
- `wave self-update`
|
|
78
|
+
Updates the dependency in the target workspace, prints changelog deltas, and then runs `wave upgrade`.
|
|
79
|
+
|
|
80
|
+
### Release-validation commands
|
|
81
|
+
|
|
82
|
+
These are the normal validation commands before tagging:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pnpm test
|
|
86
|
+
pnpm test -- test/wave-orchestrator/release-surface.test.ts
|
|
87
|
+
node scripts/wave.mjs doctor --json
|
|
88
|
+
node scripts/wave.mjs launch --lane main --dry-run --no-dashboard
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Registry verification commands
|
|
92
|
+
|
|
93
|
+
After publish:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm view @chllming/wave-orchestration version dist-tags --json
|
|
97
|
+
gh run list --limit 10
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## End-to-End Flow
|
|
101
|
+
|
|
102
|
+
### 1. Prepare the release change
|
|
103
|
+
|
|
104
|
+
Update the release artifacts together, then validate locally.
|
|
105
|
+
|
|
106
|
+
Typical local flow:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
pnpm test -- test/wave-orchestrator/release-surface.test.ts
|
|
110
|
+
node scripts/wave.mjs doctor --json
|
|
111
|
+
node scripts/wave.mjs launch --lane main --dry-run --no-dashboard
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
If the version changed, also refresh the tracked workspace lifecycle state:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pnpm exec wave upgrade
|
|
118
|
+
pnpm exec wave changelog --since-installed
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
In this source repo, `.wave/install-state.json` and tracked `.wave/upgrade-history/` records are intentionally part of the release surface.
|
|
122
|
+
|
|
123
|
+
### 2. Merge the release change to `main`
|
|
124
|
+
|
|
125
|
+
This repository protects `main`, so release changes must land through a pull request rather than a direct push.
|
|
126
|
+
|
|
127
|
+
Typical git flow:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
git checkout -b release/0.9.2
|
|
131
|
+
git push -u origin release/0.9.2
|
|
132
|
+
gh pr create --base main --head release/0.9.2
|
|
133
|
+
gh pr merge <pr-number> --merge --delete-branch
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 3. Push the release tag
|
|
137
|
+
|
|
138
|
+
After the release commit is on `main`, push the version tag:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
git tag v0.9.2
|
|
142
|
+
git push origin v0.9.2
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
That tag push is the event that starts both publishing workflows.
|
|
146
|
+
|
|
147
|
+
The tag must match the checked-in package version exactly. Example: if `package.json.version` is `0.9.2`, the pushed tag must be `v0.9.2`.
|
|
148
|
+
|
|
149
|
+
## GitHub Actions Workflows
|
|
150
|
+
|
|
151
|
+
### npmjs publish
|
|
152
|
+
|
|
153
|
+
- workflow: [publish-npm.yml](../../.github/workflows/publish-npm.yml)
|
|
154
|
+
- trigger: push tags matching `v*`
|
|
155
|
+
- runtime: Node 22
|
|
156
|
+
- auth secret: `NPM_TOKEN`
|
|
157
|
+
- publish command:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
pnpm publish --access public --no-git-checks
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The workflow does:
|
|
164
|
+
|
|
165
|
+
1. `actions/checkout`
|
|
166
|
+
2. `pnpm/action-setup`
|
|
167
|
+
3. `actions/setup-node` with `registry-url: https://registry.npmjs.org`
|
|
168
|
+
4. verify `github.ref_name === "v" + package.json.version`
|
|
169
|
+
5. `pnpm install --frozen-lockfile`
|
|
170
|
+
6. `pnpm test`
|
|
171
|
+
7. `pnpm publish --access public --no-git-checks`
|
|
172
|
+
|
|
173
|
+
### GitHub Packages publish
|
|
174
|
+
|
|
175
|
+
- workflow: [publish-package.yml](../../.github/workflows/publish-package.yml)
|
|
176
|
+
- trigger: push tags matching `v*`
|
|
177
|
+
- runtime: Node 22
|
|
178
|
+
- auth token: `GITHUB_TOKEN`
|
|
179
|
+
- publish command:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
pnpm publish --registry=https://npm.pkg.github.com --no-git-checks
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
The workflow does:
|
|
186
|
+
|
|
187
|
+
1. `actions/checkout`
|
|
188
|
+
2. `pnpm/action-setup`
|
|
189
|
+
3. `actions/setup-node` with `registry-url: https://npm.pkg.github.com`
|
|
190
|
+
4. verify `github.ref_name === "v" + package.json.version`
|
|
191
|
+
5. `pnpm install --frozen-lockfile`
|
|
192
|
+
6. `pnpm test`
|
|
193
|
+
7. `pnpm publish --registry=https://npm.pkg.github.com --no-git-checks`
|
|
194
|
+
|
|
195
|
+
## Verification After Tag Push
|
|
196
|
+
|
|
197
|
+
Use GitHub Actions first:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
gh run list --limit 10 --json workflowName,headBranch,headSha,status,conclusion,url
|
|
201
|
+
gh run watch <run-id> --exit-status
|
|
202
|
+
gh run view <run-id> --log-failed
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Then verify the public registry:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
npm view @chllming/wave-orchestration version dist-tags --json
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Expected result after a successful publish:
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"version": "0.9.2",
|
|
216
|
+
"dist-tags": {
|
|
217
|
+
"latest": "0.9.2"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Repair Flow When Publish Fails
|
|
223
|
+
|
|
224
|
+
If a tag-triggered publish fails before the package is actually published, the fastest repair path is:
|
|
225
|
+
|
|
226
|
+
1. fix the repo issue in a new commit
|
|
227
|
+
2. move the tag to the fixed commit
|
|
228
|
+
3. force-push the tag
|
|
229
|
+
4. watch the rerun
|
|
230
|
+
|
|
231
|
+
Example:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
git tag -f v0.9.2 <fixed-commit>
|
|
235
|
+
git push origin refs/tags/v0.9.2 --force
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Use that only before the package is live on npmjs. Once npmjs has accepted a version, do not try to republish the same version; cut a new version instead.
|
|
239
|
+
|
|
240
|
+
Common failure classes:
|
|
241
|
+
|
|
242
|
+
- release-surface drift
|
|
243
|
+
A versioned doc or fixture did not move with `package.json`.
|
|
244
|
+
- workflow-environment drift
|
|
245
|
+
The CI runtime differs from the runtime that was locally validated.
|
|
246
|
+
- missing secrets
|
|
247
|
+
`NPM_TOKEN` is missing or invalid for npmjs.
|
|
248
|
+
- test assumptions on ignored files
|
|
249
|
+
CI cannot see local-only workstation files such as `.vscode/terminals.json`.
|
|
250
|
+
|
|
251
|
+
## Security And Secrets
|
|
252
|
+
|
|
253
|
+
For npmjs publishing:
|
|
254
|
+
|
|
255
|
+
- keep `NPM_TOKEN` scoped as narrowly as possible
|
|
256
|
+
- use `Read and write` only for the target package or scope
|
|
257
|
+
- rotate the token periodically
|
|
258
|
+
- revoke temporary or emergency tokens after use
|
|
259
|
+
|
|
260
|
+
GitHub Packages publishing uses the workflow `GITHUB_TOKEN`, so it does not require a separate package-publish secret.
|
|
261
|
+
|
|
262
|
+
## What This Flow Does Not Do
|
|
263
|
+
|
|
264
|
+
There is no dedicated local `release` shell script in this repo that bumps versions, tags commits, and publishes in one command.
|
|
265
|
+
|
|
266
|
+
The flow today is intentionally split:
|
|
267
|
+
|
|
268
|
+
- repo release preparation is explicit and reviewable
|
|
269
|
+
- package lifecycle state is recorded by `wave upgrade`
|
|
270
|
+
- actual registry publishing is delegated to tag-triggered GitHub Actions
|
|
271
|
+
|
|
272
|
+
That split keeps release metadata, workspace upgrade history, and package publication visible and auditable.
|
|
@@ -8,6 +8,7 @@ Use it when you need the full supported surface for:
|
|
|
8
8
|
- `defaultProject` and `projects.<projectId>`
|
|
9
9
|
- `lanes.<lane>.executors`
|
|
10
10
|
- `waveControl`
|
|
11
|
+
- `externalProviders`
|
|
11
12
|
- `executors.profiles.<profile>`
|
|
12
13
|
- per-agent `### Executor` blocks inside a wave file
|
|
13
14
|
|
|
@@ -190,7 +191,7 @@ Practical guidance:
|
|
|
190
191
|
- prefer `budget.minutes` for normal synthesis, integration, and closure work
|
|
191
192
|
- use generic `budget.turns` as a planning hint, not a hard failure trigger
|
|
192
193
|
- only set `claude.maxTurns` or `opencode.steps` when you deliberately want a hard ceiling for that runtime
|
|
193
|
-
- see [../../guides/recommendations-0.9.
|
|
194
|
+
- see [../../guides/recommendations-0.9.2.md](../../guides/recommendations-0.9.2.md) for the recommended `0.9.2` operating stance that combines advisory turn budgets with softer non-proof coordination states
|
|
194
195
|
|
|
195
196
|
## Runtime Pages
|
|
196
197
|
|
|
@@ -202,7 +203,7 @@ Practical guidance:
|
|
|
202
203
|
|
|
203
204
|
`wave.config.json` may also declare a `waveControl` block for local-first telemetry delivery.
|
|
204
205
|
|
|
205
|
-
Packaged defaults in `@chllming/wave-orchestration@0.9.
|
|
206
|
+
Packaged defaults in `@chllming/wave-orchestration@0.9.2`:
|
|
206
207
|
|
|
207
208
|
- `endpoint`: `https://wave-control.up.railway.app/api/v1`
|
|
208
209
|
- `reportMode`: `metadata-only`
|
|
@@ -219,7 +220,10 @@ Supported top-level fields:
|
|
|
219
220
|
| `endpoint` | string | `https://wave-control.up.railway.app/api/v1` | Base URL for the Railway-hosted `services/wave-control` API |
|
|
220
221
|
| `workspaceId` | string | derived from repo path | Stable workspace identity used across runs |
|
|
221
222
|
| `projectId` | string | resolved project id | Stable project identity used for cross-workspace reporting and filtering |
|
|
222
|
-
| `authTokenEnvVar` | string | `
|
|
223
|
+
| `authTokenEnvVar` | string | `WAVE_API_TOKEN` | Primary environment variable name holding the bearer token |
|
|
224
|
+
| `authTokenEnvVars` | string[] | `["WAVE_API_TOKEN", "WAVE_CONTROL_AUTH_TOKEN"]` | Ordered fallback env var list consulted when Wave resolves a bearer token for owned Wave Control routes |
|
|
225
|
+
| `credentialProviders` | string[] | `[]` | Allowlisted runtime credential leases requested from an owned Wave Control deployment before executor launch. Supported values: `openai`, `anthropic` |
|
|
226
|
+
| `credentials` | `{ id, envVar }[]` | `[]` | Arbitrary per-user credential leases requested from an owned Wave Control deployment before executor launch |
|
|
223
227
|
| `reportMode` | string | `metadata-only` | `disabled`, `metadata-only`, `metadata-plus-selected`, or `full-artifact-upload` |
|
|
224
228
|
| `uploadArtifactKinds` | string[] | selected proof/trace/benchmark kinds | Artifact classes eligible for body upload when an artifact's upload policy requests a body |
|
|
225
229
|
| `requestTimeoutMs` | integer | `5000` | Per-batch network timeout |
|
|
@@ -232,6 +236,8 @@ Supported top-level fields:
|
|
|
232
236
|
|
|
233
237
|
Lane overrides may refine the same keys under `lanes.<lane>.waveControl` or `projects.<projectId>.lanes.<lane>.waveControl`.
|
|
234
238
|
|
|
239
|
+
Wave resolves the Wave Control bearer token from `authTokenEnvVars` when that list is present. Otherwise it resolves `authTokenEnvVar` first and keeps `WAVE_CONTROL_AUTH_TOKEN` as a compatibility fallback.
|
|
240
|
+
|
|
235
241
|
One-run override:
|
|
236
242
|
|
|
237
243
|
- `wave launch --no-telemetry` disables Wave Control queueing and remote delivery for that launcher invocation without changing the repo config.
|
|
@@ -246,6 +252,8 @@ Example:
|
|
|
246
252
|
"endpoint": "https://wave-control.up.railway.app/api/v1",
|
|
247
253
|
"workspaceId": "wave-main",
|
|
248
254
|
"projectId": "app",
|
|
255
|
+
"credentialProviders": ["openai"],
|
|
256
|
+
"credentials": [{ "id": "github_pat", "envVar": "GITHUB_TOKEN" }],
|
|
249
257
|
"reportMode": "metadata-only",
|
|
250
258
|
"uploadArtifactKinds": [
|
|
251
259
|
"trace-run-metadata",
|
|
@@ -261,6 +269,56 @@ Runtime-emitted Wave Control events also attach:
|
|
|
261
269
|
- `orchestratorId` from the active launcher or resident orchestrator
|
|
262
270
|
- `runtimeVersion` from the installed Wave package metadata
|
|
263
271
|
|
|
272
|
+
## External Providers
|
|
273
|
+
|
|
274
|
+
Wave can resolve third-party auth directly in the repo runtime or through an owned Wave Control broker.
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"externalProviders": {
|
|
279
|
+
"context7": {
|
|
280
|
+
"mode": "direct",
|
|
281
|
+
"apiKeyEnvVar": "CONTEXT7_API_KEY"
|
|
282
|
+
},
|
|
283
|
+
"corridor": {
|
|
284
|
+
"enabled": false,
|
|
285
|
+
"mode": "direct",
|
|
286
|
+
"baseUrl": "https://app.corridor.dev/api",
|
|
287
|
+
"apiTokenEnvVar": "CORRIDOR_API_TOKEN",
|
|
288
|
+
"apiKeyFallbackEnvVar": "CORRIDOR_API_KEY",
|
|
289
|
+
"teamId": "team-id-for-direct-mode",
|
|
290
|
+
"projectId": "project-id-for-direct-mode",
|
|
291
|
+
"severityThreshold": "critical",
|
|
292
|
+
"findingStates": ["open", "potential"],
|
|
293
|
+
"requiredAtClosure": true
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
- `direct`: use repo/runtime env vars directly
|
|
300
|
+
- `broker`: use the owned Wave Control endpoint with `WAVE_API_TOKEN`
|
|
301
|
+
- `hybrid`: try the broker first, then fall back to direct auth if broker setup fails or a broker request fails at runtime
|
|
302
|
+
- direct Corridor mode requires both `teamId` and `projectId` in config; broker mode instead requires a matching `WAVE_BROKER_CORRIDOR_PROJECT_MAP` entry on the owned Wave Control deployment
|
|
303
|
+
- Wave auto-loads an allowlisted repo-root `.env.local` for `CONTEXT7_API_KEY`, `CORRIDOR_API_TOKEN`, `CORRIDOR_API_KEY`, `WAVE_API_TOKEN`, and `WAVE_CONTROL_AUTH_TOKEN`
|
|
304
|
+
- `wave doctor` now warns or fails early when brokered providers target the packaged default endpoint or no Wave Control auth token is available
|
|
305
|
+
- Context7 remains fail-open
|
|
306
|
+
- Corridor writes `.tmp/<lane>-wave-launcher/security/wave-<n>-corridor.json`, filters findings down to the wave's implementation-owned non-doc, non-`.tmp/`, non-markdown paths, and can fail closure when the fetch fails or matched findings meet the configured threshold
|
|
307
|
+
- Broker mode is intended for self-hosted or team-owned Wave Control only; the packaged default endpoint is rejected as a provider-secret proxy
|
|
308
|
+
- if `findingStates` is omitted or set to `[]`, Wave does not apply a state filter and the provider may return all states
|
|
309
|
+
- for the full Corridor lifecycle, including broker mapping, generated artifact shape, and gate semantics, see [../corridor.md](../corridor.md)
|
|
310
|
+
|
|
311
|
+
`waveControl.credentialProviders` is related but separate from `externalProviders`:
|
|
312
|
+
|
|
313
|
+
- use `externalProviders.context7` and `externalProviders.corridor` for brokered or direct API access during planning / closure flows
|
|
314
|
+
- use `waveControl.credentialProviders` only when an executor needs env vars leased into its runtime
|
|
315
|
+
- use `waveControl.credentials` when an executor needs arbitrary user-owned secrets leased into env vars such as `GITHUB_TOKEN` or `NPM_TOKEN`
|
|
316
|
+
- only `openai` and `anthropic` are valid leased providers today
|
|
317
|
+
- `context7` and `corridor` remain broker-only and are never returned as raw env secrets
|
|
318
|
+
- `waveControl.credentials[*].id` must match `/^[a-z0-9][a-z0-9._-]*$/`
|
|
319
|
+
- `waveControl.credentials[*].envVar` must match `/^[A-Z_][A-Z0-9_]*$/`
|
|
320
|
+
- when provider or arbitrary credentials are leased, Wave injects them into the live executor environment and redacts those keys in `launch-preview.json`
|
|
321
|
+
|
|
264
322
|
Those fields are queryable in the `wave-control` service alongside `workspaceId`,
|
|
265
323
|
`projectId`, `runKind`, `runId`, `lane`, and benchmark ids.
|
|
266
324
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Sample Waves"
|
|
3
|
-
summary: "Showcase-first sample waves that demonstrate the shipped 0.9.
|
|
3
|
+
summary: "Showcase-first sample waves that demonstrate the shipped 0.9.2 authored surface, including the optional design-role path."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Sample Waves
|
|
7
7
|
|
|
8
|
-
This guide points to showcase-first sample waves that demonstrate the shipped `0.9.
|
|
8
|
+
This guide points to showcase-first sample waves that demonstrate the shipped `0.9.2` authored Wave surface.
|
|
9
9
|
|
|
10
10
|
The examples are intentionally denser than typical production waves. Their job is to teach the current authoring and runtime surface quickly, not to be the smallest possible launch-ready files.
|
|
11
11
|
|
|
@@ -17,7 +17,7 @@ All example `.tmp/main-wave-launcher/...` paths assume the implicit default proj
|
|
|
17
17
|
Shows what a good `repo-landed` outcome looks like when one promoted component only closes honestly if desired-state records, reconcile-loop substrate, and cluster-view surfaces land together. It emphasizes maturity discipline, explicit deliverables, and shared-plan closure without drifting into `pilot-live` claims.
|
|
18
18
|
|
|
19
19
|
- [Full modern sample wave](../plans/examples/wave-example-live-proof.md)
|
|
20
|
-
Shows the combined `0.9.
|
|
20
|
+
Shows the combined `0.9.2` authored surface in one file: closure roles, `E0`, optional security review, delegated and pinned benchmark targets, richer executor config, `### Skills`, `### Capabilities`, `### Deliverables`, `### Exit contract`, `### Proof artifacts`, sticky retry, deploy environments, and proof-first live-wave structure.
|
|
21
21
|
|
|
22
22
|
- [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md)
|
|
23
23
|
Shows the shipped design-role surface: one pre-implementation design steward publishes a design packet, downstream implementation owners read that packet before coding, and normal closure roles still decide final completion. For terminal or operator-surface work, pair that shape with explicit `tui-design` in the design steward's `### Skills`. For the hybrid variant, explicitly give that same design agent implementation-owned paths and the normal implementation contract sections.
|
|
@@ -46,7 +46,7 @@ All example `.tmp/main-wave-launcher/...` paths assume the implicit default proj
|
|
|
46
46
|
|
|
47
47
|
## Feature Coverage Map
|
|
48
48
|
|
|
49
|
-
Together these samples cover the main surfaces added or hardened through `0.9.
|
|
49
|
+
Together these samples cover the main surfaces added or hardened through `0.9.2`:
|
|
50
50
|
|
|
51
51
|
- repo-landed maturity discipline and anti-overclaim framing
|
|
52
52
|
- explicit shared-plan closure for future-wave safety
|
|
@@ -184,7 +184,7 @@ Adapt more aggressively when:
|
|
|
184
184
|
## Suggested Reading Order
|
|
185
185
|
|
|
186
186
|
1. Start with [High-fidelity repo-landed rollout wave](../plans/examples/wave-example-rollout-fidelity.md) if you want the clearest example of good closure-ready wave fidelity for a repo-only outcome.
|
|
187
|
-
2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.9.
|
|
187
|
+
2. Read [Full modern sample wave](../plans/examples/wave-example-live-proof.md) if you want the denser proof-first and eval-heavy `0.9.2` surface.
|
|
188
188
|
3. Read [Optional design-steward handoff wave](../plans/examples/wave-example-design-handoff.md) if the task needs a design packet before implementation fan-out.
|
|
189
189
|
4. Read [docs/evals/README.md](../evals/README.md) if you want more background on benchmark target selection.
|
|
190
190
|
5. Read [docs/reference/live-proof-waves.md](./live-proof-waves.md) if you want more detail on proof-first `pilot-live` authoring.
|
package/docs/reference/skills.md
CHANGED
|
@@ -124,7 +124,7 @@ Top-level and lane-local skill attachment use the same shape:
|
|
|
124
124
|
|
|
125
125
|
Lane-local `lanes.<lane>.skills` extends the global config instead of replacing it.
|
|
126
126
|
|
|
127
|
-
Optional design workers in the shipped `0.9.
|
|
127
|
+
Optional design workers in the shipped `0.9.2` surface normally attach `role-design`. That bundle is intended for docs/spec-first design packets and explicit implementation handoff work before implementation starts. When the design packet covers terminal UX, dashboards, or other operator surfaces, add `tui-design` explicitly in the wave's `### Skills`.
|
|
128
128
|
|
|
129
129
|
Long-running agents that should stay resident and react only to orchestrator signal changes can add `signal-hygiene` explicitly in `### Skills`. That bundle is not auto-attached and is not meant for normal one-shot implementation agents.
|
|
130
130
|
|