@evalops/maestro 0.10.46 → 0.10.47

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 (101) hide show
  1. package/dist/agent/providers/openai-codex-session.js +1 -1
  2. package/dist/agent/providers/openai-codex-session.js.map +1 -1
  3. package/dist/app-server/in-process-client.d.ts +2 -2
  4. package/dist/app-server/in-process-client.js.map +1 -1
  5. package/dist/app-server/protocol-modes-api.js +1 -1
  6. package/dist/app-server/protocol-modes-api.js.map +1 -1
  7. package/dist/app-server/sandbox-check-api.d.ts +21 -0
  8. package/dist/app-server/{sandbox-proof-api.d.ts.map → sandbox-check-api.d.ts.map} +1 -1
  9. package/dist/app-server/{sandbox-proof-api.js → sandbox-check-api.js} +18 -18
  10. package/dist/app-server/{sandbox-proof-api.js.map → sandbox-check-api.js.map} +1 -1
  11. package/dist/app-server/session-api.d.ts +5 -5
  12. package/dist/app-server/session-api.js +18 -18
  13. package/dist/app-server/session-api.js.map +1 -1
  14. package/dist/audit/logger.d.ts +1 -1
  15. package/dist/cli/args.js +1 -1
  16. package/dist/cli/args.js.map +1 -1
  17. package/dist/cli/commands/codex.js +30 -3
  18. package/dist/cli/commands/codex.js.map +1 -1
  19. package/dist/cli-tui/auth-state.d.ts +7 -0
  20. package/dist/cli-tui/auth-state.d.ts.map +1 -0
  21. package/dist/cli-tui/auth-state.js +46 -0
  22. package/dist/cli-tui/auth-state.js.map +1 -0
  23. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  24. package/dist/cli-tui/commands/command-catalog.js +6 -1
  25. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  26. package/dist/cli-tui/commands/command-suite-handlers.d.ts +2 -5
  27. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -1
  28. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -1
  29. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +6 -5
  30. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
  31. package/dist/cli-tui/commands/subcommands/auth-commands.js +2 -2
  32. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
  33. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  34. package/dist/cli-tui/oauth/oauth-flow-controller.js +24 -11
  35. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  36. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +1 -0
  37. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
  38. package/dist/cli-tui/selectors/oauth-selector-view.js +1 -1
  39. package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
  40. package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -1
  41. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
  42. package/dist/cli-tui/selectors/oauth-selector.js +25 -2
  43. package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
  44. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +2 -5
  45. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -1
  46. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -1
  47. package/dist/cli-tui/tui-renderer.d.ts +0 -4
  48. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  49. package/dist/cli-tui/tui-renderer.js +3 -28
  50. package/dist/cli-tui/tui-renderer.js.map +1 -1
  51. package/dist/cli.js +896 -497
  52. package/dist/codex/app-server-client.d.ts +8 -2
  53. package/dist/codex/app-server-client.d.ts.map +1 -1
  54. package/dist/codex/app-server-client.js +18 -4
  55. package/dist/codex/app-server-client.js.map +1 -1
  56. package/dist/codex/auth.d.ts +4 -0
  57. package/dist/codex/auth.d.ts.map +1 -0
  58. package/dist/codex/auth.js +103 -0
  59. package/dist/codex/auth.js.map +1 -0
  60. package/dist/db/schema.d.ts +1 -1
  61. package/dist/evalops/agent-bootstrap.js +2 -2
  62. package/dist/evalops/agent-bootstrap.js.map +1 -1
  63. package/dist/main.d.ts.map +1 -1
  64. package/dist/main.js +5 -1
  65. package/dist/main.js.map +1 -1
  66. package/dist/models/config-loader.d.ts +5 -5
  67. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +19 -19
  68. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  69. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +12 -13
  70. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  71. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  72. package/dist/node_modules/@evalops/tui/package.json +1 -1
  73. package/dist/oauth/index.d.ts +1 -0
  74. package/dist/oauth/index.d.ts.map +1 -1
  75. package/dist/oauth/index.js +42 -2
  76. package/dist/oauth/index.js.map +1 -1
  77. package/dist/server/app-context.d.ts +2 -0
  78. package/dist/server/app-context.d.ts.map +1 -1
  79. package/dist/server/app-context.js.map +1 -1
  80. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  81. package/dist/server/handlers/headless-sessions.js +44 -10
  82. package/dist/server/handlers/headless-sessions.js.map +1 -1
  83. package/dist/server/handlers/hosted-runner-identity.d.ts +2 -0
  84. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  85. package/dist/server/handlers/hosted-runner-identity.js +2 -0
  86. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  87. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  88. package/dist/server/handlers/platform-a2a-push.js +113 -2
  89. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  90. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  91. package/dist/server/headless-in-process-host.js +1 -1
  92. package/dist/server/headless-in-process-host.js.map +1 -1
  93. package/dist/server/headless-runtime-service.d.ts +9 -2
  94. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  95. package/dist/server/headless-runtime-service.js +54 -15
  96. package/dist/server/headless-runtime-service.js.map +1 -1
  97. package/dist/tools/background/task-runtime.js +1 -1
  98. package/dist/tools/background/task-runtime.js.map +1 -1
  99. package/dist/version.json +2 -2
  100. package/package.json +1 -1
  101. package/dist/app-server/sandbox-proof-api.d.ts +0 -21
