@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 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>>>;