@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.
- 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 +152 -238
- package/defaults/install-manifest.json +1 -2
- package/defaults/opencode-ecosystem.yaml +3 -3
- package/dist/argo-submit.d.ts +1 -6
- package/dist/argo-submit.js +0 -22
- 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 +4 -5
- package/dist/config.js +10 -34
- package/dist/gates.js +0 -1
- package/dist/index.js +9 -33
- package/dist/install-commands.js +37 -213
- package/dist/mcp/gateway.js +5 -21
- package/dist/moka-submit.js +17 -18
- package/dist/pipeline-init.js +13 -11
- package/dist/run-state/git-refs.js +49 -20
- 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/docs/config-architecture.md +33 -30
- package/docs/mcp-gateway.md +8 -8
- package/docs/mcp-host-isolation.md +3 -17
- package/docs/operator-guide.md +177 -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 +3 -5
- 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,198 @@ 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
|
+
## 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
|
-
|
|
171
|
+
Package-owned defaults declare:
|
|
145
172
|
|
|
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
|
-
```
|
|
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
|
-
|
|
181
|
+
Current default entrypoints:
|
|
163
182
|
|
|
164
183
|
```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
|
|
184
|
+
entrypoints:
|
|
185
|
+
quick:
|
|
186
|
+
schedule: quick-schedule
|
|
187
|
+
execute:
|
|
188
|
+
schedule: execute-schedule
|
|
189
|
+
inspect:
|
|
190
|
+
workflow: inspect
|
|
186
191
|
```
|
|
187
192
|
|
|
188
|
-
|
|
193
|
+
Current schedule policies:
|
|
189
194
|
|
|
190
195
|
```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
|
|
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.
|
|
234
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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]
|
|
216
|
+
## Generated Host Resources
|
|
217
|
+
|
|
218
|
+
Generate native host files during setup:
|
|
219
|
+
|
|
220
|
+
```shell
|
|
221
|
+
moka init
|
|
270
222
|
```
|
|
271
223
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
- `
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
416
|
-
|
|
417
|
-
|
|
329
|
+
```shell
|
|
330
|
+
bun run test:image
|
|
331
|
+
```
|
|
@@ -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
|
package/dist/argo-submit.d.ts
CHANGED
|
@@ -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"
|
|
47
|
+
type WorkflowApi = Pick<CustomObjectsApi, "createNamespacedCustomObject">;
|
|
53
48
|
interface SubmitRunnerArgoWorkflowDependencies {
|
|
54
49
|
coreApi?: CoreApi;
|
|
55
50
|
kubeConfig?: KubeConfig;
|