@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.
- package/dist/argo-submit.js +1 -1
- package/dist/cli/program.js +19 -9
- package/dist/commands/bench-command.js +1 -1
- package/dist/commands/pipeline-command.js +1 -1
- package/dist/commands/runner-command-command.js +1 -1
- package/dist/config/schemas.d.ts +17 -17
- package/dist/install-commands/opencode.js +2 -2
- package/dist/install-hooks.js +1 -1
- package/dist/loop/argo-poll.js +3 -3
- package/dist/loop/merge.js +2 -2
- package/dist/mcp/gateway.js +3 -3
- package/dist/moka-submit.d.ts +1 -1
- package/dist/moka-submit.js +1 -1
- package/dist/pipeline-runtime.js +50 -233
- package/dist/planning/generate.d.ts +20 -20
- package/dist/planning/generate.js +2 -2
- package/dist/run-control/commands.js +3 -3
- package/dist/run-control/contracts.js +1 -0
- package/dist/run-control/detach.js +2 -2
- package/dist/run-control/next-node.js +25 -19
- package/dist/run-control/postgres/postgres-run-control-store.js +1 -0
- package/dist/run-control/run-control-store.js +1 -1
- package/dist/run-control/run-state-lock.js +4 -0
- package/dist/run-control/runtime-event-projection.js +98 -0
- package/dist/run-control/runtime-reporter.js +27 -90
- package/dist/run-control/store.js +4 -3
- package/dist/run-control/submit-result.js +11 -11
- package/dist/run-control/supervisor.js +7 -6
- package/dist/runner-command/finalize.js +1 -1
- package/dist/runner-command/lifecycle-context.js +1 -1
- package/dist/runner-command/lifecycle.js +1 -1
- package/dist/runner-command/run.js +5 -5
- package/dist/runner-command-contract.d.ts +2 -2
- package/dist/runner-event-schema.d.ts +4 -4
- package/dist/runtime/agent-node/agent-node.js +5 -5
- package/dist/runtime/changed-files/changed-files.js +1 -1
- package/dist/runtime/context/context.js +1 -1
- package/dist/runtime/drain-merge/drain-merge.js +6 -6
- package/dist/runtime/durable-store/postgres/postgres-store.js +5 -4
- package/dist/runtime/json-validation/json-validation.js +1 -1
- package/dist/runtime/local-scheduler.js +1 -1
- package/dist/runtime/node-state-tracker.js +133 -58
- package/dist/runtime/open-pull-request/open-pull-request.js +11 -11
- package/dist/runtime/opencode-server.js +1 -1
- package/dist/runtime/opencode-session-executor.js +22 -16
- package/dist/runtime/parallel-node/parallel-node.js +2 -2
- package/dist/runtime/remediation/remediation.js +246 -0
- package/dist/runtime/scheduler.js +1 -1
- package/dist/runtime/services/agent-node-runtime-service.js +1 -1
- package/dist/runtime/services/backlog-service.d.ts +1 -1
- package/dist/runtime/services/backlog-service.js +1 -1
- package/dist/runtime/services/command-executor-service.js +1 -1
- package/dist/runtime/services/config-io-service.js +2 -2
- package/dist/runtime/services/drain-merge-git-service.js +1 -1
- package/dist/runtime/services/file-system-service.js +2 -2
- package/dist/runtime/services/git-porcelain-service.js +1 -1
- package/dist/runtime/services/kubernetes-argo-service.js +2 -2
- package/dist/runtime/services/mcp-gateway-service.js +2 -2
- package/dist/runtime/services/open-pull-request-git-service.js +1 -1
- package/dist/runtime/services/opencode-runtime-server-service.js +1 -1
- package/dist/runtime/services/opencode-sdk-service.js +1 -1
- package/dist/runtime/services/repo-io-service.js +2 -2
- package/dist/runtime/services/runner-command-io-service.js +4 -4
- package/dist/runtime/services/runner-event-sink-http-service.js +1 -1
- package/dist/runtime/services/worktree-service.js +2 -2
- package/dist/runtime/workflow-lifecycle.js +2 -2
- package/dist/serialized-write-queue.js +35 -0
- package/dist/tickets/ticket-graph-dto.js +1 -1
- package/docs/runtime-actor-model.md +30 -0
- package/package.json +3 -3
package/dist/argo-submit.js
CHANGED
|
@@ -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";
|
package/dist/cli/program.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
package/dist/config/schemas.d.ts
CHANGED
|
@@ -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";
|
package/dist/install-hooks.js
CHANGED
|
@@ -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 = [
|
package/dist/loop/argo-poll.js
CHANGED
|
@@ -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.
|
|
107
|
+
return Effect.sleep(Duration.millis(state.pollIntervalMs)).pipe(Effect.andThen(pollLoop({
|
|
108
108
|
...state,
|
|
109
109
|
errorCount: 0
|
|
110
110
|
})));
|
|
111
|
-
}), Effect.
|
|
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.
|
|
118
|
+
return Effect.sleep(delay).pipe(Effect.andThen(pollLoop({
|
|
119
119
|
...state,
|
|
120
120
|
errorCount: nextErrorCount
|
|
121
121
|
})));
|
package/dist/loop/merge.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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);
|
package/dist/mcp/gateway.js
CHANGED
|
@@ -188,7 +188,7 @@ function checkGatewayRequiredTools(gateway) {
|
|
|
188
188
|
name: "gateway-required-tools",
|
|
189
189
|
passed: false
|
|
190
190
|
};
|
|
191
|
-
}).pipe(Effect.
|
|
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.
|
|
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.
|
|
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
|
package/dist/moka-submit.d.ts
CHANGED
|
@@ -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>;
|
package/dist/moka-submit.js
CHANGED
|
@@ -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";
|