create-harness-vibe-coding 0.8.18 → 0.8.19
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 +13 -0
- package/README.md +1 -0
- package/package.json +5 -2
- package/src/index.js +383 -267
- package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js +17 -0
- package/src/ui/dist/assets/AgentsRoute-CuSKYmFu.js.map +1 -0
- package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js +7 -0
- package/src/ui/dist/assets/RolesRoute-DOzTYVRm.js.map +1 -0
- package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js +12 -0
- package/src/ui/dist/assets/SettingsRoute-DPU7jSQm.js.map +1 -0
- package/src/ui/dist/assets/TaskList-BN4r8s1i.js +50 -0
- package/src/ui/dist/assets/TaskList-BN4r8s1i.js.map +1 -0
- package/src/ui/dist/assets/TerminalDrawer-6GBZ9nXN.css +32 -0
- package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js +74 -0
- package/src/ui/dist/assets/TerminalDrawer-Cej4PxsH.js.map +1 -0
- package/src/ui/dist/assets/WorkflowRoute-BnuhLJ6X.css +1 -0
- package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js +39 -0
- package/src/ui/dist/assets/WorkflowRoute-C-clKe-j.js.map +1 -0
- package/src/ui/dist/assets/index-BOVYWntB.js +117 -0
- package/src/ui/dist/assets/index-BOVYWntB.js.map +1 -0
- package/src/ui/dist/assets/index-DaUObq0H.css +1 -0
- package/src/ui/dist/assets/maximize-2-LNrr_rKr.js +7 -0
- package/src/ui/dist/assets/maximize-2-LNrr_rKr.js.map +1 -0
- package/src/ui/dist/assets/plus-QuTJyoT3.js +7 -0
- package/src/ui/dist/assets/plus-QuTJyoT3.js.map +1 -0
- package/src/ui/dist/assets/proxy-D0vUbds5.js +2 -0
- package/src/ui/dist/assets/proxy-D0vUbds5.js.map +1 -0
- package/src/ui/dist/assets/refresh-cw-JNmExijd.js +7 -0
- package/src/ui/dist/assets/refresh-cw-JNmExijd.js.map +1 -0
- package/src/ui/dist/assets/terminal-BBQvnOAK.js +7 -0
- package/src/ui/dist/assets/terminal-BBQvnOAK.js.map +1 -0
- package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js +7 -0
- package/src/ui/dist/assets/useReducedMotion-BqmH0Tf7.js.map +1 -0
- package/src/ui/dist/assets/x-DoIOGAJz.js +7 -0
- package/src/ui/dist/assets/x-DoIOGAJz.js.map +1 -0
- package/src/ui/dist/index.html +18 -0
- package/src/ui/index.html +17 -0
- package/src/ui/package.json +33 -0
- package/src/ui/pnpm-lock.yaml +1582 -0
- package/src/ui/pnpm-workspace.yaml +2 -0
- package/src/ui/src/App.tsx +86 -0
- package/src/ui/src/api.ts +93 -0
- package/src/ui/src/components/AgentsRoute.tsx +503 -0
- package/src/ui/src/components/Footer.tsx +69 -0
- package/src/ui/src/components/Header.tsx +175 -0
- package/src/ui/src/components/LoadingView.tsx +22 -0
- package/src/ui/src/components/RolesRoute.tsx +169 -0
- package/src/ui/src/components/SettingsRoute.tsx +166 -0
- package/src/ui/src/components/TaskList.tsx +388 -0
- package/src/ui/src/components/TerminalDrawer.tsx +611 -0
- package/src/ui/src/components/WorkflowRoute.tsx +670 -0
- package/src/ui/src/hooks/useReducedMotion.ts +17 -0
- package/src/ui/src/hooks/useServerConnection.ts +114 -0
- package/src/ui/src/index.css +281 -0
- package/src/ui/src/main.tsx +11 -0
- package/src/ui/src/types.ts +108 -0
- package/src/ui/tsconfig.json +21 -0
- package/src/ui/vite.config.ts +19 -0
- package/src/wf-ui-server/__tests__/a2a-store.test.mjs +79 -0
- package/src/wf-ui-server/__tests__/peer-capsule.test.mjs +268 -0
- package/src/wf-ui-server/__tests__/pty-adapter.test.mjs +70 -0
- package/src/wf-ui-server/__tests__/runtime-config.test.mjs +43 -0
- package/src/wf-ui-server/__tests__/runtime-detector.test.mjs +90 -0
- package/src/wf-ui-server/__tests__/security.test.mjs +59 -0
- package/src/wf-ui-server/__tests__/server.integration.test.mjs +150 -0
- package/src/wf-ui-server/__tests__/session-registry.test.mjs +238 -0
- package/src/wf-ui-server/__tests__/settings.test.mjs +135 -0
- package/src/wf-ui-server/__tests__/task-parser.test.mjs +200 -0
- package/src/wf-ui-server/__tests__/terminal-store.test.mjs +138 -0
- package/src/wf-ui-server/__tests__/token.test.mjs +48 -0
- package/src/wf-ui-server/__tests__/ws-events.integration.test.mjs +419 -0
- package/src/wf-ui-server/__tests__/ws-terminal.integration.test.mjs +383 -0
- package/src/wf-ui-server/a2a-store.mjs +296 -0
- package/src/wf-ui-server/peer-capsule.mjs +213 -0
- package/src/wf-ui-server/pty-adapter.mjs +155 -0
- package/src/wf-ui-server/runtime-config.mjs +153 -0
- package/src/wf-ui-server/runtime-detector.mjs +374 -0
- package/src/wf-ui-server/security.mjs +67 -0
- package/src/wf-ui-server/server.mjs +849 -0
- package/src/wf-ui-server/session-registry.mjs +204 -0
- package/src/wf-ui-server/settings.mjs +100 -0
- package/src/wf-ui-server/task-parser.mjs +133 -0
- package/src/wf-ui-server/terminal-store.mjs +225 -0
- package/src/wf-ui-server/token.mjs +41 -0
- package/src/wf-ui-server/ws-events.mjs +354 -0
- package/src/wf-ui-server/ws-terminal.mjs +473 -0
- package/templates/common/.claude/commands/wf-help.md +1 -0
- package/templates/common/.claude/commands/wf-task-list.md +2 -0
- package/templates/common/.claude/commands/wf-ui.md +26 -0
- package/templates/common/.claude/commands/wf-update.md +54 -9
- package/templates/common/.claude/rules/ecc/common.md +1 -1
- package/templates/common/.claude/skills/wf-auto/SKILL.md +3 -3
- package/templates/common/.claude/skills/wf-auto-spark/SKILL.md +2 -2
- package/templates/common/.claude/skills/wf-ui/SKILL.md +78 -0
- package/templates/common/.claude/skills/wf-update/SKILL.md +55 -58
- package/templates/common/.harness-version +63 -39
- package/templates/common/.opencode/commands/wf-help.md +1 -0
- package/templates/common/.opencode/commands/wf-task-list.md +2 -0
- package/templates/common/.opencode/commands/wf-ui.md +26 -0
- package/templates/common/.opencode/commands/wf-update.md +54 -9
- package/templates/common/CLAUDE.md +1 -1
- package/templates/common/Harness/MEMORY.md +2 -0
- package/templates/common/Harness/README.md +6 -4
- package/templates/common/Harness/a2a/role-graph.json +79 -0
- package/templates/common/Harness/a2a/runtime-registry.json +5 -0
- package/templates/common/Harness/a2a/skills/terminal-control.json +15 -0
- package/templates/common/Harness/ownership.manifest.json +57 -2
- package/templates/common/Harness/scripts/README.md +134 -0
- package/templates/common/Harness/scripts/a2a-terminal.mjs +191 -0
- package/templates/common/Harness/scripts/context-budget.mjs +1 -1
- package/templates/common/Harness/scripts/sync-host-global.mjs +278 -0
- package/templates/common/Harness/scripts/task-state.mjs +556 -23
- package/templates/common/Harness/scripts/validate-harness.mjs +229 -19
- package/templates/common/Harness/scripts/wf-remove.mjs +8 -3
- package/templates/common/Harness/scripts/wf-update-check.mjs +37 -9
- package/templates/common/Harness/scripts/wf-update-runner.mjs +325 -0
- package/templates/common/Harness/settings.json +35 -0
- package/templates/common/Harness/specs/protocols/TASK_ARCHIVE.md +7 -2
- package/templates/common/Harness/specs/runtime/command-surface.json +14 -0
- package/templates/common/Harness/specs/workflows/WF-AUTO-SPARK.md +8 -8
- package/templates/common/Harness/specs/workflows/WF-AUTO.md +12 -12
- package/templates/common/Harness/tasks/_template/NAMING.md +16 -16
- package/templates/common/Harness/tasks/_template/PLAN.md +17 -60
- package/templates/common/Harness/tasks/_template/PROBLEM.md +18 -0
- package/templates/common/Harness/tasks/_template/PROGRESS.md +9 -14
- package/templates/common/Harness/tasks/_template/REFERENCES.md +26 -0
- package/templates/common/Harness/tasks/_template/ARTIFACTS.md +0 -3
- package/templates/common/Harness/tasks/_template/NOTES.md +0 -3
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wf-ui
|
|
3
|
+
description: Codex compatibility: use $wf-ui or /skills wf-ui in Codex. In Claude Code and OpenCode, /wf-ui is a direct command that starts the local Harness browser control panel.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# WF-UI Adapter
|
|
7
|
+
|
|
8
|
+
This skill is a Codex compatibility shim for opening the Harness control panel.
|
|
9
|
+
Claude Code and OpenCode handle `/wf-ui` as a direct command. Do not route this
|
|
10
|
+
through WF mode.
|
|
11
|
+
|
|
12
|
+
## Invocation
|
|
13
|
+
|
|
14
|
+
- Codex CLI or IDE: use `$wf-ui` or `/skills` then choose `wf-ui`.
|
|
15
|
+
- Claude Code: `/wf-ui` is a direct command from `.claude/commands/wf-ui.md`.
|
|
16
|
+
- OpenCode: `/wf-ui` is a direct command from `.opencode/commands/wf-ui.md`.
|
|
17
|
+
|
|
18
|
+
## Load
|
|
19
|
+
|
|
20
|
+
No router preload. Read only the local command file above when this runtime
|
|
21
|
+
needs the exact direct command text.
|
|
22
|
+
|
|
23
|
+
## Cache Discipline
|
|
24
|
+
|
|
25
|
+
Keep the context to the command, current project root, and returned local URL.
|
|
26
|
+
Do not paste full API responses, accessibility trees, or terminal transcripts.
|
|
27
|
+
|
|
28
|
+
## Startup
|
|
29
|
+
|
|
30
|
+
Run from the project root:
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
create-harness-vibe-coding wf-ui --project . --host 127.0.0.1 --port 0 --open
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If the global binary is not available, use:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
npx create-harness-vibe-coding@0.8.19 wf-ui --project . --host 127.0.0.1 --port 0 --open
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Rules:
|
|
43
|
+
- Bind only to `127.0.0.1`; never `0.0.0.0`.
|
|
44
|
+
- Default port `0` for an OS-assigned free port.
|
|
45
|
+
- Generate a random one-time token.
|
|
46
|
+
- Open `http://127.0.0.1:<port>/?token=<token>`.
|
|
47
|
+
- Leave the server running until the user stops it.
|
|
48
|
+
|
|
49
|
+
## Architecture
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
Browser UI (React + TypeScript + Motion for React + Lucide)
|
|
53
|
+
|
|
|
54
|
+
| HTTP JSON APIs + WebSocket
|
|
55
|
+
v
|
|
56
|
+
Local Node server bound to 127.0.0.1 only
|
|
57
|
+
|
|
|
58
|
+
| fs + task-state.mjs + optional node-pty
|
|
59
|
+
v
|
|
60
|
+
Project-local Harness files (tasks/**, settings, version, command surfaces)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Communication Protocol
|
|
64
|
+
|
|
65
|
+
- HTTP snapshots are canonical state: `/api/tasks`, `/api/settings`, `/api/project`.
|
|
66
|
+
- WebSocket events are invalidation hints only. The UI refreshes HTTP snapshots
|
|
67
|
+
on reconnect or sequence gaps.
|
|
68
|
+
- Browser writes go through typed `POST` endpoints.
|
|
69
|
+
- `Harness/tasks/**` is the durable source of truth; UI state is derived.
|
|
70
|
+
|
|
71
|
+
## Security
|
|
72
|
+
|
|
73
|
+
- Loopback-only binding (`127.0.0.1`).
|
|
74
|
+
- One-time token auth on HTTP and WebSocket.
|
|
75
|
+
- Path traversal prevention on all task capsule reads.
|
|
76
|
+
- Command allowlist for PTY: `claude`, `codex`, `opencode`.
|
|
77
|
+
- Terminal default mode: watch/read-only; attach mode is explicit.
|
|
78
|
+
- `node-pty` is optional; missing means the terminal session reports blocked.
|
|
@@ -16,89 +16,86 @@ This skill is a Codex compatibility shim plus script-flow reference. Claude Code
|
|
|
16
16
|
## Load
|
|
17
17
|
|
|
18
18
|
- `Harness/.harness-version`
|
|
19
|
+
- `Harness/ownership.manifest.json`
|
|
19
20
|
- `Harness/scripts/wf-update-check.mjs`
|
|
21
|
+
- `Harness/scripts/wf-update-runner.mjs`
|
|
22
|
+
- `Harness/scripts/sync-host-global.mjs`
|
|
20
23
|
- `Harness/scripts/scan-clean.mjs`
|
|
21
24
|
- `Harness/scripts/validate-harness.mjs`
|
|
22
25
|
|
|
23
26
|
## Cache Discipline
|
|
24
27
|
|
|
25
|
-
Follow `Harness/specs/runtime/context-loading.md#Cache-First Context Contract`: keep updater
|
|
26
|
-
scripts and ownership docs stable, consume compact `--json` agent plans first,
|
|
27
|
-
and avoid pasting verbose diffs or full remote files unless a conflict requires
|
|
28
|
-
targeted inspection.
|
|
28
|
+
Follow `Harness/specs/runtime/context-loading.md#Cache-First Context Contract`: keep updater scripts and ownership docs stable, consume compact `--json` agent plans first, and avoid pasting verbose diffs or full remote files unless a conflict requires targeted inspection.
|
|
29
29
|
|
|
30
30
|
## Classification
|
|
31
31
|
|
|
32
|
-
MANIFEST-FIRST. The installer and updater read
|
|
33
|
-
`Harness/ownership.manifest.json`:
|
|
32
|
+
MANIFEST-FIRST. The installer and updater read `Harness/ownership.manifest.json`:
|
|
34
33
|
|
|
35
|
-
- `preserve[]`
|
|
36
|
-
|
|
37
|
-
- `
|
|
38
|
-
|
|
39
|
-
carry forward.
|
|
40
|
-
- `frameworkOwned[]` — safe overwrite-upgrade fast path (concurrent
|
|
41
|
-
fetch + hash + all-or-nothing write after checksum validation).
|
|
42
|
-
- `optionalOwned[]` — upgraded only when that option is installed.
|
|
34
|
+
- `preserve[]` - never touched when present as user data: tasks, memory, research, root README, package, architecture, and progress. `Harness/tasks/**` is always preserved.
|
|
35
|
+
- `merge[]` - CLAUDE.md, AGENTS.md, MEMORY.md, Harness/MEMORY.md, Harness/README.md, and Harness/settings.json require merge or accept-local; prior accepted decisions carry forward.
|
|
36
|
+
- `frameworkOwned[]` - safe overwrite-upgrade fast path after checksum validation. This must cover `.claude`, `.codex`, `.agents`, `.opencode`, and Harness template-owned scripts/specs.
|
|
37
|
+
- `optionalOwned[]` - upgraded only when that option is installed.
|
|
43
38
|
|
|
44
|
-
Content markers (`harness: wf-agent`, `project harness`, `Harness/...`)
|
|
45
|
-
are the FALLBACK when no manifest exists (old installs) and the
|
|
46
|
-
instance-ownership signal that protects a user's same-name file at a
|
|
47
|
-
Harness path. A same-name user file with no marker and no manifest
|
|
48
|
-
declaration → conflict/skip + warning, never overwritten.
|
|
39
|
+
Content markers (`harness: wf-agent`, `project harness`, `Harness/...`) are the fallback when no manifest exists and the instance-ownership signal that protects a user's same-name file at a Harness path. A same-name user file with no marker and no manifest declaration becomes conflict/skip plus warning, never overwrite.
|
|
49
40
|
|
|
50
41
|
## Flow
|
|
51
42
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
43
|
+
Scope resolution is deterministic:
|
|
44
|
+
|
|
45
|
+
- Current project has `Harness/scripts/wf-update-check.mjs`: update the project install from that script.
|
|
46
|
+
- A global runtime is discoverable from `Harness/.harness-version.globalDir`, `HARNESS_GLOBAL_HOME`, or the default `~/.harness/create-harness-vibe-coding`: update that runtime too, then sync its Claude/Codex/OpenCode host-global copies.
|
|
47
|
+
- Current project has no Harness install: update only the global runtime and host-global copies. Do not scaffold or modify the project unless the user explicitly asks to install Harness there.
|
|
48
|
+
`Harness/scripts/wf-update-runner.mjs` implements this multi-scope routing. Older installs that do not have the runner fall back to `Harness/scripts/wf-update-check.mjs`.
|
|
49
|
+
|
|
50
|
+
1. Run `node Harness/scripts/wf-update-runner.mjs --json` first when present; otherwise run `node Harness/scripts/wf-update-check.mjs --json` and use the `agent` block as the action plan. Current updaters try npm `create-harness-vibe-coding@latest` first, then canonical GitHub `LiWeny16/create-harness-vibe-coding`, then legacy mirror `zingspark/create-harness-vibe-coding`.
|
|
51
|
+
2. Preserve all PRESERVE files. Never overwrite user task, memory, research, root README.md, package, progress, or architecture files. Harness/README.md is merge-tier, not PRESERVE.
|
|
52
|
+
3. If `agent.safeApplyCommand` is present, run the runner apply path to apply SAFE, NEW, moved, and adopted metadata-only files across every discovered scope before spending AI time on conflicts. Default multi-scope command: `node Harness/scripts/wf-update-runner.mjs --apply-safe --json`. Single-scope fallback command: `node Harness/scripts/wf-update-check.mjs --apply-safe`.
|
|
53
|
+
4. Previously accepted decisions for merge-tier files are carried forward automatically when both the local hash and remote template hash are unchanged.
|
|
54
|
+
5. If a new agent/command/skill path collides with an existing file, do not decide by filename alone. Treat it as Harness-owned only when the file content has Harness/WF markers such as `harness: wf-agent`, `project harness`, or `Harness/...`; otherwise leave it as a real conflict.
|
|
55
|
+
6. For every remaining `agent.aiMergeRequired` entry, compare the local file with `templateHint` or `remoteUrl`, then choose merge, keep-local, or overwrite-from-template. Record the decision through the script with `--accept-local <file>`, `--accept-merged <file>`, or `--accept-template <file>`; do not hand-edit `Harness/.harness-version`.
|
|
56
|
+
7. Run `node Harness/scripts/wf-update-runner.mjs --finalize --json` after all conflicts have script-recorded decisions. Single-scope fallback: `node Harness/scripts/wf-update-check.mjs --finalize`. Use strict `--apply` only when the JSON plan has zero conflicts.
|
|
57
|
+
8. After apply/finalize, run all post-update checks:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
node Harness/scripts/sync-host-global.mjs --json
|
|
61
|
+
node Harness/scripts/sync-host-global.mjs --apply --json
|
|
62
|
+
node Harness/scripts/validate-harness.mjs
|
|
63
|
+
node Harness/scripts/validate-harness.mjs --manifest-audit
|
|
64
|
+
node Harness/scripts/scan-clean.mjs --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
9. If the update reports "Already up to date" but framework files are missing or stale, run repair mode:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
node Harness/scripts/wf-update-runner.mjs --repair --json
|
|
71
|
+
node Harness/scripts/wf-update-runner.mjs --repair --apply-safe --json
|
|
72
|
+
node Harness/scripts/wf-update-runner.mjs --repair --finalize --json
|
|
73
|
+
node Harness/scripts/wf-update-check.mjs --repair --json
|
|
74
|
+
node Harness/scripts/wf-update-check.mjs --repair --apply-safe
|
|
75
|
+
node Harness/scripts/wf-update-check.mjs --repair --finalize
|
|
76
|
+
node Harness/scripts/sync-host-global.mjs --apply --json
|
|
77
|
+
node Harness/scripts/validate-harness.mjs --manifest-audit
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`--repair` bypasses the version check and forces a full file diff against the latest remote template. This catches partial updates where the version advanced but files such as `/wf-task-list`, `/wf-help`, Codex `.agents` skill mirrors, OpenCode commands, `.codex` config, or Harness scripts were not written.
|
|
81
|
+
`sync-host-global.mjs` is a no-op for project-only installs. For global installs it repairs missing or Harness-marked stale host-global copies by script and reports user-looking files as conflicts.
|
|
82
82
|
|
|
83
83
|
## Recovery
|
|
84
84
|
|
|
85
|
-
If `Harness/scripts/wf-update-check.mjs` is missing
|
|
85
|
+
If `Harness/scripts/wf-update-check.mjs` is missing, or `Harness/.harness-version` is missing or corrupted, do not reinstall from scratch. Recover by regenerating missing infrastructure:
|
|
86
86
|
|
|
87
|
-
```
|
|
87
|
+
```bash
|
|
88
88
|
npx create-harness-vibe-coding@latest <project-name> . -y --on-conflict skip
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
The `--on-conflict skip` policy preserves all existing user files
|
|
91
|
+
The `--on-conflict skip` policy preserves all existing user files and only creates missing Harness infrastructure files. After recovery, run the update check and manifest audit.
|
|
92
92
|
|
|
93
|
-
If an old updater reports only `0.8.10`, run the latest installer command above
|
|
94
|
-
or re-run the checker with:
|
|
93
|
+
If an old updater reports only `0.8.10`, run the latest installer command above or re-run the checker with:
|
|
95
94
|
|
|
96
|
-
```
|
|
95
|
+
```bash
|
|
97
96
|
node Harness/scripts/wf-update-check.mjs --json --source-base https://raw.githubusercontent.com/LiWeny16/create-harness-vibe-coding/main/templates/common/
|
|
98
97
|
```
|
|
99
98
|
|
|
100
99
|
## Return
|
|
101
100
|
|
|
102
|
-
Report version, SAFE/NEW updates, conflicts and decisions, preserved files,
|
|
103
|
-
partialUpdate status if any, validation output, scan-clean result, and
|
|
104
|
-
remaining risks.
|
|
101
|
+
Report version, SAFE/NEW updates, conflicts and decisions, preserved files, partialUpdate status if any, validation output, manifest-audit output, scan-clean result, and remaining risks. Also report the core release highlights from `agent.releaseHighlights` or `releaseNotes.highlights`.
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generator": "0.8.
|
|
3
|
-
"generated": "2026-07-
|
|
2
|
+
"generator": "0.8.19",
|
|
3
|
+
"generated": "2026-07-30T14:31:29.365Z",
|
|
4
4
|
"options": [],
|
|
5
5
|
"autoCheck": true,
|
|
6
6
|
"source": "https://raw.githubusercontent.com/LiWeny16/create-harness-vibe-coding/main/templates/common/",
|
|
7
7
|
"releaseNotes": {
|
|
8
|
-
"version": "0.8.
|
|
9
|
-
"date": "2026-07-
|
|
8
|
+
"version": "0.8.19",
|
|
9
|
+
"date": "2026-07-30",
|
|
10
10
|
"highlights": [
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
11
|
+
"Publish `$wf-ui` as the Harness control panel with task capsule observability, agent workflow hierarchy, runtime detection, real PTY-backed detected CLI launches, and multi-terminal peer sessions.",
|
|
12
|
+
"Bundle built `wf-ui` assets in the npm package and guard them with pack smoke coverage so installed `wf-ui` can serve the browser UI without a local frontend build.",
|
|
13
|
+
"Harden OTA updates with `--repair` mode so an already-version-bumped install can still diff and restore missing framework files such as `/wf-task-list`, `/wf-help`, and platform mirrors.",
|
|
14
|
+
"Add post-update manifest validation: `/wf-update` now requires `validate-harness.mjs --manifest-audit` after apply/finalize to catch missing framework files, stale Harness-owned files, and manifest coverage gaps.",
|
|
15
|
+
"Add multi-scope `/wf-update` routing: project installs update project + discovered global runtime, while uninstalled projects using global command surfaces update only the global runtime and host copies.",
|
|
16
|
+
"Add `sync-host-global.mjs` so global Claude/Codex/OpenCode command and skill copies are audited and repaired after runtime updates.",
|
|
17
|
+
"Keep `--repair` safe by refusing older remote sources and prerelease sources by default; repair can restore missing files but cannot silently downgrade a newer install.",
|
|
18
|
+
"Regenerate ownership manifests from the template source so `.claude`, `.codex`, `.agents`, `.opencode`, and Harness script/spec files are tracked as updateable framework files while tasks, memory, progress, and project user files remain preserved."
|
|
17
19
|
]
|
|
18
20
|
},
|
|
19
21
|
"moves": [
|
|
@@ -160,8 +162,8 @@
|
|
|
160
162
|
".agents/skills/subagent-orchestrator/SKILL.md": "sha256-6354018aaafd3d9f546eeecc90f943ef9a94d05747673369586a4a2f45a9464d",
|
|
161
163
|
".agents/skills/tdd/SKILL.md": "sha256-d6738eca127e0632474db67c25708c9db3feab3b55499c489518502ec8951e3a",
|
|
162
164
|
".agents/skills/wf-agents-docs/SKILL.md": "sha256-20cd0d52d600ba9a61cbeb7fefea3beed213f77a87f23a1b534e6229949d5b01",
|
|
163
|
-
".agents/skills/wf-auto-spark/SKILL.md": "sha256-
|
|
164
|
-
".agents/skills/wf-auto/SKILL.md": "sha256-
|
|
165
|
+
".agents/skills/wf-auto-spark/SKILL.md": "sha256-4693db5b5a62d9385ede824c2ecfa84efbfa1d59a120377e216e4e920ccfc9db",
|
|
166
|
+
".agents/skills/wf-auto/SKILL.md": "sha256-e148c86fba7873543afa1963808bf4f3dceab5864bba65665aae075ab8f2f838",
|
|
165
167
|
".agents/skills/wf-browser/SKILL.md": "sha256-0914538f7ae624b66cede82593f8063716c96c0f7b36adebbcf413c9e2a1d836",
|
|
166
168
|
".agents/skills/wf-command-create/SKILL.md": "sha256-b8df91106d4ea161d659d1099a2ae509b8c81e9954946c2f53629ccbc5ffe70a",
|
|
167
169
|
".agents/skills/wf-help/SKILL.md": "sha256-418564cbe5e2df1e63fccdc9cd1cc12b05df9589836c6ff39ff43610eddf4e56",
|
|
@@ -173,7 +175,8 @@
|
|
|
173
175
|
".agents/skills/wf-task-archive/SKILL.md": "sha256-f1637ee8c56b1385aed5db9c93f74889c2542a85273fdc68c6a4975a906f1cd5",
|
|
174
176
|
".agents/skills/wf-task-list/SKILL.md": "sha256-04bcae617ef70e6b46c267ed726f6e8352d2f0b72aaaa8a486e3a760a8144b48",
|
|
175
177
|
".agents/skills/wf-task-record/SKILL.md": "sha256-7afb4a9f04da96e45b9159f596d00c563184a27aff538385519187f2868811f8",
|
|
176
|
-
".agents/skills/wf-
|
|
178
|
+
".agents/skills/wf-ui/SKILL.md": "sha256-13c95b09624e93cec1ef4a6ef05dcc6f909edeb13590b28b8acb145233c6eae9",
|
|
179
|
+
".agents/skills/wf-update/SKILL.md": "sha256-2efdd15cd8a4a9ec6b239cd5880c19c89c2be5016123342040d178b59b36778f",
|
|
177
180
|
".agents/skills/wf/SKILL.md": "sha256-78cc8b5be329649508b9fa6856b50c709ae74fbc31a4c7b77a69c6552723e29b",
|
|
178
181
|
".claude/agents/architect-manager.md": "sha256-21f16d8d5e9d0a88d9663dbe798421501e0de89ccad5f8f3c1ef9db5b79edaf7",
|
|
179
182
|
".claude/agents/architect.md": "sha256-8a57c6a85ec21d49deaa37a73a81367dabfdb22efd781f58e66b6628e14b218c",
|
|
@@ -198,24 +201,25 @@
|
|
|
198
201
|
".claude/commands/wf-auto.md": "sha256-06196a633eb0464ff152e7bfffabd76c09ab32a2aef9d84b82bbb4c204503226",
|
|
199
202
|
".claude/commands/wf-browser.md": "sha256-1cd46b259cb509af2d0bb1d105912889068611875c008e002598d0e7ed42cf52",
|
|
200
203
|
".claude/commands/wf-command-create.md": "sha256-b6027172e5d98c44f1ac22747a9ad52b27de15271018a60b10ac5b7c3d96f4a0",
|
|
201
|
-
".claude/commands/wf-help.md": "sha256-
|
|
204
|
+
".claude/commands/wf-help.md": "sha256-3b15f9799da469e58a62b3360a7c0c29d15e578be364693e351afef66f6a5800",
|
|
202
205
|
".claude/commands/wf-learn.md": "sha256-02606f2a91e03056676aa022a060cd4a05a4d3123f8cb6f5e27bc50d90c6448a",
|
|
203
206
|
".claude/commands/wf-max.md": "sha256-88cdfb4ef8a205483045302b56dec268bdf010debd9c4473b665f5720e4c5697",
|
|
204
207
|
".claude/commands/wf-readme.md": "sha256-3eee1a6b3f62c22ed46440ed38ecb02999c9a3128d7660e91e7f0a94c59fa463",
|
|
205
208
|
".claude/commands/wf-remove.md": "sha256-80fe1849412028c9a91120143eeb10e153e6d7c32ec502c0d7ef3599d13fa337",
|
|
206
209
|
".claude/commands/wf-review.md": "sha256-bb031ffc8e392af2c1b2bb97b2f7605af1dcfa70514c6068312eca01f170e6d9",
|
|
207
210
|
".claude/commands/wf-task-archive.md": "sha256-95b7c0a7bb2946b8c6c57506726358e7cc57cc2d9b1b48bd43b102a9a77ca3da",
|
|
208
|
-
".claude/commands/wf-task-list.md": "sha256-
|
|
211
|
+
".claude/commands/wf-task-list.md": "sha256-6d90efb0832a3a3e478c74101458026341f4966f01236c076859c8e562d13951",
|
|
209
212
|
".claude/commands/wf-task-record.md": "sha256-e9fa479274bdece66afa631642a87c7e2500f1dc1e58b930660cebeef4eae748",
|
|
210
|
-
".claude/commands/wf-
|
|
213
|
+
".claude/commands/wf-ui.md": "sha256-faaef8c2ea6565be36582ce03a7dc9d4238a38b8d776a49e588f8a6df430b2d8",
|
|
214
|
+
".claude/commands/wf-update.md": "sha256-48b82e5300cd5422396b8fc06dfaa2dd243e95a0891100e58715274da674e4b9",
|
|
211
215
|
".claude/commands/wf.md": "sha256-bef81f0404230ff0de64727d46aa947d7434d06fde8ad03c55db9ccf54870cca",
|
|
212
|
-
".claude/rules/ecc/common.md": "sha256-
|
|
216
|
+
".claude/rules/ecc/common.md": "sha256-930bb10a68d38b59b91b2e7cded67e4e99a0bcc3f3c6c928ab033c5670dfd827",
|
|
213
217
|
".claude/settings.json": "sha256-99e8552584b8e71e3e11b4b760c3bfbf8c1b18dadda7ec3f6e3c46f88d9ea513",
|
|
214
218
|
".claude/skills/subagent-orchestrator/SKILL.md": "sha256-6354018aaafd3d9f546eeecc90f943ef9a94d05747673369586a4a2f45a9464d",
|
|
215
219
|
".claude/skills/tdd/SKILL.md": "sha256-d6738eca127e0632474db67c25708c9db3feab3b55499c489518502ec8951e3a",
|
|
216
220
|
".claude/skills/wf-agents-docs/SKILL.md": "sha256-20cd0d52d600ba9a61cbeb7fefea3beed213f77a87f23a1b534e6229949d5b01",
|
|
217
|
-
".claude/skills/wf-auto-spark/SKILL.md": "sha256-
|
|
218
|
-
".claude/skills/wf-auto/SKILL.md": "sha256-
|
|
221
|
+
".claude/skills/wf-auto-spark/SKILL.md": "sha256-4693db5b5a62d9385ede824c2ecfa84efbfa1d59a120377e216e4e920ccfc9db",
|
|
222
|
+
".claude/skills/wf-auto/SKILL.md": "sha256-e148c86fba7873543afa1963808bf4f3dceab5864bba65665aae075ab8f2f838",
|
|
219
223
|
".claude/skills/wf-browser/SKILL.md": "sha256-0914538f7ae624b66cede82593f8063716c96c0f7b36adebbcf413c9e2a1d836",
|
|
220
224
|
".claude/skills/wf-command-create/SKILL.md": "sha256-b8df91106d4ea161d659d1099a2ae509b8c81e9954946c2f53629ccbc5ffe70a",
|
|
221
225
|
".claude/skills/wf-help/SKILL.md": "sha256-418564cbe5e2df1e63fccdc9cd1cc12b05df9589836c6ff39ff43610eddf4e56",
|
|
@@ -227,7 +231,8 @@
|
|
|
227
231
|
".claude/skills/wf-task-archive/SKILL.md": "sha256-f1637ee8c56b1385aed5db9c93f74889c2542a85273fdc68c6a4975a906f1cd5",
|
|
228
232
|
".claude/skills/wf-task-list/SKILL.md": "sha256-04bcae617ef70e6b46c267ed726f6e8352d2f0b72aaaa8a486e3a760a8144b48",
|
|
229
233
|
".claude/skills/wf-task-record/SKILL.md": "sha256-7afb4a9f04da96e45b9159f596d00c563184a27aff538385519187f2868811f8",
|
|
230
|
-
".claude/skills/wf-
|
|
234
|
+
".claude/skills/wf-ui/SKILL.md": "sha256-13c95b09624e93cec1ef4a6ef05dcc6f909edeb13590b28b8acb145233c6eae9",
|
|
235
|
+
".claude/skills/wf-update/SKILL.md": "sha256-2efdd15cd8a4a9ec6b239cd5880c19c89c2be5016123342040d178b59b36778f",
|
|
231
236
|
".claude/skills/wf/SKILL.md": "sha256-78cc8b5be329649508b9fa6856b50c709ae74fbc31a4c7b77a69c6552723e29b",
|
|
232
237
|
".codex/config.toml": "sha256-b561d07aaba9bb32df0c48713f6a00be95462af9fa9383efb7cee89f9b24f9ba",
|
|
233
238
|
".codex/hooks.json": "sha256-3200c42c2da434c07cd6ab1ce86f8845ab46a1ed9a25b65117b2b2b42056c725",
|
|
@@ -254,35 +259,43 @@
|
|
|
254
259
|
".opencode/commands/wf-auto.md": "sha256-06196a633eb0464ff152e7bfffabd76c09ab32a2aef9d84b82bbb4c204503226",
|
|
255
260
|
".opencode/commands/wf-browser.md": "sha256-1cd46b259cb509af2d0bb1d105912889068611875c008e002598d0e7ed42cf52",
|
|
256
261
|
".opencode/commands/wf-command-create.md": "sha256-29b597b7c2c3b8a7e131365e1704855bbd2774511ed30cf99e398f77123e2981",
|
|
257
|
-
".opencode/commands/wf-help.md": "sha256-
|
|
262
|
+
".opencode/commands/wf-help.md": "sha256-05d4d2feca75b1f03eba3b28084504b5314a7fdc131db3f9f8c46c4b1bf7d0fe",
|
|
258
263
|
".opencode/commands/wf-learn.md": "sha256-02606f2a91e03056676aa022a060cd4a05a4d3123f8cb6f5e27bc50d90c6448a",
|
|
259
264
|
".opencode/commands/wf-max.md": "sha256-21ddf8d4eff7ce91948a41eb68cbc9d184349ca3a422c72950fc83a5039eb663",
|
|
260
265
|
".opencode/commands/wf-readme.md": "sha256-3eee1a6b3f62c22ed46440ed38ecb02999c9a3128d7660e91e7f0a94c59fa463",
|
|
261
266
|
".opencode/commands/wf-remove.md": "sha256-80fe1849412028c9a91120143eeb10e153e6d7c32ec502c0d7ef3599d13fa337",
|
|
262
267
|
".opencode/commands/wf-review.md": "sha256-bb031ffc8e392af2c1b2bb97b2f7605af1dcfa70514c6068312eca01f170e6d9",
|
|
263
268
|
".opencode/commands/wf-task-archive.md": "sha256-eed9b41bd4fc9c4ca6d0b4aa2cc0492e7695173b6b5487a7a07683dec66de162",
|
|
264
|
-
".opencode/commands/wf-task-list.md": "sha256-
|
|
269
|
+
".opencode/commands/wf-task-list.md": "sha256-53e25781b9c9f9b12927f3291613a07029c2dfdef636350b0b779b4f7cca0a7f",
|
|
265
270
|
".opencode/commands/wf-task-record.md": "sha256-c71c49e54f568eff816f5eea505d34a139e91f4f18aed504391ab6fa6afd539e",
|
|
266
|
-
".opencode/commands/wf-
|
|
271
|
+
".opencode/commands/wf-ui.md": "sha256-faaef8c2ea6565be36582ce03a7dc9d4238a38b8d776a49e588f8a6df430b2d8",
|
|
272
|
+
".opencode/commands/wf-update.md": "sha256-48b82e5300cd5422396b8fc06dfaa2dd243e95a0891100e58715274da674e4b9",
|
|
267
273
|
".opencode/commands/wf.md": "sha256-bef81f0404230ff0de64727d46aa947d7434d06fde8ad03c55db9ccf54870cca",
|
|
268
274
|
".opencode/plugins/harness-wf-status.mjs": "sha256-ee0987cec5530c34784c619a803562d7085ae26fe5d199fde7ce42c2bed4724e",
|
|
269
275
|
"AGENTS.md": "sha256-fad176931742a5080e073d1ddba99a3eabb67e8c42bebb132df99a51ca6a184d",
|
|
270
|
-
"CLAUDE.md": "sha256-
|
|
271
|
-
"Harness/MEMORY.md": "sha256-
|
|
272
|
-
"Harness/README.md": "sha256-
|
|
273
|
-
"Harness/
|
|
276
|
+
"CLAUDE.md": "sha256-d5c527cc412054cbce6edc1c4e9476c001156117562108f5bdaf6f7f8a8827e9",
|
|
277
|
+
"Harness/MEMORY.md": "sha256-d998ab26fe1932b8bb6b55a4fcb4ba1c54ed4d2a633057ee0442d435c2add376",
|
|
278
|
+
"Harness/README.md": "sha256-59ea5524eee4a40586d3ebb79e35e1f0e53e8c3fa31a45c7c0d5e66aa339991f",
|
|
279
|
+
"Harness/a2a/role-graph.json": "sha256-bf4701253b5bfb3f6578eee0777cc10b250130acca2438fac6a5be31e38da34c",
|
|
280
|
+
"Harness/a2a/runtime-registry.json": "sha256-37b1fa4820ba3a4001b8ec9ec9a03dfdeb132379046792c21d5e1de0794fee90",
|
|
281
|
+
"Harness/a2a/skills/terminal-control.json": "sha256-07c66989c8a25344ddeabdbfaf1fc86f14750beb48ee8f99a970714ebcd5efb3",
|
|
282
|
+
"Harness/ownership.manifest.json": "sha256-b6808f7009294aa6a446c1b24f3669659060979148dfd6c30a9caea3b6e6efe7",
|
|
274
283
|
"Harness/project/architecture.md": "sha256-27462306667539d71aecc4a90a778222f61585ef99e8131fb38f866913cac1c4",
|
|
275
284
|
"Harness/research/README.md": "sha256-b7a542c0d919cabc185b6e7a1e6ef265dc5160978d0c1dd804f2c6547d0202a4",
|
|
285
|
+
"Harness/scripts/README.md": "sha256-b97601aca4c042f09aa387cdf8764a242a3e67d40888fd5eb27c1ff2c86926f6",
|
|
286
|
+
"Harness/scripts/a2a-terminal.mjs": "sha256-d99864265bf90bef86538b7f5ca10b9debf4fad343aac832d32cc6957605d247",
|
|
276
287
|
"Harness/scripts/archive-tasks.mjs": "sha256-c5891c32d23f0b1bc863753d11116ab593928aa9ebedf2768b68b77e88c9909c",
|
|
277
|
-
"Harness/scripts/context-budget.mjs": "sha256-
|
|
288
|
+
"Harness/scripts/context-budget.mjs": "sha256-7cf88703e55eaaf6abdd1b2bf314e15a94ec41da2d370ce560b60655988b102e",
|
|
278
289
|
"Harness/scripts/l2-cache-telemetry.mjs": "sha256-139b5317eb3917f2ca0acd3cb1164170cc8c1dd60e0dee35f8d1596aed28c22c",
|
|
279
290
|
"Harness/scripts/scan-clean.mjs": "sha256-6c4b2a4d15a8cd758214a360f8d3be11a835368d409c95719242c75ccf466c8a",
|
|
280
|
-
"Harness/scripts/
|
|
281
|
-
"Harness/scripts/
|
|
291
|
+
"Harness/scripts/sync-host-global.mjs": "sha256-16bf56a1c348d0225e4093b364166f51b2148a6d75020e49431d9b31d4800518",
|
|
292
|
+
"Harness/scripts/task-state.mjs": "sha256-e911615ca8a0edea676b840ccf8164eb70cfb14a08871f3121c5ad10692aa657",
|
|
293
|
+
"Harness/scripts/validate-harness.mjs": "sha256-f511f92d73a78c21de7b6c8de8be8641605e51131f5b2e4e5accb127aa5dfffb",
|
|
282
294
|
"Harness/scripts/wf-auto-update-prompt.mjs": "sha256-14210304dbd8e648b8939fc4c5d3664f943052153e689264c16b05b7b81bd39e",
|
|
283
|
-
"Harness/scripts/wf-remove.mjs": "sha256-
|
|
284
|
-
"Harness/scripts/wf-update-check.mjs": "sha256-
|
|
285
|
-
"Harness/
|
|
295
|
+
"Harness/scripts/wf-remove.mjs": "sha256-ba8711a74b88def50c4f94171d43ff01d6e3d67cd89644f19b701675362afb73",
|
|
296
|
+
"Harness/scripts/wf-update-check.mjs": "sha256-cfdccaeb8045a772a80f468f8b23fdb753b99bd89d3af72688c4abd241bd85a9",
|
|
297
|
+
"Harness/scripts/wf-update-runner.mjs": "sha256-2a197a6cd0ab5abbc2ad9359b78cc44db41b5789aabbb503f357ca1135c62444",
|
|
298
|
+
"Harness/settings.json": "sha256-5455b66125fd67969a6e490d3093ce238f7c16348f69a980a65ce22d99c0c728",
|
|
286
299
|
"Harness/specs/guides/ECC-GUIDE.md": "sha256-eba123cad02dde928317b9347efac45daf33698221d2d91768559a1f0456cc97",
|
|
287
300
|
"Harness/specs/guides/SETUP.md": "sha256-2f33b14eec035c9603ad6355cecc109879e9320a7a29aa9e9be6bbc743362b38",
|
|
288
301
|
"Harness/specs/guides/extension.md": "sha256-5bf5895f849b972e5bdd1afd1a6914cd743b88b05668bb72dca7cd835262e8c9",
|
|
@@ -292,16 +305,16 @@
|
|
|
292
305
|
"Harness/specs/protocols/DEBUG_PROTOCOL.md": "sha256-ed80de0e3e1a40dbb9fd0bdead9174f1650e1833027f3d7fb4bb5884142e03f7",
|
|
293
306
|
"Harness/specs/protocols/HARNESS_BRIDGE.md": "sha256-681dbeca9a590bbeb3a0c01b044e40e642e6d640632d8611064eb897ada8a48d",
|
|
294
307
|
"Harness/specs/protocols/MEMORY_PROTOCOL.md": "sha256-5542c5007f278e0d83627d831beff4eaa58e2bc256f7962f562050de124e24d9",
|
|
295
|
-
"Harness/specs/protocols/TASK_ARCHIVE.md": "sha256-
|
|
308
|
+
"Harness/specs/protocols/TASK_ARCHIVE.md": "sha256-93f926df3fdea1510535ac5ab8efeba347c67c1d289afc0e46d4d2175a2e3699",
|
|
296
309
|
"Harness/specs/protocols/TDD-GUIDE.md": "sha256-602084530fd0dea7499a023ce75738351e5d97a0c222b64d405f36da6b59a162",
|
|
297
310
|
"Harness/specs/runtime/agent-workflow.md": "sha256-9e6390715a9c2e404923d17e12369fe5af22c9a615ab14a010a8d6da0974c987",
|
|
298
|
-
"Harness/specs/runtime/command-surface.json": "sha256-
|
|
311
|
+
"Harness/specs/runtime/command-surface.json": "sha256-70da5001e2a05a636050f0df9e129ea67c06953b649d2c0b9d2001ccc484c265",
|
|
299
312
|
"Harness/specs/runtime/context-loading.md": "sha256-323e9476486ebf60cfd9fd78834701817f882648749cd548dd7a47670fce0bd6",
|
|
300
313
|
"Harness/specs/runtime/dispatch.md": "sha256-1b1c2681c2722b8d708f8cca48ec1991ee922602c4c7333704f0156f6ffa498f",
|
|
301
314
|
"Harness/specs/runtime/subagents.md": "sha256-bb71ae927dd5f4656f97a78797b1d776618a39b26a7364a256cbcf38db427e71",
|
|
302
315
|
"Harness/specs/workflows/WF-AUTO-ANGLES.md": "sha256-b9641d871f728e8112ad0d8c7f87bcbec0a06aa572c5f3060efdd26496abdf9b",
|
|
303
|
-
"Harness/specs/workflows/WF-AUTO-SPARK.md": "sha256-
|
|
304
|
-
"Harness/specs/workflows/WF-AUTO.md": "sha256-
|
|
316
|
+
"Harness/specs/workflows/WF-AUTO-SPARK.md": "sha256-49a6272f9c40d9bd0ae22ae39d576bf3c6479bb9cbc56a24e8b62b31cdabf72c",
|
|
317
|
+
"Harness/specs/workflows/WF-AUTO.md": "sha256-78d1be4bfbc6618acc75d09f1f19016d741552924958ca2739ba9f3fd05c4d19",
|
|
305
318
|
"Harness/specs/workflows/WF-KERNEL.md": "sha256-70d608b12ab977c5dfb7038fb7677123bd39f29fb645b3046abbde7fa28d69a7",
|
|
306
319
|
"Harness/specs/workflows/WF-MAX.md": "sha256-4584a0870138db80d507dcfcebb32f34dfb6c9a4a3b154faad15f621b66536e7",
|
|
307
320
|
"Harness/specs/workflows/WF-STATE.md": "sha256-7108775358b44229302d3271083b349648d44b1c61de89167e4e99346821bf2a",
|
|
@@ -332,6 +345,7 @@
|
|
|
332
345
|
".agents/skills/wf-task-archive/SKILL.md": ".claude/skills/wf-task-archive/SKILL.md",
|
|
333
346
|
".agents/skills/wf-task-list/SKILL.md": ".claude/skills/wf-task-list/SKILL.md",
|
|
334
347
|
".agents/skills/wf-task-record/SKILL.md": ".claude/skills/wf-task-record/SKILL.md",
|
|
348
|
+
".agents/skills/wf-ui/SKILL.md": ".claude/skills/wf-ui/SKILL.md",
|
|
335
349
|
".agents/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
|
|
336
350
|
".agents/skills/wf/SKILL.md": ".claude/skills/wf/SKILL.md",
|
|
337
351
|
".claude/agents/architect-manager.md": ".claude/agents/architect-manager.md",
|
|
@@ -366,6 +380,7 @@
|
|
|
366
380
|
".claude/commands/wf-task-archive.md": ".claude/commands/wf-task-archive.md",
|
|
367
381
|
".claude/commands/wf-task-list.md": ".claude/commands/wf-task-list.md",
|
|
368
382
|
".claude/commands/wf-task-record.md": ".claude/commands/wf-task-record.md",
|
|
383
|
+
".claude/commands/wf-ui.md": ".claude/commands/wf-ui.md",
|
|
369
384
|
".claude/commands/wf-update.md": ".claude/commands/wf-update.md",
|
|
370
385
|
".claude/commands/wf.md": ".claude/commands/wf.md",
|
|
371
386
|
".claude/rules/ecc/common.md": ".claude/rules/ecc/common.md",
|
|
@@ -386,6 +401,7 @@
|
|
|
386
401
|
".claude/skills/wf-task-archive/SKILL.md": ".claude/skills/wf-task-archive/SKILL.md",
|
|
387
402
|
".claude/skills/wf-task-list/SKILL.md": ".claude/skills/wf-task-list/SKILL.md",
|
|
388
403
|
".claude/skills/wf-task-record/SKILL.md": ".claude/skills/wf-task-record/SKILL.md",
|
|
404
|
+
".claude/skills/wf-ui/SKILL.md": ".claude/skills/wf-ui/SKILL.md",
|
|
389
405
|
".claude/skills/wf-update/SKILL.md": ".claude/skills/wf-update/SKILL.md",
|
|
390
406
|
".claude/skills/wf/SKILL.md": ".claude/skills/wf/SKILL.md",
|
|
391
407
|
".codex/config.toml": ".codex/config.toml",
|
|
@@ -423,6 +439,7 @@
|
|
|
423
439
|
".opencode/commands/wf-task-archive.md": ".opencode/commands/wf-task-archive.md",
|
|
424
440
|
".opencode/commands/wf-task-list.md": ".opencode/commands/wf-task-list.md",
|
|
425
441
|
".opencode/commands/wf-task-record.md": ".opencode/commands/wf-task-record.md",
|
|
442
|
+
".opencode/commands/wf-ui.md": ".opencode/commands/wf-ui.md",
|
|
426
443
|
".opencode/commands/wf-update.md": ".opencode/commands/wf-update.md",
|
|
427
444
|
".opencode/commands/wf.md": ".opencode/commands/wf.md",
|
|
428
445
|
".opencode/plugins/harness-wf-status.mjs": ".opencode/plugins/harness-wf-status.mjs",
|
|
@@ -432,6 +449,9 @@
|
|
|
432
449
|
"Harness/MEMORY.md": "Harness/MEMORY.md",
|
|
433
450
|
"Harness/PROGRESS.md": "Harness/PROGRESS.md",
|
|
434
451
|
"Harness/README.md": "Harness/README.md",
|
|
452
|
+
"Harness/a2a/role-graph.json": "Harness/a2a/role-graph.json",
|
|
453
|
+
"Harness/a2a/runtime-registry.json": "Harness/a2a/runtime-registry.json",
|
|
454
|
+
"Harness/a2a/skills/terminal-control.json": "Harness/a2a/skills/terminal-control.json",
|
|
435
455
|
"Harness/memory/agent-lessons-patterns.md": "memory/agent-lessons-patterns.md",
|
|
436
456
|
"Harness/memory/routes.md": "memory/routes.md",
|
|
437
457
|
"Harness/memory/startup-hints.md": "memory/startup-hints.md",
|
|
@@ -442,15 +462,19 @@
|
|
|
442
462
|
"Harness/research/PRD.md": "Harness/research/PRD.md",
|
|
443
463
|
"Harness/research/README.md": "Harness/research/README.md",
|
|
444
464
|
"Harness/research/research-results.md": "Harness/research/research-results.md",
|
|
465
|
+
"Harness/scripts/README.md": "Harness/scripts/README.md",
|
|
466
|
+
"Harness/scripts/a2a-terminal.mjs": "Harness/scripts/a2a-terminal.mjs",
|
|
445
467
|
"Harness/scripts/archive-tasks.mjs": "Harness/scripts/archive-tasks.mjs",
|
|
446
468
|
"Harness/scripts/context-budget.mjs": "Harness/scripts/context-budget.mjs",
|
|
447
469
|
"Harness/scripts/l2-cache-telemetry.mjs": "Harness/scripts/l2-cache-telemetry.mjs",
|
|
448
470
|
"Harness/scripts/scan-clean.mjs": "Harness/scripts/scan-clean.mjs",
|
|
471
|
+
"Harness/scripts/sync-host-global.mjs": "Harness/scripts/sync-host-global.mjs",
|
|
449
472
|
"Harness/scripts/task-state.mjs": "Harness/scripts/task-state.mjs",
|
|
450
473
|
"Harness/scripts/validate-harness.mjs": "Harness/scripts/validate-harness.mjs",
|
|
451
474
|
"Harness/scripts/wf-auto-update-prompt.mjs": "Harness/scripts/wf-auto-update-prompt.mjs",
|
|
452
475
|
"Harness/scripts/wf-remove.mjs": "Harness/scripts/wf-remove.mjs",
|
|
453
476
|
"Harness/scripts/wf-update-check.mjs": "Harness/scripts/wf-update-check.mjs",
|
|
477
|
+
"Harness/scripts/wf-update-runner.mjs": "Harness/scripts/wf-update-runner.mjs",
|
|
454
478
|
"Harness/settings.json": "Harness/settings.json",
|
|
455
479
|
"Harness/specs/guides/ECC-GUIDE.md": "Harness/specs/guides/ECC-GUIDE.md",
|
|
456
480
|
"Harness/specs/guides/SETUP.md": "Harness/specs/guides/SETUP.md",
|
|
@@ -475,11 +499,11 @@
|
|
|
475
499
|
"Harness/specs/workflows/WF-MAX.md": "Harness/specs/workflows/WF-MAX.md",
|
|
476
500
|
"Harness/specs/workflows/WF-STATE.md": "Harness/specs/workflows/WF-STATE.md",
|
|
477
501
|
"Harness/specs/workflows/WF.md": "Harness/specs/workflows/WF.md",
|
|
478
|
-
"Harness/tasks/_template/ARTIFACTS.md": "Harness/tasks/_template/ARTIFACTS.md",
|
|
479
502
|
"Harness/tasks/_template/NAMING.md": "Harness/tasks/_template/NAMING.md",
|
|
480
|
-
"Harness/tasks/_template/NOTES.md": "Harness/tasks/_template/NOTES.md",
|
|
481
503
|
"Harness/tasks/_template/PLAN.md": "Harness/tasks/_template/PLAN.md",
|
|
504
|
+
"Harness/tasks/_template/PROBLEM.md": "Harness/tasks/_template/PROBLEM.md",
|
|
482
505
|
"Harness/tasks/_template/PROGRESS.md": "Harness/tasks/_template/PROGRESS.md",
|
|
506
|
+
"Harness/tasks/_template/REFERENCES.md": "Harness/tasks/_template/REFERENCES.md",
|
|
483
507
|
"Harness/tasks/_template/STATE.json": "Harness/tasks/_template/STATE.json",
|
|
484
508
|
"Harness/templates/ACCEPTANCE.template.md": "Harness/templates/ACCEPTANCE.template.md",
|
|
485
509
|
"Harness/templates/API_CONTRACT.template.md": "Harness/templates/API_CONTRACT.template.md",
|
|
@@ -26,6 +26,7 @@ which returns this same table without loading `Harness/MEMORY.md` or entering WF
|
|
|
26
26
|
| `/wf-task-list` | direct command | `/wf-task-list` | List all task capsules with status, phase, and dependencies. |
|
|
27
27
|
| `/wf-task-archive [--apply]` | direct command | `/wf-task-archive --apply` | Archive completed task capsules (dry-run by default). |
|
|
28
28
|
| `/wf-command-create <wf-command-id>` | direct command | `/wf-command-create wf-report --direct` | Create or modify wf-* command surfaces atomically from the command registry. |
|
|
29
|
+
| `/wf-ui` | direct command | `/wf-ui` | Start the local Harness backend and browser control panel. |
|
|
29
30
|
|
|
30
31
|
Source of truth: `Harness/README.md#Skill Commands` plus installed skills under
|
|
31
32
|
`.claude/skills/` (Claude Code and OpenCode adapters) or `.agents/skills/`
|
|
@@ -24,4 +24,6 @@ Run: `node Harness/scripts/task-state.mjs list --json`
|
|
|
24
24
|
## Return
|
|
25
25
|
|
|
26
26
|
- JSON output of all task capsules with status, phase, dependencies, and archive eligibility.
|
|
27
|
+
- Includes a `graph` section: roots, dependency edges, block edges, and orphaned dependency warnings.
|
|
28
|
+
- Human-readable mode renders the graph with ASCII arrows: `from ──▶ to` (depends) and `from ▸▸ to` (blocks).
|
|
27
29
|
- If the command fails, report the error and do not retry.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Open the Harness browser control panel for task capsules, workflow graphs, agent peers, settings, and terminal observability
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /wf-ui
|
|
6
|
+
|
|
7
|
+
Start the Harness browser control panel directly. This is a direct command.
|
|
8
|
+
Do not invoke a skill, do not start WF mode, and do not dispatch agents.
|
|
9
|
+
|
|
10
|
+
Run from the project root:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
create-harness-vibe-coding wf-ui --project . --host 127.0.0.1 --port 0 --open
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
If the global binary is not available, use the package fallback:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx create-harness-vibe-coding@0.8.19 wf-ui --project . --host 127.0.0.1 --port 0 --open
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Rules:
|
|
23
|
+
- Bind only to `127.0.0.1`.
|
|
24
|
+
- Use port `0` unless the user asks for a fixed port.
|
|
25
|
+
- Leave the server running until the user stops it.
|
|
26
|
+
- Return the local URL printed by the command.
|