@action-llama/action-llama 0.18.11 → 0.19.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 (188) hide show
  1. package/dist/agents/container-entry.d.ts.map +1 -1
  2. package/dist/agents/container-entry.js +16 -158
  3. package/dist/agents/container-entry.js.map +1 -1
  4. package/dist/agents/container-runner.d.ts +10 -1
  5. package/dist/agents/container-runner.d.ts.map +1 -1
  6. package/dist/agents/container-runner.js +125 -121
  7. package/dist/agents/container-runner.js.map +1 -1
  8. package/dist/agents/session-loop.d.ts +22 -0
  9. package/dist/agents/session-loop.d.ts.map +1 -0
  10. package/dist/agents/session-loop.js +159 -0
  11. package/dist/agents/session-loop.js.map +1 -0
  12. package/dist/agents/types.d.ts +17 -0
  13. package/dist/agents/types.d.ts.map +1 -0
  14. package/dist/agents/types.js +2 -0
  15. package/dist/agents/types.js.map +1 -0
  16. package/dist/build-info.json +1 -1
  17. package/dist/cli/commands/run-agent.d.ts.map +1 -1
  18. package/dist/cli/commands/run-agent.js +16 -117
  19. package/dist/cli/commands/run-agent.js.map +1 -1
  20. package/dist/control/routes/dashboard-api.d.ts.map +1 -1
  21. package/dist/control/routes/dashboard-api.js +43 -0
  22. package/dist/control/routes/dashboard-api.js.map +1 -1
  23. package/dist/control/routes/stats.d.ts.map +1 -1
  24. package/dist/control/routes/stats.js +54 -0
  25. package/dist/control/routes/stats.js.map +1 -1
  26. package/dist/db/connection.d.ts +20 -0
  27. package/dist/db/connection.d.ts.map +1 -0
  28. package/dist/db/connection.js +34 -0
  29. package/dist/db/connection.js.map +1 -0
  30. package/dist/db/index.d.ts +8 -0
  31. package/dist/db/index.d.ts.map +1 -0
  32. package/dist/db/index.js +7 -0
  33. package/dist/db/index.js.map +1 -0
  34. package/dist/db/migrate.d.ts +27 -0
  35. package/dist/db/migrate.d.ts.map +1 -0
  36. package/dist/db/migrate.js +180 -0
  37. package/dist/db/migrate.js.map +1 -0
  38. package/dist/db/schema.d.ts +1383 -0
  39. package/dist/db/schema.d.ts.map +1 -0
  40. package/dist/db/schema.js +158 -0
  41. package/dist/db/schema.js.map +1 -0
  42. package/dist/docker/local-runtime.js +1 -1
  43. package/dist/docker/local-runtime.js.map +1 -1
  44. package/dist/docker/ssh-docker-runtime.js +1 -1
  45. package/dist/docker/ssh-docker-runtime.js.map +1 -1
  46. package/dist/events/event-queue-sqlite.d.ts +8 -3
  47. package/dist/events/event-queue-sqlite.d.ts.map +1 -1
  48. package/dist/events/event-queue-sqlite.js +42 -41
  49. package/dist/events/event-queue-sqlite.js.map +1 -1
  50. package/dist/execution/execution.d.ts +1 -0
  51. package/dist/execution/execution.d.ts.map +1 -1
  52. package/dist/execution/execution.js +8 -3
  53. package/dist/execution/execution.js.map +1 -1
  54. package/dist/frontend/assets/index-BO_q8PRQ.css +2 -0
  55. package/dist/frontend/assets/index-DKQX_6iM.js +13 -0
  56. package/dist/frontend/index.html +2 -2
  57. package/dist/gateway/frontend.d.ts +20 -0
  58. package/dist/gateway/frontend.d.ts.map +1 -0
  59. package/dist/gateway/frontend.js +80 -0
  60. package/dist/gateway/frontend.js.map +1 -0
  61. package/dist/gateway/index.d.ts +3 -70
  62. package/dist/gateway/index.d.ts.map +1 -1
  63. package/dist/gateway/index.js +109 -214
  64. package/dist/gateway/index.js.map +1 -1
  65. package/dist/gateway/middleware/auth.d.ts +12 -0
  66. package/dist/gateway/middleware/auth.d.ts.map +1 -0
  67. package/dist/gateway/middleware/auth.js +25 -0
  68. package/dist/gateway/middleware/auth.js.map +1 -0
  69. package/dist/gateway/middleware/request-logging.d.ts +9 -0
  70. package/dist/gateway/middleware/request-logging.d.ts.map +1 -0
  71. package/dist/gateway/middleware/request-logging.js +26 -0
  72. package/dist/gateway/middleware/request-logging.js.map +1 -0
  73. package/dist/gateway/middleware/telemetry.d.ts +7 -0
  74. package/dist/gateway/middleware/telemetry.d.ts.map +1 -0
  75. package/dist/gateway/middleware/telemetry.js +28 -0
  76. package/dist/gateway/middleware/telemetry.js.map +1 -0
  77. package/dist/gateway/routes/chat.d.ts +32 -0
  78. package/dist/gateway/routes/chat.d.ts.map +1 -0
  79. package/dist/gateway/routes/chat.js +24 -0
  80. package/dist/gateway/routes/chat.js.map +1 -0
  81. package/dist/gateway/routes/dashboard.d.ts +19 -0
  82. package/dist/gateway/routes/dashboard.d.ts.map +1 -0
  83. package/dist/gateway/routes/dashboard.js +26 -0
  84. package/dist/gateway/routes/dashboard.js.map +1 -0
  85. package/dist/gateway/routes/execution.d.ts +24 -0
  86. package/dist/gateway/routes/execution.d.ts.map +1 -0
  87. package/dist/gateway/routes/execution.js +13 -0
  88. package/dist/gateway/routes/execution.js.map +1 -0
  89. package/dist/gateway/routes/system.d.ts +14 -0
  90. package/dist/gateway/routes/system.d.ts.map +1 -0
  91. package/dist/gateway/routes/system.js +18 -0
  92. package/dist/gateway/routes/system.js.map +1 -0
  93. package/dist/gateway/routes/webhooks.d.ts +20 -0
  94. package/dist/gateway/routes/webhooks.d.ts.map +1 -0
  95. package/dist/gateway/routes/webhooks.js +11 -0
  96. package/dist/gateway/routes/webhooks.js.map +1 -0
  97. package/dist/gateway/stores.d.ts +21 -0
  98. package/dist/gateway/stores.d.ts.map +1 -0
  99. package/dist/gateway/stores.js +24 -0
  100. package/dist/gateway/stores.js.map +1 -0
  101. package/dist/gateway/types.d.ts +65 -0
  102. package/dist/gateway/types.d.ts.map +1 -0
  103. package/dist/gateway/types.js +2 -0
  104. package/dist/gateway/types.js.map +1 -0
  105. package/dist/scheduler/dependencies.d.ts +11 -0
  106. package/dist/scheduler/dependencies.d.ts.map +1 -0
  107. package/dist/scheduler/dependencies.js +34 -0
  108. package/dist/scheduler/dependencies.js.map +1 -0
  109. package/dist/scheduler/gateway-setup.d.ts.map +1 -1
  110. package/dist/scheduler/gateway-setup.js +8 -2
  111. package/dist/scheduler/gateway-setup.js.map +1 -1
  112. package/dist/scheduler/index.d.ts +1 -1
  113. package/dist/scheduler/index.d.ts.map +1 -1
  114. package/dist/scheduler/index.js +20 -176
  115. package/dist/scheduler/index.js.map +1 -1
  116. package/dist/scheduler/orphan-recovery.d.ts +25 -0
  117. package/dist/scheduler/orphan-recovery.d.ts.map +1 -0
  118. package/dist/scheduler/orphan-recovery.js +130 -0
  119. package/dist/scheduler/orphan-recovery.js.map +1 -0
  120. package/dist/scheduler/persistence.d.ts +18 -0
  121. package/dist/scheduler/persistence.d.ts.map +1 -0
  122. package/dist/scheduler/persistence.js +42 -0
  123. package/dist/scheduler/persistence.js.map +1 -0
  124. package/dist/scheduler/shutdown.d.ts +2 -0
  125. package/dist/scheduler/shutdown.d.ts.map +1 -1
  126. package/dist/scheduler/shutdown.js +8 -1
  127. package/dist/scheduler/shutdown.js.map +1 -1
  128. package/dist/shared/config/index.d.ts +5 -0
  129. package/dist/shared/config/index.d.ts.map +1 -0
  130. package/dist/shared/config/index.js +5 -0
  131. package/dist/shared/config/index.js.map +1 -0
  132. package/dist/shared/config/load-agent.d.ts +27 -0
  133. package/dist/shared/config/load-agent.d.ts.map +1 -0
  134. package/dist/shared/config/load-agent.js +169 -0
  135. package/dist/shared/config/load-agent.js.map +1 -0
  136. package/dist/shared/config/load-project.d.ts +22 -0
  137. package/dist/shared/config/load-project.d.ts.map +1 -0
  138. package/dist/shared/config/load-project.js +84 -0
  139. package/dist/shared/config/load-project.js.map +1 -0
  140. package/dist/shared/config/types.d.ts +115 -0
  141. package/dist/shared/config/types.d.ts.map +1 -0
  142. package/dist/shared/config/types.js +2 -0
  143. package/dist/shared/config/types.js.map +1 -0
  144. package/dist/shared/config/validate.d.ts +4 -0
  145. package/dist/shared/config/validate.d.ts.map +1 -0
  146. package/dist/shared/config/validate.js +23 -0
  147. package/dist/shared/config/validate.js.map +1 -0
  148. package/dist/shared/config.d.ts +4 -161
  149. package/dist/shared/config.d.ts.map +1 -1
  150. package/dist/shared/config.js +5 -269
  151. package/dist/shared/config.js.map +1 -1
  152. package/dist/shared/constants.d.ts +2 -0
  153. package/dist/shared/constants.d.ts.map +1 -1
  154. package/dist/shared/constants.js +2 -0
  155. package/dist/shared/constants.js.map +1 -1
  156. package/dist/shared/errors.js +1 -1
  157. package/dist/shared/errors.js.map +1 -1
  158. package/dist/shared/paths.d.ts +6 -0
  159. package/dist/shared/paths.d.ts.map +1 -1
  160. package/dist/shared/paths.js +12 -0
  161. package/dist/shared/paths.js.map +1 -1
  162. package/dist/shared/persistence/backends/sqlite.d.ts +9 -5
  163. package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -1
  164. package/dist/shared/persistence/backends/sqlite.js +107 -135
  165. package/dist/shared/persistence/backends/sqlite.js.map +1 -1
  166. package/dist/shared/queue-sqlite.d.ts +9 -4
  167. package/dist/shared/queue-sqlite.d.ts.map +1 -1
  168. package/dist/shared/queue-sqlite.js +41 -36
  169. package/dist/shared/queue-sqlite.js.map +1 -1
  170. package/dist/shared/state-store-sqlite.d.ts +8 -3
  171. package/dist/shared/state-store-sqlite.d.ts.map +1 -1
  172. package/dist/shared/state-store-sqlite.js +55 -37
  173. package/dist/shared/state-store-sqlite.js.map +1 -1
  174. package/dist/stats/store.d.ts +11 -2
  175. package/dist/stats/store.d.ts.map +1 -1
  176. package/dist/stats/store.js +200 -291
  177. package/dist/stats/store.js.map +1 -1
  178. package/package.json +4 -1
  179. package/dist/agents/execution-engine.d.ts +0 -19
  180. package/dist/agents/execution-engine.d.ts.map +0 -1
  181. package/dist/agents/execution-engine.js +0 -179
  182. package/dist/agents/execution-engine.js.map +0 -1
  183. package/dist/agents/runner.d.ts +0 -38
  184. package/dist/agents/runner.d.ts.map +0 -1
  185. package/dist/agents/runner.js +0 -375
  186. package/dist/agents/runner.js.map +0 -1
  187. package/dist/frontend/assets/index-CSIS2n0j.css +0 -2
  188. package/dist/frontend/assets/index-W_Sfmu8j.js +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"container-entry.d.ts","sourceRoot":"","sources":["../../src/agents/container-entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,qBAAqB,EAErB,eAAe,EAEhB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAkBvD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAC3D,eAAe,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAiGpD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAoTvE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAUhD"}
