@getpaseo/server 0.1.59 → 0.1.61

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 (274) hide show
  1. package/dist/scripts/dev-runner.js +26 -7
  2. package/dist/scripts/dev-runner.js.map +1 -1
  3. package/dist/server/client/daemon-client-runtime-metrics.d.ts +39 -0
  4. package/dist/server/client/daemon-client-runtime-metrics.d.ts.map +1 -0
  5. package/dist/server/client/daemon-client-runtime-metrics.js +173 -0
  6. package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -0
  7. package/dist/server/client/daemon-client.d.ts +58 -9
  8. package/dist/server/client/daemon-client.d.ts.map +1 -1
  9. package/dist/server/client/daemon-client.js +151 -10
  10. package/dist/server/client/daemon-client.js.map +1 -1
  11. package/dist/server/server/agent/agent-manager.d.ts +55 -48
  12. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  13. package/dist/server/server/agent/agent-manager.js +541 -331
  14. package/dist/server/server/agent/agent-manager.js.map +1 -1
  15. package/dist/server/server/agent/agent-metadata-generator.d.ts +3 -2
  16. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  17. package/dist/server/server/agent/agent-metadata-generator.js +31 -16
  18. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  19. package/dist/server/server/agent/agent-projections.d.ts +2 -1
  20. package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
  21. package/dist/server/server/agent/agent-projections.js +29 -1
  22. package/dist/server/server/agent/agent-projections.js.map +1 -1
  23. package/dist/server/server/agent/agent-sdk-types.d.ts +9 -5
  24. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  26. package/dist/server/server/agent/agent-storage.d.ts +76 -69
  27. package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
  28. package/dist/server/server/agent/agent-storage.js +13 -6
  29. package/dist/server/server/agent/agent-storage.js.map +1 -1
  30. package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
  31. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -0
  32. package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
  33. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -0
  34. package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
  35. package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -0
  36. package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
  37. package/dist/server/server/agent/agent-timeline-store-types.js.map +1 -0
  38. package/dist/server/server/agent/agent-timeline-store.d.ts +32 -0
  39. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -0
  40. package/dist/server/server/agent/agent-timeline-store.js +245 -0
  41. package/dist/server/server/agent/agent-timeline-store.js.map +1 -0
  42. package/dist/server/server/agent/mcp-server.d.ts +12 -1
  43. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  44. package/dist/server/server/agent/mcp-server.js +276 -65
  45. package/dist/server/server/agent/mcp-server.js.map +1 -1
  46. package/dist/server/server/agent/mcp-shared.d.ts +196 -152
  47. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  48. package/dist/server/server/agent/mcp-shared.js +40 -42
  49. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  50. package/dist/server/server/agent/model-resolver.d.ts.map +1 -1
  51. package/dist/server/server/agent/model-resolver.js +3 -1
  52. package/dist/server/server/agent/model-resolver.js.map +1 -1
  53. package/dist/server/server/agent/prompt-attachments.d.ts +6 -0
  54. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -0
  55. package/dist/server/server/agent/prompt-attachments.js +31 -0
  56. package/dist/server/server/agent/prompt-attachments.js.map +1 -0
  57. package/dist/server/server/agent/provider-launch-config.d.ts +78 -8
  58. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  59. package/dist/server/server/agent/provider-launch-config.js +35 -0
  60. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  61. package/dist/server/server/agent/provider-manifest.d.ts +1 -0
  62. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  63. package/dist/server/server/agent/provider-manifest.js +22 -1
  64. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  65. package/dist/server/server/agent/provider-registry.d.ts +5 -2
  66. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  67. package/dist/server/server/agent/provider-registry.js +61 -17
  68. package/dist/server/server/agent/provider-registry.js.map +1 -1
  69. package/dist/server/server/agent/provider-snapshot-manager.d.ts +17 -5
  70. package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
  71. package/dist/server/server/agent/provider-snapshot-manager.js +150 -61
  72. package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
  73. package/dist/server/server/agent/providers/acp-agent.d.ts +8 -4
  74. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  75. package/dist/server/server/agent/providers/acp-agent.js +73 -8
  76. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  77. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +2 -2
  78. package/dist/server/server/agent/providers/claude-agent.d.ts +1 -1
  79. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  80. package/dist/server/server/agent/providers/claude-agent.js +8 -7
  81. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  82. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +37 -4
  83. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  84. package/dist/server/server/agent/providers/codex-app-server-agent.js +61 -31
  85. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  86. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/copilot-acp-agent.js +3 -2
  88. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
  89. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +64 -0
  90. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -0
  91. package/dist/server/server/agent/providers/mock-load-test-agent.js +585 -0
  92. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -0
  93. package/dist/server/server/agent/providers/opencode-agent.d.ts +19 -4
  94. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  95. package/dist/server/server/agent/providers/opencode-agent.js +227 -118
  96. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  97. package/dist/server/server/agent/providers/pi-direct-agent.d.ts +69 -0
  98. package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -0
  99. package/dist/server/server/agent/providers/pi-direct-agent.js +1171 -0
  100. package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -0
  101. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -4
  102. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  103. package/dist/server/server/agent-attention-policy.d.ts +13 -13
  104. package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
  105. package/dist/server/server/agent-attention-policy.js +20 -36
  106. package/dist/server/server/agent-attention-policy.js.map +1 -1
  107. package/dist/server/server/bootstrap.d.ts +6 -0
  108. package/dist/server/server/bootstrap.d.ts.map +1 -1
  109. package/dist/server/server/bootstrap.js +113 -11
  110. package/dist/server/server/bootstrap.js.map +1 -1
  111. package/dist/server/server/chat/chat-rpc-schemas.d.ts +44 -44
  112. package/dist/server/server/chat/chat-types.d.ts +6 -6
  113. package/dist/server/server/checkout-diff-manager.d.ts +0 -1
  114. package/dist/server/server/checkout-diff-manager.d.ts.map +1 -1
  115. package/dist/server/server/checkout-diff-manager.js +6 -4
  116. package/dist/server/server/checkout-diff-manager.js.map +1 -1
  117. package/dist/server/server/config.d.ts.map +1 -1
  118. package/dist/server/server/config.js +1 -0
  119. package/dist/server/server/config.js.map +1 -1
  120. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  121. package/dist/server/server/file-explorer/service.js +2 -1
  122. package/dist/server/server/file-explorer/service.js.map +1 -1
  123. package/dist/server/server/loop/rpc-schemas.d.ts +392 -392
  124. package/dist/server/server/loop-service.d.ts +52 -52
  125. package/dist/server/server/paseo-worktree-archive-service.d.ts +41 -0
  126. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -0
  127. package/dist/server/server/paseo-worktree-archive-service.js +137 -0
  128. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -0
  129. package/dist/server/server/paseo-worktree-service.d.ts +24 -0
  130. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -0
  131. package/dist/server/server/paseo-worktree-service.js +94 -0
  132. package/dist/server/server/paseo-worktree-service.js.map +1 -0
  133. package/dist/server/server/path-utils.d.ts +1 -0
  134. package/dist/server/server/path-utils.d.ts.map +1 -1
  135. package/dist/server/server/path-utils.js +9 -0
  136. package/dist/server/server/path-utils.js.map +1 -1
  137. package/dist/server/server/persisted-config.d.ts +195 -67
  138. package/dist/server/server/persisted-config.d.ts.map +1 -1
  139. package/dist/server/server/persistence-hooks.d.ts.map +1 -1
  140. package/dist/server/server/persistence-hooks.js +3 -0
  141. package/dist/server/server/persistence-hooks.js.map +1 -1
  142. package/dist/server/server/resolve-worktree-creation-intent.d.ts +30 -0
  143. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -0
  144. package/dist/server/server/resolve-worktree-creation-intent.js +163 -0
  145. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -0
  146. package/dist/server/server/schedule/rpc-schemas.d.ts +192 -192
  147. package/dist/server/server/schedule/service.d.ts +1 -1
  148. package/dist/server/server/schedule/service.d.ts.map +1 -1
  149. package/dist/server/server/schedule/types.d.ts +44 -44
  150. package/dist/server/server/script-health-monitor.d.ts +39 -0
  151. package/dist/server/server/script-health-monitor.d.ts.map +1 -0
  152. package/dist/server/server/script-health-monitor.js +158 -0
  153. package/dist/server/server/script-health-monitor.js.map +1 -0
  154. package/dist/server/server/script-proxy.d.ts +40 -0
  155. package/dist/server/server/script-proxy.d.ts.map +1 -0
  156. package/dist/server/server/script-proxy.js +245 -0
  157. package/dist/server/server/script-proxy.js.map +1 -0
  158. package/dist/server/server/script-route-branch-handler.d.ts +10 -0
  159. package/dist/server/server/script-route-branch-handler.d.ts.map +1 -0
  160. package/dist/server/server/script-route-branch-handler.js +45 -0
  161. package/dist/server/server/script-route-branch-handler.js.map +1 -0
  162. package/dist/server/server/script-status-projection.d.ts +29 -0
  163. package/dist/server/server/script-status-projection.d.ts.map +1 -0
  164. package/dist/server/server/script-status-projection.js +133 -0
  165. package/dist/server/server/script-status-projection.js.map +1 -0
  166. package/dist/server/server/session.d.ts +77 -13
  167. package/dist/server/server/session.d.ts.map +1 -1
  168. package/dist/server/server/session.js +1290 -548
  169. package/dist/server/server/session.js.map +1 -1
  170. package/dist/server/server/websocket-server.d.ts +27 -3
  171. package/dist/server/server/websocket-server.d.ts.map +1 -1
  172. package/dist/server/server/websocket-server.js +112 -29
  173. package/dist/server/server/websocket-server.js.map +1 -1
  174. package/dist/server/server/workspace-archive-service.d.ts +8 -0
  175. package/dist/server/server/workspace-archive-service.d.ts.map +1 -0
  176. package/dist/server/server/workspace-archive-service.js +17 -0
  177. package/dist/server/server/workspace-archive-service.js.map +1 -0
  178. package/dist/server/server/workspace-git-metadata.d.ts +24 -0
  179. package/dist/server/server/workspace-git-metadata.d.ts.map +1 -0
  180. package/dist/server/server/workspace-git-metadata.js +78 -0
  181. package/dist/server/server/workspace-git-metadata.js.map +1 -0
  182. package/dist/server/server/workspace-git-service.d.ts +104 -5
  183. package/dist/server/server/workspace-git-service.d.ts.map +1 -1
  184. package/dist/server/server/workspace-git-service.js +442 -56
  185. package/dist/server/server/workspace-git-service.js.map +1 -1
  186. package/dist/server/server/workspace-reconciliation-service.d.ts +54 -0
  187. package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -0
  188. package/dist/server/server/workspace-reconciliation-service.js +176 -0
  189. package/dist/server/server/workspace-reconciliation-service.js.map +1 -0
  190. package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -1
  191. package/dist/server/server/workspace-registry-bootstrap.js +4 -3
  192. package/dist/server/server/workspace-registry-bootstrap.js.map +1 -1
  193. package/dist/server/server/workspace-registry.d.ts +8 -8
  194. package/dist/server/server/workspace-registry.test-helpers.d.ts +37 -0
  195. package/dist/server/server/workspace-registry.test-helpers.d.ts.map +1 -0
  196. package/dist/server/server/workspace-registry.test-helpers.js +121 -0
  197. package/dist/server/server/workspace-registry.test-helpers.js.map +1 -0
  198. package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
  199. package/dist/server/server/workspace-script-runtime-store.d.ts.map +1 -0
  200. package/dist/server/server/workspace-script-runtime-store.js +78 -0
  201. package/dist/server/server/workspace-script-runtime-store.js.map +1 -0
  202. package/dist/server/server/workspace-service-env.d.ts +17 -0
  203. package/dist/server/server/workspace-service-env.d.ts.map +1 -0
  204. package/dist/server/server/workspace-service-env.js +80 -0
  205. package/dist/server/server/workspace-service-env.js.map +1 -0
  206. package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
  207. package/dist/server/server/workspace-service-port-registry.d.ts.map +1 -0
  208. package/dist/server/server/workspace-service-port-registry.js +59 -0
  209. package/dist/server/server/workspace-service-port-registry.js.map +1 -0
  210. package/dist/server/server/worktree-bootstrap.d.ts +55 -10
  211. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  212. package/dist/server/server/worktree-bootstrap.js +290 -112
  213. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  214. package/dist/server/server/worktree-core.d.ts +25 -0
  215. package/dist/server/server/worktree-core.d.ts.map +1 -0
  216. package/dist/server/server/worktree-core.js +75 -0
  217. package/dist/server/server/worktree-core.js.map +1 -0
  218. package/dist/server/server/worktree-errors.d.ts +12 -0
  219. package/dist/server/server/worktree-errors.d.ts.map +1 -0
  220. package/dist/server/server/worktree-errors.js +31 -0
  221. package/dist/server/server/worktree-errors.js.map +1 -0
  222. package/dist/server/server/worktree-session.d.ts +56 -70
  223. package/dist/server/server/worktree-session.d.ts.map +1 -1
  224. package/dist/server/server/worktree-session.js +176 -251
  225. package/dist/server/server/worktree-session.js.map +1 -1
  226. package/dist/server/services/github-service.d.ts +225 -0
  227. package/dist/server/services/github-service.d.ts.map +1 -0
  228. package/dist/server/services/github-service.js +1381 -0
  229. package/dist/server/services/github-service.js.map +1 -0
  230. package/dist/server/shared/messages.d.ts +29408 -12268
  231. package/dist/server/shared/messages.d.ts.map +1 -1
  232. package/dist/server/shared/messages.js +391 -65
  233. package/dist/server/shared/messages.js.map +1 -1
  234. package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
  235. package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  236. package/dist/server/terminal/terminal-manager.d.ts +9 -0
  237. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  238. package/dist/server/terminal/terminal-manager.js +27 -0
  239. package/dist/server/terminal/terminal-manager.js.map +1 -1
  240. package/dist/server/terminal/terminal-output-coalescer.d.ts +30 -0
  241. package/dist/server/terminal/terminal-output-coalescer.d.ts.map +1 -0
  242. package/dist/server/terminal/terminal-output-coalescer.js +55 -0
  243. package/dist/server/terminal/terminal-output-coalescer.js.map +1 -0
  244. package/dist/server/terminal/terminal.d.ts +32 -1
  245. package/dist/server/terminal/terminal.d.ts.map +1 -1
  246. package/dist/server/terminal/terminal.js +397 -17
  247. package/dist/server/terminal/terminal.js.map +1 -1
  248. package/dist/server/utils/checkout-git.d.ts +63 -10
  249. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  250. package/dist/server/utils/checkout-git.js +321 -229
  251. package/dist/server/utils/checkout-git.js.map +1 -1
  252. package/dist/server/utils/promise-timeout.d.ts +9 -0
  253. package/dist/server/utils/promise-timeout.d.ts.map +1 -0
  254. package/dist/server/utils/promise-timeout.js +25 -0
  255. package/dist/server/utils/promise-timeout.js.map +1 -0
  256. package/dist/server/utils/script-hostname.d.ts +8 -0
  257. package/dist/server/utils/script-hostname.d.ts.map +1 -0
  258. package/dist/server/utils/script-hostname.js +14 -0
  259. package/dist/server/utils/script-hostname.js.map +1 -0
  260. package/dist/server/utils/string-command-shell.d.ts +10 -0
  261. package/dist/server/utils/string-command-shell.d.ts.map +1 -0
  262. package/dist/server/utils/string-command-shell.js +21 -0
  263. package/dist/server/utils/string-command-shell.js.map +1 -0
  264. package/dist/server/utils/worktree.d.ts +54 -7
  265. package/dist/server/utils/worktree.d.ts.map +1 -1
  266. package/dist/server/utils/worktree.js +434 -129
  267. package/dist/server/utils/worktree.js.map +1 -1
  268. package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
  269. package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
  270. package/package.json +11 -14
  271. package/dist/server/server/agent/providers/pi-acp-agent.d.ts +0 -28
  272. package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +0 -1
  273. package/dist/server/server/agent/providers/pi-acp-agent.js +0 -302
  274. package/dist/server/server/agent/providers/pi-acp-agent.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import type { Logger } from "pino";
