@action-llama/action-llama 0.13.0 → 0.13.2

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 (161) hide show
  1. package/README.md +4 -17
  2. package/{docs/agent-reference → agent-docs}/AGENTS.md +27 -0
  3. package/{docs/agent-reference → agent-docs}/skills/README.md +1 -0
  4. package/agent-docs/skills/calls.md +82 -0
  5. package/{docs/agent-reference → agent-docs}/skills/resource-locks.md +13 -7
  6. package/{docs/agent-reference → agent-docs}/skills/signals.md +1 -1
  7. package/dist/agents/container-entry.d.ts.map +1 -1
  8. package/dist/agents/container-entry.js +15 -0
  9. package/dist/agents/container-entry.js.map +1 -1
  10. package/dist/agents/prompt.d.ts.map +1 -1
  11. package/dist/agents/prompt.js +3 -2
  12. package/dist/agents/prompt.js.map +1 -1
  13. package/dist/build-info.json +1 -1
  14. package/dist/cli/commands/doctor.d.ts.map +1 -1
  15. package/dist/cli/commands/doctor.js +15 -0
  16. package/dist/cli/commands/doctor.js.map +1 -1
  17. package/dist/cli/commands/env.d.ts.map +1 -1
  18. package/dist/cli/commands/env.js +4 -0
  19. package/dist/cli/commands/env.js.map +1 -1
  20. package/dist/cli/commands/kill.js +2 -2
  21. package/dist/cli/commands/kill.js.map +1 -1
  22. package/dist/cli/commands/pause.js +2 -2
  23. package/dist/cli/commands/pause.js.map +1 -1
  24. package/dist/cli/commands/push.js +1 -1
  25. package/dist/cli/commands/push.js.map +1 -1
  26. package/dist/cli/commands/resume.js +2 -2
  27. package/dist/cli/commands/resume.js.map +1 -1
  28. package/dist/cli/commands/run.js +2 -2
  29. package/dist/cli/commands/run.js.map +1 -1
  30. package/dist/cli/commands/status.js +5 -5
  31. package/dist/cli/commands/status.js.map +1 -1
  32. package/dist/cli/commands/stop.js +2 -2
  33. package/dist/cli/commands/stop.js.map +1 -1
  34. package/dist/cli/gateway-client.d.ts +6 -0
  35. package/dist/cli/gateway-client.d.ts.map +1 -1
  36. package/dist/cli/gateway-client.js +19 -0
  37. package/dist/cli/gateway-client.js.map +1 -1
  38. package/dist/cloud/vps/constants.d.ts +1 -1
  39. package/dist/cloud/vps/constants.d.ts.map +1 -1
  40. package/dist/cloud/vps/constants.js +9 -0
  41. package/dist/cloud/vps/constants.js.map +1 -1
  42. package/dist/cloud/vps/provision.js +11 -1
  43. package/dist/cloud/vps/provision.js.map +1 -1
  44. package/dist/cloud/vps/ssh.d.ts +7 -0
  45. package/dist/cloud/vps/ssh.d.ts.map +1 -1
  46. package/dist/cloud/vps/ssh.js +15 -1
  47. package/dist/cloud/vps/ssh.js.map +1 -1
  48. package/dist/credentials/builtins/index.d.ts.map +1 -1
  49. package/dist/credentials/builtins/index.js +6 -0
  50. package/dist/credentials/builtins/index.js.map +1 -1
  51. package/dist/credentials/builtins/mintlify-token.d.ts +4 -0
  52. package/dist/credentials/builtins/mintlify-token.d.ts.map +1 -0
  53. package/dist/credentials/builtins/mintlify-token.js +14 -0
  54. package/dist/credentials/builtins/mintlify-token.js.map +1 -0
  55. package/dist/credentials/builtins/mintlify-webhook-secret.d.ts +4 -0
  56. package/dist/credentials/builtins/mintlify-webhook-secret.d.ts.map +1 -0
  57. package/dist/credentials/builtins/mintlify-webhook-secret.js +12 -0
  58. package/dist/credentials/builtins/mintlify-webhook-secret.js.map +1 -0
  59. package/dist/credentials/builtins/reddit-oauth.d.ts +4 -0
  60. package/dist/credentials/builtins/reddit-oauth.d.ts.map +1 -0
  61. package/dist/credentials/builtins/reddit-oauth.js +71 -0
  62. package/dist/credentials/builtins/reddit-oauth.js.map +1 -0
  63. package/dist/docker/local-runtime.d.ts +0 -3
  64. package/dist/docker/local-runtime.d.ts.map +1 -1
  65. package/dist/docker/local-runtime.js +1 -34
  66. package/dist/docker/local-runtime.js.map +1 -1
  67. package/dist/docker/runtime.d.ts +0 -4
  68. package/dist/docker/runtime.d.ts.map +1 -1
  69. package/dist/gateway/index.d.ts +3 -0
  70. package/dist/gateway/index.d.ts.map +1 -1
  71. package/dist/gateway/index.js +23 -3
  72. package/dist/gateway/index.js.map +1 -1
  73. package/dist/gateway/routes/calls.d.ts +2 -1
  74. package/dist/gateway/routes/calls.d.ts.map +1 -1
  75. package/dist/gateway/routes/calls.js +12 -1
  76. package/dist/gateway/routes/calls.js.map +1 -1
  77. package/dist/gateway/routes/control.d.ts +2 -0
  78. package/dist/gateway/routes/control.d.ts.map +1 -1
  79. package/dist/gateway/routes/control.js +30 -2
  80. package/dist/gateway/routes/control.js.map +1 -1
  81. package/dist/gateway/routes/locks.d.ts +2 -0
  82. package/dist/gateway/routes/locks.d.ts.map +1 -1
  83. package/dist/gateway/routes/locks.js +20 -0
  84. package/dist/gateway/routes/locks.js.map +1 -1
  85. package/dist/gateway/routes/signals.d.ts +2 -1
  86. package/dist/gateway/routes/signals.d.ts.map +1 -1
  87. package/dist/gateway/routes/signals.js +21 -1
  88. package/dist/gateway/routes/signals.js.map +1 -1
  89. package/dist/remote/bootstrap.d.ts +2 -0
  90. package/dist/remote/bootstrap.d.ts.map +1 -1
  91. package/dist/remote/bootstrap.js +5 -9
  92. package/dist/remote/bootstrap.js.map +1 -1
  93. package/dist/remote/push.js +85 -71
  94. package/dist/remote/push.js.map +1 -1
  95. package/dist/scheduler/events.d.ts +78 -0
  96. package/dist/scheduler/events.d.ts.map +1 -0
  97. package/dist/scheduler/events.js +65 -0
  98. package/dist/scheduler/events.js.map +1 -0
  99. package/dist/scheduler/execution.d.ts +15 -0
  100. package/dist/scheduler/execution.d.ts.map +1 -1
  101. package/dist/scheduler/execution.js +31 -2
  102. package/dist/scheduler/execution.js.map +1 -1
  103. package/dist/scheduler/index.d.ts +5 -0
  104. package/dist/scheduler/index.d.ts.map +1 -1
  105. package/dist/scheduler/index.js +61 -17
  106. package/dist/scheduler/index.js.map +1 -1
  107. package/dist/scheduler/webhook-setup.d.ts.map +1 -1
  108. package/dist/scheduler/webhook-setup.js +16 -0
  109. package/dist/scheduler/webhook-setup.js.map +1 -1
  110. package/dist/setup/scaffold.js +2 -2
  111. package/dist/setup/scaffold.js.map +1 -1
  112. package/dist/shared/config.d.ts +1 -0
  113. package/dist/shared/config.d.ts.map +1 -1
  114. package/dist/shared/config.js.map +1 -1
  115. package/dist/webhooks/definitions/github.d.ts.map +1 -1
  116. package/dist/webhooks/definitions/github.js +13 -0
  117. package/dist/webhooks/definitions/github.js.map +1 -1
  118. package/dist/webhooks/providers/github.d.ts.map +1 -1
  119. package/dist/webhooks/providers/github.js +6 -0
  120. package/dist/webhooks/providers/github.js.map +1 -1
  121. package/dist/webhooks/providers/mintlify.d.ts +9 -0
  122. package/dist/webhooks/providers/mintlify.d.ts.map +1 -0
  123. package/dist/webhooks/providers/mintlify.js +69 -0
  124. package/dist/webhooks/providers/mintlify.js.map +1 -0
  125. package/dist/webhooks/types.d.ts +9 -1
  126. package/dist/webhooks/types.d.ts.map +1 -1
  127. package/docker/bin/_http-exit +35 -0
  128. package/docker/bin/al-call +10 -4
  129. package/docker/bin/al-check +9 -3
  130. package/docker/bin/al-status +1 -1
  131. package/docker/bin/al-wait +11 -3
  132. package/docker/bin/rlock +9 -2
  133. package/docker/bin/rlock-heartbeat +9 -2
  134. package/docker/bin/runlock +9 -2
  135. package/package.json +2 -2
  136. package/docs/agent-config-reference.md +0 -313
  137. package/docs/agents.md +0 -256
  138. package/docs/cloud-run.md +0 -173
  139. package/docs/cloud.md +0 -98
  140. package/docs/commands.md +0 -286
  141. package/docs/config-reference.md +0 -241
  142. package/docs/creating-agents.md +0 -147
  143. package/docs/credentials.md +0 -167
  144. package/docs/docker.md +0 -323
  145. package/docs/ecs.md +0 -795
  146. package/docs/examples/dev/ACTIONS.md +0 -96
  147. package/docs/examples/dev/README.md +0 -42
  148. package/docs/examples/dev/agent-config.toml +0 -24
  149. package/docs/examples/index.md +0 -15
  150. package/docs/examples/planner/ACTIONS.md +0 -177
  151. package/docs/examples/planner/README.md +0 -39
  152. package/docs/examples/planner/agent-config.toml +0 -31
  153. package/docs/examples/reviewer/ACTIONS.md +0 -153
  154. package/docs/examples/reviewer/README.md +0 -39
  155. package/docs/examples/reviewer/agent-config.toml +0 -21
  156. package/docs/models.md +0 -191
  157. package/docs/vps-deployment.md +0 -285
  158. package/docs/web-dashboard.md +0 -113
  159. package/docs/webhooks.md +0 -152
  160. /package/{docs/agent-reference → agent-docs}/skills/credentials.md +0 -0
  161. /package/{docs/agent-reference → agent-docs}/skills/environment.md +0 -0
