@oisincoveney/pipeline 3.24.2 → 3.24.3
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 +2 -2
- package/defaults/pipeline.yaml +23 -5
- package/defaults/profiles.yaml +104 -21
- package/dist/argo-graph.js +88 -88
- package/dist/argo-submit.d.ts +109 -137
- package/dist/argo-submit.js +337 -360
- package/dist/argo-workflow.d.ts +156 -176
- package/dist/argo-workflow.js +96 -138
- package/dist/backlog.js +5 -4
- package/dist/bench/eval-report.js +21 -12
- package/dist/claude-settings-config.js +23 -31
- package/dist/claude-user-config.js +6 -16
- package/dist/cli/bootstrap-commands.js +3 -3
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.js +172 -169
- package/dist/cli/factory-commands.js +12 -11
- package/dist/cli/format.js +92 -86
- package/dist/cli/loop-commands.js +21 -21
- package/dist/cli/mcp-gateway-commands.js +12 -12
- package/dist/cli/plan-commands.js +85 -116
- package/dist/cli/program.d.ts +2 -2
- package/dist/cli/program.js +35 -43
- package/dist/cli/run-command.js +25 -25
- package/dist/cli/run-commands.js +25 -25
- package/dist/cli/run-resolver.d.ts +1 -1
- package/dist/cli/run-resolver.js +30 -32
- package/dist/cli/run-service.d.ts +2 -2
- package/dist/cli/run-service.js +226 -239
- package/dist/cli/submit-options.js +78 -82
- package/dist/cluster-doctor.js +147 -175
- package/dist/codex-config.js +24 -30
- package/dist/commands/bench-command.js +9 -7
- package/dist/commands/pipeline-command.js +9 -5
- package/dist/commands/runner-command-command.js +28 -18
- package/dist/commands/ticket/complete.js +29 -33
- package/dist/commands/ticket/create.js +82 -82
- package/dist/commands/ticket/graph-check.js +11 -11
- package/dist/commands/ticket/next.js +36 -36
- package/dist/commands/ticket/sequence.js +10 -12
- package/dist/commands/ticket/shared.d.ts +1 -1
- package/dist/commands/ticket/shared.js +63 -66
- package/dist/commands/ticket/start.js +58 -67
- package/dist/commands/ticket-command.js +2 -2
- package/dist/config/defaults.d.ts +139 -139
- package/dist/config/defaults.js +81 -80
- package/dist/config/lint.js +52 -64
- package/dist/config/load.d.ts +4 -4
- package/dist/config/load.js +62 -74
- package/dist/config/schema/catalog.js +1 -1
- package/dist/config/schema/mcp.js +46 -52
- package/dist/config/schemas.d.ts +375 -525
- package/dist/config/schemas.js +397 -397
- package/dist/config/validate.d.ts +1 -1
- package/dist/config/validate.js +236 -201
- package/dist/context/repo-map.js +102 -119
- package/dist/credentials/broker.d.ts +6 -8
- package/dist/credentials/broker.js +17 -16
- package/dist/credentials/codex-config.js +15 -19
- package/dist/credentials/file-targets.js +9 -15
- package/dist/credentials/local-codex-auth-sync.js +55 -58
- package/dist/credentials/opencode-config.js +28 -32
- package/dist/credentials/runner.js +13 -13
- package/dist/effect-sync-errors.js +28 -0
- package/dist/factory/create-experiment.js +38 -42
- package/dist/factory/exec.js +10 -12
- package/dist/factory/git-credentials.js +4 -4
- package/dist/factory/stamp-answers.js +10 -11
- package/dist/factory/template-update.js +65 -44
- package/dist/factory-lane.d.ts +26 -40
- package/dist/factory-lane.js +26 -25
- package/dist/gates.js +3 -3
- package/dist/git-remote-url.js +17 -19
- package/dist/hooks.d.ts +26 -25
- package/dist/hooks.js +20 -22
- package/dist/index.d.ts +1 -1
- package/dist/index.js +21 -35
- package/dist/install-commands/claude-code.js +96 -92
- package/dist/install-commands/host-selection.js +3 -6
- package/dist/install-commands/opencode.js +263 -259
- package/dist/install-commands/planner.js +159 -180
- package/dist/install-commands/result-format.js +1 -3
- package/dist/install-commands/shared.js +25 -42
- package/dist/install-commands/writer.js +22 -25
- package/dist/install-commands.js +8 -8
- package/dist/jscpd-output.js +29 -0
- package/dist/json-config-merge.js +14 -20
- package/dist/json-line-values.js +17 -6
- package/dist/loop/argo-poll.js +52 -71
- package/dist/loop/backlog-records.js +1 -3
- package/dist/loop/controller-deps.js +146 -159
- package/dist/loop/controller.js +162 -186
- package/dist/loop/gh-checks.js +62 -61
- package/dist/loop/gh-runner.js +22 -25
- package/dist/loop/loop-command.js +66 -58
- package/dist/loop/loop-controller-entrypoint.js +28 -30
- package/dist/loop/merge.js +36 -40
- package/dist/mcp/gateway-config.js +25 -29
- package/dist/mcp/gateway-doctor.js +104 -116
- package/dist/mcp/gateway-reconcile.js +17 -22
- package/dist/mcp/gateway-runtime.js +1 -3
- package/dist/mcp/host-config.js +37 -40
- package/dist/mcp/host-renderers.js +10 -18
- package/dist/mcp/repo-local-backends.js +50 -54
- package/dist/mcp/toolhive-vmcp.js +39 -39
- package/dist/model-resolver.js +29 -33
- package/dist/moka-global-config.d.ts +78 -54
- package/dist/moka-global-config.js +90 -92
- package/dist/moka-submit.d.ts +2163 -864
- package/dist/moka-submit.js +97 -99
- package/dist/opencode-project-config.js +34 -40
- package/dist/package-assets.js +1 -3
- package/dist/path-refs.js +2 -2
- package/dist/pipeline-init.js +25 -25
- package/dist/pipeline-runtime.d.ts +11 -11
- package/dist/pipeline-runtime.js +49 -50
- package/dist/planned-node.js +6 -3
- package/dist/planning/compile.d.ts +3 -3
- package/dist/planning/compile.js +140 -139
- package/dist/planning/dependency-refs.js +5 -5
- package/dist/planning/generate.d.ts +1293 -1293
- package/dist/planning/generate.js +305 -314
- package/dist/planning/graph.js +131 -149
- package/dist/remote/argo/model.d.ts +103 -121
- package/dist/remote/argo/model.js +205 -197
- package/dist/remote/argo/policy.js +39 -47
- package/dist/remote/argo/storage.js +81 -85
- package/dist/remote/submit/argo-submission.js +53 -58
- package/dist/remote/submit/compilation.js +46 -49
- package/dist/remote/submit/event-boundary.js +62 -76
- package/dist/remote/submit/hook-events.d.ts +5 -0
- package/dist/remote/submit/io.js +40 -43
- package/dist/remote/submit/options.d.ts +50 -0
- package/dist/remote/submit/options.js +27 -0
- package/dist/remote/submit/service.js +45 -49
- package/dist/run-control/command-context.js +6 -8
- package/dist/run-control/commands.js +10 -10
- package/dist/run-control/contracts.d.ts +40 -100
- package/dist/run-control/contracts.js +56 -69
- package/dist/run-control/detach.js +66 -72
- package/dist/run-control/file-errors.js +1 -3
- package/dist/run-control/logical-segment.js +3 -3
- package/dist/run-control/next-node.js +66 -78
- package/dist/run-control/postgres/postgres-run-control-store.js +195 -224
- package/dist/run-control/resume-command.js +33 -41
- package/dist/run-control/run-artifacts-command.js +83 -105
- package/dist/run-control/run-command-domain.js +7 -11
- package/dist/run-control/run-control-store.js +9 -9
- package/dist/run-control/run-query-command.js +73 -100
- package/dist/run-control/run-record.js +2 -2
- package/dist/run-control/run-state-lock.js +5 -5
- package/dist/run-control/runtime-event-projection.js +38 -50
- package/dist/run-control/runtime-reporter.js +84 -102
- package/dist/run-control/stop-command.js +42 -53
- package/dist/run-control/store-fs-effects.js +3 -1
- package/dist/run-control/store-manifest.js +38 -13
- package/dist/run-control/store-paths.js +3 -3
- package/dist/run-control/store.js +1 -1
- package/dist/run-control/submit-result.js +21 -21
- package/dist/run-control/supervisor.js +77 -68
- package/dist/run-control/workspace.js +2 -2
- package/dist/run-state/git-refs.js +257 -307
- package/dist/runner/opencode-excludes.js +4 -4
- package/dist/runner/subprocess-result.js +28 -37
- package/dist/runner/subprocess.js +41 -41
- package/dist/runner/timeouts.js +14 -13
- package/dist/runner-command/dynamic-command.js +46 -39
- package/dist/runner-command/finalize.js +174 -153
- package/dist/runner-command/lifecycle-context.js +112 -130
- package/dist/runner-command/lifecycle.js +77 -71
- package/dist/runner-command/pre-schedule.js +201 -222
- package/dist/runner-command/run.js +432 -447
- package/dist/runner-command/schedule-source-options.js +8 -10
- package/dist/runner-command/select-ready-wave.js +38 -29
- package/dist/runner-command/task-descriptor.js +11 -17
- package/dist/runner-command-contract.d.ts +147 -156
- package/dist/runner-command-contract.js +401 -410
- package/dist/runner-event-schema.d.ts +364 -504
- package/dist/runner-event-schema.js +187 -175
- package/dist/runner-event-sink.js +37 -43
- package/dist/runner-output.js +6 -6
- package/dist/runner.d.ts +56 -36
- package/dist/runner.js +175 -127
- package/dist/runtime/actor-ids.js +2 -2
- package/dist/runtime/agent-node/agent-node.js +99 -111
- package/dist/runtime/agent-node/handoff-finalization.js +23 -24
- package/dist/runtime/agent-node/model-selection.js +19 -22
- package/dist/runtime/agent-node/output-finalization.js +174 -205
- package/dist/runtime/agent-node/prompt-rendering.js +207 -251
- package/dist/runtime/agent-node/session-execution.js +34 -38
- package/dist/runtime/builtins/builtins.js +212 -284
- package/dist/runtime/changed-files/changed-files.js +26 -34
- package/dist/runtime/command-executor/command-executor.js +31 -23
- package/dist/runtime/config-error.js +1 -3
- package/dist/runtime/context/context.js +35 -37
- package/dist/runtime/contracts/index.d.ts +1 -1
- package/dist/runtime/detached-race.js +11 -14
- package/dist/runtime/drain-merge/drain-merge.js +137 -163
- package/dist/runtime/durable-store/acquisition.js +5 -3
- package/dist/runtime/durable-store/durable-store.d.ts +1 -1
- package/dist/runtime/durable-store/postgres/migrate-substrate.js +36 -33
- package/dist/runtime/durable-store/postgres/postgres-store.js +17 -18
- package/dist/runtime/events/events.js +255 -323
- package/dist/runtime/gates/adjudication/llm-judge.js +21 -24
- package/dist/runtime/gates/adjudication/structured-claim.js +15 -16
- package/dist/runtime/gates/adjudicator/adjudicator.js +27 -27
- package/dist/runtime/gates/adjudicator/index.js +2 -2
- package/dist/runtime/gates/contract.js +5 -9
- package/dist/runtime/gates/gates.js +9 -8
- package/dist/runtime/gates/kinds/acceptance/acceptance.js +66 -70
- package/dist/runtime/gates/kinds/acceptance/index.js +2 -2
- package/dist/runtime/gates/kinds/artifact/artifact.js +4 -4
- package/dist/runtime/gates/kinds/artifact/index.js +2 -2
- package/dist/runtime/gates/kinds/builtin/builtin.js +4 -4
- package/dist/runtime/gates/kinds/builtin/index.js +2 -2
- package/dist/runtime/gates/kinds/changed-files/changed-files.js +31 -35
- package/dist/runtime/gates/kinds/changed-files/index.js +2 -2
- package/dist/runtime/gates/kinds/command/command.js +3 -3
- package/dist/runtime/gates/kinds/command/index.js +2 -2
- package/dist/runtime/gates/kinds/json-schema/index.js +2 -2
- package/dist/runtime/gates/kinds/json-schema/json-schema.js +7 -6
- package/dist/runtime/gates/kinds/verdict/index.js +2 -2
- package/dist/runtime/gates/kinds/verdict/verdict.js +3 -3
- package/dist/runtime/gates/orchestrator.js +72 -86
- package/dist/runtime/gates/registry.js +1 -3
- package/dist/runtime/handoff.d.ts +1 -1
- package/dist/runtime/handoff.js +43 -46
- package/dist/runtime/hooks/command-hook.js +57 -71
- package/dist/runtime/hooks/context.js +21 -25
- package/dist/runtime/hooks/events.js +84 -100
- package/dist/runtime/hooks/execution.js +6 -12
- package/dist/runtime/hooks/hooks.js +34 -23
- package/dist/runtime/hooks/invocation.js +23 -29
- package/dist/runtime/hooks/module-hook.js +35 -35
- package/dist/runtime/hooks/policy.js +32 -29
- package/dist/runtime/hooks/results.js +56 -66
- package/dist/runtime/journal-acquisition.d.ts +1 -1
- package/dist/runtime/journal-acquisition.js +14 -14
- package/dist/runtime/json-validation/json-validation.js +50 -72
- package/dist/runtime/local-scheduler.js +46 -48
- package/dist/runtime/node-execution.js +375 -446
- package/dist/runtime/node-protocol/node-protocol.js +36 -79
- package/dist/runtime/node-state-store.d.ts +1 -1
- package/dist/runtime/node-state-store.js +13 -57
- package/dist/runtime/node-state-tracker.js +46 -54
- package/dist/runtime/open-pull-request/open-pull-request.js +143 -187
- package/dist/runtime/opencode-adapter.js +23 -24
- package/dist/runtime/opencode-agent-name.js +6 -6
- package/dist/runtime/opencode-runtime.js +92 -92
- package/dist/runtime/opencode-server.js +39 -53
- package/dist/runtime/opencode-session-executor.js +315 -334
- package/dist/runtime/parallel-node/parallel-node.js +122 -134
- package/dist/runtime/parallel-worktrees/parallel-worktrees.js +90 -73
- package/dist/runtime/protected-paths/protected-paths.js +70 -71
- package/dist/runtime/remediation/remediation.js +202 -231
- package/dist/runtime/retry.js +8 -10
- package/dist/runtime/run-journal.js +7 -7
- package/dist/runtime/runtime-results.js +54 -69
- package/dist/runtime/scheduled-dependencies.d.ts +1 -1
- package/dist/runtime/scheduled-dependencies.js +59 -74
- package/dist/runtime/scheduler.js +177 -202
- package/dist/runtime/services/agent-node-runtime-service.js +3 -3
- package/dist/runtime/services/backlog-service.js +8 -14
- package/dist/runtime/services/command-executor-service.js +1 -1
- package/dist/runtime/services/config-io-service.js +24 -21
- package/dist/runtime/services/drain-merge-git-service.js +1 -1
- package/dist/runtime/services/file-system-service.js +9 -7
- package/dist/runtime/services/git-porcelain-service.js +6 -6
- package/dist/runtime/services/kubernetes-argo-service.d.ts +10 -2
- package/dist/runtime/services/kubernetes-argo-service.js +90 -84
- package/dist/runtime/services/mcp-gateway-service.js +82 -81
- package/dist/runtime/services/open-pull-request-git-service.js +1 -3
- package/dist/runtime/services/opencode-runtime-server-service.js +10 -12
- package/dist/runtime/services/opencode-sdk-service.js +7 -7
- package/dist/runtime/services/repo-io-service.js +10 -12
- package/dist/runtime/services/run-journal-file-service.js +2 -2
- package/dist/runtime/services/runner-command-io-service.js +48 -52
- package/dist/runtime/services/runner-event-sink-http-service.js +31 -39
- package/dist/runtime/step/step-node.js +15 -15
- package/dist/runtime/workflow-execution.js +55 -57
- package/dist/runtime/workflow-lifecycle.js +81 -101
- package/dist/safe-json.js +16 -16
- package/dist/schedule/backlog-context.js +120 -116
- package/dist/schedule/baseline.js +249 -255
- package/dist/schedule/passes/coverage.js +63 -68
- package/dist/schedule/passes/drain-merge.js +34 -40
- package/dist/schedule/passes/ids.js +15 -17
- package/dist/schedule/passes/models.js +40 -37
- package/dist/schedule/passes/open-pull-request.js +12 -18
- package/dist/schedule/passes/references.js +18 -22
- package/dist/schedule/prompts.js +134 -141
- package/dist/schedule/scheduling-roles.js +8 -14
- package/dist/schema-boundary.d.ts +1 -0
- package/dist/schema-boundary.js +145 -0
- package/dist/serialized-write-queue.js +2 -2
- package/dist/standard-output-schemas.js +61 -59
- package/dist/strings.js +12 -12
- package/dist/task-ref.js +5 -5
- package/dist/tickets/apply-ticket-plan.js +51 -61
- package/dist/tickets/backlog-task-store.d.ts +13 -22
- package/dist/tickets/backlog-task-store.js +80 -94
- package/dist/tickets/completion/complete-ticket.js +53 -59
- package/dist/tickets/ticket-graph-dto.d.ts +24 -47
- package/dist/tickets/ticket-graph-dto.js +40 -40
- package/dist/tickets/ticket-graph.d.ts +7 -1
- package/dist/tickets/ticket-graph.js +36 -50
- package/dist/tickets/ticket-plan-command-args.js +6 -10
- package/dist/tickets/ticket-plan-render.js +10 -16
- package/dist/tickets/ticket-plan.d.ts +31 -40
- package/dist/tickets/ticket-plan.js +97 -77
- package/dist/tickets/ticket-selection.d.ts +1 -1
- package/dist/tickets/ticket-selection.js +37 -52
- package/dist/tickets/ticket-task-index.js +13 -17
- package/dist/tickets/validation-error-format.js +3 -10
- package/dist/token-estimator.js +12 -7
- package/dist/unknown-fields.js +21 -0
- package/dist/workflow-submit-contract.d.ts +9 -9
- package/dist/workflow-submit-contract.js +10 -9
- package/docs/adr-opencode-first-goal-loop-runtime.md +11 -11
- package/docs/config-architecture.md +13 -13
- package/docs/mcp-host-isolation.md +1 -0
- package/docs/moka-orchestrator-design.md +3 -3
- package/docs/operator-guide.md +1 -1
- package/docs/runtime-actor-model.md +18 -18
- package/docs/slash-command-adapter-contract.md +3 -3
- package/package.json +73 -76
- package/dist/config/schema/reference-validation.js +0 -83
package/dist/cli/program.js
CHANGED
|
@@ -13,21 +13,16 @@ import { registerMcpGatewayCommands } from "./mcp-gateway-commands.js";
|
|
|
13
13
|
import { registerPlanCommands } from "./plan-commands.js";
|
|
14
14
|
import { execute } from "./run-service.js";
|
|
15
15
|
import { printMokaSubmitResult, registerRunCommands } from "./run-commands.js";
|
|
16
|
-
import { Effect } from "effect";
|
|
17
16
|
import { readFileSync } from "node:fs";
|
|
17
|
+
import { Effect } from "effect";
|
|
18
18
|
import { Command, Help } from "commander";
|
|
19
19
|
//#region src/cli/program.ts
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
function createBaseProgram() {
|
|
28
|
-
return new Command().name("moka").description("Submit work to Momokaya").version(readPackageVersion()).exitOverride();
|
|
29
|
-
}
|
|
30
|
-
function registerApplicationCommands(program, options) {
|
|
20
|
+
const registerSubmitCommand = (program) => {
|
|
21
|
+
addMokaSubmitOptions(program.command("submit").description("Submit work to Momokaya as an Argo Workflow.").argument("[input...]", "task description, or command argv with --command")).action(async (input, flags) => {
|
|
22
|
+
printMokaSubmitResult(await runMokaSubmitFromCli(input, flags));
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const registerApplicationCommands = (program, options) => {
|
|
31
26
|
const dispatchResolvedRunCommand = registerRunCommands(program, { runCommand: options.runCommand });
|
|
32
27
|
registerRunControlCommands(program);
|
|
33
28
|
registerPlanCommands(program);
|
|
@@ -42,44 +37,41 @@ function registerApplicationCommands(program, options) {
|
|
|
42
37
|
...options.ticketCommand,
|
|
43
38
|
runCommand: options.ticketCommand?.runCommand ?? dispatchResolvedRunCommand
|
|
44
39
|
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
addMokaSubmitOptions(program.command("submit").description("Submit work to Momokaya as an Argo Workflow.").argument("[input...]", "task description, or command argv with --command")).action(async (input, flags) => {
|
|
48
|
-
printMokaSubmitResult(await runMokaSubmitFromCli(input, flags));
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
function registerEntrypointCommands(program, configuredPipeline) {
|
|
52
|
-
configureEntrypointHelp(program, registerConfiguredEntrypointCommands(program, configuredPipeline, runEntrypointCommand));
|
|
53
|
-
}
|
|
54
|
-
function configureEntrypointHelp(program, configuredEntrypointCommands) {
|
|
40
|
+
};
|
|
41
|
+
const configureEntrypointHelp = (program, configuredEntrypointCommands) => {
|
|
55
42
|
if (configuredEntrypointCommands.size === 0) return;
|
|
56
43
|
program.configureHelp({ subcommandTerm(command) {
|
|
57
44
|
if (configuredEntrypointCommands.has(command.name())) return command.name();
|
|
58
45
|
return Help.prototype.subcommandTerm.call(this, command);
|
|
59
46
|
} });
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
47
|
+
};
|
|
48
|
+
const runEntrypointCommand = async (entrypoint, task) => {
|
|
49
|
+
await execute(task, { entrypoint });
|
|
50
|
+
};
|
|
51
|
+
const registerEntrypointCommands = (program, configuredPipeline) => {
|
|
52
|
+
configureEntrypointHelp(program, registerConfiguredEntrypointCommands(program, configuredPipeline, runEntrypointCommand));
|
|
53
|
+
};
|
|
54
|
+
const isPackageVersionRecord = (value) => typeof value === "object" && value !== null && "version" in value && typeof value.version === "string";
|
|
55
|
+
const readPackageVersion = () => {
|
|
56
|
+
const packageJson = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf-8"));
|
|
66
57
|
if (!isPackageVersionRecord(packageJson)) throw new Error("Unable to read @oisincoveney/pipeline package version.");
|
|
67
58
|
return packageJson.version;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
59
|
+
};
|
|
60
|
+
const createBaseProgram = () => new Command().name("moka").description("Submit work to Momokaya").version(readPackageVersion()).exitOverride();
|
|
61
|
+
const loadConfiguredEntrypoints = (cwd) => loadPipelineConfig(cwd, { allowMissingLintFileReferences: true });
|
|
62
|
+
const createCliProgram = (options = {}) => {
|
|
63
|
+
const configuredPipeline = loadConfiguredEntrypoints(process.env.PIPELINE_TARGET_PATH ?? process.cwd());
|
|
64
|
+
const program = createBaseProgram();
|
|
65
|
+
registerApplicationCommands(program, options);
|
|
66
|
+
registerEntrypointCommands(program, configuredPipeline);
|
|
67
|
+
return program;
|
|
68
|
+
};
|
|
69
|
+
const runCliEffect = (argv) => Effect.tryPromise({
|
|
70
|
+
catch: (error) => error,
|
|
71
|
+
try: async () => await createCliProgram().parseAsync(argv, { from: "node" })
|
|
72
|
+
}).pipe(Effect.asVoid);
|
|
73
|
+
const runCli = async (argv) => {
|
|
82
74
|
await createCliProgram().parseAsync(argv, { from: "node" });
|
|
83
|
-
}
|
|
75
|
+
};
|
|
84
76
|
//#endregion
|
|
85
77
|
export { createCliProgram, runCli, runCliEffect };
|
package/dist/cli/run-command.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
//#region src/cli/run-command.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
const localRunDispatchInput = (call, execution) => {
|
|
3
|
+
const { resolution, task } = call;
|
|
4
|
+
return {
|
|
5
|
+
execution,
|
|
6
|
+
runControl: {
|
|
7
|
+
effort: resolution.effort,
|
|
8
|
+
mode: resolution.mode === "read" ? "read-only" : "write",
|
|
9
|
+
target: resolution.target
|
|
10
|
+
},
|
|
11
|
+
task
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
const dispatchLocalMokaRunCommand = async (call, execution, dependencies) => {
|
|
15
|
+
const localDispatchInput = localRunDispatchInput(call, execution);
|
|
16
|
+
if (call.flags.detach === true) {
|
|
17
|
+
await dependencies.runDetached(localDispatchInput);
|
|
5
18
|
return;
|
|
6
19
|
}
|
|
7
|
-
await
|
|
8
|
-
}
|
|
9
|
-
async
|
|
20
|
+
await dependencies.runLocal(localDispatchInput);
|
|
21
|
+
};
|
|
22
|
+
const dispatchResolvedMokaRunCommand = async (call, dependencies) => {
|
|
10
23
|
const { resolution } = call;
|
|
11
24
|
const { execution } = resolution;
|
|
12
25
|
if (execution.kind === "remote-submit") {
|
|
@@ -17,26 +30,13 @@ async function dispatchResolvedMokaRunCommand(call, dependencies) {
|
|
|
17
30
|
return;
|
|
18
31
|
}
|
|
19
32
|
await dispatchLocalMokaRunCommand(call, execution, dependencies);
|
|
20
|
-
}
|
|
21
|
-
async
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
await dependencies.runDetached(localDispatchInput);
|
|
33
|
+
};
|
|
34
|
+
const dispatchMokaRunCommand = async (call, dependencies) => {
|
|
35
|
+
if (dependencies.runCommand) {
|
|
36
|
+
await dependencies.runCommand(call);
|
|
25
37
|
return;
|
|
26
38
|
}
|
|
27
|
-
await dependencies
|
|
28
|
-
}
|
|
29
|
-
function localRunDispatchInput(call, execution) {
|
|
30
|
-
const { resolution, task } = call;
|
|
31
|
-
return {
|
|
32
|
-
execution,
|
|
33
|
-
runControl: {
|
|
34
|
-
effort: resolution.effort,
|
|
35
|
-
mode: resolution.mode === "read" ? "read-only" : "write",
|
|
36
|
-
target: resolution.target
|
|
37
|
-
},
|
|
38
|
-
task
|
|
39
|
-
};
|
|
40
|
-
}
|
|
39
|
+
await dispatchResolvedMokaRunCommand(call, dependencies);
|
|
40
|
+
};
|
|
41
41
|
//#endregion
|
|
42
42
|
export { dispatchMokaRunCommand };
|
package/dist/cli/run-commands.js
CHANGED
|
@@ -4,7 +4,30 @@ import { dispatchMokaRunCommand } from "./run-command.js";
|
|
|
4
4
|
import { execute, runDetachedResolvedTask, runLocalResolvedTask } from "./run-service.js";
|
|
5
5
|
import { Option } from "commander";
|
|
6
6
|
//#region src/cli/run-commands.ts
|
|
7
|
-
|
|
7
|
+
const remoteSubmitFlags = (execution) => ({
|
|
8
|
+
command: execution.command,
|
|
9
|
+
quick: execution.mode === "quick",
|
|
10
|
+
schedule: execution.schedule
|
|
11
|
+
});
|
|
12
|
+
const printMokaSubmitResult = (result) => {
|
|
13
|
+
console.log(`Workflow submitted: ${result.workflowName} in ${result.namespace}`);
|
|
14
|
+
if (result.workflowUid !== void 0 && result.workflowUid !== "") console.log(`Workflow UID: ${result.workflowUid}`);
|
|
15
|
+
};
|
|
16
|
+
const createResolvedRunCommand = (options) => async (call) => {
|
|
17
|
+
await dispatchMokaRunCommand(call, {
|
|
18
|
+
runCommand: options.runCommand,
|
|
19
|
+
runDetached: async ({ execution, runControl, task: resolvedTask }) => {
|
|
20
|
+
await runDetachedResolvedTask(resolvedTask, execution, runControl);
|
|
21
|
+
},
|
|
22
|
+
runLocal: async ({ execution, runControl, task: resolvedTask }) => {
|
|
23
|
+
await runLocalResolvedTask(resolvedTask, execution, runControl);
|
|
24
|
+
},
|
|
25
|
+
runRemoteSubmit: async ({ descriptionParts: parts, execution }) => {
|
|
26
|
+
printMokaSubmitResult(await runMokaSubmitFromCli(parts, remoteSubmitFlags(execution)));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const registerRunCommands = (program, options = {}) => {
|
|
8
31
|
const dispatchResolvedRunCommand = createResolvedRunCommand(options);
|
|
9
32
|
program.command("run").description("Primary command: run a workflow from package-owned @oisincoveney/pipeline config").argument("<description...>", "task description").option("--command", "treat input after -- as explicit argv for remote submission").option("--entrypoint <entrypoint>", "entrypoint id from package config").option("--detach", "start a supervised controller process in the background").addOption(new Option("--effort <effort>", "run effort").choices([...MOKA_RUN_EFFORTS]).default("normal")).option("--read-only", "run the read-only inspect workflow").option("--schedule <schedule>", "approved schedule YAML to execute").addOption(new Option("--target <target>", "execution target").choices([...MOKA_RUN_TARGETS]).default("local")).option("--workflow <workflow>", "workflow id from package config").action(async (descriptionParts, flags) => {
|
|
10
33
|
const task = descriptionParts.join(" ");
|
|
@@ -30,29 +53,6 @@ function registerRunCommands(program, options = {}) {
|
|
|
30
53
|
});
|
|
31
54
|
});
|
|
32
55
|
return dispatchResolvedRunCommand;
|
|
33
|
-
}
|
|
34
|
-
function createResolvedRunCommand(options) {
|
|
35
|
-
return async (call) => {
|
|
36
|
-
await dispatchMokaRunCommand(call, {
|
|
37
|
-
runCommand: options.runCommand,
|
|
38
|
-
runDetached: ({ execution, runControl, task: resolvedTask }) => runDetachedResolvedTask(resolvedTask, execution, runControl),
|
|
39
|
-
runLocal: ({ execution, runControl, task: resolvedTask }) => runLocalResolvedTask(resolvedTask, execution, runControl),
|
|
40
|
-
runRemoteSubmit: async ({ descriptionParts: parts, execution }) => {
|
|
41
|
-
printMokaSubmitResult(await runMokaSubmitFromCli(parts, remoteSubmitFlags(execution)));
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function remoteSubmitFlags(execution) {
|
|
47
|
-
return {
|
|
48
|
-
command: execution.command,
|
|
49
|
-
quick: execution.mode === "quick",
|
|
50
|
-
schedule: execution.schedule
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function printMokaSubmitResult(result) {
|
|
54
|
-
console.log(`Workflow submitted: ${result.workflowName} in ${result.namespace}`);
|
|
55
|
-
if (result.workflowUid) console.log(`Workflow UID: ${result.workflowUid}`);
|
|
56
|
-
}
|
|
56
|
+
};
|
|
57
57
|
//#endregion
|
|
58
58
|
export { printMokaSubmitResult, registerRunCommands };
|
package/dist/cli/run-resolver.js
CHANGED
|
@@ -5,45 +5,30 @@ const MOKA_RUN_EFFORTS = [
|
|
|
5
5
|
"thorough"
|
|
6
6
|
];
|
|
7
7
|
const MOKA_RUN_TARGETS = ["local", "remote"];
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
target
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
function assertFlagTargetCompatibility(flags, target) {
|
|
22
|
-
if (flags.command && target !== "remote") throw new Error("--command requires --target remote");
|
|
23
|
-
if (flags.detach && target !== "local") throw new Error("--detach requires --target local");
|
|
24
|
-
}
|
|
25
|
-
function resolveRemoteSubmit(flags, effort) {
|
|
26
|
-
return {
|
|
27
|
-
command: flags.command,
|
|
28
|
-
kind: "remote-submit",
|
|
29
|
-
mode: effort === "quick" ? "quick" : "full",
|
|
30
|
-
schedule: flags.schedule
|
|
31
|
-
};
|
|
32
|
-
}
|
|
8
|
+
const assertFlagTargetCompatibility = (flags, target) => {
|
|
9
|
+
if (flags.command === true && target !== "remote") throw new Error("--command requires --target remote");
|
|
10
|
+
if (flags.detach === true && target !== "local") throw new Error("--detach requires --target local");
|
|
11
|
+
};
|
|
12
|
+
const resolveRemoteSubmit = (flags, effort) => ({
|
|
13
|
+
command: flags.command === true,
|
|
14
|
+
kind: "remote-submit",
|
|
15
|
+
mode: effort === "quick" ? "quick" : "full",
|
|
16
|
+
schedule: flags.schedule
|
|
17
|
+
});
|
|
33
18
|
const LOCAL_RUNTIME_RESOLVERS = [
|
|
34
|
-
(flags) => flags.schedule ? {
|
|
19
|
+
(flags) => flags.schedule !== void 0 && flags.schedule !== "" ? {
|
|
35
20
|
kind: "local-runtime",
|
|
36
21
|
schedule: flags.schedule
|
|
37
22
|
} : void 0,
|
|
38
|
-
(flags) => flags.workflow ? {
|
|
23
|
+
(flags) => flags.workflow !== void 0 && flags.workflow !== "" ? {
|
|
39
24
|
kind: "local-runtime",
|
|
40
25
|
workflow: flags.workflow
|
|
41
26
|
} : void 0,
|
|
42
|
-
(flags) => flags.readOnly ? {
|
|
27
|
+
(flags) => flags.readOnly === true ? {
|
|
43
28
|
kind: "local-runtime",
|
|
44
29
|
workflow: "inspect"
|
|
45
30
|
} : void 0,
|
|
46
|
-
(flags) => flags.entrypoint ? {
|
|
31
|
+
(flags) => flags.entrypoint !== void 0 && flags.entrypoint !== "" ? {
|
|
47
32
|
entrypoint: flags.entrypoint,
|
|
48
33
|
kind: "local-runtime"
|
|
49
34
|
} : void 0,
|
|
@@ -56,12 +41,25 @@ const LOCAL_RUNTIME_RESOLVERS = [
|
|
|
56
41
|
kind: "local-runtime"
|
|
57
42
|
} : void 0
|
|
58
43
|
];
|
|
59
|
-
|
|
44
|
+
const resolveLocalRuntime = (flags, effort) => {
|
|
60
45
|
for (const resolve of LOCAL_RUNTIME_RESOLVERS) {
|
|
61
46
|
const resolved = resolve(flags, effort);
|
|
62
|
-
if (resolved) return resolved;
|
|
47
|
+
if (resolved !== void 0) return resolved;
|
|
63
48
|
}
|
|
64
49
|
return { kind: "local-runtime" };
|
|
65
|
-
}
|
|
50
|
+
};
|
|
51
|
+
const resolveMokaRun = (input) => {
|
|
52
|
+
const flags = input.flags ?? {};
|
|
53
|
+
const effort = flags.effort ?? "normal";
|
|
54
|
+
const target = flags.target ?? "local";
|
|
55
|
+
const mode = flags.readOnly === true ? "read" : "write";
|
|
56
|
+
assertFlagTargetCompatibility(flags, target);
|
|
57
|
+
return {
|
|
58
|
+
effort,
|
|
59
|
+
execution: target === "remote" ? resolveRemoteSubmit(flags, effort) : resolveLocalRuntime(flags, effort),
|
|
60
|
+
mode,
|
|
61
|
+
target
|
|
62
|
+
};
|
|
63
|
+
};
|
|
66
64
|
//#endregion
|
|
67
65
|
export { MOKA_RUN_EFFORTS, MOKA_RUN_TARGETS, resolveMokaRun };
|
|
@@ -23,7 +23,7 @@ interface RunControlOptions {
|
|
|
23
23
|
* Config-driven `execute` entrypoint. Package-owned defaults are the source of
|
|
24
24
|
* truth; repo-local pipeline files are ignored by runtime loading.
|
|
25
25
|
*/
|
|
26
|
-
declare
|
|
27
|
-
declare
|
|
26
|
+
declare const execute: (description: string, options?: ExecuteOptions) => Promise<void>;
|
|
27
|
+
declare const quick: (description: string, options?: Omit<ExecuteOptions, "entrypoint">) => Promise<void>;
|
|
28
28
|
//#endregion
|
|
29
29
|
export { ExecuteOptions, RunControlOptions, RunStoreMode, execute, quick };
|