2
2
  import { AgentManager } from "../agent/agent-manager.js";
3
- import { AgentStorage } from "../agent/agent-storage.js";
3
+ import type { AgentStorage } from "../agent/agent-storage.js";
4
4
  import type { CreateScheduleInput, ScheduleExecutionResult, ScheduleRun, StoredSchedule } from "./types.js";
5
5
  export interface ScheduleServiceOptions {
6
6
  paseoHome: string;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/server/schedule/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AA2EpB,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACzE;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IACxF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,SAAS,CAA+C;gBAEpD,OAAO,EAAE,sBAAsB;IASrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsB3D,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKxC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB3C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBb,sBAAsB;YA0CtB,WAAW;YA4CX,SAAS;YAmDT,eAAe;CA4D9B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../src/server/schedule/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAM9D,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AA2EpB,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACzE;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IACxF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,SAAS,CAA+C;gBAEpD,OAAO,EAAE,sBAAsB;IASrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrB,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsB3D,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ5C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKxC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoB3C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBb,sBAAsB;YA0CtB,WAAW;YA4CX,SAAS;YAmDT,eAAe;CA4D9B"}
@@ -59,7 +59,6 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
59
59
  cwd: string;
60
60
  provider: string;
61
61
  title?: string | null | undefined;
62
- systemPrompt?: string | undefined;
63
62
  modeId?: string | undefined;
64
63
  model?: string | undefined;
65
64
  thinkingOptionId?: string | undefined;
@@ -71,12 +70,12 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
71
70
  claude?: Record<string, unknown> | undefined;
72
71
  codex?: Record<string, unknown> | undefined;
73
72
  } | undefined;
