@revisium/orchestrator 0.1.0-alpha.2 → 0.1.0-alpha.3
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/control-plane/bootstrap.config.json +47 -2
- package/control-plane/default-playbook/catalog/pipelines.json +329 -0
- package/control-plane/default-playbook/catalog/roles.json +56 -0
- package/control-plane/default-playbook/package.json +5 -0
- package/control-plane/default-playbook/playbook.json +13 -0
- package/control-plane/default-playbook/prompts/analyst.md +27 -0
- package/control-plane/default-playbook/prompts/developer.md +25 -0
- package/control-plane/default-playbook/prompts/integrator.md +20 -0
- package/control-plane/default-playbook/prompts/orchestrator.md +23 -0
- package/control-plane/default-playbook/prompts/reviewer.md +27 -0
- package/control-plane/default-playbook/prompts/watcher.md +24 -0
- package/dist/cli/commands/bootstrap.js +68 -7
- package/dist/cli/commands/bootstrap.js.map +1 -1
- package/dist/cli/commands/inbox.js +0 -21
- package/dist/cli/commands/inbox.js.map +1 -1
- package/dist/cli/commands/run.js +76 -49
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/needs-host.js +7 -8
- package/dist/cli/needs-host.js.map +1 -1
- package/dist/cli/program.js +0 -2
- package/dist/cli/program.js.map +1 -1
- package/dist/config.js +18 -1
- package/dist/config.js.map +1 -1
- package/dist/control-plane/client-transport.js +73 -40
- package/dist/control-plane/client-transport.js.map +1 -1
- package/dist/control-plane/data-access.js +3 -2
- package/dist/control-plane/data-access.js.map +1 -1
- package/dist/control-plane/definitions.js +1 -1
- package/dist/control-plane/definitions.js.map +1 -1
- package/dist/control-plane/json-fields.js +1 -0
- package/dist/control-plane/json-fields.js.map +1 -1
- package/dist/control-plane/schema-migration.js +79 -0
- package/dist/control-plane/schema-migration.js.map +1 -0
- package/dist/control-plane/seed-default-playbook.js +71 -0
- package/dist/control-plane/seed-default-playbook.js.map +1 -0
- package/dist/e2e/kit/agents.js +113 -0
- package/dist/e2e/kit/agents.js.map +1 -0
- package/dist/e2e/kit/assertions.js +119 -0
- package/dist/e2e/kit/assertions.js.map +1 -0
- package/dist/e2e/kit/crash.js +44 -0
- package/dist/e2e/kit/crash.js.map +1 -0
- package/dist/e2e/kit/drive.js +49 -0
- package/dist/e2e/kit/drive.js.map +1 -0
- package/dist/e2e/kit/env.js +16 -0
- package/dist/e2e/kit/env.js.map +1 -0
- package/dist/e2e/kit/fake-integrator.js +42 -0
- package/dist/e2e/kit/fake-integrator.js.map +1 -0
- package/dist/e2e/kit/gh-emulator.js +49 -0
- package/dist/e2e/kit/gh-emulator.js.map +1 -0
- package/dist/e2e/kit/git-target-repo.js +83 -0
- package/dist/e2e/kit/git-target-repo.js.map +1 -0
- package/dist/e2e/kit/harness.js +59 -0
- package/dist/e2e/kit/harness.js.map +1 -0
- package/dist/e2e/kit/index.js +14 -0
- package/dist/e2e/kit/index.js.map +1 -0
- package/dist/e2e/kit/mcp.js +32 -0
- package/dist/e2e/kit/mcp.js.map +1 -0
- package/dist/e2e/kit/scenarios.js +196 -0
- package/dist/e2e/kit/scenarios.js.map +1 -0
- package/dist/e2e/recovery-crash-child.js +29 -0
- package/dist/e2e/recovery-crash-child.js.map +1 -0
- package/dist/e2e/recovery-dd-crash-child.js +42 -0
- package/dist/e2e/recovery-dd-crash-child.js.map +1 -0
- package/dist/engine/ensure-postgres.js +13 -1
- package/dist/engine/ensure-postgres.js.map +1 -1
- package/dist/mcp/mcp-capabilities.js +1 -0
- package/dist/mcp/mcp-capabilities.js.map +1 -1
- package/dist/mcp/mcp-facade.service.js +24 -3
- package/dist/mcp/mcp-facade.service.js.map +1 -1
- package/dist/mcp/mcp-tools.js +16 -7
- package/dist/mcp/mcp-tools.js.map +1 -1
- package/dist/pipeline/data-driven-task.workflow.js +403 -0
- package/dist/pipeline/data-driven-task.workflow.js.map +1 -0
- package/dist/pipeline/data-driven-template.js +57 -0
- package/dist/pipeline/data-driven-template.js.map +1 -0
- package/dist/pipeline/develop-task.workflow.js +150 -316
- package/dist/pipeline/develop-task.workflow.js.map +1 -1
- package/dist/pipeline/pipeline.module.js +1 -1
- package/dist/pipeline/route-contract.js +82 -0
- package/dist/pipeline/route-contract.js.map +1 -0
- package/dist/pipeline-core/index.js +16 -0
- package/dist/pipeline-core/index.js.map +1 -0
- package/dist/pipeline-core/interpret.js +351 -0
- package/dist/pipeline-core/interpret.js.map +1 -0
- package/dist/pipeline-core/kit/assertions.js +61 -0
- package/dist/pipeline-core/kit/assertions.js.map +1 -0
- package/dist/pipeline-core/kit/builders.js +134 -0
- package/dist/pipeline-core/kit/builders.js.map +1 -0
- package/dist/pipeline-core/kit/drive.js +96 -0
- package/dist/pipeline-core/kit/drive.js.map +1 -0
- package/dist/pipeline-core/kit/fixtures.js +248 -0
- package/dist/pipeline-core/kit/fixtures.js.map +1 -0
- package/dist/pipeline-core/kit/index.js +13 -0
- package/dist/pipeline-core/kit/index.js.map +1 -0
- package/dist/pipeline-core/types.js +124 -0
- package/dist/pipeline-core/types.js.map +1 -0
- package/dist/pipeline-core/validate.js +1032 -0
- package/dist/pipeline-core/validate.js.map +1 -0
- package/dist/playbook/catalog-loader.js +14 -1
- package/dist/playbook/catalog-loader.js.map +1 -1
- package/dist/playbook/import-mapper.js +14 -38
- package/dist/playbook/import-mapper.js.map +1 -1
- package/dist/playbook/manifest.js +1 -1
- package/dist/revisium/playbooks.service.js +95 -17
- package/dist/revisium/playbooks.service.js.map +1 -1
- package/dist/revisium/roles.service.js +1 -1
- package/dist/revisium/roles.service.js.map +1 -1
- package/dist/revisium/run.service.js +8 -0
- package/dist/revisium/run.service.js.map +1 -1
- package/dist/run/append-event.js +24 -1
- package/dist/run/append-event.js.map +1 -1
- package/dist/run/block-run.js +17 -0
- package/dist/run/block-run.js.map +1 -0
- package/dist/run/create-run.js +28 -5
- package/dist/run/create-run.js.map +1 -1
- package/dist/run/inspect-run.js +9 -0
- package/dist/run/inspect-run.js.map +1 -1
- package/dist/run/terminal-run-status.js +89 -7
- package/dist/run/terminal-run-status.js.map +1 -1
- package/dist/runners/claude-code.service.js +4 -0
- package/dist/runners/claude-code.service.js.map +1 -1
- package/dist/runners/integrator.js +25 -9
- package/dist/runners/integrator.js.map +1 -1
- package/dist/task-control-plane/task-control-plane-api.service.js +247 -28
- package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
- package/dist/worker/artifact-store.js +111 -0
- package/dist/worker/artifact-store.js.map +1 -0
- package/dist/worker/claude-code-runner.js +44 -5
- package/dist/worker/claude-code-runner.js.map +1 -1
- package/dist/worker/process-executor.js +23 -2
- package/dist/worker/process-executor.js.map +1 -1
- package/dist/worker/runner-dispatch.js +1 -0
- package/dist/worker/runner-dispatch.js.map +1 -1
- package/dist/worker/runner.js +11 -1
- package/dist/worker/runner.js.map +1 -1
- package/dist/worker/stub-runner.js +7 -45
- package/dist/worker/stub-runner.js.map +1 -1
- package/package.json +3 -1
- package/dist/cli/commands/work.js +0 -149
- package/dist/cli/commands/work.js.map +0 -1
- package/dist/worker/git-worktree-manager.js +0 -84
- package/dist/worker/git-worktree-manager.js.map +0 -1
- package/dist/worker/loop.js +0 -122
- package/dist/worker/loop.js.map +0 -1
- package/dist/worker/script-runner.js +0 -28
- package/dist/worker/script-runner.js.map +0 -1
- package/dist/worker/worker-id.js +0 -18
- package/dist/worker/worker-id.js.map +0 -1
|
@@ -47,6 +47,31 @@
|
|
|
47
47
|
"type": "number",
|
|
48
48
|
"default": 0
|
|
49
49
|
},
|
|
50
|
+
"playbook_id": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"default": "",
|
|
53
|
+
"description": "Installed playbook selected for this run"
|
|
54
|
+
},
|
|
55
|
+
"pipeline_id": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"default": "",
|
|
58
|
+
"description": "Installed pipeline row id selected for this run"
|
|
59
|
+
},
|
|
60
|
+
"params": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"default": "",
|
|
63
|
+
"description": "Serialized JSON run params"
|
|
64
|
+
},
|
|
65
|
+
"route_decision": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"default": "",
|
|
68
|
+
"description": "Serialized JSON structured route decision"
|
|
69
|
+
},
|
|
70
|
+
"execution_profile": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"default": "",
|
|
73
|
+
"description": "Serialized JSON resolved execution profile"
|
|
74
|
+
},
|
|
50
75
|
"created_by": {
|
|
51
76
|
"type": "string",
|
|
52
77
|
"default": ""
|
|
@@ -285,6 +310,21 @@
|
|
|
285
310
|
"default": "",
|
|
286
311
|
"description": "Serialized JSON, secret-redacted, capped"
|
|
287
312
|
},
|
|
313
|
+
"artifact_ref": {
|
|
314
|
+
"type": "string",
|
|
315
|
+
"default": "",
|
|
316
|
+
"description": "Stable run artifact reference, e.g. run_id/attempt_id"
|
|
317
|
+
},
|
|
318
|
+
"stdout_tail": {
|
|
319
|
+
"type": "string",
|
|
320
|
+
"default": "",
|
|
321
|
+
"description": "Secret-redacted process stdout tail, capped"
|
|
322
|
+
},
|
|
323
|
+
"stderr_tail": {
|
|
324
|
+
"type": "string",
|
|
325
|
+
"default": "",
|
|
326
|
+
"description": "Secret-redacted process stderr tail, capped"
|
|
327
|
+
},
|
|
288
328
|
"lesson": {
|
|
289
329
|
"type": "string",
|
|
290
330
|
"default": ""
|
|
@@ -452,7 +492,12 @@
|
|
|
452
492
|
"runner": {
|
|
453
493
|
"type": "string",
|
|
454
494
|
"default": "claude-code",
|
|
455
|
-
"description": "
|
|
495
|
+
"description": "Deprecated alias for runner_id"
|
|
496
|
+
},
|
|
497
|
+
"runner_id": {
|
|
498
|
+
"type": "string",
|
|
499
|
+
"default": "",
|
|
500
|
+
"description": "Portable playbook runner binding, for example claude-code or revo-integrator"
|
|
456
501
|
},
|
|
457
502
|
"allowed_tools": {
|
|
458
503
|
"type": "array",
|
|
@@ -828,7 +873,7 @@
|
|
|
828
873
|
"data": {
|
|
829
874
|
"id": "integrator",
|
|
830
875
|
"name": "integrator",
|
|
831
|
-
"system_prompt": "[DEPRECATED] Integration is now deterministic code in src/runners/integrator.ts; this role is retired from the executed chain and is not dispatched. Kept only so `run create --role integrator`
|
|
876
|
+
"system_prompt": "[DEPRECATED] Integration is now deterministic code in src/runners/integrator.ts; this role is retired from the executed chain and is not dispatched. Kept only so `run create --role integrator` resolves to a seeded role row.",
|
|
832
877
|
"model_level": "standard",
|
|
833
878
|
"effort": "high",
|
|
834
879
|
"runner": "script",
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "feature-development",
|
|
4
|
+
"path": "prompts/orchestrator.md",
|
|
5
|
+
"triggers": [
|
|
6
|
+
"new feature",
|
|
7
|
+
"multi-repo change",
|
|
8
|
+
"task-to-PR work"
|
|
9
|
+
],
|
|
10
|
+
"required_roles": [
|
|
11
|
+
"orchestrator",
|
|
12
|
+
"analyst",
|
|
13
|
+
"reviewer",
|
|
14
|
+
"developer",
|
|
15
|
+
"integrator",
|
|
16
|
+
"watcher"
|
|
17
|
+
],
|
|
18
|
+
"alternative_roles": [],
|
|
19
|
+
"optional_roles": [],
|
|
20
|
+
"route_gates": [
|
|
21
|
+
"task spec approval",
|
|
22
|
+
"merge approval"
|
|
23
|
+
],
|
|
24
|
+
"platform_invocation": "canonical-only",
|
|
25
|
+
"execution_policy": {
|
|
26
|
+
"raw": [
|
|
27
|
+
"Built-in default (slice 5, plan 0015): the pipeline graph is DATA — see template_json.",
|
|
28
|
+
"analyst -> reviewer[plan gate] -> developer -> reviewer[code] (bounded rework, cap 3) -> integrator(script) -> watcher[post-integrator] -> merge gate."
|
|
29
|
+
],
|
|
30
|
+
"template_json": {
|
|
31
|
+
"specVersion": "1.0",
|
|
32
|
+
"pipelineId": "feature-development",
|
|
33
|
+
"entry": "analyst",
|
|
34
|
+
"verdicts": {
|
|
35
|
+
"domain": [
|
|
36
|
+
"approved",
|
|
37
|
+
"clean",
|
|
38
|
+
"blocker",
|
|
39
|
+
"changes_requested"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"nodes": {
|
|
43
|
+
"analyst": {
|
|
44
|
+
"id": "analyst",
|
|
45
|
+
"kind": "agent",
|
|
46
|
+
"roleRef": "role:analyst",
|
|
47
|
+
"next": "planReviewer",
|
|
48
|
+
"onFailure": "abort",
|
|
49
|
+
"resultSchema": "schema:plan"
|
|
50
|
+
},
|
|
51
|
+
"planReviewer": {
|
|
52
|
+
"id": "planReviewer",
|
|
53
|
+
"kind": "agent",
|
|
54
|
+
"roleRef": "role:reviewer",
|
|
55
|
+
"next": "planGate",
|
|
56
|
+
"onFailure": "abort",
|
|
57
|
+
"resultSchema": "schema:reviewVerdict"
|
|
58
|
+
},
|
|
59
|
+
"planGate": {
|
|
60
|
+
"id": "planGate",
|
|
61
|
+
"kind": "humanGate",
|
|
62
|
+
"reason": "plan-review",
|
|
63
|
+
"outcomes": [
|
|
64
|
+
"approved"
|
|
65
|
+
],
|
|
66
|
+
"branches": [
|
|
67
|
+
{
|
|
68
|
+
"when": {
|
|
69
|
+
"op": "verdict.eq",
|
|
70
|
+
"value": "approved"
|
|
71
|
+
},
|
|
72
|
+
"goto": "developer"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"default": "blockedEnd"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"developer": {
|
|
80
|
+
"id": "developer",
|
|
81
|
+
"kind": "agent",
|
|
82
|
+
"roleRef": "role:developer",
|
|
83
|
+
"next": "codeReview",
|
|
84
|
+
"onFailure": "abort",
|
|
85
|
+
"resultSchema": "schema:change"
|
|
86
|
+
},
|
|
87
|
+
"codeReview": {
|
|
88
|
+
"id": "codeReview",
|
|
89
|
+
"kind": "agent",
|
|
90
|
+
"roleRef": "role:reviewer",
|
|
91
|
+
"next": "codeReviewRouter",
|
|
92
|
+
"onFailure": "abort",
|
|
93
|
+
"resultSchema": "schema:reviewVerdict"
|
|
94
|
+
},
|
|
95
|
+
"codeReviewRouter": {
|
|
96
|
+
"id": "codeReviewRouter",
|
|
97
|
+
"kind": "choice",
|
|
98
|
+
"branches": [
|
|
99
|
+
{
|
|
100
|
+
"when": {
|
|
101
|
+
"op": "verdict.in",
|
|
102
|
+
"value": [
|
|
103
|
+
"approved",
|
|
104
|
+
"clean"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
"goto": "integrator"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"when": {
|
|
111
|
+
"op": "all",
|
|
112
|
+
"of": [
|
|
113
|
+
{
|
|
114
|
+
"op": "verdict.in",
|
|
115
|
+
"value": [
|
|
116
|
+
"blocker",
|
|
117
|
+
"changes_requested"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"op": "counter.lt",
|
|
122
|
+
"scope": "codeReviewLoop",
|
|
123
|
+
"value": 3
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
"goto": "reworkDeveloper"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"default": "blockedEnd"
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"reworkDeveloper": {
|
|
135
|
+
"id": "reworkDeveloper",
|
|
136
|
+
"kind": "agent",
|
|
137
|
+
"roleRef": "role:developer",
|
|
138
|
+
"next": "codeReview",
|
|
139
|
+
"onFailure": "abort",
|
|
140
|
+
"resultSchema": "schema:change",
|
|
141
|
+
"incrementCounters": [
|
|
142
|
+
"codeReviewLoop"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
"integrator": {
|
|
146
|
+
"id": "integrator",
|
|
147
|
+
"kind": "script",
|
|
148
|
+
"scriptRef": "script:integrator",
|
|
149
|
+
"next": "watcherPost",
|
|
150
|
+
"catch": [
|
|
151
|
+
{
|
|
152
|
+
"onError": "revo.ScriptBlocked",
|
|
153
|
+
"goto": "blockedEnd"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"onError": "revo.ScriptFailed",
|
|
157
|
+
"goto": "failedEnd"
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"onFailure": "route",
|
|
161
|
+
"resultSchema": "schema:integration"
|
|
162
|
+
},
|
|
163
|
+
"watcherPost": {
|
|
164
|
+
"id": "watcherPost",
|
|
165
|
+
"kind": "agent",
|
|
166
|
+
"roleRef": "role:watcher",
|
|
167
|
+
"next": "watcherRouter",
|
|
168
|
+
"onFailure": "abort",
|
|
169
|
+
"resultSchema": "schema:watchVerdict"
|
|
170
|
+
},
|
|
171
|
+
"watcherRouter": {
|
|
172
|
+
"id": "watcherRouter",
|
|
173
|
+
"kind": "choice",
|
|
174
|
+
"branches": [
|
|
175
|
+
{
|
|
176
|
+
"when": {
|
|
177
|
+
"op": "verdict.in",
|
|
178
|
+
"value": [
|
|
179
|
+
"approved",
|
|
180
|
+
"clean"
|
|
181
|
+
]
|
|
182
|
+
},
|
|
183
|
+
"goto": "mergeGate"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"when": {
|
|
187
|
+
"op": "all",
|
|
188
|
+
"of": [
|
|
189
|
+
{
|
|
190
|
+
"op": "verdict.in",
|
|
191
|
+
"value": [
|
|
192
|
+
"blocker",
|
|
193
|
+
"changes_requested"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"op": "counter.lt",
|
|
198
|
+
"scope": "watcherLoop",
|
|
199
|
+
"value": 3
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
"goto": "watcherRework"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"default": "blockedEnd"
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
"watcherRework": {
|
|
211
|
+
"id": "watcherRework",
|
|
212
|
+
"kind": "agent",
|
|
213
|
+
"roleRef": "role:developer",
|
|
214
|
+
"next": "integrator",
|
|
215
|
+
"onFailure": "abort",
|
|
216
|
+
"resultSchema": "schema:change",
|
|
217
|
+
"incrementCounters": [
|
|
218
|
+
"watcherLoop"
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
"mergeGate": {
|
|
222
|
+
"id": "mergeGate",
|
|
223
|
+
"kind": "humanGate",
|
|
224
|
+
"reason": "merge-review",
|
|
225
|
+
"outcomes": [
|
|
226
|
+
"approved"
|
|
227
|
+
],
|
|
228
|
+
"branches": [
|
|
229
|
+
{
|
|
230
|
+
"when": {
|
|
231
|
+
"op": "verdict.eq",
|
|
232
|
+
"value": "approved"
|
|
233
|
+
},
|
|
234
|
+
"goto": "mergedEnd"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"default": "blockedEnd"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
"mergedEnd": {
|
|
242
|
+
"id": "mergedEnd",
|
|
243
|
+
"kind": "terminal",
|
|
244
|
+
"status": "succeeded"
|
|
245
|
+
},
|
|
246
|
+
"failedEnd": {
|
|
247
|
+
"id": "failedEnd",
|
|
248
|
+
"kind": "terminal",
|
|
249
|
+
"status": "failed"
|
|
250
|
+
},
|
|
251
|
+
"blockedEnd": {
|
|
252
|
+
"id": "blockedEnd",
|
|
253
|
+
"kind": "terminal",
|
|
254
|
+
"status": "blocked"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"title": "Feature development — plan + merge gates, bounded code-review + watcher rework",
|
|
258
|
+
"policy": {
|
|
259
|
+
"conflicts": [
|
|
260
|
+
[
|
|
261
|
+
"developer",
|
|
262
|
+
"reviewer"
|
|
263
|
+
]
|
|
264
|
+
],
|
|
265
|
+
"enforcement": "strict"
|
|
266
|
+
},
|
|
267
|
+
"scopes": {
|
|
268
|
+
"codeReviewLoop": {
|
|
269
|
+
"cap": 3,
|
|
270
|
+
"parent": null
|
|
271
|
+
},
|
|
272
|
+
"watcherLoop": {
|
|
273
|
+
"cap": 3,
|
|
274
|
+
"parent": null
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"id": "local-change",
|
|
282
|
+
"path": "prompts/orchestrator.md",
|
|
283
|
+
"triggers": [
|
|
284
|
+
"small local edit",
|
|
285
|
+
"obvious fix",
|
|
286
|
+
"repo-local maintenance"
|
|
287
|
+
],
|
|
288
|
+
"required_roles": [
|
|
289
|
+
"orchestrator",
|
|
290
|
+
"developer"
|
|
291
|
+
],
|
|
292
|
+
"alternative_roles": [],
|
|
293
|
+
"optional_roles": [],
|
|
294
|
+
"route_gates": [],
|
|
295
|
+
"platform_invocation": "canonical-only",
|
|
296
|
+
"execution_policy": {
|
|
297
|
+
"raw": [
|
|
298
|
+
"Built-in default (slice 5, plan 0015): the pipeline graph is DATA — see template_json.",
|
|
299
|
+
"orchestrator routes; the graph runs developer -> done with no gate."
|
|
300
|
+
],
|
|
301
|
+
"template_json": {
|
|
302
|
+
"specVersion": "1.0",
|
|
303
|
+
"pipelineId": "local-change",
|
|
304
|
+
"entry": "developer",
|
|
305
|
+
"verdicts": {
|
|
306
|
+
"domain": [
|
|
307
|
+
"approved"
|
|
308
|
+
]
|
|
309
|
+
},
|
|
310
|
+
"nodes": {
|
|
311
|
+
"developer": {
|
|
312
|
+
"id": "developer",
|
|
313
|
+
"kind": "agent",
|
|
314
|
+
"roleRef": "role:developer",
|
|
315
|
+
"next": "doneEnd",
|
|
316
|
+
"onFailure": "abort",
|
|
317
|
+
"resultSchema": "schema:change"
|
|
318
|
+
},
|
|
319
|
+
"doneEnd": {
|
|
320
|
+
"id": "doneEnd",
|
|
321
|
+
"kind": "terminal",
|
|
322
|
+
"status": "succeeded"
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
"title": "Local change — developer only, no gate"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "orchestrator",
|
|
4
|
+
"path": "prompts/orchestrator.md",
|
|
5
|
+
"surface": "any",
|
|
6
|
+
"rights": "read-only",
|
|
7
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
8
|
+
"default_model_level": "deep",
|
|
9
|
+
"runner_id": "claude-code"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "analyst",
|
|
13
|
+
"path": "prompts/analyst.md",
|
|
14
|
+
"surface": "any",
|
|
15
|
+
"rights": "read-only",
|
|
16
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
17
|
+
"default_model_level": "deep",
|
|
18
|
+
"runner_id": "claude-code"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "reviewer",
|
|
22
|
+
"path": "prompts/reviewer.md",
|
|
23
|
+
"surface": "any",
|
|
24
|
+
"rights": "read-only",
|
|
25
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
26
|
+
"default_model_level": "deep",
|
|
27
|
+
"runner_id": "claude-code"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "developer",
|
|
31
|
+
"path": "prompts/developer.md",
|
|
32
|
+
"surface": "any",
|
|
33
|
+
"rights": "write-working-tree",
|
|
34
|
+
"allowed_tools": ["Read", "Grep", "Glob", "Edit", "Write", "Bash"],
|
|
35
|
+
"default_model_level": "standard",
|
|
36
|
+
"runner_id": "claude-code"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "integrator",
|
|
40
|
+
"path": "prompts/integrator.md",
|
|
41
|
+
"surface": "repo",
|
|
42
|
+
"rights": "git-gh",
|
|
43
|
+
"allowed_tools": ["Read", "Bash"],
|
|
44
|
+
"default_model_level": "standard",
|
|
45
|
+
"runner_id": "revo-integrator"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "watcher",
|
|
49
|
+
"path": "prompts/watcher.md",
|
|
50
|
+
"surface": "repo",
|
|
51
|
+
"rights": "read-only",
|
|
52
|
+
"allowed_tools": ["Read", "Grep", "Glob", "Bash"],
|
|
53
|
+
"default_model_level": "cheap",
|
|
54
|
+
"runner_id": "claude-code"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "revisium-default",
|
|
3
|
+
"name": "Revisium Default Playbook",
|
|
4
|
+
"schema_version": 2,
|
|
5
|
+
"package": "@revisium/orchestrator-default-playbook",
|
|
6
|
+
"catalogs": {
|
|
7
|
+
"roles": "catalog/roles.json",
|
|
8
|
+
"pipelines": "catalog/pipelines.json"
|
|
9
|
+
},
|
|
10
|
+
"supported_runtimes": [
|
|
11
|
+
"revo"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Analyst
|
|
2
|
+
|
|
3
|
+
You are the **analyst** role in a software delivery pipeline. You run FIRST, before any
|
|
4
|
+
code is written, and you do not edit files — you read and reason.
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
Turn the task request into a concrete, reviewable **plan** the developer can implement and a
|
|
9
|
+
reviewer can check against. The plan is the artifact a human approves at the plan gate.
|
|
10
|
+
|
|
11
|
+
## What to do
|
|
12
|
+
|
|
13
|
+
1. Read the relevant code, configuration, and docs to understand the current behavior.
|
|
14
|
+
2. State the problem precisely: what is being asked, what is in scope, what is explicitly out.
|
|
15
|
+
3. Identify the files/modules that must change and the key risks (data, contracts, security,
|
|
16
|
+
migrations, concurrency, public API).
|
|
17
|
+
4. Produce a short, ordered implementation plan with verification steps.
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
Emit a structured plan. End your output with a single clear verdict token:
|
|
22
|
+
|
|
23
|
+
- `approved` — the task is well understood and the plan is ready for a developer.
|
|
24
|
+
- `changes_requested` — the request is ambiguous or under-specified; explain what is missing.
|
|
25
|
+
- `blocker` — the task cannot proceed as stated (e.g. conflicts with an invariant); explain why.
|
|
26
|
+
|
|
27
|
+
Keep it concise. You are read-only: never modify the working tree.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Developer
|
|
2
|
+
|
|
3
|
+
You are the **developer** role. You implement the approved plan and you are the only role
|
|
4
|
+
that writes to the working tree.
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
Make the smallest correct change that satisfies the approved plan, with verification, so the
|
|
9
|
+
reviewer can approve it and the integrator can ship it.
|
|
10
|
+
|
|
11
|
+
## What to do
|
|
12
|
+
|
|
13
|
+
1. Implement the plan. Do not gold-plate and do not expand scope beyond what was approved.
|
|
14
|
+
2. Follow the existing conventions of the codebase you are editing.
|
|
15
|
+
3. Run the project's verification (build, lint, tests) and fix what you broke.
|
|
16
|
+
4. On a rework pass (reviewer requested changes), address each reviewer finding directly.
|
|
17
|
+
|
|
18
|
+
## Output
|
|
19
|
+
|
|
20
|
+
Summarize what you changed and how you verified it, then end with a verdict token:
|
|
21
|
+
|
|
22
|
+
- `approved` — the change is implemented and verification passes.
|
|
23
|
+
- `blocker` — you could not complete the change (explain the obstacle for a human).
|
|
24
|
+
|
|
25
|
+
You may read, edit, write, and run commands in the working tree, scoped to the task repo.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Integrator
|
|
2
|
+
|
|
3
|
+
The **integrator** is a built-in SYSTEM SCRIPT, not an LLM agent. The engine dispatches it via
|
|
4
|
+
the `revo-integrator` runner; this file documents its contract.
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
Take the developer's approved change and integrate it: stage the working-tree diff onto a
|
|
9
|
+
feature branch and open (or update) a pull request via `git` + `gh`.
|
|
10
|
+
|
|
11
|
+
## Behavior
|
|
12
|
+
|
|
13
|
+
- Commits the change on a feature branch derived from the task id.
|
|
14
|
+
- Opens a draft PR (or reuses an existing one for the same branch).
|
|
15
|
+
- Reports an integration result the pipeline routes on:
|
|
16
|
+
- success — proceed to the post-integration watcher.
|
|
17
|
+
- `revo.ScriptBlocked` — a precondition failed (e.g. dirty base); the run blocks for a human.
|
|
18
|
+
- `revo.ScriptFailed` — git/gh failed; the run fails.
|
|
19
|
+
|
|
20
|
+
The integrator never authors product code — it only ships what the developer produced.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Orchestrator
|
|
2
|
+
|
|
3
|
+
You are the **orchestrator** role. You route and coordinate; you do not write code.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Understand the incoming task well enough to confirm the selected pipeline fits, and frame the
|
|
8
|
+
work for the roles that follow (analyst, developer, …).
|
|
9
|
+
|
|
10
|
+
## What to do
|
|
11
|
+
|
|
12
|
+
1. Read the task request and the target repository context.
|
|
13
|
+
2. Confirm scope and the chosen pipeline are appropriate; surface mismatches early.
|
|
14
|
+
3. Hand off cleanly to the next role in the pipeline.
|
|
15
|
+
|
|
16
|
+
## Output
|
|
17
|
+
|
|
18
|
+
End your output with a verdict token:
|
|
19
|
+
|
|
20
|
+
- `approved` — the task is framed and ready to proceed.
|
|
21
|
+
- `blocker` — the task cannot proceed as routed (explain for a human).
|
|
22
|
+
|
|
23
|
+
You are read-only: never modify the working tree.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Reviewer
|
|
2
|
+
|
|
3
|
+
You are the **reviewer** role. You are read-only and decorrelated from the developer: you
|
|
4
|
+
never wrote the change you are reviewing, and you must not edit it.
|
|
5
|
+
|
|
6
|
+
## Goal
|
|
7
|
+
|
|
8
|
+
Judge whether the work in front of you is correct, complete, and safe to proceed. You review
|
|
9
|
+
both **plans** (before development) and **code** (after development), depending on where you
|
|
10
|
+
are invoked in the pipeline.
|
|
11
|
+
|
|
12
|
+
## What to do
|
|
13
|
+
|
|
14
|
+
1. Read the plan or diff and the surrounding code it touches.
|
|
15
|
+
2. Check correctness, scope creep, missing tests/verification, and risk (data, contracts,
|
|
16
|
+
security, migrations, concurrency, public API).
|
|
17
|
+
3. Be specific: cite the file and the concern. Distinguish must-fix from nice-to-have.
|
|
18
|
+
|
|
19
|
+
## Output
|
|
20
|
+
|
|
21
|
+
End your output with a single clear verdict token:
|
|
22
|
+
|
|
23
|
+
- `approved` — proceed; the work is correct and complete (nits are acceptable to defer).
|
|
24
|
+
- `changes_requested` — fixable issues that must be addressed before proceeding.
|
|
25
|
+
- `blocker` — a serious defect or risk that must be resolved (drives the bounded rework loop).
|
|
26
|
+
|
|
27
|
+
Keep findings actionable. You are read-only: never modify the working tree.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Watcher
|
|
2
|
+
|
|
3
|
+
You are the **watcher** role. You run AFTER integration (the PR is open) and you are read-only.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Confirm the integrated change is healthy before it reaches the merge gate: the PR exists, CI
|
|
8
|
+
is not red, and nothing obviously broke.
|
|
9
|
+
|
|
10
|
+
## What to do
|
|
11
|
+
|
|
12
|
+
1. Inspect the opened pull request and its checks.
|
|
13
|
+
2. Look for failing CI, merge conflicts, or missing required status.
|
|
14
|
+
3. Do not edit code — if something is wrong, report it so the pipeline can rework or block.
|
|
15
|
+
|
|
16
|
+
## Output
|
|
17
|
+
|
|
18
|
+
End your output with a single clear verdict token:
|
|
19
|
+
|
|
20
|
+
- `clean` — the integrated change is healthy; proceed to the merge gate.
|
|
21
|
+
- `dirty` — something is wrong with the integration (drives rework/fail per the pipeline).
|
|
22
|
+
- `blocker` — a hard problem a human must resolve.
|
|
23
|
+
|
|
24
|
+
You are read-only: never modify the working tree.
|