@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.
Files changed (45) hide show
  1. package/.agents/skills/execute/SKILL.md +5 -5
  2. package/.agents/skills/inspect/SKILL.md +2 -2
  3. package/.agents/skills/quick/SKILL.md +5 -5
  4. package/README.md +159 -238
  5. package/defaults/install-manifest.json +1 -2
  6. package/defaults/opencode-ecosystem.yaml +3 -3
  7. package/dist/argo-submit.d.ts +3 -15
  8. package/dist/argo-submit.js +2 -31
  9. package/dist/argo-workflow.d.ts +0 -5
  10. package/dist/argo-workflow.js +0 -45
  11. package/dist/commands/pipeline-command.js +1 -1
  12. package/dist/config.d.ts +7 -8
  13. package/dist/config.js +10 -34
  14. package/dist/gates.js +0 -1
  15. package/dist/hooks.d.ts +1 -1
  16. package/dist/index.js +9 -33
  17. package/dist/install-commands.js +132 -237
  18. package/dist/mcp/gateway.js +5 -21
  19. package/dist/moka-submit.d.ts +160 -0
  20. package/dist/moka-submit.js +140 -49
  21. package/dist/opencode-project-config.js +84 -0
  22. package/dist/pipeline-init.js +13 -11
  23. package/dist/run-state/git-refs.js +49 -20
  24. package/dist/runner-command-contract.d.ts +15 -3
  25. package/dist/runner-command-contract.js +1 -1
  26. package/dist/runner-output.js +0 -12
  27. package/dist/runner.d.ts +1 -1
  28. package/dist/runner.js +33 -74
  29. package/dist/runtime/agent-node/agent-node.js +2 -2
  30. package/dist/runtime/context/context.js +3 -3
  31. package/dist/runtime/events/events.js +3 -2
  32. package/dist/runtime/gates/gates.js +3 -3
  33. package/dist/runtime/hooks/hooks.js +1 -1
  34. package/dist/runtime/json-validation/json-validation.js +2 -5
  35. package/dist/workflow-submit-contract.d.ts +13 -0
  36. package/dist/workflow-submit-contract.js +12 -0
  37. package/docs/config-architecture.md +33 -30
  38. package/docs/mcp-gateway.md +19 -11
  39. package/docs/mcp-host-isolation.md +3 -17
  40. package/docs/operator-guide.md +182 -471
  41. package/docs/pipeline-console-runner-contract.md +14 -15
  42. package/docs/pipeline-smoke-recovery-plan.md +4 -4
  43. package/docs/slash-command-adapter-contract.md +4 -7
  44. package/package.json +6 -3
  45. 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 Kubernetes runner Jobs by default through `oisin-pipeline quick` and `oisin-pipeline execute`.
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 `oisin-pipeline execute <task description>` to submit the pipeline as a k8s job.
28
- The pipeline runtime executes inside a Kubernetes pod using the package-owned runner image.
29
- Use `oisin-pipeline execute --local <task description>` for local execution instead.
30
- Use `oisin-pipeline run --schedule <schedule.yaml>` only when rerunning an existing schedule artifact.
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 workflow node.
40
- Do not bypass configured runner subprocesses or package-configured gates when executing workflow nodes.
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 Kubernetes runner Jobs by default through `oisin-pipeline quick` and `oisin-pipeline execute`.
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 `oisin-pipeline quick <task description>` to submit the pipeline as a k8s job.
28
- The pipeline runtime executes inside a Kubernetes pod using the package-owned runner image.
29
- Use `oisin-pipeline quick --local <task description>` for local execution instead.
30
- Use `oisin-pipeline run --schedule <schedule.yaml>` only when rerunning an existing schedule artifact.
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. Runtime config is
4
- owned by the installed `@oisincoveney/pipeline` package. Repo-local `.pipeline`
5
- paths are runtime artifact locations only; they are not the runtime config
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
- ## Requirements
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
- - `npx`, `backlog`, `uvx`, and Docker on `PATH` for default skills and MCP gateway setup
13
- - At least one configured runner CLI on `PATH`: `codex`, `opencode`, `kimi`,
14
- `pi`, or a declared command runner
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
- Install dependencies:
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
- pipe init
43
+ moka init
28
44
  ```
29
45
 
30
- `pipe init` installs default project skills with
31
- `npx skills add oisincoveney/skills`, then writes generated OpenCode and Codex
32
- command surfaces plus their singleton `pipeline-gateway` MCP entries. OpenCode
33
- is the package default runtime; Codex remains a compatibility runner and host
34
- surface. The command does not create repo-local `.pipeline` config files.
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
- gateway. Set `PIPELINE_MCP_GATEWAY_AUTHORIZATION` to the full HTTP
38
- `Authorization` header value before starting Codex or OpenCode when using a
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
- To refresh or check generated host files later, use:
60
+ Check or refresh generated host files after package upgrades:
46
61
 
47
62
  ```shell
48
- pipe install-commands --host all --check
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
- pipe doctor
69
+ moka doctor
55
70
  ```
56
71
 
57
- For a compact operator guide covering every command plus how to attach skills
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
- pipe validate
75
+ moka validate
64
76
  ```
65
77
 
66
- Inspect the execution plan before running:
78
+ Inspect the execution plan:
67
79
 
68
80
  ```shell
69
- pipe explain-plan
81
+ moka explain-plan
70
82
  ```
71
83
 