73
+ systemPrompt?: string | undefined;
74
74
  mcpServers?: Record<string, unknown> | undefined;
75
75
  }, {
76
76
  cwd: string;
77
77
  provider: string;
78
78
  title?: string | null | undefined;
79
- systemPrompt?: string | undefined;
80
79
  modeId?: string | undefined;
81
80
  model?: string | undefined;
82
81
  thinkingOptionId?: string | undefined;
@@ -88,6 +87,7 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
88
87
  claude?: Record<string, unknown> | undefined;
89
88
  codex?: Record<string, unknown> | undefined;
90
89
  } | undefined;
90
+ systemPrompt?: string | undefined;
91
91
  mcpServers?: Record<string, unknown> | undefined;
92
92
  }>;
93
93
  }, "strip", z.ZodTypeAny, {
@@ -96,7 +96,6 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
96
96
  cwd: string;
97
97
  provider: string;
98
98
  title?: string | null | undefined;
99
- systemPrompt?: string | undefined;
100
99
  modeId?: string | undefined;
101
100
  model?: string | undefined;
102
101
  thinkingOptionId?: string | undefined;
@@ -108,6 +107,7 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
108
107
  claude?: Record<string, unknown> | undefined;
109
108
  codex?: Record<string, unknown> | undefined;
110
109
  } | undefined;
