@oisincoveney/pipeline 1.22.4 → 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.
@@ -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
@@ -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<{
@@ -520,6 +520,7 @@ declare const configSchema: z.ZodObject<{
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,7 +528,6 @@ 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>;
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((await detect({
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.4",
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",