@ashlr/hub 2.2.0 → 3.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.
Files changed (177) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +59 -2
  3. package/dist/api/plugin.d.ts +1 -0
  4. package/dist/cli/backlog.js +2 -0
  5. package/dist/cli/backlog.js.map +1 -1
  6. package/dist/cli/digest.d.ts +6 -0
  7. package/dist/cli/digest.js +127 -2
  8. package/dist/cli/digest.js.map +1 -1
  9. package/dist/cli/eval-fixtures.d.ts +18 -0
  10. package/dist/cli/eval-fixtures.js +38 -0
  11. package/dist/cli/eval-fixtures.js.map +1 -0
  12. package/dist/cli/eval.d.ts +56 -0
  13. package/dist/cli/eval.js +283 -0
  14. package/dist/cli/eval.js.map +1 -0
  15. package/dist/cli/fleet.d.ts +27 -0
  16. package/dist/cli/fleet.js +222 -0
  17. package/dist/cli/fleet.js.map +1 -0
  18. package/dist/cli/goal.d.ts +15 -0
  19. package/dist/cli/goal.js +91 -0
  20. package/dist/cli/goal.js.map +1 -0
  21. package/dist/cli/help.js +10 -3
  22. package/dist/cli/help.js.map +1 -1
  23. package/dist/cli/inbox.d.ts +6 -0
  24. package/dist/cli/inbox.js +183 -8
  25. package/dist/cli/inbox.js.map +1 -1
  26. package/dist/cli/index.js +42 -0
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/cli/loop.d.ts +16 -0
  29. package/dist/cli/loop.js +66 -0
  30. package/dist/cli/loop.js.map +1 -0
  31. package/dist/cli/mcp.d.ts +12 -0
  32. package/dist/cli/mcp.js +148 -0
  33. package/dist/cli/mcp.js.map +1 -1
  34. package/dist/cli/onboard.d.ts +16 -0
  35. package/dist/cli/onboard.js +71 -0
  36. package/dist/cli/onboard.js.map +1 -1
  37. package/dist/cli/plugins.js +9 -8
  38. package/dist/cli/plugins.js.map +1 -1
  39. package/dist/cli/pulse.d.ts +10 -0
  40. package/dist/cli/pulse.js +261 -0
  41. package/dist/cli/pulse.js.map +1 -1
  42. package/dist/cli/run.js +21 -3
  43. package/dist/cli/run.js.map +1 -1
  44. package/dist/cli/stack.d.ts +34 -0
  45. package/dist/cli/stack.js +221 -0
  46. package/dist/cli/stack.js.map +1 -0
  47. package/dist/cli/update.js +12 -5
  48. package/dist/cli/update.js.map +1 -1
  49. package/dist/core/daemon/loop.d.ts +10 -5
  50. package/dist/core/daemon/loop.js +167 -37
  51. package/dist/core/daemon/loop.js.map +1 -1
  52. package/dist/core/env-bridge.js +3 -2
  53. package/dist/core/env-bridge.js.map +1 -1
  54. package/dist/core/fleet/automerge-pass.d.ts +33 -0
  55. package/dist/core/fleet/automerge-pass.js +61 -0
  56. package/dist/core/fleet/automerge-pass.js.map +1 -0
  57. package/dist/core/fleet/quota.d.ts +70 -0
  58. package/dist/core/fleet/quota.js +198 -0
  59. package/dist/core/fleet/quota.js.map +1 -0
  60. package/dist/core/fleet/router.d.ts +46 -0
  61. package/dist/core/fleet/router.js +121 -0
  62. package/dist/core/fleet/router.js.map +1 -0
  63. package/dist/core/fleet/self.d.ts +58 -0
  64. package/dist/core/fleet/self.js +187 -0
  65. package/dist/core/fleet/self.js.map +1 -0
  66. package/dist/core/fleet/status.d.ts +54 -0
  67. package/dist/core/fleet/status.js +157 -0
  68. package/dist/core/fleet/status.js.map +1 -0
  69. package/dist/core/foundry/provenance.d.ts +78 -0
  70. package/dist/core/foundry/provenance.js +172 -0
  71. package/dist/core/foundry/provenance.js.map +1 -0
  72. package/dist/core/git.d.ts +13 -0
  73. package/dist/core/git.js +26 -0
  74. package/dist/core/git.js.map +1 -1
  75. package/dist/core/inbox/merge.d.ts +151 -0
  76. package/dist/core/inbox/merge.js +858 -0
  77. package/dist/core/inbox/merge.js.map +1 -0
  78. package/dist/core/inbox/store.js +10 -1
  79. package/dist/core/inbox/store.js.map +1 -1
  80. package/dist/core/integrations/markdown.d.ts +66 -0
  81. package/dist/core/integrations/markdown.js +132 -0
  82. package/dist/core/integrations/markdown.js.map +1 -0
  83. package/dist/core/integrations/secrets.d.ts +37 -0
  84. package/dist/core/integrations/secrets.js +67 -0
  85. package/dist/core/integrations/secrets.js.map +1 -0
  86. package/dist/core/integrations/stack.d.ts +47 -0
  87. package/dist/core/integrations/stack.js +107 -0
  88. package/dist/core/integrations/stack.js.map +1 -0
  89. package/dist/core/mcp-native-engineer.d.ts +123 -0
  90. package/dist/core/mcp-native-engineer.js +936 -0
  91. package/dist/core/mcp-native-engineer.js.map +1 -0
  92. package/dist/core/mcp-native.js +20 -42
  93. package/dist/core/mcp-native.js.map +1 -1
  94. package/dist/core/mcp-registry.js +2 -0
  95. package/dist/core/mcp-registry.js.map +1 -1
  96. package/dist/core/observability/codex-source.d.ts +53 -0
  97. package/dist/core/observability/codex-source.js +390 -0
  98. package/dist/core/observability/codex-source.js.map +1 -0
  99. package/dist/core/observability/estimate.d.ts +12 -0
  100. package/dist/core/observability/estimate.js +26 -0
  101. package/dist/core/observability/estimate.js.map +1 -1
  102. package/dist/core/observability/limits.d.ts +52 -0
  103. package/dist/core/observability/limits.js +316 -0
  104. package/dist/core/observability/limits.js.map +1 -0
  105. package/dist/core/observability/usage-source.js +3 -1
  106. package/dist/core/observability/usage-source.js.map +1 -1
  107. package/dist/core/portfolio/scanners.d.ts +1 -0
  108. package/dist/core/portfolio/scanners.js +40 -1
  109. package/dist/core/portfolio/scanners.js.map +1 -1
  110. package/dist/core/providers.js +4 -0
  111. package/dist/core/providers.js.map +1 -1
  112. package/dist/core/quality/health.js +1 -0
  113. package/dist/core/quality/health.js.map +1 -1
  114. package/dist/core/run/agent-loop.d.ts +8 -0
  115. package/dist/core/run/agent-loop.js +24 -14
  116. package/dist/core/run/agent-loop.js.map +1 -1
  117. package/dist/core/run/engine-registry.d.ts +48 -0
  118. package/dist/core/run/engine-registry.js +190 -0
  119. package/dist/core/run/engine-registry.js.map +1 -0
  120. package/dist/core/run/engines.d.ts +17 -3
  121. package/dist/core/run/engines.js +63 -44
  122. package/dist/core/run/engines.js.map +1 -1
  123. package/dist/core/run/learned-router.d.ts +121 -0
  124. package/dist/core/run/learned-router.js +374 -0
  125. package/dist/core/run/learned-router.js.map +1 -0
  126. package/dist/core/run/model-manager.js +3 -3
  127. package/dist/core/run/model-manager.js.map +1 -1
  128. package/dist/core/run/model-profile.d.ts +67 -0
  129. package/dist/core/run/model-profile.js +132 -0
  130. package/dist/core/run/model-profile.js.map +1 -0
  131. package/dist/core/run/orchestrator.d.ts +1 -1
  132. package/dist/core/run/orchestrator.js +642 -510
  133. package/dist/core/run/orchestrator.js.map +1 -1
  134. package/dist/core/run/prompts/budget.d.ts +25 -0
  135. package/dist/core/run/prompts/budget.js +51 -0
  136. package/dist/core/run/prompts/budget.js.map +1 -0
  137. package/dist/core/run/prompts/index.d.ts +14 -0
  138. package/dist/core/run/prompts/index.js +59 -0
  139. package/dist/core/run/prompts/index.js.map +1 -0
  140. package/dist/core/run/prompts/layers.d.ts +26 -0
  141. package/dist/core/run/prompts/layers.js +73 -0
  142. package/dist/core/run/prompts/layers.js.map +1 -0
  143. package/dist/core/run/prompts/roles.d.ts +23 -0
  144. package/dist/core/run/prompts/roles.js +48 -0
  145. package/dist/core/run/prompts/roles.js.map +1 -0
  146. package/dist/core/run/prompts/types.d.ts +38 -0
  147. package/dist/core/run/prompts/types.js +5 -0
  148. package/dist/core/run/prompts/types.js.map +1 -0
  149. package/dist/core/run/provider-client.d.ts +6 -24
  150. package/dist/core/run/provider-client.js +125 -61
  151. package/dist/core/run/provider-client.js.map +1 -1
  152. package/dist/core/run/router.js +8 -0
  153. package/dist/core/run/router.js.map +1 -1
  154. package/dist/core/run/sandboxed-engine.d.ts +66 -0
  155. package/dist/core/run/sandboxed-engine.js +262 -0
  156. package/dist/core/run/sandboxed-engine.js.map +1 -0
  157. package/dist/core/run/verify-commands.d.ts +83 -0
  158. package/dist/core/run/verify-commands.js +234 -0
  159. package/dist/core/run/verify-commands.js.map +1 -0
  160. package/dist/core/run/verify.d.ts +31 -1
  161. package/dist/core/run/verify.js +48 -0
  162. package/dist/core/run/verify.js.map +1 -1
  163. package/dist/core/sandbox/audit.d.ts +27 -0
  164. package/dist/core/sandbox/audit.js +34 -0
  165. package/dist/core/sandbox/audit.js.map +1 -1
  166. package/dist/core/sandbox/confine.d.ts +134 -0
  167. package/dist/core/sandbox/confine.js +370 -0
  168. package/dist/core/sandbox/confine.js.map +1 -0
  169. package/dist/core/types.d.ts +227 -5
  170. package/dist/core/web/api.js +77 -28
  171. package/dist/core/web/api.js.map +1 -1
  172. package/dist/core/web/control.d.ts +116 -0
  173. package/dist/core/web/control.js +307 -0
  174. package/dist/core/web/control.js.map +1 -0
  175. package/dist/core/web/public/app.js +512 -6
  176. package/dist/core/web/public/styles.css +468 -0
  177. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/core/quality/health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/core/quality/health.ts"],"names":[],"mappings":"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"}