110
+ systemPrompt?: string | undefined;
111
111
  mcpServers?: Record<string, unknown> | undefined;
112
112
  };
113
113
  }, {
@@ -116,7 +116,6 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
116
116
  cwd: string;
117
117
  provider: string;
118
118
  title?: string | null | undefined;
119
- systemPrompt?: string | undefined;
120
119
  modeId?: string | undefined;
121
120
  model?: string | undefined;
122
121
  thinkingOptionId?: string | undefined;
@@ -128,6 +127,7 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<"type", [z.Zo
128
127
  claude?: Record<string, unknown> | undefined;
129
128
  codex?: Record<string, unknown> | undefined;
130
129
  } | undefined;
130
+ systemPrompt?: string | undefined;
131
131
  mcpServers?: Record<string, unknown> | undefined;
132
132
  };
133
133
  }>]>;
@@ -144,21 +144,21 @@ export declare const ScheduleRunSchema: z.ZodObject<{
144
144
  }, "strip", z.ZodTypeAny, {
145
145
  error: string | null;
146
146
  agentId: string | null;
147
- id: string;
148
147
  status: "running" | "failed" | "succeeded";
149
- output: string | null;
148
+ id: string;
150
149
  scheduledFor: string;
151
150
  startedAt: string;
152
151
  endedAt: string | null;
152
+ output: string | null;
153
153
  }, {
154
154
  error: string | null;
155
155
  agentId: string | null;
156
- id: string;
157
156
  status: "running" | "failed" | "succeeded";
158
- output: string | null;
157
+ id: string;
159
158
  scheduledFor: string;
160
159
  startedAt: string;
161
160
  endedAt: string | null;
161
+ output: string | null;
162
162
  }>;
163
163
  export type ScheduleRun = z.infer<typeof ScheduleRunSchema>;
