@a5c-ai/agent-platform 5.0.1-staging.04ca6ab00d21 → 5.0.1-staging.40a93c240e7b

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 (120) hide show
  1. package/README.md +8 -13
  2. package/dist/cost/journal.d.ts.map +1 -1
  3. package/dist/cost/journal.js +23 -2
  4. package/dist/daemon/index.d.ts +2 -0
  5. package/dist/daemon/index.d.ts.map +1 -1
  6. package/dist/daemon/index.js +5 -1
  7. package/dist/harness/amux/amuxEventMapper.d.ts +6 -1
  8. package/dist/harness/amux/amuxEventMapper.d.ts.map +1 -1
  9. package/dist/harness/amux/amuxEventMapper.js +13 -5
  10. package/dist/harness/amux/amuxStdinReader.js +2 -2
  11. package/dist/harness/index.d.ts +8 -0
  12. package/dist/harness/index.d.ts.map +1 -1
  13. package/dist/harness/index.js +26 -1
  14. package/dist/harness/internal/createRun/agent-core-loop.d.ts +43 -0
  15. package/dist/harness/internal/createRun/agent-core-loop.d.ts.map +1 -0
  16. package/dist/harness/internal/createRun/agent-core-loop.js +247 -0
  17. package/dist/harness/internal/createRun/orchestration/constants.d.ts.map +1 -1
  18. package/dist/harness/internal/createRun/orchestration/constants.js +4 -0
  19. package/dist/harness/internal/createRun/orchestration/effects.d.ts.map +1 -1
  20. package/dist/harness/internal/createRun/orchestration/effects.js +4 -5
  21. package/dist/harness/internal/createRun/orchestration/effectsHelpers.js +1 -1
  22. package/dist/harness/internal/createRun/orchestration/externalPhase.d.ts.map +1 -1
  23. package/dist/harness/internal/createRun/orchestration/externalPhase.js +9 -5
  24. package/dist/harness/internal/createRun/orchestration/externalPhaseHelpers.js +1 -1
  25. package/dist/harness/internal/createRun/orchestration/index.d.ts.map +1 -1
  26. package/dist/harness/internal/createRun/orchestration/index.js +214 -0
  27. package/dist/harness/internal/createRun/orchestration/internalPhase.js +1 -1
  28. package/dist/harness/internal/createRun/output.d.ts.map +1 -1
  29. package/dist/harness/internal/createRun/output.js +50 -0
  30. package/dist/harness/internal/createRun/pi.d.ts +9 -33
  31. package/dist/harness/internal/createRun/pi.d.ts.map +1 -1
  32. package/dist/harness/internal/createRun/pi.js +33 -214
  33. package/dist/harness/internal/createRun/planProcess/delegation.js +1 -1
  34. package/dist/harness/internal/createRun/planProcess/phase.d.ts.map +1 -1
  35. package/dist/harness/internal/createRun/planProcess/phase.js +70 -17
  36. package/dist/harness/internal/createRun/planProcess/prompts.d.ts.map +1 -1
  37. package/dist/harness/internal/createRun/planProcess/prompts.js +21 -0
  38. package/dist/harness/internal/createRun/planProcess/recovery.d.ts.map +1 -1
  39. package/dist/harness/internal/createRun/planProcess/recovery.js +20 -3
  40. package/dist/harness/internal/createRun/planProcess/validation.d.ts.map +1 -1
  41. package/dist/harness/internal/createRun/planProcess/validation.js +22 -4
  42. package/dist/harness/internal/createRun/prompts.d.ts +4 -0
  43. package/dist/harness/internal/createRun/prompts.d.ts.map +1 -1
  44. package/dist/harness/internal/createRun/prompts.js +23 -0
  45. package/dist/harness/internal/createRun/utils.d.ts +1 -1
  46. package/dist/harness/internal/createRun/utils.d.ts.map +1 -1
  47. package/dist/harness/internal/createRun/utils.js +5 -2
  48. package/dist/harness/piWrapper/moduleSupport.d.ts.map +1 -1
  49. package/dist/harness/piWrapper/moduleSupport.js +4 -3
  50. package/dist/harness/piWrapper.d.ts +2 -2
  51. package/dist/harness/piWrapper.d.ts.map +1 -1
  52. package/dist/harness/piWrapper.js +5 -2
  53. package/dist/harness/types.d.ts +1 -1
  54. package/dist/index.d.ts +0 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +0 -1
  57. package/dist/mcp/client/config.d.ts.map +1 -1
  58. package/dist/mcp/client/config.js +3 -1
  59. package/dist/mcp/client/executor.d.ts.map +1 -1
  60. package/dist/mcp/client/executor.js +1 -0
  61. package/dist/mcp/client/manager.d.ts.map +1 -1
  62. package/dist/mcp/client/manager.js +1 -0
  63. package/dist/seams/contract.d.ts +5 -5
  64. package/dist/seams/contract.d.ts.map +1 -1
  65. package/dist/seams/contract.js +3 -5
  66. package/dist/seams/contract.test.js +4 -7
  67. package/dist/storage/journalWatcher.d.ts.map +1 -1
  68. package/dist/storage/journalWatcher.js +2 -1
  69. package/package.json +14 -18
  70. package/dist/cli/amuxEventsFormatter.d.ts +0 -26
  71. package/dist/cli/amuxEventsFormatter.d.ts.map +0 -1
  72. package/dist/cli/amuxEventsFormatter.js +0 -86
  73. package/dist/cli/args/argFlags.d.ts +0 -6
  74. package/dist/cli/args/argFlags.d.ts.map +0 -1
  75. package/dist/cli/args/argFlags.js +0 -72
  76. package/dist/cli/args/argPositionals.d.ts +0 -3
  77. package/dist/cli/args/argPositionals.d.ts.map +0 -1
  78. package/dist/cli/args/argPositionals.js +0 -18
  79. package/dist/cli/args/index.d.ts +0 -4
  80. package/dist/cli/args/index.d.ts.map +0 -1
  81. package/dist/cli/args/index.js +0 -75
  82. package/dist/cli/args/types.d.ts +0 -13
  83. package/dist/cli/args/types.d.ts.map +0 -1
  84. package/dist/cli/args/types.js +0 -2
  85. package/dist/cli/commands/daemon.d.ts +0 -31
  86. package/dist/cli/commands/daemon.d.ts.map +0 -1
  87. package/dist/cli/commands/daemon.js +0 -156
  88. package/dist/cli/commands/harness/createRun.d.ts +0 -3
  89. package/dist/cli/commands/harness/createRun.d.ts.map +0 -1
  90. package/dist/cli/commands/harness/createRun.js +0 -8
  91. package/dist/cli/commands/harness/resumeRun.d.ts +0 -20
  92. package/dist/cli/commands/harness/resumeRun.d.ts.map +0 -1
  93. package/dist/cli/commands/harness/resumeRun.js +0 -341
  94. package/dist/cli/commands/jsonlInteractive.d.ts +0 -35
  95. package/dist/cli/commands/jsonlInteractive.d.ts.map +0 -1
  96. package/dist/cli/commands/jsonlInteractive.js +0 -302
  97. package/dist/cli/commands/mcpServe.d.ts +0 -18
  98. package/dist/cli/commands/mcpServe.d.ts.map +0 -1
  99. package/dist/cli/commands/mcpServe.js +0 -59
  100. package/dist/cli/commands/session/history.d.ts +0 -14
  101. package/dist/cli/commands/session/history.d.ts.map +0 -1
  102. package/dist/cli/commands/session/history.js +0 -100
  103. package/dist/cli/commands/tui.d.ts +0 -23
  104. package/dist/cli/commands/tui.d.ts.map +0 -1
  105. package/dist/cli/commands/tui.js +0 -183
  106. package/dist/cli/dispatch.d.ts +0 -4
  107. package/dist/cli/dispatch.d.ts.map +0 -1
  108. package/dist/cli/dispatch.js +0 -332
  109. package/dist/cli/main.d.ts +0 -7
  110. package/dist/cli/main.d.ts.map +0 -1
  111. package/dist/cli/main.js +0 -41
  112. package/dist/cli/program.d.ts +0 -7
  113. package/dist/cli/program.d.ts.map +0 -1
  114. package/dist/cli/program.js +0 -8
  115. package/dist/cli/ui.d.ts +0 -9
  116. package/dist/cli/ui.d.ts.map +0 -1
  117. package/dist/cli/ui.js +0 -125
  118. package/dist/prompts/commandTemplates.d.ts +0 -3
  119. package/dist/prompts/commandTemplates.d.ts.map +0 -1
  120. package/dist/prompts/commandTemplates.js +0 -238