@@ -37,4 +37,12 @@ export declare function runTask(task: RunTask, client: ProviderClient, ctx: {
37
37
  /** M11: optional StreamSink for live progress events. Defaults to nullSink. */
38
38
  sink?: StreamSink;
39
39
  onStep: (s: RunStep) => void;
40
+ /**
41
+ * M41: when true, build the system prompt from the model-adaptive prompt
42
+ * suite and use the model profile's step cap. Default/false → the legacy
43
+ * two-sentence prompt + TASK_STEP_CAP (byte-identical to prior behavior).
44
+ */
45
+ adaptivePrompts?: boolean;
46
+ /** M41: optional memory block to inject into the executor prompt. */
47
+ memory?: string;
40
48
  }): Promise<RunTask>;
@@ -12,6 +12,8 @@
12
12
  */
13
13
  import { addUsage, overBudget, newUsage } from './budget.js';
14
14
  import { nullSink } from './streaming.js';
15
+ import { resolveModelProfile } from './model-profile.js';
16
+ import { assembleSystemPrompt } from './prompts/index.js';
15
17
  /** Maximum steps per task, regardless of budget (safety backstop). */
16
18
  const TASK_STEP_CAP = 20;
17
19
  /**
@@ -92,20 +94,28 @@ export async function runTask(task, client, ctx) {
92
94
  }
93
95
  }
94
96
  }
97
+ // M41: model-adaptive system prompt + step cap when enabled; otherwise the
98
+ // legacy literal and TASK_STEP_CAP (unchanged behavior when the flag is off).
99
+ const profile = resolveModelProfile(client.model);
100
+ const useAdaptive = ctx.adaptivePrompts === true;
101
+ const stepCap = useAdaptive ? profile.stepCap : TASK_STEP_CAP;
102
+ const systemContent = useAdaptive
103
+ ? assembleSystemPrompt({
104
+ role: 'executor',
105
+ useTools,
106
+ profile,
107
+ memory: ctx.memory,
108
+ charCap: profile.promptCharCap,
109
+ }).system
110
+ : 'You are an Ashlr sub-agent. Be concise and focused. ' +
111
+ 'Complete the given task directly. ' +
112
+ (useTools
113
+ ? 'You may call tools to gather information; always follow up with a final answer.'
114
+ : 'Do not request tools — respond with a final textual answer only.');
95
115
  // Build the initial message list.
96
116
  const messages = [
97
- {
98
- role: 'system',
99
- content: 'You are an Ashlr sub-agent. Be concise and focused. ' +
100
- 'Complete the given task directly. ' +
101
- (useTools
102
- ? 'You may call tools to gather information; always follow up with a final answer.'
103
- : 'Do not request tools — respond with a final textual answer only.'),
104
- },
105
- {
106
- role: 'user',
107
- content: task.goal,
108
- },
117
+ { role: 'system', content: systemContent },
118
+ { role: 'user', content: task.goal },
109
119
  ];
110
120
  task.status = 'running';
111
121
  try {
@@ -125,7 +135,7 @@ export async function runTask(task, client, ctx) {
125
135
  break;
126
136
  }
127
137
  // Per-task step cap (safety backstop independent of global budget).
128
- if (stepCount >= TASK_STEP_CAP) {
138
+ if (stepCount >= stepCap) {
129
139
  const partial = lastAssistantContent(messages);
130
140
  if (partial) {
131
141
  task.status = 'done';
@@ -133,7 +143,7 @@ export async function runTask(task, client, ctx) {
133
143
  }
134
144
  else {
135
145
  task.status = 'failed';
136
- task.error = `Step cap of ${TASK_STEP_CAP} reached without producing a result.`;
146
+ task.error = `Step cap of ${stepCap} reached without producing a result.`;
137
147
  }
138
148
  break;
139
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../../src/core/run/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,sEAAsE;AACtE,MAAM,aAAa,GAAG,EAAE,CAAC;AAYzB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAa,EACb,MAAsB,EACtB,GAOC;IAED,8DAA8D;IAC9D,IAAI,SAAS,GAAa,QAAQ,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,6DAA6D;IAC7D,MAAM,IAAI,GAAe,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;IAEhD,+CAA+C;IAC/C,SAAS,UAAU,CAAC,KAAiC;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,EAAE;IACF,6EAA6E;IAC7E,uEAAuE;IACvE,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,yDAAyD;IACzD,SAAS,eAAe,CAAC,KAAwB;QAC/C,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,0BAA0B;IAC1B,SAAS,QAAQ,CACf,IAAqB,EACrB,OAAe,EACf,KAAgB;QAEhB,MAAM,IAAI,GAAY;YACpB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC;QACF,IAAI,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,QAAQ,GACZ,MAAM,CAAC,aAAa;QACpB,GAAG,CAAC,KAAK,KAAK,SAAS;QACvB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,KAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC7E,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAa,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,QAAQ,GAAkB;QAC9B;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EACL,sDAAsD;gBACtD,oCAAoC;gBACpC,CAAC,QAAQ;oBACP,CAAC,CAAC,iFAAiF;oBACnF,CAAC,CAAC,kEAAkE,CAAC;SAC1E;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB;KACF,CAAC;IAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAExB,IAAI,CAAC;QACH,mBAAmB;QACnB,OAAO,IAAI,EAAE,CAAC;YACZ,yBAAyB;YACzB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,uCAAuC,OAAO,EAAE,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,iDAAiD,CAAC;gBACjE,CAAC;gBACD,MAAM;YACR,CAAC;YAED,oEAAoE;YACpE,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,wCAAwC,OAAO,EAAE,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,eAAe,aAAa,sCAAsC,CAAC;gBAClF,CAAC;gBACD,MAAM;YACR,CAAC;YAED,SAAS,EAAE,CAAC;YAEZ,8EAA8E;YAC9E,kEAAkE;YAClE,IAAI,MAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC5C,sEAAsE;oBACtE,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAC9B,QAAQ,EACR,SAAS,EACT,CAAC,KAAa,EAAE,EAAE;wBAChB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACrB,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,mEAAmE;oBACnE,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAChD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,sBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YAED,wCAAwC;YACxC,MAAM,cAAc,GAAsB;gBACxC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC/B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,KAAK,EAAE,CAAC;aACT,CAAC;YACF,eAAe,CAAC,cAAc,CAAC,CAAC;YAEhC,mBAAmB;YACnB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO;gBACjC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAC/C,CAAC,CAAC,eAAe,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACnE,CAAC,CAAC,kBAAkB,CAAC;YACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhF,4BAA4B;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,0BAA0B;YAC1B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACjE,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,uCAAuC,OAAO,EAAE,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,qDAAqD,CAAC;gBACrE,CAAC;gBACD,MAAM;YACR,CAAC;YAED,gCAAgC;YAChC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAChE,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBAClC,qDAAqD;oBACrD,UAAU,CAAC;wBACT,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE;qBACjD,CAAC,CAAC;oBAEH,IAAI,iBAAyB,CAAC;oBAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAE5C,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;4BAC/C,iBAAiB;gCACf,OAAO,SAAS,KAAK,QAAQ;oCAC3B,CAAC,CAAC,SAAS;oCACX,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAClC,CAAC;wBAAC,OAAO,OAAO,EAAE,CAAC;4BACjB,iBAAiB,GAAG,yBAAyB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,gDAAgD;wBAChD,iBAAiB,GAAG,SAAS,EAAE,CAAC,IAAI,gEAAgE,CAAC;oBACvG,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,iBAAiB;wBAC1B,UAAU,EAAE,EAAE,CAAC,EAAE;wBACjB,IAAI,EAAE,EAAE,CAAC,IAAI;qBACd,CAAC,CAAC;oBAEH,oBAAoB;oBACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAED,4DAA4D;gBAC5D,SAAS;YACX,CAAC;YAED,sEAAsE;YACtE,0CAA0C;YAC1C,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EACL,oHAAoH;iBACvH,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,0CAA0C;YAC1C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,MAAM;YACR,CAAC;YAED,+DAA+D;YAC/D,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,6BAA6B;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,aAAa,EAAE,CAAC;QACvB,mEAAmE;QACnE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,mCAAmC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAEvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,yDAAyD;AACzD,SAAS,QAAQ,CAAC,CAAS,EAAE,MAAc;IACzC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,QAAuB;IACnD,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,OAAO,CAAC,CAAC,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"agent-loop.js","sourceRoot":"","sources":["../../../src/core/run/agent-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,sEAAsE;AACtE,MAAM,aAAa,GAAG,EAAE,CAAC;AAYzB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAa,EACb,MAAsB,EACtB,GAeC;IAED,8DAA8D;IAC9D,IAAI,SAAS,GAAa,QAAQ,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,6DAA6D;IAC7D,MAAM,IAAI,GAAe,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;IAEhD,+CAA+C;IAC/C,SAAS,UAAU,CAAC,KAAiC;QACnD,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,EAAE;IACF,6EAA6E;IAC7E,uEAAuE;IACvE,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,yDAAyD;IACzD,SAAS,eAAe,CAAC,KAAwB;QAC/C,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,0BAA0B;IAC1B,SAAS,QAAQ,CACf,IAAqB,EACrB,OAAe,EACf,KAAgB;QAEhB,MAAM,IAAI,GAAY;YACpB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC;QACF,IAAI,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,QAAQ,GACZ,MAAM,CAAC,aAAa;QACpB,GAAG,CAAC,KAAK,KAAK,SAAS;QACvB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,CAAC,KAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC7E,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAa,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;IAC9D,MAAM,aAAa,GAAG,WAAW;QAC/B,CAAC,CAAC,oBAAoB,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,OAAO;YACP,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,OAAO,CAAC,aAAa;SAC/B,CAAC,CAAC,MAAM;QACX,CAAC,CAAC,sDAAsD;YACtD,oCAAoC;YACpC,CAAC,QAAQ;gBACP,CAAC,CAAC,iFAAiF;gBACnF,CAAC,CAAC,kEAAkE,CAAC,CAAC;IAE5E,kCAAkC;IAClC,MAAM,QAAQ,GAAkB;QAC9B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE;QAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;KACrC,CAAC;IAEF,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAExB,IAAI,CAAC;QACH,mBAAmB;QACnB,OAAO,IAAI,EAAE,CAAC;YACZ,yBAAyB;YACzB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,uCAAuC,OAAO,EAAE,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,iDAAiD,CAAC;gBACjE,CAAC;gBACD,MAAM;YACR,CAAC;YAED,oEAAoE;YACpE,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,wCAAwC,OAAO,EAAE,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,eAAe,OAAO,sCAAsC,CAAC;gBAC5E,CAAC;gBACD,MAAM;YACR,CAAC;YAED,SAAS,EAAE,CAAC;YAEZ,8EAA8E;YAC9E,kEAAkE;YAClE,IAAI,MAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;oBAC5C,sEAAsE;oBACtE,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAC9B,QAAQ,EACR,SAAS,EACT,CAAC,KAAa,EAAE,EAAE;wBAChB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACrB,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;wBACpE,CAAC;oBACH,CAAC,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,mEAAmE;oBACnE,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAChD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7E,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,sBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,MAAM;YACR,CAAC;YAED,wCAAwC;YACxC,MAAM,cAAc,GAAsB;gBACxC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC/B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,KAAK,EAAE,CAAC;aACT,CAAC;YACF,eAAe,CAAC,cAAc,CAAC,CAAC;YAEhC,mBAAmB;YACnB,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO;gBACjC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAC/C,CAAC,CAAC,eAAe,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACnE,CAAC,CAAC,kBAAkB,CAAC;YACzB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhF,4BAA4B;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;YAEH,0BAA0B;YAC1B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;gBACjE,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,uCAAuC,OAAO,EAAE,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,KAAK,GAAG,qDAAqD,CAAC;gBACrE,CAAC;gBACD,MAAM;YACR,CAAC;YAED,gCAAgC;YAChC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAChE,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBAClC,qDAAqD;oBACrD,UAAU,CAAC;wBACT,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,IAAI,EAAE,EAAE,CAAC,IAAI;wBACb,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE;qBACjD,CAAC,CAAC;oBAEH,IAAI,iBAAyB,CAAC;oBAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;oBAE5C,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;4BAC/C,iBAAiB;gCACf,OAAO,SAAS,KAAK,QAAQ;oCAC3B,CAAC,CAAC,SAAS;oCACX,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAClC,CAAC;wBAAC,OAAO,OAAO,EAAE,CAAC;4BACjB,iBAAiB,GAAG,yBAAyB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,gDAAgD;wBAChD,iBAAiB,GAAG,SAAS,EAAE,CAAC,IAAI,gEAAgE,CAAC;oBACvG,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,iBAAiB;wBAC1B,UAAU,EAAE,EAAE,CAAC,EAAE;wBACjB,IAAI,EAAE,EAAE,CAAC,IAAI;qBACd,CAAC,CAAC;oBAEH,oBAAoB;oBACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAED,4DAA4D;gBAC5D,SAAS;YACX,CAAC;YAED,sEAAsE;YACtE,0CAA0C;YAC1C,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,OAAO,EACL,oHAAoH;iBACvH,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,0CAA0C;YAC1C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,MAAM;YACR,CAAC;YAED,+DAA+D;YAC/D,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,6BAA6B;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,aAAa,EAAE,CAAC;QACvB,mEAAmE;QACnE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,mCAAmC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IAEvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,yDAAyD;AACzD,SAAS,QAAQ,CAAC,CAAS,EAAE,MAAc;IACzC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,QAAuB;IACnD,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,OAAO,CAAC,CAAC,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * engine-registry.ts — M50 (v5 Open Fleet): the single, declarative source of
3
+ * truth for how every backend engine is invoked, probed, and trust-tiered.
4
+ *
5
+ * Before M50 these facts lived in three hand-written switches (buildEngineCommand,
6
+ * engineInstalled, engineTierOf). M50 collapses them into one table of
7
+ * `EngineSpec`s so that ADDING A BACKEND IS CONFIG-ONLY: a `cfg.foundry.engines`
8
+ * entry is merged over `BUILTIN_ENGINE_REGISTRY` by `resolveEngineRegistry` and
9
+ * picked up by the router, the containment, the gate, and the control plane with
10
+ * no code change.
11
+ *
12
+ * PARITY GUARANTEE (locked by test/m50.engine-registry): `compileArgv` reproduces
13
+ * the EXACT argv the pre-M50 switch produced for builtin/ashlrcode/aw/claude/codex,
14
+ * with and without a model and with and without autonomous mode.
15
+ *
16
+ * GUARDRAILS:
17
+ * - compileArgv is PURE and injection-safe: placeholders are substituted only as
18
+ * WHOLE argv elements; a goal/cwd/model containing '$CWD', ';', or backticks is
19
+ * passed verbatim as a single element and never shell-expanded.
20
+ * - No implicit frontier: a malformed or tier-less added entry is DROPPED, never
21
+ * defaulted to a merge-authority tier.
22
+ */
23
+ import type { AshlrConfig, ArgvSeg, EngineId, EngineSpec } from '../types.js';
24
+ /**
25
+ * The canonical built-in engine roster. Keyed by engine id. The five original
26
+ * engines reproduce their pre-M50 argv byte-for-byte; `hermes` and `opencode`
27
+ * are new v5 CLI agents (tier 'local' in M50 — M51's tri-tier promotes the strong
28
+ * open models to 'mid'; nothing new is granted frontier/main authority here).
29
+ */
30
+ export declare const BUILTIN_ENGINE_REGISTRY: Readonly<Record<EngineId, EngineSpec>>;
31
+ /**
32
+ * Compile a declarative argv template into a concrete argv. `optModel` segments
33
+ * are emitted only when a non-empty model is present. Pure; injection-safe.
34
+ */
35
+ export declare function compileArgv(template: ArgvSeg[], ctx: {
36
+ goal: string;
37
+ cwd: string;
38
+ model?: string;
39
+ autonomous?: boolean;
40
+ }, autonomousArgv?: ArgvSeg[]): string[];
41
+ /**
42
+ * Resolve the effective engine roster: the built-in registry with any
43
+ * `cfg.foundry.engines` entries merged over it. Malformed added entries are
44
+ * dropped (never fatal, never defaulted to frontier). Returns a fresh object.
45
+ */
46
+ export declare function resolveEngineRegistry(cfg?: AshlrConfig): Record<string, EngineSpec>;
47
+ /** Look up a single engine spec from the effective registry. */
48
+ export declare function resolveEngineSpec(engine: string, cfg?: AshlrConfig): EngineSpec | undefined;
@@ -0,0 +1,190 @@
1
+ /**
2
+ * engine-registry.ts — M50 (v5 Open Fleet): the single, declarative source of
3
+ * truth for how every backend engine is invoked, probed, and trust-tiered.
4
+ *
5
+ * Before M50 these facts lived in three hand-written switches (buildEngineCommand,
6
+ * engineInstalled, engineTierOf). M50 collapses them into one table of
7
+ * `EngineSpec`s so that ADDING A BACKEND IS CONFIG-ONLY: a `cfg.foundry.engines`
8
+ * entry is merged over `BUILTIN_ENGINE_REGISTRY` by `resolveEngineRegistry` and
9
+ * picked up by the router, the containment, the gate, and the control plane with
10
+ * no code change.
11
+ *
12
+ * PARITY GUARANTEE (locked by test/m50.engine-registry): `compileArgv` reproduces
13
+ * the EXACT argv the pre-M50 switch produced for builtin/ashlrcode/aw/claude/codex,
14
+ * with and without a model and with and without autonomous mode.
15
+ *
16
+ * GUARDRAILS:
17
+ * - compileArgv is PURE and injection-safe: placeholders are substituted only as
18
+ * WHOLE argv elements; a goal/cwd/model containing '$CWD', ';', or backticks is
19
+ * passed verbatim as a single element and never shell-expanded.
20
+ * - No implicit frontier: a malformed or tier-less added entry is DROPPED, never
21
+ * defaulted to a merge-authority tier.
22
+ */
23
+ // ---------------------------------------------------------------------------
24
+ // Built-in roster — encodes the five v1–v4 engines (parity-locked) plus the two
25
+ // v5 CLI agents. New API models / agents are added via cfg.foundry.engines.
26
+ // ---------------------------------------------------------------------------
27
+ /**
28
+ * The canonical built-in engine roster. Keyed by engine id. The five original
29
+ * engines reproduce their pre-M50 argv byte-for-byte; `hermes` and `opencode`
30
+ * are new v5 CLI agents (tier 'local' in M50 — M51's tri-tier promotes the strong
31
+ * open models to 'mid'; nothing new is granted frontier/main authority here).
32
+ */
33
+ export const BUILTIN_ENGINE_REGISTRY = Object.freeze({
34
+ builtin: { id: 'builtin', kind: 'builtin', tier: 'local' },
35
+ // claude -p <goal> [--model M] --output-format json [--permission-mode acceptEdits --add-dir CWD]
36
+ claude: {
37
+ id: 'claude',
38
+ kind: 'cli-agent',
39
+ tier: 'frontier',
40
+ bin: 'claude',
41
+ bins: ['claude'],
42
+ argv: ['-p', '$GOAL', { optModel: ['--model', '$MODEL'] }, '--output-format', 'json'],
43
+ autonomousArgv: ['--permission-mode', 'acceptEdits', '--add-dir', '$CWD'],
44
+ capabilities: ['agent', 'edit', 'architecture'],
45
+ },
46
+ // codex exec [--model M] --sandbox workspace-write --cd CWD --json <goal>
47
+ codex: {
48
+ id: 'codex',
49
+ kind: 'cli-agent',
50
+ tier: 'frontier',
51
+ bin: 'codex',
52
+ bins: ['codex'],
53
+ argv: [
54
+ 'exec',
55
+ { optModel: ['--model', '$MODEL'] },
56
+ '--sandbox',
57
+ 'workspace-write',
58
+ '--cd',
59
+ '$CWD',
60
+ '--json',
61
+ '$GOAL',
62
+ ],
63
+ capabilities: ['agent', 'edit', 'refactor'],
64
+ },
65
+ // aw auto <goal> --cwd CWD [--model M]
66
+ aw: {
67
+ id: 'aw',
68
+ kind: 'cli-agent',
69
+ tier: 'local',
70
+ bin: 'aw',
71
+ bins: ['aw'],
72
+ argv: ['auto', '$GOAL', '--cwd', '$CWD', { optModel: ['--model', '$MODEL'] }],
73
+ capabilities: ['agent', 'edit'],
74
+ },
75
+ // ac --goal <goal> (real bin is 'ac'; alias 'ashlrcode')
76
+ ashlrcode: {
77
+ id: 'ashlrcode',
78
+ kind: 'cli-agent',
79
+ tier: 'local',
80
+ bin: 'ac',
81
+ bins: ['ac', 'ashlrcode'],
82
+ argv: ['--goal', '$GOAL'],
83
+ capabilities: ['agent', 'edit'],
84
+ },
85
+ // M50/M51: Hermes Agent (Nous Research) — a strong OPEN model. Tier 'mid':
86
+ // branch-eligible after full verification, but never merge-authority for main.
87
+ // hermes -z <goal> [-m M] [--yolo when autonomous]
88
+ hermes: {
89
+ id: 'hermes',
90
+ kind: 'cli-agent',
91
+ tier: 'mid',
92
+ bin: 'hermes',
93
+ bins: ['hermes'],
94
+ argv: ['-z', '$GOAL', { optModel: ['-m', '$MODEL'] }],
95
+ autonomousArgv: ['--yolo'],
96
+ capabilities: ['agent', 'edit', 'tools'],
97
+ },
98
+ // M50: OpenCode ("open claw"-class). opencode run <goal> [--model M]. Config-only
99
+ // by default (binary absent on most machines → engineInstalled returns false).
100
+ opencode: {
101
+ id: 'opencode',
102
+ kind: 'cli-agent',
103
+ tier: 'local',
104
+ bin: 'opencode',
105
+ bins: ['opencode'],
106
+ argv: ['run', '$GOAL', { optModel: ['--model', '$MODEL'] }],
107
+ capabilities: ['agent', 'edit'],
108
+ },
109
+ });
110
+ // ---------------------------------------------------------------------------
111
+ // argv compilation — pure + injection-safe
112
+ // ---------------------------------------------------------------------------
113
+ const VALID_TIERS = new Set(['local', 'mid', 'frontier']);
114
+ const VALID_KINDS = new Set(['builtin', 'cli-agent', 'api-model']);
115
+ const ENGINE_ID_RE = /^[a-z][a-z0-9-]{0,39}$/;
116
+ /** Substitute a single template token as a WHOLE argv element (never shell-split). */
117
+ function subst(seg, vars) {
118
+ switch (seg) {
119
+ case '$GOAL':
120
+ return vars.goal;
121
+ case '$CWD':
122
+ return vars.cwd;
123
+ case '$MODEL':
124
+ return vars.model;
125
+ default:
126
+ return seg;
127
+ }
128
+ }
129
+ /**
130
+ * Compile a declarative argv template into a concrete argv. `optModel` segments
131
+ * are emitted only when a non-empty model is present. Pure; injection-safe.
132
+ */
133
+ export function compileArgv(template, ctx, autonomousArgv) {
134
+ const model = ctx.model?.trim() ?? '';
135
+ const vars = { goal: ctx.goal, cwd: ctx.cwd, model };
136
+ const segs = ctx.autonomous && autonomousArgv ? [...template, ...autonomousArgv] : [...template];
137
+ const out = [];
138
+ for (const seg of segs) {
139
+ if (typeof seg === 'string') {
140
+ out.push(subst(seg, vars));
141
+ }
142
+ else if (seg && Array.isArray(seg.optModel)) {
143
+ if (model.length > 0) {
144
+ for (const s of seg.optModel)
145
+ out.push(subst(s, vars));
146
+ }
147
+ }
148
+ }
149
+ return out;
150
+ }
151
+ // ---------------------------------------------------------------------------
152
+ // registry resolution + lookups
153
+ // ---------------------------------------------------------------------------
154
+ /** True when an added engine spec is structurally valid (else it is dropped). */
155
+ function isValidSpec(spec) {
156
+ if (!spec || typeof spec !== 'object')
157
+ return false;
158
+ const s = spec;
159
+ if (typeof s['id'] !== 'string' || !ENGINE_ID_RE.test(s['id']))
160
+ return false;
161
+ if (typeof s['kind'] !== 'string' || !VALID_KINDS.has(s['kind']))
162
+ return false;
163
+ // No implicit frontier: tier is REQUIRED and must be a known tier.
164
+ if (typeof s['tier'] !== 'string' || !VALID_TIERS.has(s['tier']))
165
+ return false;
166
+ return true;
167
+ }
168
+ /**
169
+ * Resolve the effective engine roster: the built-in registry with any
170
+ * `cfg.foundry.engines` entries merged over it. Malformed added entries are
171
+ * dropped (never fatal, never defaulted to frontier). Returns a fresh object.
172
+ */
173
+ export function resolveEngineRegistry(cfg) {
174
+ const merged = { ...BUILTIN_ENGINE_REGISTRY };
175
+ const added = cfg?.foundry?.engines;
176
+ if (added && typeof added === 'object') {
177
+ for (const [key, spec] of Object.entries(added)) {
178
+ // Honor the map key as the id when the spec omits/!matches it.
179
+ const candidate = { ...spec, id: spec?.id ?? key };
180
+ if (isValidSpec(candidate))
181
+ merged[key] = candidate;
182
+ }
183
+ }
184
+ return merged;
185
+ }
186
+ /** Look up a single engine spec from the effective registry. */
187
+ export function resolveEngineSpec(engine, cfg) {
188
+ return resolveEngineRegistry(cfg)[engine];
189
+ }
190
+ //# sourceMappingURL=engine-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../../src/core/run/engine-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAUH,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA2C,MAAM,CAAC,MAAM,CAAC;IAC3F,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;IAE1D,kGAAkG;IAClG,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC;QACrF,cAAc,EAAE,CAAC,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC;QACzE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC;KAChD;IAED,0EAA0E;IAC1E,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,CAAC,OAAO,CAAC;QACf,IAAI,EAAE;YACJ,MAAM;YACN,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;YACnC,WAAW;YACX,iBAAiB;YACjB,MAAM;YACN,MAAM;YACN,QAAQ;YACR,OAAO;SACR;QACD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;KAC5C;IAED,uCAAuC;IACvC,EAAE,EAAE;QACF,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,CAAC,IAAI,CAAC;QACZ,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAChC;IAED,2DAA2D;IAC3D,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QACzB,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAChC;IAED,2EAA2E;IAC3E,+EAA+E;IAC/E,mDAAmD;IACnD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrD,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;KACzC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,CAAC,UAAU,CAAC;QAClB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3D,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;KAChC;CACF,CAAC,CAAC;AAEH,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAa,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3F,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AACxF,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAE9C,sFAAsF;AACtF,SAAS,KAAK,CAAC,GAAW,EAAE,IAAkD;IAC5E,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,QAAmB,EACnB,GAAwE,EACxE,cAA0B;IAE1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;IACrD,MAAM,IAAI,GAAc,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC5G,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,iFAAiF;AACjF,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,mEAAmE;IACnE,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAiB;IACrD,MAAM,MAAM,GAA+B,EAAE,GAAG,uBAAuB,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;IACpC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,+DAA+D;YAC/D,MAAM,SAAS,GAAG,EAAE,GAAI,IAAmB,EAAE,EAAE,EAAG,IAAmB,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC;YACnF,IAAI,WAAW,CAAC,SAAS,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,GAAiB;IACjE,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
@@ -26,7 +26,7 @@ import type { AshlrConfig, EngineId, EngineCommand } from '../types.js';
26
26
  *
