@a5c-ai/babysitter-sdk 5.1.1-staging.fee05906043b → 6.0.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/dist/cli/commands/detectExistingRun.d.ts.map +1 -1
- package/dist/cli/commands/detectExistingRun.js +32 -15
- package/dist/cli/commands/plugin/marketplaceCommands.js +3 -3
- package/dist/cli/commands/runIterate.d.ts +12 -0
- package/dist/cli/commands/runIterate.d.ts.map +1 -1
- package/dist/cli/commands/runIterate.js +27 -1
- package/dist/cli/main/argFlagParsers.d.ts.map +1 -1
- package/dist/cli/main/argFlagParsers.js +16 -1
- package/dist/cli/main/argPositionals.d.ts.map +1 -1
- package/dist/cli/main/argPositionals.js +1 -0
- package/dist/cli/main/dispatchHarness.d.ts.map +1 -1
- package/dist/cli/main/dispatchHarness.js +1 -0
- package/dist/cli/main/dispatchRunSession.d.ts.map +1 -1
- package/dist/cli/main/dispatchRunSession.js +5 -3
- package/dist/cli/main/program.js +2 -2
- package/dist/cli/main/runCommands.d.ts +1 -1
- package/dist/cli/main/runCommands.d.ts.map +1 -1
- package/dist/cli/main/runCommands.js +2 -1
- package/dist/cli/main/runCreate.d.ts +10 -0
- package/dist/cli/main/runCreate.d.ts.map +1 -1
- package/dist/cli/main/runCreate.js +93 -0
- package/dist/cli/main/taskCommands.d.ts.map +1 -1
- package/dist/cli/main/taskCommands.js +35 -1
- package/dist/cli/main/types.d.ts +3 -0
- package/dist/cli/main/types.d.ts.map +1 -1
- package/dist/cli/main/usage.d.ts.map +1 -1
- package/dist/cli/main/usage.js +4 -3
- package/dist/config/envContract.d.ts +12 -0
- package/dist/config/envContract.d.ts.map +1 -1
- package/dist/config/envContract.js +12 -0
- package/dist/config/executionPolicy.d.ts +26 -0
- package/dist/config/executionPolicy.d.ts.map +1 -0
- package/dist/config/executionPolicy.js +40 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +6 -1
- package/dist/harness/adapterFallbackMetadata.d.ts.map +1 -1
- package/dist/harness/adapterFallbackMetadata.js +18 -0
- package/dist/harness/adapterMetadata.d.ts.map +1 -1
- package/dist/harness/adapterMetadata.js +12 -0
- package/dist/harness/adapters/genty.d.ts +12 -0
- package/dist/harness/adapters/genty.d.ts.map +1 -0
- package/dist/harness/adapters/genty.js +41 -0
- package/dist/harness/adapters/hermes.d.ts +7 -0
- package/dist/harness/adapters/hermes.d.ts.map +1 -0
- package/dist/harness/adapters/hermes.js +32 -0
- package/dist/harness/adapters/index.d.ts +2 -0
- package/dist/harness/adapters/index.d.ts.map +1 -1
- package/dist/harness/adapters/index.js +5 -1
- package/dist/harness/adapters/pi.js +5 -5
- package/dist/harness/hooks/stopHookHandler.js +1 -1
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +3 -1
- package/dist/harness/install.d.ts.map +1 -1
- package/dist/harness/install.js +16 -4
- package/dist/harness/registry.d.ts +2 -0
- package/dist/harness/registry.d.ts.map +1 -1
- package/dist/harness/registry.js +33 -2
- package/dist/harness/types.d.ts +2 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/processLibrary/forkJoin.d.ts +51 -0
- package/dist/processLibrary/forkJoin.d.ts.map +1 -0
- package/dist/processLibrary/forkJoin.js +63 -0
- package/dist/processLibrary/versioning.d.ts +56 -0
- package/dist/processLibrary/versioning.d.ts.map +1 -0
- package/dist/processLibrary/versioning.js +142 -0
- package/dist/prompts/templates/commands/blueprints.md +2 -2
- package/dist/runtime/intrinsics/breakpoint.d.ts.map +1 -1
- package/dist/runtime/intrinsics/breakpoint.js +17 -1
- package/dist/runtime/runArchival.d.ts +32 -0
- package/dist/runtime/runArchival.d.ts.map +1 -0
- package/dist/runtime/runArchival.js +148 -0
- package/dist/runtime/runDiff.d.ts +44 -0
- package/dist/runtime/runDiff.d.ts.map +1 -0
- package/dist/runtime/runDiff.js +71 -0
- package/dist/runtime/runForking.d.ts +44 -0
- package/dist/runtime/runForking.d.ts.map +1 -0
- package/dist/runtime/runForking.js +50 -0
- package/dist/storage/createRunDir.d.ts.map +1 -1
- package/dist/storage/createRunDir.js +1 -0
- package/dist/storage/types.d.ts +8 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/tasks/fetchProcessor.d.ts +44 -0
- package/dist/tasks/fetchProcessor.d.ts.map +1 -0
- package/dist/tasks/fetchProcessor.js +114 -0
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -0
- package/dist/tasks/jsRepl.d.ts +29 -0
- package/dist/tasks/jsRepl.d.ts.map +1 -0
- package/dist/tasks/jsRepl.js +110 -0
- package/dist/tasks/structuredOutput.d.ts +42 -0
- package/dist/tasks/structuredOutput.d.ts.map +1 -0
- package/dist/tasks/structuredOutput.js +137 -0
- package/dist/utils/compressContext.js +2 -2
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectExistingRun.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/detectExistingRun.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"detectExistingRun.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/detectExistingRun.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AASD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAsC9E;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,eAAe,GAAG,MAAM,CAiB3E"}
|
|
@@ -38,32 +38,49 @@ exports.formatExistingRunBlock = formatExistingRunBlock;
|
|
|
38
38
|
const node_fs_1 = require("node:fs");
|
|
39
39
|
const path = __importStar(require("node:path"));
|
|
40
40
|
const config_1 = require("../../config");
|
|
41
|
+
/**
|
|
42
|
+
* How many of the most-recent runs to inspect. Because we now skip completed
|
|
43
|
+
* and cross-project runs, the first parseable match may not be the very latest
|
|
44
|
+
* directory, so we scan a window rather than only the top entry.
|
|
45
|
+
*/
|
|
46
|
+
const SCAN_WINDOW = 25;
|
|
41
47
|
async function detectExistingRun() {
|
|
42
48
|
try {
|
|
43
49
|
const runsDir = (0, config_1.resolveRunsDir)();
|
|
50
|
+
const currentCwd = path.resolve(process.cwd());
|
|
44
51
|
const entries = await node_fs_1.promises.readdir(runsDir, { withFileTypes: true });
|
|
45
52
|
const dirs = entries.filter((e) => e.isDirectory()).map((e) => e.name).sort().reverse();
|
|
46
|
-
for (const runId of dirs.slice(0,
|
|
53
|
+
for (const runId of dirs.slice(0, SCAN_WINDOW)) {
|
|
47
54
|
const runFile = path.join(runsDir, runId, "run.json");
|
|
55
|
+
let meta;
|
|
48
56
|
try {
|
|
49
|
-
|
|
50
|
-
const meta = JSON.parse(raw);
|
|
51
|
-
const entrypoint = meta["entrypoint"];
|
|
52
|
-
const processId = meta["processId"] ?? "";
|
|
53
|
-
const isBareRun = entrypoint?.importPath === "bare-run";
|
|
54
|
-
return {
|
|
55
|
-
runId,
|
|
56
|
-
runDir: path.join(runsDir, runId),
|
|
57
|
-
processId,
|
|
58
|
-
isBareRun,
|
|
59
|
-
entrypoint: { importPath: entrypoint?.importPath ?? "", exportName: entrypoint?.exportName },
|
|
60
|
-
completionProof: meta["completionProof"]
|
|
61
|
-
?? meta["metadata"]?.["completionProof"],
|
|
62
|
-
};
|
|
57
|
+
meta = JSON.parse(await node_fs_1.promises.readFile(runFile, "utf8"));
|
|
63
58
|
}
|
|
64
59
|
catch {
|
|
65
60
|
continue;
|
|
66
61
|
}
|
|
62
|
+
// A run that already carries a completion proof is finished — it is never
|
|
63
|
+
// an "existing run to resume", so it must not be surfaced as overlap state.
|
|
64
|
+
const completionProof = meta["completionProof"]
|
|
65
|
+
?? meta["metadata"]?.["completionProof"];
|
|
66
|
+
if (completionProof)
|
|
67
|
+
continue;
|
|
68
|
+
// Project scoping: when the run recorded the cwd it was created in, only
|
|
69
|
+
// surface it if that matches the current working directory. Runs from
|
|
70
|
+
// other projects/worktrees share the global runs dir and must not leak in.
|
|
71
|
+
const recordedCwd = meta["cwd"];
|
|
72
|
+
if (recordedCwd && path.resolve(recordedCwd) !== currentCwd)
|
|
73
|
+
continue;
|
|
74
|
+
const entrypoint = meta["entrypoint"];
|
|
75
|
+
const processId = meta["processId"] ?? "";
|
|
76
|
+
const isBareRun = entrypoint?.importPath === "bare-run";
|
|
77
|
+
return {
|
|
78
|
+
runId,
|
|
79
|
+
runDir: path.join(runsDir, runId),
|
|
80
|
+
processId,
|
|
81
|
+
isBareRun,
|
|
82
|
+
entrypoint: { importPath: entrypoint?.importPath ?? "", exportName: entrypoint?.exportName },
|
|
83
|
+
};
|
|
67
84
|
}
|
|
68
85
|
}
|
|
69
86
|
catch { /* no runs dir */ }
|
|
@@ -86,14 +86,14 @@ async function handlePluginUpdateMarketplace(args) {
|
|
|
86
86
|
async function handlePluginListPlugins(args) {
|
|
87
87
|
const { scope, json } = args;
|
|
88
88
|
let { marketplaceName } = args;
|
|
89
|
-
if (!(0, shared_1.requireScope)(scope, 'plugin:list-
|
|
89
|
+
if (!(0, shared_1.requireScope)(scope, 'plugin:list-blueprints', json)) {
|
|
90
90
|
return 1;
|
|
91
91
|
}
|
|
92
92
|
const projectDir = (0, shared_1.getProjectDir)(scope);
|
|
93
93
|
if (!marketplaceName) {
|
|
94
94
|
marketplaceName = await (0, shared_1.autoResolveMarketplace)(scope, projectDir) ?? undefined;
|
|
95
95
|
}
|
|
96
|
-
const name = (0, shared_1.requireArg)(marketplaceName, '--marketplace-name', 'plugin:list-
|
|
96
|
+
const name = (0, shared_1.requireArg)(marketplaceName, '--marketplace-name', 'plugin:list-blueprints', json);
|
|
97
97
|
if (!name) {
|
|
98
98
|
return 1;
|
|
99
99
|
}
|
|
@@ -109,6 +109,6 @@ async function handlePluginListPlugins(args) {
|
|
|
109
109
|
}
|
|
110
110
|
catch (error) {
|
|
111
111
|
const message = error instanceof Error ? error.message : String(error);
|
|
112
|
-
return emitError('plugin:list-
|
|
112
|
+
return emitError('plugin:list-blueprints', json, 'list_failed', message);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
@@ -10,6 +10,18 @@
|
|
|
10
10
|
* The command does NOT loop - it handles exactly one iteration.
|
|
11
11
|
*/
|
|
12
12
|
import type { EffectAction } from "../../runtime/types";
|
|
13
|
+
/**
|
|
14
|
+
* Pin the active harness adapter to the harness recorded in run.json so that
|
|
15
|
+
* run:iterate honors the run's recorded harness instead of re-detecting it from
|
|
16
|
+
* the ambient environment (issue #949). Re-detection is unreliable: a run
|
|
17
|
+
* created with `--harness claude-code` could otherwise resolve a different
|
|
18
|
+
* harness (e.g. one whose caller env vars happen to be set), then hard-fail on
|
|
19
|
+
* adapter resolution. Falls through to the existing env-based detection when no
|
|
20
|
+
* harness is recorded or the recorded harness is unknown to the registry.
|
|
21
|
+
*
|
|
22
|
+
* @returns true when the active adapter was pinned to the recorded harness.
|
|
23
|
+
*/
|
|
24
|
+
export declare function pinActiveAdapterToRecordedHarness(harness: string | undefined): boolean;
|
|
13
25
|
export interface RunIterateOptions {
|
|
14
26
|
runDir: string;
|
|
15
27
|
iteration?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runIterate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/runIterate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"runIterate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/runIterate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAyB,MAAM,qBAAqB,CAAC;AAgB/E;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAMtF;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAChD,8FAA8F;IAC9F,wBAAwB,CAAC,EAAE;QACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;QACzB,UAAU,EAAE,YAAY,EAAE,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuQtF"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* The command does NOT loop - it handles exactly one iteration.
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.pinActiveAdapterToRecordedHarness = pinActiveAdapterToRecordedHarness;
|
|
14
15
|
exports.runIterate = runIterate;
|
|
15
16
|
const runFiles_1 = require("../../storage/runFiles");
|
|
16
17
|
const journal_1 = require("../../storage/journal");
|
|
@@ -23,11 +24,36 @@ const config_1 = require("../../config");
|
|
|
23
24
|
const processCodeHash_1 = require("../../runtime/processCodeHash");
|
|
24
25
|
const runIterateHelpers_1 = require("./runIterateHelpers");
|
|
25
26
|
const externalAgentEffect_1 = require("../../harness/hooks/externalAgentEffect");
|
|
27
|
+
const harness_1 = require("../../harness");
|
|
28
|
+
/**
|
|
29
|
+
* Pin the active harness adapter to the harness recorded in run.json so that
|
|
30
|
+
* run:iterate honors the run's recorded harness instead of re-detecting it from
|
|
31
|
+
* the ambient environment (issue #949). Re-detection is unreliable: a run
|
|
32
|
+
* created with `--harness claude-code` could otherwise resolve a different
|
|
33
|
+
* harness (e.g. one whose caller env vars happen to be set), then hard-fail on
|
|
34
|
+
* adapter resolution. Falls through to the existing env-based detection when no
|
|
35
|
+
* harness is recorded or the recorded harness is unknown to the registry.
|
|
36
|
+
*
|
|
37
|
+
* @returns true when the active adapter was pinned to the recorded harness.
|
|
38
|
+
*/
|
|
39
|
+
function pinActiveAdapterToRecordedHarness(harness) {
|
|
40
|
+
if (!harness)
|
|
41
|
+
return false;
|
|
42
|
+
const adapter = (0, harness_1.getAdapterByName)(harness);
|
|
43
|
+
if (!adapter)
|
|
44
|
+
return false;
|
|
45
|
+
(0, harness_1.setAdapter)(adapter);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
26
48
|
async function runIterate(options) {
|
|
27
49
|
const { runDir, verbose } = options;
|
|
28
50
|
// Read run metadata
|
|
29
51
|
const metadata = await (0, runFiles_1.readRunMetadata)(runDir);
|
|
30
52
|
const runId = metadata.runId;
|
|
53
|
+
// Honor the harness recorded at run-creation time over ambient env detection
|
|
54
|
+
// (issue #949). Without this, orchestrateIteration's lazy getAdapter() could
|
|
55
|
+
// resolve a different harness from the environment and hard-fail.
|
|
56
|
+
pinActiveAdapterToRecordedHarness(metadata.harness);
|
|
31
57
|
// Determine iteration number from state cache or journal
|
|
32
58
|
const iterationCount = await (0, runIterateHelpers_1.detectIterationCount)(runDir);
|
|
33
59
|
const iteration = options.iteration ?? (iterationCount + 1);
|
|
@@ -60,7 +86,7 @@ async function runIterate(options) {
|
|
|
60
86
|
runDir,
|
|
61
87
|
...(subprocessSupport ? { subprocessSupport } : {}),
|
|
62
88
|
});
|
|
63
|
-
if (iterationResult.status === "waiting") {
|
|
89
|
+
if (iterationResult.status === "waiting" && (0, config_1.crossSubagentsEnabled)()) {
|
|
64
90
|
const externalResolution = await (0, externalAgentEffect_1.resolveExternalAgentEffectsForRun)({
|
|
65
91
|
runDir,
|
|
66
92
|
workspace: projectRoot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argFlagParsers.d.ts","sourceRoot":"","sources":["../../../src/cli/main/argFlagParsers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AA6ChF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"argFlagParsers.d.ts","sourceRoot":"","sources":["../../../src/cli/main/argFlagParsers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AA6ChF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAmUnD,CAAC"}
|
|
@@ -68,6 +68,14 @@ exports.FLAG_PARSERS = {
|
|
|
68
68
|
parsed.patchEffect = expectFlagValue(args, index + 1, "--patch-effect");
|
|
69
69
|
return index + 1;
|
|
70
70
|
},
|
|
71
|
+
"--final-status": (parsed, args, index) => {
|
|
72
|
+
const value = expectFlagValue(args, index + 1, "--final-status").toLowerCase();
|
|
73
|
+
if (value !== "completed" && value !== "failed") {
|
|
74
|
+
throw new Error(`--final-status must be "completed" or "failed" (received: ${value})`);
|
|
75
|
+
}
|
|
76
|
+
parsed.haltFinalStatus = value;
|
|
77
|
+
return index + 1;
|
|
78
|
+
},
|
|
71
79
|
"--status": (parsed, args, index) => {
|
|
72
80
|
parsed.taskStatus = parseStatus(expectFlagValue(args, index + 1, "--status"));
|
|
73
81
|
return index + 1;
|
|
@@ -163,6 +171,10 @@ exports.FLAG_PARSERS = {
|
|
|
163
171
|
parsed.workspace = expectFlagValue(args, index + 1, "--workspace");
|
|
164
172
|
return index + 1;
|
|
165
173
|
},
|
|
174
|
+
"--tag": (parsed, args, index) => {
|
|
175
|
+
parsed.tag = expectFlagValue(args, index + 1, "--tag");
|
|
176
|
+
return index + 1;
|
|
177
|
+
},
|
|
166
178
|
"--daemon-dir": (parsed, args, index) => {
|
|
167
179
|
parsed.daemonDir = expectFlagValue(args, index + 1, "--daemon-dir");
|
|
168
180
|
return index + 1;
|
|
@@ -324,7 +336,10 @@ exports.FLAG_PARSERS = {
|
|
|
324
336
|
return index + 1;
|
|
325
337
|
},
|
|
326
338
|
"--reason": (parsed, args, index) => {
|
|
327
|
-
|
|
339
|
+
const value = expectFlagValue(args, index + 1, "--reason");
|
|
340
|
+
// Shared by task:cancel (cancelReason) and run:halt (haltReason).
|
|
341
|
+
parsed.cancelReason = value;
|
|
342
|
+
parsed.haltReason = value;
|
|
328
343
|
return index + 1;
|
|
329
344
|
},
|
|
330
345
|
"--action": (parsed, args, index) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argPositionals.d.ts","sourceRoot":"","sources":["../../../src/cli/main/argPositionals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"argPositionals.d.ts","sourceRoot":"","sources":["../../../src/cli/main/argPositionals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAmG5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatchHarness.d.ts","sourceRoot":"","sources":["../../../src/cli/main/dispatchHarness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAe1C,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"dispatchHarness.d.ts","sourceRoot":"","sources":["../../../src/cli/main/dispatchHarness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAe1C,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2DhG"}
|
|
@@ -63,6 +63,7 @@ async function executeHarnessInfraCommand(parsed) {
|
|
|
63
63
|
return await (0, install_1.handleHarnessInstallPlugin)({
|
|
64
64
|
harnessName: parsed.positional?.[0],
|
|
65
65
|
workspace: parsed.workspace,
|
|
66
|
+
tag: parsed.tag,
|
|
66
67
|
json: parsed.json,
|
|
67
68
|
dryRun: parsed.dryRun,
|
|
68
69
|
verbose: parsed.verbose,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatchRunSession.d.ts","sourceRoot":"","sources":["../../../src/cli/main/dispatchRunSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatchRunSession.d.ts","sourceRoot":"","sources":["../../../src/cli/main/dispatchRunSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAsD1C,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM9F"}
|
|
@@ -74,6 +74,8 @@ async function executeRunTaskCommand(parsed) {
|
|
|
74
74
|
return await (0, runCommands_1.handleRunRepairJournal)(parsed);
|
|
75
75
|
case "run:recover-process-error":
|
|
76
76
|
return await (0, runCommands_1.handleRunRecoverProcessError)(parsed);
|
|
77
|
+
case "run:halt":
|
|
78
|
+
return await (0, runCommands_1.handleRunHalt)(parsed);
|
|
77
79
|
case "run:status":
|
|
78
80
|
return await (0, runCommands_1.handleRunStatus)(parsed);
|
|
79
81
|
case "run:iterate":
|
|
@@ -301,7 +303,7 @@ async function executeSupportCommand(parsed) {
|
|
|
301
303
|
return await (0, plugin_1.handlePluginAddMarketplace)(args);
|
|
302
304
|
case "plugin:update-marketplace":
|
|
303
305
|
return await (0, plugin_1.handlePluginUpdateMarketplace)(args);
|
|
304
|
-
case "plugin:list-
|
|
306
|
+
case "plugin:list-blueprints":
|
|
305
307
|
return await (0, plugin_1.handlePluginListPlugins)(args);
|
|
306
308
|
case "plugin:install":
|
|
307
309
|
return await (0, plugin_1.handlePluginInstall)(args);
|
|
@@ -325,7 +327,7 @@ function normalizeBlueprintCommand(command) {
|
|
|
325
327
|
switch (command) {
|
|
326
328
|
case "blueprints:list":
|
|
327
329
|
case "blueprints:marketplace":
|
|
328
|
-
return "plugin:list-
|
|
330
|
+
return "plugin:list-blueprints";
|
|
329
331
|
case "blueprints:add-marketplace":
|
|
330
332
|
return "plugin:add-marketplace";
|
|
331
333
|
case "blueprints:update-marketplace":
|
|
@@ -345,7 +347,7 @@ function normalizeBlueprintCommand(command) {
|
|
|
345
347
|
}
|
|
346
348
|
function toBlueprintCommand(command) {
|
|
347
349
|
switch (command) {
|
|
348
|
-
case "plugin:list-
|
|
350
|
+
case "plugin:list-blueprints":
|
|
349
351
|
return "blueprints:list";
|
|
350
352
|
case "plugin:add-marketplace":
|
|
351
353
|
return "blueprints:add-marketplace";
|
package/dist/cli/main/program.js
CHANGED
|
@@ -51,7 +51,7 @@ exports.HARNESS_INSTALL_COMMANDS = [
|
|
|
51
51
|
"harness:install-plugin",
|
|
52
52
|
];
|
|
53
53
|
const SHARED_VALID_COMMANDS = [
|
|
54
|
-
"run:create", "run:assign-process", "run:status", "run:iterate", "run:events", "run:rebuild-state", "run:repair-journal", "run:recover-process-error",
|
|
54
|
+
"run:create", "run:assign-process", "run:status", "run:iterate", "run:events", "run:rebuild-state", "run:repair-journal", "run:recover-process-error", "run:halt",
|
|
55
55
|
"task:post", "task:cancel", "task:list", "task:show",
|
|
56
56
|
"log", "hook:log", "hook:run", "skill:discover", "skill:fetch-remote",
|
|
57
57
|
"process-library:clone", "process-library:update", "process-library:use", "process-library:active",
|
|
@@ -60,7 +60,7 @@ const SHARED_VALID_COMMANDS = [
|
|
|
60
60
|
"blueprints:list-installed", "blueprints:marketplace", "blueprints:add-marketplace", "blueprints:update-marketplace",
|
|
61
61
|
"blueprints:update-registry", "blueprints:remove-from-registry",
|
|
62
62
|
"plugin:install", "plugin:uninstall", "plugin:update", "plugin:configure", "plugin:list-installed",
|
|
63
|
-
"plugin:list-
|
|
63
|
+
"plugin:list-blueprints", "plugin:add-marketplace", "plugin:update-marketplace", "plugin:update-registry",
|
|
64
64
|
"plugin:remove-from-registry", "instructions:babysit-skill", "instructions:process-create", "instructions:orchestrate",
|
|
65
65
|
"instructions:breakpoint-handling", "health", "configure", "tokens:stats", "compression:status", "compression:toggle",
|
|
66
66
|
"compression:set", "compression:reset", "compress-output", "breakpoint:approve-rule", "breakpoint:remove-rule",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { handleRunCreate, handleRunRebuildState, handleRunRecoverProcessError, handleRunRepairJournal, } from "./runCreate";
|
|
1
|
+
export { handleRunCreate, handleRunRebuildState, handleRunRecoverProcessError, handleRunRepairJournal, handleRunHalt, } from "./runCreate";
|
|
2
2
|
export { handleRunAssignProcess } from "./runAssignProcess";
|
|
3
3
|
export { handleRunEvents, handleRunIterate, handleRunStatus } from "./runInspection";
|
|
4
4
|
//# sourceMappingURL=runCommands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/main/runCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"runCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/main/runCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.handleRunStatus = exports.handleRunIterate = exports.handleRunEvents = exports.handleRunAssignProcess = exports.handleRunRepairJournal = exports.handleRunRecoverProcessError = exports.handleRunRebuildState = exports.handleRunCreate = void 0;
|
|
3
|
+
exports.handleRunStatus = exports.handleRunIterate = exports.handleRunEvents = exports.handleRunAssignProcess = exports.handleRunHalt = exports.handleRunRepairJournal = exports.handleRunRecoverProcessError = exports.handleRunRebuildState = exports.handleRunCreate = void 0;
|
|
4
4
|
var runCreate_1 = require("./runCreate");
|
|
5
5
|
Object.defineProperty(exports, "handleRunCreate", { enumerable: true, get: function () { return runCreate_1.handleRunCreate; } });
|
|
6
6
|
Object.defineProperty(exports, "handleRunRebuildState", { enumerable: true, get: function () { return runCreate_1.handleRunRebuildState; } });
|
|
7
7
|
Object.defineProperty(exports, "handleRunRecoverProcessError", { enumerable: true, get: function () { return runCreate_1.handleRunRecoverProcessError; } });
|
|
8
8
|
Object.defineProperty(exports, "handleRunRepairJournal", { enumerable: true, get: function () { return runCreate_1.handleRunRepairJournal; } });
|
|
9
|
+
Object.defineProperty(exports, "handleRunHalt", { enumerable: true, get: function () { return runCreate_1.handleRunHalt; } });
|
|
9
10
|
var runAssignProcess_1 = require("./runAssignProcess");
|
|
10
11
|
Object.defineProperty(exports, "handleRunAssignProcess", { enumerable: true, get: function () { return runAssignProcess_1.handleRunAssignProcess; } });
|
|
11
12
|
var runInspection_1 = require("./runInspection");
|
|
@@ -3,4 +3,14 @@ export declare function handleRunCreate(parsed: ParsedArgs): Promise<number>;
|
|
|
3
3
|
export declare function handleRunRebuildState(parsed: ParsedArgs): Promise<number>;
|
|
4
4
|
export declare function handleRunRepairJournal(parsed: ParsedArgs): Promise<number>;
|
|
5
5
|
export declare function handleRunRecoverProcessError(parsed: ParsedArgs): Promise<number>;
|
|
6
|
+
/**
|
|
7
|
+
* run:halt — operator-driven seal of a divergent run.
|
|
8
|
+
*
|
|
9
|
+
* Writes a synthetic terminal event (RUN_COMPLETED or RUN_FAILED) with the
|
|
10
|
+
* correct seq + ulid, copies the completionProof from run.json, records the
|
|
11
|
+
* --reason for audit (manual_seal_reason), and rebuilds the state cache so the
|
|
12
|
+
* run reaches a clean terminal state without hand-crafting journal files.
|
|
13
|
+
* See issue #880.
|
|
14
|
+
*/
|
|
15
|
+
export declare function handleRunHalt(parsed: ParsedArgs): Promise<number>;
|
|
6
16
|
//# sourceMappingURL=runCreate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCreate.d.ts","sourceRoot":"","sources":["../../../src/cli/main/runCreate.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA0NzE;AA2BD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/E;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGhF;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiFtF"}
|
|
1
|
+
{"version":3,"file":"runCreate.d.ts","sourceRoot":"","sources":["../../../src/cli/main/runCreate.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA0NzE;AA2BD,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/E;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGhF;AAED,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiFtF;AAID;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAgFvE"}
|
|
@@ -37,6 +37,7 @@ exports.handleRunCreate = handleRunCreate;
|
|
|
37
37
|
exports.handleRunRebuildState = handleRunRebuildState;
|
|
38
38
|
exports.handleRunRepairJournal = handleRunRepairJournal;
|
|
39
39
|
exports.handleRunRecoverProcessError = handleRunRecoverProcessError;
|
|
40
|
+
exports.handleRunHalt = handleRunHalt;
|
|
40
41
|
const crypto = __importStar(require("node:crypto"));
|
|
41
42
|
const node_fs_1 = require("node:fs");
|
|
42
43
|
const path = __importStar(require("node:path"));
|
|
@@ -496,6 +497,98 @@ async function handleRunRecoverProcessError(parsed) {
|
|
|
496
497
|
}
|
|
497
498
|
return 0;
|
|
498
499
|
}
|
|
500
|
+
const TERMINAL_EVENT_TYPES = new Set(["RUN_COMPLETED", "RUN_FAILED", "RUN_HALTED"]);
|
|
501
|
+
/**
|
|
502
|
+
* run:halt — operator-driven seal of a divergent run.
|
|
503
|
+
*
|
|
504
|
+
* Writes a synthetic terminal event (RUN_COMPLETED or RUN_FAILED) with the
|
|
505
|
+
* correct seq + ulid, copies the completionProof from run.json, records the
|
|
506
|
+
* --reason for audit (manual_seal_reason), and rebuilds the state cache so the
|
|
507
|
+
* run reaches a clean terminal state without hand-crafting journal files.
|
|
508
|
+
* See issue #880.
|
|
509
|
+
*/
|
|
510
|
+
async function handleRunHalt(parsed) {
|
|
511
|
+
if (!parsed.runDirArg) {
|
|
512
|
+
console.error(usage_1.USAGE);
|
|
513
|
+
return 1;
|
|
514
|
+
}
|
|
515
|
+
const runDir = (0, args_1.resolveRunDir)(parsed.runsDir, parsed.runDirArg);
|
|
516
|
+
const reason = parsed.haltReason ?? "manual_halt";
|
|
517
|
+
const finalStatus = parsed.haltFinalStatus ?? "completed";
|
|
518
|
+
const eventType = finalStatus === "completed" ? "RUN_COMPLETED" : "RUN_FAILED";
|
|
519
|
+
(0, runSupport_1.logVerbose)("run:halt", parsed, { runDir, reason, finalStatus, dryRun: parsed.dryRun, json: parsed.json });
|
|
520
|
+
const metadata = await (0, runState_1.readRunMetadataSafe)(runDir, "run:halt");
|
|
521
|
+
if (!metadata)
|
|
522
|
+
return 1;
|
|
523
|
+
const completionProof = typeof metadata.completionProof === "string" ? metadata.completionProof : null;
|
|
524
|
+
// Detect whether the run is already sealed (audit only — halting is a
|
|
525
|
+
// deliberate operator override, so an existing terminal event does not block).
|
|
526
|
+
let alreadyTerminal = null;
|
|
527
|
+
try {
|
|
528
|
+
const events = await (0, journal_1.loadJournal)(runDir);
|
|
529
|
+
for (let i = events.length - 1; i >= 0; i -= 1) {
|
|
530
|
+
if (TERMINAL_EVENT_TYPES.has(events[i].type)) {
|
|
531
|
+
alreadyTerminal = events[i].type;
|
|
532
|
+
break;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
catch {
|
|
537
|
+
// No/again-unreadable journal — proceed; appendEvent will create it.
|
|
538
|
+
}
|
|
539
|
+
if (parsed.dryRun) {
|
|
540
|
+
const plan = { dryRun: true, runDir, plan: "halt_run", eventType, finalStatus, reason, completionProof, alreadyTerminal };
|
|
541
|
+
if (parsed.json) {
|
|
542
|
+
console.log(JSON.stringify(plan, null, 2));
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
console.log(`[run:halt] dry-run runDir=${runDir} eventType=${eventType} reason=${reason}` + (alreadyTerminal ? ` (already ${alreadyTerminal})` : ""));
|
|
546
|
+
}
|
|
547
|
+
return 0;
|
|
548
|
+
}
|
|
549
|
+
try {
|
|
550
|
+
const eventData = { manual_seal_reason: reason, completionProof };
|
|
551
|
+
if (finalStatus === "failed") {
|
|
552
|
+
eventData.error = { name: "ManualHalt", message: reason };
|
|
553
|
+
}
|
|
554
|
+
const appended = await (0, journal_1.appendEvent)({ runDir, eventType, event: eventData });
|
|
555
|
+
const snapshot = await (0, stateCache_1.rebuildStateCache)(runDir, { reason: "manual_halt" });
|
|
556
|
+
const metadataOut = {
|
|
557
|
+
pendingEffectsByKind: snapshot.pendingEffectsByKind,
|
|
558
|
+
stateVersion: snapshot.stateVersion,
|
|
559
|
+
journalHead: snapshot.journalHead ?? null,
|
|
560
|
+
stateRebuilt: true,
|
|
561
|
+
stateRebuildReason: snapshot.rebuildReason ?? undefined,
|
|
562
|
+
};
|
|
563
|
+
const formatted = (0, runState_1.formatIterationMetadata)(metadataOut);
|
|
564
|
+
const summary = {
|
|
565
|
+
runDir,
|
|
566
|
+
halted: true,
|
|
567
|
+
finalStatus,
|
|
568
|
+
reason,
|
|
569
|
+
completionProof,
|
|
570
|
+
alreadyTerminal,
|
|
571
|
+
event: { seq: appended.seq, ulid: appended.ulid, type: eventType, recordedAt: appended.recordedAt },
|
|
572
|
+
metadata: formatted.jsonMetadata ?? null,
|
|
573
|
+
};
|
|
574
|
+
if (parsed.json) {
|
|
575
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
576
|
+
}
|
|
577
|
+
else {
|
|
578
|
+
const suffix = formatted.textParts.length ? ` ${formatted.textParts.join(" ")}` : "";
|
|
579
|
+
console.log(`[run:halt] halted runDir=${runDir} finalStatus=${finalStatus} seq=${appended.seq} reason=${reason}${suffix}`);
|
|
580
|
+
}
|
|
581
|
+
return 0;
|
|
582
|
+
}
|
|
583
|
+
catch (error) {
|
|
584
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
585
|
+
console.error(`[run:halt] ${message}`);
|
|
586
|
+
if (parsed.json) {
|
|
587
|
+
console.log(JSON.stringify({ error: "HALT_FAILED", message }, null, 2));
|
|
588
|
+
}
|
|
589
|
+
return 1;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
499
592
|
function findLatestProcessRuntimeError(events) {
|
|
500
593
|
for (let index = events.length - 1; index >= 0; index -= 1) {
|
|
501
594
|
if (events[index].type === "PROCESS_RUNTIME_ERROR")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/main/taskCommands.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"taskCommands.d.ts","sourceRoot":"","sources":["../../../src/cli/main/taskCommands.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAqH1C,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAwIxE;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B1E;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCxE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAoDxE"}
|
|
@@ -95,6 +95,40 @@ async function readJsonFile(runDir, filename) {
|
|
|
95
95
|
const trimmed = raw.trim();
|
|
96
96
|
return trimmed.length ? JSON.parse(trimmed) : undefined;
|
|
97
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Read the `--error` file for `task:post --status error`.
|
|
100
|
+
*
|
|
101
|
+
* #936: callers (notably genty's in-process DefaultOrchestrationProvider) may
|
|
102
|
+
* write a bare, NON-JSON error string (e.g. `Error: Effect failed`) into this
|
|
103
|
+
* file. JSON.parsing it unguarded produced the cryptic
|
|
104
|
+
* `Unexpected token 'E', "Error: Effect failed" is not valid JSON`
|
|
105
|
+
* SyntaxError categorized as an internal "please report as a bug" failure, and
|
|
106
|
+
* — because the post then exited non-zero — spun the orchestration loop to its
|
|
107
|
+
* 80-minute timeout. Here we tolerate a plain-text error: if the file is not
|
|
108
|
+
* valid JSON, wrap it as a structured `{ name, message }` error payload so the
|
|
109
|
+
* failure surfaces the real message and the run can fail promptly. Valid JSON
|
|
110
|
+
* (a structured error) still round-trips unchanged.
|
|
111
|
+
*/
|
|
112
|
+
async function readErrorFile(runDir, filename) {
|
|
113
|
+
if (!filename)
|
|
114
|
+
return undefined;
|
|
115
|
+
const raw = filename === "-"
|
|
116
|
+
? await (0, runSupport_1.readStdinUtf8)()
|
|
117
|
+
: await node_fs_1.promises.readFile(resolveMaybeRunRelative(runDir, filename), "utf8");
|
|
118
|
+
const trimmed = raw.trim();
|
|
119
|
+
if (!trimmed.length)
|
|
120
|
+
return undefined;
|
|
121
|
+
try {
|
|
122
|
+
return JSON.parse(trimmed);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// Not JSON — treat the file contents as the error message itself. Strip a
|
|
126
|
+
// leading "Error: " prefix (the result of String(new Error(message))) so
|
|
127
|
+
// the surfaced message is the underlying failure, not doubled.
|
|
128
|
+
const message = trimmed.replace(/^Error:\s*/, "");
|
|
129
|
+
return { name: "Error", message };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
98
132
|
function readInlineJson(raw) {
|
|
99
133
|
if (!raw)
|
|
100
134
|
return undefined;
|
|
@@ -164,7 +198,7 @@ async function handleTaskPost(parsed) {
|
|
|
164
198
|
const stdout = parsed.stdoutFile ? await readTextFile(runDir, parsed.stdoutFile) : undefined;
|
|
165
199
|
const stderr = parsed.stderrFile ? await readTextFile(runDir, parsed.stderrFile) : undefined;
|
|
166
200
|
const errorPayload = parsed.taskStatus === "error"
|
|
167
|
-
? (await
|
|
201
|
+
? (await readErrorFile(runDir, parsed.errorPath)) ?? { name: "Error", message: "Task reported failure" }
|
|
168
202
|
: undefined;
|
|
169
203
|
const value = parsed.taskStatus === "ok"
|
|
170
204
|
? parsed.valueInline
|
package/dist/cli/main/types.d.ts
CHANGED
|
@@ -89,6 +89,7 @@ export interface ParsedArgs {
|
|
|
89
89
|
costRunId?: string;
|
|
90
90
|
positional?: string[];
|
|
91
91
|
workspace?: string;
|
|
92
|
+
tag?: string;
|
|
92
93
|
model?: string;
|
|
93
94
|
interactive?: boolean;
|
|
94
95
|
retrospectAll?: boolean;
|
|
@@ -104,6 +105,8 @@ export interface ParsedArgs {
|
|
|
104
105
|
breakpointExpert?: string;
|
|
105
106
|
cancelReason?: string;
|
|
106
107
|
patchEffect?: string;
|
|
108
|
+
haltReason?: string;
|
|
109
|
+
haltFinalStatus?: "completed" | "failed";
|
|
107
110
|
verbosity?: string;
|
|
108
111
|
tuiFlag?: boolean;
|
|
109
112
|
daemonDir?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/main/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/main/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/cli/main/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/cli/main/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AA+I1D,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,UAAyB,GAAG,MAAM,CAa5F;AAED,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,KAAK,QAAc,CAAC"}
|
package/dist/cli/main/usage.js
CHANGED
|
@@ -11,6 +11,7 @@ function coreAgentUsage(commandName) {
|
|
|
11
11
|
${commandName} run:rebuild-state <runDir> [--json] [--dry-run]
|
|
12
12
|
${commandName} run:repair-journal <runDir> [--json] [--dry-run]
|
|
13
13
|
${commandName} run:recover-process-error <runDir> [--patch-effect <effectId>:<jsonPath>=<json>] [--json] [--dry-run]
|
|
14
|
+
${commandName} run:halt <runDir> [--reason <text>] [--final-status completed|failed] [--json] [--dry-run]
|
|
14
15
|
${commandName} run:iterate <runDir> [--json] [--verbose] [--iteration <n>]
|
|
15
16
|
${commandName} task:post <runDir> <effectId> --status <ok|error> [--json] [--dry-run] [--value <file>] [--value-inline <json>] [--error <file>] [--stdout-ref <ref>] [--stderr-ref <ref>] [--stdout-file <file>] [--stderr-file <file>] [--started-at <iso8601>] [--finished-at <iso8601>] [--metadata <file>] [--invocation-key <key>]
|
|
16
17
|
${commandName} task:list <runDir> [--pending] [--kind <kind>] [--json]
|
|
@@ -33,7 +34,7 @@ function coreAgentUsage(commandName) {
|
|
|
33
34
|
${commandName} profile:render --user|--project [--dir <dir>] [--json]
|
|
34
35
|
${commandName} instructions:babysit-skill [--harness <name>] [--interactive|--no-interactive] [--json]
|
|
35
36
|
${commandName} harness:install <name> [--workspace <dir>] [--json] [--dry-run] [--verbose]
|
|
36
|
-
${commandName} harness:install-plugin <name> [--workspace <dir>] [--json] [--dry-run] [--verbose]`;
|
|
37
|
+
${commandName} harness:install-plugin <name> [--workspace <dir>] [--tag <dist-tag>] [--json] [--dry-run] [--verbose]`;
|
|
37
38
|
}
|
|
38
39
|
function coreHumanUsage(commandName) {
|
|
39
40
|
return ` ${commandName} log --type <process|hook|cli> --message <msg> [--run-id <id>] [--label <label>] [--level <level>] [--source <src>] [--json]
|
|
@@ -64,14 +65,14 @@ function coreHumanUsage(commandName) {
|
|
|
64
65
|
${commandName} blueprints:update-marketplace --marketplace-name <name> [--marketplace-branch <ref>] [--global|--project] [--json] [--verbose]
|
|
65
66
|
${commandName} blueprints:update-registry [<name>] [--plugin-name <name>] [--plugin-version <ver>] [--global|--project] [--json] [--verbose]
|
|
66
67
|
${commandName} blueprints:remove-from-registry [<name>] [--plugin-name <name>] [--global|--project] [--json] [--verbose]
|
|
67
|
-
Deprecated aliases: plugin:install, plugin:uninstall, plugin:update, plugin:configure, plugin:list-installed, plugin:list-
|
|
68
|
+
Deprecated aliases: plugin:install, plugin:uninstall, plugin:update, plugin:configure, plugin:list-installed, plugin:list-blueprints, plugin:add-marketplace, plugin:update-marketplace, plugin:update-registry, plugin:remove-from-registry.
|
|
68
69
|
${commandName} tokens:stats [runId] [--all] [--json]
|
|
69
70
|
${commandName} compression:status [--json]
|
|
70
71
|
${commandName} compression:toggle <layer> <on|off> [--json]
|
|
71
72
|
${commandName} compression:set <layer.key> <value> [--json]
|
|
72
73
|
${commandName} compression:reset [--json]
|
|
73
74
|
${commandName} harness:install <name> [--workspace <dir>] [--json] [--dry-run] [--verbose]
|
|
74
|
-
${commandName} harness:install-plugin <name> [--workspace <dir>] [--json] [--dry-run] [--verbose]
|
|
75
|
+
${commandName} harness:install-plugin <name> [--workspace <dir>] [--tag <dist-tag>] [--json] [--dry-run] [--verbose]
|
|
75
76
|
${commandName} instructions:process-create [--harness <name>] [--interactive|--no-interactive] [--json]
|
|
76
77
|
${commandName} instructions:orchestrate [--harness <name>] [--interactive|--no-interactive] [--json]
|
|
77
78
|
${commandName} instructions:breakpoint-handling [--harness <name>] [--interactive|--no-interactive] [--json]
|
|
@@ -61,6 +61,18 @@ export declare const ENV_VAR_CONTRACTS: {
|
|
|
61
61
|
readonly scope: "external-input";
|
|
62
62
|
readonly description: "Overrides node task timeout at process startup.";
|
|
63
63
|
};
|
|
64
|
+
readonly crossSubagents: {
|
|
65
|
+
readonly name: "BABYSITTER_CROSS_SUBAGENTS";
|
|
66
|
+
readonly valueType: "boolean";
|
|
67
|
+
readonly scope: "external-input";
|
|
68
|
+
readonly description: "Enables cross-harness agent/skill auto-dispatch (default OFF).";
|
|
69
|
+
};
|
|
70
|
+
readonly executeTasks: {
|
|
71
|
+
readonly name: "BABYSITTER_EXECUTE_TASKS";
|
|
72
|
+
readonly valueType: "boolean";
|
|
73
|
+
readonly scope: "external-input";
|
|
74
|
+
readonly description: "Enables shell/node task auto-execution (default OFF).";
|
|
75
|
+
};
|
|
64
76
|
};
|
|
65
77
|
readonly azureOpenAi: {
|
|
66
78
|
readonly apiKey: {
|