package/README.md CHANGED
@@ -1,34 +1,29 @@
1
1
  # @a5c-ai/agent-platform
2
2
 
3
- Agent Platform layer — harness integration, governance, CLI hosting, interaction, storage.
3
+ Agent Platform layer — harness integration, governance, interaction, storage.
4
4
 
5
5
  <!-- docs-status:start -->
6
6
  > Status: Public advanced/runtime package.
7
7
  > Canonical docs home: [Package and Plugin Docs Map](../../docs/package-and-plugin-map.md).
8
- > This README is the canonical runtime CLI contract for operator-facing `agent-platform` workflows.
8
+ > This README is the canonical runtime/platform API contract. The product CLI implementation lives in `@a5c-ai/omni`.
9
9
  <!-- docs-status:end -->
10
10
 
11
11
  ## Installation
12
12
 
13
13
  ```bash
14
- npm install -g @a5c-ai/agent-platform
14
+ npm install @a5c-ai/agent-platform
15
15
  ```
16
16
 
17
17
  ## Usage
18
18
 
19
- This package provides the `agent-platform` command. Use it for runtime orchestration.
19
+ Use this package as the reusable platform API layer. Install `@a5c-ai/omni` for the product CLI.
20
20
 
21
- ```bash
22
- agent-platform --help
23
- agent-platform call --harness claude-code --prompt "implement feature X" --workspace .
24
- babysitter session:init --session-id demo --state-dir .a5c --run-id run-123
25
- agent-platform start-server --transport stdio
26
- agent-platform discover --json
27
- agent-platform invoke claude-code --prompt "implement feature X" --workspace .
28
- agent-platform tui --workspace .
21
+ ```ts
22
+ import { discoverHarnesses, invokeHarness } from "@a5c-ai/agent-platform/harness";
23
+ import { apiRunStatus } from "@a5c-ai/agent-platform/api";
29
24
  ```
30
25
 
31
- Use the main `babysitter` CLI for harness installation and session-state commands:
26
+ Use `@a5c-ai/omni` for the product CLI and the main `babysitter` CLI for harness installation and session-state commands:
32
27
 
33
28
  ```bash
34
29
  babysitter harness:install claude-code
