@assemblyline-agents/runtime 0.1.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 (331) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/agent-harness.d.ts +108 -0
  4. package/dist/agent-harness.d.ts.map +1 -0
  5. package/dist/agent-harness.js +2 -0
  6. package/dist/agent-harness.js.map +1 -0
  7. package/dist/attachments-legacy.d.ts +17 -0
  8. package/dist/attachments-legacy.d.ts.map +1 -0
  9. package/dist/attachments-legacy.js +273 -0
  10. package/dist/attachments-legacy.js.map +1 -0
  11. package/dist/attachments.d.ts +49 -0
  12. package/dist/attachments.d.ts.map +1 -0
  13. package/dist/attachments.js +832 -0
  14. package/dist/attachments.js.map +1 -0
  15. package/dist/builtin-tool-executors.d.ts +96 -0
  16. package/dist/builtin-tool-executors.d.ts.map +1 -0
  17. package/dist/builtin-tool-executors.js +501 -0
  18. package/dist/builtin-tool-executors.js.map +1 -0
  19. package/dist/builtin-tools.d.ts +30 -0
  20. package/dist/builtin-tools.d.ts.map +1 -0
  21. package/dist/builtin-tools.js +690 -0
  22. package/dist/builtin-tools.js.map +1 -0
  23. package/dist/capability-catalog.d.ts +27 -0
  24. package/dist/capability-catalog.d.ts.map +1 -0
  25. package/dist/capability-catalog.js +193 -0
  26. package/dist/capability-catalog.js.map +1 -0
  27. package/dist/channel-http-util.d.ts +34 -0
  28. package/dist/channel-http-util.d.ts.map +1 -0
  29. package/dist/channel-http-util.js +93 -0
  30. package/dist/channel-http-util.js.map +1 -0
  31. package/dist/channel-ingress.d.ts +56 -0
  32. package/dist/channel-ingress.d.ts.map +1 -0
  33. package/dist/channel-ingress.js +273 -0
  34. package/dist/channel-ingress.js.map +1 -0
  35. package/dist/channel.d.ts +146 -0
  36. package/dist/channel.d.ts.map +1 -0
  37. package/dist/channel.js +2 -0
  38. package/dist/channel.js.map +1 -0
  39. package/dist/checkpoints.d.ts +34 -0
  40. package/dist/checkpoints.d.ts.map +1 -0
  41. package/dist/checkpoints.js +86 -0
  42. package/dist/checkpoints.js.map +1 -0
  43. package/dist/code-mode.d.ts +20 -0
  44. package/dist/code-mode.d.ts.map +1 -0
  45. package/dist/code-mode.js +658 -0
  46. package/dist/code-mode.js.map +1 -0
  47. package/dist/computer-relay-protocol.d.ts +36 -0
  48. package/dist/computer-relay-protocol.d.ts.map +1 -0
  49. package/dist/computer-relay-protocol.js +127 -0
  50. package/dist/computer-relay-protocol.js.map +1 -0
  51. package/dist/concurrency.d.ts +68 -0
  52. package/dist/concurrency.d.ts.map +1 -0
  53. package/dist/concurrency.js +193 -0
  54. package/dist/concurrency.js.map +1 -0
  55. package/dist/connection-auth-util.d.ts +56 -0
  56. package/dist/connection-auth-util.d.ts.map +1 -0
  57. package/dist/connection-auth-util.js +154 -0
  58. package/dist/connection-auth-util.js.map +1 -0
  59. package/dist/connection-clients.d.ts +50 -0
  60. package/dist/connection-clients.d.ts.map +1 -0
  61. package/dist/connection-clients.js +402 -0
  62. package/dist/connection-clients.js.map +1 -0
  63. package/dist/connection-stores.d.ts +108 -0
  64. package/dist/connection-stores.d.ts.map +1 -0
  65. package/dist/connection-stores.js +127 -0
  66. package/dist/connection-stores.js.map +1 -0
  67. package/dist/connection-util.d.ts +27 -0
  68. package/dist/connection-util.d.ts.map +1 -0
  69. package/dist/connection-util.js +118 -0
  70. package/dist/connection-util.js.map +1 -0
  71. package/dist/connections.d.ts +152 -0
  72. package/dist/connections.d.ts.map +1 -0
  73. package/dist/connections.js +838 -0
  74. package/dist/connections.js.map +1 -0
  75. package/dist/content-capture.d.ts +32 -0
  76. package/dist/content-capture.d.ts.map +1 -0
  77. package/dist/content-capture.js +77 -0
  78. package/dist/content-capture.js.map +1 -0
  79. package/dist/context-policy-util.d.ts +45 -0
  80. package/dist/context-policy-util.d.ts.map +1 -0
  81. package/dist/context-policy-util.js +120 -0
  82. package/dist/context-policy-util.js.map +1 -0
  83. package/dist/conversation-context.d.ts +55 -0
  84. package/dist/conversation-context.d.ts.map +1 -0
  85. package/dist/conversation-context.js +179 -0
  86. package/dist/conversation-context.js.map +1 -0
  87. package/dist/conversation-transcript.d.ts +49 -0
  88. package/dist/conversation-transcript.d.ts.map +1 -0
  89. package/dist/conversation-transcript.js +77 -0
  90. package/dist/conversation-transcript.js.map +1 -0
  91. package/dist/conversation-turn-dispatch.d.ts +46 -0
  92. package/dist/conversation-turn-dispatch.d.ts.map +1 -0
  93. package/dist/conversation-turn-dispatch.js +201 -0
  94. package/dist/conversation-turn-dispatch.js.map +1 -0
  95. package/dist/delivery-queue.d.ts +89 -0
  96. package/dist/delivery-queue.d.ts.map +1 -0
  97. package/dist/delivery-queue.js +244 -0
  98. package/dist/delivery-queue.js.map +1 -0
  99. package/dist/delivery-send.d.ts +44 -0
  100. package/dist/delivery-send.d.ts.map +1 -0
  101. package/dist/delivery-send.js +494 -0
  102. package/dist/delivery-send.js.map +1 -0
  103. package/dist/env-config.d.ts +6 -0
  104. package/dist/env-config.d.ts.map +1 -0
  105. package/dist/env-config.js +27 -0
  106. package/dist/env-config.js.map +1 -0
  107. package/dist/eval-run-options.d.ts +37 -0
  108. package/dist/eval-run-options.d.ts.map +1 -0
  109. package/dist/eval-run-options.js +106 -0
  110. package/dist/eval-run-options.js.map +1 -0
  111. package/dist/harness-continuation.d.ts +54 -0
  112. package/dist/harness-continuation.d.ts.map +1 -0
  113. package/dist/harness-continuation.js +58 -0
  114. package/dist/harness-continuation.js.map +1 -0
  115. package/dist/harness-loop.d.ts +110 -0
  116. package/dist/harness-loop.d.ts.map +1 -0
  117. package/dist/harness-loop.js +575 -0
  118. package/dist/harness-loop.js.map +1 -0
  119. package/dist/hook-dispatch.d.ts +19 -0
  120. package/dist/hook-dispatch.d.ts.map +1 -0
  121. package/dist/hook-dispatch.js +37 -0
  122. package/dist/hook-dispatch.js.map +1 -0
  123. package/dist/http.d.ts +26 -0
  124. package/dist/http.d.ts.map +1 -0
  125. package/dist/http.js +114 -0
  126. package/dist/http.js.map +1 -0
  127. package/dist/in-memory-conversation-turn-store.d.ts +29 -0
  128. package/dist/in-memory-conversation-turn-store.d.ts.map +1 -0
  129. package/dist/in-memory-conversation-turn-store.js +166 -0
  130. package/dist/in-memory-conversation-turn-store.js.map +1 -0
  131. package/dist/in-memory-run-store.d.ts +39 -0
  132. package/dist/in-memory-run-store.d.ts.map +1 -0
  133. package/dist/in-memory-run-store.js +332 -0
  134. package/dist/in-memory-run-store.js.map +1 -0
  135. package/dist/in-memory-sandbox-session-store.d.ts +33 -0
  136. package/dist/in-memory-sandbox-session-store.d.ts.map +1 -0
  137. package/dist/in-memory-sandbox-session-store.js +186 -0
  138. package/dist/in-memory-sandbox-session-store.js.map +1 -0
  139. package/dist/in-memory-small-stores.d.ts +117 -0
  140. package/dist/in-memory-small-stores.d.ts.map +1 -0
  141. package/dist/in-memory-small-stores.js +340 -0
  142. package/dist/in-memory-small-stores.js.map +1 -0
  143. package/dist/in-memory-usage-store.d.ts +15 -0
  144. package/dist/in-memory-usage-store.d.ts.map +1 -0
  145. package/dist/in-memory-usage-store.js +49 -0
  146. package/dist/in-memory-usage-store.js.map +1 -0
  147. package/dist/index.d.ts +467 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +2046 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/json-util.d.ts +19 -0
  152. package/dist/json-util.d.ts.map +1 -0
  153. package/dist/json-util.js +59 -0
  154. package/dist/json-util.js.map +1 -0
  155. package/dist/local-sandbox.d.ts +16 -0
  156. package/dist/local-sandbox.d.ts.map +1 -0
  157. package/dist/local-sandbox.js +327 -0
  158. package/dist/local-sandbox.js.map +1 -0
  159. package/dist/logging.d.ts +16 -0
  160. package/dist/logging.d.ts.map +1 -0
  161. package/dist/logging.js +41 -0
  162. package/dist/logging.js.map +1 -0
  163. package/dist/mcp-client.d.ts +27 -0
  164. package/dist/mcp-client.d.ts.map +1 -0
  165. package/dist/mcp-client.js +169 -0
  166. package/dist/mcp-client.js.map +1 -0
  167. package/dist/model-harnesses.d.ts +4 -0
  168. package/dist/model-harnesses.d.ts.map +1 -0
  169. package/dist/model-harnesses.js +6 -0
  170. package/dist/model-harnesses.js.map +1 -0
  171. package/dist/model-media.d.ts +36 -0
  172. package/dist/model-media.d.ts.map +1 -0
  173. package/dist/model-media.js +234 -0
  174. package/dist/model-media.js.map +1 -0
  175. package/dist/operator-controls.d.ts +31 -0
  176. package/dist/operator-controls.d.ts.map +1 -0
  177. package/dist/operator-controls.js +71 -0
  178. package/dist/operator-controls.js.map +1 -0
  179. package/dist/pi-agent-harness.d.ts +40 -0
  180. package/dist/pi-agent-harness.d.ts.map +1 -0
  181. package/dist/pi-agent-harness.js +222 -0
  182. package/dist/pi-agent-harness.js.map +1 -0
  183. package/dist/pi-harness.d.ts +42 -0
  184. package/dist/pi-harness.d.ts.map +1 -0
  185. package/dist/pi-harness.js +142 -0
  186. package/dist/pi-harness.js.map +1 -0
  187. package/dist/relay-mcp-client.d.ts +17 -0
  188. package/dist/relay-mcp-client.d.ts.map +1 -0
  189. package/dist/relay-mcp-client.js +119 -0
  190. package/dist/relay-mcp-client.js.map +1 -0
  191. package/dist/replay-resume.d.ts +107 -0
  192. package/dist/replay-resume.d.ts.map +1 -0
  193. package/dist/replay-resume.js +495 -0
  194. package/dist/replay-resume.js.map +1 -0
  195. package/dist/resource-projection-util.d.ts +58 -0
  196. package/dist/resource-projection-util.d.ts.map +1 -0
  197. package/dist/resource-projection-util.js +298 -0
  198. package/dist/resource-projection-util.js.map +1 -0
  199. package/dist/resource-projection.d.ts +45 -0
  200. package/dist/resource-projection.d.ts.map +1 -0
  201. package/dist/resource-projection.js +481 -0
  202. package/dist/resource-projection.js.map +1 -0
  203. package/dist/run-heartbeat.d.ts +34 -0
  204. package/dist/run-heartbeat.d.ts.map +1 -0
  205. package/dist/run-heartbeat.js +62 -0
  206. package/dist/run-heartbeat.js.map +1 -0
  207. package/dist/run-outcome.d.ts +47 -0
  208. package/dist/run-outcome.d.ts.map +1 -0
  209. package/dist/run-outcome.js +92 -0
  210. package/dist/run-outcome.js.map +1 -0
  211. package/dist/run-recovery.d.ts +117 -0
  212. package/dist/run-recovery.d.ts.map +1 -0
  213. package/dist/run-recovery.js +466 -0
  214. package/dist/run-recovery.js.map +1 -0
  215. package/dist/run-resolver.d.ts +35 -0
  216. package/dist/run-resolver.d.ts.map +1 -0
  217. package/dist/run-resolver.js +84 -0
  218. package/dist/run-resolver.js.map +1 -0
  219. package/dist/run-stream.d.ts +37 -0
  220. package/dist/run-stream.d.ts.map +1 -0
  221. package/dist/run-stream.js +78 -0
  222. package/dist/run-stream.js.map +1 -0
  223. package/dist/runs-query.d.ts +29 -0
  224. package/dist/runs-query.d.ts.map +1 -0
  225. package/dist/runs-query.js +142 -0
  226. package/dist/runs-query.js.map +1 -0
  227. package/dist/runtime-bundle.d.ts +3 -0
  228. package/dist/runtime-bundle.d.ts.map +1 -0
  229. package/dist/runtime-bundle.js +18 -0
  230. package/dist/runtime-bundle.js.map +1 -0
  231. package/dist/runtime-types.d.ts +397 -0
  232. package/dist/runtime-types.d.ts.map +1 -0
  233. package/dist/runtime-types.js +2 -0
  234. package/dist/runtime-types.js.map +1 -0
  235. package/dist/runtime-util.d.ts +45 -0
  236. package/dist/runtime-util.d.ts.map +1 -0
  237. package/dist/runtime-util.js +116 -0
  238. package/dist/runtime-util.js.map +1 -0
  239. package/dist/sandbox-cli-client.d.ts +20 -0
  240. package/dist/sandbox-cli-client.d.ts.map +1 -0
  241. package/dist/sandbox-cli-client.js +97 -0
  242. package/dist/sandbox-cli-client.js.map +1 -0
  243. package/dist/sandbox-fs.d.ts +56 -0
  244. package/dist/sandbox-fs.d.ts.map +1 -0
  245. package/dist/sandbox-fs.js +276 -0
  246. package/dist/sandbox-fs.js.map +1 -0
  247. package/dist/sandbox-session-key.d.ts +8 -0
  248. package/dist/sandbox-session-key.d.ts.map +1 -0
  249. package/dist/sandbox-session-key.js +32 -0
  250. package/dist/sandbox-session-key.js.map +1 -0
  251. package/dist/sandbox-snapshot-policy.d.ts +27 -0
  252. package/dist/sandbox-snapshot-policy.d.ts.map +1 -0
  253. package/dist/sandbox-snapshot-policy.js +94 -0
  254. package/dist/sandbox-snapshot-policy.js.map +1 -0
  255. package/dist/sandbox-sync-worker.d.ts +63 -0
  256. package/dist/sandbox-sync-worker.d.ts.map +1 -0
  257. package/dist/sandbox-sync-worker.js +448 -0
  258. package/dist/sandbox-sync-worker.js.map +1 -0
  259. package/dist/schedule-execution.d.ts +59 -0
  260. package/dist/schedule-execution.d.ts.map +1 -0
  261. package/dist/schedule-execution.js +951 -0
  262. package/dist/schedule-execution.js.map +1 -0
  263. package/dist/scheduler.d.ts +19 -0
  264. package/dist/scheduler.d.ts.map +1 -0
  265. package/dist/scheduler.js +38 -0
  266. package/dist/scheduler.js.map +1 -0
  267. package/dist/security.d.ts +20 -0
  268. package/dist/security.d.ts.map +1 -0
  269. package/dist/security.js +145 -0
  270. package/dist/security.js.map +1 -0
  271. package/dist/self-improvement.d.ts +245 -0
  272. package/dist/self-improvement.d.ts.map +1 -0
  273. package/dist/self-improvement.js +554 -0
  274. package/dist/self-improvement.js.map +1 -0
  275. package/dist/source-loader.d.ts +19 -0
  276. package/dist/source-loader.d.ts.map +1 -0
  277. package/dist/source-loader.js +160 -0
  278. package/dist/source-loader.js.map +1 -0
  279. package/dist/state-store-helpers.d.ts +28 -0
  280. package/dist/state-store-helpers.d.ts.map +1 -0
  281. package/dist/state-store-helpers.js +164 -0
  282. package/dist/state-store-helpers.js.map +1 -0
  283. package/dist/state-stores.d.ts +25 -0
  284. package/dist/state-stores.d.ts.map +1 -0
  285. package/dist/state-stores.js +157 -0
  286. package/dist/state-stores.js.map +1 -0
  287. package/dist/state.d.ts +736 -0
  288. package/dist/state.d.ts.map +1 -0
  289. package/dist/state.js +46 -0
  290. package/dist/state.js.map +1 -0
  291. package/dist/storage.d.ts +188 -0
  292. package/dist/storage.d.ts.map +1 -0
  293. package/dist/storage.js +752 -0
  294. package/dist/storage.js.map +1 -0
  295. package/dist/subagent-execution.d.ts +80 -0
  296. package/dist/subagent-execution.d.ts.map +1 -0
  297. package/dist/subagent-execution.js +135 -0
  298. package/dist/subagent-execution.js.map +1 -0
  299. package/dist/telemetry.d.ts +49 -0
  300. package/dist/telemetry.d.ts.map +1 -0
  301. package/dist/telemetry.js +60 -0
  302. package/dist/telemetry.js.map +1 -0
  303. package/dist/tool-apis.d.ts +22 -0
  304. package/dist/tool-apis.d.ts.map +1 -0
  305. package/dist/tool-apis.js +344 -0
  306. package/dist/tool-apis.js.map +1 -0
  307. package/dist/tool-execution.d.ts +143 -0
  308. package/dist/tool-execution.d.ts.map +1 -0
  309. package/dist/tool-execution.js +573 -0
  310. package/dist/tool-execution.js.map +1 -0
  311. package/dist/trusted-attachments.d.ts +20 -0
  312. package/dist/trusted-attachments.d.ts.map +1 -0
  313. package/dist/trusted-attachments.js +276 -0
  314. package/dist/trusted-attachments.js.map +1 -0
  315. package/dist/usage-accounting.d.ts +37 -0
  316. package/dist/usage-accounting.d.ts.map +1 -0
  317. package/dist/usage-accounting.js +181 -0
  318. package/dist/usage-accounting.js.map +1 -0
  319. package/dist/usage-budget.d.ts +29 -0
  320. package/dist/usage-budget.d.ts.map +1 -0
  321. package/dist/usage-budget.js +145 -0
  322. package/dist/usage-budget.js.map +1 -0
  323. package/dist/usage-reconciliation.d.ts +76 -0
  324. package/dist/usage-reconciliation.d.ts.map +1 -0
  325. package/dist/usage-reconciliation.js +463 -0
  326. package/dist/usage-reconciliation.js.map +1 -0
  327. package/dist/usage-records.d.ts +24 -0
  328. package/dist/usage-records.d.ts.map +1 -0
  329. package/dist/usage-records.js +445 -0
  330. package/dist/usage-records.js.map +1 -0
  331. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-snapshot-policy.js","sourceRoot":"","sources":["../src/sandbox-snapshot-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { JsonObject, SandboxSession, SandboxSnapshotPolicy } from "@assemblyline-agents/core";
