@oisincoveney/pipeline 1.24.0 → 1.25.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 (38) 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 +152 -238
  5. package/defaults/install-manifest.json +1 -2
  6. package/defaults/opencode-ecosystem.yaml +3 -3
  7. package/dist/argo-submit.d.ts +1 -6
  8. package/dist/argo-submit.js +0 -22
  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 +4 -5
  13. package/dist/config.js +10 -34
  14. package/dist/gates.js +0 -1
  15. package/dist/index.js +9 -33
  16. package/dist/install-commands.js +37 -213
  17. package/dist/mcp/gateway.js +5 -21
  18. package/dist/moka-submit.js +17 -18
  19. package/dist/pipeline-init.js +13 -11
  20. package/dist/run-state/git-refs.js +49 -20
  21. package/dist/runner-output.js +0 -12
  22. package/dist/runner.d.ts +1 -1
  23. package/dist/runner.js +33 -74
  24. package/dist/runtime/agent-node/agent-node.js +2 -2
  25. package/dist/runtime/context/context.js +3 -3
  26. package/dist/runtime/events/events.js +3 -2
  27. package/dist/runtime/gates/gates.js +3 -3
  28. package/dist/runtime/hooks/hooks.js +1 -1
  29. package/dist/runtime/json-validation/json-validation.js +2 -5
  30. package/docs/config-architecture.md +33 -30
  31. package/docs/mcp-gateway.md +8 -8
  32. package/docs/mcp-host-isolation.md +3 -17
  33. package/docs/operator-guide.md +177 -471
  34. package/docs/pipeline-console-runner-contract.md +14 -15
  35. package/docs/pipeline-smoke-recovery-plan.md +4 -4
  36. package/docs/slash-command-adapter-contract.md +4 -7
  37. package/package.json +3 -5
  38. 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,198 @@ 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
+ ## Configuration Model
140
167
 
141
168
  Runtime execution uses package-owned defaults. Tests and advanced embedding code
142
169
  can still parse explicit YAML parts with `parsePipelineConfigParts()`.
143
170
 
144
- `runners`:
171
+ Package-owned defaults declare:
145
172
 
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
- ```
173
+ - runner adapters and capabilities
174
+ - profiles, rules, skills, tools, filesystem grants, network grants, and output
175
+ contracts
176
+ - the singleton `pipeline-gateway` MCP connection
177
+ - workflows, schedules, hooks, gates, artifacts, retries, and timeouts
178
+ - generated OpenCode host resources
179
+ - goal-loop contracts and continuation context
161
180
 
162
- `profiles`:
181
+ Current default entrypoints:
163
182
 
164
183
  ```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
184
+ entrypoints:
185
+ quick:
186
+ schedule: quick-schedule
187
+ execute:
188
+ schedule: execute-schedule
189
+ inspect:
190
+ workflow: inspect
186
191
  ```
187
192
 
188
- Example workflow shape:
193
+ Current schedule policies:
189
194
 
190
195
  ```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
