@action-llama/action-llama 0.13.2 → 0.13.4

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 (169) hide show
  1. package/README.md +6 -6
  2. package/agent-docs/AGENTS.md +1 -1
  3. package/agent-docs/skills/resource-locks.md +40 -2
  4. package/dist/agents/container-entry.d.ts.map +1 -1
  5. package/dist/agents/container-entry.js +3 -1
  6. package/dist/agents/container-entry.js.map +1 -1
  7. package/dist/agents/container-runner.d.ts +1 -0
  8. package/dist/agents/container-runner.d.ts.map +1 -1
  9. package/dist/agents/container-runner.js +9 -1
  10. package/dist/agents/container-runner.js.map +1 -1
  11. package/dist/agents/execution-engine.d.ts.map +1 -1
  12. package/dist/agents/execution-engine.js +3 -1
  13. package/dist/agents/execution-engine.js.map +1 -1
  14. package/dist/agents/runner.d.ts.map +1 -1
  15. package/dist/agents/runner.js +3 -1
  16. package/dist/agents/runner.js.map +1 -1
  17. package/dist/build-info.json +1 -1
  18. package/dist/cli/commands/chat.js +6 -2
  19. package/dist/cli/commands/chat.js.map +1 -1
  20. package/dist/cli/commands/env.d.ts +2 -1
  21. package/dist/cli/commands/env.d.ts.map +1 -1
  22. package/dist/cli/commands/env.js +9 -5
  23. package/dist/cli/commands/env.js.map +1 -1
  24. package/dist/cli/commands/push.d.ts +1 -0
  25. package/dist/cli/commands/push.d.ts.map +1 -1
  26. package/dist/cli/commands/push.js +22 -4
  27. package/dist/cli/commands/push.js.map +1 -1
  28. package/dist/cli/commands/status.d.ts.map +1 -1
  29. package/dist/cli/commands/status.js +10 -5
  30. package/dist/cli/commands/status.js.map +1 -1
  31. package/dist/cli/main.js +5 -3
  32. package/dist/cli/main.js.map +1 -1
  33. package/dist/cloud/{vps/cloudflare-api.d.ts → cloudflare/api.d.ts} +1 -1
  34. package/dist/cloud/cloudflare/api.d.ts.map +1 -0
  35. package/dist/cloud/{vps/cloudflare-api.js → cloudflare/api.js} +1 -1
  36. package/dist/cloud/cloudflare/api.js.map +1 -0
  37. package/dist/cloud/provider.js +2 -2
  38. package/dist/cloud/provider.js.map +1 -1
  39. package/dist/cloud/vps/nginx.d.ts.map +1 -1
  40. package/dist/cloud/vps/nginx.js +7 -0
  41. package/dist/cloud/vps/nginx.js.map +1 -1
  42. package/dist/cloud/vps/provider.d.ts +4 -4
  43. package/dist/cloud/vps/provider.d.ts.map +1 -1
  44. package/dist/cloud/vps/provider.js +4 -4
  45. package/dist/cloud/vps/provider.js.map +1 -1
  46. package/dist/cloud/vps/provision.js +4 -4
  47. package/dist/cloud/vps/provision.js.map +1 -1
  48. package/dist/cloud/vps/teardown.d.ts +2 -2
  49. package/dist/cloud/vps/teardown.d.ts.map +1 -1
  50. package/dist/cloud/vps/teardown.js +3 -3
  51. package/dist/cloud/vps/teardown.js.map +1 -1
  52. package/dist/cloud/vps/verify.js +2 -2
  53. package/dist/cloud/vps/verify.js.map +1 -1
  54. package/dist/credentials/builtins/cloudflare-api-token.js +1 -1
  55. package/dist/credentials/builtins/cloudflare-api-token.js.map +1 -1
  56. package/dist/gateway/auth.d.ts +6 -1
  57. package/dist/gateway/auth.d.ts.map +1 -1
  58. package/dist/gateway/auth.js +21 -4
  59. package/dist/gateway/auth.js.map +1 -1
  60. package/dist/gateway/index.d.ts +1 -0
  61. package/dist/gateway/index.d.ts.map +1 -1
  62. package/dist/gateway/index.js +13 -6
  63. package/dist/gateway/index.js.map +1 -1
  64. package/dist/gateway/lock-store.d.ts +17 -0
  65. package/dist/gateway/lock-store.d.ts.map +1 -1
  66. package/dist/gateway/lock-store.js +101 -28
  67. package/dist/gateway/lock-store.js.map +1 -1
  68. package/dist/gateway/routes/control.d.ts +3 -0
  69. package/dist/gateway/routes/control.d.ts.map +1 -1
  70. package/dist/gateway/routes/control.js +7 -0
  71. package/dist/gateway/routes/control.js.map +1 -1
  72. package/dist/gateway/routes/dashboard.d.ts +6 -1
  73. package/dist/gateway/routes/dashboard.d.ts.map +1 -1
  74. package/dist/gateway/routes/dashboard.js +37 -3
  75. package/dist/gateway/routes/dashboard.js.map +1 -1
  76. package/dist/gateway/routes/locks.d.ts.map +1 -1
  77. package/dist/gateway/routes/locks.js +7 -3
  78. package/dist/gateway/routes/locks.js.map +1 -1
  79. package/dist/gateway/routes/webhooks.d.ts.map +1 -1
  80. package/dist/gateway/routes/webhooks.js +0 -3
  81. package/dist/gateway/routes/webhooks.js.map +1 -1
  82. package/dist/gateway/session-store.d.ts +11 -0
  83. package/dist/gateway/session-store.d.ts.map +1 -0
  84. package/dist/gateway/session-store.js +33 -0
  85. package/dist/gateway/session-store.js.map +1 -0
  86. package/dist/gateway/types.d.ts +5 -0
  87. package/dist/gateway/types.d.ts.map +1 -1
  88. package/dist/remote/push.d.ts +15 -1
  89. package/dist/remote/push.d.ts.map +1 -1
  90. package/dist/remote/push.js +54 -3
  91. package/dist/remote/push.js.map +1 -1
  92. package/dist/scheduler/call-dispatcher.d.ts +11 -0
  93. package/dist/scheduler/call-dispatcher.d.ts.map +1 -0
  94. package/dist/scheduler/call-dispatcher.js +65 -0
  95. package/dist/scheduler/call-dispatcher.js.map +1 -0
  96. package/dist/scheduler/cron-setup.d.ts +41 -0
  97. package/dist/scheduler/cron-setup.d.ts.map +1 -0
  98. package/dist/scheduler/cron-setup.js +94 -0
  99. package/dist/scheduler/cron-setup.js.map +1 -0
  100. package/dist/scheduler/event-queue-sqlite.d.ts +27 -0
  101. package/dist/scheduler/event-queue-sqlite.d.ts.map +1 -0
  102. package/dist/scheduler/event-queue-sqlite.js +105 -0
  103. package/dist/scheduler/event-queue-sqlite.js.map +1 -0
  104. package/dist/scheduler/event-queue.d.ts +31 -9
  105. package/dist/scheduler/event-queue.d.ts.map +1 -1
  106. package/dist/scheduler/event-queue.js +21 -32
  107. package/dist/scheduler/event-queue.js.map +1 -1
  108. package/dist/scheduler/execution.d.ts +9 -2
  109. package/dist/scheduler/execution.d.ts.map +1 -1
  110. package/dist/scheduler/execution.js +64 -48
  111. package/dist/scheduler/execution.js.map +1 -1
  112. package/dist/scheduler/gateway-setup.d.ts +40 -0
  113. package/dist/scheduler/gateway-setup.d.ts.map +1 -0
  114. package/dist/scheduler/gateway-setup.js +135 -0
  115. package/dist/scheduler/gateway-setup.js.map +1 -0
  116. package/dist/scheduler/index.d.ts +4 -7
  117. package/dist/scheduler/index.d.ts.map +1 -1
  118. package/dist/scheduler/index.js +81 -437
  119. package/dist/scheduler/index.js.map +1 -1
  120. package/dist/scheduler/runner-setup.d.ts +34 -0
  121. package/dist/scheduler/runner-setup.d.ts.map +1 -0
  122. package/dist/scheduler/runner-setup.js +63 -0
  123. package/dist/scheduler/runner-setup.js.map +1 -0
  124. package/dist/scheduler/shutdown.d.ts +20 -0
  125. package/dist/scheduler/shutdown.d.ts.map +1 -0
  126. package/dist/scheduler/shutdown.js +38 -0
  127. package/dist/scheduler/shutdown.js.map +1 -0
  128. package/dist/scheduler/state.d.ts +17 -0
  129. package/dist/scheduler/state.d.ts.map +1 -0
  130. package/dist/scheduler/state.js +10 -0
  131. package/dist/scheduler/state.js.map +1 -0
  132. package/dist/scheduler/validation.d.ts +18 -0
  133. package/dist/scheduler/validation.d.ts.map +1 -0
  134. package/dist/scheduler/validation.js +59 -0
  135. package/dist/scheduler/validation.js.map +1 -0
  136. package/dist/scheduler/watcher.d.ts.map +1 -1
  137. package/dist/scheduler/watcher.js +31 -48
  138. package/dist/scheduler/watcher.js.map +1 -1
  139. package/dist/scheduler/webhook-setup.d.ts +18 -1
  140. package/dist/scheduler/webhook-setup.d.ts.map +1 -1
  141. package/dist/scheduler/webhook-setup.js +51 -0
  142. package/dist/scheduler/webhook-setup.js.map +1 -1
  143. package/dist/shared/config.d.ts +2 -3
  144. package/dist/shared/config.d.ts.map +1 -1
  145. package/dist/shared/config.js +0 -15
  146. package/dist/shared/config.js.map +1 -1
  147. package/dist/shared/queue-memory.d.ts +16 -0
  148. package/dist/shared/queue-memory.d.ts.map +1 -0
  149. package/dist/shared/queue-memory.js +28 -0
  150. package/dist/shared/queue-memory.js.map +1 -0
  151. package/dist/shared/queue-sqlite.d.ts +28 -0
  152. package/dist/shared/queue-sqlite.d.ts.map +1 -0
  153. package/dist/shared/queue-sqlite.js +86 -0
  154. package/dist/shared/queue-sqlite.js.map +1 -0
  155. package/dist/shared/queue.d.ts +55 -0
  156. package/dist/shared/queue.d.ts.map +1 -0
  157. package/dist/shared/queue.js +22 -0
  158. package/dist/shared/queue.js.map +1 -0
  159. package/dist/shared/server.d.ts +1 -0
  160. package/dist/shared/server.d.ts.map +1 -1
  161. package/dist/shared/server.js +3 -0
  162. package/dist/shared/server.js.map +1 -1
  163. package/package.json +2 -2
  164. package/dist/cloud/vps/cloudflare-api.d.ts.map +0 -1
  165. package/dist/cloud/vps/cloudflare-api.js.map +0 -1
  166. package/dist/gateway/rate-limiter.d.ts +0 -16
  167. package/dist/gateway/rate-limiter.d.ts.map +0 -1
  168. package/dist/gateway/rate-limiter.js +0 -38
  169. package/dist/gateway/rate-limiter.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/gateway/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAIrC,MAAM,EAAE,GAAG,UAAU,CAAC;AACtB,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW;AAErD,MAAM,OAAO,YAAY;IACf,KAAK,CAAa;IAClB,GAAG,CAAS;IAEpB,YAAY,KAAiB,EAAE,UAAU,GAAG,mBAAmB;QAC7D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAY;YACvB,EAAE;YACF,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;SACzB,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAU,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAU,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -20,4 +20,9 @@ export interface ReturnRequest {
20
20
  secret: string;
21
21
  value: string;
22
22
  }