72
- Generate the default schedule artifact:
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
- pipe "Implement PIPE-123 user-facing behavior"
93
+ moka submit "Implement PIPE-123 user-facing behavior"
76
94
  ```
77
95
 
78
- This writes `.pipeline/runs/<runId>/schedule.yaml` and stops for approval. Run
79
- the approved artifact explicitly:
96
+ `moka submit "<task>" --quick`
97
+
98
+ Uses the compact graph for smaller work.
80
99
 
81
100
  ```shell
82
- pipe run --schedule .pipeline/runs/<runId>/schedule.yaml "Implement PIPE-123 user-facing behavior"
101
+ moka submit "Fix the login bug" --quick
83
102
  ```
84
103
 
85
- Run a read-only repository inspection:
104
+ `moka submit --schedule <schedule.yaml> "<task>"`
105
+
106
+ Submits a previously approved schedule artifact.
86
107
 
87
108
  ```shell
88
- pipe run --workflow inspect "Report the app structure and available checks. Do not modify files."
109
+ moka submit --schedule .pipeline/runs/<runId>/schedule.yaml "Implement PIPE-123"
89
110
  ```
90
111
 
91
- Run a configured entrypoint alias:
112
+ `moka submit --command -- <argv...>`
113
+
114
+ Submits one explicit command as a one-task Argo Workflow.
92
115
 
93
116
  ```shell
94
- pipe run --entrypoint dogfood "Run deterministic local verification."
117
+ moka submit --command -- opencode run "fix this bug"
95
118
  ```
96
119
 
97
- Run an epic drain workflow:
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
- pipe epic PIPE-31
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
- The `epic` entrypoint generates a specialized schedule for the epic, writes the
104
- schedule artifact, and stops. Execution uses the same `pipe run --schedule`
105
- approval boundary as `pipe`.
133
+ `moka inspect "<task>"`
106
134
 
107
- The `pipe` binary also accepts the task directly:
135
+ Runs the configured read-only inspection entrypoint.
108
136
 
109
137
  ```shell
110
- pipe "Implement PIPE-123 user-facing behavior"
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 the
114
- target repository.
141
+ Use `PIPELINE_TARGET_PATH=/path/to/worktree` when invoking `moka` from outside
142
+ the target repository.
115
143
 
116
- ## Pipeline Console Runner Image
144
+ For a compact command reference, see
145
+ [`docs/operator-guide.md`](docs/operator-guide.md).
117
146
 
118
- `oisin-pipeline` is also the runner package/image used by `pipeline-console`.
119
- The control plane owns Argo Workflow submission, run listing, cancellation,
120
- event storage, Kueue discovery, and UI rendering. This package owns the
121
- in-container `runner-command` command used by Argo Workflow DAG tasks: payload
122
- validation, direct argv execution, event translation, authenticated event
123
- posting, signal cancellation, and final event flushing.
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
- the payload contains the workflow id and the task descriptor contains the node
129
- id. The event auth token still comes from the file path specified in
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
- The executable contract is exported from
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
- ## Custom YAML Parts
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
- `runners`:
178
+ Package-owned defaults declare:
145
179
 
146
- ```yaml
147
- version: 1
148
-
149
- runners:
150
- codex:
151
- type: codex
152
- command: codex
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
- `profiles`:
188
+ Current default entrypoints:
163
189
 
164
190
  ```yaml
165
- version: 1
166
-
167
- profiles:
168
- orchestrator:
169
- runner: codex
170
- instructions:
171
- inline: Coordinate the workflow from this YAML file only.
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
- Example workflow shape:
200
+ Current schedule policies:
189
201
 
190
202
  ```yaml
191
- version: 1
192
- default_workflow: default
193
-
194
- orchestrator:
195
- profile: orchestrator
196
-
197
- hooks:
198
- functions: {}
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. This is structural parallelism, not dynamic fanout:
234
- agents may route work to tracks, but the branch topology stays auditable in YAML
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
- The scheduler emits explicit root DAGs for epics:
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
- ```yaml
240
- workflows:
241
- root:
242
- nodes:
243
- - id: research
244
- kind: agent
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
- For Argo execution, Git refs carry node state across DAG tasks. Runner tasks
273
- derive state refs from `payload.run.id`, `payload.workflow.id`, and the mounted
274
- task descriptor node id.
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
- Default profile skills and generated host resources are installed by
277
- `pipe init`. Runtime MCP projection and host-specific isolation policy live in
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
- - `pipe run` loads package-owned `@oisincoveney/pipeline` config even when the
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 the stable config, planner, schedule, and runtime surfaces
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
- ## Verification
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
- Use these commands before committing changes in this repository:
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
- Argo Workflows can be rendered with `buildRunnerArgoWorkflowManifest` from
416
- `@oisincoveney/pipeline/argo-workflow` and submitted with
417
- `submitRunnerArgoWorkflow` from `@oisincoveney/pipeline/argo-submit`.
336
+ ```shell
337
+ bun run test:image
338
+ ```
@@ -2,8 +2,7 @@
2
2
  "version": 1,
3
3
  "skills": [
4
4
  {
5
- "source": "oisincoveney/skills",
6
- "args": ["--agent", "codex", "--skill", "*", "--yes", "--copy"]
5
+ "source": "@uidotsh/install"
7
6
  }
8
7
  ]
9
8
  }
@@ -2,7 +2,7 @@ version: 1
2
2
  generated_by: "@oisincoveney/pipeline"
3
3
  runtime:
4
4
  default_runner: opencode
5
- compatibility_runners: [codex]
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: Codex-style long-running goal mode with /goal slash command, persistent state, evidence-gated completion, and TUI sidebar
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 Codex and OpenCode host config
91
+ role: singleton MCP server exposed to generated OpenCode host config
92
92
  - id: context7
93
93
  name: Context7
94
94
  locality: shared-remote