@@ -331,7 +331,7 @@ export class BackgroundTaskRuntime {
331
331
  };
332
332
  attach(child.stdout);
333
333
  attach(child.stderr);
334
- child.once("exit", closeStream);
334
+ child.once("close", closeStream);
335
335
  child.once("error", closeStream);
336
336
  }
337
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"task-runtime.js","sourceRoot":"","sources":["../../../src/tools/background/task-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype ChildProcess,\n\ttype SpawnOptions,\n\tspawn,\n} from \"node:child_process\";\nimport { existsSync, statSync } from \"node:fs\";\n\nimport {\n\tgetShellConfig,\n\tkillProcessTree,\n\tparseCommandArguments,\n} from \"../shell-utils.js\";\nimport { ToolError } from \"../tool-dsl.js\";\nimport {\n\tResourceMonitor,\n\ttype RestartPolicy,\n\tRotatingLogWriter,\n\tcanRestart,\n\tcomputeRestartDelay,\n\tincrementAttempts,\n} from \"./index.js\";\nimport { archivedLogPath, rotateArchives } from \"./log-files.js\";\nimport { evaluateResourceLimitBreach } from \"./resource-limits.js\";\nimport type {\n\tBackgroundTask,\n\tBackgroundTaskHistoryEvent,\n\tBackgroundTaskNotification,\n\tChildProcessWithUsage,\n} from \"./task-types.js\";\n\nconst RESOURCE_POLL_INTERVAL_MS = 200;\n\nexport interface BackgroundTaskRuntimeHooks {\n\temitTaskNotification: (payload: BackgroundTaskNotification) => void;\n\temitTaskTelemetry: (\n\t\ttask: BackgroundTask,\n\t\tevent: BackgroundTaskHistoryEvent,\n\t) => void;\n\tmaybeNotifyRestart: (task: BackgroundTask, policy: RestartPolicy) => void;\n\tnotifyFailure: (\n\t\ttask: BackgroundTask,\n\t\tcode: number | null,\n\t\tsignal: NodeJS.Signals | null,\n\t) => void;\n\tscheduleCleanup: (task: BackgroundTask) => void;\n\tsetFailureReason: (task: BackgroundTask, reason: string) => void;\n}\n\nexport class BackgroundTaskRuntime {\n\tconstructor(\n\t\tprivate readonly hooks: BackgroundTaskRuntimeHooks,\n\t\tprivate readonly resourceMonitor = new ResourceMonitor(),\n\t) {}\n\n\tlaunchProcess(task: BackgroundTask): void {\n\t\tconst child = this.createChildProcess(task);\n\t\tthis.attachLogging(child, task);\n\t\ttask.process = child;\n\t\ttask.failureReason = undefined;\n\t\ttask.lastLimitBreach = undefined;\n\t\ttask.pid = child.pid ?? undefined;\n\t\tthis.startUsageMonitor(task);\n\t\ttask.status = \"running\";\n\t\ttask.stopRequested = false;\n\t\ttask.exitCode = undefined;\n\t\ttask.signal = undefined;\n\t\ttask.finishedAt = undefined;\n\t\ttask.completion = new Promise<void>((resolve) => {\n\t\t\tchild.once(\"exit\", (code, signal) => {\n\t\t\t\tthis.handleChildExit(task, child, resolve, code, signal);\n\t\t\t});\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tthis.handleChildError(task, child, resolve, error);\n\t\t\t});\n\t\t});\n\t\tthis.hooks.emitTaskTelemetry(task, \"started\");\n\t}\n\n\tstopUsageMonitor(task: BackgroundTask): void {\n\t\tif (task.usageMonitor) {\n\t\t\tclearInterval(task.usageMonitor);\n\t\t\ttask.usageMonitor = null;\n\t\t}\n\t}\n\n\tdisableRestart(task: BackgroundTask): void {\n\t\tthis.cancelRestart(task);\n\t\ttask.restartPolicy = undefined;\n\t}\n\n\tdisposeTask(task: BackgroundTask): void {\n\t\tthis.cancelRestart(task);\n\t\tthis.stopUsageMonitor(task);\n\t}\n\n\tprivate createChildProcess(task: BackgroundTask): ChildProcess {\n\t\tconst mergedEnv: NodeJS.ProcessEnv = task.env;\n\t\tconst spawnOptions: SpawnOptions = {\n\t\t\tdetached: true,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tcwd: task.cwd,\n\t\t\tenv: mergedEnv,\n\t\t};\n\t\tif (task.shellMode === \"shell\") {\n\t\t\tconst { shell, args } = getShellConfig();\n\t\t\treturn spawn(shell, [...args, task.command], spawnOptions);\n\t\t}\n\t\tlet parsed: string[];\n\t\ttry {\n\t\t\tparsed = parseCommandArguments(task.command);\n\t\t} catch (error) {\n\t\t\tthrow new ToolError(\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Failed to parse command arguments\",\n\t\t\t);\n\t\t}\n\t\tif (parsed.length === 0) {\n\t\t\tthrow new ToolError(\"Command must contain an executable to run\");\n\t\t}\n\t\treturn spawn(parsed[0]!, parsed.slice(1), spawnOptions);\n\t}\n\n\tprivate handleChildExit(\n\t\ttask: BackgroundTask,\n\t\tchild: ChildProcess,\n\t\tresolve: () => void,\n\t\tcode: number | null,\n\t\tsignal: NodeJS.Signals | null,\n\t): void {\n\t\tif (task.process !== child) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.exitCode = code;\n\t\ttask.signal = signal;\n\t\ttask.pid = undefined;\n\t\tthis.stopUsageMonitor(task);\n\t\tthis.captureResourceUsage(task, child);\n\t\ttask.terminatingForLimits = false;\n\t\tconst forcedFailure = Boolean(task.failureReason);\n\t\tif (forcedFailure) {\n\t\t\tthis.disableRestart(task);\n\t\t}\n\t\tif (task.stopRequested) {\n\t\t\ttask.status = \"stopped\";\n\t\t\ttask.finishedAt = Date.now();\n\t\t\tthis.hooks.scheduleCleanup(task);\n\t\t\tthis.hooks.emitTaskTelemetry(task, \"stopped\");\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tif (!forcedFailure && code === 0) {\n\t\t\ttask.status = \"exited\";\n\t\t\ttask.finishedAt = Date.now();\n\t\t\tthis.hooks.scheduleCleanup(task);\n\t\t\tthis.hooks.emitTaskTelemetry(task, \"exited\");\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tif (!forcedFailure && this.scheduleRestart(task)) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.status = \"failed\";\n\t\ttask.finishedAt = Date.now();\n\t\tthis.hooks.scheduleCleanup(task);\n\t\tthis.hooks.emitTaskTelemetry(task, \"failed\");\n\t\tif (!forcedFailure) {\n\t\t\tthis.hooks.notifyFailure(task, code, signal);\n\t\t}\n\t\tresolve();\n\t}\n\n\tprivate handleChildError(\n\t\ttask: BackgroundTask,\n\t\tchild: ChildProcess,\n\t\tresolve: () => void,\n\t\t_error: Error,\n\t): void {\n\t\tif (task.process !== child) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.pid = undefined;\n\t\tthis.stopUsageMonitor(task);\n\t\tthis.captureResourceUsage(task, child);\n\t\ttask.terminatingForLimits = false;\n\t\tconst forcedFailure = Boolean(task.failureReason);\n\t\tif (forcedFailure) {\n\t\t\tthis.disableRestart(task);\n\t\t}\n\t\tif (!forcedFailure && this.scheduleRestart(task)) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.status = \"failed\";\n\t\ttask.finishedAt = Date.now();\n\t\tthis.hooks.scheduleCleanup(task);\n\t\tthis.hooks.emitTaskTelemetry(task, \"failed\");\n\t\tif (!forcedFailure) {\n\t\t\tthis.hooks.notifyFailure(task, null, null);\n\t\t}\n\t\tresolve();\n\t}\n\n\tprivate captureResourceUsage(\n\t\ttask: BackgroundTask,\n\t\tchild: ChildProcess,\n\t): void {\n\t\tconst { resourceUsage } = child as ChildProcessWithUsage;\n\t\tif (typeof resourceUsage !== \"function\") {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst usage = resourceUsage.call(child);\n\t\t\tif (!task.resourceUsage) {\n\t\t\t\ttask.resourceUsage = {};\n\t\t\t}\n\t\t\tconst target = task.resourceUsage;\n\t\t\tif (usage.maxRSS) {\n\t\t\t\ttarget.maxRssKb = Math.max(target.maxRssKb ?? 0, usage.maxRSS);\n\t\t\t}\n\t\t\tif (usage.userCPUTime) {\n\t\t\t\ttarget.userMs = Math.max(target.userMs ?? 0, usage.userCPUTime / 1000);\n\t\t\t}\n\t\t\tif (usage.systemCPUTime) {\n\t\t\t\ttarget.systemMs = Math.max(\n\t\t\t\t\ttarget.systemMs ?? 0,\n\t\t\t\t\tusage.systemCPUTime / 1000,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore metrics errors\n\t\t}\n\t\tthis.enforceRuntimeLimits(task);\n\t}\n\n\tprivate scheduleRestart(task: BackgroundTask): boolean {\n\t\tconst policy = task.restartPolicy;\n\t\tif (!policy || task.stopRequested) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!canRestart(policy)) {\n\t\t\treturn false;\n\t\t}\n\t\tincrementAttempts(policy);\n\t\ttask.status = \"restarting\";\n\t\tthis.hooks.emitTaskTelemetry(task, \"restarted\");\n\t\tthis.hooks.maybeNotifyRestart(task, policy);\n\t\tthis.cancelRestart(task);\n\t\tconst delay = computeRestartDelay(policy);\n\t\ttask.restartTimer = setTimeout(() => {\n\t\t\ttask.restartTimer = null;\n\t\t\tthis.launchProcess(task);\n\t\t}, delay);\n\t\tif (task.restartTimer.unref) {\n\t\t\ttask.restartTimer.unref();\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate cancelRestart(task: BackgroundTask): void {\n\t\tif (task.restartTimer) {\n\t\t\tclearTimeout(task.restartTimer);\n\t\t\ttask.restartTimer = null;\n\t\t}\n\t}\n\n\tprivate startUsageMonitor(task: BackgroundTask): void {\n\t\tif (!task.pid || task.usageMonitor) {\n\t\t\treturn;\n\t\t}\n\t\tconst mode = this.getMonitoringMode();\n\t\ttask.monitoringMode = mode;\n\t\tif (mode === \"disabled\") {\n\t\t\treturn;\n\t\t}\n\t\tthis.sampleResourceUsage(task);\n\t\tconst monitor = setInterval(() => {\n\t\t\tthis.sampleResourceUsage(task);\n\t\t}, RESOURCE_POLL_INTERVAL_MS);\n\t\tif (monitor.unref) {\n\t\t\tmonitor.unref();\n\t\t}\n\t\ttask.usageMonitor = monitor;\n\t}\n\n\tprivate getMonitoringMode(): \"proc\" | \"ps\" | \"disabled\" {\n\t\treturn this.resourceMonitor.getMode();\n\t}\n\n\tprivate sampleResourceUsage(task: BackgroundTask): void {\n\t\tif (!task.pid) {\n\t\t\tthis.stopUsageMonitor(task);\n\t\t\treturn;\n\t\t}\n\t\tconst usage = this.resourceMonitor.getUsage(task.pid);\n\t\tif (!usage) {\n\t\t\tif (task.monitoringMode === \"ps\") {\n\t\t\t\tthis.stopUsageMonitor(task);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!task.resourceUsage) {\n\t\t\ttask.resourceUsage = {};\n\t\t}\n\t\tconst target = task.resourceUsage;\n\t\tif (usage.maxRssKb !== undefined) {\n\t\t\ttarget.maxRssKb = Math.max(target.maxRssKb ?? 0, usage.maxRssKb);\n\t\t}\n\t\tif (usage.userMs !== undefined) {\n\t\t\ttarget.userMs = Math.max(target.userMs ?? 0, usage.userMs);\n\t\t}\n\t\tif (usage.systemMs !== undefined) {\n\t\t\ttarget.systemMs = Math.max(target.systemMs ?? 0, usage.systemMs);\n\t\t}\n\t\tthis.enforceRuntimeLimits(task);\n\t}\n\n\tprivate enforceRuntimeLimits(task: BackgroundTask): void {\n\t\tif (!task.resourceUsage || task.terminatingForLimits) {\n\t\t\treturn;\n\t\t}\n\t\tconst breach = evaluateResourceLimitBreach(task.resourceUsage, task.limits);\n\t\tif (!breach || task.failureReason) {\n\t\t\treturn;\n\t\t}\n\t\tconst describe =\n\t\t\tbreach.kind === \"memory\"\n\t\t\t\t? `${(breach.actual / 1024).toFixed(1)}MB > ${(breach.limit / 1024).toFixed(1)}MB`\n\t\t\t\t: `${Math.round(breach.actual)}ms > ${Math.round(breach.limit)}ms`;\n\t\tthis.hooks.setFailureReason(\n\t\t\ttask,\n\t\t\t`Resource limit (${breach.kind} ${describe})`,\n\t\t);\n\t\ttask.lastLimitBreach = breach;\n\t\ttask.terminatingForLimits = true;\n\t\tthis.disableRestart(task);\n\t\tif (!task.pid) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tkillProcessTree(task.pid);\n\t\t} catch (error) {\n\t\t\tconst errMessage =\n\t\t\t\terror instanceof Error ? error.message : \"Failed to terminate process\";\n\t\t\tthis.hooks.emitTaskNotification({\n\t\t\t\ttaskId: task.id,\n\t\t\t\tstatus: task.status,\n\t\t\t\tcommand: task.command,\n\t\t\t\tkind: \"limit\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t\treason: `${task.failureReason}; kill error: ${errMessage}`,\n\t\t\t\tmessage: \"resource limit hit but termination failed\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.hooks.emitTaskNotification({\n\t\t\ttaskId: task.id,\n\t\t\tstatus: task.status,\n\t\t\tcommand: task.command,\n\t\t\tkind: \"limit\",\n\t\t\tlevel: \"warn\",\n\t\t\treason: task.failureReason,\n\t\t\tmessage: \"exceeded resource limits; terminating\",\n\t\t});\n\t}\n\n\tprivate attachLogging(child: ChildProcess, task: BackgroundTask): void {\n\t\tlet existingSize = 0;\n\t\ttry {\n\t\t\texistingSize = statSync(task.logPath).size;\n\t\t} catch {\n\t\t\t// File may not exist yet\n\t\t}\n\t\tconst writer = new RotatingLogWriter({\n\t\t\tlimit: task.limits.logSizeLimit,\n\t\t\tsegments: task.limits.logSegments,\n\t\t\tlogPath: task.logPath,\n\t\t\texistingSize,\n\t\t\tmarkTruncated: () => {\n\t\t\t\ttask.logTruncated = true;\n\t\t\t},\n\t\t\tshiftArchives: () =>\n\t\t\t\trotateArchives(task.logPath, task.limits.logSegments),\n\t\t\tarchivedPath: (index) => archivedLogPath(task.logPath, index),\n\t\t});\n\t\ttask.logWriter = writer;\n\n\t\tlet closed = false;\n\t\tconst closeStream = () => {\n\t\t\tif (closed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclosed = true;\n\t\t\twriter.end();\n\t\t};\n\n\t\tconst attach = (source?: NodeJS.ReadableStream | null) => {\n\t\t\tif (!source) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsource.pipe(writer, { end: false });\n\t\t\tsource.on(\"error\", () => {\n\t\t\t\ttask.logTruncated = true;\n\t\t\t\tcloseStream();\n\t\t\t});\n\t\t};\n\n\t\tattach(child.stdout);\n\t\tattach(child.stderr);\n\n\t\tchild.once(\"exit\", closeStream);\n\t\tchild.once(\"error\", closeStream);\n\t}\n}\n"]}
1
+ {"version":3,"file":"task-runtime.js","sourceRoot":"","sources":["../../../src/tools/background/task-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype ChildProcess,\n\ttype SpawnOptions,\n\tspawn,\n} from \"node:child_process\";\nimport { existsSync, statSync } from \"node:fs\";\n\nimport {\n\tgetShellConfig,\n\tkillProcessTree,\n\tparseCommandArguments,\n} from \"../shell-utils.js\";\nimport { ToolError } from \"../tool-dsl.js\";\nimport {\n\tResourceMonitor,\n\ttype RestartPolicy,\n\tRotatingLogWriter,\n\tcanRestart,\n\tcomputeRestartDelay,\n\tincrementAttempts,\n} from \"./index.js\";\nimport { archivedLogPath, rotateArchives } from \"./log-files.js\";\nimport { evaluateResourceLimitBreach } from \"./resource-limits.js\";\nimport type {\n\tBackgroundTask,\n\tBackgroundTaskHistoryEvent,\n\tBackgroundTaskNotification,\n\tChildProcessWithUsage,\n} from \"./task-types.js\";\n\nconst RESOURCE_POLL_INTERVAL_MS = 200;\n\nexport interface BackgroundTaskRuntimeHooks {\n\temitTaskNotification: (payload: BackgroundTaskNotification) => void;\n\temitTaskTelemetry: (\n\t\ttask: BackgroundTask,\n\t\tevent: BackgroundTaskHistoryEvent,\n\t) => void;\n\tmaybeNotifyRestart: (task: BackgroundTask, policy: RestartPolicy) => void;\n\tnotifyFailure: (\n\t\ttask: BackgroundTask,\n\t\tcode: number | null,\n\t\tsignal: NodeJS.Signals | null,\n\t) => void;\n\tscheduleCleanup: (task: BackgroundTask) => void;\n\tsetFailureReason: (task: BackgroundTask, reason: string) => void;\n}\n\nexport class BackgroundTaskRuntime {\n\tconstructor(\n\t\tprivate readonly hooks: BackgroundTaskRuntimeHooks,\n\t\tprivate readonly resourceMonitor = new ResourceMonitor(),\n\t) {}\n\n\tlaunchProcess(task: BackgroundTask): void {\n\t\tconst child = this.createChildProcess(task);\n\t\tthis.attachLogging(child, task);\n\t\ttask.process = child;\n\t\ttask.failureReason = undefined;\n\t\ttask.lastLimitBreach = undefined;\n\t\ttask.pid = child.pid ?? undefined;\n\t\tthis.startUsageMonitor(task);\n\t\ttask.status = \"running\";\n\t\ttask.stopRequested = false;\n\t\ttask.exitCode = undefined;\n\t\ttask.signal = undefined;\n\t\ttask.finishedAt = undefined;\n\t\ttask.completion = new Promise<void>((resolve) => {\n\t\t\tchild.once(\"exit\", (code, signal) => {\n\t\t\t\tthis.handleChildExit(task, child, resolve, code, signal);\n\t\t\t});\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tthis.handleChildError(task, child, resolve, error);\n\t\t\t});\n\t\t});\n\t\tthis.hooks.emitTaskTelemetry(task, \"started\");\n\t}\n\n\tstopUsageMonitor(task: BackgroundTask): void {\n\t\tif (task.usageMonitor) {\n\t\t\tclearInterval(task.usageMonitor);\n\t\t\ttask.usageMonitor = null;\n\t\t}\n\t}\n\n\tdisableRestart(task: BackgroundTask): void {\n\t\tthis.cancelRestart(task);\n\t\ttask.restartPolicy = undefined;\n\t}\n\n\tdisposeTask(task: BackgroundTask): void {\n\t\tthis.cancelRestart(task);\n\t\tthis.stopUsageMonitor(task);\n\t}\n\n\tprivate createChildProcess(task: BackgroundTask): ChildProcess {\n\t\tconst mergedEnv: NodeJS.ProcessEnv = task.env;\n\t\tconst spawnOptions: SpawnOptions = {\n\t\t\tdetached: true,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tcwd: task.cwd,\n\t\t\tenv: mergedEnv,\n\t\t};\n\t\tif (task.shellMode === \"shell\") {\n\t\t\tconst { shell, args } = getShellConfig();\n\t\t\treturn spawn(shell, [...args, task.command], spawnOptions);\n\t\t}\n\t\tlet parsed: string[];\n\t\ttry {\n\t\t\tparsed = parseCommandArguments(task.command);\n\t\t} catch (error) {\n\t\t\tthrow new ToolError(\n\t\t\t\terror instanceof Error\n\t\t\t\t\t? error.message\n\t\t\t\t\t: \"Failed to parse command arguments\",\n\t\t\t);\n\t\t}\n\t\tif (parsed.length === 0) {\n\t\t\tthrow new ToolError(\"Command must contain an executable to run\");\n\t\t}\n\t\treturn spawn(parsed[0]!, parsed.slice(1), spawnOptions);\n\t}\n\n\tprivate handleChildExit(\n\t\ttask: BackgroundTask,\n\t\tchild: ChildProcess,\n\t\tresolve: () => void,\n\t\tcode: number | null,\n\t\tsignal: NodeJS.Signals | null,\n\t): void {\n\t\tif (task.process !== child) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.exitCode = code;\n\t\ttask.signal = signal;\n\t\ttask.pid = undefined;\n\t\tthis.stopUsageMonitor(task);\n\t\tthis.captureResourceUsage(task, child);\n\t\ttask.terminatingForLimits = false;\n\t\tconst forcedFailure = Boolean(task.failureReason);\n\t\tif (forcedFailure) {\n\t\t\tthis.disableRestart(task);\n\t\t}\n\t\tif (task.stopRequested) {\n\t\t\ttask.status = \"stopped\";\n\t\t\ttask.finishedAt = Date.now();\n\t\t\tthis.hooks.scheduleCleanup(task);\n\t\t\tthis.hooks.emitTaskTelemetry(task, \"stopped\");\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tif (!forcedFailure && code === 0) {\n\t\t\ttask.status = \"exited\";\n\t\t\ttask.finishedAt = Date.now();\n\t\t\tthis.hooks.scheduleCleanup(task);\n\t\t\tthis.hooks.emitTaskTelemetry(task, \"exited\");\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\tif (!forcedFailure && this.scheduleRestart(task)) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.status = \"failed\";\n\t\ttask.finishedAt = Date.now();\n\t\tthis.hooks.scheduleCleanup(task);\n\t\tthis.hooks.emitTaskTelemetry(task, \"failed\");\n\t\tif (!forcedFailure) {\n\t\t\tthis.hooks.notifyFailure(task, code, signal);\n\t\t}\n\t\tresolve();\n\t}\n\n\tprivate handleChildError(\n\t\ttask: BackgroundTask,\n\t\tchild: ChildProcess,\n\t\tresolve: () => void,\n\t\t_error: Error,\n\t): void {\n\t\tif (task.process !== child) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.pid = undefined;\n\t\tthis.stopUsageMonitor(task);\n\t\tthis.captureResourceUsage(task, child);\n\t\ttask.terminatingForLimits = false;\n\t\tconst forcedFailure = Boolean(task.failureReason);\n\t\tif (forcedFailure) {\n\t\t\tthis.disableRestart(task);\n\t\t}\n\t\tif (!forcedFailure && this.scheduleRestart(task)) {\n\t\t\tresolve();\n\t\t\treturn;\n\t\t}\n\t\ttask.status = \"failed\";\n\t\ttask.finishedAt = Date.now();\n\t\tthis.hooks.scheduleCleanup(task);\n\t\tthis.hooks.emitTaskTelemetry(task, \"failed\");\n\t\tif (!forcedFailure) {\n\t\t\tthis.hooks.notifyFailure(task, null, null);\n\t\t}\n\t\tresolve();\n\t}\n\n\tprivate captureResourceUsage(\n\t\ttask: BackgroundTask,\n\t\tchild: ChildProcess,\n\t): void {\n\t\tconst { resourceUsage } = child as ChildProcessWithUsage;\n\t\tif (typeof resourceUsage !== \"function\") {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst usage = resourceUsage.call(child);\n\t\t\tif (!task.resourceUsage) {\n\t\t\t\ttask.resourceUsage = {};\n\t\t\t}\n\t\t\tconst target = task.resourceUsage;\n\t\t\tif (usage.maxRSS) {\n\t\t\t\ttarget.maxRssKb = Math.max(target.maxRssKb ?? 0, usage.maxRSS);\n\t\t\t}\n\t\t\tif (usage.userCPUTime) {\n\t\t\t\ttarget.userMs = Math.max(target.userMs ?? 0, usage.userCPUTime / 1000);\n\t\t\t}\n\t\t\tif (usage.systemCPUTime) {\n\t\t\t\ttarget.systemMs = Math.max(\n\t\t\t\t\ttarget.systemMs ?? 0,\n\t\t\t\t\tusage.systemCPUTime / 1000,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore metrics errors\n\t\t}\n\t\tthis.enforceRuntimeLimits(task);\n\t}\n\n\tprivate scheduleRestart(task: BackgroundTask): boolean {\n\t\tconst policy = task.restartPolicy;\n\t\tif (!policy || task.stopRequested) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!canRestart(policy)) {\n\t\t\treturn false;\n\t\t}\n\t\tincrementAttempts(policy);\n\t\ttask.status = \"restarting\";\n\t\tthis.hooks.emitTaskTelemetry(task, \"restarted\");\n\t\tthis.hooks.maybeNotifyRestart(task, policy);\n\t\tthis.cancelRestart(task);\n\t\tconst delay = computeRestartDelay(policy);\n\t\ttask.restartTimer = setTimeout(() => {\n\t\t\ttask.restartTimer = null;\n\t\t\tthis.launchProcess(task);\n\t\t}, delay);\n\t\tif (task.restartTimer.unref) {\n\t\t\ttask.restartTimer.unref();\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate cancelRestart(task: BackgroundTask): void {\n\t\tif (task.restartTimer) {\n\t\t\tclearTimeout(task.restartTimer);\n\t\t\ttask.restartTimer = null;\n\t\t}\n\t}\n\n\tprivate startUsageMonitor(task: BackgroundTask): void {\n\t\tif (!task.pid || task.usageMonitor) {\n\t\t\treturn;\n\t\t}\n\t\tconst mode = this.getMonitoringMode();\n\t\ttask.monitoringMode = mode;\n\t\tif (mode === \"disabled\") {\n\t\t\treturn;\n\t\t}\n\t\tthis.sampleResourceUsage(task);\n\t\tconst monitor = setInterval(() => {\n\t\t\tthis.sampleResourceUsage(task);\n\t\t}, RESOURCE_POLL_INTERVAL_MS);\n\t\tif (monitor.unref) {\n\t\t\tmonitor.unref();\n\t\t}\n\t\ttask.usageMonitor = monitor;\n\t}\n\n\tprivate getMonitoringMode(): \"proc\" | \"ps\" | \"disabled\" {\n\t\treturn this.resourceMonitor.getMode();\n\t}\n\n\tprivate sampleResourceUsage(task: BackgroundTask): void {\n\t\tif (!task.pid) {\n\t\t\tthis.stopUsageMonitor(task);\n\t\t\treturn;\n\t\t}\n\t\tconst usage = this.resourceMonitor.getUsage(task.pid);\n\t\tif (!usage) {\n\t\t\tif (task.monitoringMode === \"ps\") {\n\t\t\t\tthis.stopUsageMonitor(task);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (!task.resourceUsage) {\n\t\t\ttask.resourceUsage = {};\n\t\t}\n\t\tconst target = task.resourceUsage;\n\t\tif (usage.maxRssKb !== undefined) {\n\t\t\ttarget.maxRssKb = Math.max(target.maxRssKb ?? 0, usage.maxRssKb);\n\t\t}\n\t\tif (usage.userMs !== undefined) {\n\t\t\ttarget.userMs = Math.max(target.userMs ?? 0, usage.userMs);\n\t\t}\n\t\tif (usage.systemMs !== undefined) {\n\t\t\ttarget.systemMs = Math.max(target.systemMs ?? 0, usage.systemMs);\n\t\t}\n\t\tthis.enforceRuntimeLimits(task);\n\t}\n\n\tprivate enforceRuntimeLimits(task: BackgroundTask): void {\n\t\tif (!task.resourceUsage || task.terminatingForLimits) {\n\t\t\treturn;\n\t\t}\n\t\tconst breach = evaluateResourceLimitBreach(task.resourceUsage, task.limits);\n\t\tif (!breach || task.failureReason) {\n\t\t\treturn;\n\t\t}\n\t\tconst describe =\n\t\t\tbreach.kind === \"memory\"\n\t\t\t\t? `${(breach.actual / 1024).toFixed(1)}MB > ${(breach.limit / 1024).toFixed(1)}MB`\n\t\t\t\t: `${Math.round(breach.actual)}ms > ${Math.round(breach.limit)}ms`;\n\t\tthis.hooks.setFailureReason(\n\t\t\ttask,\n\t\t\t`Resource limit (${breach.kind} ${describe})`,\n\t\t);\n\t\ttask.lastLimitBreach = breach;\n\t\ttask.terminatingForLimits = true;\n\t\tthis.disableRestart(task);\n\t\tif (!task.pid) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tkillProcessTree(task.pid);\n\t\t} catch (error) {\n\t\t\tconst errMessage =\n\t\t\t\terror instanceof Error ? error.message : \"Failed to terminate process\";\n\t\t\tthis.hooks.emitTaskNotification({\n\t\t\t\ttaskId: task.id,\n\t\t\t\tstatus: task.status,\n\t\t\t\tcommand: task.command,\n\t\t\t\tkind: \"limit\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t\treason: `${task.failureReason}; kill error: ${errMessage}`,\n\t\t\t\tmessage: \"resource limit hit but termination failed\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.hooks.emitTaskNotification({\n\t\t\ttaskId: task.id,\n\t\t\tstatus: task.status,\n\t\t\tcommand: task.command,\n\t\t\tkind: \"limit\",\n\t\t\tlevel: \"warn\",\n\t\t\treason: task.failureReason,\n\t\t\tmessage: \"exceeded resource limits; terminating\",\n\t\t});\n\t}\n\n\tprivate attachLogging(child: ChildProcess, task: BackgroundTask): void {\n\t\tlet existingSize = 0;\n\t\ttry {\n\t\t\texistingSize = statSync(task.logPath).size;\n\t\t} catch {\n\t\t\t// File may not exist yet\n\t\t}\n\t\tconst writer = new RotatingLogWriter({\n\t\t\tlimit: task.limits.logSizeLimit,\n\t\t\tsegments: task.limits.logSegments,\n\t\t\tlogPath: task.logPath,\n\t\t\texistingSize,\n\t\t\tmarkTruncated: () => {\n\t\t\t\ttask.logTruncated = true;\n\t\t\t},\n\t\t\tshiftArchives: () =>\n\t\t\t\trotateArchives(task.logPath, task.limits.logSegments),\n\t\t\tarchivedPath: (index) => archivedLogPath(task.logPath, index),\n\t\t});\n\t\ttask.logWriter = writer;\n\n\t\tlet closed = false;\n\t\tconst closeStream = () => {\n\t\t\tif (closed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclosed = true;\n\t\t\twriter.end();\n\t\t};\n\n\t\tconst attach = (source?: NodeJS.ReadableStream | null) => {\n\t\t\tif (!source) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsource.pipe(writer, { end: false });\n\t\t\tsource.on(\"error\", () => {\n\t\t\t\ttask.logTruncated = true;\n\t\t\t\tcloseStream();\n\t\t\t});\n\t\t};\n\n\t\tattach(child.stdout);\n\t\tattach(child.stderr);\n\n\t\tchild.once(\"close\", closeStream);\n\t\tchild.once(\"error\", closeStream);\n\t}\n}\n"]}
package/dist/version.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "version": "0.10.46",
3
- "notes": "Maestro by EvalOps - Deterministic coding agent with TUI/CLI and Web UI for AI-assisted development v0.10.46 is now available."
2
+ "version": "0.10.47",
3
+ "notes": "Maestro by EvalOps - Deterministic coding agent with TUI/CLI and Web UI for AI-assisted development v0.10.47 is now available."
4
4
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@evalops/maestro",
3
3
  "description": "Maestro by EvalOps - Deterministic coding agent with TUI/CLI and Web UI for AI-assisted development",
