@oisincoveney/pipeline 1.21.0 → 1.22.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/README.md +28 -4
- package/defaults/opencode/plugins/pipeline-goal-context.ts +18 -0
- package/defaults/opencode-ecosystem.yaml +203 -0
- package/dist/commands/pipeline-command.js +0 -1
- package/dist/config.d.ts +246 -11
- package/dist/config.js +299 -151
- package/dist/gates.js +33 -50
- package/dist/hooks.d.ts +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +35 -36
- package/dist/install-commands.js +137 -29
- package/dist/json-line-values.js +17 -0
- package/dist/mcp/gateway.js +45 -6
- package/dist/mcp/repo-local-backends.js +2 -2
- package/dist/mcp/toolhive-vmcp.js +20 -5
- package/dist/model-resolver.js +22 -0
- package/dist/package-assets.js +7 -0
- package/dist/pipeline-init.js +1 -0
- package/dist/pipeline-runtime.js +0 -1
- package/dist/runner-job/run.js +22 -13
- package/dist/runner-job/workspace.js +3 -3
- package/dist/runner-job-contract.d.ts +15 -1
- package/dist/runner-job-contract.js +5 -2
- package/dist/runner-job-k8s.d.ts +2 -0
- package/dist/runner-job-k8s.js +2 -0
- package/dist/runner-output.js +4 -23
- package/dist/runner.d.ts +2 -0
- package/dist/runner.js +15 -7
- package/dist/runtime/agent-node/agent-node.js +13 -2
- package/dist/runtime/builtins/builtins.js +17 -1
- package/dist/runtime/changed-files/changed-files.js +32 -4
- package/dist/runtime/goal-loop/continuation-prompt.js +125 -0
- package/dist/runtime/goal-loop.d.ts +37 -0
- package/dist/runtime/goal-loop.js +138 -0
- package/dist/runtime/goal-state/goal-requirement.js +11 -0
- package/dist/runtime/goal-state.d.ts +146 -0
- package/dist/runtime/goal-state.js +335 -0
- package/dist/runtime/opencode-adapter.js +60 -0
- package/dist/schedule-planner.d.ts +48 -24
- package/dist/schedule-planner.js +254 -96
- package/dist/standard-output-schemas.js +1 -0
- package/dist/workflow-planner.d.ts +1 -0
- package/dist/workflow-planner.js +1 -0
- package/docs/adr-opencode-first-goal-loop-runtime.md +73 -0
- package/docs/config-architecture.md +46 -2
- package/docs/mcp-gateway.md +12 -0
- package/docs/operator-guide.md +41 -4
- package/docs/slash-command-adapter-contract.md +10 -1
- package/package.json +10 -4
- package/dist/runtime/changed-files/index.js +0 -2
package/README.md
CHANGED
|
@@ -28,9 +28,10 @@ pipe init
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
`pipe init` installs default project skills with
|
|
31
|
-
`npx skills add oisincoveney/skills`, then writes generated
|
|
32
|
-
command surfaces plus their singleton `pipeline-gateway` MCP entries.
|
|
33
|
-
|
|
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.
|
|
34
35
|
|
|
35
36
|
The default MCP gateway can run locally or point at the hosted Momokaya
|
|
36
37
|
gateway. Set `PIPELINE_MCP_GATEWAY_AUTHORIZATION` to the full HTTP
|
|
@@ -295,6 +296,29 @@ Default profile skills and generated host resources are installed by
|
|
|
295
296
|
`src/mcp`; see [`docs/mcp-host-isolation.md`](docs/mcp-host-isolation.md) and
|
|
296
297
|
[`docs/mcp-gateway.md`](docs/mcp-gateway.md).
|
|
297
298
|
|
|
299
|
+
## OpenCode-First Goal Loop
|
|
300
|
+
|
|
301
|
+
Package defaults run built-in profiles through OpenCode first. Pipeline-owned
|
|
302
|
+
goal state remains authoritative: continuation prompts, stop reasons, verifier
|
|
303
|
+
evidence, acceptance evidence, changed files, and failed gates are stored by the
|
|
304
|
+
pipeline, not inferred from an OpenCode session. A goal is complete only when
|
|
305
|
+
deterministic verifier evidence and acceptance coverage are both present.
|
|
306
|
+
|
|
307
|
+
The curated OpenCode stack generated by package config includes:
|
|
308
|
+
|
|
309
|
+
- project commands, agents, projected skills, explicit permissions, LSP, and the
|
|
310
|
+
singleton `pipeline-gateway` MCP server;
|
|
311
|
+
- `.opencode/plugins/pipeline-goal-context.ts`, a package-owned compaction hook
|
|
312
|
+
that injects current goal-loop context into OpenCode continuation summaries;
|
|
313
|
+
- `@devtheops/opencode-plugin-otel@1.1.0` in `.opencode/opencode.json`;
|
|
314
|
+
- surfaced ecosystem inputs for DCP code, handoff/session capture,
|
|
315
|
+
background-agent delegation, prompt snippets, memory/context helpers, and
|
|
316
|
+
policy hooks.
|
|
317
|
+
|
|
318
|
+
Team mode is generated as an auditable schedule graph. OpenCode subagents can
|
|
319
|
+
execute graph nodes, but dependencies, retries, gates, verifier passes, and
|
|
320
|
+
acceptance evidence stay pipeline-owned.
|
|
321
|
+
|
|
298
322
|
## Generated Host Resources
|
|
299
323
|
|
|
300
324
|
Generate native host files during setup:
|
|
@@ -314,7 +338,7 @@ The installer creates one command surface per configured entrypoint.
|
|
|
314
338
|
| Host | Generated files | Invocation |
|
|
315
339
|
| ----------- | ----------------------------------------------------------------- | ---------------------------------- |
|
|
316
340
|
| 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>` |
|
|
317
|
-
| OpenCode | `.opencode/commands/<entrypoint>.md`, `.opencode/agents/*.md`
|
|
341
|
+
| OpenCode | `.opencode/commands/<entrypoint>.md`, `.opencode/agents/*.md`, `.opencode/skills/*/SKILL.md`, `.opencode/plugins/*.ts`, `.opencode/opencode.json` | `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
318
342
|
| Kimi | `.kimi/commands/<entrypoint>.md`, `.kimi/agents/*.yaml` | `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
319
343
|
| Pi | `.pi/prompts/<entrypoint>.md` | `/pipe <task>`, `/inspect <task>`, `/epic <task>` |
|
|
320
344
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface PipelineCompactionOutput {
|
|
2
|
+
context: string[];
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export const PipelineGoalContext = async () => ({
|
|
6
|
+
"experimental.session.compacting": (
|
|
7
|
+
_input: unknown,
|
|
8
|
+
output: PipelineCompactionOutput
|
|
9
|
+
) => {
|
|
10
|
+
output.context.push(
|
|
11
|
+
[
|
|
12
|
+
"## Pipeline Goal Context",
|
|
13
|
+
"Preserve the current task, schedule node, failed gates, verifier evidence, acceptance evidence, changed files, and exact next requirement.",
|
|
14
|
+
"Do not mark the goal complete without deterministic verifier and acceptance evidence.",
|
|
15
|
+
].join("\n")
|
|
16
|
+
);
|
|
17
|
+
},
|
|
18
|
+
});
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
generated_by: "@oisincoveney/pipeline"
|
|
3
|
+
runtime:
|
|
4
|
+
default_runner: opencode
|
|
5
|
+
compatibility_runners: [codex]
|
|
6
|
+
default_stack_direct: true
|
|
7
|
+
state_authority: pipeline
|
|
8
|
+
official_dependencies:
|
|
9
|
+
- id: "@opencode-ai/plugin"
|
|
10
|
+
package: "@opencode-ai/plugin"
|
|
11
|
+
role: plugin type surface for package-owned OpenCode plugins
|
|
12
|
+
dependency_scope: package-code-when-needed
|
|
13
|
+
source: https://opencode.ai/docs/plugins
|
|
14
|
+
- id: "@opencode-ai/sdk"
|
|
15
|
+
package: "@opencode-ai/sdk"
|
|
16
|
+
role: programmatic OpenCode API access for package-owned integration code
|
|
17
|
+
dependency_scope: package-code-when-needed
|
|
18
|
+
source: https://opencode.ai/docs/ecosystem
|
|
19
|
+
ecosystem_code:
|
|
20
|
+
- id: pipeline-goal-context
|
|
21
|
+
name: pipeline-goal-context
|
|
22
|
+
role: package-owned continuation context plugin for OpenCode compaction hooks
|
|
23
|
+
plugin:
|
|
24
|
+
kind: local
|
|
25
|
+
source_path: defaults/opencode/plugins/pipeline-goal-context.ts
|
|
26
|
+
target_path: .opencode/plugins/pipeline-goal-context.ts
|
|
27
|
+
default_stack: true
|
|
28
|
+
source: https://opencode.ai/docs/plugins
|
|
29
|
+
- id: dcp-code
|
|
30
|
+
name: DCP code
|
|
31
|
+
role: dynamic context pruning for long OpenCode sessions
|
|
32
|
+
default_stack: true
|
|
33
|
+
source: https://github.com/Tarquinen/opencode-dynamic-context-pruning
|
|
34
|
+
- id: opencode-background-agents
|
|
35
|
+
name: opencode-background-agents
|
|
36
|
+
role: async delegation and background-agent context persistence patterns
|
|
37
|
+
default_stack: true
|
|
38
|
+
source: https://github.com/kdcokenny/opencode-background-agents
|
|
39
|
+
- id: opencode-handoff
|
|
40
|
+
name: opencode-handoff
|
|
41
|
+
role: focused continuation and handoff prompt generation
|
|
42
|
+
default_stack: true
|
|
43
|
+
source: https://github.com/joshuadavidthomas/opencode-handoff
|
|
44
|
+
- id: opencode-plugin-otel
|
|
45
|
+
name: opencode-plugin-otel
|
|
46
|
+
package: "@devtheops/opencode-plugin-otel"
|
|
47
|
+
plugin:
|
|
48
|
+
kind: npm
|
|
49
|
+
package: "@devtheops/opencode-plugin-otel@1.1.0"
|
|
50
|
+
role: OpenTelemetry plugin pattern for runtime observability
|
|
51
|
+
default_stack: true
|
|
52
|
+
source: https://www.npmjs.com/package/@devtheops/opencode-plugin-otel
|
|
53
|
+
- id: opencode-snip
|
|
54
|
+
name: opencode-snip
|
|
55
|
+
role: prompt snippet and command-discipline helper patterns
|
|
56
|
+
default_stack: true
|
|
57
|
+
source: https://www.npmjs.com/package/opencode-snip
|
|
58
|
+
- id: opencode-mem
|
|
59
|
+
name: opencode-mem
|
|
60
|
+
role: OpenCode memory projection for durable goal context
|
|
61
|
+
default_stack: true
|
|
62
|
+
source: https://github.com/tickernelz/opencode-mem
|
|
63
|
+
- id: cupcake
|
|
64
|
+
name: cupcake
|
|
65
|
+
role: OpenCode policy enforcement through tool execution hooks
|
|
66
|
+
default_stack: true
|
|
67
|
+
source: https://cupcake.eqtylab.io/getting-started/usage/opencode/
|
|
68
|
+
mcp_backends:
|
|
69
|
+
- id: pipeline-gateway
|
|
70
|
+
locality: project-remote
|
|
71
|
+
required: true
|
|
72
|
+
credentials: [PIPELINE_MCP_GATEWAY_AUTHORIZATION]
|
|
73
|
+
role: singleton MCP server exposed to generated Codex and OpenCode host config
|
|
74
|
+
- id: context7
|
|
75
|
+
name: Context7
|
|
76
|
+
locality: shared-remote
|
|
77
|
+
required: true
|
|
78
|
+
credentials: []
|
|
79
|
+
role: current library documentation and examples
|
|
80
|
+
- id: uidotsh
|
|
81
|
+
locality: shared-remote
|
|
82
|
+
required: true
|
|
83
|
+
credentials: []
|
|
84
|
+
role: package skill and rule resource retrieval
|
|
85
|
+
- id: qdrant
|
|
86
|
+
name: Qdrant
|
|
87
|
+
locality: repo-scoped-remote
|
|
88
|
+
required: true
|
|
89
|
+
credentials: [QDRANT_URL, QDRANT_API_KEY]
|
|
90
|
+
role: repository memory lookup and storage
|
|
91
|
+
- id: fallow
|
|
92
|
+
name: Fallow
|
|
93
|
+
locality: repo-local
|
|
94
|
+
required: false
|
|
95
|
+
credentials: []
|
|
96
|
+
role: dead-code, complexity, duplication, boundary, and runtime coverage analysis
|
|
97
|
+
- id: serena
|
|
98
|
+
name: Serena
|
|
99
|
+
locality: repo-local
|
|
100
|
+
required: true
|
|
101
|
+
credentials: []
|
|
102
|
+
role: repository-local semantic code navigation
|
|
103
|
+
- id: backlog
|
|
104
|
+
name: Backlog
|
|
105
|
+
locality: repo-local
|
|
106
|
+
required: true
|
|
107
|
+
credentials: []
|
|
108
|
+
role: task and ticket state
|
|
109
|
+
- id: github
|
|
110
|
+
name: GitHub
|
|
111
|
+
locality: shared-remote
|
|
112
|
+
required: true
|
|
113
|
+
credentials: [GITHUB_TOKEN]
|
|
114
|
+
role: repository, PR, issue, and release workflow access
|
|
115
|
+
- id: playwright-browser
|
|
116
|
+
name: Playwright/browser
|
|
117
|
+
locality: repo-local
|
|
118
|
+
required: true
|
|
119
|
+
credentials: []
|
|
120
|
+
role: browser automation and frontend verification
|
|
121
|
+
- id: neon
|
|
122
|
+
name: Neon
|
|
123
|
+
locality: shared-remote
|
|
124
|
+
required: true
|
|
125
|
+
credentials: [NEON_API_KEY]
|
|
126
|
+
role: database branch and Postgres environment operations
|
|
127
|
+
skills:
|
|
128
|
+
- id: pipe
|
|
129
|
+
path: .agents/skills/pipe/SKILL.md
|
|
130
|
+
used_by: [orchestrator]
|
|
131
|
+
- id: inspect
|
|
132
|
+
path: .agents/skills/inspect/SKILL.md
|
|
133
|
+
used_by: [pipeline-inspector]
|
|
134
|
+
- id: epic
|
|
135
|
+
path: .agents/skills/epic/SKILL.md
|
|
136
|
+
used_by: [pipeline-epic-router]
|
|
137
|
+
- id: execute
|
|
138
|
+
path: .agents/skills/execute/SKILL.md
|
|
139
|
+
used_by: [pipeline-code-writer]
|
|
140
|
+
- id: research
|
|
141
|
+
path: .agents/skills/research/SKILL.md
|
|
142
|
+
used_by: [pipeline-researcher]
|
|
143
|
+
- id: library-first-development
|
|
144
|
+
path: .agents/skills/library-first-development/SKILL.md
|
|
145
|
+
used_by: [pipeline-researcher, pipeline-code-writer]
|
|
146
|
+
- id: critique
|
|
147
|
+
path: .agents/skills/critique/SKILL.md
|
|
148
|
+
used_by: [pipeline-thermo-nuclear-reviewer]
|
|
149
|
+
- id: verify
|
|
150
|
+
path: .agents/skills/verify/SKILL.md
|
|
151
|
+
used_by: [pipeline-verifier]
|
|
152
|
+
prompts:
|
|
153
|
+
- id: orchestrator
|
|
154
|
+
source: package-default-profile
|
|
155
|
+
used_by: [orchestrator]
|
|
156
|
+
- id: researcher
|
|
157
|
+
source: package-default-profile
|
|
158
|
+
used_by: [pipeline-researcher]
|
|
159
|
+
- id: inspector
|
|
160
|
+
source: package-default-profile
|
|
161
|
+
used_by: [pipeline-inspector]
|
|
162
|
+
- id: schedule-planner
|
|
163
|
+
source: package-default-profile
|
|
164
|
+
used_by: [pipeline-schedule-planner]
|
|
165
|
+
- id: test-writer
|
|
166
|
+
source: package-default-profile
|
|
167
|
+
used_by: [pipeline-test-writer]
|
|
168
|
+
- id: code-writer
|
|
169
|
+
source: package-default-profile
|
|
170
|
+
used_by: [pipeline-code-writer]
|
|
171
|
+
- id: acceptance-reviewer
|
|
172
|
+
source: package-default-profile
|
|
173
|
+
used_by: [pipeline-acceptance-reviewer]
|
|
174
|
+
- id: verifier
|
|
175
|
+
source: package-default-profile
|
|
176
|
+
used_by: [pipeline-verifier]
|
|
177
|
+
host_capabilities:
|
|
178
|
+
agents: true
|
|
179
|
+
subagents: true
|
|
180
|
+
skills: true
|
|
181
|
+
plugins: true
|
|
182
|
+
mcp_servers: true
|
|
183
|
+
lsp: true
|
|
184
|
+
permissions: true
|
|
185
|
+
commands: true
|
|
186
|
+
project_config: true
|
|
187
|
+
sources:
|
|
188
|
+
- label: OpenCode ecosystem
|
|
189
|
+
url: https://opencode.ai/docs/ecosystem
|
|
190
|
+
- label: OpenCode plugins
|
|
191
|
+
url: https://opencode.ai/docs/plugins
|
|
192
|
+
- label: OpenCode agents
|
|
193
|
+
url: https://opencode.ai/docs/agents
|
|
194
|
+
- label: OpenCode skills
|
|
195
|
+
url: https://opencode.ai/docs/skills/
|
|
196
|
+
- label: OpenCode MCP servers
|
|
197
|
+
url: https://opencode.ai/docs/mcp-servers
|
|
198
|
+
- label: OpenCode LSP
|
|
199
|
+
url: https://opencode.ai/docs/lsp/
|
|
200
|
+
- label: awesome-opencode
|
|
201
|
+
url: https://github.com/awesome-opencode/awesome-opencode
|
|
202
|
+
- label: opencode.cafe
|
|
203
|
+
url: https://www.opencode.cafe/
|
package/dist/config.d.ts
CHANGED
|
@@ -4,11 +4,12 @@ import { z } from "zod";
|
|
|
4
4
|
declare const PIPELINE_CONFIG_PATH = ".pipeline/pipeline.yaml";
|
|
5
5
|
declare const RUNNERS_CONFIG_PATH = ".pipeline/runners.yaml";
|
|
6
6
|
declare const PROFILES_CONFIG_PATH = ".pipeline/profiles.yaml";
|
|
7
|
+
declare const OPENCODE_ECOSYSTEM_MANIFEST_PATH = "defaults/opencode-ecosystem.yaml";
|
|
7
8
|
declare const RUNNER_TYPES: readonly ["codex", "opencode", "command"];
|
|
8
9
|
declare const NODE_KINDS: readonly ["agent", "command", "builtin", "group", "parallel", "workflow"];
|
|
9
10
|
declare const HOOK_EVENTS: readonly ["workflow.start", "workflow.success", "workflow.failure", "workflow.complete", "node.start", "node.success", "node.error", "node.finish", "gate.failure"];
|
|
10
11
|
declare const GATE_KINDS: readonly ["acceptance", "artifact", "builtin", "changed_files", "command", "json_schema", "verdict"];
|
|
11
|
-
declare const SCHEDULE_BASELINES: readonly ["
|
|
12
|
+
declare const SCHEDULE_BASELINES: readonly ["execute", "quick"];
|
|
12
13
|
declare const SCHEDULING_ROLES: readonly ["coverage", "implementation"];
|
|
13
14
|
declare const MCP_GATEWAY_BACKEND_LOCALITIES: readonly ["repo-local", "repo-scoped-remote", "shared-remote"];
|
|
14
15
|
declare const MCP_GATEWAY_WORKSPACE_PATH_SOURCES: readonly ["PIPELINE_TARGET_PATH", "cwd"];
|
|
@@ -16,6 +17,144 @@ declare const DEFAULT_RUNNER_JOB_GIT_COMMITTER: {
|
|
|
16
17
|
readonly email: "git@oisin.ee";
|
|
17
18
|
readonly name: "oisin-bot";
|
|
18
19
|
};
|
|
20
|
+
declare const openCodeEcosystemManifestSchema: z.ZodObject<{
|
|
21
|
+
ecosystem_code: z.ZodArray<z.ZodObject<{
|
|
22
|
+
default_stack: z.ZodLiteral<true>;
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
name: z.ZodString;
|
|
25
|
+
package: z.ZodOptional<z.ZodString>;
|
|
26
|
+
plugin: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
27
|
+
kind: z.ZodLiteral<"local">;
|
|
28
|
+
source_path: z.ZodString;
|
|
29
|
+
target_path: z.ZodString;
|
|
30
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
31
|
+
kind: z.ZodLiteral<"npm">;
|
|
32
|
+
package: z.ZodString;
|
|
33
|
+
}, z.core.$strict>], "kind">>;
|
|
34
|
+
role: z.ZodString;
|
|
35
|
+
source: z.ZodString;
|
|
36
|
+
}, z.core.$strict>>;
|
|
37
|
+
generated_by: z.ZodLiteral<"@oisincoveney/pipeline">;
|
|
38
|
+
host_capabilities: z.ZodObject<{
|
|
39
|
+
agents: z.ZodLiteral<true>;
|
|
40
|
+
commands: z.ZodLiteral<true>;
|
|
41
|
+
lsp: z.ZodLiteral<true>;
|
|
42
|
+
mcp_servers: z.ZodLiteral<true>;
|
|
43
|
+
permissions: z.ZodLiteral<true>;
|
|
44
|
+
plugins: z.ZodLiteral<true>;
|
|
45
|
+
project_config: z.ZodLiteral<true>;
|
|
46
|
+
skills: z.ZodLiteral<true>;
|
|
47
|
+
subagents: z.ZodLiteral<true>;
|
|
48
|
+
}, z.core.$strict>;
|
|
49
|
+
mcp_backends: z.ZodArray<z.ZodObject<{
|
|
50
|
+
credentials: z.ZodArray<z.ZodString>;
|
|
51
|
+
id: z.ZodString;
|
|
52
|
+
locality: z.ZodString;
|
|
53
|
+
name: z.ZodOptional<z.ZodString>;
|
|
54
|
+
required: z.ZodBoolean;
|
|
55
|
+
role: z.ZodString;
|
|
56
|
+
}, z.core.$strict>>;
|
|
57
|
+
official_dependencies: z.ZodArray<z.ZodObject<{
|
|
58
|
+
dependency_scope: z.ZodString;
|
|
59
|
+
id: z.ZodString;
|
|
60
|
+
package: z.ZodString;
|
|
61
|
+
role: z.ZodString;
|
|
62
|
+
source: z.ZodString;
|
|
63
|
+
}, z.core.$strict>>;
|
|
64
|
+
prompts: z.ZodArray<z.ZodObject<{
|
|
65
|
+
id: z.ZodString;
|
|
66
|
+
path: z.ZodOptional<z.ZodString>;
|
|
67
|
+
source: z.ZodOptional<z.ZodString>;
|
|
68
|
+
used_by: z.ZodArray<z.ZodString>;
|
|
69
|
+
}, z.core.$strict>>;
|
|
70
|
+
runtime: z.ZodObject<{
|
|
71
|
+
compatibility_runners: z.ZodArray<z.ZodString>;
|
|
72
|
+
default_runner: z.ZodLiteral<"opencode">;
|
|
73
|
+
default_stack_direct: z.ZodLiteral<true>;
|
|
74
|
+
state_authority: z.ZodLiteral<"pipeline">;
|
|
75
|
+
}, z.core.$strict>;
|
|
76
|
+
skills: z.ZodArray<z.ZodObject<{
|
|
77
|
+
id: z.ZodString;
|
|
78
|
+
path: z.ZodOptional<z.ZodString>;
|
|
79
|
+
source: z.ZodOptional<z.ZodString>;
|
|
80
|
+
used_by: z.ZodArray<z.ZodString>;
|
|
81
|
+
}, z.core.$strict>>;
|
|
82
|
+
sources: z.ZodArray<z.ZodObject<{
|
|
83
|
+
label: z.ZodString;
|
|
84
|
+
url: z.ZodString;
|
|
85
|
+
}, z.core.$strict>>;
|
|
86
|
+
version: z.ZodLiteral<1>;
|
|
87
|
+
}, z.core.$strict>;
|
|
88
|
+
type OpenCodeEcosystemManifest = z.infer<typeof openCodeEcosystemManifestSchema>;
|
|
89
|
+
declare function parseOpenCodeEcosystemManifest(source: string, sourcePath?: string): OpenCodeEcosystemManifest;
|
|
90
|
+
declare const DEFAULT_OPENCODE_ECOSYSTEM_MANIFEST: {
|
|
91
|
+
ecosystem_code: {
|
|
92
|
+
default_stack: true;
|
|
93
|
+
id: string;
|
|
94
|
+
name: string;
|
|
95
|
+
role: string;
|
|
96
|
+
source: string;
|
|
97
|
+
package?: string | undefined;
|
|
98
|
+
plugin?: {
|
|
99
|
+
kind: "local";
|
|
100
|
+
source_path: string;
|
|
101
|
+
target_path: string;
|
|
102
|
+
} | {
|
|
103
|
+
kind: "npm";
|
|
104
|
+
package: string;
|
|
105
|
+
} | undefined;
|
|
106
|
+
}[];
|
|
107
|
+
generated_by: "@oisincoveney/pipeline";
|
|
108
|
+
host_capabilities: {
|
|
109
|
+
agents: true;
|
|
110
|
+
commands: true;
|
|
111
|
+
lsp: true;
|
|
112
|
+
mcp_servers: true;
|
|
113
|
+
permissions: true;
|
|
114
|
+
plugins: true;
|
|
115
|
+
project_config: true;
|
|
116
|
+
skills: true;
|
|
117
|
+
subagents: true;
|
|
118
|
+
};
|
|
119
|
+
mcp_backends: {
|
|
120
|
+
credentials: string[];
|
|
121
|
+
id: string;
|
|
122
|
+
locality: string;
|
|
123
|
+
required: boolean;
|
|
124
|
+
role: string;
|
|
125
|
+
name?: string | undefined;
|
|
126
|
+
}[];
|
|
127
|
+
official_dependencies: {
|
|
128
|
+
dependency_scope: string;
|
|
129
|
+
id: string;
|
|
130
|
+
package: string;
|
|
131
|
+
role: string;
|
|
132
|
+
source: string;
|
|
133
|
+
}[];
|
|
134
|
+
prompts: {
|
|
135
|
+
id: string;
|
|
136
|
+
used_by: string[];
|
|
137
|
+
path?: string | undefined;
|
|
138
|
+
source?: string | undefined;
|
|
139
|
+
}[];
|
|
140
|
+
runtime: {
|
|
141
|
+
compatibility_runners: string[];
|
|
142
|
+
default_runner: "opencode";
|
|
143
|
+
default_stack_direct: true;
|
|
144
|
+
state_authority: "pipeline";
|
|
145
|
+
};
|
|
146
|
+
skills: {
|
|
147
|
+
id: string;
|
|
148
|
+
used_by: string[];
|
|
149
|
+
path?: string | undefined;
|
|
150
|
+
source?: string | undefined;
|
|
151
|
+
}[];
|
|
152
|
+
sources: {
|
|
153
|
+
label: string;
|
|
154
|
+
url: string;
|
|
155
|
+
}[];
|
|
156
|
+
version: 1;
|
|
157
|
+
};
|
|
19
158
|
type PipelineConfigErrorCode = "PIPELINE_CONFIG_LEGACY_UNSUPPORTED" | "PIPELINE_CONFIG_PARSE_ERROR" | "PIPELINE_CONFIG_VALIDATION_ERROR";
|
|
20
159
|
interface PipelineConfigIssue {
|
|
21
160
|
message: string;
|
|
@@ -51,6 +190,8 @@ declare const workflowNodeBaseSchema: z.ZodObject<{
|
|
|
51
190
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
52
191
|
builtin: z.ZodEnum<{
|
|
53
192
|
duplication: "duplication";
|
|
193
|
+
fallow: "fallow";
|
|
194
|
+
lint: "lint";
|
|
54
195
|
semgrep: "semgrep";
|
|
55
196
|
test: "test";
|
|
56
197
|
typecheck: "typecheck";
|
|
@@ -96,6 +237,7 @@ declare const workflowNodeBaseSchema: z.ZodObject<{
|
|
|
96
237
|
kind: z.ZodLiteral<"verdict">;
|
|
97
238
|
}, z.core.$strict>], "kind">>>;
|
|
98
239
|
id: z.ZodString;
|
|
240
|
+
models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
99
241
|
needs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
100
242
|
retries: z.ZodOptional<z.ZodObject<{
|
|
101
243
|
backoff_ms: z.ZodOptional<z.ZodNumber>;
|
|
@@ -229,8 +371,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
229
371
|
policy: z.ZodOptional<z.ZodObject<{
|
|
230
372
|
commands: z.ZodOptional<z.ZodEnum<{
|
|
231
373
|
allow: "allow";
|
|
232
|
-
"trusted-only": "trusted-only";
|
|
233
374
|
deny: "deny";
|
|
375
|
+
"trusted-only": "trusted-only";
|
|
234
376
|
}>>;
|
|
235
377
|
modules: z.ZodOptional<z.ZodEnum<{
|
|
236
378
|
allow: "allow";
|
|
@@ -254,8 +396,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
254
396
|
}, z.core.$strict>>>;
|
|
255
397
|
default_profile: z.ZodOptional<z.ZodString>;
|
|
256
398
|
mode: z.ZodEnum<{
|
|
257
|
-
hosted: "hosted";
|
|
258
399
|
local: "local";
|
|
400
|
+
hosted: "hosted";
|
|
259
401
|
}>;
|
|
260
402
|
provider: z.ZodLiteral<"toolhive">;
|
|
261
403
|
authorization_env: z.ZodDefault<z.ZodString>;
|
|
@@ -298,10 +440,10 @@ declare const configSchema: z.ZodObject<{
|
|
|
298
440
|
}, z.core.$strict>>;
|
|
299
441
|
output: z.ZodOptional<z.ZodObject<{
|
|
300
442
|
format: z.ZodEnum<{
|
|
443
|
+
json_schema: "json_schema";
|
|
301
444
|
text: "text";
|
|
302
445
|
json: "json";
|
|
303
446
|
jsonl: "jsonl";
|
|
304
|
-
json_schema: "json_schema";
|
|
305
447
|
}>;
|
|
306
448
|
repair: z.ZodOptional<z.ZodObject<{
|
|
307
449
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -319,6 +461,7 @@ declare const configSchema: z.ZodObject<{
|
|
|
319
461
|
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
320
462
|
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
321
463
|
tools: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
464
|
+
task: "task";
|
|
322
465
|
read: "read";
|
|
323
466
|
list: "list";
|
|
324
467
|
grep: "grep";
|
|
@@ -326,7 +469,6 @@ declare const configSchema: z.ZodObject<{
|
|
|
326
469
|
bash: "bash";
|
|
327
470
|
edit: "edit";
|
|
328
471
|
write: "write";
|
|
329
|
-
task: "task";
|
|
330
472
|
}>>>;
|
|
331
473
|
}, z.core.$strict>>>;
|
|
332
474
|
runner_job: z.ZodDefault<z.ZodObject<{
|
|
@@ -351,6 +493,10 @@ declare const configSchema: z.ZodObject<{
|
|
|
351
493
|
}, z.core.$strict>>;
|
|
352
494
|
rules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
353
495
|
path: z.ZodString;
|
|
496
|
+
source_root: z.ZodDefault<z.ZodEnum<{
|
|
497
|
+
project: "project";
|
|
498
|
+
package: "package";
|
|
499
|
+
}>>;
|
|
354
500
|
}, z.core.$strict>>>;
|
|
355
501
|
runners: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
356
502
|
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -366,14 +512,15 @@ declare const configSchema: z.ZodObject<{
|
|
|
366
512
|
disabled: "disabled";
|
|
367
513
|
}>>>;
|
|
368
514
|
output_formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
515
|
+
json_schema: "json_schema";
|
|
369
516
|
text: "text";
|
|
370
517
|
json: "json";
|
|
371
518
|
jsonl: "jsonl";
|
|
372
|
-
json_schema: "json_schema";
|
|
373
519
|
}>>>;
|
|
374
520
|
rules: z.ZodOptional<z.ZodBoolean>;
|
|
375
521
|
skills: z.ZodOptional<z.ZodBoolean>;
|
|
376
522
|
tools: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
523
|
+
task: "task";
|
|
377
524
|
read: "read";
|
|
378
525
|
list: "list";
|
|
379
526
|
grep: "grep";
|
|
@@ -381,7 +528,6 @@ declare const configSchema: z.ZodObject<{
|
|
|
381
528
|
bash: "bash";
|
|
382
529
|
edit: "edit";
|
|
383
530
|
write: "write";
|
|
384
|
-
task: "task";
|
|
385
531
|
}>>>;
|
|
386
532
|
}, z.core.$strict>;
|
|
387
533
|
command: z.ZodOptional<z.ZodString>;
|
|
@@ -389,21 +535,110 @@ declare const configSchema: z.ZodObject<{
|
|
|
389
535
|
model: z.ZodOptional<z.ZodString>;
|
|
390
536
|
type: z.ZodEnum<{
|
|
391
537
|
command: "command";
|
|
392
|
-
codex: "codex";
|
|
393
538
|
opencode: "opencode";
|
|
539
|
+
codex: "codex";
|
|
394
540
|
}>;
|
|
395
541
|
}, z.core.$strict>>>;
|
|
542
|
+
scheduler: z.ZodDefault<z.ZodObject<{
|
|
543
|
+
commands: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
544
|
+
catalog: z.ZodString;
|
|
545
|
+
schedule: z.ZodString;
|
|
546
|
+
}, z.core.$strict>>>;
|
|
547
|
+
node_catalogs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
548
|
+
nodes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
549
|
+
category: z.ZodString;
|
|
550
|
+
description: z.ZodOptional<z.ZodString>;
|
|
551
|
+
gates: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
552
|
+
id: z.ZodOptional<z.ZodString>;
|
|
553
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
554
|
+
path: z.ZodOptional<z.ZodString>;
|
|
555
|
+
target: z.ZodOptional<z.ZodEnum<{
|
|
556
|
+
artifact: "artifact";
|
|
557
|
+
stdout: "stdout";
|
|
558
|
+
}>>;
|
|
559
|
+
acceptance_key: z.ZodOptional<z.ZodString>;
|
|
560
|
+
kind: z.ZodLiteral<"acceptance">;
|
|
561
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
562
|
+
id: z.ZodOptional<z.ZodString>;
|
|
563
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
564
|
+
kind: z.ZodLiteral<"artifact">;
|
|
565
|
+
path: z.ZodString;
|
|
566
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
567
|
+
id: z.ZodOptional<z.ZodString>;
|
|
568
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
569
|
+
builtin: z.ZodEnum<{
|
|
570
|
+
duplication: "duplication";
|
|
571
|
+
fallow: "fallow";
|
|
572
|
+
lint: "lint";
|
|
573
|
+
semgrep: "semgrep";
|
|
574
|
+
test: "test";
|
|
575
|
+
typecheck: "typecheck";
|
|
576
|
+
}>;
|
|
577
|
+
kind: z.ZodLiteral<"builtin">;
|
|
578
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
579
|
+
id: z.ZodOptional<z.ZodString>;
|
|
580
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
581
|
+
changed_files: z.ZodObject<{
|
|
582
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
583
|
+
deny: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
584
|
+
include_untracked: z.ZodOptional<z.ZodBoolean>;
|
|
585
|
+
require_any: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
586
|
+
}, z.core.$strict>;
|
|
587
|
+
kind: z.ZodLiteral<"changed_files">;
|
|
588
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
589
|
+
id: z.ZodOptional<z.ZodString>;
|
|
590
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
591
|
+
command: z.ZodArray<z.ZodString>;
|
|
592
|
+
expect_exit_code: z.ZodOptional<z.ZodNumber>;
|
|
593
|
+
kind: z.ZodLiteral<"command">;
|
|
594
|
+
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
595
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
596
|
+
id: z.ZodOptional<z.ZodString>;
|
|
597
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
598
|
+
path: z.ZodOptional<z.ZodString>;
|
|
599
|
+
target: z.ZodOptional<z.ZodEnum<{
|
|
600
|
+
artifact: "artifact";
|
|
601
|
+
stdout: "stdout";
|
|
602
|
+
}>>;
|
|
603
|
+
kind: z.ZodLiteral<"json_schema">;
|
|
604
|
+
schema_path: z.ZodString;
|
|
605
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
606
|
+
id: z.ZodOptional<z.ZodString>;
|
|
607
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
608
|
+
path: z.ZodOptional<z.ZodString>;
|
|
609
|
+
target: z.ZodOptional<z.ZodEnum<{
|
|
610
|
+
artifact: "artifact";
|
|
611
|
+
stdout: "stdout";
|
|
612
|
+
}>>;
|
|
613
|
+
equals: z.ZodOptional<z.ZodString>;
|
|
614
|
+
field: z.ZodOptional<z.ZodString>;
|
|
615
|
+
kind: z.ZodLiteral<"verdict">;
|
|
616
|
+
}, z.core.$strict>], "kind">>>;
|
|
617
|
+
models: z.ZodArray<z.ZodString>;
|
|
618
|
+
profile: z.ZodString;
|
|
619
|
+
}, z.core.$strict>>>;
|
|
620
|
+
required_categories: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
621
|
+
}, z.core.$strict>>>;
|
|
622
|
+
}, z.core.$strict>>;
|
|
396
623
|
schedules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
397
624
|
description: z.ZodOptional<z.ZodString>;
|
|
398
625
|
baseline: z.ZodEnum<{
|
|
399
|
-
|
|
400
|
-
|
|
626
|
+
execute: "execute";
|
|
627
|
+
quick: "quick";
|
|
401
628
|
}>;
|
|
402
629
|
max_parallel_nodes: z.ZodOptional<z.ZodNumber>;
|
|
630
|
+
node_catalog: z.ZodOptional<z.ZodString>;
|
|
403
631
|
planner_profile: z.ZodOptional<z.ZodString>;
|
|
632
|
+
strategy: z.ZodDefault<z.ZodEnum<{
|
|
633
|
+
planner: "planner";
|
|
634
|
+
}>>;
|
|
404
635
|
}, z.core.$strict>>>;
|
|
405
636
|
skills: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
406
637
|
path: z.ZodString;
|
|
638
|
+
source_root: z.ZodDefault<z.ZodEnum<{
|
|
639
|
+
project: "project";
|
|
640
|
+
package: "package";
|
|
641
|
+
}>>;
|
|
407
642
|
}, z.core.$strict>>>;
|
|
408
643
|
task_context: z.ZodOptional<z.ZodObject<{
|
|
409
644
|
type: z.ZodString;
|
|
@@ -442,4 +677,4 @@ declare function parsePipelineConfigYaml(source: string, sourcePath?: string, pr
|
|
|
442
677
|
declare function parsePipelineConfigParts(sources: PipelineConfigParts, projectRoot?: string, sourcePaths?: PipelineConfigParts, options?: PipelineConfigValidationOptions): PipelineConfig;
|
|
443
678
|
declare function validatePipelineConfig(rawConfig: PipelineConfig, projectRoot?: string, options?: PipelineConfigValidationOptions): PipelineConfig;
|
|
444
679
|
//#endregion
|
|
445
|
-
export { DEFAULT_RUNNER_JOB_GIT_COMMITTER, GateKind, HookEvent, McpGatewayBackendLocality, McpGatewayWorkspacePathSource, PIPELINE_CONFIG_PATH, PROFILES_CONFIG_PATH, PipelineConfig, PipelineConfigError, PipelineConfigErrorCode, PipelineConfigIssue, PipelineConfigParts, PipelineConfigValidationOptions, RUNNERS_CONFIG_PATH, RunnerType, ScheduleBaseline, SchedulingRole, WorkflowNodeKind, loadPackagePipelineConfig, loadPipelineConfig, parsePipelineConfigParts, parsePipelineConfigYaml, validatePipelineConfig, workflowSchema };
|
|
680
|
+
export { DEFAULT_OPENCODE_ECOSYSTEM_MANIFEST, DEFAULT_RUNNER_JOB_GIT_COMMITTER, GateKind, HookEvent, McpGatewayBackendLocality, McpGatewayWorkspacePathSource, OPENCODE_ECOSYSTEM_MANIFEST_PATH, OpenCodeEcosystemManifest, PIPELINE_CONFIG_PATH, PROFILES_CONFIG_PATH, PipelineConfig, PipelineConfigError, PipelineConfigErrorCode, PipelineConfigIssue, PipelineConfigParts, PipelineConfigValidationOptions, RUNNERS_CONFIG_PATH, RunnerType, ScheduleBaseline, SchedulingRole, WorkflowNodeKind, loadPackagePipelineConfig, loadPipelineConfig, parseOpenCodeEcosystemManifest, parsePipelineConfigParts, parsePipelineConfigYaml, validatePipelineConfig, workflowSchema };
|