@@ -1 +1 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/cost/journal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAGb,MAAM,SAAS,CAAC;AAGjB,4DAA4D;AAC5D,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA0B5B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,EAAE,GACrB,YAAY,CAwFd"}
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/cost/journal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAGb,MAAM,SAAS,CAAC;AAGjB,4DAA4D;AAC5D,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,YAAY,EAAE,GACrB,YAAY,CAyGd"}
@@ -37,10 +37,14 @@ async function appendCostEvent(runDir, costData) {
37
37
  if (!enriched.timestamp) {
38
38
  enriched.timestamp = new Date().toISOString();
39
39
  }
40
+ // Convert CostEventData to JsonRecord (Record<string, unknown>) without a
41
+ // double-cast. Spread produces a plain object whose type satisfies the
42
+ // index signature that CostEventData's interface lacks.
43
+ const eventRecord = { ...enriched };
40
44
  return (0, babysitter_sdk_1.appendEvent)({
41
45
  runDir,
42
46
  eventType: exports.COST_TRACKED_EVENT_TYPE,
43
- event: enriched,
47
+ event: eventRecord,
44
48
  });
45
49
  }
46
50
  /**
@@ -77,7 +81,24 @@ function computeRunCostStats(runId, events) {
77
81
  byKind: {},
78
82
  };
79
83
  for (const event of costEvents) {
80
- const data = event.data;
84
+ // Validate the expected shape before treating data as CostEventData.
85
+ // journal event data is typed as JsonRecord (Record<string, unknown>),
86
+ // so we perform a runtime check on the critical numeric fields.
87
+ const raw = event.data;
88
+ if (typeof raw !== "object" || raw === null) {
89
+ continue; // skip malformed events
90
+ }
91
+ const data = {
92
+ model: typeof raw.model === "string" ? raw.model : "unknown",
93
+ inputTokens: typeof raw.inputTokens === "number" ? raw.inputTokens : 0,
94
+ outputTokens: typeof raw.outputTokens === "number" ? raw.outputTokens : 0,
95
+ cacheCreationTokens: typeof raw.cacheCreationTokens === "number" ? raw.cacheCreationTokens : 0,
96
+ cacheReadTokens: typeof raw.cacheReadTokens === "number" ? raw.cacheReadTokens : 0,
97
+ cacheCreation5mTokens: typeof raw.cacheCreation5mTokens === "number" ? raw.cacheCreation5mTokens : 0,
98
+ cacheCreation1hTokens: typeof raw.cacheCreation1hTokens === "number" ? raw.cacheCreation1hTokens : 0,
99
+ costUsd: typeof raw.costUsd === "number" ? raw.costUsd : undefined,
100
+ taskKind: typeof raw.taskKind === "string" ? raw.taskKind : undefined,
101
+ };
81
102
  const inputTokens = data.inputTokens ?? 0;
82
103
  const outputTokens = data.outputTokens ?? 0;
83
104
  const cacheCreationTokens = data.cacheCreationTokens ?? 0;
@@ -4,4 +4,6 @@
4
4
  * through this barrel file.
5
5
  */
6
6
  export { startDaemon, stopDaemon, getDaemonStatus, loadDaemonConfig, writeDaemonConfig, createFileWatcher, createWebhookListener, createTimerScheduler, runDaemonLoop, readDaemonLoopStatus, appendDaemonLog, readDaemonLog, type DaemonConfig, type DaemonStartOptions, type DaemonStartOutput, type DaemonStopOptions, type DaemonStopOutput, type DaemonStatusOptions, type DaemonStatusOutput, type DaemonMetadata, type TriggerConfig, type TriggerEvent, type FileTriggerEvent, type AutomationTriggerEvent, type FileTriggerConfig, type FileWatcherHandle, type WebhookListenerOptions, type WebhookListenerHandle, type TriggerCallback, type TimerSchedulerHandle, type DaemonLoopOptions, type DaemonLoopStatus, type DaemonLogEntry, } from "@a5c-ai/agent-runtime/daemon";
7
+ export { executeAutomationTrigger } from "./automationExecutor";
8
+ export { isAutomationTriggerEvent } from "./types";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,WAAW,EACX,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,WAAW,EACX,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readDaemonLog = exports.appendDaemonLog = exports.readDaemonLoopStatus = exports.runDaemonLoop = exports.createTimerScheduler = exports.createWebhookListener = exports.createFileWatcher = exports.writeDaemonConfig = exports.loadDaemonConfig = exports.getDaemonStatus = exports.stopDaemon = exports.startDaemon = void 0;
3
+ exports.isAutomationTriggerEvent = exports.executeAutomationTrigger = exports.readDaemonLog = exports.appendDaemonLog = exports.readDaemonLoopStatus = exports.runDaemonLoop = exports.createTimerScheduler = exports.createWebhookListener = exports.createFileWatcher = exports.writeDaemonConfig = exports.loadDaemonConfig = exports.getDaemonStatus = exports.stopDaemon = exports.startDaemon = void 0;
4
4
  /**
5
5
  * Re-export shim — canonical implementation lives in @a5c-ai/agent-runtime.
6
6
  * Internal agent-platform consumers continue to import via relative paths
@@ -19,3 +19,7 @@ Object.defineProperty(exports, "runDaemonLoop", { enumerable: true, get: functio
19
19
  Object.defineProperty(exports, "readDaemonLoopStatus", { enumerable: true, get: function () { return daemon_1.readDaemonLoopStatus; } });
20
20
  Object.defineProperty(exports, "appendDaemonLog", { enumerable: true, get: function () { return daemon_1.appendDaemonLog; } });
21
21
  Object.defineProperty(exports, "readDaemonLog", { enumerable: true, get: function () { return daemon_1.readDaemonLog; } });
22
+ var automationExecutor_1 = require("./automationExecutor");
23
+ Object.defineProperty(exports, "executeAutomationTrigger", { enumerable: true, get: function () { return automationExecutor_1.executeAutomationTrigger; } });
24
+ var types_1 = require("./types");
25
+ Object.defineProperty(exports, "isAutomationTriggerEvent", { enumerable: true, get: function () { return types_1.isAutomationTriggerEvent; } });
@@ -31,8 +31,12 @@ export interface BabysitterEvent {
31
31
  }
32
32
  /**
33
33
  * Known babysitter event kinds derived from agent-mux event types.
34
+ *
35
+ * The const array is the single source of truth -- the type union and
36
+ * runtime Set are both derived from it so they can never drift apart.
34
37
  */
