@a5c-ai/babysitter-sdk 5.0.1-staging.ff2c19f9 → 5.0.1-staging.ff407b73

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.
Files changed (148) hide show
  1. package/README.md +68 -0
  2. package/dist/cli/commands/breakpointRules.d.ts.map +1 -1
  3. package/dist/cli/commands/breakpointRules.js +30 -27
  4. package/dist/cli/commands/compressOutputHelpers.d.ts.map +1 -1
  5. package/dist/cli/commands/compressOutputHelpers.js +18 -2
  6. package/dist/cli/commands/costStats.d.ts.map +1 -1
  7. package/dist/cli/commands/costStats.js +35 -27
  8. package/dist/cli/commands/harness/install.d.ts +2 -3
  9. package/dist/cli/commands/harness/install.d.ts.map +1 -1
  10. package/dist/cli/commands/harness/install.js +11 -10
  11. package/dist/cli/commands/health/checks.d.ts.map +1 -1
  12. package/dist/cli/commands/health/checks.js +4 -3
  13. package/dist/cli/commands/health/environment.d.ts.map +1 -1
  14. package/dist/cli/commands/health/environment.js +11 -1
  15. package/dist/cli/commands/hooks/run.d.ts.map +1 -1
  16. package/dist/cli/commands/hooks/run.js +3 -2
  17. package/dist/cli/commands/instructions.d.ts +1 -1
  18. package/dist/cli/commands/instructions.d.ts.map +1 -1
  19. package/dist/cli/commands/instructions.js +71 -5
  20. package/dist/cli/commands/runIterate.d.ts.map +1 -1
  21. package/dist/cli/commands/runIterate.js +2 -35
  22. package/dist/cli/commands/session/associate.d.ts.map +1 -1
  23. package/dist/cli/commands/session/associate.js +4 -36
  24. package/dist/cli/commands/session/iterationMessage.d.ts.map +1 -1
  25. package/dist/cli/commands/session/iterationMessage.js +9 -54
  26. package/dist/cli/commands/session/resume.d.ts.map +1 -1
  27. package/dist/cli/commands/session/resume.js +6 -16
  28. package/dist/cli/commands/skill.d.ts.map +1 -1
  29. package/dist/cli/commands/skill.js +2 -1
  30. package/dist/cli/commands/tokensStats.d.ts.map +1 -1
  31. package/dist/cli/commands/tokensStats.js +36 -28
  32. package/dist/cli/main/argFlagParsers.d.ts.map +1 -1
  33. package/dist/cli/main/argFlagParsers.js +2 -1
  34. package/dist/cli/main/args.d.ts.map +1 -1
  35. package/dist/cli/main/args.js +4 -27
  36. package/dist/cli/main/dispatchHarness.js +1 -1
  37. package/dist/cli/main/dispatchRunSession.js +0 -10
  38. package/dist/cli/main/runCreate.js +2 -2
  39. package/dist/cli/main/runSupport.d.ts +9 -1
  40. package/dist/cli/main/runSupport.d.ts.map +1 -1
  41. package/dist/cli/main/runSupport.js +71 -1
  42. package/dist/cli/main/usage.d.ts.map +1 -1
  43. package/dist/cli/main/usage.js +42 -38
  44. package/dist/config/configValidation.d.ts.map +1 -1
  45. package/dist/config/configValidation.js +2 -1
  46. package/dist/config/defaults.d.ts +2 -0
  47. package/dist/config/defaults.d.ts.map +1 -1
  48. package/dist/config/defaults.js +3 -1
  49. package/dist/config/index.d.ts +3 -2
  50. package/dist/config/index.d.ts.map +1 -1
  51. package/dist/config/index.js +15 -2
  52. package/dist/config/runs.d.ts +22 -0
  53. package/dist/config/runs.d.ts.map +1 -0
  54. package/dist/config/runs.js +192 -0
  55. package/dist/harness/adapters/cursor.d.ts +1 -0
  56. package/dist/harness/adapters/cursor.d.ts.map +1 -1
  57. package/dist/harness/adapters/cursor.js +34 -0
  58. package/dist/harness/amuxFallbackMetadata.d.ts.map +1 -1
  59. package/dist/harness/amuxFallbackMetadata.js +62 -37
  60. package/dist/harness/amuxMetadata.d.ts.map +1 -1
  61. package/dist/harness/amuxMetadata.js +2 -1
  62. package/dist/harness/discovery.d.ts +21 -1
  63. package/dist/harness/discovery.d.ts.map +1 -1
  64. package/dist/harness/discovery.js +55 -0
  65. package/dist/harness/hooks/runState.d.ts.map +1 -1
  66. package/dist/harness/hooks/runState.js +12 -23
  67. package/dist/harness/hooks/sessionBinding.d.ts.map +1 -1
  68. package/dist/harness/hooks/sessionBinding.js +3 -6
  69. package/dist/harness/hooks/stopHookContinuation.d.ts.map +1 -1
  70. package/dist/harness/hooks/stopHookContinuation.js +8 -16
  71. package/dist/harness/hooks/stopHookHandler.d.ts.map +1 -1
  72. package/dist/harness/hooks/stopHookHandler.js +2 -1
  73. package/dist/harness/hooks/utils.js +3 -3
  74. package/dist/harness/index.d.ts +1 -1
  75. package/dist/harness/index.d.ts.map +1 -1
  76. package/dist/harness/index.js +2 -1
  77. package/dist/harness/install.d.ts +1 -0
  78. package/dist/harness/install.d.ts.map +1 -1
  79. package/dist/harness/install.js +63 -0
  80. package/dist/harness/installSupport.d.ts.map +1 -1
  81. package/dist/harness/installSupport.js +19 -0
  82. package/dist/harness/types.d.ts +7 -0
  83. package/dist/harness/types.d.ts.map +1 -1
  84. package/dist/harness/unified/subprocess.d.ts.map +1 -1
  85. package/dist/harness/unified/subprocess.js +3 -0
  86. package/dist/mcp/tools/sessions.d.ts.map +1 -1
  87. package/dist/mcp/tools/sessions.js +2 -8
  88. package/dist/mcp/util/resolve-run-dir.d.ts +1 -1
  89. package/dist/mcp/util/resolve-run-dir.d.ts.map +1 -1
  90. package/dist/mcp/util/resolve-run-dir.js +3 -39
  91. package/dist/prompts/compose.js +1 -1
  92. package/dist/prompts/templates/effects.md +1 -1
  93. package/dist/prompts/templates/iteration.md +1 -1
  94. package/dist/prompts/templates/results-posting.md +2 -2
  95. package/dist/prompts/templates/run-creation.md +2 -2
  96. package/dist/prompts/templates/run-overlap-detection.md +6 -4
  97. package/dist/prompts/templates/task-examples.md +7 -7
  98. package/dist/prompts/templates/task-kinds.md +7 -3
  99. package/dist/runtime/commitEffectResult.d.ts.map +1 -1
  100. package/dist/runtime/commitEffectResult.js +5 -2
  101. package/dist/runtime/createRun.d.ts.map +1 -1
  102. package/dist/runtime/createRun.js +28 -14
  103. package/dist/runtime/index.d.ts +2 -1
  104. package/dist/runtime/index.d.ts.map +1 -1
  105. package/dist/runtime/index.js +8 -1
  106. package/dist/runtime/intrinsics/subprocess.d.ts +5 -0
  107. package/dist/runtime/intrinsics/subprocess.d.ts.map +1 -0
  108. package/dist/runtime/intrinsics/subprocess.js +56 -0
  109. package/dist/runtime/intrinsics/task.d.ts +1 -0
  110. package/dist/runtime/intrinsics/task.d.ts.map +1 -1
  111. package/dist/runtime/orchestrateIteration.d.ts.map +1 -1
  112. package/dist/runtime/orchestrateIteration.js +8 -2
  113. package/dist/runtime/policy/engine.d.ts +4 -0
  114. package/dist/runtime/policy/engine.d.ts.map +1 -0
  115. package/dist/runtime/policy/engine.js +97 -0
  116. package/dist/runtime/policy/index.d.ts +3 -1
  117. package/dist/runtime/policy/index.d.ts.map +1 -1
  118. package/dist/runtime/policy/index.js +9 -1
  119. package/dist/runtime/policy/logging.d.ts +6 -0
  120. package/dist/runtime/policy/logging.d.ts.map +1 -0
  121. package/dist/runtime/policy/logging.js +43 -0
  122. package/dist/runtime/policy/types.d.ts +4 -0
  123. package/dist/runtime/policy/types.d.ts.map +1 -1
  124. package/dist/runtime/processContext.d.ts +3 -0
  125. package/dist/runtime/processContext.d.ts.map +1 -1
  126. package/dist/runtime/processContext.js +3 -0
  127. package/dist/runtime/replay/createReplayEngine.d.ts +1 -0
  128. package/dist/runtime/replay/createReplayEngine.d.ts.map +1 -1
  129. package/dist/runtime/replay/createReplayEngine.js +26 -0
  130. package/dist/runtime/runLifecycleState.d.ts +7 -0
  131. package/dist/runtime/runLifecycleState.d.ts.map +1 -0
  132. package/dist/runtime/runLifecycleState.js +54 -0
  133. package/dist/runtime/types.d.ts +33 -1
  134. package/dist/runtime/types.d.ts.map +1 -1
  135. package/dist/session/cleanup.d.ts.map +1 -1
  136. package/dist/session/cleanup.js +26 -21
  137. package/dist/session/types.d.ts +1 -1
  138. package/dist/session/types.d.ts.map +1 -1
  139. package/dist/storage/createRunDir.d.ts.map +1 -1
  140. package/dist/storage/createRunDir.js +1 -0
  141. package/dist/storage/types.d.ts +14 -0
  142. package/dist/storage/types.d.ts.map +1 -1
  143. package/dist/tasks/defineTask.d.ts +28 -0
  144. package/dist/tasks/defineTask.d.ts.map +1 -1
  145. package/dist/tasks/defineTask.js +42 -1
  146. package/dist/tasks/types.d.ts +18 -3
  147. package/dist/tasks/types.d.ts.map +1 -1
  148. package/package.json +20 -6