23
+ export interface Session {
24
+ id: string;
25
+ createdAt: number;
26
+ lastAccessed: number;
27
+ }
23
28
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gateway/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/gateway/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -10,6 +10,15 @@ export interface PushOptions {
10
10
  noFiles?: boolean;
11
11
  forceInstall?: boolean;
12
12
  }
13
+ export interface PushAgentOptions {
14
+ projectPath: string;
15
+ serverConfig: ServerConfig;
16
+ globalConfig: GlobalConfig;
17
+ agentName: string;
18
+ dryRun?: boolean;
19
+ noCreds?: boolean;
20
+ noFiles?: boolean;
21
+ }
13
22
  /**
14
23
  * Compute a SHA-256 hash of package.json + package-lock.json contents.
15
24
  * Used to skip `npm install` when dependencies haven't changed.
@@ -18,9 +27,14 @@ export declare function computePkgHash(projectPath: string): string;
18
27
  /**
19
28
  * Build a systemd unit file for the al scheduler.
20
29
  */
21
- export declare function buildSystemdUnit(projectName: string, basePath: string, binPaths?: BootstrapResult, gatewayPort?: number): string;
30
+ export declare function buildSystemdUnit(projectName: string, basePath: string, binPaths?: BootstrapResult, gatewayPort?: number, expose?: boolean): string;
22
31
  /**
23
32
  * Push project files and credentials to a server, set up systemd, and verify.
24
33
  */
