@oisincoveney/pipeline 3.14.0 → 3.15.1

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.
Files changed (70) hide show
  1. package/dist/argo-submit.js +1 -1
  2. package/dist/cli/program.js +19 -9
  3. package/dist/commands/bench-command.js +1 -1
  4. package/dist/commands/pipeline-command.js +1 -1
  5. package/dist/commands/runner-command-command.js +1 -1
  6. package/dist/config/schemas.d.ts +17 -17
  7. package/dist/install-commands/opencode.js +2 -2
  8. package/dist/install-hooks.js +1 -1
  9. package/dist/loop/argo-poll.js +3 -3
  10. package/dist/loop/merge.js +2 -2
  11. package/dist/mcp/gateway.js +3 -3
  12. package/dist/moka-submit.d.ts +1 -1
  13. package/dist/moka-submit.js +1 -1
  14. package/dist/pipeline-runtime.js +50 -233
  15. package/dist/planning/generate.d.ts +20 -20
  16. package/dist/planning/generate.js +2 -2
  17. package/dist/run-control/commands.js +3 -3
  18. package/dist/run-control/contracts.js +1 -0
  19. package/dist/run-control/detach.js +2 -2
  20. package/dist/run-control/next-node.js +25 -19
  21. package/dist/run-control/postgres/postgres-run-control-store.js +1 -0
  22. package/dist/run-control/run-control-store.js +1 -1
  23. package/dist/run-control/run-state-lock.js +4 -0
  24. package/dist/run-control/runtime-event-projection.js +98 -0
  25. package/dist/run-control/runtime-reporter.js +27 -90
  26. package/dist/run-control/store.js +4 -3
  27. package/dist/run-control/submit-result.js +11 -11
  28. package/dist/run-control/supervisor.js +7 -6
  29. package/dist/runner-command/finalize.js +1 -1
  30. package/dist/runner-command/lifecycle-context.js +1 -1
  31. package/dist/runner-command/lifecycle.js +1 -1
  32. package/dist/runner-command/run.js +5 -5
  33. package/dist/runner-command-contract.d.ts +2 -2
  34. package/dist/runner-event-schema.d.ts +4 -4
  35. package/dist/runtime/agent-node/agent-node.js +5 -5
  36. package/dist/runtime/changed-files/changed-files.js +1 -1
  37. package/dist/runtime/context/context.js +1 -1
  38. package/dist/runtime/drain-merge/drain-merge.js +6 -6
  39. package/dist/runtime/durable-store/postgres/postgres-store.js +5 -4
  40. package/dist/runtime/json-validation/json-validation.js +1 -1
  41. package/dist/runtime/local-scheduler.js +1 -1
  42. package/dist/runtime/node-state-tracker.js +133 -58
  43. package/dist/runtime/open-pull-request/open-pull-request.js +11 -11
  44. package/dist/runtime/opencode-server.js +1 -1
  45. package/dist/runtime/opencode-session-executor.js +22 -16
  46. package/dist/runtime/parallel-node/parallel-node.js +2 -2
  47. package/dist/runtime/remediation/remediation.js +246 -0
  48. package/dist/runtime/scheduler.js +1 -1
  49. package/dist/runtime/services/agent-node-runtime-service.js +1 -1
  50. package/dist/runtime/services/backlog-service.d.ts +1 -1
  51. package/dist/runtime/services/backlog-service.js +1 -1
  52. package/dist/runtime/services/command-executor-service.js +1 -1
  53. package/dist/runtime/services/config-io-service.js +2 -2
  54. package/dist/runtime/services/drain-merge-git-service.js +1 -1
  55. package/dist/runtime/services/file-system-service.js +2 -2
  56. package/dist/runtime/services/git-porcelain-service.js +1 -1
  57. package/dist/runtime/services/kubernetes-argo-service.js +2 -2
  58. package/dist/runtime/services/mcp-gateway-service.js +2 -2
  59. package/dist/runtime/services/open-pull-request-git-service.js +1 -1
  60. package/dist/runtime/services/opencode-runtime-server-service.js +1 -1
  61. package/dist/runtime/services/opencode-sdk-service.js +1 -1
  62. package/dist/runtime/services/repo-io-service.js +2 -2
  63. package/dist/runtime/services/runner-command-io-service.js +4 -4
  64. package/dist/runtime/services/runner-event-sink-http-service.js +1 -1
  65. package/dist/runtime/services/worktree-service.js +2 -2
  66. package/dist/runtime/workflow-lifecycle.js +2 -2
  67. package/dist/serialized-write-queue.js +35 -0
  68. package/dist/tickets/ticket-graph-dto.js +1 -1
  69. package/docs/runtime-actor-model.md +30 -0
  70. package/package.json +3 -3