35
- export type BabysitterEventKind = "session_start" | "session_end" | "text_delta" | "thinking_delta" | "tool_call_start" | "tool_result" | "cost" | "token_usage" | "approval_request" | "input_required" | "error" | "crash" | "context_compacted" | "unknown";
38
+ declare const BABYSITTER_EVENT_KINDS: readonly ["session_start", "session_end", "text_delta", "thinking_delta", "tool_call_start", "tool_result", "cost", "token_usage", "approval_request", "input_required", "error", "crash", "context_compacted", "unknown"];
39
+ export type BabysitterEventKind = (typeof BABYSITTER_EVENT_KINDS)[number];
36
40
  /**
37
41
  * Map an agent-mux AgentEvent to a agent-platform internal event.
38
42
  *
@@ -55,4 +59,5 @@ export declare function isInteractiveEvent(event: BabysitterEvent): boolean;
55
59
  export declare function isErrorEvent(event: BabysitterEvent): boolean;
56
60
  /** Returns true if the event represents a session lifecycle boundary. */
57
61
  export declare function isSessionLifecycleEvent(event: BabysitterEvent): boolean;
62
+ export {};
58
63
  //# sourceMappingURL=amuxEventMapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"amuxEventMapper.d.ts","sourceRoot":"","sources":["../../../src/harness/amux/amuxEventMapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,MAAM,GACN,aAAa,GACb,kBAAkB,GAClB,gBAAgB,GAChB,OAAO,GACP,OAAO,GACP,mBAAmB,GACnB,SAAS,CAAC;AA0Bd;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAmB1E;AAMD,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAElE;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE5D;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEvE"}