27
27
  * Best-effort, never throws.
28
28
  */
29
- export declare function engineInstalled(engine: EngineId): boolean;
29
+ export declare function engineInstalled(engine: EngineId, cfg?: AshlrConfig): boolean;
30
30
  /**
31
31
  * Build the EXACT external command for an engine, or null for the builtin loop.
32
32
  *
@@ -41,9 +41,10 @@ export declare function engineInstalled(engine: EngineId): boolean;
41
41
  * aw: bin='aw', args=['auto', G, '--cwd', D] [+ '--model', M when given]
42
42
  * ashlrcode: bin='ac', args=['--goal', G]
43
43
  */
44
- export declare function buildEngineCommand(engine: EngineId, goal: string, _cfg: AshlrConfig, opts?: {
44
+ export declare function buildEngineCommand(engine: EngineId, goal: string, cfg: AshlrConfig, opts?: {
45
45
  cwd?: string;
46
46
  model?: string;
47
+ autonomous?: boolean;
47
48
  }): EngineCommand | null;
48
49
  /**
49
50
  * Wrap an EngineCommand to run under `phantom exec -- <bin> <args...>`.
@@ -64,7 +65,20 @@ export declare function phantomWrap(cmd: EngineCommand, _cfg: AshlrConfig): Engi
64
65
  * GUARDRAIL: MUST NOT be called against a real delegated agent during
65
66
  * build/integrate/verify — unit tests assert argv builders only.
66
67
  */
67
- export declare function spawnEngine(cmd: EngineCommand, cfg: AshlrConfig): {
68
+ export declare function spawnEngine(cmd: EngineCommand, cfg: AshlrConfig, opts?: {
69
+ env?: NodeJS.ProcessEnv;
70
+ timeoutMs?: number;
71
+ /**
72
+ * M52: optional OS-level sandbox launcher. When present, the engine is
73
+ * spawned as `launcher.bin [...launcher.prefixArgs, cmd.bin, ...cmd.args]`
74
+ * (the phantomWrap, if any, composes BEFORE the launcher — jail wraps the
75
+ * whole thing). When absent ⇒ exactly v4 behavior (default-off parity).
76
+ */
77
+ launcher?: {
78
+ bin: string;
79
+ prefixArgs: string[];
80
+ };
81
+ }): {
68
82
  ok: boolean;
69
83
  output: string;
70
84
  usage?: {
@@ -18,6 +18,7 @@
18
18
  */
19
19
  import { spawnSync, execFileSync } from 'node:child_process';
20
20
  import { withToolEnv } from '../env-bridge.js';
21
+ import { resolveEngineSpec, compileArgv } from './engine-registry.js';
21
22
  // ---------------------------------------------------------------------------
22
23
  // Phantom detection (cached, best-effort)
23
24
  // ---------------------------------------------------------------------------
@@ -25,7 +26,7 @@ let _phantomInstalled;
25
26
  function phantomInstalled() {
26
27
  if (_phantomInstalled === undefined) {
27
28
  try {
28
- execFileSync('which', ['phantom'], { stdio: 'ignore' });
29
+ execFileSync(process.platform === 'win32' ? 'where' : 'which', ['phantom'], { stdio: 'ignore' });
29
30
  _phantomInstalled = true;
30
31
  }
31
32
  catch {
@@ -46,18 +47,20 @@ function phantomInstalled() {
46
47
  *
47
48
  * Best-effort, never throws.
48
49
  */
49
- export function engineInstalled(engine) {
50
+ export function engineInstalled(engine, cfg) {
50
51
  if (engine === 'builtin')
51
52
  return true;
52
- const bins = {
53
- claude: ['claude'],
54
- aw: ['aw'],
55
- ashlrcode: ['ac', 'ashlrcode'],
56
- };
57
- const candidates = bins[engine] ?? [engine];
53
+ const spec = resolveEngineSpec(engine, cfg);
54
+ // An OpenAI-compatible api-model is "installed" when its key is present (the
55
+ // local-first gate still applies at completion time); CLI agents probe PATH.
56
+ if (spec?.kind === 'api-model') {
57
+ const key = spec.api?.envKey;
58
+ return key ? Boolean(process.env[key]?.trim()) : false;
59
+ }
60
+ const candidates = spec?.bins ?? [spec?.bin ?? engine];
58
61
  for (const bin of candidates) {
59
62
  try {
60
- execFileSync('which', [bin], { stdio: 'ignore' });
63
+ execFileSync(process.platform === 'win32' ? 'where' : 'which', [bin], { stdio: 'ignore' });
61
64
  return true;
62
65
  }
63
66
  catch {
@@ -83,36 +86,17 @@ export function engineInstalled(engine) {
83
86
  * aw: bin='aw', args=['auto', G, '--cwd', D] [+ '--model', M when given]
84
87
  * ashlrcode: bin='ac', args=['--goal', G]
85
88
  */
86
- export function buildEngineCommand(engine, goal, _cfg, opts) {
87
- if (engine === 'builtin')
89
+ export function buildEngineCommand(engine, goal, cfg, opts) {
90
+ // M50: argv is driven by the declarative engine registry (single source of
91
+ // truth). The builtin engine and api-model engines have no CLI argv → null
92
+ // (api-models run through the in-process loop + provider client, not a spawn).
93
+ const spec = resolveEngineSpec(engine, cfg);
94
+ if (!spec || spec.kind !== 'cli-agent' || !spec.argv)
88
95
  return null;
89
96
  const cwd = opts?.cwd ?? process.cwd();
90
- const model = opts?.model?.trim();
91
- switch (engine) {
92
- case 'claude': {
93
- const args = ['-p', goal, '--output-format', 'json'];
94
- if (model) {
95
- // --model must come before --output-format per claude's -p mode
96
- args.splice(2, 0, '--model', model);
97
- }
98
- return { bin: 'claude', args, cwd };
99
- }
100
- case 'aw': {
101
- const args = ['auto', goal, '--cwd', cwd];
102
- if (model) {
103
- args.push('--model', model);
104
- }
105
- return { bin: 'aw', args, cwd };
106
- }
107
- case 'ashlrcode': {
108
- // Real CLI is 'ac' (alias 'ashlrcode'). Arg builder must be correct for
109
- // when present; absence routes to builtin per M9/M10.
110
- const args = ['--goal', goal];
111
- return { bin: 'ac', args, cwd };
112
- }
113
- default:
114
- return null;
115
- }
97
+ const args = compileArgv(spec.argv, { goal, cwd, model: opts?.model, autonomous: opts?.autonomous }, spec.autonomousArgv);
98
+ const bin = spec.bin ?? spec.bins?.[0] ?? spec.id;
99
+ return { bin, args, cwd };
116
100
  }
117
101
  // ---------------------------------------------------------------------------
118
102
  // phantomWrap — pure arg transform
@@ -145,28 +129,40 @@ export function phantomWrap(cmd, _cfg) {
145
129
  * GUARDRAIL: MUST NOT be called against a real delegated agent during
146
130
  * build/integrate/verify — unit tests assert argv builders only.
147
131
  */
148
- export function spawnEngine(cmd, cfg) {
132
+ export function spawnEngine(cmd, cfg, opts) {
149
133
  // CONTRACT: spawnEngine NEVER throws. Any synchronous failure (spawnSync
150
134
  // throwing, env-bridge/phantom probe errors, etc.) is reported as
151
135
  // { ok:false, error } rather than propagated to the caller.
152
136
  try {
153
- return spawnEngineInner(cmd, cfg);
137
+ return spawnEngineInner(cmd, cfg, opts);
154
138
  }
155
139
  catch (err) {
156
140
  return { ok: false, output: '', error: err instanceof Error ? err.message : String(err) };
157
141
  }
158
142
  }
159
- function spawnEngineInner(cmd, cfg) {
160
- // Apply phantom-exec wrap when enabled and installed (best-effort)
143
+ function spawnEngineInner(cmd, cfg, opts) {
144
+ // Apply phantom-exec wrap when enabled and installed (best-effort).
145
+ // phantomWrap composes BEFORE the launcher — the OS jail wraps the whole thing.
161
146
  let effective = cmd;
162
147
  if (cfg.phantom?.enabled && phantomInstalled()) {
163
148
  effective = phantomWrap(cmd, cfg);
164
149
  }
165
- const childEnv = withToolEnv(cfg);
166
- const result = spawnSync(effective.bin, effective.args, {
150
+ // M52: apply the OS sandbox launcher when provided. The launcher wraps the
151
+ // already-phantom-wrapped command so the jail contains the entire chain.
152
+ // When absent ⇒ exactly v4 behavior (default-off parity guaranteed).
153
+ let spawnBin = effective.bin;
154
+ let spawnArgs = effective.args;
155
+ if (opts?.launcher) {
156
+ spawnBin = opts.launcher.bin;
157
+ spawnArgs = [...opts.launcher.prefixArgs, effective.bin, ...effective.args];
158
+ }
159
+ // M45: a caller (sandboxed-engine) may pass a hardened, containment env; else
160
+ // fall back to the allowlist-only env-bridge env (NON-SECRET).
161
+ const childEnv = opts?.env ?? withToolEnv(cfg);
162
+ const result = spawnSync(spawnBin, spawnArgs, {
167
163
  encoding: 'utf8',
168
164
  maxBuffer: 10 * 1024 * 1024, // 10 MB
169
- timeout: 5 * 60 * 1000, // 5 min hard wall-clock limit
165
+ timeout: opts?.timeoutMs ?? 5 * 60 * 1000, // hard wall-clock limit (default 5 min)
170
166
  cwd: effective.cwd,
171
167
  env: childEnv,
172
168
  });
@@ -194,6 +190,29 @@ function spawnEngineInner(cmd, cfg) {
194
190
  // Not JSON or unexpected shape — usage stays undefined; caller estimates
195
191
  }
196
192
  }
193
+ // M45: best-effort usage parse for codex --json (JSONL events). The token-count
194
+ // event shape is not contractually stable across versions, so this is a guarded
195
+ // scan: find any line carrying input/output token counts. Undefined on miss
196
+ // (caller estimates). ⚠️ Refine in M46 once the event schema is pinned.
197
+ if (cmd.bin === 'codex' && !usage) {
198
+ for (const line of rawOutput.split('\n')) {
199
+ const trimmed = line.trim();
200
+ if (!trimmed.startsWith('{'))
201
+ continue;
202
+ try {
203
+ const ev = JSON.parse(trimmed);
204
+ const u = (ev['usage'] ?? ev['token_usage'] ?? ev);
205
+ const tin = u['input_tokens'] ?? u['prompt_tokens'];
206
+ const tout = u['output_tokens'] ?? u['completion_tokens'];
207
+ if (typeof tin === 'number' && typeof tout === 'number') {
208
+ usage = { tokensIn: tin, tokensOut: tout };
209
+ }
210
+ }
211
+ catch {
212
+ // skip non-JSON / unexpected line
213
+ }
214
+ }
215
+ }
197
216
  return { ok: true, output: rawOutput, usage };
198
217
  }
199
218
  //# sourceMappingURL=engines.js.map