@worca/app 1.0.0 → 1.1.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 +22 -9
- package/agents/clarify.meta.json +4 -4
- package/agents/decomposer.meta.json +5 -5
- package/agents/implementer.meta.json +15 -5
- package/agents/manualTestsChecklist.meta.json +5 -4
- package/agents/manualWebUiTesting.meta.json +9 -4
- package/agents/planReviewer.meta.json +12 -4
- package/agents/planner.meta.json +12 -5
- package/agents/refiner.meta.json +15 -4
- package/agents/reviewer.meta.json +14 -4
- package/agents/worca-cc-clarify.md +7 -0
- package/agents/worca-cc-code-reviewer.md +11 -6
- package/agents/worca-cc-decomposer.md +7 -0
- package/agents/worca-cc-implementer.md +9 -0
- package/agents/worca-cc-manual-tests-checklist.md +8 -5
- package/agents/worca-cc-manual-web-ui-testing.md +10 -6
- package/agents/worca-cc-plan-refiner.md +11 -6
- package/agents/worca-cc-plan-reviewer.md +10 -7
- package/agents/worca-cc-planner.md +9 -0
- package/agents/worca-cc-workspace-reviewer.md +11 -4
- package/agents/worca-cc-workspace-scanner.md +8 -4
- package/agents/workspaceReviewer.meta.json +15 -4
- package/agents/workspaceScanner.meta.json +5 -4
- package/package.json +8 -2
- package/skills/worca/SKILL.md +5 -5
- package/src/cli/render.mjs +148 -0
- package/src/cli/worca-cc.mjs +319 -45
- package/src/core/agent-gen.mjs +69 -31
- package/src/core/agent-registry.mjs +124 -144
- package/src/core/agent-store.mjs +164 -4
- package/src/core/artifacts.mjs +189 -21
- package/src/core/ask/catalog.mjs +111 -0
- package/src/core/ask/comment-deps.mjs +55 -0
- package/src/core/ask/events.mjs +506 -0
- package/src/core/ask/follow.mjs +107 -0
- package/src/core/ask/git-allowlist.mjs +226 -0
- package/src/core/ask/limits.mjs +54 -0
- package/src/core/ask/mcp-stdio.mjs +135 -0
- package/src/core/ask/models.mjs +125 -0
- package/src/core/ask/prompt.mjs +261 -0
- package/src/core/ask/proposal.mjs +170 -0
- package/src/core/ask/redact.mjs +30 -0
- package/src/core/ask/spawn.mjs +153 -0
- package/src/core/ask/store.mjs +360 -0
- package/src/core/ask/tool-deps.mjs +63 -0
- package/src/core/ask/tools.mjs +848 -0
- package/src/core/ask/turn.mjs +416 -0
- package/src/core/ask/worktree-deps.mjs +27 -0
- package/src/core/ask/worktrees.mjs +285 -0
- package/src/core/chat/command-router.mjs +20 -3
- package/src/core/claude-runner.mjs +434 -57
- package/src/core/config.mjs +264 -41
- package/src/core/cost-budget.mjs +29 -2
- package/src/core/db.mjs +684 -47
- package/src/core/diff-anchor.mjs +213 -0
- package/src/core/diff-comments.mjs +273 -0
- package/src/core/engine-select.mjs +32 -0
- package/src/core/git-info.mjs +49 -10
- package/src/core/graph/builtin-workflows.mjs +51 -0
- package/src/core/graph/executor.mjs +894 -0
- package/src/core/graph/registry-ports.mjs +12 -0
- package/src/core/graph/scheduler.mjs +1065 -0
- package/src/core/graph/seed-templates.mjs +318 -0
- package/src/core/model-env.mjs +112 -8
- package/src/core/model-test.mjs +79 -0
- package/src/core/orchestrator.mjs +902 -4098
- package/src/core/overview-agent.mjs +15 -3
- package/src/core/phases.mjs +208 -537
- package/src/core/pipeline-delete.mjs +13 -2
- package/src/core/plugin-api.mjs +8 -3
- package/src/core/plugin-config.mjs +178 -28
- package/src/core/plugin-inventory.mjs +6 -2
- package/src/core/plugin-manifest.mjs +199 -11
- package/src/core/plugin-models.mjs +1 -0
- package/src/core/plugin-repo.mjs +16 -4
- package/src/core/plugin-shim-child.mjs +9 -3
- package/src/core/plugin-shim.mjs +77 -14
- package/src/core/plugin-store.mjs +236 -29
- package/src/core/plugin-workflows.mjs +90 -41
- package/src/core/preflight.mjs +135 -3
- package/src/core/projects.mjs +7 -5
- package/src/core/protocol.mjs +8 -35
- package/src/core/recoverable-error.mjs +1 -1
- package/src/core/run-harness.mjs +3585 -0
- package/src/core/run-manifest.mjs +5 -1
- package/src/core/settings.mjs +109 -13
- package/src/core/skills.mjs +10 -3
- package/src/core/source-bindings.mjs +175 -0
- package/src/core/sources.mjs +87 -25
- package/src/core/stats.mjs +25 -6
- package/src/core/title.mjs +51 -4
- package/src/core/workflows.mjs +358 -259
- package/src/core/workspace-scan.mjs +4 -0
- package/src/core/worktree.mjs +98 -7
- package/src/shared/graph/agent-meta.mjs +278 -0
- package/src/shared/graph/constants.mjs +105 -0
- package/src/shared/graph/geometry.mjs +157 -0
- package/src/shared/graph/layout.mjs +134 -0
- package/src/shared/graph/loops.mjs +130 -0
- package/src/shared/graph/manifest.mjs +257 -0
- package/src/shared/graph/ports.mjs +153 -0
- package/src/shared/graph/route.mjs +397 -0
- package/src/shared/graph/template.mjs +165 -0
- package/src/shared/graph/thumbnail.mjs +67 -0
- package/src/shared/graph/validate.mjs +491 -0
- package/src/shared/graph/verdict.mjs +41 -0
- package/ui/public/app.js +4008 -1670
- package/ui/public/ask-markdown.mjs +145 -0
- package/ui/public/ask-model.mjs +264 -0
- package/ui/public/ask-panel.mjs +1880 -0
- package/ui/public/chat-settings-view.mjs +6 -2
- package/ui/public/diff-view.mjs +66 -11
- package/ui/public/file-tree.mjs +305 -0
- package/ui/public/graph/composer.mjs +889 -0
- package/ui/public/graph/inspector.mjs +183 -0
- package/ui/public/graph/model.mjs +37 -0
- package/ui/public/graph/palette.mjs +144 -0
- package/ui/public/graph/run-decor.mjs +410 -0
- package/ui/public/graph/run-hosts.mjs +201 -0
- package/ui/public/graph/save-dialog.mjs +56 -0
- package/ui/public/graph/view.mjs +858 -0
- package/ui/public/guardrails-view.mjs +4 -2
- package/ui/public/hljs-loader.mjs +180 -0
- package/ui/public/index.html +269 -265
- package/ui/public/log-filter.mjs +22 -4
- package/ui/public/log-line.mjs +45 -19
- package/ui/public/models-view.mjs +171 -9
- package/ui/public/plugins-view.mjs +106 -4
- package/ui/public/source-pane.mjs +190 -8
- package/ui/public/stats-view.mjs +81 -1
- package/ui/public/style.css +1459 -229
- package/ui/public/syntax-highlight.mjs +270 -0
- package/ui/public/thinking-orb.mjs +110 -0
- package/ui/server.mjs +1667 -98
- package/src/core/channels.mjs +0 -302
- package/src/core/runners.mjs +0 -167
- package/src/core/workflow-validator.mjs +0 -185
- package/ui/public/composer-core.mjs +0 -211
package/README.md
CHANGED
|
@@ -12,9 +12,10 @@ quality gates, pausing to ask *you* the questions that matter, and keeping
|
|
|
12
12
|
every run isolated in its own git worktree and branch.
|
|
13
13
|
|
|
14
14
|
It ships as a **web UI**, a **CLI**, and an installable **`/worca` skill** for
|
|
15
|
-
Claude Code — all running the same engine.
|
|
15
|
+
Claude Code — all running the same engine. See the
|
|
16
|
+
**[architecture in one picture](docs/ARCHITECTURE.md)**.
|
|
16
17
|
|
|
17
|
-
](docs/ARCHITECTURE.md)
|
|
18
19
|
|
|
19
20
|
## How a run works
|
|
20
21
|
|
|
@@ -62,6 +63,8 @@ and durations, the clarify Q&A, agent transcripts, and logs:
|
|
|
62
63
|
- **Mock mode** — the entire pipeline runs offline with a deterministic mock
|
|
63
64
|
(no `claude`, no tokens) for demos, development, and CI.
|
|
64
65
|
|
|
66
|
+

