@panorama-ai/gateway 2.29.14 → 2.30.181

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 (320) hide show
  1. package/README.md +167 -10
  2. package/dist/child-process-env.d.ts.map +1 -1
  3. package/dist/child-process-env.js +1 -0
  4. package/dist/child-process-env.js.map +1 -1
  5. package/dist/cli-args.d.ts +11 -0
  6. package/dist/cli-args.d.ts.map +1 -0
  7. package/dist/cli-args.js +72 -0
  8. package/dist/cli-args.js.map +1 -0
  9. package/dist/cli-command-discovery.d.ts +17 -0
  10. package/dist/cli-command-discovery.d.ts.map +1 -0
  11. package/dist/cli-command-discovery.js +229 -0
  12. package/dist/cli-command-discovery.js.map +1 -0
  13. package/dist/cli-env.d.ts +7 -0
  14. package/dist/cli-env.d.ts.map +1 -0
  15. package/dist/cli-env.js +82 -0
  16. package/dist/cli-env.js.map +1 -0
  17. package/dist/cli-output.d.ts +23 -0
  18. package/dist/cli-output.d.ts.map +1 -0
  19. package/dist/cli-output.js +86 -0
  20. package/dist/cli-output.js.map +1 -0
  21. package/dist/cli-provider-commands.d.ts +59 -0
  22. package/dist/cli-provider-commands.d.ts.map +1 -0
  23. package/dist/cli-provider-commands.js +157 -0
  24. package/dist/cli-provider-commands.js.map +1 -0
  25. package/dist/cli-providers/claude.d.ts.map +1 -1
  26. package/dist/cli-providers/claude.js +11 -110
  27. package/dist/cli-providers/claude.js.map +1 -1
  28. package/dist/cli-providers/codex.d.ts.map +1 -1
  29. package/dist/cli-providers/codex.js +13 -53
  30. package/dist/cli-providers/codex.js.map +1 -1
  31. package/dist/cli-providers/gemini.d.ts.map +1 -1
  32. package/dist/cli-providers/gemini.js +18 -88
  33. package/dist/cli-providers/gemini.js.map +1 -1
  34. package/dist/cli-providers/types.d.ts +3 -1
  35. package/dist/cli-providers/types.d.ts.map +1 -1
  36. package/dist/cli-providers/types.js.map +1 -1
  37. package/dist/database.types.d.ts +4209 -759
  38. package/dist/database.types.d.ts.map +1 -1
  39. package/dist/database.types.js +0 -3
  40. package/dist/database.types.js.map +1 -1
  41. package/dist/debug-redaction.d.ts +11 -0
  42. package/dist/debug-redaction.d.ts.map +1 -1
  43. package/dist/debug-redaction.js +33 -4
  44. package/dist/debug-redaction.js.map +1 -1
  45. package/dist/finalize-subagent-run.d.ts +28 -0
  46. package/dist/finalize-subagent-run.d.ts.map +1 -0
  47. package/dist/finalize-subagent-run.js +34 -0
  48. package/dist/finalize-subagent-run.js.map +1 -0
  49. package/dist/gateway-capability-services.d.ts +10 -0
  50. package/dist/gateway-capability-services.d.ts.map +1 -0
  51. package/dist/gateway-capability-services.js +40 -0
  52. package/dist/gateway-capability-services.js.map +1 -0
  53. package/dist/gateway-cli-commands.d.ts +25 -0
  54. package/dist/gateway-cli-commands.d.ts.map +1 -0
  55. package/dist/gateway-cli-commands.js +202 -0
  56. package/dist/gateway-cli-commands.js.map +1 -0
  57. package/dist/gateway-command-runner.d.ts +48 -0
  58. package/dist/gateway-command-runner.d.ts.map +1 -0
  59. package/dist/gateway-command-runner.js +154 -0
  60. package/dist/gateway-command-runner.js.map +1 -0
  61. package/dist/gateway-control-plane.d.ts +44 -0
  62. package/dist/gateway-control-plane.d.ts.map +1 -0
  63. package/dist/gateway-control-plane.js +147 -0
  64. package/dist/gateway-control-plane.js.map +1 -0
  65. package/dist/gateway-daemon.d.ts +41 -0
  66. package/dist/gateway-daemon.d.ts.map +1 -0
  67. package/dist/gateway-daemon.js +69 -0
  68. package/dist/gateway-daemon.js.map +1 -0
  69. package/dist/gateway-doctor.d.ts +45 -0
  70. package/dist/gateway-doctor.d.ts.map +1 -0
  71. package/dist/gateway-doctor.js +81 -0
  72. package/dist/gateway-doctor.js.map +1 -0
  73. package/dist/gateway-execution-support.d.ts +56 -0
  74. package/dist/gateway-execution-support.d.ts.map +1 -0
  75. package/dist/gateway-execution-support.js +135 -0
  76. package/dist/gateway-execution-support.js.map +1 -0
  77. package/dist/gateway-job-controller.d.ts +68 -0
  78. package/dist/gateway-job-controller.d.ts.map +1 -0
  79. package/dist/gateway-job-controller.js +266 -0
  80. package/dist/gateway-job-controller.js.map +1 -0
  81. package/dist/gateway-job-handlers.d.ts +76 -0
  82. package/dist/gateway-job-handlers.d.ts.map +1 -0
  83. package/dist/gateway-job-handlers.js +235 -0
  84. package/dist/gateway-job-handlers.js.map +1 -0
  85. package/dist/gateway-job-processor.d.ts +24 -0
  86. package/dist/gateway-job-processor.d.ts.map +1 -0
  87. package/dist/gateway-job-processor.js +90 -0
  88. package/dist/gateway-job-processor.js.map +1 -0
  89. package/dist/gateway-job-store.d.ts +13 -0
  90. package/dist/gateway-job-store.d.ts.map +1 -0
  91. package/dist/gateway-job-store.js +106 -0
  92. package/dist/gateway-job-store.js.map +1 -0
  93. package/dist/gateway-jobs.d.ts +31 -0
  94. package/dist/gateway-jobs.d.ts.map +1 -0
  95. package/dist/gateway-jobs.js +52 -0
  96. package/dist/gateway-jobs.js.map +1 -0
  97. package/dist/gateway-lifecycle.d.ts +43 -0
  98. package/dist/gateway-lifecycle.d.ts.map +1 -0
  99. package/dist/gateway-lifecycle.js +62 -0
  100. package/dist/gateway-lifecycle.js.map +1 -0
  101. package/dist/gateway-local-runtime.d.ts +68 -0
  102. package/dist/gateway-local-runtime.d.ts.map +1 -0
  103. package/dist/gateway-local-runtime.js +208 -0
  104. package/dist/gateway-local-runtime.js.map +1 -0
  105. package/dist/gateway-model-run.d.ts +48 -0
  106. package/dist/gateway-model-run.d.ts.map +1 -0
  107. package/dist/gateway-model-run.js +205 -0
  108. package/dist/gateway-model-run.js.map +1 -0
  109. package/dist/gateway-operational-status.d.ts +1 -1
  110. package/dist/gateway-operational-status.d.ts.map +1 -1
  111. package/dist/gateway-operational-status.js +7 -14
  112. package/dist/gateway-operational-status.js.map +1 -1
  113. package/dist/gateway-pairing.d.ts +58 -0
  114. package/dist/gateway-pairing.d.ts.map +1 -0
  115. package/dist/gateway-pairing.js +151 -0
  116. package/dist/gateway-pairing.js.map +1 -0
  117. package/dist/gateway-provider-capabilities.d.ts +59 -0
  118. package/dist/gateway-provider-capabilities.d.ts.map +1 -0
  119. package/dist/gateway-provider-capabilities.js +231 -0
  120. package/dist/gateway-provider-capabilities.js.map +1 -0
  121. package/dist/gateway-provider-health.d.ts +19 -0
  122. package/dist/gateway-provider-health.d.ts.map +1 -0
  123. package/dist/gateway-provider-health.js +75 -0
  124. package/dist/gateway-provider-health.js.map +1 -0
  125. package/dist/gateway-provider-runtime.d.ts +72 -0
  126. package/dist/gateway-provider-runtime.d.ts.map +1 -0
  127. package/dist/gateway-provider-runtime.js +169 -0
  128. package/dist/gateway-provider-runtime.js.map +1 -0
  129. package/dist/gateway-restart.d.ts +8 -0
  130. package/dist/gateway-restart.d.ts.map +1 -0
  131. package/dist/gateway-restart.js +129 -0
  132. package/dist/gateway-restart.js.map +1 -0
  133. package/dist/gateway-run-helpers.d.ts +35 -0
  134. package/dist/gateway-run-helpers.d.ts.map +1 -0
  135. package/dist/gateway-run-helpers.js +203 -0
  136. package/dist/gateway-run-helpers.js.map +1 -0
  137. package/dist/gateway-runtime-provider-health.d.ts +31 -0
  138. package/dist/gateway-runtime-provider-health.d.ts.map +1 -0
  139. package/dist/gateway-runtime-provider-health.js +99 -0
  140. package/dist/gateway-runtime-provider-health.js.map +1 -0
  141. package/dist/gateway-runtime-state.d.ts +35 -0
  142. package/dist/gateway-runtime-state.d.ts.map +1 -0
  143. package/dist/gateway-runtime-state.js +18 -0
  144. package/dist/gateway-runtime-state.js.map +1 -0
  145. package/dist/gateway-shell-exec.d.ts +46 -0
  146. package/dist/gateway-shell-exec.d.ts.map +1 -0
  147. package/dist/gateway-shell-exec.js +130 -0
  148. package/dist/gateway-shell-exec.js.map +1 -0
  149. package/dist/gateway-start-command.d.ts +28 -0
  150. package/dist/gateway-start-command.d.ts.map +1 -0
  151. package/dist/gateway-start-command.js +101 -0
  152. package/dist/gateway-start-command.js.map +1 -0
  153. package/dist/gateway-state.d.ts +29 -0
  154. package/dist/gateway-state.d.ts.map +1 -0
  155. package/dist/gateway-state.js +97 -0
  156. package/dist/gateway-state.js.map +1 -0
  157. package/dist/gateway-subagent-run-finalizer.d.ts +27 -0
  158. package/dist/gateway-subagent-run-finalizer.d.ts.map +1 -0
  159. package/dist/gateway-subagent-run-finalizer.js +196 -0
  160. package/dist/gateway-subagent-run-finalizer.js.map +1 -0
  161. package/dist/gateway-subagent-run-job.d.ts +4 -0
  162. package/dist/gateway-subagent-run-job.d.ts.map +1 -0
  163. package/dist/gateway-subagent-run-job.js +430 -0
  164. package/dist/gateway-subagent-run-job.js.map +1 -0
  165. package/dist/gateway-subagent-run-target.d.ts +16 -0
  166. package/dist/gateway-subagent-run-target.d.ts.map +1 -0
  167. package/dist/gateway-subagent-run-target.js +239 -0
  168. package/dist/gateway-subagent-run-target.js.map +1 -0
  169. package/dist/gateway-subagent-run-types.d.ts +110 -0
  170. package/dist/gateway-subagent-run-types.d.ts.map +1 -0
  171. package/dist/gateway-subagent-run-types.js +2 -0
  172. package/dist/gateway-subagent-run-types.js.map +1 -0
  173. package/dist/index.js +11671 -5503
  174. package/dist/index.js.map +7 -1
  175. package/dist/local-runtime/heartbeat-supervisor.d.ts +39 -0
  176. package/dist/local-runtime/heartbeat-supervisor.d.ts.map +1 -0
  177. package/dist/local-runtime/heartbeat-supervisor.js +96 -0
  178. package/dist/local-runtime/heartbeat-supervisor.js.map +1 -0
  179. package/dist/local-runtime/restart-supervisor.d.ts +27 -0
  180. package/dist/local-runtime/restart-supervisor.d.ts.map +1 -0
  181. package/dist/local-runtime/restart-supervisor.js +169 -0
  182. package/dist/local-runtime/restart-supervisor.js.map +1 -0
  183. package/dist/local-runtime/runtime-utils.d.ts +20 -0
  184. package/dist/local-runtime/runtime-utils.d.ts.map +1 -0
  185. package/dist/local-runtime/runtime-utils.js +54 -0
  186. package/dist/local-runtime/runtime-utils.js.map +1 -0
  187. package/dist/local-runtime/shutdown-supervisor.d.ts +32 -0
  188. package/dist/local-runtime/shutdown-supervisor.d.ts.map +1 -0
  189. package/dist/local-runtime/shutdown-supervisor.js +110 -0
  190. package/dist/local-runtime/shutdown-supervisor.js.map +1 -0
  191. package/dist/local-runtime/types.d.ts +26 -0
  192. package/dist/local-runtime/types.d.ts.map +1 -0
  193. package/dist/local-runtime/types.js +2 -0
  194. package/dist/local-runtime/types.js.map +1 -0
  195. package/dist/managed-runtime/config.d.ts +20 -0
  196. package/dist/managed-runtime/config.d.ts.map +1 -0
  197. package/dist/managed-runtime/config.js +80 -0
  198. package/dist/managed-runtime/config.js.map +1 -0
  199. package/dist/managed-runtime/control-client.d.ts +66 -0
  200. package/dist/managed-runtime/control-client.d.ts.map +1 -0
  201. package/dist/managed-runtime/control-client.js +142 -0
  202. package/dist/managed-runtime/control-client.js.map +1 -0
  203. package/dist/managed-runtime/dependencies.d.ts +17 -0
  204. package/dist/managed-runtime/dependencies.d.ts.map +1 -0
  205. package/dist/managed-runtime/dependencies.js +28 -0
  206. package/dist/managed-runtime/dependencies.js.map +1 -0
  207. package/dist/managed-runtime/execution-dispatcher.d.ts +25 -0
  208. package/dist/managed-runtime/execution-dispatcher.d.ts.map +1 -0
  209. package/dist/managed-runtime/execution-dispatcher.js +155 -0
  210. package/dist/managed-runtime/execution-dispatcher.js.map +1 -0
  211. package/dist/managed-runtime/heartbeat.d.ts +7 -0
  212. package/dist/managed-runtime/heartbeat.d.ts.map +1 -0
  213. package/dist/managed-runtime/heartbeat.js +44 -0
  214. package/dist/managed-runtime/heartbeat.js.map +1 -0
  215. package/dist/managed-runtime/host-state.d.ts +15 -0
  216. package/dist/managed-runtime/host-state.d.ts.map +1 -0
  217. package/dist/managed-runtime/host-state.js +50 -0
  218. package/dist/managed-runtime/host-state.js.map +1 -0
  219. package/dist/managed-runtime/realtime.d.ts +25 -0
  220. package/dist/managed-runtime/realtime.d.ts.map +1 -0
  221. package/dist/managed-runtime/realtime.js +189 -0
  222. package/dist/managed-runtime/realtime.js.map +1 -0
  223. package/dist/managed-runtime/runtime-utils.d.ts +8 -0
  224. package/dist/managed-runtime/runtime-utils.d.ts.map +1 -0
  225. package/dist/managed-runtime/runtime-utils.js +39 -0
  226. package/dist/managed-runtime/runtime-utils.js.map +1 -0
  227. package/dist/managed-runtime/shell-execution.d.ts +33 -0
  228. package/dist/managed-runtime/shell-execution.d.ts.map +1 -0
  229. package/dist/managed-runtime/shell-execution.js +186 -0
  230. package/dist/managed-runtime/shell-execution.js.map +1 -0
  231. package/dist/managed-runtime/step-result.d.ts +22 -0
  232. package/dist/managed-runtime/step-result.d.ts.map +1 -0
  233. package/dist/managed-runtime/step-result.js +252 -0
  234. package/dist/managed-runtime/step-result.js.map +1 -0
  235. package/dist/managed-runtime/wake-signal.d.ts +5 -0
  236. package/dist/managed-runtime/wake-signal.d.ts.map +1 -0
  237. package/dist/managed-runtime/wake-signal.js +29 -0
  238. package/dist/managed-runtime/wake-signal.js.map +1 -0
  239. package/dist/managed-runtime.d.ts +8 -0
  240. package/dist/managed-runtime.d.ts.map +1 -0
  241. package/dist/managed-runtime.js +224 -0
  242. package/dist/managed-runtime.js.map +1 -0
  243. package/dist/{subagent-process-control.d.ts → process-control.d.ts} +1 -1
  244. package/dist/process-control.d.ts.map +1 -0
  245. package/dist/{subagent-process-control.js → process-control.js} +1 -1
  246. package/dist/process-control.js.map +1 -0
  247. package/dist/process-output-capture.d.ts +21 -0
  248. package/dist/process-output-capture.d.ts.map +1 -0
  249. package/dist/process-output-capture.js +47 -0
  250. package/dist/process-output-capture.js.map +1 -0
  251. package/dist/provider-runtime-utils.d.ts +24 -0
  252. package/dist/provider-runtime-utils.d.ts.map +1 -0
  253. package/dist/provider-runtime-utils.js +97 -0
  254. package/dist/provider-runtime-utils.js.map +1 -0
  255. package/dist/remote-shell-resource.d.ts +11 -0
  256. package/dist/remote-shell-resource.d.ts.map +1 -1
  257. package/dist/remote-shell-resource.js +66 -12
  258. package/dist/remote-shell-resource.js.map +1 -1
  259. package/dist/stream-json-collector.d.ts +1 -2
  260. package/dist/stream-json-collector.d.ts.map +1 -1
  261. package/dist/stream-json-collector.js +7 -18
  262. package/dist/stream-json-collector.js.map +1 -1
  263. package/dist/subagent-adapters/claude-code.d.ts.map +1 -1
  264. package/dist/subagent-adapters/claude-code.js +1 -5
  265. package/dist/subagent-adapters/claude-code.js.map +1 -1
  266. package/dist/subagent-adapters/codex.d.ts.map +1 -1
  267. package/dist/subagent-adapters/codex.js +5 -22
  268. package/dist/subagent-adapters/codex.js.map +1 -1
  269. package/dist/subagent-adapters/gemini.d.ts.map +1 -1
  270. package/dist/subagent-adapters/gemini.js +9 -56
  271. package/dist/subagent-adapters/gemini.js.map +1 -1
  272. package/dist/subagent-adapters/output-format.d.ts +3 -0
  273. package/dist/subagent-adapters/output-format.d.ts.map +1 -0
  274. package/dist/subagent-adapters/output-format.js +12 -0
  275. package/dist/subagent-adapters/output-format.js.map +1 -0
  276. package/dist/subagent-adapters/types.d.ts +4 -1
  277. package/dist/subagent-adapters/types.d.ts.map +1 -1
  278. package/dist/subagent-adapters/types.js.map +1 -1
  279. package/dist/subagent-cancel-job.d.ts +25 -0
  280. package/dist/subagent-cancel-job.d.ts.map +1 -0
  281. package/dist/subagent-cancel-job.js +295 -0
  282. package/dist/subagent-cancel-job.js.map +1 -0
  283. package/dist/subagent-failure.d.ts +11 -0
  284. package/dist/subagent-failure.d.ts.map +1 -0
  285. package/dist/subagent-failure.js +99 -0
  286. package/dist/subagent-failure.js.map +1 -0
  287. package/dist/subagent-full-control.d.ts.map +1 -1
  288. package/dist/subagent-full-control.js +7 -4
  289. package/dist/subagent-full-control.js.map +1 -1
  290. package/dist/subagent-output-persistence.d.ts +12 -0
  291. package/dist/subagent-output-persistence.d.ts.map +1 -0
  292. package/dist/subagent-output-persistence.js +15 -0
  293. package/dist/subagent-output-persistence.js.map +1 -0
  294. package/dist/subagent-run-events.d.ts +17 -0
  295. package/dist/subagent-run-events.d.ts.map +1 -0
  296. package/dist/subagent-run-events.js +60 -0
  297. package/dist/subagent-run-events.js.map +1 -0
  298. package/dist/subagent-run-execution.d.ts +39 -0
  299. package/dist/subagent-run-execution.d.ts.map +1 -0
  300. package/dist/subagent-run-execution.js +145 -0
  301. package/dist/subagent-run-execution.js.map +1 -0
  302. package/dist/subagent-run-helpers.d.ts +35 -0
  303. package/dist/subagent-run-helpers.d.ts.map +1 -0
  304. package/dist/subagent-run-helpers.js +88 -0
  305. package/dist/subagent-run-helpers.js.map +1 -0
  306. package/dist/subagent-run-job.d.ts +33 -0
  307. package/dist/subagent-run-job.d.ts.map +1 -0
  308. package/dist/subagent-run-job.js +74 -0
  309. package/dist/subagent-run-job.js.map +1 -0
  310. package/dist/subagent-run-store.d.ts +6 -0
  311. package/dist/subagent-run-store.d.ts.map +1 -0
  312. package/dist/subagent-run-store.js +22 -0
  313. package/dist/subagent-run-store.js.map +1 -0
  314. package/dist/subagent-shutdown-cancellation.d.ts +22 -0
  315. package/dist/subagent-shutdown-cancellation.d.ts.map +1 -0
  316. package/dist/subagent-shutdown-cancellation.js +127 -0
  317. package/dist/subagent-shutdown-cancellation.js.map +1 -0
  318. package/package.json +6 -3
  319. package/dist/subagent-process-control.d.ts.map +0 -1
  320. package/dist/subagent-process-control.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-job-handlers.d.ts","sourceRoot":"","sources":["../src/gateway-job-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,235 @@