4
- "version": "0.10.46",
4
+ "version": "0.10.47",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "workspaces": [
@@ -1,21 +0,0 @@
1
- import type { MaestroAppServerSandboxProbeResult, MaestroAppServerSandboxProofResult, MaestroAppServerSandboxType } from "@evalops/contracts";
2
- import { type CreateSandboxOptions, type Sandbox } from "../sandbox/index.js";
3
- type UnknownRecord = Record<string, unknown>;
4
- export declare class MaestroAppServerSandboxProofError extends Error {
5
- readonly code: number;
6
- constructor(code: number, message: string);
7
- }
8
- export interface MaestroAppServerSandboxProof {
9
- probe(): MaestroAppServerSandboxProbeResult;
10
- runProof(params?: UnknownRecord): Promise<MaestroAppServerSandboxProofResult>;
11
- }
12
- export interface MaestroAppServerSandboxProofOptions {
13
- cwd?: string;
14
- isNativeSandboxAvailable?: () => boolean;
15
- getNativeSandboxType?: () => MaestroAppServerSandboxType;
16
- createSandbox?: (options: CreateSandboxOptions) => Promise<Sandbox | undefined>;
17
- }
18
- export declare function normalizeSandboxProofParams(value: unknown): UnknownRecord;
19
- export declare function createMaestroAppServerSandboxProof(options?: MaestroAppServerSandboxProofOptions): MaestroAppServerSandboxProof;
20
- export {};
21
- //# sourceMappingURL=sandbox-proof-api.d.ts.map