1
+ {"version":3,"file":"container-entry.d.ts","sourceRoot":"","sources":["../../src/agents/container-entry.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EACrB,eAAe,EAChB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiBvD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,YAAY,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAC3D,eAAe,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAiGpD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA8JvE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAUhD"}
@@ -1,17 +1,15 @@
1
1
  import { readFileSync, existsSync, rmSync } from "fs";
2
2
  import { spawnSync } from "child_process";
3
- import { getModel } from "@mariozechner/pi-ai";
4
- import { AuthStorage, createAgentSession, DefaultResourceLoader, SessionManager, SettingsManager, createCodingTools, } from "@mariozechner/pi-coding-agent";
5
- import { ModelCircuitBreaker, selectAvailableModels, isRateLimitError } from "./model-fallback.js";
3
+ import { DefaultResourceLoader, SettingsManager, } from "@mariozechner/pi-coding-agent";
4
+ import { ModelCircuitBreaker } from "./model-fallback.js";
6
5
  import { getExitCodeMessage } from "../shared/exit-codes.js";
7
6
  import { ensureSignalDir, readSignals } from "./signals.js";
8
- import { BASH_COMMAND_PREFIX } from "./bash-prefix.js";
9
7
  import { runHooks } from "../hooks/runner.js";
10
8
  import { processContextInjection } from "./context-injection.js";
11
9
  import { parseFrontmatter } from "../shared/frontmatter.js";
12
10
  import { initTelemetry } from "../telemetry/index.js";
13
- import { sessionStatsToUsage } from "../shared/usage.js";
14
11
  import { loadContainerCredentials } from "./credential-setup.js";
12
+ import { runSessionLoop } from "./session-loop.js";
15
13
  // Structured log line — written to stdout, parsed by ContainerAgentRunner on the host
16
14
  function emitLog(level, msg, data) {
17
15
  console.log(JSON.stringify({ _log: true, level, msg, ...data, ts: Date.now() }));
@@ -193,161 +191,21 @@ export async function handleInvocation(init) {
193
191
  }
194
192
  fullPrompt = envPrompt;
195
193
  }
196
- const UNRECOVERABLE_PATTERNS = [
197
- "permission denied",
198
- "could not read from remote repository",
199
- "resource not accessible by personal access token",
200
- "bad credentials",
201
- "authentication failed",
202
- "the requested url returned error: 403",
203
- "denied to ",
204
- ];
205
- const isUnrecoverableError = (text) => UNRECOVERABLE_PATTERNS.some((p) => text.toLowerCase().includes(p));
206
- const UNRECOVERABLE_THRESHOLD = 3;
207
- // Mirror the host-mode AgentRunner's session event logging
208
- const pendingCmds = new Map();
209
- let outputText = "";
210
- let currentTurnText = "";
211
- let eventCount = 0;
212
- let unrecoverableErrors = 0;
213
- let abortedDueToErrors = false;
214
194
  // Fresh circuit breaker per container — each run tries from the top
215
195
  const containerBreaker = new ModelCircuitBreaker();
216
- // Model fallback loop
217
- const MAX_PASSES = 3;
218
- const DEFAULT_BACKOFF_MS = 30_000;
219
- const MAX_BACKOFF_MS = 300_000;
220
- let promptResult;
221
- for (let pass = 0; pass <= MAX_PASSES; pass++) {
222
- const availableModels = selectAvailableModels(agentConfig.models, containerBreaker);
223
- let modelSucceeded = false;
224
- for (const modelConfig of availableModels) {
225
- const llmModel = getModel(modelConfig.provider, modelConfig.model);
226
- const modelThinking = modelConfig.thinkingLevel;
227
- emitLog("info", "creating agent session", { model: modelConfig.model, thinking: modelThinking });
228
- const authStorage = AuthStorage.create();
229
- const providerKey = providerKeys.get(modelConfig.provider);
230
- if (providerKey) {
231
- authStorage.setRuntimeApiKey(modelConfig.provider, providerKey);
232
- }
233
- const { session } = await createAgentSession({
234
- cwd,
235
- model: llmModel,
236
- thinkingLevel: modelThinking,
237
- authStorage,
238
- resourceLoader,
239
- tools: createCodingTools(cwd, {
240
- bash: { commandPrefix: BASH_COMMAND_PREFIX },
241
- }),
242
- sessionManager: SessionManager.inMemory(),
243
- settingsManager,
244
- });
245
- session.subscribe((event) => {
246
- eventCount++;
247
- if (event.type !== "message_update") {
248
- const extra = { type: event.type, eventCount };
249
- if (event.type === "message_start" || event.type === "message_end") {
250
- extra.role = event.role || event.message?.role;
251
- extra.content = JSON.stringify(event.content || event.message?.content || []).slice(0, 500);
252
- extra.stopReason = event.stopReason || event.stop_reason;
253
- }
254
- if (event.type === "turn_end") {
255
- extra.turnResult = JSON.stringify(event).slice(0, 500);
256
- }
257
- emitLog("debug", "event", extra);
258
- }
259
- if (event.type === "error") {
260
- emitLog("error", "session error", { error: String(event.error || event.message || JSON.stringify(event)) });
261
- }
262
- if (event.type === "message_update" && event.assistantMessageEvent?.type === "text_delta") {
263
- const delta = event.assistantMessageEvent.delta;
264
- outputText += delta;
265
- currentTurnText += delta;
266
- }
267
- if (event.type === "message_end") {
268
- if (currentTurnText.trim()) {
269
- emitLog("info", "assistant", { text: currentTurnText.trim() });
270
- }
271
- currentTurnText = "";
272
- }
273
- if (event.type === "tool_execution_start") {
274
- const cmd = String(event.args?.command || "");
275
- if (event.toolName === "bash") {
276
- pendingCmds.set(event.toolCallId, cmd);
277
- emitLog("info", "bash", { cmd: cmd.slice(0, 200) });
278
- }
279
- else {
280
- emitLog("debug", "tool start", { tool: event.toolName });
281
- }
282
- }
283
- if (event.type === "tool_execution_end") {
284
- const resultStr = typeof event.result === "string"
285
- ? event.result
286
- : JSON.stringify(event.result);
287
- const originCmd = pendingCmds.get(event.toolCallId);
288
- pendingCmds.delete(event.toolCallId);
289
- if (event.isError) {
290
- emitLog("error", "tool error", { tool: event.toolName, cmd: originCmd?.slice(0, 200), result: resultStr.slice(0, 1000) });
291
- let errorMsg = resultStr;
292
- try {
293
- const parsed = JSON.parse(resultStr);
294
- if (parsed?.content?.[0]?.text)
295
- errorMsg = parsed.content[0].text;
296
- }
297
- catch { /* use raw string */ }
298
- if (isUnrecoverableError(errorMsg)) {
299
- unrecoverableErrors++;
300
- if (unrecoverableErrors >= UNRECOVERABLE_THRESHOLD) {
301
- emitLog("error", "Aborting: repeated auth/permission failures — check credentials");
302
- abortedDueToErrors = true;
303
- session.dispose();
304
- }
305
- }
306
- }
307
- else {
308
- emitLog("debug", "tool done", { tool: event.toolName, resultLength: resultStr.length });
309
- }
310
- }
311
- });
312
- try {
313
- promptResult = await session.prompt(fullPrompt);
314
- containerBreaker.recordSuccess(modelConfig.provider, modelConfig.model);
315
- emitLog("info", "prompt returned", { eventCount, resultType: typeof promptResult, resultKeys: promptResult ? Object.keys(promptResult) : [] });
316
- const sessionStats = session.getSessionStats();
317
- const usage = sessionStatsToUsage(sessionStats);
318
- emitLog("info", "token-usage", {
319
- inputTokens: usage.inputTokens,
320
- outputTokens: usage.outputTokens,
321
- cacheReadTokens: usage.cacheReadTokens,
322
- cacheWriteTokens: usage.cacheWriteTokens,
323
- totalTokens: usage.totalTokens,
324
- cost: usage.cost,
325
- turnCount: usage.turnCount,
326
- });
327
- session.dispose();
328
- modelSucceeded = true;
329
- break;
330
- }
331
- catch (promptErr) {
332
- const msg = String(promptErr?.message || promptErr || "");
333
- if (isRateLimitError(msg)) {
334
- containerBreaker.recordFailure(modelConfig.provider, modelConfig.model);
335
- emitLog("warn", "rate limited, trying next model", { provider: modelConfig.provider, model: modelConfig.model });
336
- session.dispose();
337
- continue;
338
- }
339
- session.dispose();
340
- throw promptErr;
341
- }
342
- }
343
- if (modelSucceeded)
344
- break;
345
- if (pass < MAX_PASSES) {
346
- const delayMs = Math.min(DEFAULT_BACKOFF_MS * Math.pow(2, pass), MAX_BACKOFF_MS);
347
- emitLog("warn", "all models exhausted, backing off", { pass: pass + 1, delayMs });
348
- await new Promise((r) => setTimeout(r, delayMs));
349
- }
350
- }
196
+ // Run the shared model-fallback + session loop
197
+ let abortedDueToErrors = false;
198
+ const loopResult = await runSessionLoop(fullPrompt, {
199
+ models: agentConfig.models,
200
+ circuitBreaker: containerBreaker,
201
+ cwd,
202
+ resourceLoader,
203
+ settingsManager,
204
+ providerKeys,
205
+ log: emitLog,
206
+ onUnrecoverableAbort: () => { abortedDueToErrors = true; },
207
+ });
208
+ const { outputText } = loopResult;
351
209
  clearTimeout(timer);
352
210
  // Run post hooks after LLM session, before container exits
353
211
  if (agentConfig.hooks?.post && agentConfig.hooks.post.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"container-entry.js","sourceRoot":"","sources":["../../src/agents/container-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-entry.js","sourceRoot":"","sources":["../../src/agents/container-entry.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { Logger } from "../shared/logger.js";
3
3
  import type { Runtime } from "../docker/runtime.js";
4
4
  import type { ContainerRegistration } from "../execution/types.js";
5
5
  import type { StatusTracker } from "../tui/status-tracker.js";
6
- import type { RunOutcome } from "./runner.js";
6
+ import type { RunOutcome } from "./types.js";
7
7
  export declare class ContainerAgentRunner {
8
8
  private _running;
9
9
  private _aborting;
@@ -29,6 +29,15 @@ export declare class ContainerAgentRunner {
29
29
  get containerName(): string | undefined;
30
30
  abort(): void;
31
31
  private forwardLogLine;
32
+ /**
33
+ * Monitor a running container: stream logs, wait for exit, interpret the
34
+ * exit code, and clean up. Called by both _runInternalContainer (after
35
+ * launch) and adoptContainer (skipping launch).
36
+ *
37
+ * Returns { runResult, runError } and handles all gateway/credential/
38
+ * container cleanup in its finally block.
39
+ */
40
+ private monitorContainer;
32
41
  /**
33
42
  * Adopt an already-running container from a previous scheduler session.
34
43
  * Re-attaches log streaming, monitors exit, and records the result.
@@ -1 +1 @@
1
- {"version":3,"file":"container-runner.d.ts","sourceRoot":"","sources":["../../src/agents/container-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAgE;IACzF,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,UAAU,CAAS;IACpB,UAAU,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAGpC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,EAChF,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACtD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,aAAa;IAgB/B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIzC,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,cAAc;IAwDtB;;;;OAIG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACnF,OAAO,CAAC,UAAU,CAAC;IA6FhB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YAmC3I,qBAAqB;CA6LpC"}
1
+ {"version":3,"file":"container-runner.d.ts","sourceRoot":"","sources":["../../src/agents/container-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,YAAY,CAAC;AAMxD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAgE;IACzF,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,UAAU,CAAS;IACpB,UAAU,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAC,CAAgB;gBAGpC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,EAChF,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACtD,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,aAAa;IAgB/B,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAIzC,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,cAAc;IAwDtB;;;;;;;OAOG;YACW,gBAAgB;IAsG9B;;;;OAIG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACnF,OAAO,CAAC,UAAU,CAAC;IA8ChB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;YA2C3I,qBAAqB;CA8HpC"}
@@ -113,37 +113,20 @@ export class ContainerAgentRunner {
113
113
  }
114
114
  }
115
115
  /**
116
- * Adopt an already-running container from a previous scheduler session.
117
- * Re-attaches log streaming, monitors exit, and records the result.
118
- * Skips image launch, credential preparation, and env setup.
116
+ * Monitor a running container: stream logs, wait for exit, interpret the
117
+ * exit code, and clean up. Called by both _runInternalContainer (after
118
+ * launch) and adoptContainer (skipping launch).
119
+ *
120
+ * Returns { runResult, runError } and handles all gateway/credential/
121
+ * container cleanup in its finally block.
119
122
  */
120
- async adoptContainer(containerName, shutdownSecret, instanceId, triggerInfo) {
121
- if (this._running) {
122
- this.logger.warn("runner already busy, cannot adopt");
123
- return { result: "error", triggers: [] };
124
- }
125
- this._running = true;
126
- this._aborting = false;
127
- this._returnValue = undefined;
128
- this._tokenUsage = undefined;
129
- this.instanceId = instanceId;
130
- this._containerName = containerName;
131
- this.logger = this.baseLogger.child({ instance: this.instanceId });
132
- const runStartTime = Date.now();
123
+ async monitorContainer(opts) {
124
+ const { containerName, shutdownSecret, timeout, credentials, logPrefix, parentSpan } = opts;
133
125
  let runError;
134
126
  let runResult = "error";
135
- this.statusTracker?.startRun(this.agentConfig.name, "re-adopted");
136
- this.statusTracker?.registerInstance({
137
- id: this.instanceId,
138
- agentName: this.agentConfig.name,
139
- status: "running",
140
- startedAt: new Date(),
141
- trigger: "re-adopted",
142
- });
143
127
  let logStream;
144
128
  try {
145
- const timeout = this.agentConfig.timeout ?? this.globalConfig.local?.timeout ?? DEFAULT_AGENT_TIMEOUT;
146
- // Re-register with gateway so locks/shutdown/calls route correctly
129
+ // Register container with gateway for shutdown, locking, and log ingestion.
147
130
  if (this.gatewayUrl) {
148
131
  await this.registerContainer(shutdownSecret, {
149
132
  containerName,
@@ -151,11 +134,8 @@ export class ContainerAgentRunner {
151
134
  instanceId: this.instanceId,
152
135
  });
153
136
  }
154
- this.logger.info({ container: containerName }, "re-adopted orphan container");
155
- this.statusTracker?.addLogLine(this.agentConfig.name, `${this.instanceId} re-adopted`);
156
- // Re-attach log streaming
137
+ // Stream logs in real-time via runtime
157
138
  logStream = this.runtime.streamLogs(containerName, (line) => this.forwardLogLine(line), (text) => this.logger.warn({ stderr: text.slice(0, 500) }, "container stderr"));
158
- // Wait for exit
159
139
  const startTime = Date.now();
160
140
  const exitCode = await this.runtime.waitForExit(containerName, timeout);
161
141
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
@@ -165,19 +145,26 @@ export class ContainerAgentRunner {
165
145
  logStream = undefined;
166
146
  if (exitCode === 42) {
167
147
  runResult = "rerun";
148
+ this.logger.info({ exitCode, elapsed: `${elapsed}s` }, `${logPrefix ?? "container"} finished (rerun requested)`);
168
149
  }
169
150
  else if (exitCode !== 0) {
151
+ if (this._aborting) {
152
+ this.logger.info({ exitCode, elapsed: `${elapsed}s` }, `${logPrefix ?? "container"} killed (abort requested)`);
153
+ }
154
+ else {
155
+ this.logger.error({ exitCode, elapsed: `${elapsed}s` }, `${logPrefix ?? "container"} exited with error`);
156
+ }
170
157
  runError = `Container exited with code ${exitCode}`;
171
158
  runResult = "error";
172
159
  }
173
160
  else {
174
161
  runResult = "completed";
162
+ this.logger.info({ exitCode, elapsed: `${elapsed}s` }, `${logPrefix ?? "container"} finished`);
175
163
  }
176
- this.logger.info({ exitCode, elapsed: `${elapsed}s` }, `adopted container finished (${runResult})`);
177
164
  this.statusTracker?.addLogLine(this.agentConfig.name, `${this.instanceId} ${runResult} (${elapsed}s)`);
178
165
  }
179
166
  catch (err) {
180
- this.logger.error({ err }, "adopted container monitoring failed");
167
+ this.logger.error({ err }, `${this.agentConfig.name} container monitoring failed`);
181
168
  runError = String(err?.message || err).slice(0, 200);
182
169
  }
183
170
  finally {
@@ -186,16 +173,79 @@ export class ContainerAgentRunner {
186
173
  if (this.gatewayUrl) {
187
174
  await this.unregisterContainer(shutdownSecret);
188
175
  }
176
+ if (credentials) {
177
+ this.runtime.cleanupCredentials(credentials);
178
+ }
189
179
  if (containerName) {
190
180
  await this.runtime.remove(containerName);
191
181
  }
192
182
  this._containerName = undefined;
193
- const elapsed = Date.now() - runStartTime;
194
- const instanceStatus = this._aborting ? "killed" : runError ? "error" : "completed";
195
- this.statusTracker?.completeInstance(this.instanceId, instanceStatus);
196
- this.statusTracker?.endRun(this.agentConfig.name, elapsed, runError, this._tokenUsage);
197
- this._running = false;
183
+ // Add telemetry attributes for the execution result
184
+ if (parentSpan) {
185
+ const attrs = {
186
+ "execution.result": runResult,
187
+ "execution.has_return_value": !!this._returnValue,
188
+ "container.name": containerName || "",
189
+ };
190
+ // Add token usage OTel attributes if available
191
+ if (this._tokenUsage) {
192
+ const usage = this._tokenUsage;
193
+ attrs["llm.token.input"] = usage.inputTokens;
194
+ attrs["llm.token.output"] = usage.outputTokens;
195
+ attrs["llm.token.cache_read"] = usage.cacheReadTokens;
196
+ attrs["llm.token.cache_write"] = usage.cacheWriteTokens;
197
+ attrs["llm.token.total"] = usage.totalTokens;
198
+ attrs["llm.cost.total"] = usage.cost;
199
+ attrs["llm.turns"] = usage.turnCount;
200
+ }
201
+ parentSpan.setAttributes(attrs);
202
+ if (runResult === "error") {
203
+ parentSpan.recordException(new Error(`Container execution failed: ${runError || "Unknown error"}`));
204
+ }
205
+ }
198
206
  }
207
+ return { runResult, runError };
208
+ }
209
+ /**
210
+ * Adopt an already-running container from a previous scheduler session.
211
+ * Re-attaches log streaming, monitors exit, and records the result.
212
+ * Skips image launch, credential preparation, and env setup.
213
+ */
214
+ async adoptContainer(containerName, shutdownSecret, instanceId, triggerInfo) {
215
+ if (this._running) {
216
+ this.logger.warn("runner already busy, cannot adopt");
217
+ return { result: "error", triggers: [] };
218
+ }
219
+ this._running = true;
220
+ this._aborting = false;
221
+ this._returnValue = undefined;
222
+ this._tokenUsage = undefined;
223
+ this.instanceId = instanceId;
224
+ this._containerName = containerName;
225
+ this.logger = this.baseLogger.child({ instance: this.instanceId });
226
+ const runStartTime = Date.now();
227
+ this.statusTracker?.startRun(this.agentConfig.name, "re-adopted");
228
+ this.statusTracker?.registerInstance({
229
+ id: this.instanceId,
230
+ agentName: this.agentConfig.name,
231
+ status: "running",
232
+ startedAt: new Date(),
233
+ trigger: "re-adopted",
234
+ });
235
+ this.logger.info({ container: containerName }, "re-adopted orphan container");
236
+ this.statusTracker?.addLogLine(this.agentConfig.name, `${this.instanceId} re-adopted`);
237
+ const timeout = this.agentConfig.timeout ?? this.globalConfig.local?.timeout ?? DEFAULT_AGENT_TIMEOUT;
238
+ const { runResult, runError } = await this.monitorContainer({
239
+ containerName,
240
+ shutdownSecret,
241
+ timeout,
242
+ logPrefix: "adopted container",
243
+ });
244
+ const elapsed = Date.now() - runStartTime;
245
+ const instanceStatus = this._aborting ? "killed" : runError ? "error" : "completed";
246
+ this.statusTracker?.completeInstance(this.instanceId, instanceStatus);
247
+ this.statusTracker?.endRun(this.agentConfig.name, elapsed, runError, this._tokenUsage);
248
+ this._running = false;
199
249
  return { result: runResult, triggers: [], returnValue: this._returnValue, usage: this._tokenUsage };
200
250
  }
201
251
  async run(prompt, triggerInfo, instanceId) {
@@ -208,20 +258,29 @@ export class ContainerAgentRunner {
208
258
  // Generate a unique instance ID for this run (or use the pre-generated one)
209
259
  this.instanceId = instanceId ?? `${this.agentConfig.name}-${randomBytes(4).toString("hex")}`;
210
260
  this.logger = this.baseLogger.child({ instance: this.instanceId });
211
- return await withSpan("container_agent.run", async (span) => {
212
- span.setAttributes({
213
- "agent.name": this.agentConfig.name,
214
- "agent.run_id": this.instanceId,
215
- "agent.trigger_type": triggerInfo?.type || "manual",
216
- "agent.trigger_source": triggerInfo?.source || "",
217
- "agent.model_provider": this.agentConfig.models[0]?.provider,
218
- "agent.model_name": this.agentConfig.models[0]?.model,
219
- "execution.environment": "container",
220
- "runtime.type": this.runtime.constructor.name,
221
- "container.image": this.image,
222
- });
223
- return this._runInternalContainer(prompt, triggerInfo, span);
224
- }, {}, SpanKind.INTERNAL);
261
+ try {
262
+ return await withSpan("container_agent.run", async (span) => {
263
+ span.setAttributes({
264
+ "agent.name": this.agentConfig.name,
265
+ "agent.run_id": this.instanceId,
266
+ "agent.trigger_type": triggerInfo?.type || "manual",
267
+ "agent.trigger_source": triggerInfo?.source || "",
268
+ "agent.model_provider": this.agentConfig.models[0]?.provider,
269
+ "agent.model_name": this.agentConfig.models[0]?.model,
270
+ "execution.environment": "container",
271
+ "runtime.type": this.runtime.constructor.name,
272
+ "container.image": this.image,
273
+ });
274
+ return this._runInternalContainer(prompt, triggerInfo, span);
275
+ }, {}, SpanKind.INTERNAL);
276
+ }
277
+ catch (err) {
278
+ // withSpan failed before _runInternalContainer could run its cleanup.
279
+ // Reset _running to avoid a permanent ghost runner state.
280
+ this._running = false;
281
+ this.logger.error({ err }, "container run setup failed");
282
+ return { result: "error", triggers: [] };
283
+ }
225
284
  }
226
285
  async _runInternalContainer(prompt, triggerInfo, parentSpan) {
227
286
  this._returnValue = undefined;
@@ -256,7 +315,6 @@ export class ContainerAgentRunner {
256
315
  const shutdownSecret = randomUUID();
257
316
  let credentials;
258
317
  let containerName;
259
- let logStream;
260
318
  try {
261
319
  const timeout = this.agentConfig.timeout ?? this.globalConfig.local?.timeout ?? DEFAULT_AGENT_TIMEOUT;
262
320
  // Resolve credential refs — include provider keys for all models in the chain
@@ -304,96 +362,42 @@ export class ContainerAgentRunner {
304
362
  telemetry: this.globalConfig.telemetry,
305
363
  });
306
364
  this._containerName = containerName;
307
- // Register container with gateway for shutdown, locking, and log ingestion.
308
- if (this.gatewayUrl) {
309
- await this.registerContainer(shutdownSecret, {
310
- containerName,
311
- agentName: this.agentConfig.name,
312
- instanceId: this.instanceId,
313
- });
314
- }
315
365
  // Set cloud console URL for TUI display
316
366
  const taskUrl = this.runtime.getTaskUrl(containerName);
317
367
  if (taskUrl) {
318
368
  this.statusTracker?.setTaskUrl(this.agentConfig.name, taskUrl);
319
369
  }
320
370
  this.logger.info({ container: containerName }, "container launched");
321
- // Stream logs in real-time via runtime
322
- logStream = this.runtime.streamLogs(containerName, (line) => this.forwardLogLine(line), (text) => this.logger.warn({ stderr: text.slice(0, 500) }, "container stderr"));
323
- const startTime = Date.now();
324
- const exitCode = await this.runtime.waitForExit(containerName, timeout);
325
- const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
326
- // Give the log stream a moment to flush
327
- await new Promise((r) => setTimeout(r, 500));
328
- logStream.stop();
329
- logStream = undefined;
330
- if (exitCode === 42) {
331
- // Exit code 42 = rerun requested
332
- this.logger.info({ exitCode, elapsed: `${elapsed}s` }, "container finished (rerun requested)");
333
- runResult = "rerun";
334
- }
335
- else if (exitCode !== 0) {
336
- if (this._aborting) {
337
- this.logger.info({ exitCode, elapsed: `${elapsed}s` }, "container killed (abort requested)");
338
- }
339
- else {
340
- this.logger.error({ exitCode, elapsed: `${elapsed}s` }, "container exited with error");
341
- }
342
- runError = `Container exited with code ${exitCode}`;
343
- runResult = "error";
344
- }
345
- else {
346
- this.logger.info({ exitCode, elapsed: `${elapsed}s` }, "container finished");
347
- runResult = "completed";
348
- }
349
- this.statusTracker?.addLogLine(this.agentConfig.name, `${this.instanceId} ${runResult} (${elapsed}s)`);
371
+ // Monitor the container (stream logs, wait for exit, cleanup)
372
+ ({ runResult, runError } = await this.monitorContainer({
373
+ containerName,
374
+ shutdownSecret,
375
+ timeout,
376
+ credentials,
377
+ parentSpan,
378
+ }));
379
+ // monitorContainer already cleaned up credentials and container
380
+ credentials = undefined;
381
+ containerName = undefined;
350
382
  }
351
383
  catch (err) {
352
384
  this.logger.error({ err }, `${this.agentConfig.name} container run failed`);
353
385
  runError = String(err?.message || err).slice(0, 200);
354
- }
355
- finally {
356
- if (logStream)
357
- logStream.stop();
358
- if (this.gatewayUrl) {
359
- await this.unregisterContainer(shutdownSecret);
360
- }
386
+ // If we failed before monitorContainer ran, clean up what we have
361
387
  if (credentials) {
362
388
  this.runtime.cleanupCredentials(credentials);
363
389
  }
364
390
  if (containerName) {
365
- await this.runtime.remove(containerName);
391
+ await this.runtime.remove(containerName).catch(() => { });
366
392
  }
367
393
  this._containerName = undefined;
394
+ }
395
+ finally {
368
396
  const elapsed = Date.now() - runStartTime;
369
397
  const instanceStatus = this._aborting ? "killed" : runError ? "error" : "completed";
370
398
  this.statusTracker?.completeInstance(this.instanceId, instanceStatus);
371
399
  this.statusTracker?.endRun(this.agentConfig.name, elapsed, runError, this._tokenUsage);
372
400
  this._running = false;
373
- // Add telemetry attributes for the execution result
374
- if (parentSpan) {
375
- const attrs = {
376
- "execution.result": runResult,
377
- "execution.elapsed_ms": elapsed,
378
- "execution.has_return_value": !!this._returnValue,
379
- "container.name": containerName || "",
380
- };
381
- // Add token usage OTel attributes if available
382
- if (this._tokenUsage) {
383
- const usage = this._tokenUsage;
384
- attrs["llm.token.input"] = usage.inputTokens;
385
- attrs["llm.token.output"] = usage.outputTokens;
386
- attrs["llm.token.cache_read"] = usage.cacheReadTokens;
387
- attrs["llm.token.cache_write"] = usage.cacheWriteTokens;
388
- attrs["llm.token.total"] = usage.totalTokens;
389
- attrs["llm.cost.total"] = usage.cost;
390
- attrs["llm.turns"] = usage.turnCount;
391
- }
392
- parentSpan.setAttributes(attrs);
393
- if (runResult === "error") {
394
- parentSpan.recordException(new Error(`Container execution failed: ${runError || "Unknown error"}`));
395
- }
396
- }
397
401
  }
398
402
  return { result: runResult, triggers: [], returnValue: this._returnValue, usage: this._tokenUsage };
399
403
  }