1
+ import { deriveGatewayMachineControlState, isGatewayServiceReady, } from '@panorama/shared/gateway/capabilities';
2
+ import { execFile } from 'node:child_process';
3
+ import { promisify } from 'node:util';
4
+ import { claimGatewayJob, completeGatewayJob, findGatewayJobIdempotencyConflict, loadGatewayJobStatus, updateGatewayJobDebug, } from './gateway-job-store.js';
5
+ import { processGatewayJob } from './gateway-job-processor.js';
6
+ import { handleGatewayModelRunJob, } from './gateway-model-run.js';
7
+ import { handleGatewayShellExecJob, } from './gateway-shell-exec.js';
8
+ import { handleGatewaySubagentRunJob } from './gateway-subagent-run-job.js';
9
+ import { handleSubagentCancelJob as handleSubagentCancelJobBase } from './subagent-cancel-job.js';
10
+ import { failSubagentRun as failSubagentRunBase } from './subagent-failure.js';
11
+ const execFileAsync = promisify(execFile);
12
+ async function runClaudeVersionDiagnostic(params) {
13
+ const start = Date.now();
14
+ const command = params.resolveClaudeCommand();
15
+ try {
16
+ const { stdout, stderr } = await execFileAsync(command, ['--version'], {
17
+ timeout: params.timeoutMs,
18
+ env: params.buildGatewayChildEnv(),
19
+ });
20
+ const durationMs = Date.now() - start;
21
+ const stdoutText = String(stdout);
22
+ const trimmed = stdoutText.trim();
23
+ return {
24
+ ok: true,
25
+ stdout: stdoutText,
26
+ stderr: String(stderr),
27
+ exitCode: 0,
28
+ durationMs,
29
+ version: trimmed || undefined,
30
+ };
31
+ }
32
+ catch (error) {
33
+ const durationMs = Date.now() - start;
34
+ const err = error;
35
+ return {
36
+ ok: false,
37
+ stdout: err.stdout ? String(err.stdout) : '',
38
+ stderr: err.stderr ? String(err.stderr) : '',
39
+ exitCode: typeof err.code === 'number' ? err.code : null,
40
+ durationMs,
41
+ error: err.message,
42
+ };
43
+ }
44
+ }
45
+ async function validateMachineControlState(params) {
46
+ const installFullControlEnabled = await params.refreshRuntimeInstallFullControl(params.config);
47
+ const gatewayControlState = await params.loadGatewayControlState(params.supabase, params.config);
48
+ if (!gatewayControlState) {
49
+ return {
50
+ ok: false,
51
+ message: 'Gateway control state unavailable',
52
+ };
53
+ }
54
+ if (!params.isHeartbeatFresh(gatewayControlState.last_seen_at)) {
55
+ return {
56
+ ok: false,
57
+ message: 'Gateway is offline or heartbeat is stale',
58
+ };
59
+ }
60
+ const machineControl = deriveGatewayMachineControlState({
61
+ gatewayEnabled: gatewayControlState.full_control_enabled,
62
+ installEnabled: installFullControlEnabled,
63
+ serviceReady: gatewayControlState.capabilities
64
+ ? isGatewayServiceReady(gatewayControlState.capabilities, 'machine_control')
65
+ : false,
66
+ });
67
+ if (!machineControl.effective) {
68
+ return {
69
+ ok: false,
70
+ message: machineControl.reason ?? 'Gateway machine control is unavailable',
71
+ };
72
+ }
73
+ return { ok: true };
74
+ }
75
+ export function createGatewayJobHandlers(params) {
76
+ const claimJob = async (supabase, config, job) => {
77
+ return await claimGatewayJob(supabase, config, job, params.logError);
78
+ };
79
+ const findIdempotencyConflict = async (supabase, job) => {
80
+ return await findGatewayJobIdempotencyConflict(supabase, job, params.logError);
81
+ };
82
+ const completeJob = async (supabase, jobId, status, result, errorMessage) => {
83
+ await completeGatewayJob(supabase, jobId, status, result, errorMessage, params.logError);
84
+ };
85
+ const updateJobDebug = async (supabase, jobId, debug) => {
86
+ await updateGatewayJobDebug(supabase, jobId, debug, params.logError);
87
+ };
88
+ const handleDiagnosticJob = async () => {
89
+ const output = await runClaudeVersionDiagnostic({
90
+ resolveClaudeCommand: params.resolveClaudeCommand,
91
+ buildGatewayChildEnv: params.buildGatewayChildEnv,
92
+ timeoutMs: params.defaultClaudeTimeoutMs,
93
+ });
94
+ const command = params.resolveClaudeCommand();
95
+ if (!output.ok) {
96
+ return {
97
+ ok: false,
98
+ result: {
99
+ command: `${command} --version`,
100
+ stdout: output.stdout,
101
+ stderr: output.stderr,
102
+ exit_code: output.exitCode,
103
+ duration_ms: output.durationMs,
104
+ error: output.error,
105
+ },
106
+ error: output.error || 'Claude CLI check failed',
107
+ };
108
+ }
109
+ return {
110
+ ok: true,
111
+ result: {
112
+ command: `${command} --version`,
113
+ stdout: output.stdout,
114
+ stderr: output.stderr,
115
+ exit_code: output.exitCode,
116
+ duration_ms: output.durationMs,
117
+ version: output.version,
118
+ },
119
+ };
120
+ };
121
+ const handleSubagentCancelJob = async (supabase, config, job) => {
122
+ return await handleSubagentCancelJobBase({
123
+ supabase,
124
+ config,
125
+ job,
126
+ requestSubagentCancel: params.requestSubagentCancel,
127
+ logError: params.logError,
128
+ });
129
+ };
130
+ const handleSubagentRunJob = async (supabase, config, job) => {
131
+ return await handleGatewaySubagentRunJob({
132
+ supabase,
133
+ config,
134
+ job,
135
+ activeSubagentRuns: params.activeSubagentRuns,
136
+ providerCapabilities: params.getProviderCapabilities(),
137
+ claudeSupport: params.getClaudeSupport(),
138
+ defaultTimeoutMs: params.defaultSubagentTimeoutMs,
139
+ cancelKillTimeoutMs: params.subagentCancelKillTimeoutMs,
140
+ refreshRuntimeInstallFullControl: params.refreshRuntimeInstallFullControl,
141
+ loadGatewayControlState: params.loadGatewayControlState,
142
+ isHeartbeatFresh: params.isHeartbeatFresh,
143
+ resolveClaudeCommand: params.resolveClaudeCommand,
144
+ resolveCodexCommand: params.resolveCodexCommand,
145
+ resolveGeminiCommand: params.resolveGeminiCommand,
146
+ getNextRunSequence: params.getNextRunSequence,
147
+ getNextSubagentRunEventSequence: params.getNextSubagentRunEventSequence,
148
+ insertSubagentRunEvent: params.insertSubagentRunEvent,
149
+ resolvePendingCancel: params.resolvePendingCancel,
150
+ consumePendingCancelFromQueue: params.consumePendingCancelFromQueue,
151
+ clearPendingCancel: params.clearPendingCancel,
152
+ resolveSubagentWorkdirRoot: params.resolveSubagentWorkdirRoot,
153
+ runCommand: params.runCommand,
154
+ runStreamingCommand: params.runStreamingCommand,
155
+ updateRuntimeProviderHealth: params.updateRuntimeProviderHealth,
156
+ requestChildTermination: params.requestChildTermination,
157
+ logInfo: params.logInfo,
158
+ logError: params.logError,
159
+ });
160
+ };
161
+ const handleModelRunJob = async (supabase, job) => {
162
+ return await handleGatewayModelRunJob({
163
+ job,
164
+ defaultTimeoutMs: params.defaultModelRunTimeoutMs,
165
+ processKillGraceMs: params.processKillGraceMs,
166
+ activeModelRuns: params.activeModelRuns,
167
+ runCommand: params.runCommand,
168
+ updateJobDebug: (jobId, debug) => updateJobDebug(supabase, jobId, debug),
169
+ updateProviderHealth: (providerId, status, errorMessage) => params.updateRuntimeProviderHealth({
170
+ supabase,
171
+ providerId,
172
+ status,
173
+ error: errorMessage ?? null,
174
+ context: 'model_run',
175
+ jobId: job.id,
176
+ }),
177
+ requestChildTermination: params.requestChildTermination,
178
+ });
179
+ };
180
+ const isGatewayJobCancelled = async (supabase, jobId) => {
181
+ const status = await loadGatewayJobStatus(supabase, jobId, params.logError);
182
+ return status === 'cancelled';
183
+ };
184
+ const handleShellExecJob = async (supabase, config, job) => {
185
+ return await handleGatewayShellExecJob({
186
+ supabase,
187
+ config,
188
+ job,
189
+ defaultTimeoutMs: params.defaultRemoteShellExecTimeoutMs,
190
+ activeShellExecRuns: params.activeShellExecRuns,
191
+ runCommand: params.runCommand,
192
+ isJobCancelled: (jobId) => isGatewayJobCancelled(supabase, jobId),
193
+ validateMachineControlState: () => validateMachineControlState({
194
+ supabase,
195
+ config,
196
+ refreshRuntimeInstallFullControl: params.refreshRuntimeInstallFullControl,
197
+ loadGatewayControlState: params.loadGatewayControlState,
198
+ isHeartbeatFresh: params.isHeartbeatFresh,
199
+ }),
200
+ processKillGraceMs: params.processKillGraceMs,
201
+ requestChildTermination: params.requestChildTermination,
202
+ logError: params.logError,
203
+ });
204
+ };
205
+ const failSubagentRun = async (supabase, job, errorMessage) => {
206
+ await failSubagentRunBase({
207
+ supabase,
208
+ job,
209
+ errorMessage,
210
+ logError: params.logError,
211
+ });
212
+ };
213
+ const processJob = async (supabase, config, job) => {
214
+ await processGatewayJob(job, {
215
+ claimJob: (nextJob) => claimJob(supabase, config, nextJob),
216
+ findIdempotencyConflict: (claimedJob) => findIdempotencyConflict(supabase, claimedJob),
217
+ completeJob: (jobId, status, result, errorMessage) => completeJob(supabase, jobId, status, result, errorMessage),
218
+ failSubagentRun: (claimedJob, errorMessage) => failSubagentRun(supabase, claimedJob, errorMessage),
219
+ handleDiagnosticJob,
220
+ handleSubagentRunJob: (claimedJob) => handleSubagentRunJob(supabase, config, claimedJob),
221
+ handleModelRunJob: (claimedJob) => handleModelRunJob(supabase, claimedJob),
222
+ handleSubagentCancelJob: (claimedJob) => handleSubagentCancelJob(supabase, config, claimedJob),
223
+ handleShellExecJob: (claimedJob) => handleShellExecJob(supabase, config, claimedJob),
224
+ logInfo: params.logInfo,
225
+ });
226
+ };
227
+ return {
228
+ claimJob,
229
+ processJob,
230
+ handleSubagentCancelJob,
231
+ completeJob,
232
+ failSubagentRun,
233
+ };
234
+ }
235
+ //# sourceMappingURL=gateway-job-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-job-handlers.js","sourceRoot":"","sources":["../src/gateway-job-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type GatewayJobRow, type GatewayJobStatus } from './gateway-jobs.js';
2
+ export interface GatewayJobHandlerResult {
3
+ ok: boolean;
4
+ result: Record<string, unknown>;
5
+ error?: string;
6
+ }
7
+ export interface GatewaySubagentRunHandlerResult extends GatewayJobHandlerResult {
8
+ jobStatus?: GatewayJobStatus;
9
+ skipSubagentFailure?: boolean;
10
+ }
11
+ export interface GatewayJobProcessorDependencies {
12
+ claimJob: (job: GatewayJobRow) => Promise<GatewayJobRow | null>;
13
+ findIdempotencyConflict: (job: GatewayJobRow) => Promise<GatewayJobRow | null>;
14
+ completeJob: (jobId: string, status: GatewayJobStatus, result: Record<string, unknown> | null, errorMessage?: string) => Promise<void>;
15
+ failSubagentRun: (job: GatewayJobRow, errorMessage: string) => Promise<void>;
16
+ handleDiagnosticJob: () => Promise<GatewayJobHandlerResult>;
17
+ handleSubagentRunJob: (job: GatewayJobRow) => Promise<GatewaySubagentRunHandlerResult>;
18
+ handleModelRunJob: (job: GatewayJobRow) => Promise<GatewayJobHandlerResult>;
19
+ handleSubagentCancelJob: (job: GatewayJobRow) => Promise<GatewayJobHandlerResult>;
20
+ handleShellExecJob: (job: GatewayJobRow) => Promise<GatewayJobHandlerResult>;
21
+ logInfo: (message: string, data?: Record<string, unknown>) => void;
22
+ }
23
+ export declare function processGatewayJob(job: GatewayJobRow, dependencies: GatewayJobProcessorDependencies): Promise<void>;
24
+ //# sourceMappingURL=gateway-job-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-job-processor.d.ts","sourceRoot":"","sources":["../src/gateway-job-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC9E,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAC/D,uBAAuB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IAC9E,WAAW,EAAE,CACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,eAAe,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,mBAAmB,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC3D,oBAAoB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,+BAA+B,CAAC,CAAA;IACtF,iBAAiB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC3E,uBAAuB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACjF,kBAAkB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC5E,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACnE;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,+BAA+B,GAC5C,OAAO,CAAC,IAAI,CAAC,CAyGf"}
@@ -0,0 +1,90 @@
1
+ import { describeGatewayJob, } from './gateway-jobs.js';
2
+ export async function processGatewayJob(job, dependencies) {
3
+ const claimed = await dependencies.claimJob(job);
4
+ if (!claimed) {
5
+ return;
6
+ }
7
+ const idempotencyConflict = await dependencies.findIdempotencyConflict(claimed);
8
+ if (idempotencyConflict) {
9
+ const conflictMessage = 'Duplicate gateway job idempotency key; skipping execution';
10
+ dependencies.logInfo('Skipping duplicate gateway job', {
11
+ jobId: claimed.id,
12
+ conflict_job_id: idempotencyConflict.id,
13
+ idempotency_key: claimed.idempotency_key ?? null,
14
+ attempt: claimed.attempt ?? 1,
15
+ });
16
+ await dependencies.completeJob(claimed.id, 'cancelled', {
17
+ message: conflictMessage,
18
+ idempotency_key: claimed.idempotency_key,
19
+ attempt: claimed.attempt,
20
+ }, conflictMessage);
21
+ return;
22
+ }
23
+ const jobDetails = describeGatewayJob(claimed);
24
+ dependencies.logInfo('Processing gateway job', {
25
+ jobId: claimed.id,
26
+ jobType: claimed.job_type,
27
+ jobKind: jobDetails.job_kind,
28
+ provider: jobDetails.provider ?? undefined,
29
+ model: jobDetails.model ?? undefined,
30
+ subagentType: jobDetails.subagent_type ?? undefined,
31
+ });
32
+ if (claimed.job_type === 'diagnostic') {
33
+ const diagnostic = await dependencies.handleDiagnosticJob();
34
+ if (diagnostic.ok) {
35
+ await dependencies.completeJob(claimed.id, 'completed', diagnostic.result);
36
+ }
37
+ else {
38
+ await dependencies.completeJob(claimed.id, 'failed', diagnostic.result, diagnostic.error);
39
+ }
40
+ return;
41
+ }
42
+ if (claimed.job_type === 'subagent_run') {
43
+ const result = await dependencies.handleSubagentRunJob(claimed);
44
+ if (result.ok) {
45
+ await dependencies.completeJob(claimed.id, 'completed', result.result);
46
+ }
47
+ else {
48
+ await dependencies.completeJob(claimed.id, result.jobStatus ?? 'failed', result.result, result.error);
49
+ if (!result.skipSubagentFailure) {
50
+ await dependencies.failSubagentRun(claimed, result.error ?? 'Subagent run failed');
51
+ }
52
+ }
53
+ return;
54
+ }
55
+ if (claimed.job_type === 'model_run') {
56
+ const result = await dependencies.handleModelRunJob(claimed);
57
+ if (result.ok) {
58
+ await dependencies.completeJob(claimed.id, 'completed', result.result);
59
+ }
60
+ else {
61
+ await dependencies.completeJob(claimed.id, 'failed', result.result, result.error);
62
+ }
63
+ return;
64
+ }
65
+ if (claimed.job_type === 'subagent_cancel') {
66
+ const result = await dependencies.handleSubagentCancelJob(claimed);
67
+ if (result.ok) {
68
+ await dependencies.completeJob(claimed.id, 'completed', result.result);
69
+ }
70
+ else {
71
+ await dependencies.completeJob(claimed.id, 'failed', result.result, result.error);
72
+ }
73
+ return;
74
+ }
75
+ if (claimed.job_type === 'shell_exec') {
76
+ const result = await dependencies.handleShellExecJob(claimed);
77
+ if (result.ok) {
78
+ await dependencies.completeJob(claimed.id, 'completed', result.result);
79
+ }
80
+ else {
81
+ await dependencies.completeJob(claimed.id, 'failed', result.result, result.error);
82
+ }
83
+ return;
84
+ }
85
+ await dependencies.completeJob(claimed.id, 'failed', {
86
+ message: 'Unsupported job type',
87
+ job_type: claimed.job_type,
88
+ }, `Unsupported job type: ${claimed.job_type}`);
89
+ }
90
+ //# sourceMappingURL=gateway-job-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-job-processor.js","sourceRoot":"","sources":["../src/gateway-job-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SupabaseClient } from '@supabase/supabase-js';
2
+ import type { Database } from './database.types.js';
3
+ import type { GatewayConfig } from './gateway-state.js';
4
+ import { type GatewayJobRow, type GatewayJobStatus } from './gateway-jobs.js';
5
+ export type GatewayJobStoreClient = SupabaseClient<Database>;
6
+ export type GatewayJobStoreLogger = (message: string, data?: Record<string, unknown>) => void;
7
+ export declare function coerceGatewayJobStatus(value: unknown): GatewayJobStatus | null;
8
+ export declare function claimGatewayJob(supabase: GatewayJobStoreClient, config: GatewayConfig, job: GatewayJobRow, logError?: GatewayJobStoreLogger): Promise<GatewayJobRow | null>;
9
+ export declare function findGatewayJobIdempotencyConflict(supabase: GatewayJobStoreClient, job: GatewayJobRow, logError?: GatewayJobStoreLogger): Promise<GatewayJobRow | null>;
10
+ export declare function completeGatewayJob(supabase: GatewayJobStoreClient, jobId: string, status: GatewayJobStatus, result: Record<string, unknown> | null, errorMessage?: string, logError?: GatewayJobStoreLogger): Promise<void>;
11
+ export declare function updateGatewayJobDebug(supabase: GatewayJobStoreClient, jobId: string, debug: Record<string, unknown>, logError?: GatewayJobStoreLogger): Promise<void>;
12
+ export declare function loadGatewayJobStatus(supabase: GatewayJobStoreClient, jobId: string, logError?: GatewayJobStoreLogger): Promise<GatewayJobStatus | null>;
13
+ //# sourceMappingURL=gateway-job-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-job-store.d.ts","sourceRoot":"","sources":["../src/gateway-job-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;AAC5D,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;AAI7F,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAY9E;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,aAAa,EAClB,QAAQ,GAAE,qBAAkC,GAC3C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA6B/B;AAED,wBAAsB,iCAAiC,CACrD,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,EAAE,aAAa,EAClB,QAAQ,GAAE,qBAAkC,GAC3C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAqB/B;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,GAAE,qBAAkC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,GAAE,qBAAkC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,qBAAkC,GAC3C,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAoBlC"}
@@ -0,0 +1,106 @@
1
+ import { sanitizeGatewayDebugPayload } from './debug-redaction.js';
2
+ import { asJson } from './gateway-run-helpers.js';
3
+ import { isJobTargeted, } from './gateway-jobs.js';
4
+ const noopLogger = () => { };
5
+ export function coerceGatewayJobStatus(value) {
6
+ if (value === 'queued' ||
7
+ value === 'running' ||
8
+ value === 'completed' ||
9
+ value === 'failed' ||
10
+ value === 'cancelled') {
11
+ return value;
12
+ }
13
+ return null;
14
+ }
15
+ export async function claimGatewayJob(supabase, config, job, logError = noopLogger) {
16
+ if (!isJobTargeted(job, config.gatewayId)) {
17
+ return null;
18
+ }
19
+ const { data, error } = await supabase
20
+ .from('gateway_jobs')
21
+ .update({
22
+ status: 'running',
23
+ gateway_id: config.gatewayId,
24
+ started_at: new Date().toISOString(),
25
+ })
26
+ .eq('id', job.id)
27
+ .eq('team_id', config.teamId)
28
+ .eq('status', 'queued')
29
+ .eq('gateway_id', config.gatewayId)
30
+ .select('*')
31
+ .maybeSingle();
32
+ if (error) {
33
+ logError('Failed to claim gateway job', { error: error.message, jobId: job.id });
34
+ return null;
35
+ }
36
+ if (!data) {
37
+ return null;
38
+ }
39
+ return data;
40
+ }
41
+ export async function findGatewayJobIdempotencyConflict(supabase, job, logError = noopLogger) {
42
+ if (!job.idempotency_key)
43
+ return null;
44
+ const attempt = typeof job.attempt === 'number' && Number.isFinite(job.attempt) ? job.attempt : 1;
45
+ const { data, error } = await supabase
46
+ .from('gateway_jobs')
47
+ .select('id, status, result, error')
48
+ .eq('team_id', job.team_id)
49
+ .eq('idempotency_key', job.idempotency_key)
50
+ .eq('attempt', attempt)
51
+ .in('status', ['running', 'completed'])
52
+ .neq('id', job.id)
53
+ .order('created_at', { ascending: true })
54
+ .limit(1)
55
+ .maybeSingle();
56
+ if (error) {
57
+ logError('Failed to check gateway job idempotency', { error: error.message, jobId: job.id });
58
+ return null;
59
+ }
60
+ return data ? data : null;
61
+ }
62
+ export async function completeGatewayJob(supabase, jobId, status, result, errorMessage, logError = noopLogger) {
63
+ const updates = {
64
+ status,
65
+ result: result ? asJson(result) : null,
66
+ error: errorMessage || null,
67
+ completed_at: new Date().toISOString(),
68
+ };
69
+ const { error } = await supabase
70
+ .from('gateway_jobs')
71
+ .update(updates)
72
+ .eq('id', jobId)
73
+ .eq('status', 'running');
74
+ if (error) {
75
+ logError('Failed to update gateway job result', { error: error.message, jobId });
76
+ }
77
+ }
78
+ export async function updateGatewayJobDebug(supabase, jobId, debug, logError = noopLogger) {
79
+ const sanitizedDebug = sanitizeGatewayDebugPayload(debug);
80
+ const { error } = await supabase
81
+ .from('gateway_jobs')
82
+ .update({ debug: asJson(sanitizedDebug) })
83
+ .eq('id', jobId);
84
+ if (error) {
85
+ logError('Failed to update gateway job debug info', { error: error.message, jobId });
86
+ }
87
+ }
88
+ export async function loadGatewayJobStatus(supabase, jobId, logError = noopLogger) {
89
+ const { data, error } = await supabase
90
+ .from('gateway_jobs')
91
+ .select('status')
92
+ .eq('id', jobId)
93
+ .maybeSingle();
94
+ if (error) {
95
+ logError('Failed to fetch gateway job status', {
96
+ jobId,
97
+ error: error.message,
98
+ });
99
+ return null;
100
+ }
101
+ if (!data || typeof data.status !== 'string') {
102
+ return null;
103
+ }
104
+ return coerceGatewayJobStatus(data.status);
105
+ }
106
+ //# sourceMappingURL=gateway-job-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-job-store.js","sourceRoot":"","sources":["../src/gateway-job-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type GatewayJobStatus = 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
2
+ export interface GatewayJobRow {
3
+ id: string;
4
+ team_id: string;
5
+ gateway_id: string | null;
6
+ status: GatewayJobStatus;
7
+ job_type: string;
8
+ payload: Record<string, unknown>;
9
+ result: Record<string, unknown> | null;
10
+ error: string | null;
11
+ idempotency_key?: string | null;
12
+ attempt?: number | null;
13
+ retry_of_job_id?: string | null;
14
+ created_at: string;
15
+ updated_at: string;
16
+ completed_at: string | null;
17
+ }
18
+ export type GatewayJobDescriptionInput = {
19
+ job_type: string;
20
+ payload?: Record<string, unknown> | null;
21
+ };
22
+ export declare function inferProviderFromSubagentType(subagentType: string | null | undefined): string | null;
23
+ export declare function describeGatewayJob(job: GatewayJobDescriptionInput): {
24
+ job_kind: string;
25
+ provider?: string | null;
26
+ model?: string | null;
27
+ subagent_type?: string | null;
28
+ };
29
+ export declare function isJobTargeted(job: GatewayJobRow, gatewayId: string): boolean;
30
+ export declare function resolveJobSubagentId(job: GatewayJobRow): string | null;
31
+ //# sourceMappingURL=gateway-jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-jobs.d.ts","sourceRoot":"","sources":["../src/gateway-jobs.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE1F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,gBAAgB,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACzC,CAAA;AAED,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,GAAG,IAAI,CAOf;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,0BAA0B,GAAG;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CA6BA;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAQtE"}
@@ -0,0 +1,52 @@
1
+ import { inferGatewayProviderFromModel } from './cli-providers/registry.js';
2
+ export function inferProviderFromSubagentType(subagentType) {
3
+ if (!subagentType)
4
+ return null;
5
+ const lowered = subagentType.toLowerCase();
6
+ if (lowered.includes('claude'))
7
+ return 'claude_code';
8
+ if (lowered.includes('codex'))
9
+ return 'codex';
10
+ if (lowered.includes('gemini'))
11
+ return 'gemini';
12
+ return null;
13
+ }
14
+ export function describeGatewayJob(job) {
15
+ if (job.job_type === 'model_run') {
16
+ const payload = job.payload ?? {};
17
+ const model = typeof payload.model === 'string' ? payload.model : null;
18
+ const provider = typeof payload.provider === 'string'
19
+ ? payload.provider
20
+ : model
21
+ ? inferGatewayProviderFromModel(model)
22
+ : null;
23
+ return { job_kind: 'cycle', provider, model };
24
+ }
25
+ if (job.job_type === 'subagent_run') {
26
+ const payload = job.payload ?? {};
27
+ const subagentType = typeof payload.subagent_type === 'string' ? payload.subagent_type : null;
28
+ const provider = inferProviderFromSubagentType(subagentType);
29
+ return { job_kind: 'subagent', provider, subagent_type: subagentType };
30
+ }
31
+ if (job.job_type === 'subagent_cancel') {
32
+ return { job_kind: 'subagent_cancel' };
33
+ }
34
+ if (job.job_type === 'shell_exec') {
35
+ return { job_kind: 'shell_exec' };
36
+ }
37
+ return { job_kind: job.job_type };
38
+ }
39
+ export function isJobTargeted(job, gatewayId) {
40
+ return job.gateway_id === gatewayId;
41
+ }
42
+ export function resolveJobSubagentId(job) {
43
+ if (job.job_type !== 'subagent_run')
44
+ return null;
45
+ const payload = job.payload ?? {};
46
+ return typeof payload.subagent_id === 'string'
47
+ ? payload.subagent_id
48
+ : typeof payload.subagentId === 'string'
49
+ ? payload.subagentId
50
+ : null;
51
+ }
52
+ //# sourceMappingURL=gateway-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-jobs.js","sourceRoot":"","sources":["../src/gateway-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AA0B3E,MAAM,UAAU,6BAA6B,CAC3C,YAAuC;IAEvC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAA;IAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,aAAa,CAAA;IACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC/C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAA+B;IAMhE,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACtE,MAAM,QAAQ,GACZ,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAClC,CAAC,CAAC,OAAO,CAAC,QAAQ;YAClB,CAAC,CAAC,KAAK;gBACL,CAAC,CAAC,6BAA6B,CAAC,KAAK,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAA;QACZ,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IAC/C,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;QACjC,MAAM,YAAY,GAAG,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7F,MAAM,QAAQ,GAAG,6BAA6B,CAAC,YAAY,CAAC,CAAA;QAC5D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA;IACxE,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QACvC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IACxC,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;IACnC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAkB,EAAE,SAAiB;IACjE,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAkB;IACrD,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc;QAAE,OAAO,IAAI,CAAA;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;IACjC,OAAO,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ;QAC5C,CAAC,CAAC,OAAO,CAAC,WAAW;QACrB,CAAC,CAAC,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YACtC,CAAC,CAAC,OAAO,CAAC,UAAU;YACpB,CAAC,CAAC,IAAI,CAAA;AACZ,CAAC"}