@@ -1,10 +1,10 @@
1
1
  import { ArgoGraphCompilerError, compileArgoExecutionGraph } from "./argo-graph.js";
2
2
  import { brokerAuthOptionSchema } from "./broker-auth.js";
3
+ import { compileScheduleArtifact, parseScheduleArtifact } from "./planning/generate.js";
3
4
  import { parseRunnerCommandPayload, runnerCommandPayloadSchema } from "./runner-command-contract.js";
4
5
  import { buildRunnerTaskDescriptor } from "./runner-command/task-descriptor.js";
5
6
  import { buildRunnerArgoWorkflowManifest, runnerArgoWorkflowManifestSchema } from "./argo-workflow.js";
6
7
  import { normalizeRunnerRepositoryForSubmit } from "./git-remote-url.js";
7
- import { compileScheduleArtifact, parseScheduleArtifact } from "./planning/generate.js";
8
8
  import { KubernetesArgoService, KubernetesArgoServiceLive } from "./runtime/services/kubernetes-argo-service.js";
9
9
  import { workflowSubmitResultSchema } from "./workflow-submit-contract.js";
10
10
  import { stringify } from "yaml";
@@ -2,13 +2,14 @@ import { loadPipelineConfig } from "../config/load.js";
2
2
  import "../config.js";
3
3
  import { loadMokaGlobalConfig } from "../moka-global-config.js";
4
4
  import { flattenNodes } from "../planning/graph.js";
5
- import { configureGatewayHosts, localGatewayStatus, reconcileGateway, renderGatewayConfig, runGatewayDoctor, startLocalGateway } from "../mcp/gateway.js";
6
5
  import { createOrchestratorLaunchPlan, createRunnerLaunchPlan } from "../runner.js";
7
6
  import { compileWorkflowPlan } from "../planning/compile.js";
7
+ import { compileScheduleArtifact, generateScheduleArtifact, parseScheduleArtifact } from "../planning/generate.js";
8
+ import { withRunControlStoreScoped } from "../run-control/run-control-store.js";
9
+ import { configureGatewayHosts, localGatewayStatus, reconcileGateway, renderGatewayConfig, runGatewayDoctor, startLocalGateway } from "../mcp/gateway.js";
8
10
  import { generateRuntimeRunId, resolveWorkflowSelection } from "../runtime/context/context.js";
9
11
  import "../runtime/context/index.js";
10
12
  import { runPipelineFromConfig } from "../pipeline-runtime.js";
11
- import { compileScheduleArtifact, generateScheduleArtifact, parseScheduleArtifact } from "../planning/generate.js";
12
13
  import { formatCodexAuthSyncResult, syncLocalCodexAuth } from "../codex-auth-sync.js";
13
14
  import { registerBenchCommand } from "../commands/bench-command.js";
14
15
  import { registerConfiguredEntrypointCommands } from "../commands/pipeline-command.js";
@@ -19,7 +20,6 @@ import { formatConfigLintWarning, lintPipelineConfig } from "../config/lint.js";
19
20
  import { parseLoopFlags, runLoopSubmit } from "../loop/loop-command.js";
