tubeless 0.1.0
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/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/abort.d.ts +12 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +49 -0
- package/dist/abort.js.map +1 -0
- package/dist/batch.d.ts +22 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +73 -0
- package/dist/batch.js.map +1 -0
- package/dist/checkpoint.d.ts +33 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +71 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/child-execution.d.ts +30 -0
- package/dist/child-execution.d.ts.map +1 -0
- package/dist/child-execution.js +270 -0
- package/dist/child-execution.js.map +1 -0
- package/dist/cli-command.d.ts +29 -0
- package/dist/cli-command.d.ts.map +1 -0
- package/dist/cli-command.js +314 -0
- package/dist/cli-command.js.map +1 -0
- package/dist/cli-parser.d.ts +28 -0
- package/dist/cli-parser.d.ts.map +1 -0
- package/dist/cli-parser.js +557 -0
- package/dist/cli-parser.js.map +1 -0
- package/dist/cli-pipeline-command.d.ts +84 -0
- package/dist/cli-pipeline-command.d.ts.map +1 -0
- package/dist/cli-pipeline-command.js +185 -0
- package/dist/cli-pipeline-command.js.map +1 -0
- package/dist/cli-types.d.ts +220 -0
- package/dist/cli-types.d.ts.map +1 -0
- package/dist/cli-types.js +19 -0
- package/dist/cli-types.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +8 -0
- package/dist/env.js.map +1 -0
- package/dist/file-utils.d.ts +4 -0
- package/dist/file-utils.d.ts.map +1 -0
- package/dist/file-utils.js +35 -0
- package/dist/file-utils.js.map +1 -0
- package/dist/interactive-reporter.d.ts +38 -0
- package/dist/interactive-reporter.d.ts.map +1 -0
- package/dist/interactive-reporter.js +308 -0
- package/dist/interactive-reporter.js.map +1 -0
- package/dist/lifecycle.d.ts +17 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +77 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/live-ticker.d.ts +21 -0
- package/dist/live-ticker.d.ts.map +1 -0
- package/dist/live-ticker.js +377 -0
- package/dist/live-ticker.js.map +1 -0
- package/dist/mapped-child-progress.d.ts +109 -0
- package/dist/mapped-child-progress.d.ts.map +1 -0
- package/dist/mapped-child-progress.js +133 -0
- package/dist/mapped-child-progress.js.map +1 -0
- package/dist/node.d.ts +5 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +5 -0
- package/dist/node.js.map +1 -0
- package/dist/paths.d.ts +9 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +19 -0
- package/dist/paths.js.map +1 -0
- package/dist/pipeline-command-marker.d.ts +5 -0
- package/dist/pipeline-command-marker.d.ts.map +1 -0
- package/dist/pipeline-command-marker.js +21 -0
- package/dist/pipeline-command-marker.js.map +1 -0
- package/dist/pipeline-diagnostics.d.ts +4 -0
- package/dist/pipeline-diagnostics.d.ts.map +1 -0
- package/dist/pipeline-diagnostics.js +17 -0
- package/dist/pipeline-diagnostics.js.map +1 -0
- package/dist/pipeline-module.d.ts +62 -0
- package/dist/pipeline-module.d.ts.map +1 -0
- package/dist/pipeline-module.js +157 -0
- package/dist/pipeline-module.js.map +1 -0
- package/dist/pipeline.d.ts +606 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +1444 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/progress.d.ts +4 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +8 -0
- package/dist/progress.js.map +1 -0
- package/dist/prompt-select.d.ts +81 -0
- package/dist/prompt-select.d.ts.map +1 -0
- package/dist/prompt-select.js +197 -0
- package/dist/prompt-select.js.map +1 -0
- package/dist/rate-limit.d.ts +7 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +23 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/render.d.ts +21 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +60 -0
- package/dist/render.js.map +1 -0
- package/dist/reporter-entry.d.ts +3 -0
- package/dist/reporter-entry.d.ts.map +1 -0
- package/dist/reporter-entry.js +3 -0
- package/dist/reporter-entry.js.map +1 -0
- package/dist/reporter.d.ts +50 -0
- package/dist/reporter.d.ts.map +1 -0
- package/dist/reporter.js +167 -0
- package/dist/reporter.js.map +1 -0
- package/dist/retry.d.ts +28 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +59 -0
- package/dist/retry.js.map +1 -0
- package/dist/run-store-sqlite.d.ts +12 -0
- package/dist/run-store-sqlite.d.ts.map +1 -0
- package/dist/run-store-sqlite.js +187 -0
- package/dist/run-store-sqlite.js.map +1 -0
- package/dist/run-store-ui-http.d.ts +5 -0
- package/dist/run-store-ui-http.d.ts.map +1 -0
- package/dist/run-store-ui-http.js +19 -0
- package/dist/run-store-ui-http.js.map +1 -0
- package/dist/run-store-ui-page.d.ts +2 -0
- package/dist/run-store-ui-page.d.ts.map +1 -0
- package/dist/run-store-ui-page.js +759 -0
- package/dist/run-store-ui-page.js.map +1 -0
- package/dist/run-store-ui-protocol.d.ts +28 -0
- package/dist/run-store-ui-protocol.d.ts.map +1 -0
- package/dist/run-store-ui-protocol.js +84 -0
- package/dist/run-store-ui-protocol.js.map +1 -0
- package/dist/run-store-ui-state.d.ts +21 -0
- package/dist/run-store-ui-state.d.ts.map +1 -0
- package/dist/run-store-ui-state.js +65 -0
- package/dist/run-store-ui-state.js.map +1 -0
- package/dist/run-store-ui.d.ts +25 -0
- package/dist/run-store-ui.d.ts.map +1 -0
- package/dist/run-store-ui.js +217 -0
- package/dist/run-store-ui.js.map +1 -0
- package/dist/run-store.d.ts +109 -0
- package/dist/run-store.d.ts.map +1 -0
- package/dist/run-store.js +345 -0
- package/dist/run-store.js.map +1 -0
- package/dist/testing.d.ts +40 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +83 -0
- package/dist/testing.js.map +1 -0
- package/dist/tracing-internal.d.ts +21 -0
- package/dist/tracing-internal.d.ts.map +1 -0
- package/dist/tracing-internal.js +206 -0
- package/dist/tracing-internal.js.map +1 -0
- package/dist/tracing-json.d.ts +12 -0
- package/dist/tracing-json.d.ts.map +1 -0
- package/dist/tracing-json.js +8 -0
- package/dist/tracing-json.js.map +1 -0
- package/dist/tracing-otel.d.ts +36 -0
- package/dist/tracing-otel.d.ts.map +1 -0
- package/dist/tracing-otel.js +60 -0
- package/dist/tracing-otel.js.map +1 -0
- package/dist/tracing.d.ts +48 -0
- package/dist/tracing.d.ts.map +1 -0
- package/dist/tracing.js +2 -0
- package/dist/tracing.js.map +1 -0
- package/dist/workbench-bin.d.ts +3 -0
- package/dist/workbench-bin.d.ts.map +1 -0
- package/dist/workbench-bin.js +8 -0
- package/dist/workbench-bin.js.map +1 -0
- package/dist/workbench-graph.d.ts +3 -0
- package/dist/workbench-graph.d.ts.map +1 -0
- package/dist/workbench-graph.js +64 -0
- package/dist/workbench-graph.js.map +1 -0
- package/dist/workbench-inspect.d.ts +3 -0
- package/dist/workbench-inspect.d.ts.map +1 -0
- package/dist/workbench-inspect.js +65 -0
- package/dist/workbench-inspect.js.map +1 -0
- package/dist/workbench-plan.d.ts +3 -0
- package/dist/workbench-plan.d.ts.map +1 -0
- package/dist/workbench-plan.js +72 -0
- package/dist/workbench-plan.js.map +1 -0
- package/dist/workbench-run.d.ts +13 -0
- package/dist/workbench-run.d.ts.map +1 -0
- package/dist/workbench-run.js +115 -0
- package/dist/workbench-run.js.map +1 -0
- package/dist/workbench-shared.d.ts +67 -0
- package/dist/workbench-shared.d.ts.map +1 -0
- package/dist/workbench-shared.js +163 -0
- package/dist/workbench-shared.js.map +1 -0
- package/dist/workbench-studio.d.ts +26 -0
- package/dist/workbench-studio.d.ts.map +1 -0
- package/dist/workbench-studio.js +57 -0
- package/dist/workbench-studio.js.map +1 -0
- package/dist/workbench-ui.d.ts +3 -0
- package/dist/workbench-ui.d.ts.map +1 -0
- package/dist/workbench-ui.js +262 -0
- package/dist/workbench-ui.js.map +1 -0
- package/dist/workbench.d.ts +5 -0
- package/dist/workbench.d.ts.map +1 -0
- package/dist/workbench.js +43 -0
- package/dist/workbench.js.map +1 -0
- package/docs/README.md +31 -0
- package/docs/agent-guide.md +168 -0
- package/docs/api-reference.md +269 -0
- package/docs/api-report.json +298 -0
- package/docs/child-pipeline-composition.md +185 -0
- package/docs/cli.md +118 -0
- package/docs/concepts.md +502 -0
- package/docs/getting-started.md +162 -0
- package/docs/llms.txt +62 -0
- package/docs/recipes.md +51 -0
- package/docs/studio.md +86 -0
- package/examples/best-effort.ts +42 -0
- package/examples/cancellation-and-testing.ts +45 -0
- package/examples/child-pipeline.ts +51 -0
- package/examples/cli-job.ts +86 -0
- package/examples/conditional-step.ts +41 -0
- package/examples/fan-out-progress.ts +53 -0
- package/examples/local-observability.ts +80 -0
- package/examples/publish-with-gates.ts +56 -0
- package/examples/rendering.ts +34 -0
- package/examples/resumable-enrichment.ts +75 -0
- package/examples/tracing.ts +35 -0
- package/examples/tsconfig.json +15 -0
- package/examples/typed-import.ts +54 -0
- package/examples/validated-boundaries.ts +75 -0
- package/package.json +156 -0
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declares a set of workspace-relative default paths as one factory instead of one
|
|
3
|
+
* `function defaultXDir(cwd) { return path.join(cwd, "...") }` per path. The returned
|
|
4
|
+
* function re-resolves against `cwd` on every call — nothing is computed or cached at
|
|
5
|
+
* module-load time, so a frozen-`process.cwd()` bug cannot be reintroduced by
|
|
6
|
+
* construction.
|
|
7
|
+
*/
|
|
8
|
+
export declare function definePaths<T extends Record<string, string>>(relativePaths: T): (cwd: string) => T;
|
|
9
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1D,aAAa,EAAE,CAAC,GACf,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,CAWpB"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
/**
|
|
3
|
+
* Declares a set of workspace-relative default paths as one factory instead of one
|
|
4
|
+
* `function defaultXDir(cwd) { return path.join(cwd, "...") }` per path. The returned
|
|
5
|
+
* function re-resolves against `cwd` on every call — nothing is computed or cached at
|
|
6
|
+
* module-load time, so a frozen-`process.cwd()` bug cannot be reintroduced by
|
|
7
|
+
* construction.
|
|
8
|
+
*/
|
|
9
|
+
export function definePaths(relativePaths) {
|
|
10
|
+
return (cwd) =>
|
|
11
|
+
// SAFETY: Object.entries(relativePaths) yields exactly T's keys, and every
|
|
12
|
+
// value is path.join(cwd, relativePath), a string — so the result satisfies
|
|
13
|
+
// T's Record<string, string> constraint.
|
|
14
|
+
Object.fromEntries(Object.entries(relativePaths).map(([key, relativePath]) => [
|
|
15
|
+
key,
|
|
16
|
+
path.join(cwd, relativePath),
|
|
17
|
+
]));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,aAAgB;IAEhB,OAAO,CAAC,GAAW,EAAE,EAAE;IACrB,2EAA2E;IAC3E,4EAA4E;IAC5E,yCAAyC;IACzC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;QACzD,GAAG;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;KAC7B,CAAC,CACE,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Mark only commands created by definePipelineCommand as workbench-executable. */
|
|
2
|
+
export declare function markPipelineCommand<T extends object>(command: T): T;
|
|
3
|
+
/** Recognize a pipeline command across duplicate package instances in a loaded module. */
|
|
4
|
+
export declare function isMarkedPipelineCommand(value: unknown): boolean;
|
|
5
|
+
//# sourceMappingURL=pipeline-command-marker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-command-marker.d.ts","sourceRoot":"","sources":["../src/pipeline-command-marker.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAQnE;AAED,0FAA0F;AAC1F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS/D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const PIPELINE_COMMAND_MARKER = Symbol.for("tubeless/pipeline-command");
|
|
2
|
+
/** Mark only commands created by definePipelineCommand as workbench-executable. */
|
|
3
|
+
export function markPipelineCommand(command) {
|
|
4
|
+
Object.defineProperty(command, PIPELINE_COMMAND_MARKER, {
|
|
5
|
+
configurable: false,
|
|
6
|
+
enumerable: false,
|
|
7
|
+
value: true,
|
|
8
|
+
writable: false,
|
|
9
|
+
});
|
|
10
|
+
return command;
|
|
11
|
+
}
|
|
12
|
+
/** Recognize a pipeline command across duplicate package instances in a loaded module. */
|
|
13
|
+
export function isMarkedPipelineCommand(value) {
|
|
14
|
+
return ((typeof value === "object" || typeof value === "function") &&
|
|
15
|
+
value !== null &&
|
|
16
|
+
// SAFETY: value is a non-null object/function here, so symbol-keyed property
|
|
17
|
+
// access never throws. The marker is only ever written as the literal `true`
|
|
18
|
+
// by markPipelineCommand, so a strict `=== true` comparison is reliable.
|
|
19
|
+
value[PIPELINE_COMMAND_MARKER] === true);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=pipeline-command-marker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-command-marker.js","sourceRoot":"","sources":["../src/pipeline-command-marker.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAExE,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAmB,OAAU;IAC9D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,uBAAuB,EAAE;QACtD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,CACL,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;QAC1D,KAAK,KAAK,IAAI;QACd,6EAA6E;QAC7E,6EAA6E;QAC7E,yEAAyE;QACxE,KAAiD,CAAC,uBAAuB,CAAC,KAAK,IAAI,CACrF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-diagnostics.d.ts","sourceRoot":"","sources":["../src/pipeline-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,eAAe,CAAC;AAUvE,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAQhE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
function deepestPipelineCause(cause) {
|
|
2
|
+
let current = cause;
|
|
3
|
+
while (current?.cause)
|
|
4
|
+
current = current.cause;
|
|
5
|
+
return current;
|
|
6
|
+
}
|
|
7
|
+
/** One-line human format used by kernel exceptions and shared renderers. */
|
|
8
|
+
export function formatPipelineError(error) {
|
|
9
|
+
const step = error.stepId ? ` at step ${error.stepId}` : "";
|
|
10
|
+
const sourceCode = error.sourceCode ? ` (${error.sourceCode})` : "";
|
|
11
|
+
const deepestCause = deepestPipelineCause(error.cause);
|
|
12
|
+
const cause = deepestCause
|
|
13
|
+
? `; caused by${deepestCause.sourceCode ? ` ${deepestCause.sourceCode}` : ""}: ${deepestCause.message}`
|
|
14
|
+
: "";
|
|
15
|
+
return `${error.phase}${step} [${error.code}]${sourceCode}: ${error.message}${cause}`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=pipeline-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-diagnostics.js","sourceRoot":"","sources":["../src/pipeline-diagnostics.ts"],"names":[],"mappings":"AAEA,SAAS,oBAAoB,CAC3B,KAAqC;IAErC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,OAAO,EAAE,KAAK;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAAC,KAAoB;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,YAAY;QACxB,CAAC,CAAC,cAAc,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,OAAO,EAAE;QACvG,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,UAAU,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { CliCommandDescriptor, CliContext, PipelineCommandPlanInput } from "./cli.js";
|
|
2
|
+
import type { PipelineMermaidOptions, PipelinePlan, PipelineRunControls } from "./pipeline.js";
|
|
3
|
+
/** Runtime surface required by the workbench's non-executing pipeline commands. */
|
|
4
|
+
export interface WorkbenchPipeline {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly stepIds: readonly string[];
|
|
7
|
+
readonly targetIds: readonly string[];
|
|
8
|
+
plan(controls?: PipelineRunControls): PipelinePlan;
|
|
9
|
+
toMermaid(options?: PipelineMermaidOptions): string;
|
|
10
|
+
}
|
|
11
|
+
/** Runtime surface exposed only by commands created with definePipelineCommand. */
|
|
12
|
+
export type WorkbenchPipelineCommandParseResult = {
|
|
13
|
+
kind: "values";
|
|
14
|
+
values: Record<string, unknown>;
|
|
15
|
+
} | {
|
|
16
|
+
kind: "help";
|
|
17
|
+
helpText: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: "error";
|
|
20
|
+
errors: readonly string[];
|
|
21
|
+
helpText: string;
|
|
22
|
+
};
|
|
23
|
+
export interface WorkbenchPipelineCommand {
|
|
24
|
+
readonly descriptor: CliCommandDescriptor;
|
|
25
|
+
parse(argv?: readonly string[], context?: Partial<CliContext>): WorkbenchPipelineCommandParseResult;
|
|
26
|
+
plan(input?: PipelineCommandPlanInput): PipelinePlan;
|
|
27
|
+
run(argv?: readonly string[], context?: Partial<CliContext>): Promise<unknown>;
|
|
28
|
+
}
|
|
29
|
+
/** Runtime surface accepted by `tubeless plan`: a pipeline or a marked command. */
|
|
30
|
+
export type WorkbenchPlanSource = {
|
|
31
|
+
kind: "command";
|
|
32
|
+
command: WorkbenchPipelineCommand;
|
|
33
|
+
} | {
|
|
34
|
+
kind: "pipeline";
|
|
35
|
+
pipeline: WorkbenchPipeline;
|
|
36
|
+
};
|
|
37
|
+
/** Select one real pipeline from a loaded module, deduplicating export aliases. */
|
|
38
|
+
export declare function selectPipelineExport(moduleExports: Record<string, unknown>, exportName?: string): WorkbenchPipeline;
|
|
39
|
+
/** Select one definePipelineCommand export, deduplicating export aliases. */
|
|
40
|
+
export declare function selectPipelineCommandExport(moduleExports: Record<string, unknown>, exportName?: string): WorkbenchPipelineCommand;
|
|
41
|
+
/** Select one command and retain the stable name of the export that selected it. */
|
|
42
|
+
export declare function selectPipelineCommandExportWithName(moduleExports: Record<string, unknown>, exportName?: string): {
|
|
43
|
+
command: WorkbenchPipelineCommand;
|
|
44
|
+
exportName: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Select a plan source. A marked command wins when the module also exports a
|
|
48
|
+
* pipeline. Named exports still have to be a pipeline or a marked command.
|
|
49
|
+
*/
|
|
50
|
+
export declare function selectPlanSourceExport(moduleExports: Record<string, unknown>, exportName?: string): WorkbenchPlanSource;
|
|
51
|
+
/** Load and select a pipeline from an absolute module path. */
|
|
52
|
+
export declare function loadPipelineModule(filePath: string, exportName?: string): Promise<WorkbenchPipeline>;
|
|
53
|
+
/** Load and select a pipeline command from an absolute module path. */
|
|
54
|
+
export declare function loadPipelineCommandModule(filePath: string, exportName?: string): Promise<WorkbenchPipelineCommand>;
|
|
55
|
+
/** Load a command and its export name for a stable external registration identity. */
|
|
56
|
+
export declare function loadPipelineCommandModuleWithName(filePath: string, exportName?: string): Promise<{
|
|
57
|
+
command: WorkbenchPipelineCommand;
|
|
58
|
+
exportName: string;
|
|
59
|
+
}>;
|
|
60
|
+
/** Load a marked command when present, otherwise a pipeline, for `tubeless plan`. */
|
|
61
|
+
export declare function loadPlanSourceModule(filePath: string, exportName?: string): Promise<WorkbenchPlanSource>;
|
|
62
|
+
//# sourceMappingURL=pipeline-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-module.d.ts","sourceRoot":"","sources":["../src/pipeline-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { pathToFileURL } from "node:url";
|
|
2
|
+
import { isMarkedPipelineCommand } from "./pipeline-command-marker.js";
|
|
3
|
+
function isWorkbenchPipeline(value) {
|
|
4
|
+
return ((typeof value === "object" || typeof value === "function") &&
|
|
5
|
+
value !== null &&
|
|
6
|
+
"id" in value &&
|
|
7
|
+
typeof value.id === "string" &&
|
|
8
|
+
"stepIds" in value &&
|
|
9
|
+
Array.isArray(value.stepIds) &&
|
|
10
|
+
"targetIds" in value &&
|
|
11
|
+
Array.isArray(value.targetIds) &&
|
|
12
|
+
"plan" in value &&
|
|
13
|
+
typeof value.plan === "function" &&
|
|
14
|
+
"toMermaid" in value &&
|
|
15
|
+
typeof value.toMermaid === "function");
|
|
16
|
+
}
|
|
17
|
+
function isWorkbenchPipelineCommand(value) {
|
|
18
|
+
if (!isMarkedPipelineCommand(value))
|
|
19
|
+
return false;
|
|
20
|
+
// SAFETY: isMarkedPipelineCommand established value is a non-null object or
|
|
21
|
+
// function, so this single cast only widens to a shape we probe with `in`.
|
|
22
|
+
const candidate = value;
|
|
23
|
+
return ("descriptor" in candidate &&
|
|
24
|
+
typeof candidate.descriptor === "object" &&
|
|
25
|
+
candidate.descriptor !== null &&
|
|
26
|
+
"plan" in candidate &&
|
|
27
|
+
typeof candidate.plan === "function" &&
|
|
28
|
+
"parse" in candidate &&
|
|
29
|
+
typeof candidate.parse === "function" &&
|
|
30
|
+
"run" in candidate &&
|
|
31
|
+
typeof candidate.run === "function");
|
|
32
|
+
}
|
|
33
|
+
function selectUniqueExport(moduleExports, exportName, predicate, label) {
|
|
34
|
+
if (exportName !== undefined) {
|
|
35
|
+
if (!Object.prototype.hasOwnProperty.call(moduleExports, exportName)) {
|
|
36
|
+
throw new Error(`Module does not export ${JSON.stringify(exportName)}.`);
|
|
37
|
+
}
|
|
38
|
+
const selected = moduleExports[exportName];
|
|
39
|
+
if (!predicate(selected)) {
|
|
40
|
+
throw new Error(`Export ${JSON.stringify(exportName)} is not an tubeless ${label}.`);
|
|
41
|
+
}
|
|
42
|
+
return selected;
|
|
43
|
+
}
|
|
44
|
+
const candidates = Object.entries(moduleExports).filter((entry) => predicate(entry[1]));
|
|
45
|
+
const unique = candidates.filter(([, value], index) => candidates.findIndex(([, other]) => other === value) === index);
|
|
46
|
+
if (unique.length === 0) {
|
|
47
|
+
throw new Error(`Module does not export an tubeless ${label}.`);
|
|
48
|
+
}
|
|
49
|
+
if (unique.length > 1) {
|
|
50
|
+
throw new Error(`Module exports multiple ${label}s (${unique.map(([name]) => name).join(", ")}); pass --export <name>.`);
|
|
51
|
+
}
|
|
52
|
+
return unique[0][1];
|
|
53
|
+
}
|
|
54
|
+
/** Select one real pipeline from a loaded module, deduplicating export aliases. */
|
|
55
|
+
export function selectPipelineExport(moduleExports, exportName) {
|
|
56
|
+
return selectUniqueExport(moduleExports, exportName, isWorkbenchPipeline, "pipeline");
|
|
57
|
+
}
|
|
58
|
+
/** Select one definePipelineCommand export, deduplicating export aliases. */
|
|
59
|
+
export function selectPipelineCommandExport(moduleExports, exportName) {
|
|
60
|
+
return selectPipelineCommandExportWithName(moduleExports, exportName).command;
|
|
61
|
+
}
|
|
62
|
+
/** Select one command and retain the stable name of the export that selected it. */
|
|
63
|
+
export function selectPipelineCommandExportWithName(moduleExports, exportName) {
|
|
64
|
+
if (exportName !== undefined) {
|
|
65
|
+
if (!Object.prototype.hasOwnProperty.call(moduleExports, exportName)) {
|
|
66
|
+
throw new Error(`Module does not export ${JSON.stringify(exportName)}.`);
|
|
67
|
+
}
|
|
68
|
+
const selected = moduleExports[exportName];
|
|
69
|
+
if (!isWorkbenchPipelineCommand(selected)) {
|
|
70
|
+
throw new Error(`Export ${JSON.stringify(exportName)} is not an tubeless pipeline command.`);
|
|
71
|
+
}
|
|
72
|
+
return { command: selected, exportName };
|
|
73
|
+
}
|
|
74
|
+
const candidates = uniqueNamedExports(moduleExports, isWorkbenchPipelineCommand);
|
|
75
|
+
if (candidates.length === 0) {
|
|
76
|
+
throw new Error("Module does not export an tubeless pipeline command.");
|
|
77
|
+
}
|
|
78
|
+
if (candidates.length > 1) {
|
|
79
|
+
throw new Error(`Module exports multiple pipeline commands (${candidates.map(([name]) => name).join(", ")}); pass --export <name>.`);
|
|
80
|
+
}
|
|
81
|
+
return { command: candidates[0][1], exportName: candidates[0][0] };
|
|
82
|
+
}
|
|
83
|
+
function uniqueNamedExports(moduleExports, predicate) {
|
|
84
|
+
const candidates = Object.entries(moduleExports).filter((entry) => predicate(entry[1]));
|
|
85
|
+
return candidates.filter(([, value], index) => candidates.findIndex(([, other]) => other === value) === index);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Select a plan source. A marked command wins when the module also exports a
|
|
89
|
+
* pipeline. Named exports still have to be a pipeline or a marked command.
|
|
90
|
+
*/
|
|
91
|
+
export function selectPlanSourceExport(moduleExports, exportName) {
|
|
92
|
+
if (exportName !== undefined) {
|
|
93
|
+
if (!Object.prototype.hasOwnProperty.call(moduleExports, exportName)) {
|
|
94
|
+
throw new Error(`Module does not export ${JSON.stringify(exportName)}.`);
|
|
95
|
+
}
|
|
96
|
+
const selected = moduleExports[exportName];
|
|
97
|
+
if (isWorkbenchPipelineCommand(selected)) {
|
|
98
|
+
return { kind: "command", command: selected };
|
|
99
|
+
}
|
|
100
|
+
if (isWorkbenchPipeline(selected)) {
|
|
101
|
+
return { kind: "pipeline", pipeline: selected };
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`Export ${JSON.stringify(exportName)} is not an tubeless pipeline or pipeline command.`);
|
|
104
|
+
}
|
|
105
|
+
const commands = uniqueNamedExports(moduleExports, isWorkbenchPipelineCommand);
|
|
106
|
+
if (commands.length === 1) {
|
|
107
|
+
return { kind: "command", command: commands[0][1] };
|
|
108
|
+
}
|
|
109
|
+
if (commands.length > 1) {
|
|
110
|
+
throw new Error(`Module exports multiple pipeline commands (${commands.map(([name]) => name).join(", ")}); pass --export <name>.`);
|
|
111
|
+
}
|
|
112
|
+
const pipelines = uniqueNamedExports(moduleExports, isWorkbenchPipeline);
|
|
113
|
+
if (pipelines.length === 1) {
|
|
114
|
+
return { kind: "pipeline", pipeline: pipelines[0][1] };
|
|
115
|
+
}
|
|
116
|
+
if (pipelines.length > 1) {
|
|
117
|
+
throw new Error(`Module exports multiple pipelines (${pipelines.map(([name]) => name).join(", ")}); pass --export <name>.`);
|
|
118
|
+
}
|
|
119
|
+
throw new Error("Module does not export an tubeless pipeline or pipeline command.");
|
|
120
|
+
}
|
|
121
|
+
/** Load and select a pipeline from an absolute module path. */
|
|
122
|
+
export async function loadPipelineModule(filePath, exportName) {
|
|
123
|
+
// SAFETY: a dynamic import of a JS/TS module always yields a module namespace
|
|
124
|
+
// object whose exports are string-keyed values, so the cast to
|
|
125
|
+
// Record<string, unknown> documents the import result's shape; selectors
|
|
126
|
+
// validate each export at runtime before use.
|
|
127
|
+
const moduleExports = (await import(pathToFileURL(filePath).href));
|
|
128
|
+
return selectPipelineExport(moduleExports, exportName);
|
|
129
|
+
}
|
|
130
|
+
/** Load and select a pipeline command from an absolute module path. */
|
|
131
|
+
export async function loadPipelineCommandModule(filePath, exportName) {
|
|
132
|
+
// SAFETY: a dynamic import of a JS/TS module always yields a module namespace
|
|
133
|
+
// object whose exports are string-keyed values, so the cast to
|
|
134
|
+
// Record<string, unknown> documents the import result's shape; selectors
|
|
135
|
+
// validate each export at runtime before use.
|
|
136
|
+
const moduleExports = (await import(pathToFileURL(filePath).href));
|
|
137
|
+
return selectPipelineCommandExport(moduleExports, exportName);
|
|
138
|
+
}
|
|
139
|
+
/** Load a command and its export name for a stable external registration identity. */
|
|
140
|
+
export async function loadPipelineCommandModuleWithName(filePath, exportName) {
|
|
141
|
+
// SAFETY: a dynamic import of a JS/TS module always yields a module namespace
|
|
142
|
+
// object whose exports are string-keyed values, so the cast to
|
|
143
|
+
// Record<string, unknown> documents the import result's shape; selectors
|
|
144
|
+
// validate each export at runtime before use.
|
|
145
|
+
const moduleExports = (await import(pathToFileURL(filePath).href));
|
|
146
|
+
return selectPipelineCommandExportWithName(moduleExports, exportName);
|
|
147
|
+
}
|
|
148
|
+
/** Load a marked command when present, otherwise a pipeline, for `tubeless plan`. */
|
|
149
|
+
export async function loadPlanSourceModule(filePath, exportName) {
|
|
150
|
+
// SAFETY: a dynamic import of a JS/TS module always yields a module namespace
|
|
151
|
+
// object whose exports are string-keyed values, so the cast to
|
|
152
|
+
// Record<string, unknown> documents the import result's shape; selectors
|
|
153
|
+
// validate each export at runtime before use.
|
|
154
|
+
const moduleExports = (await import(pathToFileURL(filePath).href));
|
|
155
|
+
return selectPlanSourceExport(moduleExports, exportName);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=pipeline-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-module.js","sourceRoot":"","sources":["../src/pipeline-module.ts"],"names":[],"mappings":"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"}
|