@oisincoveney/pipeline 1.22.3 → 1.22.5
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/defaults/opencode-ecosystem.yaml +9 -0
- package/dist/config.d.ts +7 -7
- package/dist/config.js +3 -3
- package/dist/gates.js +59 -9
- package/package.json +1 -1
|
@@ -50,6 +50,15 @@ ecosystem_code:
|
|
|
50
50
|
role: OpenTelemetry plugin pattern for runtime observability
|
|
51
51
|
default_stack: true
|
|
52
52
|
source: https://www.npmjs.com/package/@devtheops/opencode-plugin-otel
|
|
53
|
+
- id: opencode-goal-plugin
|
|
54
|
+
name: opencode-goal-plugin
|
|
55
|
+
package: "@prevalentware/opencode-goal-plugin"
|
|
56
|
+
plugin:
|
|
57
|
+
kind: npm
|
|
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
|
|
60
|
+
default_stack: true
|
|
61
|
+
source: https://www.npmjs.com/package/@prevalentware/opencode-goal-plugin
|
|
53
62
|
- id: opencode-snip
|
|
54
63
|
name: opencode-snip
|
|
55
64
|
role: prompt snippet and command-discipline helper patterns
|
package/dist/config.d.ts
CHANGED
|
@@ -371,8 +371,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
371
371
|
policy: z.ZodOptional<z.ZodObject<{
|
|
372
372
|
commands: z.ZodOptional<z.ZodEnum<{
|
|
373
373
|
allow: "allow";
|
|
374
|
-
"trusted-only": "trusted-only";
|
|
375
374
|
deny: "deny";
|
|
375
|
+
"trusted-only": "trusted-only";
|
|
376
376
|
}>>;
|
|
377
377
|
modules: z.ZodOptional<z.ZodEnum<{
|
|
378
378
|
allow: "allow";
|
|
@@ -396,8 +396,8 @@ declare const configSchema: z.ZodObject<{
|
|
|
396
396
|
}, z.core.$strict>>>;
|
|
397
397
|
default_profile: z.ZodOptional<z.ZodString>;
|
|
398
398
|
mode: z.ZodEnum<{
|
|
399
|
-
hosted: "hosted";
|
|
400
399
|
local: "local";
|
|
400
|
+
hosted: "hosted";
|
|
401
401
|
}>;
|
|
402
402
|
provider: z.ZodLiteral<"toolhive">;
|
|
403
403
|
authorization_env: z.ZodDefault<z.ZodString>;
|
|
@@ -440,10 +440,10 @@ declare const configSchema: z.ZodObject<{
|
|
|
440
440
|
}, z.core.$strict>>;
|
|
441
441
|
output: z.ZodOptional<z.ZodObject<{
|
|
442
442
|
format: z.ZodEnum<{
|
|
443
|
+
json_schema: "json_schema";
|
|
443
444
|
text: "text";
|
|
444
445
|
json: "json";
|
|
445
446
|
jsonl: "jsonl";
|
|
446
|
-
json_schema: "json_schema";
|
|
447
447
|
}>;
|
|
448
448
|
repair: z.ZodOptional<z.ZodObject<{
|
|
449
449
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -461,6 +461,7 @@ declare const configSchema: z.ZodObject<{
|
|
|
461
461
|
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
462
462
|
timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
463
463
|
tools: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
464
|
+
task: "task";
|
|
464
465
|
read: "read";
|
|
465
466
|
list: "list";
|
|
466
467
|
grep: "grep";
|
|
@@ -468,7 +469,6 @@ declare const configSchema: z.ZodObject<{
|
|
|
468
469
|
bash: "bash";
|
|
469
470
|
edit: "edit";
|
|
470
471
|
write: "write";
|
|
471
|
-
task: "task";
|
|
472
472
|
}>>>;
|
|
473
473
|
}, z.core.$strict>>>;
|
|
474
474
|
runner_job: z.ZodDefault<z.ZodObject<{
|
|
@@ -512,14 +512,15 @@ declare const configSchema: z.ZodObject<{
|
|
|
512
512
|
disabled: "disabled";
|
|
513
513
|
}>>>;
|
|
514
514
|
output_formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
515
|
+
json_schema: "json_schema";
|
|
515
516
|
text: "text";
|
|
516
517
|
json: "json";
|
|
517
518
|
jsonl: "jsonl";
|
|
518
|
-
json_schema: "json_schema";
|
|
519
519
|
}>>>;
|
|
520
520
|
rules: z.ZodOptional<z.ZodBoolean>;
|
|
521
521
|
skills: z.ZodOptional<z.ZodBoolean>;
|
|
522
522
|
tools: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
523
|
+
task: "task";
|
|
523
524
|
read: "read";
|
|
524
525
|
list: "list";
|
|
525
526
|
grep: "grep";
|
|
@@ -527,16 +528,15 @@ declare const configSchema: z.ZodObject<{
|
|
|
527
528
|
bash: "bash";
|
|
528
529
|
edit: "edit";
|
|
529
530
|
write: "write";
|
|
530
|
-
task: "task";
|
|
531
531
|
}>>>;
|
|
532
532
|
}, z.core.$strict>;
|
|
533
533
|
command: z.ZodOptional<z.ZodString>;
|
|
534
534
|
host_models: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
535
535
|
model: z.ZodOptional<z.ZodString>;
|
|
536
536
|
type: z.ZodEnum<{
|
|
537
|
+
opencode: "opencode";
|
|
537
538
|
command: "command";
|
|
538
539
|
codex: "codex";
|
|
539
|
-
opencode: "opencode";
|
|
540
540
|
}>;
|
|
541
541
|
}, z.core.$strict>>>;
|
|
542
542
|
scheduler: z.ZodDefault<z.ZodObject<{
|
package/dist/config.js
CHANGED
|
@@ -357,7 +357,7 @@ scheduler:
|
|
|
357
357
|
green-implementation:
|
|
358
358
|
category: green
|
|
359
359
|
profile: pipeline-code-writer
|
|
360
|
-
models: [
|
|
360
|
+
models: [opencode-go/qwen3.7-max, kimi-for-coding/k2p6, opencode-go/deepseek-v4-pro]
|
|
361
361
|
verification:
|
|
362
362
|
category: verification
|
|
363
363
|
profile: pipeline-verifier
|
|
@@ -372,7 +372,7 @@ scheduler:
|
|
|
372
372
|
research:
|
|
373
373
|
category: research
|
|
374
374
|
profile: pipeline-researcher
|
|
375
|
-
models: [
|
|
375
|
+
models: [openai/gpt-5.5-fast, zai-coding-plan/glm-5.1, kimi-for-coding/k2p6]
|
|
376
376
|
red-tests:
|
|
377
377
|
category: red
|
|
378
378
|
profile: pipeline-test-writer
|
|
@@ -384,7 +384,7 @@ scheduler:
|
|
|
384
384
|
green-frontend:
|
|
385
385
|
category: green
|
|
386
386
|
profile: pipeline-code-writer
|
|
387
|
-
models: [
|
|
387
|
+
models: [opencode-go/qwen3.7-max, kimi-for-coding/k2p6, opencode-go/deepseek-v4-pro]
|
|
388
388
|
acceptance-review:
|
|
389
389
|
category: acceptance
|
|
390
390
|
profile: pipeline-acceptance-reviewer
|
package/dist/gates.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseJson } from "./safe-json.js";
|
|
2
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { existsSync, readFileSync, renameSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { execa } from "execa";
|
|
5
5
|
import { resolveCommand } from "package-manager-detector/commands";
|
|
@@ -33,16 +33,52 @@ function envCommand(envName) {
|
|
|
33
33
|
}
|
|
34
34
|
async function resolvePackageScript(worktreePath, scriptName) {
|
|
35
35
|
if (!readPackageScripts(worktreePath)[scriptName]) return null;
|
|
36
|
-
const resolved = resolveCommand(
|
|
37
|
-
cwd: worktreePath,
|
|
38
|
-
stopDir: worktreePath
|
|
39
|
-
}))?.agent ?? "npm", "run", [scriptName]);
|
|
36
|
+
const resolved = resolveCommand(await detectPackageManagerAgent(worktreePath), "run", [scriptName]);
|
|
40
37
|
if (!resolved) return null;
|
|
41
38
|
return {
|
|
42
39
|
command: resolved.command,
|
|
43
40
|
args: resolved.args
|
|
44
41
|
};
|
|
45
42
|
}
|
|
43
|
+
async function detectPackageManagerAgent(worktreePath) {
|
|
44
|
+
return (await detect({
|
|
45
|
+
cwd: worktreePath,
|
|
46
|
+
stopDir: worktreePath
|
|
47
|
+
}))?.agent ?? "npm";
|
|
48
|
+
}
|
|
49
|
+
async function resolvePackageBinaryCommand(worktreePath, binary, args) {
|
|
50
|
+
if (!existsSync(join(worktreePath, "package.json"))) return null;
|
|
51
|
+
switch (await detectPackageManagerAgent(worktreePath)) {
|
|
52
|
+
case "bun": return {
|
|
53
|
+
command: "bun",
|
|
54
|
+
args: [
|
|
55
|
+
"x",
|
|
56
|
+
binary,
|
|
57
|
+
...args
|
|
58
|
+
]
|
|
59
|
+
};
|
|
60
|
+
case "pnpm": return {
|
|
61
|
+
command: "pnpm",
|
|
62
|
+
args: [
|
|
63
|
+
"exec",
|
|
64
|
+
binary,
|
|
65
|
+
...args
|
|
66
|
+
]
|
|
67
|
+
};
|
|
68
|
+
case "yarn": return {
|
|
69
|
+
command: "yarn",
|
|
70
|
+
args: [
|
|
71
|
+
"exec",
|
|
72
|
+
binary,
|
|
73
|
+
...args
|
|
74
|
+
]
|
|
75
|
+
};
|
|
76
|
+
default: return {
|
|
77
|
+
command: "npx",
|
|
78
|
+
args: [binary, ...args]
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
46
82
|
async function runTests(worktreePath, signal) {
|
|
47
83
|
const projectCommand = envCommand("PIPELINE_TEST_COMMAND") ?? await resolvePackageScript(worktreePath, "test");
|
|
48
84
|
if (!projectCommand) return {
|
|
@@ -70,15 +106,16 @@ async function runLint(worktreePath, signal) {
|
|
|
70
106
|
exitCode: 0,
|
|
71
107
|
output: "skipped"
|
|
72
108
|
};
|
|
73
|
-
return await runProjectCommand(projectCommand, worktreePath, signal);
|
|
109
|
+
return await runProjectCommand(projectCommand, worktreePath, signal, { hidePipelineRuns: true });
|
|
74
110
|
}
|
|
75
111
|
async function runFallow(worktreePath, signal) {
|
|
76
|
-
return runProjectCommand(envCommand("PIPELINE_FALLOW_COMMAND") ?? await resolvePackageScript(worktreePath, "fallow") ?? {
|
|
112
|
+
return runProjectCommand(envCommand("PIPELINE_FALLOW_COMMAND") ?? await resolvePackageScript(worktreePath, "fallow") ?? await resolvePackageBinaryCommand(worktreePath, "fallow", ["audit"]) ?? {
|
|
77
113
|
args: ["audit"],
|
|
78
114
|
command: "fallow"
|
|
79
|
-
}, worktreePath, signal);
|
|
115
|
+
}, worktreePath, signal, { hidePipelineRuns: true });
|
|
80
116
|
}
|
|
81
|
-
async function runProjectCommand(projectCommand, worktreePath, signal) {
|
|
117
|
+
async function runProjectCommand(projectCommand, worktreePath, signal, options) {
|
|
118
|
+
const hiddenRuns = options?.hidePipelineRuns ? hidePipelineRunsDirectory(worktreePath) : null;
|
|
82
119
|
try {
|
|
83
120
|
const result = await execa(projectCommand.command, projectCommand.args, {
|
|
84
121
|
cancelSignal: signal,
|
|
@@ -98,8 +135,21 @@ async function runProjectCommand(projectCommand, worktreePath, signal) {
|
|
|
98
135
|
exitCode: e.exitCode ?? 1,
|
|
99
136
|
output: commandErrorOutput(e)
|
|
100
137
|
};
|
|
138
|
+
} finally {
|
|
139
|
+
hiddenRuns?.restore();
|
|
101
140
|
}
|
|
102
141
|
}
|
|
142
|
+
function hidePipelineRunsDirectory(worktreePath) {
|
|
143
|
+
const pipelineDir = join(worktreePath, ".pipeline");
|
|
144
|
+
const runsDir = join(pipelineDir, "runs");
|
|
145
|
+
if (!existsSync(runsDir)) return null;
|
|
146
|
+
const hiddenRunsDir = join(pipelineDir, `.runs-hidden-${process.pid}-${Date.now()}`);
|
|
147
|
+
renameSync(runsDir, hiddenRunsDir);
|
|
148
|
+
return { restore: () => {
|
|
149
|
+
if (!existsSync(hiddenRunsDir)) return;
|
|
150
|
+
renameSync(hiddenRunsDir, runsDir);
|
|
151
|
+
} };
|
|
152
|
+
}
|
|
103
153
|
function commandError(err) {
|
|
104
154
|
return err;
|
|
105
155
|
}
|
package/package.json
CHANGED
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"prepack": "bun run build:cli"
|
|
112
112
|
},
|
|
113
113
|
"type": "module",
|
|
114
|
-
"version": "1.22.
|
|
114
|
+
"version": "1.22.5",
|
|
115
115
|
"description": "Config-driven multi-agent pipeline runner for repository work",
|
|
116
116
|
"main": "./dist/index.js",
|
|
117
117
|
"types": "./dist/index.d.ts",
|