164
164
  export declare const StoredScheduleSchema: z.ZodObject<{
@@ -222,7 +222,6 @@ export declare const StoredScheduleSchema: z.ZodObject<{
222
222
  cwd: string;
223
223
  provider: string;
224
224
  title?: string | null | undefined;
225
- systemPrompt?: string | undefined;
226
225
  modeId?: string | undefined;
227
226
  model?: string | undefined;
228
227
  thinkingOptionId?: string | undefined;
@@ -234,12 +233,12 @@ export declare const StoredScheduleSchema: z.ZodObject<{
234
233
  claude?: Record<string, unknown> | undefined;
235
234
  codex?: Record<string, unknown> | undefined;
236
235
  } | undefined;
236
+ systemPrompt?: string | undefined;
237
237
  mcpServers?: Record<string, unknown> | undefined;
238
238
  }, {
239
239
  cwd: string;
240
240
  provider: string;
241
241
  title?: string | null | undefined;
242
- systemPrompt?: string | undefined;
243
242
  modeId?: string | undefined;
244
243
  model?: string | undefined;
245
244
  thinkingOptionId?: string | undefined;
@@ -251,6 +250,7 @@ export declare const StoredScheduleSchema: z.ZodObject<{
251
250
  claude?: Record<string, unknown> | undefined;
252
251
  codex?: Record<string, unknown> | undefined;
253
252
  } | undefined;
253
+ systemPrompt?: string | undefined;
254
254
  mcpServers?: Record<string, unknown> | undefined;
255
255
  }>;
256
256
  }, "strip", z.ZodTypeAny, {
@@ -259,7 +259,6 @@ export declare const StoredScheduleSchema: z.ZodObject<{
259
259
  cwd: string;
260
260
  provider: string;
261
261
  title?: string | null | undefined;
262
- systemPrompt?: string | undefined;
263
262
  modeId?: string | undefined;
264
263
  model?: string | undefined;
265
264
  thinkingOptionId?: string | undefined;
@@ -271,6 +270,7 @@ export declare const StoredScheduleSchema: z.ZodObject<{
271
270
  claude?: Record<string, unknown> | undefined;
272
271
  codex?: Record<string, unknown> | undefined;
273
272
  } | undefined;
273
+ systemPrompt?: string | undefined;
274
274
  mcpServers?: Record<string, unknown> | undefined;
275
275
  };
276
276
  }, {
@@ -279,7 +279,6 @@ export declare const StoredScheduleSchema: z.ZodObject<{
279
279
  cwd: string;
280
280
  provider: string;
281
281
  title?: string | null | undefined;
282
- systemPrompt?: string | undefined;
283
282
  modeId?: string | undefined;
284
283
  model?: string | undefined;
285
284
  thinkingOptionId?: string | undefined;
@@ -291,6 +290,7 @@ export declare const StoredScheduleSchema: z.ZodObject<{
291
290
  claude?: Record<string, unknown> | undefined;
292
291
  codex?: Record<string, unknown> | undefined;
293
292
  } | undefined;
293
+ systemPrompt?: string | undefined;
294
294
  mcpServers?: Record<string, unknown> | undefined;
295
295
  };
296
296
  }>]>;
@@ -314,29 +314,29 @@ export declare const StoredScheduleSchema: z.ZodObject<{
314
314
  }, "strip", z.ZodTypeAny, {
315
315
  error: string | null;
316
316
  agentId: string | null;
317
- id: string;
318
317
  status: "running" | "failed" | "succeeded";
319
- output: string | null;
318
+ id: string;
320
319
  scheduledFor: string;
321
320
  startedAt: string;
322
321
  endedAt: string | null;
322
+ output: string | null;
323
323
  }, {
324
324
  error: string | null;
325
325
  agentId: string | null;
326
- id: string;
327
326
  status: "running" | "failed" | "succeeded";
328
- output: string | null;
327
+ id: string;
329
328
  scheduledFor: string;
330
329
  startedAt: string;
331
330
  endedAt: string | null;
331
+ output: string | null;
332
332
  }>, "many">;
333
333
  }, "strip", z.ZodTypeAny, {
334
334
  name: string | null;
335
- id: string;
336
335
  status: "completed" | "active" | "paused";
337
- prompt: string;
338
- updatedAt: string;
336
+ id: string;
339
337
  createdAt: string;
338
+ updatedAt: string;
339
+ prompt: string;
340
340
  cadence: {
341
341
  type: "every";
342
342
  everyMs: number;
@@ -353,7 +353,6 @@ export declare const StoredScheduleSchema: z.ZodObject<{
353
353
  cwd: string;
354
354
  provider: string;
355
355
  title?: string | null | undefined;
356
- systemPrompt?: string | undefined;
357
356
  modeId?: string | undefined;
358
357
  model?: string | undefined;
359
358
  thinkingOptionId?: string | undefined;
@@ -365,6 +364,7 @@ export declare const StoredScheduleSchema: z.ZodObject<{
365
364
  claude?: Record<string, unknown> | undefined;
366
365
  codex?: Record<string, unknown> | undefined;
367
366
  } | undefined;
367
+ systemPrompt?: string | undefined;
368
368
  mcpServers?: Record<string, unknown> | undefined;
369
369
  };
370
370
  };
@@ -376,20 +376,20 @@ export declare const StoredScheduleSchema: z.ZodObject<{
376
376
  runs: {
377
377
  error: string | null;
378
378
  agentId: string | null;
379
- id: string;
380
379
  status: "running" | "failed" | "succeeded";
381
- output: string | null;
380
+ id: string;
382
381
  scheduledFor: string;
383
382
  startedAt: string;
384
383
  endedAt: string | null;
384
+ output: string | null;
385
385
  }[];
386
386
  }, {
387
387
  name: string | null;
388
- id: string;
389
388
  status: "completed" | "active" | "paused";
390
- prompt: string;
391
- updatedAt: string;
389
+ id: string;
392
390
  createdAt: string;
391
+ updatedAt: string;
392
+ prompt: string;
393
393
  cadence: {
394
394
  type: "every";
395
395
  everyMs: number;
@@ -406,7 +406,6 @@ export declare const StoredScheduleSchema: z.ZodObject<{
406
406
  cwd: string;
407
407
  provider: string;
408
408
  title?: string | null | undefined;
409
- systemPrompt?: string | undefined;
410
409
  modeId?: string | undefined;
411
410
  model?: string | undefined;
412
411
  thinkingOptionId?: string | undefined;
@@ -418,6 +417,7 @@ export declare const StoredScheduleSchema: z.ZodObject<{
418
417
  claude?: Record<string, unknown> | undefined;
419
418
  codex?: Record<string, unknown> | undefined;
420
419
  } | undefined;
420
+ systemPrompt?: string | undefined;
421
421
  mcpServers?: Record<string, unknown> | undefined;
422
422
  };
423
423
  };
@@ -429,12 +429,12 @@ export declare const StoredScheduleSchema: z.ZodObject<{
429
429
  runs: {
430
430
  error: string | null;
431
431
  agentId: string | null;
432
- id: string;
433
432
  status: "running" | "failed" | "succeeded";
434
- output: string | null;
433
+ id: string;
435
434
  scheduledFor: string;
436
435
  startedAt: string;
437
436
  endedAt: string | null;
437
+ output: string | null;
438
438
  }[];
439
439
  }>;
440
440
  export type StoredSchedule = z.infer<typeof StoredScheduleSchema>;
@@ -499,7 +499,6 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
499
499
  cwd: string;
500
500
  provider: string;
501
501
  title?: string | null | undefined;
502
- systemPrompt?: string | undefined;
503
502
  modeId?: string | undefined;
504
503
  model?: string | undefined;
505
504
  thinkingOptionId?: string | undefined;
@@ -511,12 +510,12 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
511
510
  claude?: Record<string, unknown> | undefined;
512
511
  codex?: Record<string, unknown> | undefined;
513
512
  } | undefined;
513
+ systemPrompt?: string | undefined;
514
514
  mcpServers?: Record<string, unknown> | undefined;
515
515
  }, {
516
516
  cwd: string;
517
517
  provider: string;
518
518
  title?: string | null | undefined;
519
- systemPrompt?: string | undefined;
520
519
  modeId?: string | undefined;
521
520
  model?: string | undefined;
522
521
  thinkingOptionId?: string | undefined;
@@ -528,6 +527,7 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
528
527
  claude?: Record<string, unknown> | undefined;
529
528
  codex?: Record<string, unknown> | undefined;
530
529
  } | undefined;
