@oisincoveney/pipeline 1.4.1 → 1.5.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 +25 -0
- package/dist/{mastra/config.d.ts → config.d.ts} +40 -8
- package/dist/config.js +21888 -0
- package/dist/{mastra/gates.d.ts → gates.d.ts} +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +12615 -11901
- package/dist/pipeline-runtime.d.ts +80 -4
- package/dist/pipeline-runtime.js +31396 -0
- package/dist/{mastra/runner.d.ts → runner.d.ts} +4 -1
- package/dist/{mastra/runner.js → runner.js} +5 -3
- package/dist/workflow-planner.d.ts +1 -1
- package/dist/workflow-planner.js +225 -0
- package/docs/config-architecture.md +30 -4
- package/docs/pipeline-smoke-recovery-plan.md +5 -2
- package/package.json +17 -11
- package/dist/mastra/index.d.ts +0 -22
- package/dist/mastra/steps/green.d.ts +0 -18
- package/dist/mastra/steps/knowledge-inject.d.ts +0 -12
- package/dist/mastra/steps/learn.d.ts +0 -24
- package/dist/mastra/steps/red.d.ts +0 -18
- package/dist/mastra/steps/research.d.ts +0 -19
- package/dist/mastra/steps/verify.d.ts +0 -18
- package/dist/mastra/structured-output.d.ts +0 -4
- package/dist/mastra/workflows/pipeline.d.ts +0 -73
- /package/dist/{mastra/backlog.d.ts → backlog.d.ts} +0 -0
- /package/dist/{mastra/tickets.d.ts → task-ref.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -51,6 +51,12 @@ Run a read-only repository inspection:
|
|
|
51
51
|
pipe run --workflow inspect "Report the app structure and available checks. Do not modify files."
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
Run a configured entrypoint alias:
|
|
55
|
+
|
|
56
|
+
```shell
|
|
57
|
+
pipe run --entrypoint dogfood "Run deterministic local verification."
|
|
58
|
+
```
|
|
59
|
+
|
|
54
60
|
The `pipe` binary also accepts the task directly:
|
|
55
61
|
|
|
56
62
|
```shell
|
|
@@ -130,6 +136,10 @@ workflows:
|
|
|
130
136
|
builtin: typecheck
|
|
131
137
|
```
|
|
132
138
|
|
|
139
|
+
Projects can also declare `entrypoints` in `.pipeline/pipeline.yaml` to expose
|
|
140
|
+
stable app or CLI names that resolve to workflows. Direct `--workflow` selection
|
|
141
|
+
remains available and takes precedence over `--entrypoint` when both are set.
|
|
142
|
+
|
|
133
143
|
The default scaffold includes a full research, red, green, verify, learn
|
|
134
144
|
workflow. See `docs/config-architecture.md` for a complete example and the host
|
|
135
145
|
support matrix.
|
|
@@ -168,6 +178,21 @@ overwrite manually edited files unless `--force` is supplied.
|
|
|
168
178
|
the configured semantics. Otherwise the runtime uses a subprocess boundary.
|
|
169
179
|
- Parallel DAG batches run concurrently after dependencies and gates pass.
|
|
170
180
|
- Agent self-reporting is not enough to pass deterministic gates.
|
|
181
|
+
- JSON Schema gates validate structure only. Use `verdict` and `acceptance`
|
|
182
|
+
gates to enforce semantic pass/fail and per-criterion coverage.
|
|
183
|
+
- Command hooks support host policy controls, sanitized environments, timeouts,
|
|
184
|
+
output limits, and JSON payloads on stdin.
|
|
185
|
+
|
|
186
|
+
## App-Facing API
|
|
187
|
+
|
|
188
|
+
External apps can import the stable config, planner, and runtime surfaces
|
|
189
|
+
without deep-importing private source paths:
|
|
190
|
+
|
|
191
|
+
```ts
|
|
192
|
+
import { loadPipelineConfig, parsePipelineConfigParts } from "@oisincoveney/pipeline/config";
|
|
193
|
+
import { compileWorkflowPlan } from "@oisincoveney/pipeline/planner";
|
|
194
|
+
import { runPipelineFromConfig, type PipelineRuntimeResult, type PipelineTaskContext } from "@oisincoveney/pipeline/runtime";
|
|
195
|
+
```
|
|
171
196
|
|
|
172
197
|
## Verification
|
|
173
198
|
|
|
@@ -5,7 +5,7 @@ export declare const PROFILES_CONFIG_PATH = ".pipeline/profiles.yaml";
|
|
|
5
5
|
declare const RUNNER_TYPES: readonly ["claude", "codex", "opencode", "kimi", "pi", "command"];
|
|
6
6
|
declare const NODE_KINDS: readonly ["agent", "command", "builtin", "group"];
|
|
7
7
|
declare const HOOK_EVENTS: readonly ["workflow.start", "workflow.success", "workflow.failure", "workflow.complete", "node.start", "node.success", "node.error", "gate.failure"];
|
|
8
|
-
declare const GATE_KINDS: readonly ["artifact", "builtin", "command", "json_schema"];
|
|
8
|
+
declare const GATE_KINDS: readonly ["acceptance", "artifact", "builtin", "changed_files", "command", "json_schema", "verdict"];
|
|
9
9
|
export type PipelineConfigErrorCode = "PIPELINE_CONFIG_LEGACY_UNSUPPORTED" | "PIPELINE_CONFIG_MISSING" | "PIPELINE_CONFIG_PARSE_ERROR" | "PIPELINE_CONFIG_VALIDATION_ERROR";
|
|
10
10
|
export interface PipelineConfigIssue {
|
|
11
11
|
message: string;
|
|
@@ -18,9 +18,21 @@ export declare class PipelineConfigError extends Error {
|
|
|
18
18
|
}
|
|
19
19
|
declare const configSchema: z.ZodObject<{
|
|
20
20
|
default_workflow: z.ZodString;
|
|
21
|
+
entrypoints: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
task_context: z.ZodOptional<z.ZodObject<{
|
|
24
|
+
type: z.ZodString;
|
|
25
|
+
}, z.core.$loose>>;
|
|
26
|
+
workflow: z.ZodString;
|
|
27
|
+
}, z.core.$strict>>>;
|
|
21
28
|
hooks: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
22
29
|
builtin: z.ZodOptional<z.ZodString>;
|
|
23
30
|
command: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
31
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
32
|
+
env: z.ZodOptional<z.ZodObject<{
|
|
33
|
+
passthrough: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
34
|
+
set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
35
|
+
}, z.core.$strict>>;
|
|
24
36
|
event: z.ZodEnum<{
|
|
25
37
|
"workflow.start": "workflow.start";
|
|
26
38
|
"workflow.success": "workflow.success";
|
|
@@ -35,8 +47,13 @@ declare const configSchema: z.ZodObject<{
|
|
|
35
47
|
command: "command";
|
|
36
48
|
builtin: "builtin";
|
|
37
49
|
}>;
|
|
50
|
+
output_limit_bytes: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
payload: z.ZodOptional<z.ZodEnum<{
|
|
52
|
+
stdin: "stdin";
|
|
53
|
+
}>>;
|
|
38
54
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
39
55
|
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
trusted: z.ZodOptional<z.ZodBoolean>;
|
|
40
57
|
}, z.core.$strict>>>;
|
|
41
58
|
mcp_servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
42
59
|
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -71,8 +88,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
71
88
|
}, z.core.$strict>>;
|
|
72
89
|
output: z.ZodOptional<z.ZodObject<{
|
|
73
90
|
format: z.ZodEnum<{
|
|
74
|
-
text: "text";
|
|
75
91
|
json: "json";
|
|
92
|
+
text: "text";
|
|
76
93
|
jsonl: "jsonl";
|
|
77
94
|
json_schema: "json_schema";
|
|
78
95
|
}>;
|
|
@@ -87,14 +104,14 @@ declare const configSchema: z.ZodObject<{
|
|
|
87
104
|
runner: z.ZodString;
|
|
88
105
|
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
89
106
|
tools: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
107
|
+
task: "task";
|
|
108
|
+
edit: "edit";
|
|
90
109
|
read: "read";
|
|
91
110
|
list: "list";
|
|
92
111
|
grep: "grep";
|
|
93
112
|
glob: "glob";
|
|
94
113
|
bash: "bash";
|
|
95
|
-
edit: "edit";
|
|
96
114
|
write: "write";
|
|
97
|
-
task: "task";
|
|
98
115
|
}>>>;
|
|
99
116
|
}, z.core.$strict>>>;
|
|
100
117
|
rules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
@@ -114,22 +131,22 @@ declare const configSchema: z.ZodObject<{
|
|
|
114
131
|
disabled: "disabled";
|
|
115
132
|
}>>>;
|
|
116
133
|
output_formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
117
|
-
text: "text";
|
|
118
134
|
json: "json";
|
|
135
|
+
text: "text";
|
|
119
136
|
jsonl: "jsonl";
|
|
120
137
|
json_schema: "json_schema";
|
|
121
138
|
}>>>;
|
|
122
139
|
rules: z.ZodOptional<z.ZodBoolean>;
|
|
123
140
|
skills: z.ZodOptional<z.ZodBoolean>;
|
|
124
141
|
tools: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
142
|
+
task: "task";
|
|
143
|
+
edit: "edit";
|
|
125
144
|
read: "read";
|
|
126
145
|
list: "list";
|
|
127
146
|
grep: "grep";
|
|
128
147
|
glob: "glob";
|
|
129
148
|
bash: "bash";
|
|
130
|
-
edit: "edit";
|
|
131
149
|
write: "write";
|
|
132
|
-
task: "task";
|
|
133
150
|
}>>>;
|
|
134
151
|
}, z.core.$strict>;
|
|
135
152
|
command: z.ZodOptional<z.ZodString>;
|
|
@@ -146,6 +163,9 @@ declare const configSchema: z.ZodObject<{
|
|
|
146
163
|
skills: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
147
164
|
path: z.ZodString;
|
|
148
165
|
}, z.core.$strict>>>;
|
|
166
|
+
task_context: z.ZodOptional<z.ZodObject<{
|
|
167
|
+
type: z.ZodString;
|
|
168
|
+
}, z.core.$loose>>;
|
|
149
169
|
version: z.ZodLiteral<1>;
|
|
150
170
|
workflows: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
151
171
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -158,26 +178,38 @@ declare const configSchema: z.ZodObject<{
|
|
|
158
178
|
builtin: z.ZodOptional<z.ZodString>;
|
|
159
179
|
command: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
160
180
|
gates: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
181
|
+
acceptance_key: z.ZodOptional<z.ZodString>;
|
|
161
182
|
builtin: z.ZodOptional<z.ZodEnum<{
|
|
162
183
|
duplication: "duplication";
|
|
163
184
|
test: "test";
|
|
164
185
|
typecheck: "typecheck";
|
|
165
186
|
}>>;
|
|
187
|
+
changed_files: z.ZodOptional<z.ZodObject<{
|
|
188
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
189
|
+
deny: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
190
|
+
include_untracked: z.ZodOptional<z.ZodBoolean>;
|
|
191
|
+
require_any: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
192
|
+
}, z.core.$strict>>;
|
|
166
193
|
command: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
194
|
+
equals: z.ZodOptional<z.ZodString>;
|
|
167
195
|
expect_exit_code: z.ZodOptional<z.ZodNumber>;
|
|
196
|
+
field: z.ZodOptional<z.ZodString>;
|
|
168
197
|
id: z.ZodOptional<z.ZodString>;
|
|
169
198
|
kind: z.ZodEnum<{
|
|
170
199
|
command: "command";
|
|
171
200
|
builtin: "builtin";
|
|
172
201
|
json_schema: "json_schema";
|
|
202
|
+
acceptance: "acceptance";
|
|
173
203
|
artifact: "artifact";
|
|
204
|
+
changed_files: "changed_files";
|
|
205
|
+
verdict: "verdict";
|
|
174
206
|
}>;
|
|
175
207
|
path: z.ZodOptional<z.ZodString>;
|
|
176
208
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
177
209
|
schema_path: z.ZodOptional<z.ZodString>;
|
|
178
210
|
target: z.ZodOptional<z.ZodEnum<{
|
|
179
|
-
artifact: "artifact";
|
|
180
211
|
stdout: "stdout";
|
|
212
|
+
artifact: "artifact";
|
|
181
213
|
}>>;
|
|
182
214
|
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
183
215
|
}, z.core.$strict>>>;
|