@@ -10,48 +10,15 @@
10
10
  *
11
11
  * The command does NOT loop - it handles exactly one iteration.
12
12
  */
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || (function () {
30
- var ownKeys = function(o) {
31
- ownKeys = Object.getOwnPropertyNames || function (o) {
32
- var ar = [];
33
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
- return ar;
35
- };
36
- return ownKeys(o);
37
- };
38
- return function (mod) {
39
- if (mod && mod.__esModule) return mod;
40
- var result = {};
41
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
- __setModuleDefault(result, mod);
43
- return result;
44
- };
45
- })();
46
13
  Object.defineProperty(exports, "__esModule", { value: true });
47
14
  exports.runIterate = runIterate;
48
- const path = __importStar(require("path"));
49
15
  const runFiles_1 = require("../../storage/runFiles");
50
16
  const runtime_1 = require("../../runtime/hooks/runtime");
51
17
  const orchestrateIteration_1 = require("../../runtime/orchestrateIteration");
52
18
  const completionProof_1 = require("../completionProof");
53
19
  const grouping_1 = require("../../tasks/grouping");
54
20
  const asyncEffects_1 = require("../../runtime/asyncEffects");
21
+ const config_1 = require("../../config");
55
22
  const runIterateHelpers_1 = require("./runIterateHelpers");