20
21
  import { runLoopControllerEntrypoint } from "../loop/loop-controller-entrypoint.js";
21
22
  import { formatPipelineInitResult, initPipelineProject } from "../pipeline-init.js";
22
- import { withRunControlStoreScoped } from "../run-control/run-control-store.js";
23
23
  import { registerRunControlCommands } from "../run-control/commands.js";
24
24
  import { startDetachedRunController } from "../run-control/detach.js";
25
25
  import { createRunStoreRuntimeReporter } from "../run-control/runtime-reporter.js";
@@ -78,10 +78,12 @@ async function runConfiguredPipeline(rawInputs) {
78
78
  const inputs = withRunId(rawInputs);
79
79
  const config = loadPipelineConfig(inputs.worktreePath, { allowMissingLintFileReferences: true });
80
80
  if (inputs.schedule) {
81
- const compiled = compileScheduleArtifact(config, parseScheduleArtifact(readFileSync(inputs.schedule, "utf8"), inputs.schedule), inputs.worktreePath);
81
+ const scheduleYaml = readFileSync(inputs.schedule, "utf8");
82
+ const compiled = compileScheduleArtifact(config, parseScheduleArtifact(scheduleYaml, inputs.schedule), inputs.worktreePath);
82
83
  await runAndPrintPipeline({
83
84
  ...inputs,
84
85
  config: compiled.config,
86
+ scheduleArtifact: scheduleYaml,
85
87
  workflow: compiled.workflowId
86
88
  });
87
89
  return;
@@ -103,10 +105,12 @@ async function runConfiguredPipeline(rawInputs) {
103
105
  worktreePath: inputs.worktreePath
104
106
  });
105
107
  console.log(`Schedule generated: ${result.path}`);
106
- const compiled = compileScheduleArtifact(config, parseScheduleArtifact(readFileSync(resolve(inputs.worktreePath, result.path), "utf8"), result.path), inputs.worktreePath);
108
+ const scheduleYaml = readFileSync(resolve(inputs.worktreePath, result.path), "utf8");
109
+ const compiled = compileScheduleArtifact(config, parseScheduleArtifact(scheduleYaml, result.path), inputs.worktreePath);
107
110
  await runAndPrintPipeline({
108
111
  ...inputs,
109
112
  config: compiled.config,
113
+ scheduleArtifact: scheduleYaml,
110
114
  workflow: compiled.workflowId
111
115
  });
112
116
  return;
@@ -155,7 +159,8 @@ async function createLocalRunStoreRuntimeReporter(inputs, reporter, store) {
155
159
  await Effect.runPromise(store.createRun({
156
160
  ...resolvedRunControlOptions(inputs.runControl),
157
161
  nodeIds: plannedRunStoreNodeIds(inputs),
158
- runId
162
+ runId,
163
+ ...inputs.scheduleArtifact ? { schedule: inputs.scheduleArtifact } : {}
159
164
  }));
160
165
  return createRunStoreRuntimeReporter({
161
166
  reporter,
@@ -457,7 +462,8 @@ async function runDetachedResolvedTask(task, execution, runControl) {
457
462
  workflow: prepared.workflow,
458
463
  worktreePath
459
464
  }),
460
- runId
465
+ runId,
466
+ ...prepared.scheduleArtifact ? { schedule: prepared.scheduleArtifact } : {}
461
467
  });
462
468
  const launch = yield* Effect.tryPromise({
463
469
  catch: (error) => error,
@@ -486,10 +492,12 @@ async function runDetachedResolvedTask(task, execution, runControl) {
486
492
  async function prepareDetachedRun(input) {
487
493
  if (input.execution.schedule) {
488
494
  const schedule = resolve(input.execution.schedule);
489
- const compiled = compileScheduleArtifact(input.config, parseScheduleArtifact(readFileSync(schedule, "utf8"), schedule), input.worktreePath);
495
+ const scheduleYaml = readFileSync(schedule, "utf8");
496
+ const compiled = compileScheduleArtifact(input.config, parseScheduleArtifact(scheduleYaml, schedule), input.worktreePath);
490
497
  return {
491
498
  config: compiled.config,
492
499
  schedule,
500
+ scheduleArtifact: scheduleYaml,
493
501
  workflow: compiled.workflowId
494
502
  };
495
503
  }
@@ -508,10 +516,12 @@ async function prepareDetachedRun(input) {
508
516
  });
509
517
  console.log(`Schedule generated: ${result.path}`);
510
518
  const schedule = resolve(input.worktreePath, result.path);
511
- const compiled = compileScheduleArtifact(input.config, parseScheduleArtifact(readFileSync(schedule, "utf8"), result.path), input.worktreePath);
519
+ const scheduleYaml = readFileSync(schedule, "utf8");
520
+ const compiled = compileScheduleArtifact(input.config, parseScheduleArtifact(scheduleYaml, result.path), input.worktreePath);
512
521
  return {
513
522
  config: compiled.config,
514
523
  schedule,
524
+ scheduleArtifact: scheduleYaml,
515
525
  workflow: compiled.workflowId
516
526
  };
517
527
  }
@@ -2,7 +2,7 @@ import { buildEvalReport, renderEvalReport } from "../bench/eval-report.js";
2
2
  import { Context, Effect, Layer } from "effect";
3
3
  import { readFileSync } from "node:fs";
4
4
  //#region src/commands/bench-command.ts
5
- var BenchCommandService = class extends Context.Tag("BenchCommandService")() {};
5
+ var BenchCommandService = class extends Context.Service()("BenchCommandService") {};
6
6
  const BenchCommandServiceLive = Layer.succeed(BenchCommandService, {
7
7
  readResults: (path) => Effect.try(() => JSON.parse(readFileSync(path, "utf8"))),
8
8
  writeReport: (report) => Effect.try(() => process.stdout.write(`${report}\n`))
@@ -12,7 +12,7 @@ const BUILTIN_PIPE_COMMANDS = new Set([
12
12
  "runner-command",
13
13
  "ticket"
14
14
  ]);
15
- var EntrypointCommandService = class extends Context.Tag("EntrypointCommandService")() {};
15
+ var EntrypointCommandService = class extends Context.Service()("EntrypointCommandService") {};
16
16
  const createEntrypointCommandServiceLive = (runEntrypoint) => Layer.succeed(EntrypointCommandService, { runEntrypoint: (entrypoint, task, opts) => Effect.tryPromise({
17
17
  catch: (error) => error,
18
18
  try: () => runEntrypoint(entrypoint, task, opts)
@@ -3,7 +3,7 @@ import { runRunnerFinalize } from "../runner-command/finalize.js";
3
3
  import { runRunnerLifecycle } from "../runner-command/lifecycle.js";
4
4
  import { Context, Effect, Layer } from "effect";
5
5
  //#region src/commands/runner-command-command.ts
6
- var RunnerCommandService = class extends Context.Tag("RunnerCommandService")() {};
6
+ var RunnerCommandService = class extends Context.Service()("RunnerCommandService") {};
7
7
  const RunnerCommandServiceLive = Layer.succeed(RunnerCommandService, {
8
8
  finalize: (options) => Effect.tryPromise({
9
9
  catch: (error) => error,
@@ -99,10 +99,10 @@ declare const workflowNodeBaseSchema: z.ZodObject<{
99
99
  models: z.ZodOptional<z.ZodArray<z.ZodString>>;
100
100
  needs: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
101
  reasoning_effort: z.ZodOptional<z.ZodEnum<{
102
- none: "none";
103
- low: "low";
104
- medium: "medium";
105
102
  high: "high";
103
+ medium: "medium";
104
+ low: "low";
105
+ none: "none";
106
106
  xhigh: "xhigh";
107
107
  }>>;
108
108
  retries: z.ZodOptional<z.ZodObject<{
@@ -233,8 +233,8 @@ declare const configSchema: z.ZodObject<{
233
233
  policy: z.ZodOptional<z.ZodObject<{
234
234
  commands: z.ZodOptional<z.ZodEnum<{
235
235
  allow: "allow";
236
- deny: "deny";
237
236
  "trusted-only": "trusted-only";
237
+ deny: "deny";
238
238
  }>>;
239
239
  modules: z.ZodOptional<z.ZodEnum<{
240
240
  allow: "allow";
@@ -262,8 +262,8 @@ declare const configSchema: z.ZodObject<{
262
262
  global: "global";
263
263
  }>>;
264
264
  mode: z.ZodEnum<{
265
- local: "local";
266
265
  hosted: "hosted";
266
+ local: "local";
267
267
  }>;
268
268
  provider: z.ZodLiteral<"toolhive">;
269
269
  authorization_env: z.ZodDefault<z.ZodString>;
@@ -307,10 +307,10 @@ declare const configSchema: z.ZodObject<{
307
307
  }, z.core.$strict>>;
308
308
  output: z.ZodOptional<z.ZodObject<{
309
309
  format: z.ZodEnum<{
310
- json_schema: "json_schema";
311
310
  text: "text";
312
311
  json: "json";
313
312
  jsonl: "jsonl";
313
+ json_schema: "json_schema";
314
314
  }>;
315
315
  repair: z.ZodOptional<z.ZodObject<{
316
316
  enabled: z.ZodOptional<z.ZodBoolean>;
@@ -320,10 +320,10 @@ declare const configSchema: z.ZodObject<{
320
320
  schema_path: z.ZodOptional<z.ZodString>;
321
321
  }, z.core.$strict>>;
322
322
  reasoning_effort: z.ZodOptional<z.ZodEnum<{
323
- none: "none";
324
- low: "low";
325
- medium: "medium";
326
323
  high: "high";
324
+ medium: "medium";
325
+ low: "low";
326
+ none: "none";
327
327
  xhigh: "xhigh";
328
328
  }>>;
329
329
  rules: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -386,10 +386,10 @@ declare const configSchema: z.ZodObject<{
386
386
  disabled: "disabled";
387
387
  }>>>;
388
388
  output_formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
389
- json_schema: "json_schema";
390
389
  text: "text";
391
390
  json: "json";
392
391
  jsonl: "jsonl";
392
+ json_schema: "json_schema";
393
393
  }>>>;
394
394
  rules: z.ZodOptional<z.ZodBoolean>;
395
395
  skills: z.ZodOptional<z.ZodBoolean>;
@@ -408,10 +408,10 @@ declare const configSchema: z.ZodObject<{
408
408
  host_models: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
409
409
  model: z.ZodOptional<z.ZodString>;
410
410
  reasoning_effort: z.ZodOptional<z.ZodEnum<{
411
- none: "none";
412
- low: "low";
413
- medium: "medium";
414
411
  high: "high";
412
+ medium: "medium";
413
+ low: "low";
414
+ none: "none";
415
415
  xhigh: "xhigh";
416
416
  }>>;
417
417
  type: z.ZodEnum<{
@@ -497,10 +497,10 @@ declare const configSchema: z.ZodObject<{
497
497
  models: z.ZodArray<z.ZodString>;
498
498
  profile: z.ZodString;
499
499
  reasoning_effort: z.ZodOptional<z.ZodEnum<{
500
- none: "none";
501
- low: "low";
502
- medium: "medium";
503
500
  high: "high";
501
+ medium: "medium";
502
+ low: "low";
503
+ none: "none";
504
504
  xhigh: "xhigh";
505
505
  }>>;
506
506
  }, z.core.$strict>>>;
@@ -510,8 +510,8 @@ declare const configSchema: z.ZodObject<{
510
510
  schedules: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
511
511
  description: z.ZodOptional<z.ZodString>;
512
512
  baseline: z.ZodEnum<{
513
- execute: "execute";
514
513
  quick: "quick";
514
+ execute: "execute";
515
515
  }>;
516
516
  max_parallel_nodes: z.ZodOptional<z.ZodNumber>;
517
517
  node_catalog: z.ZodOptional<z.ZodString>;
@@ -1,10 +1,10 @@
1
1
  import { DEFAULT_OPENCODE_ECOSYSTEM_MANIFEST } from "../config/defaults.js";
2
2
  import { resolvePackageAssetPath } from "../package-assets.js";
3
3
  import "../config.js";
4
- import { RepoIoService, runRepoIoSync } from "../runtime/services/repo-io-service.js";
5
- import { renderOpenCodeGatewayConfig } from "../mcp/gateway.js";
6
4
  import { protectedPermissionOverlay } from "../runtime/protected-paths/protected-paths.js";
5
+ import { RepoIoService, runRepoIoSync } from "../runtime/services/repo-io-service.js";
7
6
  import { compileWorkflowPlan } from "../planning/compile.js";
7
+ import { renderOpenCodeGatewayConfig } from "../mcp/gateway.js";
8
8
  import { opencodeAgentName } from "../runtime/opencode-agent-name.js";
9
9
  import { AGENTS_MD_END, AGENTS_MD_START, COMMAND_HOSTS, GENERATED_MARKER, GENERATED_TS_MARKER, OPENCODE_PROJECT_CONFIG_PATH, OWNER_MARKER_PREFIX, OWNER_TS_MARKER_PREFIX, SINGLE_OPENCODE_PLUGIN_ARRAY_RE, commandIdForHost, compactLines, entrypointDescription, entrypointEntries, instructionsPointer, invocationForHost, profileEntries } from "./shared.js";
10
10
  import { mergeOpenCodeProjectConfig } from "../opencode-project-config.js";
@@ -5,8 +5,8 @@ import { existsSync, readFileSync, statSync } from "node:fs";
5
5
  import { execa } from "execa";
6
6
  import { tmpdir } from "node:os";
7
7
  import { dirname, join, relative } from "node:path";
8
- import { createHash } from "node:crypto";
9
8
  import { mkdir, mkdtemp, readdir, rm, writeFile } from "node:fs/promises";
9
+ import { createHash } from "node:crypto";
10
10
  //#region src/install-hooks.ts
11
11
  const DEFAULT_HOOK_INSTALL_SOURCE = AGENT_ASSET_SOURCE;
12
12
  const HOOK_HOSTS = [
@@ -104,18 +104,18 @@ function pollLoop(state) {
104
104
  workflowReadApi: state.workflowReadApi
105
105
  }).pipe(Effect.flatMap((phase) => {
106
106
  if (isTerminal(phase)) return Effect.succeed(phase);
107
- return Effect.sleep(Duration.millis(state.pollIntervalMs)).pipe(Effect.zipRight(pollLoop({
107
+ return Effect.sleep(Duration.millis(state.pollIntervalMs)).pipe(Effect.andThen(pollLoop({
108
108
  ...state,
109
109
  errorCount: 0
110
110
  })));
111
- }), Effect.catchAll((error) => handlePollError(state, error)));
111
+ }), Effect.catch((error) => handlePollError(state, error)));
112
112
  }
113
113
  function handlePollError(state, error) {
114
114
  const nextErrorCount = state.errorCount + 1;
115
115
  state.onTransientError?.(error, nextErrorCount);
116
116
  if (nextErrorCount > state.maxRetries) return Effect.fail(error);
117
117
  const delay = Duration.millis(RETRY_BASE_DELAY_MS * 2 ** (nextErrorCount - 1));
118
- return Effect.sleep(delay).pipe(Effect.zipRight(pollLoop({
118
+ return Effect.sleep(delay).pipe(Effect.andThen(pollLoop({
119
119
  ...state,
120
120
  errorCount: nextErrorCount
121
121
  })));
@@ -49,7 +49,7 @@ function enableAutoMerge(pr, gh) {
49
49
  return gh.text(args).pipe(Effect.map(() => ({
50
50
  _tag: "pending",
51
51
  pr: pr.number
52
- })), Effect.catchAll((error) => Effect.succeed(toBlocked(pr, error))));
52
+ })), Effect.catch((error) => Effect.succeed(toBlocked(pr, error))));
53
53
  }
54
54
  /**
55
55
  * Admin-merge through branch protection using the bypass token. The token is
@@ -71,7 +71,7 @@ function adminMerge(pr, token, gh) {
71
71
  return gh.text(args, { secretEnv: { GH_TOKEN: token.reveal() } }).pipe(Effect.map(() => ({
72
72
  _tag: "merged",
73
73
  pr: pr.number
74
- })), Effect.catchAll((error) => Effect.succeed(toBlocked(pr, error))));
74
+ })), Effect.catch((error) => Effect.succeed(toBlocked(pr, error))));
75
75
  }
76
76
  function toBlocked(pr, error) {
77
77
  const message = error instanceof Error ? error.message : String(error);
@@ -188,7 +188,7 @@ function checkGatewayRequiredTools(gateway) {
188
188
  name: "gateway-required-tools",
189
189
  passed: false
190
190
  };
191
- }).pipe(Effect.catchAll((error) => Effect.succeed({
191
+ }).pipe(Effect.catch((error) => Effect.succeed({
192
192
  detail: error instanceof Error ? error.message : String(error),
193
193
  name: "gateway-required-tools",
194
194
  passed: false
@@ -317,7 +317,7 @@ function checkThv(cwd) {
317
317
  name: "toolhive",
318
318
  passed: true
319
319
  };
320
- }).pipe(Effect.catchAll((error) => Effect.succeed({
320
+ }).pipe(Effect.catch((error) => Effect.succeed({
321
321
  detail: error.message || "not available",
322
322
  name: "toolhive",
323
323
  passed: false
@@ -342,7 +342,7 @@ function checkGatewayHealth(gateway) {
342
342
  name: "gateway-health",
343
343
  passed
344
344
  };
345
- }).pipe(Effect.catchAll((error) => Effect.succeed({
345
+ }).pipe(Effect.catch((error) => Effect.succeed({
346
346
  detail: error instanceof Error ? error.message : String(error),
347
347
  name: "gateway-health",
348
348
  passed: false
@@ -170,8 +170,8 @@ declare const mokaSubmitOptionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
170
170
  }, z.core.$strict>>;
171
171
  serviceAccountName: z.ZodOptional<z.ZodString>;
172
172
  mode: z.ZodEnum<{
173
- quick: "quick";
174
173
  full: "full";
174
+ quick: "quick";
175
175
  }>;
176
176
  schedulePath: z.ZodOptional<z.ZodString>;
177
177
  scheduleYaml: z.ZodOptional<z.ZodString>;
@@ -1,7 +1,7 @@
1
1
  import { brokerAuthOptionSchema } from "./broker-auth.js";
2
+ import { compileScheduleArtifact, generateScheduleArtifact, parseScheduleArtifact } from "./planning/generate.js";
2
3
  import { buildRunnerCommandPayload, runnerDeliverySchema, runnerHookPolicySchema, runnerRepositoryContextSchema, runnerRunIdentitySchema, runnerTaskSchema } from "./runner-command-contract.js";
3
4
  import { normalizeRunnerRepositoryForSubmit } from "./git-remote-url.js";
4
- import { compileScheduleArtifact, generateScheduleArtifact, parseScheduleArtifact } from "./planning/generate.js";
5
5
  import { workflowSubmitResultSchema } from "./workflow-submit-contract.js";
6
6
  import { buildCommandScheduleYaml, submitRunnerArgoWorkflow } from "./argo-submit.js";
7
7
  import { z } from "zod";