530
+ systemPrompt?: string | undefined;
531
531
  mcpServers?: Record<string, unknown> | undefined;
532
532
  }>;
533
533
  }, "strip", z.ZodTypeAny, {
@@ -536,7 +536,6 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
536
536
  cwd: string;
537
537
  provider: string;
538
538
  title?: string | null | undefined;
539
- systemPrompt?: string | undefined;
540
539
  modeId?: string | undefined;
541
540
  model?: string | undefined;
542
541
  thinkingOptionId?: string | undefined;
@@ -548,6 +547,7 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
548
547
  claude?: Record<string, unknown> | undefined;
549
548
  codex?: Record<string, unknown> | undefined;
550
549
  } | undefined;
550
+ systemPrompt?: string | undefined;
551
551
  mcpServers?: Record<string, unknown> | undefined;
552
552
  };
553
553
  }, {
@@ -556,7 +556,6 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
556
556
  cwd: string;
557
557
  provider: string;
558
558
  title?: string | null | undefined;
559
- systemPrompt?: string | undefined;
560
559
  modeId?: string | undefined;
561
560
  model?: string | undefined;
562
561
  thinkingOptionId?: string | undefined;
@@ -568,6 +567,7 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
568
567
  claude?: Record<string, unknown> | undefined;
569
568
  codex?: Record<string, unknown> | undefined;
570
569
  } | undefined;
570
+ systemPrompt?: string | undefined;
571
571
  mcpServers?: Record<string, unknown> | undefined;
572
572
  };
573
573
  }>]>;
@@ -591,29 +591,29 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
591
591
  }, "strip", z.ZodTypeAny, {
592
592
  error: string | null;
593
593
  agentId: string | null;
594
- id: string;
595
594
  status: "running" | "failed" | "succeeded";
596
- output: string | null;
595
+ id: string;
597
596
  scheduledFor: string;
598
597
  startedAt: string;
599
598
  endedAt: string | null;
599
+ output: string | null;
600
600
  }, {
601
601
  error: string | null;
602
602
  agentId: string | null;
603
- id: string;
604
603
  status: "running" | "failed" | "succeeded";
605
- output: string | null;
604
+ id: string;
606
605
  scheduledFor: string;
607
606
  startedAt: string;
608
607
  endedAt: string | null;
608
+ output: string | null;
609
609
  }>, "many">;
610
610
  }, "runs">, "strip", z.ZodTypeAny, {
611
611
  name: string | null;
612
- id: string;
613
612
  status: "completed" | "active" | "paused";
614
- prompt: string;
615
- updatedAt: string;
613
+ id: string;
616
614
  createdAt: string;
615
+ updatedAt: string;
616
+ prompt: string;
617
617
  cadence: {
618
618
  type: "every";
619
619
  everyMs: number;
@@ -630,7 +630,6 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
630
630
  cwd: string;
631
631
  provider: string;
632
632
  title?: string | null | undefined;
633
- systemPrompt?: string | undefined;
634
633
  modeId?: string | undefined;
635
634
  model?: string | undefined;
636
635
  thinkingOptionId?: string | undefined;
@@ -642,6 +641,7 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
642
641
  claude?: Record<string, unknown> | undefined;
643
642
  codex?: Record<string, unknown> | undefined;
644
643
  } | undefined;
644
+ systemPrompt?: string | undefined;
645
645
  mcpServers?: Record<string, unknown> | undefined;
646
646
  };
647
647
  };
@@ -652,11 +652,11 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
652
652
  maxRuns: number | null;
653
653
  }, {
654
654
  name: string | null;
655
- id: string;
656
655
  status: "completed" | "active" | "paused";
657
- prompt: string;
658
- updatedAt: string;
656
+ id: string;
659
657
  createdAt: string;
658
+ updatedAt: string;
659
+ prompt: string;
660
660
  cadence: {
661
661
  type: "every";
662
662
  everyMs: number;
@@ -673,7 +673,6 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
673
673
  cwd: string;
674
674
  provider: string;
675
675
  title?: string | null | undefined;
676
- systemPrompt?: string | undefined;
677
676
  modeId?: string | undefined;
678
677
  model?: string | undefined;
679
678
  thinkingOptionId?: string | undefined;
@@ -685,6 +684,7 @@ export declare const ScheduleSummarySchema: z.ZodObject<Omit<{
685
684
  claude?: Record<string, unknown> | undefined;
686
685
  codex?: Record<string, unknown> | undefined;
687
686
  } | undefined;
687
+ systemPrompt?: string | undefined;
688
688
  mcpServers?: Record<string, unknown> | undefined;
689
689
  };
690
690
  };