2
+ import type { RuntimeLogger } from "./logging.js";
3
+ import type { BlobAdapter, EmitSpanOptions, SandboxAdapter, SandboxTombstone } from "./runtime-types.js";
4
+ import type { CheckpointRecord, RunRecord, SandboxSyncDiagnostics, SandboxSyncExecutionResult, SandboxSyncJobInspection, SandboxSyncJobRecord, StateAdapter } from "./state.js";
5
+ /**
6
+ * Sandbox-sync job worker: the durable queue that syncs memory/skills/artifacts
7
+ * out of a sandbox after delivery, plus snapshot capture and session disposal.
8
+ * Follows the delivery-queue/run-recovery host-delegate pattern: OpenEveRuntime
9
+ * builds a {@link SandboxSyncWorkerHost} closing over itself and keeps thin
10
+ * delegate methods with unchanged signatures.
11
+ */
12
+ /** Narrow slice of the runtime the sandbox-sync worker needs. */
13
+ export interface SandboxSyncWorkerHost {
14
+ state: StateAdapter;
15
+ blob: BlobAdapter;
16
+ sandbox: SandboxAdapter;
17
+ logger: RuntimeLogger;
18
+ env: Record<string, string | undefined>;
19
+ now(): Date;
20
+ sandboxSyncBatchSize: number;
21
+ sandboxSyncLeaseMs: number;
22
+ sandboxSnapshotPolicy: SandboxSnapshotPolicy;
23
+ readSandboxTombstonesWithMissingProjectedFiles(sandbox: SandboxSession): Promise<SandboxTombstone[]>;
24
+ syncMemoryFromSandbox(run: RunRecord, sandboxSession: SandboxSession, tombstones: SandboxTombstone[]): Promise<{
25
+ written: string[];
26
+ deleted: string[];
27
+ }>;
28
+ syncSkillsFromSandbox(run: RunRecord, sandboxSession: SandboxSession, tombstones: SandboxTombstone[]): Promise<void>;
29
+ emitSpan(name: string, startedAt: string, attributes: JsonObject, options?: EmitSpanOptions): Promise<void>;
30
+ runSpanAttributes(run: RunRecord, extra?: JsonObject): JsonObject;
31
+ turnSpanId(runId: string): string;
32
+ warnSwallow(message: string, fields: JsonObject): (error: unknown) => undefined;
33
+ createCheckpoint(input: Omit<CheckpointRecord, "id" | "createdAt">): Promise<CheckpointRecord>;
34
+ sandboxSessionKey(run: RunRecord): string;
35
+ agentEnabled(): Promise<boolean>;
36
+ }
37
+ export declare function sandboxSyncDiagnosticsImpl(host: SandboxSyncWorkerHost, options?: {
38
+ runId?: string;
39
+ now?: Date;
40
+ }): Promise<SandboxSyncDiagnostics>;
41
+ export declare function inspectSandboxSyncJobImpl(host: SandboxSyncWorkerHost, jobId: string, options?: {
42
+ now?: Date;
43
+ }): Promise<SandboxSyncJobInspection | undefined>;
44
+ export declare function retrySandboxSyncJobImpl(host: SandboxSyncWorkerHost, jobId: string, options?: {
45
+ now?: Date;
46
+ resetAttempts?: boolean;
47
+ }): Promise<SandboxSyncJobRecord>;
48
+ export declare function runDueSandboxSyncJobsImpl(host: SandboxSyncWorkerHost, options?: {
49
+ now?: Date;
50
+ limit?: number;
51
+ leaseForMs?: number;
52
+ sandboxSessions?: Record<string, SandboxSession>;
53
+ }): Promise<SandboxSyncExecutionResult[]>;
54
+ export declare function startSandboxSyncWorkerImpl(host: SandboxSyncWorkerHost, options?: {
55
+ intervalMs?: number;
56
+ batchSize?: number;
57
+ leaseForMs?: number;
58
+ }): {
59
+ stop(): void;
60
+ } | undefined;
61
+ export declare function captureSandboxSnapshotImpl(host: SandboxSyncWorkerHost, run: RunRecord, sandboxSession: SandboxSession, stage: "run_completed" | "delivery_failed" | "delivery_deferred"): Promise<RunRecord>;
62
+ export declare function disposeSandboxSessionImpl(host: SandboxSyncWorkerHost, runId: string, sandboxSession: SandboxSession): Promise<void>;
63
+ //# sourceMappingURL=sandbox-sync-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-sync-worker.d.ts","sourceRoot":"","sources":["../src/sandbox-sync-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,448 @@
1
+ import { hasCurrentSandboxFilesystemContract } from "@assemblyline-agents/core";
2
+ import { resolvePositiveIntegerEnv } from "./env-config.js";
3
+ import { stringValue, timestamp } from "./runtime-util.js";
4
+ import { syncSandboxFilesystem } from "./sandbox-fs.js";
5
+ import { runRequestsSandboxSnapshot, sandboxSnapshotMetadata, sandboxSnapshotRequest } from "./sandbox-snapshot-policy.js";
6
+ import { isSandboxSyncJobDue, positiveLimit, sandboxSyncRetryDelayMs } from "./storage.js";
7
+ export async function sandboxSyncDiagnosticsImpl(host, options = {}) {
8
+ const now = options.now ?? host.now();
9
+ const jobs = await host.state.listSandboxSyncJobs(options.runId);
10
+ const byStatus = {};
11
+ for (const job of jobs)
12
+ byStatus[job.status] = (byStatus[job.status] ?? 0) + 1;
13
+ return {
14
+ total: jobs.length,
15
+ byStatus,
16
+ due: jobs.filter((job) => isSandboxSyncJobDue(job, now)).length,
17
+ leased: jobs.filter((job) => job.status === "running" && Boolean(job.leaseToken)).length,
18
+ expiredLeases: jobs.filter((job) => job.status === "running" && Boolean(job.leaseExpiresAt) && Date.parse(job.leaseExpiresAt ?? "") <= now.getTime()).length,
19
+ failed: jobs.filter((job) => job.status === "failed").length,
20
+ blockedRequiresOperator: jobs.filter((job) => job.status === "blocked_requires_operator").length
21
+ };
22
+ }
23
+ export async function inspectSandboxSyncJobImpl(host, jobId, options = {}) {
24
+ const now = options.now ?? host.now();
25
+ const job = (await host.state.listSandboxSyncJobs()).find((candidate) => candidate.id === jobId);
26
+ if (!job)
27
+ return undefined;
28
+ return {
29
+ job,
30
+ due: isSandboxSyncJobDue(job, now),
31
+ leaseExpired: job.status === "running" && Boolean(job.leaseExpiresAt) && Date.parse(job.leaseExpiresAt ?? "") <= now.getTime()
32
+ };
33
+ }
34
+ export async function retrySandboxSyncJobImpl(host, jobId, options = {}) {
35
+ const inspection = await inspectSandboxSyncJobImpl(host, jobId, options);
36
+ if (!inspection)
37
+ throw new Error(`Sandbox sync job not found: ${jobId}`);
38
+ const now = options.now ?? host.now();
39
+ const patch = {
40
+ status: "pending",
41
+ nextAttemptAt: now.toISOString(),
42
+ leaseToken: undefined,
43
+ leaseExpiresAt: undefined,
44
+ failedAt: undefined,
45
+ lastError: undefined
46
+ };
47
+ if (options.resetAttempts)
48
+ patch.attemptCount = 0;
49
+ const updated = await host.state.updateSandboxSyncJob(jobId, patch);
50
+ await host.state.appendEvent(updated.runId, "sandbox.sync_retrying", {
51
+ jobId: updated.id,
52
+ sandboxId: updated.sandboxId,
53
+ reason: "manual_retry",
54
+ attemptCount: updated.attemptCount,
55
+ maxAttempts: updated.maxAttempts
56
+ });
57
+ return updated;
58
+ }
59
+ export async function runDueSandboxSyncJobsImpl(host, options = {}) {
60
+ if (!(await host.agentEnabled()))
61
+ return [];
62
+ const recovered = await host.state.recoverExpiredSandboxSyncJobs(options.now ?? host.now());
63
+ for (const job of recovered) {
64
+ await host.state.appendEvent(job.runId, "sandbox.sync_retrying", {
65
+ jobId: job.id,
66
+ sandboxId: job.sandboxId,
67
+ reason: "expired_lease",
68
+ attemptCount: job.attemptCount,
69
+ maxAttempts: job.maxAttempts
70
+ });
71
+ }
72
+ const jobs = await host.state.leaseSandboxSyncJobs({
73
+ now: options.now ?? host.now(),
74
+ limit: options.limit ?? host.sandboxSyncBatchSize,
75
+ leaseForMs: options.leaseForMs ?? host.sandboxSyncLeaseMs
76
+ });
77
+ const results = [];
78
+ for (const job of jobs) {
79
+ await host.state.appendEvent(job.runId, "sandbox.sync_leased", {
80
+ jobId: job.id,
81
+ sandboxId: job.sandboxId,
82
+ attemptCount: job.attemptCount,
83
+ maxAttempts: job.maxAttempts,
84
+ leaseExpiresAt: job.leaseExpiresAt ?? null
85
+ });
86
+ results.push(await processSandboxSyncJob(host, job, options.sandboxSessions?.[job.sandboxId]));
87
+ }
88
+ return results;
89
+ }
90
+ export function startSandboxSyncWorkerImpl(host, options = {}) {
91
+ const intervalMs = positiveLimit(options.intervalMs, resolvePositiveIntegerEnv(host.env.OPENEVE_SANDBOX_SYNC_INTERVAL_MS, 30_000));
92
+ const batchSize = positiveLimit(options.batchSize, host.sandboxSyncBatchSize);
93
+ const leaseForMs = positiveLimit(options.leaseForMs, host.sandboxSyncLeaseMs);
94
+ const timer = setInterval(() => {
95
+ void runDueSandboxSyncJobsImpl(host, { limit: batchSize, leaseForMs }).catch((error) => {
96
+ // Per-job failures are recorded on their owning run. This catch prevents
97
+ // an unexpected adapter-level error from tearing down the loop.
98
+ host.logger.warn("sandbox sync worker tick failed", {
99
+ error: error instanceof Error ? error.message : String(error)
100
+ });
101
+ });
102
+ }, intervalMs);
103
+ timer.unref?.();
104
+ return {
105
+ stop() {
106
+ clearInterval(timer);
107
+ }
108
+ };
109
+ }
110
+ async function processSandboxSyncJob(host, syncJob, providedSession) {
111
+ const memorySpanStartedAt = timestamp();
112
+ let run = await host.state.getRun(syncJob.runId);
113
+ if (!run) {
114
+ const error = `Run not found for sandbox sync job: ${syncJob.runId}`;
115
+ await failLeasedSandboxSyncJob(host, syncJob, error);
116
+ return { jobId: syncJob.id, status: "failed", error };
117
+ }
118
+ let sandboxSession;
119
+ try {
120
+ sandboxSession = providedSession ?? await connectSandboxForSyncJob(host, syncJob);
121
+ await host.state.appendEvent(run.id, "sandbox.sync_started", {
122
+ jobId: syncJob.id,
123
+ sandboxId: syncJob.sandboxId,
124
+ reason: syncJob.reason,
125
+ attemptCount: syncJob.attemptCount,
126
+ maxAttempts: syncJob.maxAttempts
127
+ });
128
+ const tombstones = await host.readSandboxTombstonesWithMissingProjectedFiles(sandboxSession);
129
+ const memoryDocuments = await host.syncMemoryFromSandbox(run, sandboxSession, tombstones);
130
+ await host.syncSkillsFromSandbox(run, sandboxSession, tombstones);
131
+ const sync = await syncSandboxFilesystem({
132
+ runId: run.id,
133
+ sandbox: sandboxSession,
134
+ blob: host.blob
135
+ });
136
+ if (sync.memoryRevision) {
137
+ run = await host.state.updateRun(run.id, { memoryRevision: sync.memoryRevision });
138
+ }
139
+ await host.state.appendEvent(run.id, "memory.sync_completed", {
140
+ memoryRevision: run.memoryRevision ?? null,
141
+ sandboxSnapshotId: run.sandboxSnapshotId ?? null,
142
+ memoryFiles: sync.memoryFiles.map((file) => ({ key: file.key, sha256: file.sha256, size: file.size })),
143
+ artifacts: sync.artifacts.map((file) => ({ key: file.key, sha256: file.sha256, size: file.size })),
144
+ fileRevisions: sync.fileRevisions,
145
+ memoryDocuments,
146
+ tombstoneCount: tombstones.length
147
+ });
148
+ await host.emitSpan("ai.assembly-line.memory.sync", memorySpanStartedAt, host.runSpanAttributes(run, {
149
+ sandboxId: sandboxSession.id,
150
+ sandboxSyncJobId: syncJob.id,
151
+ sandboxSyncAttemptCount: syncJob.attemptCount,
152
+ sandboxSyncMaxAttempts: syncJob.maxAttempts,
153
+ memoryRevision: run.memoryRevision ?? "",
154
+ memoryFileCount: sync.memoryFiles.length,
155
+ artifactCount: sync.artifacts.length,
156
+ fileRevisionCount: sync.fileRevisions.length,
157
+ memoryDocumentWriteCount: memoryDocuments.written.length,
158
+ memoryDocumentDeleteCount: memoryDocuments.deleted.length,
159
+ tombstoneCount: tombstones.length,
160
+ status: "completed"
161
+ }), {
162
+ parentSpanId: host.turnSpanId(run.id),
163
+ status: "ok"
164
+ });
165
+ await host.emitSpan("ai.assembly-line.sandbox.sync", memorySpanStartedAt, host.runSpanAttributes(run, {
166
+ sandboxId: sandboxSession.id,
167
+ sandboxSyncJobId: syncJob.id,
168
+ sandboxSyncAttemptCount: syncJob.attemptCount,
169
+ sandboxSyncMaxAttempts: syncJob.maxAttempts,
170
+ memoryFileCount: sync.memoryFiles.length,
171
+ artifactCount: sync.artifacts.length,
172
+ fileRevisionCount: sync.fileRevisions.length,
173
+ memoryDocumentWriteCount: memoryDocuments.written.length,
174
+ memoryDocumentDeleteCount: memoryDocuments.deleted.length,
175
+ tombstoneCount: tombstones.length,
176
+ status: "completed"
177
+ }), {
178
+ parentSpanId: host.turnSpanId(run.id),
179
+ status: "ok"
180
+ });
181
+ for (const revision of sync.fileRevisions) {
182
+ await host.state.recordFileIndex({
183
+ runId: run.id,
184
+ path: typeof revision.path === "string" ? revision.path : "unknown",
185
+ kind: typeof revision.path === "string" && revision.path.startsWith("/memory/") ? "memory" : "artifact",
186
+ blobKey: typeof revision.blobKey === "string" ? revision.blobKey : "",
187
+ sha256: typeof revision.sha256 === "string" ? revision.sha256 : "",
188
+ sizeBytes: typeof revision.size === "number" ? revision.size : 0,
189
+ metadata: {}
190
+ });
191
+ }
192
+ await host.state.completeSandboxSyncJob(syncJob.id, syncJob.leaseToken ?? "", {
193
+ manifest: {
194
+ ...syncJob.manifest,
195
+ memoryRevision: run.memoryRevision ?? null,
196
+ memoryFileCount: sync.memoryFiles.length,
197
+ artifactCount: sync.artifacts.length,
198
+ fileRevisionCount: sync.fileRevisions.length,
199
+ memoryDocumentWriteCount: memoryDocuments.written.length,
200
+ memoryDocumentDeleteCount: memoryDocuments.deleted.length,
201
+ tombstoneCount: tombstones.length
202
+ }
203
+ });
204
+ const sessionKey = stringValue(syncJob.manifest.sessionKey);
205
+ if (sessionKey) {
206
+ await host.state.updateSandboxSession(sessionKey, {
207
+ state: "clean",
208
+ dirty: false,
209
+ lastSyncedAt: timestamp(),
210
+ lastSeenAt: timestamp(),
211
+ syncJobId: undefined,
212
+ manifest: {
213
+ ...syncJob.manifest,
214
+ memoryRevision: run.memoryRevision ?? null
215
+ }
216
+ }).catch(host.warnSwallow("sandbox session update failed after sync completion", {
217
+ sessionKey,
218
+ syncJobId: syncJob.id
219
+ }));
220
+ }
221
+ await host.state.appendEvent(run.id, "sandbox.sync_completed", {
222
+ jobId: syncJob.id,
223
+ sandboxId: sandboxSession.id,
224
+ memoryRevision: run.memoryRevision ?? null,
225
+ memoryFileCount: sync.memoryFiles.length,
226
+ artifactCount: sync.artifacts.length,
227
+ fileRevisionCount: sync.fileRevisions.length,
228
+ memoryDocumentWriteCount: memoryDocuments.written.length,
229
+ memoryDocumentDeleteCount: memoryDocuments.deleted.length,
230
+ tombstoneCount: tombstones.length
231
+ });
232
+ return { jobId: syncJob.id, status: "completed", run };
233
+ }
234
+ catch (error) {
235
+ const message = error instanceof Error ? error.message : String(error);
236
+ const failed = await failLeasedSandboxSyncJob(host, syncJob, message);
237
+ const sessionKey = stringValue(syncJob.manifest.sessionKey);
238
+ if (sessionKey && failed.status === "blocked_requires_operator") {
239
+ await host.state.updateSandboxSession(sessionKey, {
240
+ state: "blocked_requires_operator",
241
+ dirty: true,
242
+ lastSeenAt: timestamp(),
243
+ syncJobId: failed.id
244
+ }).catch(host.warnSwallow("sandbox session update failed for blocked sync job", {
245
+ sessionKey,
246
+ syncJobId: failed.id
247
+ }));
248
+ }
249
+ await host.emitSpan("ai.assembly-line.sandbox.sync", memorySpanStartedAt, host.runSpanAttributes(run, {
250
+ sandboxId: syncJob.sandboxId,
251
+ sandboxSyncJobId: syncJob.id,
252
+ sandboxSyncAttemptCount: failed.attemptCount,
253
+ sandboxSyncMaxAttempts: failed.maxAttempts,
254
+ status: failed.status === "pending" ? "retrying" : "failed",
255
+ error: message
256
+ }), {
257
+ parentSpanId: host.turnSpanId(run.id),
258
+ status: failed.status === "pending" ? "ok" : "error"
259
+ });
260
+ if (failed.status === "pending") {
261
+ await host.state.appendEvent(run.id, "sandbox.sync_retrying", {
262
+ jobId: syncJob.id,
263
+ sandboxId: syncJob.sandboxId,
264
+ error: message,
265
+ attemptCount: failed.attemptCount,
266
+ maxAttempts: failed.maxAttempts,
267
+ nextAttemptAt: failed.nextAttemptAt
268
+ });
269
+ }
270
+ else {
271
+ await host.state.appendEvent(run.id, "sandbox.sync_failed", {
272
+ jobId: syncJob.id,
273
+ sandboxId: syncJob.sandboxId,
274
+ error: message,
275
+ attemptCount: failed.attemptCount,
276
+ maxAttempts: failed.maxAttempts
277
+ });
278
+ }
279
+ return { jobId: syncJob.id, status: failed.status === "pending" ? "retrying" : "failed", error: message, run };
280
+ }
281
+ finally {
282
+ if (sandboxSession && sandboxSession !== providedSession) {
283
+ // The deferred sync worker reconnects to the run's sandbox by id, so this
284
+ // session shares the underlying sandbox with the live run. Disposing (or
285
+ // retaining/pausing) it while the run is still active tears the sandbox
286
+ // down under the agent loop — the next tool call then fails with
287
+ // "sandbox not found". Only clean up once the owning run is terminal
288
+ // (the legitimate deferred-sync-after-completion case); an active run
289
+ // owns the lifecycle and will dispose/retain when it finishes.
290
+ const owner = await host.state.getRun(syncJob.runId).catch(() => undefined);
291
+ const ownerActive = owner ? owner.status === "created" || owner.status === "running" : false;
292
+ if (!ownerActive) {
293
+ await disposeSandboxSessionImpl(host, syncJob.runId, sandboxSession);
294
+ }
295
+ }
296
+ }
297
+ }
298
+ async function connectSandboxForSyncJob(host, job) {
299
+ if (!hasCurrentSandboxFilesystemContract(job.manifest)) {
300
+ throw new Error(`Sandbox sync job ${job.id} uses an obsolete filesystem contract and cannot be reconnected safely.`);
301
+ }
302
+ const input = {
303
+ runId: job.runId,
304
+ sandboxId: job.sandboxId,
305
+ manifest: job.manifest
306
+ };
307
+ const root = stringValue(job.manifest.sandboxRoot);
308
+ if (root)
309
+ input.root = root;
310
+ const errors = [];
311
+ let session;
312
+ if (host.sandbox.connect) {
313
+ try {
314
+ session = await host.sandbox.connect(input);
315
+ }
316
+ catch (error) {
317
+ errors.push(`connect: ${error instanceof Error ? error.message : String(error)}`);
318
+ }
319
+ }
320
+ if (!session && host.sandbox.wake) {
321
+ try {
322
+ session = await host.sandbox.wake(input);
323
+ }
324
+ catch (error) {
325
+ errors.push(`wake: ${error instanceof Error ? error.message : String(error)}`);
326
+ }
327
+ }
328
+ if (!session) {
329
+ const detail = errors.length > 0 ? ` (${errors.join("; ")})` : "";
330
+ throw new Error(`Sandbox not found for sync job ${job.id}: ${job.sandboxId}${detail}`);
331
+ }
332
+ return session;
333
+ }
334
+ async function failLeasedSandboxSyncJob(host, job, error) {
335
+ return host.state.failSandboxSyncJob(job.id, job.leaseToken ?? "", {
336
+ error,
337
+ now: host.now(),
338
+ retryDelayMs: sandboxSyncRetryDelayMs(job.attemptCount)
339
+ });
340
+ }
341
+ export async function captureSandboxSnapshotImpl(host, run, sandboxSession, stage) {
342
+ const decision = sandboxSnapshotDecision(host, run, stage, sandboxSession);
343
+ if (!decision.capture) {
344
+ await host.state.appendEvent(run.id, "sandbox.snapshot_skipped", {
345
+ sandboxId: sandboxSession.id,
346
+ mode: decision.policy.mode,
347
+ reason: decision.reason,
348
+ stage
349
+ });
350
+ return run;
351
+ }
352
+ if (!sandboxSession.snapshot) {
353
+ await host.state.appendEvent(run.id, "sandbox.snapshot_skipped", {
354
+ sandboxId: sandboxSession.id,
355
+ mode: decision.policy.mode,
356
+ reason: "adapter_does_not_support_snapshots",
357
+ stage
358
+ });
359
+ return run;
360
+ }
361
+ const request = sandboxSnapshotRequest(decision.policy, run, sandboxSession, stage, decision.reason);
362
+ try {
363
+ const snapshot = await sandboxSession.snapshot(request);
364
+ const metadata = sandboxSnapshotMetadata(snapshot, request, run, sandboxSession, stage);
365
+ await host.state.recordSandboxSnapshot({
366
+ runId: run.id,
367
+ sandboxId: sandboxSession.id,
368
+ snapshotId: snapshot.id,
369
+ metadata
370
+ });
371
+ const updated = await host.state.updateRun(run.id, { sandboxSnapshotId: snapshot.id });
372
+ await host.state.appendEvent(run.id, "sandbox.snapshot_created", {
373
+ sandboxId: sandboxSession.id,
374
+ snapshotId: snapshot.id,
375
+ mode: decision.policy.mode,
376
+ reason: decision.reason,
377
+ stage,
378
+ retainLast: decision.policy.retainLast ?? null,
379
+ metadata
380
+ });
381
+ await host.createCheckpoint({
382
+ runId: run.id,
383
+ name: "sandbox.snapshot_created",
384
+ data: { sandboxId: sandboxSession.id, snapshotId: snapshot.id, stage }
385
+ });
386
+ return updated;
387
+ }
388
+ catch (error) {
389
+ await host.state.appendEvent(run.id, "sandbox.snapshot_failed", {
390
+ sandboxId: sandboxSession.id,
391
+ mode: decision.policy.mode,
392
+ reason: decision.reason,
393
+ stage,
394
+ error: error instanceof Error ? error.message : String(error)
395
+ });
396
+ return run;
397
+ }
398
+ }
399
+ function sandboxSnapshotDecision(host, run, stage, _sandboxSession) {
400
+ const policy = host.sandboxSnapshotPolicy;
401
+ if (policy.mode === "never")
402
+ return { capture: false, reason: "policy_never", policy };
403
+ if (policy.mode === "always")
404
+ return { capture: true, reason: policy.reason ?? stage, policy };
405
+ if (policy.mode === "on_failure") {
406
+ return stage === "delivery_failed" || stage === "delivery_deferred"
407
+ ? { capture: true, reason: policy.reason ?? stage, policy }
408
+ : { capture: false, reason: "run_completed_without_failure", policy };
409
+ }
410
+ if (policy.mode === "manual") {
411
+ if (runRequestsSandboxSnapshot(run))
412
+ return { capture: true, reason: policy.reason ?? "manual_request", policy };
413
+ return { capture: false, reason: "manual_request_absent", policy };
414
+ }
415
+ return { capture: false, reason: "unknown_policy", policy };
416
+ }
417
+ export async function disposeSandboxSessionImpl(host, runId, sandboxSession) {
418
+ const run = await host.state.getRun(runId);
419
+ const sessionKey = run ? host.sandboxSessionKey(run) : undefined;
420
+ const record = sessionKey ? await host.state.getSandboxSession(sessionKey) : undefined;
421
+ if (record?.dirty) {
422
+ try {
423
+ await host.sandbox.pauseOrRetain?.(sandboxSession, { dirty: true, reason: "pending_sync" });
424
+ await host.state.appendEvent(runId, "sandbox.retained_dirty", { sandboxId: sandboxSession.id, sessionKey: record.sessionKey });
425
+ }
426
+ catch (error) {
427
+ await host.state.appendEvent(runId, "sandbox.retain_failed", {
428
+ sandboxId: sandboxSession.id,
429
+ error: error instanceof Error ? error.message : String(error)
430
+ });
431
+ }
432
+ return;
433
+ }
434
+ try {
435
+ if (host.sandbox.disposeClean)
436
+ await host.sandbox.disposeClean(sandboxSession);
437
+ else
438
+ await sandboxSession.dispose?.();
439
+ await host.state.appendEvent(runId, "sandbox.disposed", { sandboxId: sandboxSession.id });
440
+ }
441
+ catch (error) {
442
+ await host.state.appendEvent(runId, "sandbox.dispose_failed", {
443
+ sandboxId: sandboxSession.id,
444
+ error: error instanceof Error ? error.message : String(error)
445
+ });
446
+ }
447
+ }
448
+ //# sourceMappingURL=sandbox-sync-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-sync-worker.js","sourceRoot":"","sources":["../src/sandbox-sync-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { AgentManifest, AutomationEvent, CompiledConnection, DurableStepOptions, JsonObject, JsonValue, MaybePromise, MemoryToolApi, ResourceToolApi, ScheduleTriggerDefinition } from "@assemblyline-agents/core";
2
+ import { RunCapacityError, type SemaphoreAdmission } from "./concurrency.js";
3
+ import type { RuntimeLogger } from "./logging.js";
4
+ import type { AutomationEventDispatchResult, BlobAdapter, ContextBundle, EmitSpanOptions, MemoryStore, RunAgentOptions, RunAgentResult, RuntimeSandboxHandle, ScheduleExecutionResult } from "./runtime-types.js";
5
+ import type { RuntimeSchedulerController } from "./scheduler.js";
6
+ import type { ResolvedSchedulesConfig, ScheduleStore, SkillStore } from "./self-improvement.js";
7
+ import type { AgentSourceModuleLoader } from "./source-loader.js";
8
+ import { type MemoryScope, type RunRecord, type ScheduleRecord, type StateAdapter } from "./state.js";
9
+ /**
10
+ * Schedule execution path: manifest schedule registration, the due-schedule
11
+ * sweep (including the capacity-before-idempotency-key claim ordering),
12
+ * message and triggered schedule execution, the trigger handler
13
+ * context/state/resource APIs, dynamic schedule dispatch, and the scheduler
14
+ * polling loop. Follows the delivery-send/resource-projection host-delegate
15
+ * pattern: OpenEveRuntime builds a {@link ScheduleExecutionHost} closing over
16
+ * itself and keeps thin delegate methods with unchanged signatures.
17
+ */
18
+ /** Narrow slice of the runtime the schedule execution path needs. */
19
+ export interface ScheduleExecutionHost {
20
+ manifest: AgentManifest;
21
+ state: StateAdapter;
22
+ blob: BlobAdapter;
23
+ env: Record<string, string | undefined>;
24
+ fetch: typeof fetch;
25
+ logger: RuntimeLogger;
26
+ memoryStore: MemoryStore;
27
+ skillStore: SkillStore;
28
+ scheduleStore: ScheduleStore;
29
+ schedulesConfig: ResolvedSchedulesConfig;
30
+ schedulerTickMs: number;
31
+ /** Consecutive dynamic-schedule failures before auto-disable. */
32
+ scheduleMaxConsecutiveFailures: number;
33
+ sourceLoader: AgentSourceModuleLoader;
34
+ boot(): void;
35
+ now(): Date;
36
+ admitRunOrReject(): SemaphoreAdmission | RunCapacityError;
37
+ run(options: RunAgentOptions): Promise<RunAgentResult>;
38
+ latestRunFailureMessage(runId: string): Promise<string | undefined>;
39
+ emitSpan(name: string, startedAt: string, attributes: JsonObject, options?: EmitSpanOptions): Promise<void>;
40
+ runSpanAttributes(run: RunRecord, extra?: JsonObject): JsonObject;
41
+ turnSpanId(runId: string): string;
42
+ createSandboxHandle(getRun: () => RunRecord, setRun: (run: RunRecord) => void, getBundle: () => ContextBundle): RuntimeSandboxHandle;
43
+ createMemoryToolApi(run: RunRecord): MemoryToolApi;
44
+ createResourceToolApi(run: RunRecord, sandboxHandle: RuntimeSandboxHandle): ResourceToolApi;
45
+ durableStep<T extends JsonValue>(runId: string, key: string, fn: () => MaybePromise<T>, options?: DurableStepOptions): Promise<T>;
46
+ memoryScopeForRun(run: RunRecord): MemoryScope;
47
+ mergedConnections(): CompiledConnection[];
48
+ skillScope(): string;
49
+ agentEnabled(): Promise<boolean>;
50
+ }
51
+ export declare function registerManifestSchedulesImpl(host: ScheduleExecutionHost): Promise<ScheduleRecord[]>;
52
+ export declare function runDueSchedulesImpl(host: ScheduleExecutionHost, options?: {
53
+ now?: Date;
54
+ lookbackMs?: number;
55
+ }): Promise<ScheduleExecutionResult[]>;
56
+ export declare function dispatchAutomationEventImpl(host: ScheduleExecutionHost, event: AutomationEvent): Promise<AutomationEventDispatchResult[]>;
57
+ export declare function normalizeScheduleTriggerDefinitionImpl(host: ScheduleExecutionHost, value: unknown): ScheduleTriggerDefinition;
58
+ export declare function startSchedulerPollingLoopImpl(host: ScheduleExecutionHost): Promise<RuntimeSchedulerController | undefined>;
59
+ //# sourceMappingURL=schedule-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-execution.d.ts","sourceRoot":"","sources":["../src/schedule-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAGf,kBAAkB,EAGlB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,eAAe,EAEf,yBAAyB,EAU1B,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EACV,6BAA6B,EAC7B,WAAW,EACX,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EAEpB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAEV,uBAAuB,EACvB,aAAa,EACb,UAAU,EACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9H;;;;;;;;GAQG;AAEH,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,uBAAuB,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,8BAA8B,EAAE,MAAM,CAAC;IACvC,YAAY,EAAE,uBAAuB,CAAC;IACtC,IAAI,IAAI,IAAI,CAAC;IACb,GAAG,IAAI,IAAI,CAAC;IACZ,gBAAgB,IAAI,kBAAkB,GAAG,gBAAgB,CAAC;IAC1D,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvD,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAClE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,mBAAmB,CACjB,MAAM,EAAE,MAAM,SAAS,EACvB,MAAM,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,EAChC,SAAS,EAAE,MAAM,aAAa,GAC7B,oBAAoB,CAAC;IACxB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,aAAa,CAAC;IACnD,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,GAAG,eAAe,CAAC;IAC5F,WAAW,CAAC,CAAC,SAAS,SAAS,EAC7B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAAC;IAC/C,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;IAC1C,UAAU,IAAI,MAAM,CAAC;IACrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAClC;AAED,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAgB1G;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA8D5J;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAsE1C;AAyXD,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,yBAAyB,CAgB7H;AA0VD,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CA+BhI"}