@@ -47,7 +47,7 @@ Requires=docker.service
47
47
  [Service]
48
48
  Type=simple
49
49
  WorkingDirectory=${basePath}/project
50
- ExecStart=${alExec} start --headless -w${gatewayPort ? ` --port ${gatewayPort}` : ""}
50
+ ExecStart=${alExec} start --headless -w -e${gatewayPort ? ` --port ${gatewayPort}` : ""}
51
51
  Restart=on-failure
52
52
  RestartSec=5
53
53
  Environment=NODE_ENV=production${pathEnv}
@@ -85,107 +85,128 @@ export async function pushToServer(opts) {
85
85
  async function pushToServerInner(ssh, opts) {
86
86
  const { projectPath, serverConfig, globalConfig, dryRun, noCreds, noFiles, forceInstall, basePath, gatewayPort, projectName } = opts;
87
87
  // Step 1: Bootstrap server
88
- console.log("\n=== Checking server prerequisites ===\n");
88
+ console.log("\nChecking server...");
89
89
  let binPaths;
90
90
  if (dryRun) {
91
- console.log("(dry-run) Would check server prerequisites");
91
+ console.log(" (dry-run) Skipped.");
92
92
  }
93
93
  else {
94
94
  binPaths = await bootstrapServer(ssh);
95
+ console.log(` Node.js ${binPaths.nodeVersion}`);
96
+ console.log(` Docker ${binPaths.dockerVersion}`);
95
97
  }
96
98
  // Step 2: Ensure remote directories exist
97
99
  if (!dryRun) {
98
100
  await sshExec(ssh, `mkdir -p ${basePath}/project ${basePath}/credentials`);
99
101
  }
100
- const rsyncFlags = dryRun ? ["--dry-run", "-v"] : [];
101
- // Phase A: Rsync project files and credentials in parallel
102
- const phaseA = [];
103
- if (!noFiles) {
104
- console.log("\n=== Syncing project files ===\n");
105
- const excludes = [
106
- "node_modules",
107
- ".al",
108
- ".git",
109
- ".env.toml",
110
- ];
111
- phaseA.push(rsyncTo(ssh, projectPath, `${basePath}/project`, excludes, rsyncFlags)
112
- .then(() => { console.log(dryRun ? "(dry-run) Would sync project files" : "Project files synced."); }));
113
- }
114
- if (!noCreds) {
115
- console.log("\n=== Syncing credentials ===\n");
116
- phaseA.push(rsyncTo(ssh, CREDENTIALS_DIR, `${basePath}/credentials`, undefined, rsyncFlags)
117
- .then(() => { console.log(dryRun ? "(dry-run) Would sync credentials" : "Credentials synced."); }));
102
+ // Phase A: Rsync files and credentials in parallel
103
+ const syncItems = [];
104
+ if (!noFiles)
105
+ syncItems.push("files");
106
+ if (!noCreds)
107
+ syncItems.push("credentials");
108
+ if (syncItems.length > 0) {
109
+ console.log(`\nSyncing ${syncItems.join(" and ")}...`);
110
+ const rsyncFlags = dryRun ? ["--dry-run", "-v"] : [];
111
+ const phaseA = [];
112
+ if (!noFiles) {
113
+ const excludes = ["node_modules", ".al", ".git", ".env.toml"];
114
+ phaseA.push(rsyncTo(ssh, projectPath, `${basePath}/project`, excludes, rsyncFlags));
115
+ }
116
+ if (!noCreds) {
117
+ phaseA.push(rsyncTo(ssh, CREDENTIALS_DIR, `${basePath}/credentials`, undefined, rsyncFlags));
118
+ }
119
+ await Promise.all(phaseA);
120
+ console.log(dryRun ? " (dry-run) No changes made." : " Done.");
118
121
  }
119
- await Promise.all(phaseA);
120
122
  if (dryRun) {
121
- console.log("\n=== Dry run complete ===\n");
122
- console.log("No changes were made to the server.");
123
+ console.log("\nDry run complete — no changes were made.");
123
124
  return;
124
125
  }
125
- // Phase B: Parallel setup npm install (if needed), nginx, env.toml, systemd
126
+ // Phase B: Configure server (parallel, results collected for deterministic output)
127
+ console.log("\nConfiguring server...");
126
128
  const phaseB = [];
127
- // npm install (conditional on package hash)
129
+ // SSH hardening (idempotent — safe to run on every push)
130
+ phaseB.push(hardenSsh(ssh));
128
131
  if (!noFiles) {
129
132
  phaseB.push(conditionalNpmInstall(ssh, projectPath, basePath, forceInstall));
130
133
  }
131
- // nginx setup (batched into one SSH call)
132
134
  if (!noCreds && serverConfig.cloudflareHostname) {
133
135
  phaseB.push(setupNginx(ssh, basePath, serverConfig.cloudflareHostname, gatewayPort));
134
136
  }
135
- // .env.toml + credentials symlink (batched into one SSH call)
136
137
  phaseB.push(writeEnvAndSymlink(ssh, basePath, gatewayPort, globalConfig));
137
- // systemd unit install (batched into one SSH call)
138
138
  const unitContent = buildSystemdUnit(projectName, basePath, binPaths, gatewayPort);
139
139
  phaseB.push(installSystemdUnit(ssh, unitContent));
140
- await Promise.all(phaseB);
141
- // Phase C: Restart + health check (sequential)
142
- console.log("\n=== Restarting service ===\n");
140
+ const results = await Promise.all(phaseB);
141
+ for (const msg of results) {
142
+ console.log(` ${msg}`);
143
+ }
144
+ // Phase C: Restart + health check
145
+ console.log("\nRestarting service...");
143
146
  await sshExec(ssh, "sudo systemctl restart action-llama");
144
- console.log("Service restarted.");
145
- console.log("\n=== Health check ===\n");
146
147
  await healthCheck(ssh, gatewayPort);
147
- // Print status
148
148
  console.log(`\nDeployed to ${serverConfig.host}:`);
149
149
  console.log(` Gateway: http://${serverConfig.host}:${gatewayPort}`);
150
150
  console.log(` Project: ${basePath}/project`);
151
151
  console.log(` Service: systemctl status action-llama`);
152
152
  console.log(` Logs: journalctl -u action-llama -f`);
153
153
  }
154
+ /**
155
+ * Harden SSH on the remote server. Idempotent — safe to run on every push.
156
+ * Disables password authentication, restricts root login to key-only,
157
+ * and installs fail2ban for brute-force protection.
158
+ */
159
+ async function hardenSsh(ssh) {
160
+ await sshExec(ssh, [
161
+ // Disable password auth and restrict root to key-only
162
+ "sed -i 's/^#\\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config",
163
+ "sed -i 's/^#\\?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config",
164
+ "systemctl restart sshd",
165
+ // Install fail2ban if not already present
166
+ "dpkg -s fail2ban >/dev/null 2>&1 || (apt-get update -qq && apt-get install -y -qq fail2ban && systemctl enable fail2ban && systemctl start fail2ban)",
167
+ ].join(" && "));
168
+ return "SSH hardened (password auth disabled, fail2ban active).";
169
+ }
154
170
  async function conditionalNpmInstall(ssh, projectPath, basePath, forceInstall) {
155
171
  const localHash = computePkgHash(projectPath);
156
172
  if (!forceInstall) {
157
173
  const remoteHash = (await sshExec(ssh, `cat ${basePath}/.pkg-hash 2>/dev/null || true`)).trim();
158
174
  if (remoteHash === localHash) {
159
- console.log("\n=== Dependencies unchanged, skipping npm install ===\n");
160
- return;
175
+ return "Dependencies unchanged, skipped npm install.";
161
176
  }
162
177
  }
163
- console.log("\n=== Installing dependencies ===\n");
164
178
  await sshExec(ssh, `cd ${basePath}/project && npm install`);
179
+ // When pushing the source package itself (not a consumer project), npm install
180
+ // won't create a bin symlink for the package's own "bin" entry. Ensure it exists.
181
+ await sshExec(ssh, [
182
+ `cd ${basePath}/project`,
183
+ `test -x node_modules/.bin/al || (mkdir -p node_modules/.bin && ln -sf ../../dist/cli/main.js node_modules/.bin/al)`,
184
+ ].join(" && "));
165
185
  await sshExec(ssh, `cat > ${basePath}/.pkg-hash << 'HASHEOF'\n${localHash}\nHASHEOF`);
166
- console.log("Dependencies installed.");
186
+ return "Dependencies installed.";
167
187
  }
168
188
  async function setupNginx(ssh, basePath, cfHost, gatewayPort) {
169
- console.log("\n=== Configuring nginx ===\n");
170
189
  const certSrc = `${basePath}/credentials/cloudflare_origin_cert/${cfHost}/certificate`;
171
190
  const keySrc = `${basePath}/credentials/cloudflare_origin_cert/${cfHost}/private_key`;
172
191
  const { generateNginxConfig } = await import("../cloud/vps/nginx.js");
173
192
  const nginxConf = generateNginxConfig(cfHost, gatewayPort);
174
193
  const nginxEscaped = nginxConf.replace(/'/g, "'\\''");
175
- // Batch all nginx setup into one SSH call
194
+ // Heredoc delimiter must be on its own line — place post-heredoc commands on
195
+ // the opening line so the closing NGINXEOF isn't polluted by " && next_cmd".
196
+ const postNginxCmds = [
197
+ `sudo ln -sfn ${VPS_CONSTANTS.NGINX_SITE_CONFIG} /etc/nginx/sites-enabled/action-llama`,
198
+ "sudo rm -f /etc/nginx/sites-enabled/default",
199
+ "sudo nginx -t && sudo systemctl reload nginx",
200
+ ].join(" && ");
176
201
  await sshExec(ssh, [
177
202
  `sudo mkdir -p ${VPS_CONSTANTS.NGINX_CERT_DIR}`,
178
203
  `sudo cp ${certSrc} ${VPS_CONSTANTS.NGINX_CERT_PATH}`,
179
204
  `sudo cp ${keySrc} ${VPS_CONSTANTS.NGINX_KEY_PATH}`,
180
- `sudo tee ${VPS_CONSTANTS.NGINX_SITE_CONFIG} > /dev/null << 'NGINXEOF'\n${nginxEscaped}\nNGINXEOF`,
181
- `sudo ln -sfn ${VPS_CONSTANTS.NGINX_SITE_CONFIG} /etc/nginx/sites-enabled/action-llama`,
182
- "sudo rm -f /etc/nginx/sites-enabled/default",
183
- "sudo nginx -t && sudo systemctl reload nginx",
205
+ `sudo tee ${VPS_CONSTANTS.NGINX_SITE_CONFIG} > /dev/null << 'NGINXEOF' && ${postNginxCmds}\n${nginxEscaped}\nNGINXEOF`,
184
206
  ].join(" && "));
185
- console.log(` nginx: ${cfHost} :443 → 127.0.0.1:${gatewayPort}`);
207
+ return `nginx: ${cfHost} :443 → 127.0.0.1:${gatewayPort}`;
186
208
  }
187
209
  async function writeEnvAndSymlink(ssh, basePath, gatewayPort, globalConfig) {
188
- console.log("\n=== Writing server .env.toml ===\n");
189
210
  const remoteEnv = {
190
211
  gateway: { ...globalConfig.gateway, port: gatewayPort },
191
212
  };
@@ -194,29 +215,25 @@ async function writeEnvAndSymlink(ssh, basePath, gatewayPort, globalConfig) {
194
215
  }
195
216
  const envToml = stringifyTOML(remoteEnv);
196
217
  const escaped = envToml.replace(/'/g, "'\\''");
197
- // Batch .env.toml write + credentials symlink into one SSH call
198
- await sshExec(ssh, [
199
- `cat > ${basePath}/project/.env.toml << 'ENVEOF'\n${escaped}\nENVEOF`,
200
- `mkdir -p ~/.action-llama && ln -sfn ${basePath}/credentials ~/.action-llama/credentials`,
201
- ].join(" && "));
202
- console.log("Server .env.toml written.");
218
+ // Heredoc delimiter must be on its own line place subsequent commands on the
219
+ // opening line so the closing ENVEOF isn't polluted by " && next_cmd".
220
+ const symlinkCmd = `mkdir -p ~/.action-llama && ln -sfn ${basePath}/credentials ~/.action-llama/credentials`;
221
+ await sshExec(ssh, `cat > ${basePath}/project/.env.toml << 'ENVEOF' && ${symlinkCmd}\n${escaped}\nENVEOF`);
222
+ return ".env.toml written.";
203
223
  }
204
224
  async function installSystemdUnit(ssh, unitContent) {
205
- console.log("\n=== Setting up systemd service ===\n");
206
225
  const unitEscaped = unitContent.replace(/'/g, "'\\''");
207
- // Batch tee + daemon-reload + enable into one SSH call
208
- await sshExec(ssh, [
209
- `sudo tee /etc/systemd/system/action-llama.service > /dev/null << 'UNITEOF'\n${unitEscaped}\nUNITEOF`,
210
- "sudo systemctl daemon-reload",
211
- "sudo systemctl enable action-llama",
212
- ].join(" && "));
213
- console.log("Systemd service installed.");
226
+ // Heredoc delimiter must be on its own line place post-heredoc commands on
227
+ // the opening line so the closing UNITEOF isn't polluted by " && next_cmd".
228
+ const postUnitCmds = "sudo systemctl daemon-reload && sudo systemctl enable action-llama";
229
+ await sshExec(ssh, `sudo tee /etc/systemd/system/action-llama.service > /dev/null << 'UNITEOF' && ${postUnitCmds}\n${unitEscaped}\nUNITEOF`);
230
+ return "Systemd service installed.";
214
231
  }
215
232
  /** Ramp-up intervals: faster initial polling, then backs off. */
216
233
  const HEALTH_CHECK_INTERVALS_MS = [1000, 1000, 2000, 3000, 3000];
217
234
  async function healthCheck(ssh, port) {
218
235
  const TIMEOUT_MS = 180_000; // 3 minutes — first push builds Docker images
219
- console.log(" Waiting for service to start...\n");
236
+ console.log(" Waiting for health check...");
220
237
  // Tail journal for live build/startup progress so the user sees what's happening
221
238
  const journal = sshSpawn(ssh, "journalctl -u action-llama -f --since 'now' -o cat 2>/dev/null");
222
239
  journal.stdout?.on("data", (chunk) => {
@@ -232,14 +249,12 @@ async function healthCheck(ssh, port) {
232
249
  let pollIndex = 0;
233
250
  try {
234
251
  while (Date.now() - startTime < TIMEOUT_MS) {
235
- // Try health endpoint
236
252
  try {
237
253
  await sshExec(ssh, `curl -sf http://localhost:${port}/health`);
238
- console.log("\n Health check passed.");
254
+ console.log(" Health check passed.");
239
255
  return;
240
256
  }
241
257
  catch {
242
- // Check if service has crashed/stopped — fail fast instead of waiting
243
258
  const active = await sshExecSafe(ssh, "systemctl is-active action-llama");
244
259
  if (active === "failed" || active === "inactive") {
245
260
  serviceFailed = true;
@@ -256,18 +271,17 @@ async function healthCheck(ssh, port) {
256
271
  }
257
272
  // Failure diagnostics
258
273
  if (serviceFailed) {
259
- console.log("\n Service failed to start.\n");
274
+ console.log("\n Service failed to start.");
260
275
  }
261
276
  else {
262
- console.log(`\nHealth check did not pass within ${Math.round(TIMEOUT_MS / 1000)}s.\n`);
277
+ console.log(`\n Health check timed out after ${Math.round(TIMEOUT_MS / 1000)}s.`);
263
278
  }
264
- console.log("=== Service status ===\n");
279
+ console.log("\n Service status:");
265
280
  const statusOutput = await sshExecSafe(ssh, "systemctl status action-llama --no-pager -l 2>&1; true");
266
281
  console.log(statusOutput || " (no output)");
267
- console.log("\n=== Recent logs ===\n");
282
+ console.log("\n Recent logs:");
268
283
  const logsOutput = await sshExecSafe(ssh, "journalctl -u action-llama --no-pager -n 40 2>&1; true");
269
- console.log(logsOutput || " (no log output — service may have failed to start)");
270
- console.log("");
284
+ console.log(logsOutput || " (no log output)");
271
285
  }
272
286
  /**
273
287
  * Run a command via SSH, returning whatever output is available even if the
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/remote/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAC3G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AACvC,OAAO,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AAYvE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,QAAgB,EAChB,QAA0B,EAC1B,WAAoB;IAEpB,iEAAiE;IACjE,MAAM,MAAM,GAAG,GAAG,QAAQ,+BAA+B,CAAC;IAC1D,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,IAAI,QAAQ,EAAE,QAAQ;QAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC;QAChC,CAAC,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,+DAA+D;QAC/G,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;sCAC6B,WAAW;;;;;;mBAM9B,QAAQ;YACf,MAAM,uBAAuB,WAAW,CAAC,CAAC,CAAC,WAAW,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;;;iCAGnD,OAAO;;;;CAIvC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAiB;IAClD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACjG,MAAM,GAAG,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,IAAI,mBAAmB,CAAC;IAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,oBAAoB,CAAC;IACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAEnD,uDAAuD;IACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,eAAe,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7D,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,GAAG,EAAE;YAC3B,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY;YAC/E,QAAQ,EAAE,WAAW,EAAE,WAAW;SACnC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IAC3C,CAAC;AACH,CAAC;AAeD,KAAK,UAAU,iBAAiB,CAAC,GAAe,EAAE,IAAe;IAC/D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EACrF,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE9C,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,IAAI,QAAqC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,GAAG,EAAE,YAAY,QAAQ,YAAY,QAAQ,cAAc,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,2DAA2D;IAC3D,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG;YACf,cAAc;YACd,KAAK;YACL,MAAM;YACN,WAAW;SACZ,CAAC;QACF,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,QAAQ,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;aACnE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CACzG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,QAAQ,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC;aAC5E,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CACrG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1B,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,4CAA4C;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1E,mDAAmD;IACnD,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACnF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAElD,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1B,+CAA+C;IAC/C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,MAAM,OAAO,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAEpC,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,iBAAiB,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,UAAU,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAe,EAAE,WAAmB,EAAE,QAAgB,EAAE,YAAsB;IAE9E,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,QAAQ,gCAAgC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChG,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,QAAQ,yBAAyB,CAAC,CAAC;IAC5D,MAAM,OAAO,CAAC,GAAG,EAAE,SAAS,QAAQ,4BAA4B,SAAS,WAAW,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAAe,EAAE,QAAgB,EAAE,MAAc,EAAE,WAAmB;IAEtE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,QAAQ,uCAAuC,MAAM,cAAc,CAAC;IACvF,MAAM,MAAM,GAAG,GAAG,QAAQ,uCAAuC,MAAM,cAAc,CAAC;IAEtF,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEtD,0CAA0C;IAC1C,MAAM,OAAO,CAAC,GAAG,EAAE;QACjB,iBAAiB,aAAa,CAAC,cAAc,EAAE;QAC/C,WAAW,OAAO,IAAI,aAAa,CAAC,eAAe,EAAE;QACrD,WAAW,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE;QACnD,YAAY,aAAa,CAAC,iBAAiB,+BAA+B,YAAY,YAAY;QAClG,gBAAgB,aAAa,CAAC,iBAAiB,wCAAwC;QACvF,6CAA6C;QAC7C,8CAA8C;KAC/C,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,qBAAqB,WAAW,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAe,EAAE,QAAgB,EAAE,WAAmB,EAAE,YAA0B;IAElF,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,MAAM,SAAS,GAA4B;QACzC,OAAO,EAAE,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;KACxD,CAAC;IACF,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAC/C,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE/C,gEAAgE;IAChE,MAAM,OAAO,CAAC,GAAG,EAAE;QACjB,SAAS,QAAQ,mCAAmC,OAAO,UAAU;QACrE,uCAAuC,QAAQ,0CAA0C;KAC1F,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,GAAe,EAAE,WAAmB;IACpE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEvD,uDAAuD;IACvD,MAAM,OAAO,CAAC,GAAG,EAAE;QACjB,+EAA+E,WAAW,WAAW;QACrG,8BAA8B;QAC9B,oCAAoC;KACrC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEjE,KAAK,UAAU,WAAW,CAAC,GAAe,EAAE,IAAY;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,8CAA8C;IAE1E,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnD,iFAAiF;IACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,gEAAgE,CAAC,CAAC;IAChG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3C,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,GAAG,EAAE,6BAA6B,IAAI,SAAS,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACxC,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;gBACtE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;gBAC1E,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjD,aAAa,GAAG,IAAI,CAAC;oBACrB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,yBAAyB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACnG,SAAS,EAAE,CAAC;YACZ,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,sBAAsB;IACtB,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,wDAAwD,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,eAAe,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,wDAAwD,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,sDAAsD,CAAC,CAAC;IAElF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,OAAe;IAC1D,MAAM,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAChF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,qEAAqE;QACrE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,OAAO,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,iBAAiB,CAAC;IACpD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/remote/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Typed event bus for scheduler lifecycle events.
3
+ *
4
+ * Used for test instrumentation — in production, no listeners are attached
5
+ * and events are effectively no-ops. In integration tests, the harness
6
+ * subscribes to events to wait for specific conditions without polling.
7
+ */
8
+ export interface RunStartEvent {
9
+ agentName: string;
10
+ instanceId: string;
11
+ trigger: string;
12
+ }
13
+ export interface RunEndEvent {
14
+ agentName: string;
15
+ instanceId: string;
16
+ result: string;
17
+ exitCode?: number;
18
+ error?: string;
19
+ }
20
+ export interface LockEvent {
21
+ agentName: string;
22
+ instanceId: string;
23
+ resourceKey: string;
24
+ action: "acquire" | "release" | "heartbeat";
25
+ ok: boolean;
26
+ status: number;
27
+ reason?: string;
28
+ }
29
+ export interface CallEvent {
30
+ callerAgent: string;
31
+ targetAgent: string;
32
+ ok: boolean;
33
+ callId?: string;
34
+ reason?: string;
35
+ }
36
+ export interface SignalEvent {
37
+ agentName: string;
38
+ instanceId: string;
39
+ signal: "rerun" | "status" | "trigger" | "return";
40
+ }
41
+ export interface WebhookReceivedEvent {
42
+ source: string;
43
+ event?: string;
44
+ }
45
+ export interface WebhookDispatchedEvent {
46
+ source: string;
47
+ agents: string[];
48
+ }
49
+ export interface SchedulerEventMap {
50
+ "run:start": RunStartEvent;
51
+ "run:end": RunEndEvent;
52
+ "lock": LockEvent;
53
+ "call": CallEvent;
54
+ "signal": SignalEvent;
55
+ "webhook:received": WebhookReceivedEvent;
56
+ "webhook:dispatched": WebhookDispatchedEvent;
57
+ }
58
+ export declare class SchedulerEventBus {
59
+ private emitter;
60
+ emit<K extends keyof SchedulerEventMap>(event: K, data: SchedulerEventMap[K]): void;
61
+ on<K extends keyof SchedulerEventMap>(event: K, listener: (data: SchedulerEventMap[K]) => void): this;
62
+ once<K extends keyof SchedulerEventMap>(event: K, listener: (data: SchedulerEventMap[K]) => void): this;
63
+ off<K extends keyof SchedulerEventMap>(event: K, listener: (data: SchedulerEventMap[K]) => void): this;
64
+ removeAllListeners(): void;
65
+ /**
66
+ * Wait for an event matching an optional predicate.
67
+ * Rejects after timeoutMs. Used by test harness.
68
+ */
69
+ waitFor<K extends keyof SchedulerEventMap>(event: K, predicate?: (data: SchedulerEventMap[K]) => boolean, timeoutMs?: number): Promise<SchedulerEventMap[K]>;
70
+ /**
71
+ * Collect all events of a given type into an array.
72
+ * Returns a handle to stop collecting and retrieve results.
73
+ */
74
+ collect<K extends keyof SchedulerEventMap>(event: K): {
75
+ stop: () => SchedulerEventMap[K][];
76
+ };
77
+ }
78
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/scheduler/events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,aAAa,CAAC;IAC3B,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,oBAAoB,EAAE,sBAAsB,CAAC;CAC9C;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAsB;IAErC,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAInF,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKrG,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKvG,GAAG,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKtG,kBAAkB,IAAI,IAAI;IAI1B;;;OAGG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACvC,KAAK,EAAE,CAAC,EACR,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,OAAO,EACnD,SAAS,SAAU,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAmBhC;;;OAGG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,KAAK,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE;CAW7F"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Typed event bus for scheduler lifecycle events.
3
+ *
4
+ * Used for test instrumentation — in production, no listeners are attached
5
+ * and events are effectively no-ops. In integration tests, the harness
6
+ * subscribes to events to wait for specific conditions without polling.
7
+ */
8
+ import { EventEmitter } from "events";
9
+ export class SchedulerEventBus {
10
+ emitter = new EventEmitter();
11
+ emit(event, data) {
12
+ this.emitter.emit(event, data);
13
+ }
14
+ on(event, listener) {
15
+ this.emitter.on(event, listener);
16
+ return this;
17
+ }
18
+ once(event, listener) {
19
+ this.emitter.once(event, listener);
20
+ return this;
21
+ }
22
+ off(event, listener) {
23
+ this.emitter.off(event, listener);
24
+ return this;
25
+ }
26
+ removeAllListeners() {
27
+ this.emitter.removeAllListeners();
28
+ }
29
+ /**
30
+ * Wait for an event matching an optional predicate.
31
+ * Rejects after timeoutMs. Used by test harness.
32
+ */
33
+ waitFor(event, predicate, timeoutMs = 120_000) {
34
+ return new Promise((resolve, reject) => {
35
+ const timer = setTimeout(() => {
36
+ this.off(event, handler);
37
+ reject(new Error(`Timed out waiting for "${event}" event after ${timeoutMs}ms`));
38
+ }, timeoutMs);
39
+ const handler = (data) => {
40
+ if (!predicate || predicate(data)) {
41
+ clearTimeout(timer);
42
+ this.off(event, handler);
43
+ resolve(data);
44
+ }
45
+ };
46
+ this.on(event, handler);
47
+ });
48
+ }
49
+ /**
50
+ * Collect all events of a given type into an array.
51
+ * Returns a handle to stop collecting and retrieve results.
52
+ */
53
+ collect(event) {
54
+ const collected = [];
55
+ const handler = (data) => { collected.push(data); };
56
+ this.on(event, handler);
57
+ return {
58
+ stop: () => {
59
+ this.off(event, handler);
60
+ return collected;
61
+ },
62
+ };
63
+ }
64
+ }
65
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/scheduler/events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA4DtC,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAErC,IAAI,CAAoC,KAAQ,EAAE,IAA0B;QAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,EAAE,CAAoC,KAAQ,EAAE,QAA8C;QAC5F,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAoC,KAAQ,EAAE,QAA8C;QAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAoC,KAAQ,EAAE,QAA8C;QAC7F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,OAAO,CACL,KAAQ,EACR,SAAmD,EACnD,SAAS,GAAG,OAAO;QAEnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACzB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,KAAK,iBAAiB,SAAS,IAAI,CAAC,CAAC,CAAC;YACnF,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,MAAM,OAAO,GAAG,CAAC,IAA0B,EAAE,EAAE;gBAC7C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,OAAO,CAAoC,KAAQ;QACjD,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,CAAC,IAA0B,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,GAAG,EAAE;gBACT,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACzB,OAAO,SAAS,CAAC;YACnB,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -4,6 +4,8 @@ import { RunnerPool, type PoolRunner } from "./runner-pool.js";
4
4
  import type { AgentConfig } from "../shared/config.js";
5
5
  import type { WebhookContext } from "../webhooks/types.js";
6
6
  import type { createLogger } from "../shared/logger.js";
7
+ import type { SchedulerEventBus } from "./events.js";
8
+ import type { CallStore } from "../gateway/call-store.js";
7
9
  export declare const DEFAULT_MAX_RERUNS = 10;
8
10
  export declare const DEFAULT_MAX_TRIGGER_DEPTH = 3;
9
11
  export type WorkItem = {
@@ -14,7 +16,13 @@ export type WorkItem = {
14
16
  sourceAgent: string;
15
17
  context: string;
16
18
  depth: number;
19
+ callId?: string;
17
20
  };
21
+ export interface RunCompleteEvent {
22
+ agentName: string;
23
+ result: string;
24
+ triggerType: string;
25
+ }
18
26
  export interface SchedulerContext {
19
27
  runnerPools: Record<string, RunnerPool>;
20
28
  agentConfigs: AgentConfig[];
@@ -25,6 +33,12 @@ export interface SchedulerContext {
25
33
  shuttingDown: boolean;
26
34
  skills?: PromptSkills;
27
35
  useBakedImages: boolean;
36
+ /** Optional hook called after every agent run completes. Used for test instrumentation. */
37
+ onRunComplete?: (event: RunCompleteEvent) => void;
38
+ /** Optional event bus for lifecycle instrumentation (used by integration tests). */
39
+ events?: SchedulerEventBus;
40
+ /** Optional call store for updating al-call lifecycle status. */
41
+ callStore?: CallStore;
28
42
  }
29
43
  export declare function makeScheduledPrompt(agentConfig: AgentConfig, ctx: SchedulerContext): string;
30
44
  export declare function makeWebhookPrompt(agentConfig: AgentConfig, context: WebhookContext, ctx: SchedulerContext): string;
@@ -39,6 +53,7 @@ export declare function executeRun(runner: PoolRunner, prompt: string, triggerIn
39
53
  agent: string;
40
54
  context: string;
41
55
  }>;
56
+ returnValue?: string;
42
57
  }>;
43
58
  export declare function dispatchTriggers(triggers: Array<{
44
59
  agent: string;
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/scheduler/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAuB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IACxC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAID,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAE3F;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAElH;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAEjI;AAED,8DAA8D;AAC9D,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAClC,WAAW,EAAE;IAAE,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GACtD,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAKlF;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GACxD,IAAI,CAgCN;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCtE;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GACjF,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/scheduler/execution.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,24 @@ export function makeTriggeredPrompt(agentConfig, sourceAgent, context, ctx) {
14
14
  }
15
15
  /** Run a single agent and dispatch any resulting triggers. */
16
16
  export async function executeRun(runner, prompt, triggerInfo, agentName, depth, ctx) {
17
+ ctx.events?.emit("run:start", {
18
+ agentName,
19
+ instanceId: runner.instanceId,
20
+ trigger: triggerInfo.source ? `${triggerInfo.type}:${triggerInfo.source}` : triggerInfo.type,
21
+ });
17
22
  const outcome = await runner.run(prompt, triggerInfo);
18
23
  const triggers = outcome.triggers ?? [];
19
24
  if (triggers.length > 0)
20
25
  dispatchTriggers(triggers, agentName, depth, ctx);
21
- return { result: outcome.result, triggers };
26
+ ctx.events?.emit("run:end", {
27
+ agentName,
28
+ instanceId: runner.instanceId,
29
+ result: outcome.result,
30
+ exitCode: outcome.exitCode,
31
+ error: outcome.exitReason,
32
+ });
33
+ ctx.onRunComplete?.({ agentName, result: outcome.result, triggerType: triggerInfo.type });
34
+ return { result: outcome.result, triggers, returnValue: outcome.returnValue };
22
35
  }
23
36
  export function dispatchTriggers(triggers, sourceAgent, depth, ctx) {
24
37
  for (const { agent, context } of triggers) {
@@ -84,8 +97,24 @@ export async function drainQueues(ctx) {
84
97
  return Promise.resolve();
85
98
  ctx.logger.info({ source: work.sourceAgent, target: agentConfig.name, depth: work.depth, ageMs }, "draining queued trigger");
86
99
  const prompt = makeTriggeredPrompt(agentConfig, work.sourceAgent, work.context, ctx);
100
+ if (work.callId)
101
+ ctx.callStore?.setRunning(work.callId);
87
102
  return executeRun(runner, prompt, { type: 'agent', source: work.sourceAgent }, agentConfig.name, work.depth + 1, ctx)
88
- .catch((err) => ctx.logger.error({ err, agent: agentConfig.name }, "queued trigger failed"));
103
+ .then(({ result, returnValue }) => {
104
+ if (work.callId) {
105
+ if (result === "completed" || result === "rerun") {
106
+ ctx.callStore?.complete(work.callId, returnValue);
107
+ }
108
+ else {
109
+ ctx.callStore?.fail(work.callId, "agent run failed");
110
+ }
111
+ }
112
+ })
113
+ .catch((err) => {
114
+ if (work.callId)
115
+ ctx.callStore?.fail(work.callId, err?.message || "unknown error");
116
+ ctx.logger.error({ err, agent: agentConfig.name }, "queued trigger failed");
117
+ });
89
118
  }
90
119
  }));
91
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/scheduler/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/scheduler/execution.ts"],"names":[],"mappings":"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"}