1
+ {"version":3,"file":"amuxEventMapper.d.ts","sourceRoot":"","sources":["../../../src/harness/amux/amuxEventMapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;;GAKG;AACH,QAAA,MAAM,sBAAsB,4NAelB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAc1E;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI,CAmB1E;AAMD,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE3D;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAElE;AAED,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAE5D;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAEvE"}
@@ -18,10 +18,13 @@ exports.isCostEvent = isCostEvent;
18
18
  exports.isInteractiveEvent = isInteractiveEvent;
19
19
  exports.isErrorEvent = isErrorEvent;
20
20
  exports.isSessionLifecycleEvent = isSessionLifecycleEvent;
21
- // ---------------------------------------------------------------------------
22
- // Well-known event type set
23
- // ---------------------------------------------------------------------------
24
- const KNOWN_EVENT_TYPES = new Set([
21
+ /**
22
+ * Known babysitter event kinds derived from agent-mux event types.
23
+ *
24
+ * The const array is the single source of truth -- the type union and
25
+ * runtime Set are both derived from it so they can never drift apart.
26
+ */
27
+ const BABYSITTER_EVENT_KINDS = [
25
28
  "session_start",
26
29
  "session_end",
27
30
  "text_delta",
@@ -35,7 +38,12 @@ const KNOWN_EVENT_TYPES = new Set([
35
38
  "error",
36
39
  "crash",
37
40
  "context_compacted",
38
- ]);
41
+ "unknown",
42
+ ];
43
+ // ---------------------------------------------------------------------------
44
+ // Well-known event type set (derived from the const array above)
45
+ // ---------------------------------------------------------------------------
46
+ const KNOWN_EVENT_TYPES = new Set(BABYSITTER_EVENT_KINDS.filter((k) => k !== "unknown"));
39
47
  // ---------------------------------------------------------------------------
40
48
  // Mapper
41
49
  // ---------------------------------------------------------------------------
@@ -73,8 +73,8 @@ function createAmuxStdinReader() {
73
73
  try {
74
74
  parsed = JSON.parse(trimmed);
75
75
  }
76
- catch {
77
- // Not JSON -- skip
76
+ catch (e) {
77
+ process.stderr.write(`[babysitter] amux stdin: invalid JSON line, skipping\n`);
78
78
  continue;
79
79
  }
80
80
  if (typeof parsed["type"] !== "string" || typeof parsed["id"] !== "string") {
@@ -7,4 +7,12 @@ export { buildLaunchSpec } from "./invoker/launch";
7
7
  export { createAgentCoreSession, type AgentCoreEventListener } from "@a5c-ai/agent-core";
8
8
  export type { AgentCoreSessionHandle } from "@a5c-ai/agent-core";
9
9
  export * as amux from "./amux";
10
+ export { handleHarnessCreateRun, handleSessionCreate, runOrchestrationPhase, selectHarness, } from "./internal/createRun";
11
+ export type { HarnessCreateRunArgs, SessionCreateArgs, } from "./internal/createRun";
12
+ export type { OutputMode, ToolResultShape, } from "./internal/createRun/utils";
13
+ export { BOLD, DIM, MAGENTA, RED, RESET, formatToolResult, writeVerboseBlock, writeVerboseLine, } from "./internal/createRun/utils";
14
+ export { assessRun, discoverRuns } from "./internal/createRun/resumeState";
15
+ export { normalizeBuiltInHarnessName } from "./builtInHarness";
16
+ export { invokeViaAgentMux, type AmuxBridgeOptions, type AmuxBridgeResult, type AmuxEventCallback, type AmuxClient, type AmuxRunHandle, type AmuxAgentEvent, type AmuxInteractionChannel, } from "./amux";
17
+ export { HARNESS_TO_AMUX_ADAPTER, mapHarnessToAmuxAdapter, hasAmuxAdapter, } from "./amux";
10
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzF,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzF,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,UAAU,EACV,eAAe,GAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,IAAI,EACJ,GAAG,EACH,OAAO,EACP,GAAG,EACH,KAAK,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,sBAAsB,GAC5B,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,GACf,MAAM,QAAQ,CAAC"}
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.amux = exports.createAgentCoreSession = exports.buildLaunchSpec = exports.HARNESS_CLI_MAP = exports.buildHarnessArgs = exports.invokeHarness = exports.parseSearchResults = exports.filterByRelevance = exports.extractTextFromHtml = exports.stripHtmlTags = exports.AGENTIC_TOOL_NAMES = exports.disposeAgentCoreToolDefinitions = exports.createAgentCoreToolDefinitions = exports.resetAdapter = exports.setAdapter = exports.getAdapter = exports.listSupportedHarnesses = exports.getAdapterByName = exports.detectAdapter = exports.KNOWN_HARNESSES = exports.checkCliAvailable = exports.detectCallerHarness = exports.discoverHarnesses = exports.HarnessCapability = void 0;
36
+ exports.hasAmuxAdapter = exports.mapHarnessToAmuxAdapter = exports.HARNESS_TO_AMUX_ADAPTER = exports.invokeViaAgentMux = exports.normalizeBuiltInHarnessName = exports.discoverRuns = exports.assessRun = exports.writeVerboseLine = exports.writeVerboseBlock = exports.formatToolResult = exports.RESET = exports.RED = exports.MAGENTA = exports.DIM = exports.BOLD = exports.selectHarness = exports.runOrchestrationPhase = exports.handleSessionCreate = exports.handleHarnessCreateRun = exports.amux = exports.createAgentCoreSession = exports.buildLaunchSpec = exports.HARNESS_CLI_MAP = exports.buildHarnessArgs = exports.invokeHarness = exports.parseSearchResults = exports.filterByRelevance = exports.extractTextFromHtml = exports.stripHtmlTags = exports.AGENTIC_TOOL_NAMES = exports.disposeAgentCoreToolDefinitions = exports.createAgentCoreToolDefinitions = exports.resetAdapter = exports.setAdapter = exports.getAdapter = exports.listSupportedHarnesses = exports.getAdapterByName = exports.detectAdapter = exports.KNOWN_HARNESSES = exports.checkCliAvailable = exports.detectCallerHarness = exports.discoverHarnesses = exports.HarnessCapability = void 0;
37
37
  var types_1 = require("./types");
38
38
  Object.defineProperty(exports, "HarnessCapability", { enumerable: true, get: function () { return types_1.HarnessCapability; } });
39
39
  var babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
@@ -64,3 +64,28 @@ Object.defineProperty(exports, "buildLaunchSpec", { enumerable: true, get: funct
64
64
  var agent_core_2 = require("@a5c-ai/agent-core");
65
65
  Object.defineProperty(exports, "createAgentCoreSession", { enumerable: true, get: function () { return agent_core_2.createAgentCoreSession; } });
66
66
  exports.amux = __importStar(require("./amux"));
67
+ var createRun_1 = require("./internal/createRun");
68
+ Object.defineProperty(exports, "handleHarnessCreateRun", { enumerable: true, get: function () { return createRun_1.handleHarnessCreateRun; } });
69
+ Object.defineProperty(exports, "handleSessionCreate", { enumerable: true, get: function () { return createRun_1.handleSessionCreate; } });
70
+ Object.defineProperty(exports, "runOrchestrationPhase", { enumerable: true, get: function () { return createRun_1.runOrchestrationPhase; } });
71
+ Object.defineProperty(exports, "selectHarness", { enumerable: true, get: function () { return createRun_1.selectHarness; } });
72
+ var utils_1 = require("./internal/createRun/utils");
73
+ Object.defineProperty(exports, "BOLD", { enumerable: true, get: function () { return utils_1.BOLD; } });
74
+ Object.defineProperty(exports, "DIM", { enumerable: true, get: function () { return utils_1.DIM; } });
75
+ Object.defineProperty(exports, "MAGENTA", { enumerable: true, get: function () { return utils_1.MAGENTA; } });
76
+ Object.defineProperty(exports, "RED", { enumerable: true, get: function () { return utils_1.RED; } });
77
+ Object.defineProperty(exports, "RESET", { enumerable: true, get: function () { return utils_1.RESET; } });
78
+ Object.defineProperty(exports, "formatToolResult", { enumerable: true, get: function () { return utils_1.formatToolResult; } });
79
+ Object.defineProperty(exports, "writeVerboseBlock", { enumerable: true, get: function () { return utils_1.writeVerboseBlock; } });
80
+ Object.defineProperty(exports, "writeVerboseLine", { enumerable: true, get: function () { return utils_1.writeVerboseLine; } });
81
+ var resumeState_1 = require("./internal/createRun/resumeState");
82
+ Object.defineProperty(exports, "assessRun", { enumerable: true, get: function () { return resumeState_1.assessRun; } });
83
+ Object.defineProperty(exports, "discoverRuns", { enumerable: true, get: function () { return resumeState_1.discoverRuns; } });
84
+ var builtInHarness_1 = require("./builtInHarness");
85
+ Object.defineProperty(exports, "normalizeBuiltInHarnessName", { enumerable: true, get: function () { return builtInHarness_1.normalizeBuiltInHarnessName; } });
86
+ var amux_1 = require("./amux");
87
+ Object.defineProperty(exports, "invokeViaAgentMux", { enumerable: true, get: function () { return amux_1.invokeViaAgentMux; } });
88
+ var amux_2 = require("./amux");
89
+ Object.defineProperty(exports, "HARNESS_TO_AMUX_ADAPTER", { enumerable: true, get: function () { return amux_2.HARNESS_TO_AMUX_ADAPTER; } });
90
+ Object.defineProperty(exports, "mapHarnessToAmuxAdapter", { enumerable: true, get: function () { return amux_2.mapHarnessToAmuxAdapter; } });
91
+ Object.defineProperty(exports, "hasAmuxAdapter", { enumerable: true, get: function () { return amux_2.hasAmuxAdapter; } });
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Agent-core internal loop utilities.
3
+ *
4
+ * Prompt retry logic, session options builder, timeout constants, and
5
+ * metadata helpers used by the createRun orchestration phases.
6
+ *
7
+ * Previously lived in pi.ts — renamed to reflect that these are generic
8
+ * agent-core concerns, not Pi-specific.
9
+ */
10
+ import type { EffectAction } from "@a5c-ai/babysitter-sdk";
11
+ import type { AgentCorePromptResult, AgentCoreSessionOptions } from "../../types";
12
+ import type { DelegationConfig } from "./utils";
13
+ export declare const TRANSIENT_PROMPT_RETRY_DELAYS_MS: number[];
14
+ export declare const PARENT_PROMPT_TIMEOUT_MS = 900000;
15
+ export declare const DEFAULT_PROMPT_TIMEOUT_MS = 900000;
16
+ export declare const WORKER_TIMEOUT_MS = 1800000;
17
+ export declare function readBooleanMetadata(metadata: Record<string, unknown> | undefined, key: string): boolean | undefined;
18
+ export declare function readBashSandboxMetadata(metadata: Record<string, unknown> | undefined): AgentCoreSessionOptions["bashSandbox"] | undefined;
19
+ export declare function readStringMetadata(metadata: Record<string, unknown> | undefined, key: string): string | undefined;
20
+ export declare function isProcessModuleLoadFailure(error: unknown): boolean;
21
+ export declare function isRetryablePromptFailure(error: unknown): boolean;
22
+ export declare function isIgnorablePromptFailure(output: string): boolean;
23
+ type PromptCapableSession = {
24
+ prompt(text: string, timeout?: number): Promise<AgentCorePromptResult>;
25
+ };
26
+ export declare function promptWithRetry(args: {
27
+ session: PromptCapableSession;
28
+ message: string;
29
+ timeout: number;
30
+ label: string;
31
+ writeVerbose?: (message: string) => void;
32
+ writeVerboseData?: (label: string, value: unknown, maxChars?: number) => void;
33
+ }): Promise<AgentCorePromptResult>;
34
+ export declare function buildWorkerSessionOptions(args: {
35
+ action: EffectAction;
36
+ workspace?: string;
37
+ model?: string;
38
+ customTools?: unknown[];
39
+ delegationConfig?: DelegationConfig;
40
+ }): AgentCoreSessionOptions;
41
+ export declare function resolveAgentCoreBackendForHarness(harnessName?: string): string | undefined;
42
+ export {};
43
+ //# sourceMappingURL=agent-core-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-core-loop.d.ts","sourceRoot":"","sources":["../../../../src/harness/internal/createRun/agent-core-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAMhD,eAAO,MAAM,gCAAgC,UAE3B,CAAC;AAEnB,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAChD,eAAO,MAAM,yBAAyB,SAAU,CAAC;AACjD,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAM3C,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,GAAG,EAAE,MAAM,GACV,OAAO,GAAG,SAAS,CAYrB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC5C,uBAAuB,CAAC,aAAa,CAAC,GAAG,SAAS,CAKpD;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAGpB;AAMD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAwBhE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAMD,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACxE,CAAC;AAEF,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/E,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyCjC;AAMD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,GAAG,uBAAuB,CAoE1B;AAMD,wBAAgB,iCAAiC,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAe1F"}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /**
3
+ * Agent-core internal loop utilities.
4
+ *
5
+ * Prompt retry logic, session options builder, timeout constants, and
6
+ * metadata helpers used by the createRun orchestration phases.
7
+ *
8
+ * Previously lived in pi.ts — renamed to reflect that these are generic
9
+ * agent-core concerns, not Pi-specific.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.WORKER_TIMEOUT_MS = exports.DEFAULT_PROMPT_TIMEOUT_MS = exports.PARENT_PROMPT_TIMEOUT_MS = exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS = void 0;
46
+ exports.readBooleanMetadata = readBooleanMetadata;
47
+ exports.readBashSandboxMetadata = readBashSandboxMetadata;
48
+ exports.readStringMetadata = readStringMetadata;
49
+ exports.isProcessModuleLoadFailure = isProcessModuleLoadFailure;
50
+ exports.isRetryablePromptFailure = isRetryablePromptFailure;
51
+ exports.isIgnorablePromptFailure = isIgnorablePromptFailure;
52
+ exports.promptWithRetry = promptWithRetry;
53
+ exports.buildWorkerSessionOptions = buildWorkerSessionOptions;
54
+ exports.resolveAgentCoreBackendForHarness = resolveAgentCoreBackendForHarness;
55
+ const path = __importStar(require("node:path"));
56
+ const node_fs_1 = require("node:fs");
57
+ const amuxHarnessMap_1 = require("../../amux/amuxHarnessMap");
58
+ const builtInHarness_1 = require("../../builtInHarness");
59
+ // ---------------------------------------------------------------------------
60
+ // Timeout constants
61
+ // ---------------------------------------------------------------------------
62
+ exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS = process.env.VITEST
63
+ ? [0, 0]
64
+ : [1_000, 3_000];
65
+ exports.PARENT_PROMPT_TIMEOUT_MS = 900_000;
66
+ exports.DEFAULT_PROMPT_TIMEOUT_MS = 900_000;
67
+ exports.WORKER_TIMEOUT_MS = 1_800_000;
68
+ // ---------------------------------------------------------------------------
69
+ // Metadata helpers
70
+ // ---------------------------------------------------------------------------
71
+ function readBooleanMetadata(metadata, key) {
72
+ const value = metadata?.[key];
73
+ if (typeof value === "boolean") {
74
+ return value;
75
+ }
76
+ if (value === "true") {
77
+ return true;
78
+ }
79
+ if (value === "false") {
80
+ return false;
81
+ }
82
+ return undefined;
83
+ }
84
+ function readBashSandboxMetadata(metadata) {
85
+ const value = metadata?.bashSandbox;
86
+ return value === "auto" || value === "secure" || value === "local"
87
+ ? value
88
+ : undefined;
89
+ }
90
+ function readStringMetadata(metadata, key) {
91
+ const value = metadata?.[key];
92
+ return typeof value === "string" ? value : undefined;
93
+ }
94
+ // ---------------------------------------------------------------------------
95
+ // Error classification
96
+ // ---------------------------------------------------------------------------
97
+ function isProcessModuleLoadFailure(error) {
98
+ return error instanceof Error && /^Failed to load process module at /.test(error.message);
99
+ }
100
+ function isRetryablePromptFailure(error) {
101
+ const message = typeof error === "string"
102
+ ? error
103
+ : error instanceof Error
104
+ ? error.message
105
+ : typeof error === "object" && error !== null && "output" in error
106
+ ? String(error.output ?? "")
107
+ : "";
108
+ if (!message) {
109
+ return false;
110
+ }
111
+ const normalized = message.toLowerCase();
112
+ return normalized.includes("the server had an error processing your request") ||
113
+ normalized.includes("please retry your request") ||
114
+ normalized.includes("temporarily unavailable") ||
115
+ normalized.includes("rate limit") ||
116
+ normalized.includes("too many requests") ||
117
+ normalized.includes("pitimeouterror") ||
118
+ normalized.includes("prompt timed out") ||
119
+ normalized.includes("deadline exceeded") ||
120
+ normalized.includes("already processing");
121
+ }
122
+ function isIgnorablePromptFailure(output) {
123
+ return output.includes("msg.content.filter is not a function");
124
+ }
125
+ async function promptWithRetry(args) {
126
+ let attempt = 0;
127
+ for (;;) {
128
+ try {
129
+ const result = await args.session.prompt(args.message, args.timeout);
130
+ if (result.success ||
131
+ !isRetryablePromptFailure(result.output) ||
132
+ attempt >= exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS.length) {
133
+ return result;
134
+ }
135
+ const delayMs = exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS[attempt] ?? 0;
136
+ if (attempt === 0)
137
+ process.stderr.write(`[babysitter] ${args.label}: transient failure, retrying...\n`);
138
+ attempt += 1;
139
+ args.writeVerbose?.(`[${args.label} retry] transient failure; retrying prompt attempt ${attempt}/${exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS.length} after ${delayMs}ms`);
140
+ args.writeVerboseData?.(`${args.label} retry failure output`, result.output);
141
+ if (delayMs > 0) {
142
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
143
+ }
144
+ }
145
+ catch (error) {
146
+ if (!isRetryablePromptFailure(error) || attempt >= exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS.length) {
147
+ throw error;
148
+ }
149
+ const delayMs = exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS[attempt] ?? 0;
150
+ if (attempt === 0)
151
+ process.stderr.write(`[babysitter] ${args.label}: transient failure, retrying...\n`);
152
+ attempt += 1;
153
+ args.writeVerbose?.(`[${args.label} retry] transient exception; retrying prompt attempt ${attempt}/${exports.TRANSIENT_PROMPT_RETRY_DELAYS_MS.length} after ${delayMs}ms`);
154
+ args.writeVerboseData?.(`${args.label} retry error`, error);
155
+ if (delayMs > 0) {
156
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
157
+ }
158
+ }
159
+ }
160
+ }
161
+ // ---------------------------------------------------------------------------
162
+ // Worker session options
163
+ // ---------------------------------------------------------------------------
164
+ function buildWorkerSessionOptions(args) {
165
+ const metadata = args.action.taskDef?.metadata;
166
+ const isolated = readBooleanMetadata(metadata, "isolated");
167
+ const enableCompaction = readBooleanMetadata(metadata, "enableCompaction");
168
+ const effectiveModel = args.delegationConfig?.model ?? args.model;
169
+ const effectiveTimeout = args.delegationConfig?.timeout ?? exports.WORKER_TIMEOUT_MS;
170
+ const effectiveToolsMode = args.delegationConfig?.toolsMode
171
+ ?? readStringMetadata(metadata, "toolsMode")
172
+ ?? "coding";
173
+ const rawThinkingLevel = args.delegationConfig?.thinkingLevel
174
+ ?? readStringMetadata(metadata, "thinkingLevel");
175
+ const effectiveThinkingLevel = rawThinkingLevel === "none" ? undefined : rawThinkingLevel;
176
+ const effectiveBashSandbox = args.delegationConfig?.bashSandbox
177
+ ?? readBashSandboxMetadata(metadata);
178
+ let appendSystemPrompt;
179
+ const skillNames = args.delegationConfig?.skills ?? metadata?.skills;
180
+ if (skillNames?.length) {
181
+ const skillContents = [];
182
+ for (const skillName of skillNames) {
183
+ try {
184
+ const candidates = [
185
+ path.join(args.workspace ?? process.cwd(), ".a5c", "skills", skillName, "SKILL.md"),
186
+ path.join(args.workspace ?? process.cwd(), ".claude", "plugins", skillName, "SKILL.md"),
187
+ ];
188
+ for (const candidate of candidates) {
189
+ if ((0, node_fs_1.existsSync)(candidate)) {
190
+ skillContents.push((0, node_fs_1.readFileSync)(candidate, "utf8"));
191
+ break;
192
+ }
193
+ }
194
+ }
195
+ catch { /* skip missing skills */ }
196
+ }
197
+ if (skillContents.length) {
198
+ appendSystemPrompt = [skillContents.join("\n\n---\n\n")];
199
+ }
200
+ }
201
+ const subagentName = args.delegationConfig?.subagentName ?? readStringMetadata(metadata, "subagentName");
202
+ let agentDir;
203
+ if (subagentName) {
204
+ const candidates = [
205
+ path.join(args.workspace ?? process.cwd(), ".claude", "agents", subagentName),
206
+ ];
207
+ for (const candidate of candidates) {
208
+ if ((0, node_fs_1.existsSync)(candidate)) {
209
+ agentDir = candidate;
210
+ break;
211
+ }
212
+ }
213
+ }
214
+ return {
215
+ workspace: args.workspace,
216
+ model: effectiveModel,
217
+ timeout: effectiveTimeout,
218
+ toolsMode: effectiveToolsMode,
219
+ ephemeral: true,
220
+ ...(args.customTools?.length ? { customTools: args.customTools } : {}),
221
+ ...(isolated !== undefined ? { isolated } : {}),
222
+ ...(enableCompaction !== undefined ? { enableCompaction } : {}),
223
+ ...(effectiveBashSandbox ? { bashSandbox: effectiveBashSandbox } : {}),
224
+ ...(effectiveThinkingLevel ? { thinkingLevel: effectiveThinkingLevel } : {}),
225
+ ...(appendSystemPrompt ? { appendSystemPrompt } : {}),
226
+ ...(agentDir ? { agentDir } : {}),
227
+ };
228
+ }
229
+ // ---------------------------------------------------------------------------
230
+ // Harness → backend resolution
231
+ // ---------------------------------------------------------------------------
232
+ function resolveAgentCoreBackendForHarness(harnessName) {
233
+ const normalizedHarness = (0, builtInHarness_1.normalizeBuiltInHarnessName)(harnessName?.trim() ?? "");
234
+ if (!normalizedHarness) {
235
+ return undefined;
236
+ }
237
+ if (normalizedHarness === "agent-core") {
238
+ return "agent-core";
239
+ }
240
+ if (normalizedHarness === "pi") {
241
+ return "pi";
242
+ }
243
+ if ((0, amuxHarnessMap_1.hasAmuxAdapter)(normalizedHarness)) {
244
+ return (0, amuxHarnessMap_1.mapHarnessToAmuxAdapter)(normalizedHarness);
245
+ }
246
+ return normalizedHarness;
247
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/harness/internal/createRun/orchestration/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mCAAmC,UAE7B,CAAC;AAEpB,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,oCAAoC,IAAI,CAAC;AACtD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,4BAA4B,sBAE5B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/harness/internal/createRun/orchestration/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mCAAmC,UAE7B,CAAC;AAGpB,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,oCAAoC,IAAI,CAAC;AAEtD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,4BAA4B,sBAE5B,CAAC"}
@@ -4,9 +4,13 @@ exports.EFFECT_RETRY_DELAYS_OVERRIDE = exports.MAX_PROCESS_ERROR_RECOVERIES = ex
4
4
  exports.PROCESS_MODULE_LOAD_RETRY_DELAYS_MS = process.env.VITEST
5
5
  ? [0, 0]
6
6
  : [100, 250, 500];
7
+ // Max consecutive API timeouts before aborting the run (prevents infinite wait on unresponsive provider)
7
8
  exports.MAX_CONSECUTIVE_TIMEOUTS = 3;
9
+ // Max consecutive iterations where no progress is made (effect dispatched but not resolved)
8
10
  exports.MAX_CONSECUTIVE_STALLS = 2;
11
+ // Max consecutive iterations where the process itself errors (distinct from API/effect errors)
9
12
  exports.MAX_CONSECUTIVE_PROCESS_ERROR_STALLS = 5;
13
+ // Total process-error recoveries allowed across the entire run lifetime
10
14
  exports.MAX_PROCESS_ERROR_RECOVERIES = 5;
11
15
  exports.EFFECT_RETRY_DELAYS_OVERRIDE = process.env.VITEST
12
16
  ? [0, 0, 0]
@@ -1 +1 @@
1
- {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../../../src/harness/internal/createRun/orchestration/effects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../../../src/harness/internal/createRun/orchestration/effects.ts"],"names":[],"mappings":"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"}