56
23
  async function runIterate(options) {
57
24
  const { runDir, verbose } = options;
@@ -61,7 +28,7 @@ async function runIterate(options) {
61
28
  // Determine iteration number from state cache or journal
62
29
  const iterationCount = await (0, runIterateHelpers_1.detectIterationCount)(runDir);
63
30
  const iteration = options.iteration ?? (iterationCount + 1);
64
- const projectRoot = path.dirname(path.dirname(path.dirname(runDir)));
31
+ const projectRoot = (0, config_1.resolveProjectRootForRun)(runDir, metadata.entrypoint?.importPath);
65
32
  if (verbose) {
66
33
  console.error(`[run:iterate] Starting iteration ${iteration} for run ${runId}`);
67
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"associate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/associate.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyFxF"}
1
+ {"version":3,"file":"associate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/associate.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0FxF"}
@@ -1,40 +1,7 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.handleSessionAssociate = handleSessionAssociate;
37
- const path = __importStar(require("node:path"));
4
+ const config_1 = require("../../../config");
38
5
  const session_1 = require("../../../session");
39
6
  const journal_1 = require("../../../storage/journal");
40
7
  const common_1 = require("./common");
@@ -70,9 +37,10 @@ async function handleSessionAssociate(args) {
70
37
  }
71
38
  const oldRunId = existing.state.runId;
72
39
  let isTerminal = true;
73
- if (args.runsDir) {
40
+ if (args.runsDir || oldRunId) {
74
41
  try {
75
- const journal = await (0, journal_1.loadJournal)(path.join(args.runsDir, oldRunId));
42
+ const runDir = (0, config_1.resolveExistingRunDir)(oldRunId, { override: args.runsDir ?? (0, config_1.resolveRunsDir)() });
43
+ const journal = await (0, journal_1.loadJournal)(runDir);
76
44
  isTerminal = journal.some((event) => event.type === "RUN_COMPLETED" || event.type === "RUN_FAILED");
77
45
  }
78
46
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"iterationMessage.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/iterationMessage.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,MAAM,CAAC,CAmGjB"}
1
+ {"version":3,"file":"iterationMessage.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/iterationMessage.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,MAAM,CAAC,CAuFjB"}
@@ -1,46 +1,14 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.handleSessionIterationMessage = handleSessionIterationMessage;
37
- const path = __importStar(require("node:path"));
38
4
  const completionProof_1 = require("../../completionProof");
39
5
  const skill_1 = require("../skill");
40
6
  const effectIndex_1 = require("../../../runtime/replay/effectIndex");
7
+ const runLifecycleState_1 = require("../../../runtime/runLifecycleState");
41
8
  const journal_1 = require("../../../storage/journal");
42
9
  const runFiles_1 = require("../../../storage/runFiles");
43
10
  const active_1 = require("../../../processLibrary/active");
11
+ const config_1 = require("../../../config");
44
12
  function countPendingByKind(records) {
45
13
  const counts = new Map();
46
14
  for (const record of records) {
@@ -65,35 +33,22 @@ async function handleSessionIterationMessage(args) {
65
33
  let pendingKinds = null;
66
34
  let entrypointImportPath;
67
35
  if (args.runId) {
68
- const runDir = path.isAbsolute(args.runId) ? args.runId : path.join(args.runsDir, args.runId);
36
+ const resolvedRunDir = (0, config_1.resolveExistingRunDir)(args.runId, { override: args.runsDir });
69
37
  try {
70
- const metadata = await (0, runFiles_1.readRunMetadata)(runDir);
38
+ const metadata = await (0, runFiles_1.readRunMetadata)(resolvedRunDir);
71
39
  entrypointImportPath = metadata?.entrypoint?.importPath;
72
- const journal = await (0, journal_1.loadJournal)(runDir);
73
- const index = await (0, effectIndex_1.buildEffectIndex)({ runDir, events: journal });
74
- const hasCompleted = journal.some((event) => event.type === "RUN_COMPLETED");
75
- const hasFailed = journal.some((event) => event.type === "RUN_FAILED");
76
- if (hasCompleted) {
40
+ const journal = await (0, journal_1.loadJournal)(resolvedRunDir);
41
+ const index = await (0, effectIndex_1.buildEffectIndex)({ runDir: resolvedRunDir, events: journal });
42
+ const pendingRecords = index.listPendingEffects();
43
+ runState = (0, runLifecycleState_1.deriveObservedRunState)(journal, pendingRecords.length);
44
+ if (runState === "completed") {
77
45
  completionProof = (0, completionProof_1.resolveCompletionProof)(metadata);
78
46
  }
79
- const pendingRecords = index.listPendingEffects();
80
47
  const pendingByKind = countPendingByKind(pendingRecords);
81
48
  const kindKeys = Object.keys(pendingByKind);
82
49
  if (kindKeys.length > 0) {
83
50
  pendingKinds = kindKeys.join(", ");
84
51
  }
85
- if (completionProof) {
86
- runState = "completed";
87
- }
88
- else if (hasFailed) {
89
- runState = "failed";
90
- }
91
- else if (pendingRecords.length > 0) {
92
- runState = "waiting";
93
- }
94
- else {
95
- runState = "created";
96
- }
97
52
  }
98
53
  catch {
99
54
  runState = null;
@@ -1 +1 @@
1
- {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/resume.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAaD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkHlF"}
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/session/resume.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAaD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqGlF"}
@@ -37,6 +37,8 @@ exports.handleSessionResume = handleSessionResume;
37
37
  const node_fs_1 = require("node:fs");
38
38
  const path = __importStar(require("node:path"));
39
39
  const config_1 = require("../../../config");
40
+ const journal_1 = require("../../../storage/journal");
41
+ const runLifecycleState_1 = require("../../../runtime/runLifecycleState");
40
42
  const session_1 = require("../../../session");
41
43
  function emitError(json, error, lines) {
42
44
  if (json) {
@@ -59,8 +61,8 @@ async function handleSessionResume(args) {
59
61
  }
60
62
  const stateDir = args.stateDir ?? (0, config_1.getGlobalStateDir)();
61
63
  const maxIterations = args.maxIterations ?? 256;
62
- const runsDir = args.runsDir ?? '.a5c/runs';
63
- const runDir = path.join(runsDir, runId);
64
+ const runsDir = args.runsDir ?? (0, config_1.resolveRunsDir)();
65
+ const runDir = (0, config_1.resolveExistingRunDir)(runId, { override: runsDir });
64
66
  try {
65
67
  await node_fs_1.promises.access(runDir);
66
68
  }
@@ -75,20 +77,8 @@ async function handleSessionResume(args) {
75
77
  try {
76
78
  const runJson = JSON.parse(await node_fs_1.promises.readFile(path.join(runDir, 'run.json'), 'utf8'));
77
79
  processId = (typeof runJson.processId === 'string' ? runJson.processId : undefined) ?? 'unknown';
78
- const journalFiles = await node_fs_1.promises.readdir(path.join(runDir, 'journal'));
79
- const lastFile = journalFiles.filter((file) => file.endsWith('.json')).sort().pop();
80
- if (lastFile) {
81
- const lastEvent = JSON.parse(await node_fs_1.promises.readFile(path.join(runDir, 'journal', lastFile), 'utf8'));
82
- if (lastEvent.type === 'RUN_COMPLETED') {
83
- runState = 'completed';
84
- }
85
- else if (lastEvent.type === 'RUN_FAILED') {
86
- runState = 'failed';
87
- }
88
- else {
89
- runState = 'waiting';
90
- }
91
- }
80
+ const journal = await (0, journal_1.loadJournal)(runDir);
81
+ runState = (0, runLifecycleState_1.deriveObservedRunState)(journal, (0, runLifecycleState_1.countPendingEffectsFromJournal)(journal));
92
82
  }
93
83
  catch {
94
84
  runState = 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH,OAAO,KAAK,EAEV,oBAAoB,EAGpB,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4LhC;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DjF;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDpF"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skill.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,OAAO,KAAK,EAEV,oBAAoB,EAGpB,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4LhC;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DjF;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDpF"}
@@ -46,11 +46,12 @@ const path = __importStar(require("node:path"));
46
46
  const discoveryLocal_1 = require("./skill/discoveryLocal");
47
47
  const remoteDiscovery_1 = require("./skill/remoteDiscovery");
48
48
  const active_1 = require("../../processLibrary/active");
49
+ const config_1 = require("../../config");
49
50
  var processMarkers_1 = require("./skill/processMarkers");
50
51
  Object.defineProperty(exports, "discoverFromProcessFile", { enumerable: true, get: function () { return processMarkers_1.discoverFromProcessFile; } });
51
52
  Object.defineProperty(exports, "parseProcessFileMarkers", { enumerable: true, get: function () { return processMarkers_1.parseProcessFileMarkers; } });
52
53
  async function discoverSkillsInternal(options) {
53
- const { pluginRoot: explicitPluginRoot, libraryPath, runId = '', cacheTtl = discoveryLocal_1.DEFAULT_CACHE_TTL, runsDir = '.a5c/runs', includeRemote = false, processPath, includeProcesses = false, } = options;
54
+ const { pluginRoot: explicitPluginRoot, libraryPath, runId = '', cacheTtl = discoveryLocal_1.DEFAULT_CACHE_TTL, runsDir = (0, config_1.resolveRunsDir)(), includeRemote = false, processPath, includeProcesses = false, } = options;
54
55
  // Resolve pluginRoot from explicit arg or environment variables
55
56
  const pluginRoot = explicitPluginRoot
56
57
  || process.env.CLAUDE_PLUGIN_ROOT
@@ -1 +1 @@
1
- {"version":3,"file":"tokensStats.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tokensStats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/B,IAAI,EAAE,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC9C,WAAW,EAAE,aAAa,GAAG,aAAa,GAAG,oBAAoB,GAAG,aAAa,GAAG,sBAAsB,CAAC;IAC3G,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4JD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwCpF"}
1
+ {"version":3,"file":"tokensStats.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/tokensStats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAeH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IAC/B,IAAI,EAAE,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC9C,WAAW,EAAE,aAAa,GAAG,aAAa,GAAG,oBAAoB,GAAG,aAAa,GAAG,sBAAsB,CAAC;IAC3G,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAuKD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCpF"}
@@ -46,7 +46,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
46
46
  exports.handleTokensStats = handleTokensStats;
47
47
  const node_fs_1 = require("node:fs");
48
48
  const path = __importStar(require("node:path"));
49
- const defaults_1 = require("../../config/defaults");
49
+ const config_1 = require("../../config");
50
50
  const tokensStatsFormatting_1 = require("./tokensStatsFormatting");
51
51
  // ============================================================================
52
52
  // Journal Reading
@@ -119,8 +119,8 @@ function computeRunStats(runId, events) {
119
119
  // ============================================================================
120
120
  // Single Run
121
121
  // ============================================================================
122
- async function statsForRun(runsDir, runId) {
123
- const runDir = path.join(runsDir, runId);
122
+ async function statsForRun(runId, runsDirOverride) {
123
+ const runDir = (0, config_1.resolveExistingRunDir)(runId, { override: runsDirOverride });
124
124
  const journalDir = path.join(runDir, "journal");
125
125
  let stat;
126
126
  try {
@@ -138,31 +138,40 @@ async function statsForRun(runsDir, runId) {
138
138
  // ============================================================================
139
139
  // All Runs
140
140
  // ============================================================================
141
- async function statsForAllRuns(runsDir) {
142
- let entries;
143
- try {
144
- entries = await node_fs_1.promises.readdir(runsDir);
145
- }
146
- catch {
147
- entries = [];
148
- }
141
+ async function statsForAllRuns(readableRunsDirs) {
149
142
  const runs = [];
150
- for (const entry of entries) {
151
- const runDir = path.join(runsDir, entry);
143
+ const seenRunDirs = new Set();
144
+ for (const runsDir of readableRunsDirs) {
145
+ let entries;
152
146
  try {
153
- const s = await node_fs_1.promises.stat(runDir);
154
- if (!s.isDirectory())
155
- continue;
147
+ entries = await node_fs_1.promises.readdir(runsDir);
156
148
  }
157
149
  catch {
158
- continue;
150
+ entries = [];
151
+ }
152
+ for (const entry of entries) {
153
+ const runDir = path.join(runsDir, entry);
154
+ let normalizedRunDir;
155
+ try {
156
+ const s = await node_fs_1.promises.stat(runDir);
157
+ if (!s.isDirectory())
158
+ continue;
159
+ normalizedRunDir = path.resolve(runDir);
160
+ }
161
+ catch {
162
+ continue;
163
+ }
164
+ if (seenRunDirs.has(normalizedRunDir)) {
165
+ continue;
166
+ }
167
+ seenRunDirs.add(normalizedRunDir);
168
+ const journalDir = path.join(runDir, "journal");
169
+ const events = await readJournalDir(journalDir);
170
+ const compressionEvents = extractCompressionEvents(events);
171
+ if (compressionEvents.length === 0)
172
+ continue;
173
+ runs.push(computeRunStats(entry, compressionEvents));
159
174
  }
160
- const journalDir = path.join(runDir, "journal");
161
- const events = await readJournalDir(journalDir);
162
- const compressionEvents = extractCompressionEvents(events);
163
- if (compressionEvents.length === 0)
164
- continue;
165
- runs.push(computeRunStats(entry, compressionEvents));
166
175
  }
167
176
  let totalOriginal = 0;
168
177
  let totalCompressed = 0;
@@ -188,11 +197,10 @@ async function statsForAllRuns(runsDir) {
188
197
  // Main Handler
189
198
  // ============================================================================
190
199
  async function handleTokensStats(options) {
191
- const runsDir = options.runsDir ?? process.env[defaults_1.CONFIG_ENV_VARS.RUNS_DIR] ?? defaults_1.DEFAULTS.runsDir;
192
- const resolvedRunsDir = path.resolve(runsDir);
200
+ const readableRunsDirs = (0, config_1.getReadableRunsDirs)({ override: options.runsDir });
193
201
  const useColors = (0, tokensStatsFormatting_1.supportsColors)();
194
202
  if (options.all) {
195
- const agg = await statsForAllRuns(resolvedRunsDir);
203
+ const agg = await statsForAllRuns(readableRunsDirs);
196
204
  if (options.json) {
197
205
  console.log(JSON.stringify(agg, null, 2));
198
206
  }
@@ -202,9 +210,9 @@ async function handleTokensStats(options) {
202
210
  return 0;
203
211
  }
204
212
  if (options.runId) {
205
- const stats = await statsForRun(resolvedRunsDir, options.runId);
213
+ const stats = await statsForRun(options.runId, options.runsDir);
206
214
  if (!stats) {
207
- const msg = `Run not found: ${options.runId} (looked in ${resolvedRunsDir})`;
215
+ const msg = `Run not found: ${options.runId} (looked in ${readableRunsDirs.join(", ")})`;
208
216
  if (options.json) {
209
217
  console.error(JSON.stringify({ error: msg }));
210
218
  }
@@ -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;AAE1C,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,CA4SnD,CAAC"}
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,CA4SnD,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.FLAG_PARSERS = void 0;
8
+ const config_1 = require("../../config");
8
9
  function expectFlagValue(args, index, flag) {
9
10
  const value = args[index];
10
11
  if (!value) {
@@ -44,7 +45,7 @@ function readOptionalSessionId(args, index) {
44
45
  }
45
46
  exports.FLAG_PARSERS = {
46
47
  "--runs-dir": (parsed, args, index) => {
47
- parsed.runsDir = expectFlagValue(args, index + 1, "--runs-dir");
48
+ parsed.runsDir = (0, config_1.resolveRunsDir)({ override: expectFlagValue(args, index + 1, "--runs-dir") });
48
49
  return index + 1;
49
50
  },
50
51
  "--kind": (parsed, args, index) => {
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/cli/main/args.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,sBAAsB,IAAI,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE9F,QAAA,MAAM,sBAAsB,sCAAgC,CAAC;AAsC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAuCpD;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBzE;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/cli/main/args.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,sBAAsB,IAAI,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAE9F,QAAA,MAAM,sBAAsB,sCAAgC,CAAC;AAsC7D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAuCpD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
@@ -36,9 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.collapseDoubledA5cRuns = void 0;
37
37
  exports.parseArgs = parseArgs;
38
38
  exports.resolveRunDir = resolveRunDir;
39
- const node_fs_1 = require("node:fs");
40
39
  const path = __importStar(require("node:path"));
41
- const defaults_1 = require("../../config/defaults");
40
+ const config_1 = require("../../config");
42
41
  const argFlags_1 = require("./argFlags");
43
42
  const argPositionals_1 = require("./argPositionals");
44
43
  const resolveInputPath_1 = require("../resolveInputPath");
@@ -47,7 +46,7 @@ exports.collapseDoubledA5cRuns = collapseDoubledA5cRuns;
47
46
  function createDefaultParsedArgs(initialCommand) {
48
47
  return {
49
48
  command: initialCommand,
50
- runsDir: process.env[defaults_1.CONFIG_ENV_VARS.RUNS_DIR] ?? defaults_1.DEFAULTS.runsDir,
49
+ runsDir: (0, config_1.resolveRunsDir)(),
51
50
  json: false,
52
51
  dryRun: false,
53
52
  verbose: false,
@@ -113,31 +112,9 @@ function parseArgs(argv) {
113
112
  (0, argPositionals_1.applyPositionalArgs)(parsed, positionals);
114
113
  return parsed;
115
114
  }
116
- function normalizePosix(value) {
117
- return path.normalize(value).replace(/\\/g, "/").replace(/\/+$/, "");
118
- }
119
115
  function resolveRunDir(baseDir, runDirArg) {
120
116
  if (!runDirArg)
121
117
  throw new Error("Run directory argument is required.");
122
- if (path.isAbsolute(runDirArg)) {
123
- return collapseDoubledA5cRuns(path.normalize(runDirArg));
124
- }
125
- const normalBase = normalizePosix(baseDir);
126
- const normalArg = normalizePosix(runDirArg);
127
- if (normalBase && (normalArg === normalBase || normalArg.startsWith(normalBase + "/"))) {
128
- return collapseDoubledA5cRuns(path.resolve(runDirArg));
129
- }
130
- const standard = collapseDoubledA5cRuns(path.resolve(baseDir, runDirArg));
131
- try {
132
- if (!(0, node_fs_1.existsSync)(standard)) {
133
- const fromCwd = path.resolve(runDirArg);
134
- if ((0, node_fs_1.existsSync)(fromCwd)) {
135
- return collapseDoubledA5cRuns(fromCwd);
136
- }
137
- }
138
- }
139
- catch {
140
- // Ignore filesystem errors during resolution.
141
- }
142
- return standard;
118
+ const resolved = (0, config_1.resolveExistingRunDir)(runDirArg, { override: baseDir });
119
+ return collapseDoubledA5cRuns(path.normalize(resolved));
143
120
  }
@@ -60,7 +60,7 @@ async function executeHarnessInfraCommand(parsed) {
60
60
  verbose: parsed.verbose,
61
61
  });
62
62
  case "harness:install-plugin":
63
- return (0, install_1.handleHarnessInstallPlugin)({
63
+ return await (0, install_1.handleHarnessInstallPlugin)({
64
64
  harnessName: parsed.positional?.[0],
65
65
  workspace: parsed.workspace,
66
66
  json: parsed.json,
@@ -237,16 +237,6 @@ async function executeSupportCommand(parsed) {
237
237
  return await (0, processLibrary_1.handleProcessLibraryCommand)(args);
238
238
  }
239
239
  if (parsed.command?.startsWith("instructions:")) {
240
- if (!parsed.harness) {
241
- const message = "instructions commands require --harness <name>";
242
- if (parsed.json) {
243
- console.log(JSON.stringify({ error: "missing_flag", message }));
244
- }
245
- else {
246
- console.error(`[instructions] ${message}`);
247
- }
248
- return 1;
249
- }
250
240
  const args = {
251
241
  subcommand: parsed.command.split(":")[1],
252
242
  harness: parsed.harness,
@@ -165,7 +165,7 @@ async function handleRunCreate(parsed) {
165
165
  runDir: result.runDir,
166
166
  pluginRoot: adapter.resolvePluginRoot(parsed),
167
167
  stateDir: parsed.stateDir,
168
- runsDir: parsed.runsDir,
168
+ runsDir,
169
169
  maxIterations: parsed.maxIterations,
170
170
  prompt: parsed.prompt ?? "",
171
171
  verbose: parsed.verbose,
@@ -196,7 +196,7 @@ async function handleRunCreate(parsed) {
196
196
  pluginRoot: discoverPluginRoot,
197
197
  libraryPath: libraryPath || undefined,
198
198
  runId: result.runId,
199
- runsDir: parsed.runsDir,
199
+ runsDir,
200
200
  processPath: absoluteImportPath,
201
201
  });
202
202
  discoveredSkills = discoverResult.skills.map((skill) => ({ name: skill.name, file: skill.file }));
@@ -1,3 +1,5 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { createRequire } from "node:module";
1
3
  import type { ParsedArgs } from "./types";
2
4
  import type { StateCacheSnapshot } from "../../runtime/replay/stateCache";
3
5
  import type { EffectAction, IterationMetadata } from "../../runtime/types";
@@ -7,6 +9,11 @@ type ActionSummary = {
7
9
  kind: string;
8
10
  label?: string;
9
11
  };
12
+ type LocalSdkDependencyOptions = {
13
+ createRequireFn?: typeof createRequire;
14
+ resolveSdkPackageDir?: () => string;
15
+ fsImpl?: Pick<typeof fs, "access" | "mkdir" | "symlink">;
16
+ };
10
17
  export declare function summarizeActions(actions: EffectAction[]): ActionSummary[];
11
18
  export declare function logPendingActions(actions: EffectAction[], options?: {
12
19
  command?: string;
@@ -33,7 +40,8 @@ export declare function parseEntrypointSpecifier(specifier: string): {
33
40
  importPath: string;
34
41
  exportName?: string;
35
42
  };
36
- export declare function validateProcessEntrypoint(importPath: string, exportName?: string): Promise<void>;
43
+ export declare function ensureProcessLocalSdkDependency(importPath: string, options?: LocalSdkDependencyOptions): Promise<void>;
44
+ export declare function validateProcessEntrypoint(importPath: string, exportName?: string, options?: LocalSdkDependencyOptions): Promise<void>;
37
45
  export declare function readInputsFile(filePath: string): Promise<unknown>;
38
46
  export declare function readStdinUtf8(): Promise<string>;
39
47
  export declare function resolveCommandRunDir(parsed: ParsedArgs): string;
@@ -1 +1 @@
1
- {"version":3,"file":"runSupport.d.ts","sourceRoot":"","sources":["../../../src/cli/main/runSupport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runSupport.d.ts","sourceRoot":"","sources":["../../../src/cli/main/runSupport.ts"],"names":[],"mappings":"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"}