196
+ scheduler:
197
+ commands:
198
+ quick:
199
+ schedule: quick-schedule
200
+ catalog: quick
201
+ execute:
202
+ schedule: execute-schedule
203
+ catalog: execute
219
204
  ```
220
205
 
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
206
  Workflows and generated schedules can express fixed parallel structure. A
231
207
  `kind: parallel` node contains a fixed set of child nodes that run concurrently
232
208
  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.
209
+ single dependency target. Agents may route work to tracks, but the branch
210
+ topology stays auditable in YAML or in the generated schedule artifact.
236
211
 
237
- The scheduler emits explicit root DAGs for epics:
212
+ See [`docs/config-architecture.md`](docs/config-architecture.md) for the config
213
+ shape and [`docs/xstate-runtime-actor-model.md`](docs/xstate-runtime-actor-model.md)
214
+ for the runtime actor model.
238
215
 
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]
216
+ ## Generated Host Resources
217
+
218
+ Generate native host files during setup:
219
+
220
+ ```shell
221
+ moka init
270
222
  ```
271
223
 
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.
224
+ Generated resources are derived from package-owned config; they are not separate
225
+ sources of truth. Host resources use OpenCode native agents for model-backed
226
+ nodes. Otherwise generated instructions dispatch to the configured command
227
+ runner.
275
228
 
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).
229
+ | Host | Generated files | Invocation |
230
+ | --- | --- | --- |
231
+ | OpenCode | `.opencode/commands/<entrypoint>.md`, `.opencode/agents/*.md`, `.opencode/skills/*/SKILL.md`, `.opencode/plugins/*.ts`, `.opencode/opencode.json` | `/quick <task>`, `/execute <task>`, `/inspect <task>` |
232
+
233
+ The installer is idempotent, supports `--check` and `--dry-run`, and refuses to
234
+ overwrite manually edited files unless `--force` is supplied.
280
235
 
281
236
  ## OpenCode-First Goal Loop
282
237
 
@@ -286,69 +241,19 @@ evidence, acceptance evidence, changed files, and failed gates are stored by the
286
241
  pipeline, not inferred from an OpenCode session. A goal is complete only when
287
242
  deterministic verifier evidence and acceptance coverage are both present.
288
243
 
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
244
  Team mode is generated as an auditable schedule graph. OpenCode subagents can
301
245
  execute graph nodes, but dependencies, retries, gates, verifier passes, and
302
246
  acceptance evidence stay pipeline-owned.
303
247
 
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
248
  ## Runtime Guarantees
342
249
 
343
- - `pipe run` loads package-owned `@oisincoveney/pipeline` config even when the
250
+ - `moka run` loads package-owned `@oisincoveney/pipeline` config even when the
344
251
  repository has no repo-local `.pipeline` config files.
345
252
  - Multi-agent workflows execute as separate agent boundaries; nodes are not
346
253
  merged into one prompt.
347
254
  - Native subagent strategy is preferred when the selected runner can represent
348
255
  the configured semantics. Otherwise the runtime uses a subprocess boundary.
349
256
  - 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
257
  - Workflow execution can cap parallelism and enable fail-fast batch stopping.
353
258
  - Nodes can declare bounded retries, retry reasons, backoff, and execution
354
259
  timeouts.
@@ -360,7 +265,7 @@ runners:
360
265
 
361
266
  ## App-Facing API
362
267
 
363
- External apps can import the stable config, planner, schedule, and runtime surfaces
268
+ External apps can import stable config, planner, schedule, and runtime surfaces
364
269
  without deep-importing private source paths:
365
270
 
366
271
  ```ts
@@ -400,9 +305,17 @@ import {
400
305
  } from "@oisincoveney/pipeline/runner-command-contract";
401
306
  ```
402
307
 
403
- ## Verification
308
+ Argo Workflows can be rendered with `buildRunnerArgoWorkflowManifest` from
309
+ `@oisincoveney/pipeline/argo-workflow` and submitted with
310
+ `submitRunnerArgoWorkflow` from `@oisincoveney/pipeline/argo-submit`.
404
311
 
405
- Use these commands before committing changes in this repository:
312
+ ## Release And Verification
313
+
314
+ Package and container publishing is owned by GitHub Actions. Do not publish from
315
+ a workstation with `npm publish`, `semantic-release`, Docker pushes, or direct
316
+ registry commands.
317
+
318
+ Before committing changes in this repository, run:
406
319
 
407
320
  ```shell
408
321
  bun run typecheck
@@ -411,7 +324,8 @@ bun run test
411
324
  bun run build:cli
412
325
  ```
413
326
 
327
+ For runner-image wiring, also run:
414
328
 
415
- Argo Workflows can be rendered with `buildRunnerArgoWorkflowManifest` from
416
- `@oisincoveney/pipeline/argo-workflow` and submitted with
417
- `submitRunnerArgoWorkflow` from `@oisincoveney/pipeline/argo-submit`.
329
+ ```shell
330
+ bun run test:image
331
+ ```
@@ -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
@@ -4,7 +4,6 @@ import { CoreV1Api, CustomObjectsApi, KubeConfig } from "@kubernetes/client-node
4
4
 
5
5
  //#region src/argo-submit.d.ts
6
6
  declare const submitRunnerArgoWorkflowOptionsSchema: z.ZodObject<{
7
- codexAuthSecretName: z.ZodOptional<z.ZodString>;
8
7
  eventAuthSecretKey: z.ZodOptional<z.ZodString>;
9
8
  eventAuthSecretName: z.ZodOptional<z.ZodString>;
10
9
  generateName: z.ZodOptional<z.ZodString>;
@@ -20,10 +19,6 @@ declare const submitRunnerArgoWorkflowOptionsSchema: z.ZodObject<{
20
19
  name: z.ZodOptional<z.ZodString>;
21
20
  namespace: z.ZodDefault<z.ZodString>;
22
21
  opencodeAuthSecretName: z.ZodOptional<z.ZodString>;
23
- orchestrator: z.ZodDefault<z.ZodEnum<{
24
- codex: "codex";
25
- opencode: "opencode";
26
- }>>;
27
22
  payloadJson: z.ZodString;
28
23
  queueName: z.ZodOptional<z.ZodString>;
29
24
  scheduleYaml: z.ZodString;
@@ -49,7 +44,7 @@ type SubmitRunnerArgoWorkflowOptions = z.input<typeof submitRunnerArgoWorkflowOp
49
44
  type SubmitRunnerArgoWorkflowResult = z.infer<typeof submitRunnerArgoWorkflowResultSchema>;
50
45
  type CommandScheduleOptions = z.input<typeof commandScheduleOptionsSchema>;
51
46
  type CoreApi = Pick<CoreV1Api, "createNamespacedConfigMap">;
52
- type WorkflowApi = Pick<CustomObjectsApi, "createNamespacedCustomObject" | "getClusterCustomObject">;
47
+ type WorkflowApi = Pick<CustomObjectsApi, "createNamespacedCustomObject">;
53
48
  interface SubmitRunnerArgoWorkflowDependencies {
54
49
  coreApi?: CoreApi;
55
50
  kubeConfig?: KubeConfig;