@oisincoveney/pipeline 1.24.0 → 1.26.0
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/.agents/skills/execute/SKILL.md +5 -5
- package/.agents/skills/inspect/SKILL.md +2 -2
- package/.agents/skills/quick/SKILL.md +5 -5
- package/README.md +159 -238
- package/defaults/install-manifest.json +1 -2
- package/defaults/opencode-ecosystem.yaml +3 -3
- package/dist/argo-submit.d.ts +3 -15
- package/dist/argo-submit.js +2 -31
- package/dist/argo-workflow.d.ts +0 -5
- package/dist/argo-workflow.js +0 -45
- package/dist/commands/pipeline-command.js +1 -1
- package/dist/config.d.ts +7 -8
- package/dist/config.js +10 -34
- package/dist/gates.js +0 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/index.js +9 -33
- package/dist/install-commands.js +132 -237
- package/dist/mcp/gateway.js +5 -21
- package/dist/moka-submit.d.ts +160 -0
- package/dist/moka-submit.js +140 -49
- package/dist/opencode-project-config.js +84 -0
- package/dist/pipeline-init.js +13 -11
- package/dist/run-state/git-refs.js +49 -20
- package/dist/runner-command-contract.d.ts +15 -3
- package/dist/runner-command-contract.js +1 -1
- package/dist/runner-output.js +0 -12
- package/dist/runner.d.ts +1 -1
- package/dist/runner.js +33 -74
- package/dist/runtime/agent-node/agent-node.js +2 -2
- package/dist/runtime/context/context.js +3 -3
- package/dist/runtime/events/events.js +3 -2
- package/dist/runtime/gates/gates.js +3 -3
- package/dist/runtime/hooks/hooks.js +1 -1
- package/dist/runtime/json-validation/json-validation.js +2 -5
- package/dist/workflow-submit-contract.d.ts +13 -0
- package/dist/workflow-submit-contract.js +12 -0
- package/docs/config-architecture.md +33 -30
- package/docs/mcp-gateway.md +19 -11
- package/docs/mcp-host-isolation.md +3 -17
- package/docs/operator-guide.md +182 -471
- package/docs/pipeline-console-runner-contract.md +14 -15
- package/docs/pipeline-smoke-recovery-plan.md +4 -4
- package/docs/slash-command-adapter-contract.md +4 -7
- package/package.json +6 -3
- package/dist/toml.js +0 -12
|
@@ -20,11 +20,11 @@ hooks: generated-defaults-audit
|
|
|
20
20
|
Instructions:
|
|
21
21
|
Orchestrate package-owned pipeline config.
|
|
22
22
|
|
|
23
|
-
Submit
|
|
23
|
+
Submit Momokaya work as Argo Workflows through `moka submit` and `moka submit --quick`.
|
|
24
24
|
|
|
25
25
|
Generate a schedule for entrypoint `execute` and the user task.
|
|
26
26
|
The schedule policy is `execute-schedule`.
|
|
27
|
-
Run `
|
|
28
|
-
The pipeline runtime executes
|
|
29
|
-
Use
|
|
30
|
-
Use `
|
|
27
|
+
Run `moka submit <task description>` to submit the `execute` graph as an Argo Workflow.
|
|
28
|
+
The pipeline runtime executes as Argo DAG tasks using the package-owned runner image.
|
|
29
|
+
Use `--kubeconfig <path>` and `--namespace <namespace>` to target a local or remote Kubernetes cluster.
|
|
30
|
+
Use `moka submit --schedule <schedule.yaml> <task description>` only when rerunning an existing schedule artifact.
|
|
@@ -36,6 +36,6 @@ For each CLI node prompt include:
|
|
|
36
36
|
- dependency outputs
|
|
37
37
|
|
|
38
38
|
Only package-configured gates are blocking. Do not invent RED, GREEN, full-suite, typecheck, or unrelated-drift gates.
|
|
39
|
-
If a node returns targeted evidence and has no configured blocking gate, advance to the next
|
|
40
|
-
Do not bypass configured runner subprocesses or package-configured gates when executing
|
|
39
|
+
If a node returns targeted evidence and has no configured blocking gate, advance to the next node.
|
|
40
|
+
Do not bypass configured runner subprocesses or package-configured gates when executing nodes.
|
|
41
41
|
Do not claim these nodes are Codex subagents.
|
|
@@ -20,11 +20,11 @@ hooks: generated-defaults-audit
|
|
|
20
20
|
Instructions:
|
|
21
21
|
Orchestrate package-owned pipeline config.
|
|
22
22
|
|
|
23
|
-
Submit
|
|
23
|
+
Submit Momokaya work as Argo Workflows through `moka submit` and `moka submit --quick`.
|
|
24
24
|
|
|
25
25
|
Generate a schedule for entrypoint `quick` and the user task.
|
|
26
26
|
The schedule policy is `quick-schedule`.
|
|
27
|
-
Run `
|
|
28
|
-
The pipeline runtime executes
|
|
29
|
-
Use
|
|
30
|
-
Use `
|
|
27
|
+
Run `moka submit --quick <task description>` to submit the graph as an Argo Workflow.
|
|
28
|
+
The pipeline runtime executes as Argo DAG tasks using the package-owned runner image.
|
|
29
|
+
Use `--kubeconfig <path>` and `--namespace <namespace>` to target a local or remote Kubernetes cluster.
|
|
30
|
+
Use `moka submit --schedule <schedule.yaml> <task description>` only when rerunning an existing schedule artifact.
|
package/README.md
CHANGED
|
@@ -1,22 +1,38 @@
|
|
|
1
1
|
# @oisincoveney/pipeline
|
|
2
2
|
|
|
3
|
-
Config-driven multi-agent pipeline runner for repository work.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
source.
|
|
3
|
+
Config-driven multi-agent pipeline runner for repository work. The installed
|
|
4
|
+
package owns the runtime defaults; target repositories use `.pipeline/runs/` for
|
|
5
|
+
generated schedules and run artifacts, not as the source of runtime config.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
The published command is `moka`.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
Requirements:
|
|
9
12
|
|
|
10
|
-
- Bun 1.1 or newer
|
|
11
13
|
- Node.js 22.13 or newer
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
14
|
+
- Bun 1.1 or newer for repository development and package build scripts
|
|
15
|
+
- `npx`, `backlog`, `uvx`, and Docker on `PATH` for default skills and MCP
|
|
16
|
+
gateway setup
|
|
17
|
+
- At least one runner CLI on `PATH`: `opencode` or a configured command runner
|
|
18
|
+
|
|
19
|
+
Install the package in a target repository:
|
|
20
|
+
|
|
21
|
+
```shell
|
|
22
|
+
npm install --save-dev @oisincoveney/pipeline
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then run the local package binary:
|
|
26
|
+
|
|
27
|
+
```shell
|
|
28
|
+
moka --help
|
|
29
|
+
```
|
|
15
30
|
|
|
16
|
-
|
|
31
|
+
For development inside this repository:
|
|
17
32
|
|
|
18
33
|
```shell
|
|
19
34
|
bun install --frozen-lockfile
|
|
35
|
+
bun run build:cli
|
|
20
36
|
```
|
|
21
37
|
|
|
22
38
|
## Start A Repository
|
|
@@ -24,259 +40,205 @@ bun install --frozen-lockfile
|
|
|
24
40
|
Initialize package-owned pipeline support:
|
|
25
41
|
|
|
26
42
|
```shell
|
|
27
|
-
|
|
43
|
+
moka init
|
|
28
44
|
```
|
|
29
45
|
|
|
30
|
-
`
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
46
|
+
`moka init` installs default project skills with `npx @uidotsh/install`, then
|
|
47
|
+
writes generated OpenCode command surfaces plus the singleton `pipeline-gateway`
|
|
48
|
+
MCP entry. Set `UIDOTSH_TOKEN` before running `moka init` so the ui.sh installer
|
|
49
|
+
does not prompt for the token. OpenCode is the package default runtime. The
|
|
50
|
+
command does not create repo-local `.pipeline` config files.
|
|
35
51
|
|
|
36
|
-
The default MCP gateway can run locally or point at the hosted Momokaya
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
protected gateway:
|
|
52
|
+
The default MCP gateway can run locally or point at the hosted Momokaya gateway.
|
|
53
|
+
Set `PIPELINE_MCP_GATEWAY_AUTHORIZATION` to the full HTTP `Authorization` header
|
|
54
|
+
value before starting OpenCode when using a protected gateway:
|
|
40
55
|
|
|
41
56
|
```shell
|
|
42
57
|
export PIPELINE_MCP_GATEWAY_AUTHORIZATION="Basic $(printf '%s' 'user:password' | base64)"
|
|
43
58
|
```
|
|
44
59
|
|
|
45
|
-
|
|
60
|
+
Check or refresh generated host files after package upgrades:
|
|
46
61
|
|
|
47
62
|
```shell
|
|
48
|
-
|
|
63
|
+
moka install-commands --host all --check
|
|
49
64
|
```
|
|
50
65
|
|
|
51
66
|
Check local prerequisites and config health:
|
|
52
67
|
|
|
53
68
|
```shell
|
|
54
|
-
|
|
69
|
+
moka doctor
|
|
55
70
|
```
|
|
56
71
|
|
|
57
|
-
|
|
58
|
-
and MCP servers to agent profiles, see `docs/operator-guide.md`.
|
|
59
|
-
|
|
60
|
-
Validate the config and compiled DAG:
|
|
72
|
+
Validate the package-owned config and compiled workflow plan:
|
|
61
73
|
|
|
62
74
|
```shell
|
|
63
|
-
|
|
75
|
+
moka validate
|
|
64
76
|
```
|
|
65
77
|
|
|
66
|
-
Inspect the execution plan
|
|
78
|
+
Inspect the execution plan:
|
|
67
79
|
|
|
68
80
|
```shell
|
|
69
|
-
|
|
81
|
+
moka explain-plan
|
|
70
82
|
```
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
## Command Surface
|
|
85
|
+
|
|
86
|
+
`moka submit "<task>"`
|
|
87
|
+
|
|
88
|
+
Generates the full graph schedule for a task, builds the runner payload from the
|
|
89
|
+
current git context, and submits an Argo Workflow to the configured Momokaya
|
|
90
|
+
cluster.
|
|
73
91
|
|
|
74
92
|
```shell
|
|
75
|
-
|
|
93
|
+
moka submit "Implement PIPE-123 user-facing behavior"
|
|
76
94
|
```
|
|
77
95
|
|
|
78
|
-
|
|
79
|
-
|
|
96
|
+
`moka submit "<task>" --quick`
|
|
97
|
+
|
|
98
|
+
Uses the compact graph for smaller work.
|
|
80
99
|
|
|
81
100
|
```shell
|
|
82
|
-
|
|
101
|
+
moka submit "Fix the login bug" --quick
|
|
83
102
|
```
|
|
84
103
|
|
|
85
|
-
|
|
104
|
+
`moka submit --schedule <schedule.yaml> "<task>"`
|
|
105
|
+
|
|
106
|
+
Submits a previously approved schedule artifact.
|
|
86
107
|
|
|
87
108
|
```shell
|
|
88
|
-
|
|
109
|
+
moka submit --schedule .pipeline/runs/<runId>/schedule.yaml "Implement PIPE-123"
|
|
89
110
|
```
|
|
90
111
|
|
|
91
|
-
|
|
112
|
+
`moka submit --command -- <argv...>`
|
|
113
|
+
|
|
114
|
+
Submits one explicit command as a one-task Argo Workflow.
|
|
92
115
|
|
|
93
116
|
```shell
|
|
94
|
-
|
|
117
|
+
moka submit --command -- opencode run "fix this bug"
|
|
95
118
|
```
|
|
96
119
|
|
|
97
|
-
|
|
120
|
+
`moka run "<task>"`
|
|
121
|
+
|
|
122
|
+
Runs package-owned workflow config from the current worktree. Scheduled
|
|
123
|
+
entrypoints generate a schedule artifact under `.pipeline/runs/<runId>/` and run
|
|
124
|
+
the compiled schedule through the runtime.
|
|
98
125
|
|
|
99
126
|
```shell
|
|
100
|
-
|
|
127
|
+
moka run "Implement PIPE-123 user-facing behavior"
|
|
128
|
+
moka run --schedule .pipeline/runs/<runId>/schedule.yaml "Implement PIPE-123"
|
|
129
|
+
moka run --workflow inspect "Report the app structure and available checks. Do not modify files."
|
|
130
|
+
moka run --entrypoint quick "Implement a focused fix"
|
|
101
131
|
```
|
|
102
132
|
|
|
103
|
-
|
|
104
|
-
schedule artifact, and stops. Execution uses the same `pipe run --schedule`
|
|
105
|
-
approval boundary as `pipe`.
|
|
133
|
+
`moka inspect "<task>"`
|
|
106
134
|
|
|
107
|
-
|
|
135
|
+
Runs the configured read-only inspection entrypoint.
|
|
108
136
|
|
|
109
137
|
```shell
|
|
110
|
-
|
|
138
|
+
moka inspect "Explain the app structure and available checks"
|
|
111
139
|
```
|
|
112
140
|
|
|
113
|
-
Use `PIPELINE_TARGET_PATH=/path/to/worktree` when invoking from outside
|
|
114
|
-
target repository.
|
|
141
|
+
Use `PIPELINE_TARGET_PATH=/path/to/worktree` when invoking `moka` from outside
|
|
142
|
+
the target repository.
|
|
115
143
|
|
|
116
|
-
|
|
144
|
+
For a compact command reference, see
|
|
145
|
+
[`docs/operator-guide.md`](docs/operator-guide.md).
|
|
117
146
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
147
|
+
## Momokaya Runner Image
|
|
148
|
+
|
|
149
|
+
The package is also the runner code used by the Momokaya runner image. The
|
|
150
|
+
control plane owns Argo Workflow submission, run listing, cancellation, event
|
|
151
|
+
storage, Kueue discovery, and UI rendering. This package owns the in-container
|
|
152
|
+
`moka runner-command` and `moka runner-finalize` commands used by Argo Workflow
|
|
153
|
+
DAG tasks.
|
|
124
154
|
|
|
125
155
|
Argo starts the image with payload, schedule, and per-task descriptor files
|
|
126
156
|
mounted from ConfigMaps, plus the event auth token mounted from a Secret. The
|
|
127
157
|
runner reads `--payload-file`, `--schedule-file`, and `/etc/pipeline/task.json`;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
`events.authTokenFile`; payload JSON, task identity, and auth token material are
|
|
131
|
-
not delivered through environment variables. The payload contract is documented in
|
|
158
|
+
payload JSON, task identity, and auth token material are not delivered through
|
|
159
|
+
environment variables. The payload contract is documented in
|
|
132
160
|
[`docs/pipeline-console-runner-contract.md`](docs/pipeline-console-runner-contract.md).
|
|
133
|
-
|
|
161
|
+
|
|
162
|
+
Submitters can import the executable contract from
|
|
134
163
|
`@oisincoveney/pipeline/runner-command-contract` for payload construction,
|
|
135
164
|
validation, contract-version checks, and JSON Schema generation.
|
|
136
|
-
Use `PIPELINE_TARGET_PATH=/path/to/worktree` when the checked-out target repo is
|
|
137
|
-
mounted somewhere other than the process working directory.
|
|
138
165
|
|
|
139
|
-
|
|
166
|
+
Pipeline Console submits hosted runs through `@oisincoveney/pipeline/moka-submit`.
|
|
167
|
+
The subpath exports `mokaSubmitOptionsSchema`, `mokaSubmitResultSchema`,
|
|
168
|
+
`MokaSubmitOptionsInput`, `MokaSubmitOptionsOutput`, `MokaSubmitInput`,
|
|
169
|
+
`MokaSubmitOutput`, and `submitMoka` so callers can validate prompt or ticket
|
|
170
|
+
tasks with explicit repository, run, delivery, event sink, and runner settings
|
|
171
|
+
without importing Argo, Kubernetes, or runner-command internals.
|
|
172
|
+
|
|
173
|
+
## Configuration Model
|
|
140
174
|
|
|
141
175
|
Runtime execution uses package-owned defaults. Tests and advanced embedding code
|
|
142
176
|
can still parse explicit YAML parts with `parsePipelineConfigParts()`.
|
|
143
177
|
|
|
144
|
-
|
|
178
|
+
Package-owned defaults declare:
|
|
145
179
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
model: gpt-5.5
|
|
154
|
-
capabilities:
|
|
155
|
-
native_subagents: true
|
|
156
|
-
tools: [read, grep, bash, edit, write]
|
|
157
|
-
filesystem: [read-only, workspace-write]
|
|
158
|
-
network: [inherit]
|
|
159
|
-
output_formats: [text, json, jsonl, json_schema]
|
|
160
|
-
```
|
|
180
|
+
- runner adapters and capabilities
|
|
181
|
+
- profiles, rules, skills, tools, filesystem grants, network grants, and output
|
|
182
|
+
contracts
|
|
183
|
+
- the singleton `pipeline-gateway` MCP connection
|
|
184
|
+
- workflows, schedules, hooks, gates, artifacts, retries, and timeouts
|
|
185
|
+
- generated OpenCode host resources
|
|
186
|
+
- goal-loop contracts and continuation context
|
|
161
187
|
|
|
162
|
-
|
|
188
|
+
Current default entrypoints:
|
|
163
189
|
|
|
164
190
|
```yaml
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
tools: [read, grep, bash]
|
|
173
|
-
filesystem:
|
|
174
|
-
mode: read-only
|
|
175
|
-
network:
|
|
176
|
-
mode: inherit
|
|
177
|
-
implementer:
|
|
178
|
-
runner: codex
|
|
179
|
-
instructions:
|
|
180
|
-
inline: Implement the requested change and return evidence.
|
|
181
|
-
tools: [read, grep, bash, edit, write]
|
|
182
|
-
filesystem:
|
|
183
|
-
mode: workspace-write
|
|
184
|
-
output:
|
|
185
|
-
format: text
|
|
191
|
+
entrypoints:
|
|
192
|
+
quick:
|
|
193
|
+
schedule: quick-schedule
|
|
194
|
+
execute:
|
|
195
|
+
schedule: execute-schedule
|
|
196
|
+
inspect:
|
|
197
|
+
workflow: inspect
|
|
186
198
|
```
|
|
187
199
|
|
|
188
|
-
|
|
200
|
+
Current schedule policies:
|
|
189
201
|
|
|
190
202
|
```yaml
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
on: {}
|
|
200
|
-
|
|
201
|
-
workflows:
|
|
202
|
-
default:
|
|
203
|
-
execution:
|
|
204
|
-
fail_fast: true
|
|
205
|
-
max_parallel_nodes: 2
|
|
206
|
-
nodes:
|
|
207
|
-
- id: implement
|
|
208
|
-
kind: agent
|
|
209
|
-
profile: implementer
|
|
210
|
-
timeout_ms: 300000
|
|
211
|
-
retries:
|
|
212
|
-
max_attempts: 2
|
|
213
|
-
retry_on: [exit_nonzero, gate_failure, timeout]
|
|
214
|
-
gates:
|
|
215
|
-
- kind: builtin
|
|
216
|
-
builtin: test
|
|
217
|
-
- kind: builtin
|
|
218
|
-
builtin: typecheck
|
|
203
|
+
scheduler:
|
|
204
|
+
commands:
|
|
205
|
+
quick:
|
|
206
|
+
schedule: quick-schedule
|
|
207
|
+
catalog: quick
|
|
208
|
+
execute:
|
|
209
|
+
schedule: execute-schedule
|
|
210
|
+
catalog: execute
|
|
219
211
|
```
|
|
220
212
|
|
|
221
|
-
Package-owned defaults declare `entrypoints` that expose stable app or CLI names
|
|
222
|
-
resolving to workflows or schedule policies. Direct `--workflow` selection
|
|
223
|
-
remains available and takes precedence over `--entrypoint` when both are set.
|
|
224
|
-
|
|
225
|
-
The package defaults include a full research, red, green, verify, learn
|
|
226
|
-
workflow. See `docs/config-architecture.md` for the host support matrix.
|
|
227
|
-
|
|
228
|
-
### Structural Parallelism
|
|
229
|
-
|
|
230
213
|
Workflows and generated schedules can express fixed parallel structure. A
|
|
231
214
|
`kind: parallel` node contains a fixed set of child nodes that run concurrently
|
|
232
215
|
after dependencies pass. A `kind: group` node groups existing nodes behind a
|
|
233
|
-
single dependency target.
|
|
234
|
-
|
|
235
|
-
or in the generated schedule artifact.
|
|
216
|
+
single dependency target. Agents may route work to tracks, but the branch
|
|
217
|
+
topology stays auditable in YAML or in the generated schedule artifact.
|
|
236
218
|
|
|
237
|
-
|
|
219
|
+
See [`docs/config-architecture.md`](docs/config-architecture.md) for the config
|
|
220
|
+
shape and [`docs/xstate-runtime-actor-model.md`](docs/xstate-runtime-actor-model.md)
|
|
221
|
+
for the runtime actor model.
|
|
238
222
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
profile: pipeline-researcher
|
|
246
|
-
- id: plan
|
|
247
|
-
kind: agent
|
|
248
|
-
profile: pipeline-epic-router
|
|
249
|
-
needs: [research]
|
|
250
|
-
- id: implement
|
|
251
|
-
kind: parallel
|
|
252
|
-
needs: [plan]
|
|
253
|
-
nodes:
|
|
254
|
-
- id: test
|
|
255
|
-
kind: agent
|
|
256
|
-
profile: pipeline-code-writer
|
|
257
|
-
- id: frontend
|
|
258
|
-
kind: agent
|
|
259
|
-
profile: pipeline-code-writer
|
|
260
|
-
- id: backend
|
|
261
|
-
kind: agent
|
|
262
|
-
profile: pipeline-code-writer
|
|
263
|
-
- id: k8s
|
|
264
|
-
kind: agent
|
|
265
|
-
profile: pipeline-code-writer
|
|
266
|
-
- id: verify
|
|
267
|
-
kind: agent
|
|
268
|
-
profile: pipeline-verifier
|
|
269
|
-
needs: [implement]
|
|
223
|
+
## Generated Host Resources
|
|
224
|
+
|
|
225
|
+
Generate native host files during setup:
|
|
226
|
+
|
|
227
|
+
```shell
|
|
228
|
+
moka init
|
|
270
229
|
```
|
|
271
230
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
231
|
+
Generated resources are derived from package-owned config; they are not separate
|
|
232
|
+
sources of truth. Host resources use OpenCode native agents for model-backed
|
|
233
|
+
nodes. Otherwise generated instructions dispatch to the configured command
|
|
234
|
+
runner.
|
|
235
|
+
|
|
236
|
+
| Host | Generated files | Invocation |
|
|
237
|
+
| --- | --- | --- |
|
|
238
|
+
| OpenCode | `.opencode/commands/<entrypoint>.md`, `.opencode/agents/*.md`, `.opencode/skills/*/SKILL.md`, `.opencode/plugins/*.ts`, `.opencode/opencode.json` | `/quick <task>`, `/execute <task>`, `/inspect <task>` |
|
|
275
239
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
`src/mcp`; see [`docs/mcp-host-isolation.md`](docs/mcp-host-isolation.md) and
|
|
279
|
-
[`docs/mcp-gateway.md`](docs/mcp-gateway.md).
|
|
240
|
+
The installer is idempotent, supports `--check` and `--dry-run`, and refuses to
|
|
241
|
+
overwrite manually edited files unless `--force` is supplied.
|
|
280
242
|
|
|
281
243
|
## OpenCode-First Goal Loop
|
|
282
244
|
|
|
@@ -286,69 +248,19 @@ evidence, acceptance evidence, changed files, and failed gates are stored by the
|
|
|
286
248
|
pipeline, not inferred from an OpenCode session. A goal is complete only when
|
|
287
249
|
deterministic verifier evidence and acceptance coverage are both present.
|
|
288
250
|
|
|
289
|
-
The curated OpenCode stack generated by package config includes:
|
|
290
|
-
|
|
291
|
-
- project commands, agents, projected skills, explicit permissions, LSP, and the
|
|
292
|
-
singleton `pipeline-gateway` MCP server;
|
|
293
|
-
- `.opencode/plugins/pipeline-goal-context.ts`, a package-owned compaction hook
|
|
294
|
-
that injects current goal-loop context into OpenCode continuation summaries;
|
|
295
|
-
- `@devtheops/opencode-plugin-otel@1.1.0` in `.opencode/opencode.json`;
|
|
296
|
-
- surfaced ecosystem inputs for DCP code, handoff/session capture,
|
|
297
|
-
background-agent delegation, prompt snippets, memory/context helpers, and
|
|
298
|
-
policy hooks.
|
|
299
|
-
|
|
300
251
|
Team mode is generated as an auditable schedule graph. OpenCode subagents can
|
|
301
252
|
execute graph nodes, but dependencies, retries, gates, verifier passes, and
|
|
302
253
|
acceptance evidence stay pipeline-owned.
|
|
303
254
|
|
|
304
|
-
## Generated Host Resources
|
|
305
|
-
|
|
306
|
-
Generate native host files during setup:
|
|
307
|
-
|
|
308
|
-
```shell
|
|
309
|
-
pipe init
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
Generated resources are derived from package-owned config; they are not separate
|
|
313
|
-
sources of truth. Host resources use exact native agents when the node runner
|
|
314
|
-
matches the host. OpenCode also uses native subagents for cross-runner
|
|
315
|
-
model-backed nodes when the runner/profile provides an OpenCode-compatible
|
|
316
|
-
`model` or `host_models.opencode` value. Otherwise generated instructions
|
|
317
|
-
dispatch to that runner's CLI instead of inventing a host model.
|
|
318
|
-
The installer creates one command surface per configured entrypoint.
|
|
319
|
-
|
|
320
|
-
| Host | Generated files | Invocation |
|
|
321
|
-
| ----------- | ----------------------------------------------------------------- | ---------------------------------- |
|
|
322
|
-
| Codex | `.agents/skills/<entrypoint>/SKILL.md`, `.agents/plugins/oisin-pipeline/commands/<entrypoint>.md`, `.agents/plugins/oisin-pipeline/agents/*.md`, `.codex/config.toml` | `$pipe <task>`, `$inspect <task>`, `$epic <task>`, `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
323
|
-
| OpenCode | `.opencode/commands/<entrypoint>.md`, `.opencode/agents/*.md`, `.opencode/skills/*/SKILL.md`, `.opencode/plugins/*.ts`, `.opencode/opencode.json` | `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
324
|
-
| Kimi | `.kimi/commands/<entrypoint>.md`, `.kimi/agents/*.yaml` | `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
325
|
-
| Pi | `.pi/prompts/<entrypoint>.md` | `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
326
|
-
|
|
327
|
-
The installer is idempotent, supports `--check` and `--dry-run`, and refuses to
|
|
328
|
-
overwrite manually edited files unless `--force` is supplied.
|
|
329
|
-
|
|
330
|
-
Runner `model` is the canonical model id. Optional `host_models.<host>` entries
|
|
331
|
-
are only needed when a host uses a different model identifier:
|
|
332
|
-
|
|
333
|
-
```yaml
|
|
334
|
-
runners:
|
|
335
|
-
kimi:
|
|
336
|
-
type: kimi
|
|
337
|
-
command: kimi
|
|
338
|
-
model: moonshot/kimi-k2.6
|
|
339
|
-
```
|
|
340
|
-
|
|
341
255
|
## Runtime Guarantees
|
|
342
256
|
|
|
343
|
-
- `
|
|
257
|
+
- `moka run` loads package-owned `@oisincoveney/pipeline` config even when the
|
|
344
258
|
repository has no repo-local `.pipeline` config files.
|
|
345
259
|
- Multi-agent workflows execute as separate agent boundaries; nodes are not
|
|
346
260
|
merged into one prompt.
|
|
347
261
|
- Native subagent strategy is preferred when the selected runner can represent
|
|
348
262
|
the configured semantics. Otherwise the runtime uses a subprocess boundary.
|
|
349
263
|
- Parallel DAG batches run concurrently after dependencies and gates pass.
|
|
350
|
-
- `kind: parallel` child sets are fixed in YAML; routing agents decide which
|
|
351
|
-
work belongs in each declared track, not how many tracks exist.
|
|
352
264
|
- Workflow execution can cap parallelism and enable fail-fast batch stopping.
|
|
353
265
|
- Nodes can declare bounded retries, retry reasons, backoff, and execution
|
|
354
266
|
timeouts.
|
|
@@ -360,7 +272,7 @@ runners:
|
|
|
360
272
|
|
|
361
273
|
## App-Facing API
|
|
362
274
|
|
|
363
|
-
External apps can import
|
|
275
|
+
External apps can import stable config, planner, schedule, and runtime surfaces
|
|
364
276
|
without deep-importing private source paths:
|
|
365
277
|
|
|
366
278
|
```ts
|
|
@@ -400,9 +312,17 @@ import {
|
|
|
400
312
|
} from "@oisincoveney/pipeline/runner-command-contract";
|
|
401
313
|
```
|
|
402
314
|
|
|
403
|
-
|
|
315
|
+
Argo Workflows can be rendered with `buildRunnerArgoWorkflowManifest` from
|
|
316
|
+
`@oisincoveney/pipeline/argo-workflow` and submitted with
|
|
317
|
+
`submitRunnerArgoWorkflow` from `@oisincoveney/pipeline/argo-submit`.
|
|
318
|
+
|
|
319
|
+
## Release And Verification
|
|
404
320
|
|
|
405
|
-
|
|
321
|
+
Package and container publishing is owned by GitHub Actions. Do not publish from
|
|
322
|
+
a workstation with `npm publish`, `semantic-release`, Docker pushes, or direct
|
|
323
|
+
registry commands.
|
|
324
|
+
|
|
325
|
+
Before committing changes in this repository, run:
|
|
406
326
|
|
|
407
327
|
```shell
|
|
408
328
|
bun run typecheck
|
|
@@ -411,7 +331,8 @@ bun run test
|
|
|
411
331
|
bun run build:cli
|
|
412
332
|
```
|
|
413
333
|
|
|
334
|
+
For runner-image wiring, also run:
|
|
414
335
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
336
|
+
```shell
|
|
337
|
+
bun run test:image
|
|
338
|
+
```
|
|
@@ -2,7 +2,7 @@ version: 1
|
|
|
2
2
|
generated_by: "@oisincoveney/pipeline"
|
|
3
3
|
runtime:
|
|
4
4
|
default_runner: opencode
|
|
5
|
-
compatibility_runners: [
|
|
5
|
+
compatibility_runners: []
|
|
6
6
|
default_stack_direct: true
|
|
7
7
|
state_authority: pipeline
|
|
8
8
|
official_dependencies:
|
|
@@ -56,7 +56,7 @@ ecosystem_code:
|
|
|
56
56
|
plugin:
|
|
57
57
|
kind: npm
|
|
58
58
|
package: "@prevalentware/opencode-goal-plugin"
|
|
59
|
-
role:
|
|
59
|
+
role: long-running goal mode with /goal slash command, persistent state, evidence-gated completion, and TUI sidebar
|
|
60
60
|
default_stack: true
|
|
61
61
|
source: https://www.npmjs.com/package/@prevalentware/opencode-goal-plugin
|
|
62
62
|
- id: oc-codex-multi-auth
|
|
@@ -88,7 +88,7 @@ mcp_backends:
|
|
|
88
88
|
locality: project-remote
|
|
89
89
|
required: true
|
|
90
90
|
credentials: [PIPELINE_MCP_GATEWAY_AUTHORIZATION]
|
|
91
|
-
role: singleton MCP server exposed to generated
|
|
91
|
+
role: singleton MCP server exposed to generated OpenCode host config
|
|
92
92
|
- id: context7
|
|
93
93
|
name: Context7
|
|
94
94
|
locality: shared-remote
|