@a5c-ai/babysitter-sdk 0.0.16
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/cli/main.d.ts +5 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +1343 -0
- package/dist/cli/nodeTaskRunner.d.ts +16 -0
- package/dist/cli/nodeTaskRunner.d.ts.map +1 -0
- package/dist/cli/nodeTaskRunner.js +46 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/runner/env.d.ts +58 -0
- package/dist/runner/env.d.ts.map +1 -0
- package/dist/runner/env.js +113 -0
- package/dist/runner/index.d.ts +3 -0
- package/dist/runner/index.d.ts.map +1 -0
- package/dist/runner/index.js +18 -0
- package/dist/runner/nodeRunner.d.ts +60 -0
- package/dist/runner/nodeRunner.d.ts.map +1 -0
- package/dist/runner/nodeRunner.js +354 -0
- package/dist/runtime/commitEffectResult.d.ts +3 -0
- package/dist/runtime/commitEffectResult.d.ts.map +1 -0
- package/dist/runtime/commitEffectResult.js +172 -0
- package/dist/runtime/constants.d.ts +2 -0
- package/dist/runtime/constants.d.ts.map +1 -0
- package/dist/runtime/constants.js +5 -0
- package/dist/runtime/createRun.d.ts +3 -0
- package/dist/runtime/createRun.d.ts.map +1 -0
- package/dist/runtime/createRun.js +81 -0
- package/dist/runtime/errorUtils.d.ts +10 -0
- package/dist/runtime/errorUtils.d.ts.map +1 -0
- package/dist/runtime/errorUtils.js +42 -0
- package/dist/runtime/exceptions.d.ts +45 -0
- package/dist/runtime/exceptions.d.ts.map +1 -0
- package/dist/runtime/exceptions.js +99 -0
- package/dist/runtime/index.d.ts +12 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +34 -0
- package/dist/runtime/instrumentation.d.ts +6 -0
- package/dist/runtime/instrumentation.d.ts.map +1 -0
- package/dist/runtime/instrumentation.js +14 -0
- package/dist/runtime/intrinsics/breakpoint.d.ts +4 -0
- package/dist/runtime/intrinsics/breakpoint.d.ts.map +1 -0
- package/dist/runtime/intrinsics/breakpoint.js +42 -0
- package/dist/runtime/intrinsics/index.d.ts +7 -0
- package/dist/runtime/intrinsics/index.d.ts.map +1 -0
- package/dist/runtime/intrinsics/index.js +15 -0
- package/dist/runtime/intrinsics/orchestratorTask.d.ts +4 -0
- package/dist/runtime/intrinsics/orchestratorTask.d.ts.map +1 -0
- package/dist/runtime/intrinsics/orchestratorTask.js +28 -0
- package/dist/runtime/intrinsics/parallel.d.ts +5 -0
- package/dist/runtime/intrinsics/parallel.d.ts.map +1 -0
- package/dist/runtime/intrinsics/parallel.js +45 -0
- package/dist/runtime/intrinsics/sleep.d.ts +4 -0
- package/dist/runtime/intrinsics/sleep.d.ts.map +1 -0
- package/dist/runtime/intrinsics/sleep.js +70 -0
- package/dist/runtime/intrinsics/task.d.ts +20 -0
- package/dist/runtime/intrinsics/task.d.ts.map +1 -0
- package/dist/runtime/intrinsics/task.js +237 -0
- package/dist/runtime/invocation/hashInvocationKey.d.ts +12 -0
- package/dist/runtime/invocation/hashInvocationKey.d.ts.map +1 -0
- package/dist/runtime/invocation/hashInvocationKey.js +12 -0
- package/dist/runtime/invocation/index.d.ts +3 -0
- package/dist/runtime/invocation/index.d.ts.map +1 -0
- package/dist/runtime/invocation/index.js +5 -0
- package/dist/runtime/orchestrateIteration.d.ts +3 -0
- package/dist/runtime/orchestrateIteration.d.ts.map +1 -0
- package/dist/runtime/orchestrateIteration.js +195 -0
- package/dist/runtime/processContext.d.ts +19 -0
- package/dist/runtime/processContext.d.ts.map +1 -0
- package/dist/runtime/processContext.js +55 -0
- package/dist/runtime/replay/createReplayEngine.d.ts +31 -0
- package/dist/runtime/replay/createReplayEngine.d.ts.map +1 -0
- package/dist/runtime/replay/createReplayEngine.js +82 -0
- package/dist/runtime/replay/effectIndex.d.ts +34 -0
- package/dist/runtime/replay/effectIndex.d.ts.map +1 -0
- package/dist/runtime/replay/effectIndex.js +241 -0
- package/dist/runtime/replay/index.d.ts +7 -0
- package/dist/runtime/replay/index.d.ts.map +1 -0
- package/dist/runtime/replay/index.js +19 -0
- package/dist/runtime/replay/replayCursor.d.ts +7 -0
- package/dist/runtime/replay/replayCursor.d.ts.map +1 -0
- package/dist/runtime/replay/replayCursor.js +22 -0
- package/dist/runtime/replay/stateCache.d.ts +48 -0
- package/dist/runtime/replay/stateCache.d.ts.map +1 -0
- package/dist/runtime/replay/stateCache.js +211 -0
- package/dist/runtime/types.d.ts +147 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/storage/atomic.d.ts +2 -0
- package/dist/storage/atomic.d.ts.map +1 -0
- package/dist/storage/atomic.js +54 -0
- package/dist/storage/cleanup.d.ts +4 -0
- package/dist/storage/cleanup.d.ts.map +1 -0
- package/dist/storage/cleanup.js +96 -0
- package/dist/storage/clock.d.ts +6 -0
- package/dist/storage/clock.d.ts.map +1 -0
- package/dist/storage/clock.js +29 -0
- package/dist/storage/createRunDir.d.ts +6 -0
- package/dist/storage/createRunDir.d.ts.map +1 -0
- package/dist/storage/createRunDir.js +59 -0
- package/dist/storage/index.d.ts +9 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +28 -0
- package/dist/storage/journal.d.ts +4 -0
- package/dist/storage/journal.d.ts.map +1 -0
- package/dist/storage/journal.js +103 -0
- package/dist/storage/lock.d.ts +5 -0
- package/dist/storage/lock.d.ts.map +1 -0
- package/dist/storage/lock.js +41 -0
- package/dist/storage/paths.d.ts +19 -0
- package/dist/storage/paths.d.ts.map +1 -0
- package/dist/storage/paths.js +46 -0
- package/dist/storage/runFiles.d.ts +5 -0
- package/dist/storage/runFiles.d.ts.map +1 -0
- package/dist/storage/runFiles.js +39 -0
- package/dist/storage/snapshotState.d.ts +10 -0
- package/dist/storage/snapshotState.d.ts.map +1 -0
- package/dist/storage/snapshotState.js +15 -0
- package/dist/storage/storeTaskArtifacts.d.ts +6 -0
- package/dist/storage/storeTaskArtifacts.d.ts.map +1 -0
- package/dist/storage/storeTaskArtifacts.js +58 -0
- package/dist/storage/tasks.d.ts +17 -0
- package/dist/storage/tasks.d.ts.map +1 -0
- package/dist/storage/tasks.js +82 -0
- package/dist/storage/types.d.ts +112 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/ulids.d.ts +11 -0
- package/dist/storage/ulids.d.ts.map +1 -0
- package/dist/storage/ulids.js +25 -0
- package/dist/tasks/batching.d.ts +29 -0
- package/dist/tasks/batching.d.ts.map +1 -0
- package/dist/tasks/batching.js +66 -0
- package/dist/tasks/context.d.ts +11 -0
- package/dist/tasks/context.d.ts.map +1 -0
- package/dist/tasks/context.js +181 -0
- package/dist/tasks/defineTask.d.ts +9 -0
- package/dist/tasks/defineTask.d.ts.map +1 -0
- package/dist/tasks/defineTask.js +58 -0
- package/dist/tasks/index.d.ts +8 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +23 -0
- package/dist/tasks/kinds/index.d.ts +7 -0
- package/dist/tasks/kinds/index.d.ts.map +1 -0
- package/dist/tasks/kinds/index.js +333 -0
- package/dist/tasks/registry.d.ts +53 -0
- package/dist/tasks/registry.d.ts.map +1 -0
- package/dist/tasks/registry.js +145 -0
- package/dist/tasks/serializer.d.ts +60 -0
- package/dist/tasks/serializer.d.ts.map +1 -0
- package/dist/tasks/serializer.js +193 -0
- package/dist/tasks/types.d.ts +148 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +2 -0
- package/dist/test-fixtures/kinds/index.d.ts +56 -0
- package/dist/test-fixtures/kinds/index.d.ts.map +1 -0
- package/dist/test-fixtures/kinds/index.js +44 -0
- package/dist/testing/deterministic.d.ts +90 -0
- package/dist/testing/deterministic.d.ts.map +1 -0
- package/dist/testing/deterministic.js +449 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +23 -0
- package/dist/testing/runHarness.d.ts +64 -0
- package/dist/testing/runHarness.d.ts.map +1 -0
- package/dist/testing/runHarness.js +161 -0
- package/dist/testing/snapshots.d.ts +17 -0
- package/dist/testing/snapshots.d.ts.map +1 -0
- package/dist/testing/snapshots.js +24 -0
- package/package.json +35 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TaskDef } from "../tasks/types";
|
|
2
|
+
import { RunNodeTaskOptions, RunNodeTaskResult } from "../runner/nodeRunner";
|
|
3
|
+
import { CommitEffectResultArtifacts, ProcessLogger } from "../runtime/types";
|
|
4
|
+
export interface CliRunNodeTaskOptions extends Omit<RunNodeTaskOptions, "task" | "hydration" | "baseEnv"> {
|
|
5
|
+
task?: TaskDef;
|
|
6
|
+
baseEnv?: NodeJS.ProcessEnv;
|
|
7
|
+
invocationKey?: string;
|
|
8
|
+
logger?: ProcessLogger;
|
|
9
|
+
}
|
|
10
|
+
export interface CliRunNodeTaskResult extends RunNodeTaskResult {
|
|
11
|
+
hydratedKeys: string[];
|
|
12
|
+
missingKeys: string[];
|
|
13
|
+
committed?: CommitEffectResultArtifacts;
|
|
14
|
+
}
|
|
15
|
+
export declare function runNodeTaskFromCli(options: CliRunNodeTaskOptions): Promise<CliRunNodeTaskResult>;
|
|
16
|
+
//# sourceMappingURL=nodeTaskRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeTaskRunner.d.ts","sourceRoot":"","sources":["../../src/cli/nodeTaskRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAiC,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACvG,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4BtG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runNodeTaskFromCli = runNodeTaskFromCli;
|
|
4
|
+
const tasks_1 = require("../storage/tasks");
|
|
5
|
+
const env_1 = require("../runner/env");
|
|
6
|
+
const nodeRunner_1 = require("../runner/nodeRunner");
|
|
7
|
+
async function runNodeTaskFromCli(options) {
|
|
8
|
+
const task = options.task ?? (await loadTaskDefinition(options.runDir, options.effectId));
|
|
9
|
+
const hydration = (0, env_1.hydrateCliNodeTaskEnv)(task, {
|
|
10
|
+
cleanEnv: options.cleanEnv,
|
|
11
|
+
envOverrides: options.envOverrides,
|
|
12
|
+
baseEnv: options.baseEnv ?? process.env,
|
|
13
|
+
});
|
|
14
|
+
const result = await (0, nodeRunner_1.runNodeTask)({
|
|
15
|
+
...options,
|
|
16
|
+
task,
|
|
17
|
+
hydration,
|
|
18
|
+
});
|
|
19
|
+
let committed;
|
|
20
|
+
if (!options.dryRun) {
|
|
21
|
+
committed = await (0, nodeRunner_1.commitNodeResult)({
|
|
22
|
+
runDir: options.runDir,
|
|
23
|
+
effectId: options.effectId,
|
|
24
|
+
invocationKey: options.invocationKey ?? extractInvocationKey(task),
|
|
25
|
+
logger: options.logger,
|
|
26
|
+
result,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
...result,
|
|
31
|
+
hydratedKeys: hydration.hydratedKeys,
|
|
32
|
+
missingKeys: hydration.missingKeys,
|
|
33
|
+
committed,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async function loadTaskDefinition(runDir, effectId) {
|
|
37
|
+
const def = await (0, tasks_1.readTaskDefinition)(runDir, effectId);
|
|
38
|
+
if (!def) {
|
|
39
|
+
throw new Error(`Task definition for effect ${effectId} is missing`);
|
|
40
|
+
}
|
|
41
|
+
return def;
|
|
42
|
+
}
|
|
43
|
+
function extractInvocationKey(task) {
|
|
44
|
+
const raw = task?.invocationKey;
|
|
45
|
+
return typeof raw === "string" && raw.trim().length > 0 ? raw : undefined;
|
|
46
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./runtime";
|
|
2
|
+
export * from "./runtime/types";
|
|
3
|
+
export * from "./storage";
|
|
4
|
+
export * from "./storage/types";
|
|
5
|
+
export * from "./tasks";
|
|
6
|
+
export * from "./runner";
|
|
7
|
+
export * from "./cli/nodeTaskRunner";
|
|
8
|
+
export * from "./cli/main";
|
|
9
|
+
export * from "./testing";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./runtime"), exports);
|
|
18
|
+
__exportStar(require("./runtime/types"), exports);
|
|
19
|
+
__exportStar(require("./storage"), exports);
|
|
20
|
+
__exportStar(require("./storage/types"), exports);
|
|
21
|
+
__exportStar(require("./tasks"), exports);
|
|
22
|
+
__exportStar(require("./runner"), exports);
|
|
23
|
+
__exportStar(require("./cli/nodeTaskRunner"), exports);
|
|
24
|
+
__exportStar(require("./cli/main"), exports);
|
|
25
|
+
__exportStar(require("./testing"), exports);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { JsonRecord } from "../storage/types";
|
|
2
|
+
import { TaskDef } from "../tasks/types";
|
|
3
|
+
export interface NodeEnvHydrationOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Env map already present on the TaskDef (safe, non-secret values).
|
|
6
|
+
*/
|
|
7
|
+
nodeEnv?: Record<string, string | undefined>;
|
|
8
|
+
/**
|
|
9
|
+
* Task metadata containing the `redactedEnvKeys` array emitted by the node helper.
|
|
10
|
+
*/
|
|
11
|
+
metadata?: JsonRecord;
|
|
12
|
+
/**
|
|
13
|
+
* Source environment to inherit values from (defaults to `process.env`).
|
|
14
|
+
*/
|
|
15
|
+
baseEnv?: NodeJS.ProcessEnv;
|
|
16
|
+
/**
|
|
17
|
+
* Explicit overrides (e.g., CLI --env) that should win over `baseEnv` for hydrated keys.
|
|
18
|
+
*/
|
|
19
|
+
overrides?: Record<string, string | undefined>;
|
|
20
|
+
/**
|
|
21
|
+
* When false, the returned env starts empty (aside from sanitized + hydrated keys).
|
|
22
|
+
* Redacted keys may still be sourced from `baseEnv`/`overrides` even if inheritance is disabled.
|
|
23
|
+
*/
|
|
24
|
+
inheritProcessEnv?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface NodeEnvHydrationResult {
|
|
27
|
+
env: Record<string, string>;
|
|
28
|
+
hydratedKeys: string[];
|
|
29
|
+
missingKeys: string[];
|
|
30
|
+
}
|
|
31
|
+
export interface ResolveNodeTaskEnvOptions extends Omit<NodeEnvHydrationOptions, "nodeEnv" | "metadata"> {
|
|
32
|
+
/**
|
|
33
|
+
* Optional metadata override; defaults to task.metadata.
|
|
34
|
+
*/
|
|
35
|
+
metadata?: JsonRecord;
|
|
36
|
+
}
|
|
37
|
+
export interface CliHydratedEnvOptions {
|
|
38
|
+
/**
|
|
39
|
+
* When true, start from an empty env (aside from overrides and hydrated keys).
|
|
40
|
+
*/
|
|
41
|
+
cleanEnv?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Additional env pairs provided via CLI flags.
|
|
44
|
+
*/
|
|
45
|
+
envOverrides?: Record<string, string | undefined>;
|
|
46
|
+
/**
|
|
47
|
+
* Base env for hydration (defaults to process.env).
|
|
48
|
+
*/
|
|
49
|
+
baseEnv?: NodeJS.ProcessEnv;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Merge the sanitized TaskDef env map with any redacted keys pulled from the caller's environment.
|
|
53
|
+
*/
|
|
54
|
+
export declare function hydrateNodeTaskEnv(options?: NodeEnvHydrationOptions): NodeEnvHydrationResult;
|
|
55
|
+
export declare function resolveNodeTaskEnv(task: TaskDef, options?: ResolveNodeTaskEnvOptions): NodeEnvHydrationResult;
|
|
56
|
+
export declare function hydrateCliNodeTaskEnv(task: TaskDef, options?: CliHydratedEnvOptions): NodeEnvHydrationResult;
|
|
57
|
+
export declare function extractRedactedEnvKeys(metadata?: JsonRecord): string[];
|
|
58
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/runner/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CAAC,uBAAuB,EAAE,SAAS,GAAG,UAAU,CAAC;IACtG;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD;;QAEI;IACJ,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,uBAA4B,GAAG,sBAAsB,CAuChG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,sBAAsB,CASjH;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,qBAA0B,GAAG,sBAAsB,CAMhH;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAqBtE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hydrateNodeTaskEnv = hydrateNodeTaskEnv;
|
|
4
|
+
exports.resolveNodeTaskEnv = resolveNodeTaskEnv;
|
|
5
|
+
exports.hydrateCliNodeTaskEnv = hydrateCliNodeTaskEnv;
|
|
6
|
+
exports.extractRedactedEnvKeys = extractRedactedEnvKeys;
|
|
7
|
+
/**
|
|
8
|
+
* Merge the sanitized TaskDef env map with any redacted keys pulled from the caller's environment.
|
|
9
|
+
*/
|
|
10
|
+
function hydrateNodeTaskEnv(options = {}) {
|
|
11
|
+
const inherit = options.inheritProcessEnv !== false;
|
|
12
|
+
const baseEnv = options.baseEnv ?? process.env;
|
|
13
|
+
const env = inherit ? cloneProcessEnv(baseEnv) : {};
|
|
14
|
+
if (options.nodeEnv) {
|
|
15
|
+
for (const [key, value] of Object.entries(options.nodeEnv)) {
|
|
16
|
+
if (!key || value === undefined || value === null)
|
|
17
|
+
continue;
|
|
18
|
+
env[key] = String(value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const overrides = normalizeOverrides(options.overrides);
|
|
22
|
+
const metadataKeys = extractRedactedEnvKeys(options.metadata);
|
|
23
|
+
const hydratedKeys = [];
|
|
24
|
+
const missingKeys = [];
|
|
25
|
+
for (const key of metadataKeys) {
|
|
26
|
+
const overrideValue = overrides[key];
|
|
27
|
+
const sourceValue = overrideValue !== undefined ? overrideValue : baseEnv?.[key];
|
|
28
|
+
if (sourceValue === undefined) {
|
|
29
|
+
delete env[key];
|
|
30
|
+
missingKeys.push(key);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
env[key] = sourceValue;
|
|
34
|
+
hydratedKeys.push(key);
|
|
35
|
+
}
|
|
36
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
37
|
+
if (!key)
|
|
38
|
+
continue;
|
|
39
|
+
env[key] = value;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
env,
|
|
43
|
+
hydratedKeys,
|
|
44
|
+
missingKeys,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function resolveNodeTaskEnv(task, options = {}) {
|
|
48
|
+
const metadata = options.metadata ?? task.metadata;
|
|
49
|
+
return hydrateNodeTaskEnv({
|
|
50
|
+
nodeEnv: task.node?.env,
|
|
51
|
+
metadata,
|
|
52
|
+
baseEnv: options.baseEnv,
|
|
53
|
+
overrides: options.overrides,
|
|
54
|
+
inheritProcessEnv: options.inheritProcessEnv,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function hydrateCliNodeTaskEnv(task, options = {}) {
|
|
58
|
+
return resolveNodeTaskEnv(task, {
|
|
59
|
+
baseEnv: options.baseEnv,
|
|
60
|
+
overrides: options.envOverrides,
|
|
61
|
+
inheritProcessEnv: options.cleanEnv ? false : true,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function extractRedactedEnvKeys(metadata) {
|
|
65
|
+
if (!metadata) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
const value = metadata["redactedEnvKeys"];
|
|
69
|
+
const raw = Array.isArray(value) ? value : [];
|
|
70
|
+
const seen = new Set();
|
|
71
|
+
const keys = [];
|
|
72
|
+
for (const entry of raw) {
|
|
73
|
+
if (typeof entry !== "string")
|
|
74
|
+
continue;
|
|
75
|
+
const key = entry.trim();
|
|
76
|
+
if (!key || seen.has(key))
|
|
77
|
+
continue;
|
|
78
|
+
seen.add(key);
|
|
79
|
+
keys.push(key);
|
|
80
|
+
}
|
|
81
|
+
keys.sort((a, b) => {
|
|
82
|
+
if (a < b)
|
|
83
|
+
return -1;
|
|
84
|
+
if (a > b)
|
|
85
|
+
return 1;
|
|
86
|
+
return 0;
|
|
87
|
+
});
|
|
88
|
+
return keys;
|
|
89
|
+
}
|
|
90
|
+
function cloneProcessEnv(source) {
|
|
91
|
+
if (!source) {
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
const env = {};
|
|
95
|
+
for (const [key, value] of Object.entries(source)) {
|
|
96
|
+
if (!key || typeof value !== "string")
|
|
97
|
+
continue;
|
|
98
|
+
env[key] = value;
|
|
99
|
+
}
|
|
100
|
+
return env;
|
|
101
|
+
}
|
|
102
|
+
function normalizeOverrides(overrides) {
|
|
103
|
+
if (!overrides) {
|
|
104
|
+
return {};
|
|
105
|
+
}
|
|
106
|
+
const result = {};
|
|
107
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
108
|
+
if (!key || value === undefined || value === null)
|
|
109
|
+
continue;
|
|
110
|
+
result[key] = String(value);
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./env"), exports);
|
|
18
|
+
__exportStar(require("./nodeRunner"), exports);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CommitEffectResultArtifacts, ProcessLogger } from "../runtime/types";
|
|
2
|
+
import { TaskDef } from "../tasks/types";
|
|
3
|
+
import { NodeEnvHydrationResult } from "./env";
|
|
4
|
+
export interface NodeCommandDetails {
|
|
5
|
+
binary: string;
|
|
6
|
+
args: string[];
|
|
7
|
+
cwd: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RunNodeTaskOptions {
|
|
10
|
+
runDir: string;
|
|
11
|
+
effectId: string;
|
|
12
|
+
task?: TaskDef;
|
|
13
|
+
workspaceRoot?: string;
|
|
14
|
+
nodeBinaryPath?: string;
|
|
15
|
+
envOverrides?: Record<string, string | undefined>;
|
|
16
|
+
cleanEnv?: boolean;
|
|
17
|
+
inheritProcessEnv?: boolean;
|
|
18
|
+
baseEnv?: NodeJS.ProcessEnv;
|
|
19
|
+
hydration?: NodeEnvHydrationResult;
|
|
20
|
+
timeoutMs?: number;
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
onStdoutChunk?: (chunk: string) => void;
|
|
23
|
+
onStderrChunk?: (chunk: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface RunNodeTaskResult {
|
|
26
|
+
task: TaskDef;
|
|
27
|
+
command: NodeCommandDetails;
|
|
28
|
+
stdout: string;
|
|
29
|
+
stderr: string;
|
|
30
|
+
exitCode: number | null;
|
|
31
|
+
signal: NodeJS.Signals | null;
|
|
32
|
+
timedOut: boolean;
|
|
33
|
+
startedAt: string;
|
|
34
|
+
finishedAt: string;
|
|
35
|
+
durationMs: number;
|
|
36
|
+
timeoutMs: number;
|
|
37
|
+
output?: unknown;
|
|
38
|
+
io: ResolvedIoPaths;
|
|
39
|
+
hydrated: NodeEnvHydrationResult;
|
|
40
|
+
}
|
|
41
|
+
export declare class NodeTaskRunnerError extends Error {
|
|
42
|
+
readonly code: string;
|
|
43
|
+
constructor(message: string, code: string);
|
|
44
|
+
}
|
|
45
|
+
export declare function runNodeTask(options: RunNodeTaskOptions): Promise<RunNodeTaskResult>;
|
|
46
|
+
export interface CommitNodeResultOptions {
|
|
47
|
+
runDir: string;
|
|
48
|
+
effectId: string;
|
|
49
|
+
invocationKey?: string;
|
|
50
|
+
logger?: ProcessLogger;
|
|
51
|
+
result: RunNodeTaskResult;
|
|
52
|
+
}
|
|
53
|
+
export declare function commitNodeResult(options: CommitNodeResultOptions): Promise<CommitEffectResultArtifacts>;
|
|
54
|
+
export interface ResolvedIoPaths {
|
|
55
|
+
inputJsonPath: string;
|
|
56
|
+
outputJsonPath: string;
|
|
57
|
+
stdoutPath: string;
|
|
58
|
+
stderrPath: string;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=nodeRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeRunner.d.ts","sourceRoot":"","sources":["../../src/runner/nodeRunner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAe,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAsB,MAAM,OAAO,CAAC;AAInE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,eAAe,CAAC;IACpB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aACC,IAAI,EAAE,MAAM;gBAA7C,OAAO,EAAE,MAAM,EAAkB,IAAI,EAAE,MAAM;CAI1D;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAwGzF;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAmC7G;AA8CD,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB"}
|