25
34
  export declare function pushToServer(opts: PushOptions): Promise<void>;
35
+ /**
36
+ * Push a single agent's files to the server. The running scheduler's file
37
+ * watcher detects the change and hot-reloads the agent — no service restart.
38
+ */
39
+ export declare function pushAgentToServer(opts: PushAgentOptions): Promise<void>;
26
40
  //# sourceMappingURL=push.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/remote/push.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,eAAe,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CA0BR;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnE"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/remote/push.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,eAAe,EAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,OAAO,GACf,MAAM,CA4BR;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C7E"}
@@ -29,7 +29,7 @@ export function computePkgHash(projectPath) {
29
29
  /**
30
30
  * Build a systemd unit file for the al scheduler.
31
31
  */
32
- export function buildSystemdUnit(projectName, basePath, binPaths, gatewayPort) {
32
+ export function buildSystemdUnit(projectName, basePath, binPaths, gatewayPort, expose) {
33
33
  // al is installed as a project dependency — use the local binary
34
34
  const alExec = `${basePath}/project/node_modules/.bin/al`;
35
35
  // Ensure node is on PATH so the al binary can find it
@@ -39,6 +39,8 @@ export function buildSystemdUnit(projectName, basePath, binPaths, gatewayPort) {
39
39
  const pathEnv = extraDirs.size > 0
40
40
  ? `\nEnvironment=PATH=${[...extraDirs].join(":")}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`
41
41
  : "";
42
+ // Default to true for backward compatibility — existing server deployments expect public exposure
43
+ const exposeFlag = expose === false ? "" : " -e";
42
44
  return `[Unit]
43
45
  Description=Action Llama scheduler (${projectName})
44
46
  After=network.target docker.service
@@ -47,7 +49,7 @@ Requires=docker.service
47
49
  [Service]
48
50
  Type=simple
49
51
  WorkingDirectory=${basePath}/project
50
- ExecStart=${alExec} start --headless -w -e${gatewayPort ? ` --port ${gatewayPort}` : ""}
52
+ ExecStart=${alExec} start --headless -w${exposeFlag}${gatewayPort ? ` --port ${gatewayPort}` : ""}
51
53
  Restart=on-failure
52
54
  RestartSec=5
53
55
  Environment=NODE_ENV=production${pathEnv}
@@ -82,6 +84,55 @@ export async function pushToServer(opts) {
82
84
  catch { }
83
85
  }
84
86
  }
87
+ /**
88
+ * Push a single agent's files to the server. The running scheduler's file
89
+ * watcher detects the change and hot-reloads the agent — no service restart.
90
+ */
91
+ export async function pushAgentToServer(opts) {
92
+ const { projectPath, serverConfig, agentName, dryRun, noCreds, noFiles } = opts;
93
+ const ssh = sshOptionsFromConfig(serverConfig);
94
+ const basePath = serverConfig.basePath ?? "/opt/action-llama";
95
+ // Set up SSH ControlMaster for connection multiplexing
96
+ const hostHash = createHash("sha256").update(ssh.host).digest("hex").slice(0, 8);
97
+ const controlPath = `/tmp/al-ssh-${hostHash}-${process.pid}`;
98
+ ssh.controlPath = controlPath;
99
+ try {
100
+ const syncItems = [];
101
+ if (!noFiles)
102
+ syncItems.push("agent files");
103
+ if (!noCreds)
104
+ syncItems.push("credentials");
105
+ if (syncItems.length > 0) {
106
+ console.log(`\nSyncing ${syncItems.join(" and ")}...`);
107
+ if (!dryRun) {
108
+ await sshExec(ssh, `mkdir -p ${basePath}/project/agents/${agentName} ${basePath}/credentials`);
109
+ }
110
+ const rsyncFlags = dryRun ? ["--dry-run", "-v"] : [];
111
+ const tasks = [];
112
+ if (!noFiles) {
113
+ const agentLocalPath = resolve(projectPath, "agents", agentName);
114
+ const agentRemotePath = `${basePath}/project/agents/${agentName}`;
115
+ tasks.push(rsyncTo(ssh, agentLocalPath, agentRemotePath, undefined, rsyncFlags));
116
+ }
117
+ if (!noCreds) {
118
+ tasks.push(rsyncTo(ssh, CREDENTIALS_DIR, `${basePath}/credentials`, undefined, rsyncFlags));
119
+ }
120
+ await Promise.all(tasks);
121
+ console.log(dryRun ? " (dry-run) No changes made." : " Done.");
122
+ }
123
+ if (dryRun) {
124
+ console.log("\nDry run complete — no changes were made.");
125
+ return;
126
+ }
127
+ console.log(`\nAgent "${agentName}" pushed — the scheduler will hot-reload it.`);
128
+ }
129
+ finally {
130
+ try {
131
+ unlinkSync(controlPath);
132
+ }
133
+ catch { }
134
+ }
135
+ }
85
136
  async function pushToServerInner(ssh, opts) {
86
137
  const { projectPath, serverConfig, globalConfig, dryRun, noCreds, noFiles, forceInstall, basePath, gatewayPort, projectName } = opts;
87
138
  // Step 1: Bootstrap server
@@ -135,7 +186,7 @@ async function pushToServerInner(ssh, opts) {
135
186
  phaseB.push(setupNginx(ssh, basePath, serverConfig.cloudflareHostname, gatewayPort));
136
187
  }
137
188
  phaseB.push(writeEnvAndSymlink(ssh, basePath, gatewayPort, globalConfig));
138
- const unitContent = buildSystemdUnit(projectName, basePath, binPaths, gatewayPort);
189
+ const unitContent = buildSystemdUnit(projectName, basePath, binPaths, gatewayPort, serverConfig.expose);
139
190
  phaseB.push(installSystemdUnit(ssh, unitContent));
140
191
  const results = await Promise.all(phaseB);
141
192
  for (const msg of results) {
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/remote/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/remote/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Wire up the al-call dispatch handler on the gateway.
3
+ *
4
+ * When a container issues an al-call, the gateway invokes the dispatcher to
5
+ * route the call to the target agent's runner pool.
6
+ */
7
+ import type { GatewayServer } from "../gateway/index.js";
8
+ import type { StatusTracker } from "../tui/status-tracker.js";
9
+ import type { SchedulerContext } from "./execution.js";
10
+ export declare function wireCallDispatcher(gateway: GatewayServer, schedulerCtx: SchedulerContext, statusTracker?: StatusTracker): void;
11
+ //# sourceMappingURL=call-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-dispatcher.d.ts","sourceRoot":"","sources":["../../src/scheduler/call-dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,gBAAgB,EAC9B,aAAa,CAAC,EAAE,aAAa,GAC5B,IAAI,CAwDN"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Wire up the al-call dispatch handler on the gateway.
3
+ *
4
+ * When a container issues an al-call, the gateway invokes the dispatcher to
5
+ * route the call to the target agent's runner pool.
6
+ */
7
+ import { executeRun, drainQueues, makeTriggeredPrompt, } from "./execution.js";
8
+ export function wireCallDispatcher(gateway, schedulerCtx, statusTracker) {
9
+ const { agentConfigs, maxTriggerDepth, logger, runnerPools } = schedulerCtx;
10
+ const callStore = gateway.callStore;
11
+ gateway.setCallDispatcher((entry) => {
12
+ if (statusTracker?.isPaused()) {
13
+ return { ok: false, reason: "scheduler is paused" };
14
+ }
15
+ if (entry.callerAgent === entry.targetAgent) {
16
+ return { ok: false, reason: "agent cannot call itself" };
17
+ }
18
+ if (entry.depth >= maxTriggerDepth) {
19
+ return { ok: false, reason: "trigger depth limit reached" };
20
+ }
21
+ const targetConfig = agentConfigs.find((a) => a.name === entry.targetAgent);
22
+ if (!targetConfig) {
23
+ return { ok: false, reason: `target agent "${entry.targetAgent}" not found` };
24
+ }
25
+ const pool = runnerPools[entry.targetAgent];
26
+ if (!pool || pool.size === 0) {
27
+ return { ok: false, reason: `target agent "${entry.targetAgent}" is disabled` };
28
+ }
29
+ const runner = pool.getAvailableRunner();
30
+ if (runner) {
31
+ logger.info({ caller: entry.callerAgent, target: entry.targetAgent, depth: entry.depth }, "dispatching call");
32
+ callStore?.setRunning(entry.callId);
33
+ const prompt = makeTriggeredPrompt(targetConfig, entry.callerAgent, entry.context, schedulerCtx);
34
+ executeRun(runner, prompt, { type: 'agent', source: entry.callerAgent }, entry.targetAgent, entry.depth + 1, schedulerCtx)
35
+ .then(({ result, returnValue }) => {
36
+ if (result === "completed" || result === "rerun") {
37
+ callStore?.complete(entry.callId, returnValue);
38
+ }
39
+ else {
40
+ callStore?.fail(entry.callId, "agent run failed");
41
+ }
42
+ return drainQueues(schedulerCtx);
43
+ })
44
+ .catch((err) => {
45
+ callStore?.fail(entry.callId, err?.message || "unknown error");
46
+ logger.error({ err, target: entry.targetAgent }, "called agent run failed");
47
+ });
48
+ }
49
+ else {
50
+ schedulerCtx.workQueue.enqueue(entry.targetAgent, {
51
+ type: 'agent-trigger',
52
+ sourceAgent: entry.callerAgent,
53
+ context: entry.context,
54
+ depth: entry.depth,
55
+ callId: entry.callId,
56
+ });
57
+ logger.info({ caller: entry.callerAgent, target: entry.targetAgent }, "all runners busy, call queued");
58
+ drainQueues(schedulerCtx).catch((err) => {
59
+ logger.error({ err }, "drain after al-call queue failed");
60
+ });
61
+ }
62
+ return { ok: true };
63
+ });
64
+ }
65
+ //# sourceMappingURL=call-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-dispatcher.js","sourceRoot":"","sources":["../../src/scheduler/call-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Cron job creation, enable/disable event handling, and initial run firing.
3
+ */
4
+ import { Cron } from "croner";
5
+ import type { AgentConfig, WebhookSourceConfig } from "../shared/config.js";
6
+ import type { GlobalConfig } from "../shared/config.js";
7
+ import type { GatewayServer } from "../gateway/index.js";
8
+ import type { StatusTracker } from "../tui/status-tracker.js";
9
+ import type { Logger } from "../shared/logger.js";
10
+ import { RunnerPool } from "./runner-pool.js";
11
+ import type { SchedulerContext } from "./execution.js";
12
+ export interface CronSetupResult {
13
+ cronJobs: Cron[];
14
+ agentCronJobs: Map<string, Cron>;
15
+ webhookUrls: string[];
16
+ }
17
+ export declare function setupCronJobs(opts: {
18
+ activeAgentConfigs: AgentConfig[];
19
+ runnerPools: Record<string, RunnerPool>;
20
+ schedulerCtx: SchedulerContext;
21
+ webhookSources: Record<string, WebhookSourceConfig>;
22
+ globalConfig: GlobalConfig;
23
+ agentConfigs: AgentConfig[];
24
+ gateway?: GatewayServer;
25
+ statusTracker?: StatusTracker;
26
+ logger: Logger;
27
+ timezone: string;
28
+ anyWebhooks: boolean;
29
+ }): CronSetupResult;
30
+ export declare function setupEnableDisableHandlers(opts: {
31
+ statusTracker: StatusTracker;
32
+ agentCronJobs: Map<string, Cron>;
33
+ logger: Logger;
34
+ }): void;
35
+ export declare function fireInitialRuns(opts: {
36
+ agentConfigs: AgentConfig[];
37
+ runnerPools: Record<string, RunnerPool>;
38
+ schedulerCtx: SchedulerContext;
39
+ logger: Logger;
40
+ }): void;
41
+ //# sourceMappingURL=cron-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-setup.d.ts","sourceRoot":"","sources":["../../src/scheduler/cron-setup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACpD,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,eAAe,CA4DlB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAuBP;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAiBP"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Cron job creation, enable/disable event handling, and initial run firing.
3
+ */
4
+ import { Cron } from "croner";
5
+ import { runWithReruns } from "./execution.js";
6
+ export function setupCronJobs(opts) {
7
+ const { activeAgentConfigs, runnerPools, schedulerCtx, webhookSources, globalConfig, agentConfigs, gateway, statusTracker, logger, timezone, anyWebhooks, } = opts;
8
+ const cronJobs = [];
9
+ const agentCronJobs = new Map();
10
+ for (const agentConfig of activeAgentConfigs) {
11
+ if (!agentConfig.schedule)
12
+ continue;
13
+ const pool = runnerPools[agentConfig.name];
14
+ const job = new Cron(agentConfig.schedule, { timezone }, async () => {
15
+ // Skip if scheduler is paused
16
+ if (statusTracker?.isPaused()) {
17
+ logger.info({ agent: agentConfig.name }, "scheduler paused, skipping scheduled run");
18
+ return;
19
+ }
20
+ // Skip if agent is disabled
21
+ if (statusTracker && !statusTracker.isAgentEnabled(agentConfig.name)) {
22
+ logger.info({ agent: agentConfig.name }, "agent is disabled, skipping scheduled run");
23
+ return;
24
+ }
25
+ const availableRunner = pool.getAvailableRunner();
26
+ if (!availableRunner) {
27
+ const { dropped } = schedulerCtx.workQueue.enqueue(agentConfig.name, { type: 'schedule' });
28
+ logger.info({ agent: agentConfig.name, running: pool.runningJobCount, scale: pool.size }, "all runners busy, scheduled run queued");
29
+ if (dropped)
30
+ logger.warn({ agent: agentConfig.name }, "queue full, oldest event dropped");
31
+ return;
32
+ }
33
+ logger.info({ agent: agentConfig.name, running: pool.runningJobCount, scale: pool.size }, "triggering scheduled run");
34
+ await runWithReruns(availableRunner, agentConfig, 0, schedulerCtx);
35
+ });
36
+ cronJobs.push(job);
37
+ agentCronJobs.set(agentConfig.name, job);
38
+ const nextRun = job.nextRun();
39
+ if (nextRun) {
40
+ statusTracker?.setNextRunAt(agentConfig.name, nextRun);
41
+ }
42
+ logger.info(`Scheduled ${agentConfig.name}: "${agentConfig.schedule}" (${timezone})`);
43
+ }
44
+ const webhookUrls = [];
45
+ if (anyWebhooks && gateway) {
46
+ const gatewayPort = globalConfig.gateway?.port || 8080;
47
+ const providerTypes = new Set(agentConfigs.flatMap((a) => a.webhooks?.map((t) => webhookSources[t.source]?.type).filter(Boolean) || []));
48
+ for (const pt of providerTypes) {
49
+ webhookUrls.push(`http://localhost:${gatewayPort}/webhooks/${pt}`);
50
+ }
51
+ }
52
+ return { cronJobs, agentCronJobs, webhookUrls };
53
+ }
54
+ export function setupEnableDisableHandlers(opts) {
55
+ const { statusTracker, agentCronJobs, logger } = opts;
56
+ statusTracker.on("agent-enabled", (agentName) => {
57
+ const job = agentCronJobs.get(agentName);
58
+ if (job) {
59
+ job.resume();
60
+ const nextRun = job.nextRun();
61
+ if (nextRun) {
62
+ statusTracker.setNextRunAt(agentName, nextRun);
63
+ }
64
+ logger.info({ agent: agentName }, "agent enabled, cron job resumed");
65
+ }
66
+ });
67
+ statusTracker.on("agent-disabled", (agentName) => {
68
+ const job = agentCronJobs.get(agentName);
69
+ if (job) {
70
+ job.pause();
71
+ statusTracker.setNextRunAt(agentName, null);
72
+ logger.info({ agent: agentName }, "agent disabled, cron job paused");
73
+ }
74
+ });
75
+ }
76
+ export function fireInitialRuns(opts) {
77
+ const { agentConfigs, runnerPools, schedulerCtx, logger } = opts;
78
+ for (const agentConfig of agentConfigs) {
79
+ if (!agentConfig.schedule)
80
+ continue;
81
+ const pool = runnerPools[agentConfig.name];
82
+ const availableRunner = pool.getAvailableRunner();
83
+ if (availableRunner) {
84
+ logger.info(`Initial run for ${agentConfig.name}`);
85
+ runWithReruns(availableRunner, agentConfig, 0, schedulerCtx).catch((err) => {
86
+ logger.error({ err }, `Initial ${agentConfig.name} run failed`);
87
+ });
88
+ }
89
+ else {
90
+ logger.warn(`${agentConfig.name}: all runners busy, skipping initial run`);
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=cron-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-setup.js","sourceRoot":"","sources":["../../src/scheduler/cron-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { WorkQueue, QueuedWorkItem, EnqueueResult } from "./event-queue.js";
2
+ /**
3
+ * SQLite-backed WorkQueue — durable per-agent FIFO queue.
4
+ *
5
+ * Items are written to disk immediately on enqueue, so work
6
+ * survives process crashes and restarts without a separate
7
+ * persistence layer.
8
+ *
9
+ * Uses better-sqlite3 for synchronous embedded storage.
10
+ * Dequeue is atomic (transaction: select + delete) to prevent
11
+ * concurrent double-claims.
12
+ */
13
+ export declare class SqliteWorkQueue<T> implements WorkQueue<T> {
14
+ private db;
15
+ private stmts;
16
+ private maxSize;
17
+ private _dequeueTransaction;
18
+ private _enqueueTransaction;
19
+ constructor(maxSize: number, dbPath: string);
20
+ enqueue(agentName: string, context: T, receivedAt?: Date): EnqueueResult<T>;
21
+ dequeue(agentName: string): QueuedWorkItem<T> | undefined;
22
+ size(agentName: string): number;
23
+ clear(agentName: string): void;
24
+ clearAll(): void;
25
+ close(): void;
26
+ }
27
+ //# sourceMappingURL=event-queue-sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue-sqlite.d.ts","sourceRoot":"","sources":["../../src/scheduler/event-queue-sqlite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,CAAgC;IAC1C,OAAO,CAAC,KAAK,CAQX;IACF,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,mBAAmB,CAIb;IAEd,OAAO,CAAC,mBAAmB,CAKiC;gBAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAwE3C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC;IAoB3E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS;IASzD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAK/B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,IAAI,IAAI;IAIhB,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,105 @@
1
+ import Database from "better-sqlite3";
2
+ import { mkdirSync } from "fs";
3
+ import { dirname } from "path";
4
+ import { randomUUID } from "crypto";
5
+ /**
6
+ * SQLite-backed WorkQueue — durable per-agent FIFO queue.
7
+ *
8
+ * Items are written to disk immediately on enqueue, so work
9
+ * survives process crashes and restarts without a separate
10
+ * persistence layer.
11
+ *
12
+ * Uses better-sqlite3 for synchronous embedded storage.
13
+ * Dequeue is atomic (transaction: select + delete) to prevent
14
+ * concurrent double-claims.
15
+ */
16
+ export class SqliteWorkQueue {
17
+ db;
18
+ stmts;
19
+ maxSize;
20
+ _dequeueTransaction;
21
+ _enqueueTransaction;
22
+ constructor(maxSize, dbPath) {
23
+ this.maxSize = maxSize;
24
+ mkdirSync(dirname(dbPath), { recursive: true });
25
+ this.db = new Database(dbPath);
26
+ this.db.pragma("journal_mode = WAL");
27
+ this.db.exec(`
28
+ CREATE TABLE IF NOT EXISTS work_queue (
29
+ id TEXT NOT NULL,
30
+ agent TEXT NOT NULL,
31
+ payload TEXT NOT NULL,
32
+ received_at INTEGER NOT NULL,
33
+ PRIMARY KEY (agent, id)
34
+ )
35
+ `);
36
+ this.db.exec("CREATE INDEX IF NOT EXISTS idx_wq_agent ON work_queue(agent)");
37
+ this.stmts = {
38
+ enqueue: this.db.prepare("INSERT INTO work_queue (id, agent, payload, received_at) VALUES (?, ?, ?, ?)"),
39
+ dequeue_peek: this.db.prepare("SELECT id, payload, received_at FROM work_queue WHERE agent = ? ORDER BY rowid ASC LIMIT 1"),
40
+ delete_by_id: this.db.prepare("DELETE FROM work_queue WHERE agent = ? AND id = ?"),
41
+ size: this.db.prepare("SELECT COUNT(*) AS n FROM work_queue WHERE agent = ?"),
42
+ clear_agent: this.db.prepare("DELETE FROM work_queue WHERE agent = ?"),
43
+ clear_all: this.db.prepare("DELETE FROM work_queue"),
44
+ oldest: this.db.prepare("SELECT id, payload, received_at FROM work_queue WHERE agent = ? ORDER BY rowid ASC LIMIT 1"),
45
+ };
46
+ // Atomic dequeue: peek + delete in one transaction
47
+ this._dequeueTransaction = this.db.transaction((agent) => {
48
+ const row = this.stmts.dequeue_peek.get(agent);
49
+ if (!row)
50
+ return undefined;
51
+ this.stmts.delete_by_id.run(agent, row.id);
52
+ return row;
53
+ });
54
+ // Atomic enqueue with overflow: insert + conditionally drop oldest
55
+ this._enqueueTransaction = this.db.transaction((agent, id, payload, receivedAt) => {
56
+ const { n } = this.stmts.size.get(agent);
57
+ let dropped;
58
+ if (n >= this.maxSize) {
59
+ const oldest = this.stmts.oldest.get(agent);
60
+ if (oldest) {
61
+ this.stmts.delete_by_id.run(agent, oldest.id);
62
+ dropped = { payload: oldest.payload, received_at: oldest.received_at };
63
+ }
64
+ }
65
+ this.stmts.enqueue.run(id, agent, payload, receivedAt);
66
+ return { dropped };
67
+ });
68
+ }
69
+ enqueue(agentName, context, receivedAt) {
70
+ const id = randomUUID();
71
+ const ts = (receivedAt || new Date()).getTime();
72
+ const { dropped: droppedRow } = this._enqueueTransaction(agentName, id, JSON.stringify(context), ts);
73
+ let dropped;
74
+ if (droppedRow) {
75
+ dropped = {
76
+ context: JSON.parse(droppedRow.payload),
77
+ receivedAt: new Date(droppedRow.received_at),
78
+ };
79
+ }
80
+ return { accepted: true, dropped };
81
+ }
82
+ dequeue(agentName) {
83
+ const row = this._dequeueTransaction(agentName);
84
+ if (!row)
85
+ return undefined;
86
+ return {
87
+ context: JSON.parse(row.payload),
88
+ receivedAt: new Date(row.received_at),
89
+ };
90
+ }
91
+ size(agentName) {
92
+ const row = this.stmts.size.get(agentName);
93
+ return row.n;
94
+ }
95
+ clear(agentName) {
96
+ this.stmts.clear_agent.run(agentName);
97
+ }
98
+ clearAll() {
99
+ this.stmts.clear_all.run();
100
+ }
101
+ close() {
102
+ this.db.close();
103
+ }
104
+ }
105
+ //# sourceMappingURL=event-queue-sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-queue-sqlite.js","sourceRoot":"","sources":["../../src/scheduler/event-queue-sqlite.ts"],"names":[],"mappings":"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"}