|
|
67
|
+
|
|
65
68
|
### Agents
|
|
66
69
|
|
|
67
70
|
- **11 data-driven agents** — planner, plan refiner, plan reviewer,
|
|
@@ -69,7 +72,8 @@ and durations, the clarify Q&A, agent transcripts, and logs:
|
|
|
69
72
|
vertical-slice tasks, one implementer each), manual-tests checklist, manual
|
|
70
73
|
web-UI testing (drives a browser via Playwright), workspace scanner, and
|
|
71
74
|
workspace reviewer. Each agent is a markdown prompt plus a metadata sidecar
|
|
72
|
-
— new agents drop in without engine
|
|
75
|
+
declaring its typed input/output ports — new agents drop in without engine
|
|
76
|
+
changes.
|
|
73
77
|
- **AI-assisted agent creation** — describe a new agent in the UI and Worca
|
|
74
78
|
generates both its system prompt and metadata (or paste your own prompt and
|
|
75
79
|
let it infer just the wiring); edit, regenerate, and save.
|
|
@@ -79,11 +83,13 @@ and durations, the clarify Q&A, agent transcripts, and logs:
|
|
|
79
83
|
|
|
80
84
|
### Workflow Composer
|
|
81
85
|
|
|
82
|
-
- **Compose your own pipeline** — drag agents onto a canvas
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
cycle cap
|
|
86
|
-
|
|
86
|
+
- **Compose your own pipeline** — drag agents onto a canvas and wire their typed
|
|
87
|
+
ports: each card declares what it consumes and produces, a wire only connects
|
|
88
|
+
compatible ports, and a wire that closes a cycle becomes a loop with its own
|
|
89
|
+
cycle cap (a reviewer keeps sending work back until it passes or the budget
|
|
90
|
+
runs out). Flow cards — **Task** (the run's request), **End** (the result),
|
|
91
|
+
**AND**, **OR**, **Combine** — express joins, choices and merges without any
|
|
92
|
+
code. Saved pipelines appear in the New Pipeline picker.
|
|
87
93
|
|
|
88
94
|

|
|
89
95
|
|
|
@@ -158,7 +164,13 @@ Requirements:
|
|
|
158
164
|
|
|
159
165
|
- **Node.js >= 22.13.0** (the built-in `node:sqlite` store)
|
|
160
166
|
- The **[Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI**
|
|
161
|
-
(`claude`) on your `PATH` — for real runs; mock mode needs nothing
|
|
167
|
+
(`claude`) on your `PATH` — for real runs; mock mode needs nothing.
|
|
168
|
+
On **native Windows** both the [native installer](https://docs.anthropic.com/en/docs/claude-code/setup)
|
|
169
|
+
(`claude.exe`) and `npm install -g @anthropic-ai/claude-code` work: npm puts a
|
|
170
|
+
`claude.cmd` shim on `PATH` that Node cannot spawn, so Worca runs the package's
|
|
171
|
+
native `claude.exe` next to it instead. If that binary is missing (the package's
|
|
172
|
+
`postinstall` didn't run) or the layout isn't npm's, Worca says so rather than
|
|
173
|
+
a bare `ENOENT`; `WORCA_CLAUDE_BIN` can always point at a `claude.exe` directly.
|
|
162
174
|
|
|
163
175
|
## Quick start
|
|
164
176
|
|
|
@@ -209,6 +221,7 @@ The skill starts the same deterministic orchestrator.
|
|
|
209
221
|
|
|
210
222
|
## Documentation
|
|
211
223
|
|
|
224
|
+
- [Architecture](docs/ARCHITECTURE.md) — the whole stack in one picture
|
|
212
225
|
- [Guardrails](docs/guardrails.md) — policy model, enforcement, limitations
|
|
213
226
|
- [Storage](docs/storage.md) — where state lives, project keys, migration
|
|
214
227
|
- [Releasing](docs/RELEASING.md) — how `@worca/app` versions are published
|
package/agents/clarify.meta.json
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "clarify",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "clarify",
|
|
5
|
+
"inputs": [{ "id": "task", "type": "md" }],
|
|
6
|
+
"outputs": [{ "id": "answers", "type": "json", "filename": "clarify.json", "artifactKind": "clarify" }],
|
|
3
7
|
"domain": "coding",
|
|
4
8
|
"displayName": "Clarify",
|
|
5
9
|
"description": "Turns hidden decisions into questions before planning. Multiple-choice, so later steps never guess.",
|
|
@@ -7,11 +11,7 @@
|
|
|
7
11
|
"icon": "<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M9.4 9.3a2.7 2.7 0 0 1 5.2 1c0 1.8-2.6 2.1-2.6 3.6\" stroke-linecap=\"round\" fill=\"none\"/><circle cx=\"12\" cy=\"17\" r=\"0.7\" fill=\"currentColor\" stroke=\"none\"/>",
|
|
8
12
|
"agentFile": "worca-cc-clarify.md",
|
|
9
13
|
"runnerType": "clarifier",
|
|
10
|
-
"loopSource": false,
|
|
11
14
|
"fanOut": true,
|
|
12
|
-
"produces": ["clarify"],
|
|
13
|
-
"consumes": ["userPrompt"],
|
|
14
|
-
"connectsTo": ["planner"],
|
|
15
15
|
"asksQuestions": true,
|
|
16
16
|
"questionsLocked": true,
|
|
17
17
|
"questionsDefault": true,
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "decomposer",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "decomposer",
|
|
5
|
+
"promptHints": "Read the approved plan and break it into tracer-bullet vertical slices grouped into ordered phases. Within a phase, tasks must be parallel-safe and edit DISJOINT files; dependencies are expressed only as phase order. Write each task as a SELF-CONTAINED markdown file so an implementer needs nothing but that file.",
|
|
6
|
+
"inputs": [{ "id": "plan", "type": "md" }],
|
|
7
|
+
"outputs": [{ "id": "tasks", "type": "json", "filename": "decomposition.json", "artifactKind": "decomposition" }],
|
|
3
8
|
"domain": "coding",
|
|
4
9
|
"displayName": "Decompose",
|
|
5
10
|
"description": "Splits an approved plan into vertical-slice tasks. Each task gets its own implementer.",
|
|
@@ -8,12 +13,7 @@
|
|
|
8
13
|
"icon": "<path d=\"M12 3v6M12 9l-5 5M12 9l5 5M5 14h2M17 14h2M6 18h2M16 18h2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
|
|
9
14
|
"agentFile": "worca-cc-decomposer.md",
|
|
10
15
|
"runnerType": "producer",
|
|
11
|
-
"loopSource": false,
|
|
12
16
|
"fanOut": true,
|
|
13
|
-
"produces": ["decomposition"],
|
|
14
|
-
"consumes": ["plan"],
|
|
15
|
-
"optionalConsumes": [],
|
|
16
|
-
"connectsTo": ["implementer"],
|
|
17
17
|
"asksQuestions": true,
|
|
18
18
|
"questionsLocked": false,
|
|
19
19
|
"questionsDefault": false,
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "implementer",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "implementer",
|
|
5
|
+
"sideEffect": "code",
|
|
6
|
+
"workspaceFanOut": true,
|
|
7
|
+
"workspaceStrategy": "task",
|
|
8
|
+
"promptHints": "Work inside the project directory (your cwd). Commit nothing; just edit files and tests.",
|
|
9
|
+
"inputs": [
|
|
10
|
+
{ "id": "fix", "type": "md", "required": false, "loop": true, "as": "fix-review",
|
|
11
|
+
"directive": "Address EVERY critical and major issue in the review below, then re-run the tests. Follow the plan; deviate only if something does not work at all." },
|
|
12
|
+
{ "id": "task", "type": "json", "required": false, "expands": true,
|
|
13
|
+
"directive": "Implement the task below using TDD (red-green-refactor). The TASK file is a self-contained vertical slice and is AUTHORITATIVE — do exactly what it says and nothing outside its scope. The plan is reference/context only; you do NOT need to read the whole plan." },
|
|
14
|
+
{ "id": "plan", "type": "md",
|
|
15
|
+
"directive": "Implement the plan using TDD (red-green-refactor). Follow it with NO deviation; deviate slightly only if a step does not work at all." }
|
|
16
|
+
],
|
|
17
|
+
"outputs": [{ "id": "done", "type": "void" }],
|
|
3
18
|
"domain": "coding",
|
|
4
19
|
"displayName": "Implementation",
|
|
5
20
|
"description": "Writes the code from the approved plan, strict TDD. In fix mode, addresses only the issues a review flagged.",
|
|
@@ -7,12 +22,7 @@
|
|
|
7
22
|
"icon": "<path d=\"M9 8l-4 4 4 4M15 8l4 4-4 4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
|
|
8
23
|
"agentFile": "worca-cc-implementer.md",
|
|
9
24
|
"runnerType": "producer",
|
|
10
|
-
"loopSource": false,
|
|
11
25
|
"fanOut": true,
|
|
12
|
-
"produces": ["code"],
|
|
13
|
-
"consumes": ["plan","review"],
|
|
14
|
-
"optionalConsumes": ["review"],
|
|
15
|
-
"connectsTo": ["reviewer","manualTestsChecklist"],
|
|
16
26
|
"asksQuestions": true,
|
|
17
27
|
"questionsLocked": false,
|
|
18
28
|
"questionsDefault": false,
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "manualTestsChecklist",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "manual-tests-checklist",
|
|
5
|
+
"promptHints": "Read the implementation plan and the implemented changes ({diffInstruction}), then write a markdown checklist of concrete manual test cases a human can run against the app. Each case: a `- [ ]` line with steps and the expected result.",
|
|
6
|
+
"inputs": [{ "id": "plan", "type": "md" }],
|
|
7
|
+
"outputs": [{ "id": "checklist", "type": "md", "filename": "manual-tests-checklist.md" }],
|
|
3
8
|
"domain": "coding",
|
|
4
9
|
"displayName": "Manual Tests Checklist",
|
|
5
10
|
"description": "Drafts a manual test checklist for the change. User-visible flows, edge cases, regressions worth clicking through.",
|
|
@@ -7,10 +12,6 @@
|
|
|
7
12
|
"icon": "<rect x=\"6\" y=\"4\" width=\"12\" height=\"17\" rx=\"2\"/><path d=\"M9.5 4V2.8h5V4\" stroke-linejoin=\"round\"/><path d=\"M8.8 12l1.6 1.6L13.4 10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
|
|
8
13
|
"agentFile": "worca-cc-manual-tests-checklist.md",
|
|
9
14
|
"runnerType": "producer",
|
|
10
|
-
"loopSource": false,
|
|
11
|
-
"produces": ["checklist"],
|
|
12
|
-
"consumes": ["plan","code"],
|
|
13
|
-
"connectsTo": ["manualWebUiTesting"],
|
|
14
15
|
"asksQuestions": true,
|
|
15
16
|
"questionsLocked": false,
|
|
16
17
|
"questionsDefault": false,
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "manualWebUiTesting",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "manual-web-ui-testing",
|
|
5
|
+
"promptHints": "Execute the manual test checklist against the running web UI using the Playwright tools. Severity calibration: a failing manual case is at least major.",
|
|
6
|
+
"verdict": { "filename": "webui-review-cycle{cycle}.json" },
|
|
7
|
+
"inputs": [{ "id": "checklist", "type": "md" }],
|
|
8
|
+
"outputs": [
|
|
9
|
+
{ "id": "review", "type": "md", "when": "blocking", "filename": "webui-review-cycle{cycle}.md", "artifactKind": "webui" },
|
|
10
|
+
{ "id": "pass", "type": "void", "when": "clean" }
|
|
11
|
+
],
|
|
3
12
|
"domain": "coding",
|
|
4
13
|
"displayName": "Manual web UI testing",
|
|
5
14
|
"description": "Runs the manual checklist in the live web UI via Playwright. Reports what passed, failed, or blocked.",
|
|
@@ -7,10 +16,6 @@
|
|
|
7
16
|
"icon": "<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M10 8.5l5 3.5-5 3.5V8.5Z\" fill=\"currentColor\" stroke=\"none\"/>",
|
|
8
17
|
"agentFile": "worca-cc-manual-web-ui-testing.md",
|
|
9
18
|
"runnerType": "verifier",
|
|
10
|
-
"loopSource": true,
|
|
11
|
-
"produces": ["review"],
|
|
12
|
-
"consumes": ["checklist","code"],
|
|
13
|
-
"connectsTo": ["implementer"],
|
|
14
19
|
"asksQuestions": true,
|
|
15
20
|
"questionsLocked": false,
|
|
16
21
|
"questionsDefault": false,
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "planReviewer",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "plan-review",
|
|
5
|
+
"promptHints": "Review the implementation PLAN against the original request and the real codebase. Do NOT rewrite the plan. Only critical/major block (the planner then revises).",
|
|
6
|
+
"wantsRequest": true,
|
|
7
|
+
"workspaceFanOut": true,
|
|
8
|
+
"workspaceStrategy": "explore",
|
|
9
|
+
"verdict": { "filename": "plan-review-cycle{cycle}.json" },
|
|
10
|
+
"inputs": [{ "id": "plan", "type": "md" }],
|
|
11
|
+
"outputs": [
|
|
12
|
+
{ "id": "review", "type": "md", "when": "blocking", "filename": "{base}-plan-review.md", "store": "project" },
|
|
13
|
+
{ "id": "pass", "type": "void", "when": "clean" }
|
|
14
|
+
],
|
|
3
15
|
"domain": "coding",
|
|
4
16
|
"displayName": "Plan Review",
|
|
5
17
|
"description": "Reviews the plan against the request and the codebase. Blocking issues bounce it back for a cold re-plan.",
|
|
@@ -7,11 +19,7 @@
|
|
|
7
19
|
"icon": "<path d=\"M10.5 4a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13Z\"/><path d=\"M15.5 15.5L21 21\" stroke-linecap=\"round\"/><path d=\"M7.6 10.3l2 2 3.3-3.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
|
|
8
20
|
"agentFile": "worca-cc-plan-reviewer.md",
|
|
9
21
|
"runnerType": "verifier",
|
|
10
|
-
"loopSource": true,
|
|
11
22
|
"fanOut": true,
|
|
12
|
-
"produces": ["review"],
|
|
13
|
-
"consumes": ["plan"],
|
|
14
|
-
"connectsTo": ["planner", "implementer", "decomposer"],
|
|
15
23
|
"asksQuestions": true,
|
|
16
24
|
"questionsLocked": false,
|
|
17
25
|
"questionsDefault": false,
|
package/agents/planner.meta.json
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "planner",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "planner-plan",
|
|
5
|
+
"promptHints": "Write a complete, build-ready implementation plan. It MUST contain concrete code snippets for the features and MUST end with a \"## Clarifications (Q&A)\" section reproducing the questions and the user answers below so the reviewer can see them.",
|
|
6
|
+
"workspaceFanOut": true,
|
|
7
|
+
"workspaceStrategy": "explore",
|
|
8
|
+
"inputs": [
|
|
9
|
+
{ "id": "task", "type": "md" },
|
|
10
|
+
{ "id": "answers", "type": "json", "required": false, "as": "answers" },
|
|
11
|
+
{ "id": "revise", "type": "md", "required": false, "loop": true,
|
|
12
|
+
"directive": "## Revise to address the review\n\nA reviewer found issues with the previous plan. Re-plan from scratch (cold start) and address EVERY critical and major finding in the review below. Preserve the \"## Clarifications (Q&A)\" section." }
|
|
13
|
+
],
|
|
14
|
+
"outputs": [{ "id": "plan", "type": "md", "filename": "{base}{vsuffix}.md", "store": "project" }],
|
|
3
15
|
"domain": "coding",
|
|
4
16
|
"displayName": "Plan",
|
|
5
17
|
"description": "Explores the codebase and writes the implementation plan. Architecture, task breakdown, concrete code snippets; can ask clarifying questions first.",
|
|
@@ -7,12 +19,7 @@
|
|
|
7
19
|
"icon": "<path d=\"M8 6h11M8 12h11M8 18h8\" stroke-linecap=\"round\"/><circle cx=\"4\" cy=\"6\" r=\"1.1\"/><circle cx=\"4\" cy=\"12\" r=\"1.1\"/><circle cx=\"4\" cy=\"18\" r=\"1.1\"/>",
|
|
8
20
|
"agentFile": "worca-cc-planner.md",
|
|
9
21
|
"runnerType": "producer",
|
|
10
|
-
"loopSource": false,
|
|
11
22
|
"fanOut": true,
|
|
12
|
-
"produces": ["plan"],
|
|
13
|
-
"consumes": ["userPrompt", "clarify", "review"],
|
|
14
|
-
"optionalConsumes": ["clarify", "review"],
|
|
15
|
-
"connectsTo": ["refiner", "implementer", "planReviewer", "decomposer"],
|
|
16
23
|
"asksQuestions": true,
|
|
17
24
|
"questionsLocked": false,
|
|
18
25
|
"questionsDefault": false,
|
package/agents/refiner.meta.json
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "refiner",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "refiner",
|
|
5
|
+
"promptHints": "Read the current plan, critically review it INCLUDING its code snippets, then write an improved version and a machine-readable review.\n\nMark a finding critical/major only if it must be fixed before implementation.",
|
|
6
|
+
"wantsRequest": true,
|
|
7
|
+
"workspaceFanOut": true,
|
|
8
|
+
"workspaceStrategy": "explore",
|
|
9
|
+
"verdict": { "filename": "refine-review-cycle{cycle}.json" },
|
|
10
|
+
"inputs": [
|
|
11
|
+
{ "id": "plan", "type": "md" },
|
|
12
|
+
{ "id": "revise", "type": "md", "required": false, "loop": true }
|
|
13
|
+
],
|
|
14
|
+
"outputs": [
|
|
15
|
+
{ "id": "plan", "type": "md", "when": "clean", "filename": "{base}{vsuffix}.md", "store": "project" },
|
|
16
|
+
{ "id": "revise", "type": "md", "when": "blocking", "filename": "{base}{vsuffix}.md", "store": "project", "artifactKind": "plan" }
|
|
17
|
+
],
|
|
3
18
|
"domain": "coding",
|
|
4
19
|
"displayName": "Refine Plan",
|
|
5
20
|
"description": "Rewrites the latest plan into a tighter version. Fixes structure, correctness, and code snippets until no blocking issues remain.",
|
|
@@ -7,11 +22,7 @@
|
|
|
7
22
|
"icon": "<path d=\"M12 3v3M12 18v3M4.5 7.5l2 1M17.5 15.5l2 1M4.5 16.5l2-1M17.5 8.5l2-1\" stroke-linecap=\"round\"/><path d=\"M12 8.2l1.2 2.6L16 12l-2.8 1.2L12 15.8l-1.2-2.6L8 12l2.8-1.2L12 8.2Z\" stroke-linejoin=\"round\"/>",
|
|
8
23
|
"agentFile": "worca-cc-plan-refiner.md",
|
|
9
24
|
"runnerType": "producer",
|
|
10
|
-
"loopSource": false,
|
|
11
25
|
"fanOut": true,
|
|
12
|
-
"produces": ["plan","review"],
|
|
13
|
-
"consumes": ["plan"],
|
|
14
|
-
"connectsTo": ["implementer","refiner","decomposer"],
|
|
15
26
|
"asksQuestions": true,
|
|
16
27
|
"questionsLocked": false,
|
|
17
28
|
"questionsDefault": false,
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "reviewer",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "reviewer",
|
|
5
|
+
"promptHints": "Review the git diff of what was implemented against the plan.",
|
|
6
|
+
"wantsRequest": true,
|
|
7
|
+
"workspaceStrategy": "review",
|
|
8
|
+
"verdict": { "filename": "impl-review-cycle{cycle}.json" },
|
|
9
|
+
"inputs": [
|
|
10
|
+
{ "id": "plan", "type": "md" },
|
|
11
|
+
{ "id": "done", "type": "void", "required": false, "as": "worktree" }
|
|
12
|
+
],
|
|
13
|
+
"outputs": [
|
|
14
|
+
{ "id": "review", "type": "md", "when": "blocking", "filename": "{base}-impl-review.md", "store": "project" },
|
|
15
|
+
{ "id": "pass", "type": "void", "when": "clean" }
|
|
16
|
+
],
|
|
3
17
|
"domain": "coding",
|
|
4
18
|
"displayName": "Review Implementation",
|
|
5
19
|
"description": "Reviews the implementation diff against the plan. Honest verdict; blocking findings loop back to the implementer.",
|
|
@@ -7,11 +21,7 @@
|
|
|
7
21
|
"icon": "<path d=\"M12 3l7 3v5c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6l7-3Z\" stroke-linejoin=\"round\"/><path d=\"M9 12l2 2 4-4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
|
|
8
22
|
"agentFile": "worca-cc-code-reviewer.md",
|
|
9
23
|
"runnerType": "verifier",
|
|
10
|
-
"loopSource": true,
|
|
11
24
|
"fanOut": true,
|
|
12
|
-
"produces": ["review"],
|
|
13
|
-
"consumes": ["plan","code"],
|
|
14
|
-
"connectsTo": ["implementer","manualTestsChecklist"],
|
|
15
25
|
"asksQuestions": true,
|
|
16
26
|
"questionsLocked": false,
|
|
17
27
|
"questionsDefault": false,
|
|
@@ -7,6 +7,13 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Clarify** agent in a deterministic multi-agent pipeline (Clarify -> Plan -> Refine -> Implement -> Review). You are spawned headlessly by an orchestrator script and run BEFORE the Planner. Your sole job is to surface the few genuine open decisions, so the Planner can plan without guessing. You NEVER write a plan.
|
|
9
9
|
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `task`** (md) — the user's task/prompt (plus any attached markdown / extra files).
|
|
15
|
+
- **out `answers`** (json) — your questions, in the shape contracted below. The engine folds the user's answers back into this same file.
|
|
16
|
+
|
|
10
17
|
## Cardinal rule: NEVER ASSUME, NEVER PAD
|
|
11
18
|
|
|
12
19
|
Surface the decisions that **materially** change the plan — core requirements, scope boundaries, externally-visible behavior, data shapes, or library/architecture choices — that you genuinely cannot resolve from the task text or the codebase. **Actively hunt for the things a downstream agent (planner/implementer) would otherwise silently assume** and turn each into a question. At the same time, do NOT ask stupid or unnecessary questions: for **low-impact** details (naming, minor file placement, obvious conventions, anything readable from the codebase), do NOT ask — the Planner will pick a sensible default. Ask only what you genuinely cannot decide.
|
|
@@ -7,12 +7,17 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Code Reviewer** agent in a deterministic Plan -> Refine -> Implement -> Review pipeline. You are spawned headlessly, once per review cycle. After your review, the orchestrator runs the Implementer in FIX mode against your findings, then runs you again — looping until you report NO critical and NO major issues (or a cycle cap with a user gate). Your honesty about severities controls the loop: do not downgrade real defects to end it, and do not invent blocking issues to prolong it.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `plan`** (md) — the plan that was implemented.
|
|
15
|
+
- **in `done`** (void, optional) — the implementer's staged worktree. Review THAT tree's diff.
|
|
16
|
+
- **out `review`** (md, on a blocking verdict) — your review markdown.
|
|
17
|
+
- **out `pass`** (void, on a clean verdict) — the no-blocking-issues signal; it carries no file.
|
|
18
|
+
- **verdict** (json) — the review JSON the orchestrator gates on; its shape is contracted below.
|
|
19
|
+
|
|
20
|
+
Your cwd is the project repo, so you can run git. The cycle number is in the task prompt.
|
|
16
21
|
|
|
17
22
|
## What to do
|
|
18
23
|
|
|
@@ -12,6 +12,13 @@ path is in the prompt). Break it into **tracer-bullet vertical slices** so that
|
|
|
12
12
|
parallel implementers can each pick up one self-contained task file without reading
|
|
13
13
|
the whole plan.
|
|
14
14
|
|
|
15
|
+
## Ports
|
|
16
|
+
|
|
17
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
18
|
+
|
|
19
|
+
- **in `plan`** (md) — the approved implementation plan to split.
|
|
20
|
+
- **out `tasks`** (json) — the decomposition manifest, in the shape contracted below. The per-task markdown files go in the tasks directory the prompt names.
|
|
21
|
+
|
|
15
22
|
## Draft vertical slices
|
|
16
23
|
|
|
17
24
|
Break the plan into thin vertical slices. Each slice is a tracer bullet that cuts
|
|
@@ -7,6 +7,15 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Implementer** agent in a deterministic Plan -> Refine -> Implement -> Review pipeline. You are spawned headlessly. You operate in ONE of two modes, stated in the task prompt: `implement` or `fix`. You write real code into the target project working directory (your cwd is the project). The Code Reviewer will inspect your changes via `git diff` against the orchestrator's checkpoint commit, so your changes must be real, committed-quality work. You do not need to stage or commit — the orchestrator records intent-to-add for any new files after you finish so they show up in the reviewer's diff.
|
|
9
9
|
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `fix`** (md, optional, loop) — a code review to address. When it is bound, you are in FIX mode.
|
|
15
|
+
- **in `task`** (json, optional) — one decomposed vertical slice. When it is bound, that task file is authoritative and the plan is reference only.
|
|
16
|
+
- **in `plan`** (md) — the approved implementation plan. Always bound.
|
|
17
|
+
- **out `done`** (void) — the signal that the working tree now carries your change; it carries no file.
|
|
18
|
+
|
|
10
19
|
## Cardinal rule: FOLLOW THE PLAN
|
|
11
20
|
|
|
12
21
|
The latest plan (its absolute path is in the prompt) is authoritative. Implement it faithfully, step by step, with NO deviation in approach, file layout, naming, or scope. Do not add features the plan does not call for. Do not refactor unrelated code. Do not "improve" the design on your own initiative.
|
|
@@ -7,11 +7,14 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Manual Tests Checklist** agent in a deterministic multi-agent pipeline (Plan -> Refine -> Implement -> Review, with optional manual-testing steps). You are spawned headlessly. Your single deliverable is a **markdown checklist of manual test cases** written to the absolute path given in the task prompt. You do not run the app, write code, or emit a review verdict — you author the checklist that a human (or the Manual web UI testing agent) will execute.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `plan`** (md) — the approved implementation plan.
|
|
15
|
+
- **out `checklist`** (md) — the manual test checklist you author.
|
|
16
|
+
|
|
17
|
+
The user's original request comes with the task prompt. Access to the implementation is via git: your cwd is the project repo. If a checkpoint ref is named, `git diff <ref>` shows the implemented change (new files are intent-to-added, so they appear); otherwise use `git diff` plus `git diff HEAD`, and always cross-check with `git status` and `git diff --stat` (a plain `git diff` can look empty when the change is entirely new files).
|
|
15
18
|
|
|
16
19
|
## What to do
|
|
17
20
|
1. Read the plan in full to learn the intended behavior, scope, and acceptance criteria.
|
|
@@ -7,12 +7,16 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Manual web UI testing** agent in a deterministic Plan -> Refine -> Implement -> Review pipeline (with manual-testing steps). You are spawned headlessly, once per testing cycle. You **execute the manual test checklist against the live, running web UI** using the Playwright MCP browser tools, and you write a verdict JSON. The orchestrator gates on your verdict: if you report critical/major issues, it runs the Implementer in FIX mode and re-runs you — looping until you report none (or a cycle cap with a user gate). Your honesty about severities controls the loop: do not downgrade real defects to end it, and do not invent blocking issues to prolong it.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `checklist`** (md) — the manual test checklist to execute (authored by the Manual Tests Checklist agent). Each `- [ ]` item is a case with steps + an Expected result.
|
|
15
|
+
- **out `review`** (md, on a blocking verdict) — your findings written up as markdown.
|
|
16
|
+
- **out `pass`** (void, on a clean verdict) — the no-blocking-issues signal; it carries no file.
|
|
17
|
+
- **verdict** (json) — the review JSON the orchestrator gates on; its shape is contracted below.
|
|
18
|
+
|
|
19
|
+
The cycle number comes with the task prompt, as does an optional screenshots directory under the pipeline dir for evidence.
|
|
16
20
|
|
|
17
21
|
## Getting the app running (required)
|
|
18
22
|
The UI must be reachable before you can test it.
|
|
@@ -7,12 +7,17 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Plan Refiner** agent in a deterministic Plan -> Refine -> Implement -> Review pipeline. You are spawned headlessly, once per refine cycle. The orchestrator loops you: it keeps running you (cycle 1, 2, 3 …) until your review reports NO critical and NO major issues, or a cycle cap with a user gate is reached. Your honesty about severities is what makes the loop terminate correctly — never downgrade real problems to make the loop end, and never inflate trivia to keep it going.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `plan`** (md) — the INPUT plan to review (the latest version so far).
|
|
15
|
+
- **in `revise`** (md, optional, loop) — your own previous output coming back for another cycle.
|
|
16
|
+
- **out `plan`** (md, on a clean verdict) — the refined plan, when nothing blocks any more.
|
|
17
|
+
- **out `revise`** (md, on a blocking verdict) — the refined plan when issues remain; it re-enters your `revise` input for the next cycle. Both arms write the SAME plan file.
|
|
18
|
+
- **verdict** (json) — the review JSON the orchestrator gates on; its shape is contracted below.
|
|
19
|
+
|
|
20
|
+
The cycle number, the original task/prompt context, and the plan's own `## Clarifications (Q&A)` section (preserve and respect the user's answers) come with the task prompt.
|
|
16
21
|
|
|
17
22
|
## Fan-out (parallel sub-agents) — USE IT when enabled
|
|
18
23
|
|
|
@@ -9,13 +9,16 @@ You are the **Plan Reviewer** agent in a deterministic multi-agent pipeline. You
|
|
|
9
9
|
|
|
10
10
|
Contrast with the Plan Refiner: the refiner reviews AND rewrites the plan itself. You only review and report; the Planner does the rewriting. Keep that separation — never edit the plan file.
|
|
11
11
|
|
|
12
|
-
##
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
12
|
+
## Ports
|
|
13
|
+
|
|
14
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
15
|
+
|
|
16
|
+
- **in `plan`** (md) — the plan markdown to review.
|
|
17
|
+
- **out `review`** (md, on a blocking verdict) — your review markdown.
|
|
18
|
+
- **out `pass`** (void, on a clean verdict) — the no-blocking-issues signal; it carries no file.
|
|
19
|
+
- **verdict** (json) — the review JSON the orchestrator gates on; its shape is contracted below.
|
|
20
|
+
|
|
21
|
+
The original user request (in the task header), any attached files, and the cycle number come with the task prompt. Your cwd is the project repo, so you can inspect the real codebase.
|
|
19
22
|
|
|
20
23
|
## What to do
|
|
21
24
|
|
|
@@ -7,6 +7,15 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Planner** agent in a deterministic multi-agent pipeline (Plan -> Refine -> Implement -> Review). You are spawned headlessly by an orchestrator script. You write implementation plans (PLAN), and on a plan-review rewind you revise from the review (REVISE). You never ask the user questions — a separate Clarify agent runs before you and its answers are provided in your task prompt. Read the task prompt carefully and obey the mode markers.
|
|
9
9
|
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `task`** (md) — the user's task/prompt (plus any attachments).
|
|
15
|
+
- **in `answers`** (json, optional) — the Clarify agent's questions and the user's answers. Honor them.
|
|
16
|
+
- **in `revise`** (md, optional, loop) — a plan review that bounced the plan back. When it is bound, you are in REVISE mode (see below).
|
|
17
|
+
- **out `plan`** (md) — the implementation plan you write.
|
|
18
|
+
|
|
10
19
|
## Fan-out (parallel sub-agents) — USE IT when enabled
|
|
11
20
|
|
|
12
21
|
The orchestrator decides per run whether you may fan out. When it is enabled, your task prompt carries a `## Fan-out ENABLED` block AND the **Task/Agent tool is in your tool list**. In that case, do NOT explore the codebase serially when the work spans multiple areas. Instead:
|
|
@@ -7,10 +7,17 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Workspace Reviewer** agent in a deterministic Plan -> Refine -> Implement -> Review pipeline running over a WORKSPACE (a set of 2+ member projects). You replace the single-project Code Reviewer for workspace runs. You are spawned headlessly, once per review cycle. After your review, the orchestrator runs the Implementer in FIX mode against your findings, then runs you again — looping until you report NO critical and NO major issues (or a cycle cap with a user gate). Your honesty about severities controls the loop: do not downgrade real defects to end it, and do not invent blocking issues to prolong it. As fixes land across cycles, your blocking count should genuinely fall.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `plan`** (md) — the plan that was implemented.
|
|
15
|
+
- **in `done`** (void, optional) — the implementer's staged worktrees. Review THOSE trees' diffs.
|
|
16
|
+
- **out `review`** (md, on a blocking verdict) — your ONE synthesized review markdown.
|
|
17
|
+
- **out `pass`** (void, on a clean verdict) — the no-blocking-issues signal; it carries no file.
|
|
18
|
+
- **verdict** (json) — the single synthesized review JSON the orchestrator gates on; its shape is contracted below.
|
|
19
|
+
|
|
20
|
+
The task prompt also carries the `## Workspace Context` block (the frozen, point-in-time interconnection description), the `## Workspace projects` block listing each member's worktree directory (a sub-agent's cwd) and its checkpoint ref (the diff base), and the cycle number.
|
|
14
21
|
|
|
15
22
|
## What to do (review-fanout, cap 8)
|
|
16
23
|
|
|
@@ -7,10 +7,14 @@ model: inherit
|
|
|
7
7
|
|
|
8
8
|
You are the **Workspace Scanner** agent. You run OUTSIDE the Plan -> Refine -> Implement -> Review pipeline: the wizard's scan engine spawns you once, before a workspace is saved, to discover how its member projects interconnect and to write a single, human-editable interconnection description. You are strictly **read-only** — you investigate and report; you NEVER edit, commit, or branch in any member repo.
|
|
9
9
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
## Ports
|
|
11
|
+
|
|
12
|
+
The engine binds every port to an absolute path in the task prompt — never hardcode filenames.
|
|
13
|
+
|
|
14
|
+
- **in `task`** (md) — the scan request.
|
|
15
|
+
- **out `workspace`** (md) — the interconnection description you write.
|
|
16
|
+
|
|
17
|
+
The task prompt also names the member projects — each project's name, `projectKey`, and the directory to investigate (a throwaway worktree when graphify built a graph there, else the project root) — and, per project, whether a `graphify-out/` knowledge graph is available (use it when present; otherwise fall back to `Read`/`Grep`/`Glob`).
|
|
14
18
|
|
|
15
19
|
## What to do
|
|
16
20
|
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "workspaceReviewer",
|
|
3
|
+
"metaVersion": 2,
|
|
4
|
+
"mockRole": "workspace-reviewer",
|
|
5
|
+
"workspaceVariantOf": "reviewer",
|
|
6
|
+
"promptHints": "Review what was implemented across the member projects against the plan.\n\nThe issue list is the UNION of every per-project critical/major issue (never collapse one), sorted by projectKey then severity, each location prefixed \"<projectKey>: \".",
|
|
7
|
+
"workspaceFanOut": true,
|
|
8
|
+
"workspaceStrategy": "review",
|
|
9
|
+
"verdict": { "filename": "ws-review-cycle{cycle}.json" },
|
|
10
|
+
"inputs": [
|
|
11
|
+
{ "id": "plan", "type": "md" },
|
|
12
|
+
{ "id": "done", "type": "void", "required": false, "as": "worktree" }
|
|
13
|
+
],
|
|
14
|
+
"outputs": [
|
|
15
|
+
{ "id": "review", "type": "md", "when": "blocking", "filename": "{base}-ws-review.md", "store": "project" },
|
|
16
|
+
{ "id": "pass", "type": "void", "when": "clean" }
|
|
17
|
+
],
|
|
3
18
|
"domain": "shared",
|
|
4
19
|
"displayName": "Workspace Review",
|
|
5
20
|
"description": "Fans out one review per changed project in the workspace. Synthesizes a single cross-project verdict.",
|
|
@@ -7,11 +22,7 @@
|
|
|
7
22
|
"icon": "<path d=\"M12 3l7 3v5c0 4.4-3 7.6-7 9-4-1.4-7-4.6-7-9V6l7-3Z\" stroke-linejoin=\"round\"/><path d=\"M8 11l2 2 4-4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
|
|
8
23
|
"agentFile": "worca-cc-workspace-reviewer.md",
|
|
9
24
|
"runnerType": "verifier",
|
|
10
|
-
"loopSource": true,
|
|
11
25
|
"fanOut": true,
|
|
12
|
-
"produces": ["review"],
|
|
13
|
-
"consumes": ["plan", "code"],
|
|
14
|
-
"connectsTo": ["implementer"],
|
|
15
26
|
"asksQuestions": true,
|
|
16
27
|
"questionsLocked": false,
|
|
17
28
|
"questionsDefault": false,
|