@@ -0,0 +1,39 @@
1
+ import type { ScriptRouteStore } from "./script-proxy.js";
2
+ export type ScriptHealthState = "pending" | "healthy" | "unhealthy";
3
+ export interface ScriptHealthEntry {
4
+ scriptName: string;
5
+ hostname: string;
6
+ port: number;
7
+ health: ScriptHealthState;
8
+ }
9
+ export declare class ScriptHealthMonitor {
10
+ private readonly routeStore;
11
+ private readonly onChange;
12
+ private readonly pollIntervalMs;
13
+ private readonly probeTimeoutMs;
14
+ private readonly graceMs;
15
+ private readonly failuresBeforeStopped;
16
+ private readonly routeStates;
17
+ private readonly lastEmittedSnapshots;
18
+ private intervalHandle;
19
+ private pollInFlight;
20
+ constructor({ routeStore, onChange, pollIntervalMs, probeTimeoutMs, graceMs, failuresBeforeStopped, }: {
21
+ routeStore: ScriptRouteStore;
22
+ onChange: (workspaceId: string, scripts: ScriptHealthEntry[]) => void;
23
+ pollIntervalMs?: number;
24
+ probeTimeoutMs?: number;
25
+ graceMs?: number;
26
+ failuresBeforeStopped?: number;
27
+ });
28
+ start(): void;
29
+ stop(): void;
30
+ invalidateWorkspace(workspaceId: string): void;
31
+ private poll;
32
+ private getOrCreateState;
33
+ private pruneRemovedRoutes;
34
+ private buildWorkspaceScriptList;
35
+ getHealthForHostname(hostname: string): ScriptHealthState | null;
36
+ private toScriptHealthEntry;
37
+ private probeRoute;
38
+ }
39
+ //# sourceMappingURL=script-health-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-health-monitor.d.ts","sourceRoot":"","sources":["../../../src/server/script-health-monitor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AASD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8D;IACvF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAElE,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAAS;gBAEjB,EACV,UAAU,EACV,QAAQ,EACR,cAAsB,EACtB,cAAoB,EACpB,OAAe,EACf,qBAAyB,GAC1B,EAAE;QACD,UAAU,EAAE,gBAAgB,CAAC;QAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;QACtE,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC;IASD,KAAK,IAAI,IAAI;IAeb,IAAI,IAAI,IAAI;IAOZ,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;YAWhC,IAAI;IAqDlB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,wBAAwB;IAUhC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAchE,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;CAoBnB"}
@@ -0,0 +1,158 @@
1
+ import net from "node:net";
2
+ export class ScriptHealthMonitor {
3
+ constructor({ routeStore, onChange, pollIntervalMs = 3000, probeTimeoutMs = 500, graceMs = 5000, failuresBeforeStopped = 2, }) {
4
+ this.routeStates = new Map();
5
+ this.lastEmittedSnapshots = new Map();
6
+ this.intervalHandle = null;
7
+ this.pollInFlight = false;
8
+ this.routeStore = routeStore;
9
+ this.onChange = onChange;
10
+ this.pollIntervalMs = pollIntervalMs;
11
+ this.probeTimeoutMs = probeTimeoutMs;
12
+ this.graceMs = graceMs;
13
+ this.failuresBeforeStopped = failuresBeforeStopped;
14
+ }
15
+ start() {
16
+ if (this.intervalHandle) {
17
+ return;
18
+ }
19
+ const now = Date.now();
20
+ for (const route of this.routeStore.listRoutes()) {
21
+ this.getOrCreateState(route, now);
22
+ }
23
+ this.intervalHandle = setInterval(() => {
24
+ void this.poll();
25
+ }, this.pollIntervalMs);
26
+ }
27
+ stop() {
28
+ if (this.intervalHandle) {
29
+ clearInterval(this.intervalHandle);
30
+ this.intervalHandle = null;
31
+ }
32
+ }
33
+ invalidateWorkspace(workspaceId) {
34
+ const scripts = this.buildWorkspaceScriptList(workspaceId);
35
+ const snapshot = JSON.stringify(scripts);
36
+ if (snapshot === this.lastEmittedSnapshots.get(workspaceId)) {
37
+ return;
38
+ }
39
+ this.lastEmittedSnapshots.set(workspaceId, snapshot);
40
+ this.onChange(workspaceId, scripts);
41
+ }
42
+ async poll() {
43
+ if (this.pollInFlight) {
44
+ return;
45
+ }
46
+ this.pollInFlight = true;
47
+ try {
48
+ const routes = this.routeStore.listRoutes();
49
+ const activeHostnames = new Set(routes.map((route) => route.hostname));
50
+ const changedWorkspaceIds = new Set();
51
+ const now = Date.now();
52
+ for (const route of routes) {
53
+ const state = this.getOrCreateState(route, now);
54
+ if (now - state.registeredAt < this.graceMs) {
55
+ continue;
56
+ }
57
+ const isHealthy = await this.probeRoute(route.port);
58
+ const previousHealth = state.health;
59
+ if (isHealthy) {
60
+ state.consecutiveFailures = 0;
61
+ state.health = "healthy";
62
+ }
63
+ else {
64
+ state.consecutiveFailures += 1;
65
+ if (state.consecutiveFailures >= this.failuresBeforeStopped) {
66
+ state.health = "unhealthy";
67
+ }
68
+ }
69
+ if (state.health !== previousHealth) {
70
+ changedWorkspaceIds.add(route.workspaceId);
71
+ }
72
+ }
73
+ this.pruneRemovedRoutes(activeHostnames);
74
+ for (const workspaceId of changedWorkspaceIds) {
75
+ const scripts = this.buildWorkspaceScriptList(workspaceId);
76
+ const snapshot = JSON.stringify(scripts);
77
+ if (snapshot === this.lastEmittedSnapshots.get(workspaceId)) {
78
+ continue;
79
+ }
80
+ this.lastEmittedSnapshots.set(workspaceId, snapshot);
81
+ this.onChange(workspaceId, scripts);
82
+ }
83
+ }
84
+ finally {
85
+ this.pollInFlight = false;
86
+ }
87
+ }
88
+ getOrCreateState(route, registeredAt) {
89
+ const existing = this.routeStates.get(route.hostname);
90
+ if (existing) {
91
+ return existing;
92
+ }
93
+ const state = {
94
+ workspaceId: route.workspaceId,
95
+ health: "pending",
96
+ consecutiveFailures: 0,
97
+ registeredAt,
98
+ };
99
+ this.routeStates.set(route.hostname, state);
100
+ return state;
101
+ }
102
+ pruneRemovedRoutes(activeHostnames) {
103
+ for (const [hostname, state] of this.routeStates.entries()) {
104
+ if (activeHostnames.has(hostname)) {
105
+ continue;
106
+ }
107
+ this.routeStates.delete(hostname);
108
+ this.lastEmittedSnapshots.delete(state.workspaceId);
109
+ }
110
+ }
111
+ buildWorkspaceScriptList(workspaceId) {
112
+ return this.routeStore.listRoutesForWorkspace(workspaceId).flatMap((route) => {
113
+ const state = this.routeStates.get(route.hostname);
114
+ if (!state) {
115
+ return [];
116
+ }
117
+ return [this.toScriptHealthEntry(route, state.health)];
118
+ });
119
+ }
120
+ getHealthForHostname(hostname) {
121
+ const state = this.routeStates.get(hostname);
122
+ if (state) {
123
+ return state.health;
124
+ }
125
+ const route = this.routeStore.getRouteEntry(hostname);
126
+ if (!route) {
127
+ return null;
128
+ }
129
+ return this.getOrCreateState(route, Date.now()).health;
130
+ }
131
+ toScriptHealthEntry(route, health) {
132
+ return {
133
+ scriptName: route.scriptName,
134
+ hostname: route.hostname,
135
+ port: route.port,
136
+ health,
137
+ };
138
+ }
139
+ probeRoute(port) {
140
+ return new Promise((resolve) => {
141
+ const socket = net.connect({ host: "127.0.0.1", port });
142
+ let settled = false;
143
+ const finish = (healthy) => {
144
+ if (settled) {
145
+ return;
146
+ }
147
+ settled = true;
148
+ socket.destroy();
149
+ resolve(healthy);
150
+ };
151
+ socket.setTimeout(this.probeTimeoutMs);
152
+ socket.once("connect", () => finish(true));
153
+ socket.once("timeout", () => finish(false));
154
+ socket.once("error", () => finish(false));
155
+ });
156
+ }
157
+ }
158
+ //# sourceMappingURL=script-health-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-health-monitor.js","sourceRoot":"","sources":["../../../src/server/script-health-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import net from "node:net";
2
+ import type { IncomingMessage } from "node:http";
3
+ import type { Logger } from "pino";
4
+ import type { RequestHandler } from "express";
5
+ export interface ScriptRoute {
6
+ hostname: string;
7
+ port: number;
8
+ }
9
+ export interface ScriptRouteEntry extends ScriptRoute {
10
+ workspaceId: string;
11
+ projectSlug: string;
12
+ scriptName: string;
13
+ }
14
+ export declare class ScriptRouteStore {
15
+ private routes;
16
+ private workspaceHostnames;
17
+ registerRoute(entry: ScriptRouteEntry): void;
18
+ removeRoute(hostname: string): void;
19
+ removeRouteForWorkspaceScript(params: {
20
+ workspaceId: string;
21
+ scriptName: string;
22
+ }): void;
23
+ removeRoutesForPort(port: number): void;
24
+ findRoute(host: string): ScriptRoute | null;
25
+ getRouteEntry(hostname: string): ScriptRouteEntry | null;
26
+ listRoutes(): ScriptRouteEntry[];
27
+ listRoutesForWorkspace(workspaceId: string): ScriptRouteEntry[];
28
+ private addHostnameToWorkspaceIndex;
29
+ private removeHostnameFromWorkspaceIndex;
30
+ }
31
+ export declare function createScriptProxyMiddleware({ routeStore, logger, }: {
32
+ routeStore: ScriptRouteStore;
33
+ logger: Logger;
34
+ }): RequestHandler;
35
+ export declare function createScriptProxyUpgradeHandler({ routeStore, logger, }: {
36
+ routeStore: ScriptRouteStore;
37
+ logger: Logger;
38
+ }): (req: IncomingMessage, socket: net.Socket, head: Buffer) => void;
39
+ export declare function findFreePort(): Promise<number>;
40
+ //# sourceMappingURL=script-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-proxy.d.ts","sourceRoot":"","sources":["../../../src/server/script-proxy.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAsB9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAW5C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IASnC,6BAA6B,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IASxF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASvC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAuB3C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAKxD,UAAU,IAAI,gBAAgB,EAAE;IAIhC,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAgB/D,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,gCAAgC;CAWzC;AAsBD,wBAAgB,2BAA2B,CAAC,EAC1C,UAAU,EACV,MAAM,GACP,EAAE;IACD,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,cAAc,CA+CjB;AAMD,wBAAgB,+BAA+B,CAAC,EAC9C,UAAU,EACV,MAAM,GACP,EAAE;IACD,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CA4DnE;AAMD,wBAAgB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAsB9C"}