@telora/daemon 0.12.33

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 (473) hide show
  1. package/.env.example +64 -0
  2. package/README.md +229 -0
  3. package/build-info.json +4 -0
  4. package/dist/activity-tracker.d.ts +13 -0
  5. package/dist/activity-tracker.d.ts.map +1 -0
  6. package/dist/activity-tracker.js +19 -0
  7. package/dist/activity-tracker.js.map +1 -0
  8. package/dist/agent-state.d.ts +45 -0
  9. package/dist/agent-state.d.ts.map +1 -0
  10. package/dist/agent-state.js +61 -0
  11. package/dist/agent-state.js.map +1 -0
  12. package/dist/audit-hooks.d.ts +12 -0
  13. package/dist/audit-hooks.d.ts.map +1 -0
  14. package/dist/audit-hooks.js +45 -0
  15. package/dist/audit-hooks.js.map +1 -0
  16. package/dist/auto-update.d.ts +42 -0
  17. package/dist/auto-update.d.ts.map +1 -0
  18. package/dist/auto-update.js +96 -0
  19. package/dist/auto-update.js.map +1 -0
  20. package/dist/branch-status.d.ts +40 -0
  21. package/dist/branch-status.d.ts.map +1 -0
  22. package/dist/branch-status.js +107 -0
  23. package/dist/branch-status.js.map +1 -0
  24. package/dist/completion-detector.d.ts +87 -0
  25. package/dist/completion-detector.d.ts.map +1 -0
  26. package/dist/completion-detector.js +160 -0
  27. package/dist/completion-detector.js.map +1 -0
  28. package/dist/completion-handler.d.ts +48 -0
  29. package/dist/completion-handler.d.ts.map +1 -0
  30. package/dist/completion-handler.js +200 -0
  31. package/dist/completion-handler.js.map +1 -0
  32. package/dist/condition-evaluators.d.ts +31 -0
  33. package/dist/condition-evaluators.d.ts.map +1 -0
  34. package/dist/condition-evaluators.js +416 -0
  35. package/dist/condition-evaluators.js.map +1 -0
  36. package/dist/config.d.ts +55 -0
  37. package/dist/config.d.ts.map +1 -0
  38. package/dist/config.js +311 -0
  39. package/dist/config.js.map +1 -0
  40. package/dist/control-state.d.ts +41 -0
  41. package/dist/control-state.d.ts.map +1 -0
  42. package/dist/control-state.js +204 -0
  43. package/dist/control-state.js.map +1 -0
  44. package/dist/crash-recovery-cleanup.d.ts +21 -0
  45. package/dist/crash-recovery-cleanup.d.ts.map +1 -0
  46. package/dist/crash-recovery-cleanup.js +198 -0
  47. package/dist/crash-recovery-cleanup.js.map +1 -0
  48. package/dist/crash-recovery-scan.d.ts +19 -0
  49. package/dist/crash-recovery-scan.d.ts.map +1 -0
  50. package/dist/crash-recovery-scan.js +145 -0
  51. package/dist/crash-recovery-scan.js.map +1 -0
  52. package/dist/crash-recovery-types.d.ts +54 -0
  53. package/dist/crash-recovery-types.d.ts.map +1 -0
  54. package/dist/crash-recovery-types.js +13 -0
  55. package/dist/crash-recovery-types.js.map +1 -0
  56. package/dist/crash-recovery.d.ts +88 -0
  57. package/dist/crash-recovery.d.ts.map +1 -0
  58. package/dist/crash-recovery.js +448 -0
  59. package/dist/crash-recovery.js.map +1 -0
  60. package/dist/daemon-logs.d.ts +19 -0
  61. package/dist/daemon-logs.d.ts.map +1 -0
  62. package/dist/daemon-logs.js +81 -0
  63. package/dist/daemon-logs.js.map +1 -0
  64. package/dist/daemon-process.d.ts +154 -0
  65. package/dist/daemon-process.d.ts.map +1 -0
  66. package/dist/daemon-process.js +427 -0
  67. package/dist/daemon-process.js.map +1 -0
  68. package/dist/dag-validator.d.ts +52 -0
  69. package/dist/dag-validator.d.ts.map +1 -0
  70. package/dist/dag-validator.js +199 -0
  71. package/dist/dag-validator.js.map +1 -0
  72. package/dist/delivery-guards.d.ts +41 -0
  73. package/dist/delivery-guards.d.ts.map +1 -0
  74. package/dist/delivery-guards.js +195 -0
  75. package/dist/delivery-guards.js.map +1 -0
  76. package/dist/delivery-lifecycle.d.ts +110 -0
  77. package/dist/delivery-lifecycle.d.ts.map +1 -0
  78. package/dist/delivery-lifecycle.js +353 -0
  79. package/dist/delivery-lifecycle.js.map +1 -0
  80. package/dist/delivery-merge.d.ts +17 -0
  81. package/dist/delivery-merge.d.ts.map +1 -0
  82. package/dist/delivery-merge.js +89 -0
  83. package/dist/delivery-merge.js.map +1 -0
  84. package/dist/dependency-resolver.d.ts +77 -0
  85. package/dist/dependency-resolver.d.ts.map +1 -0
  86. package/dist/dependency-resolver.js +337 -0
  87. package/dist/dependency-resolver.js.map +1 -0
  88. package/dist/evaluation-context.d.ts +49 -0
  89. package/dist/evaluation-context.d.ts.map +1 -0
  90. package/dist/evaluation-context.js +98 -0
  91. package/dist/evaluation-context.js.map +1 -0
  92. package/dist/git-activity.d.ts +24 -0
  93. package/dist/git-activity.d.ts.map +1 -0
  94. package/dist/git-activity.js +97 -0
  95. package/dist/git-activity.js.map +1 -0
  96. package/dist/git-branch.d.ts +33 -0
  97. package/dist/git-branch.d.ts.map +1 -0
  98. package/dist/git-branch.js +88 -0
  99. package/dist/git-branch.js.map +1 -0
  100. package/dist/git-integration.d.ts +27 -0
  101. package/dist/git-integration.d.ts.map +1 -0
  102. package/dist/git-integration.js +82 -0
  103. package/dist/git-integration.js.map +1 -0
  104. package/dist/git-merge-helpers.d.ts +48 -0
  105. package/dist/git-merge-helpers.d.ts.map +1 -0
  106. package/dist/git-merge-helpers.js +105 -0
  107. package/dist/git-merge-helpers.js.map +1 -0
  108. package/dist/git-merge-lock.d.ts +67 -0
  109. package/dist/git-merge-lock.d.ts.map +1 -0
  110. package/dist/git-merge-lock.js +157 -0
  111. package/dist/git-merge-lock.js.map +1 -0
  112. package/dist/git-merge-strategies.d.ts +39 -0
  113. package/dist/git-merge-strategies.d.ts.map +1 -0
  114. package/dist/git-merge-strategies.js +127 -0
  115. package/dist/git-merge-strategies.js.map +1 -0
  116. package/dist/git-merge.d.ts +80 -0
  117. package/dist/git-merge.d.ts.map +1 -0
  118. package/dist/git-merge.js +373 -0
  119. package/dist/git-merge.js.map +1 -0
  120. package/dist/git-state-detector.d.ts +24 -0
  121. package/dist/git-state-detector.d.ts.map +1 -0
  122. package/dist/git-state-detector.js +122 -0
  123. package/dist/git-state-detector.js.map +1 -0
  124. package/dist/git-types.d.ts +40 -0
  125. package/dist/git-types.d.ts.map +1 -0
  126. package/dist/git-types.js +23 -0
  127. package/dist/git-types.js.map +1 -0
  128. package/dist/git-utils.d.ts +28 -0
  129. package/dist/git-utils.d.ts.map +1 -0
  130. package/dist/git-utils.js +57 -0
  131. package/dist/git-utils.js.map +1 -0
  132. package/dist/git.d.ts +24 -0
  133. package/dist/git.d.ts.map +1 -0
  134. package/dist/git.js +64 -0
  135. package/dist/git.js.map +1 -0
  136. package/dist/guard-engine.d.ts +19 -0
  137. package/dist/guard-engine.d.ts.map +1 -0
  138. package/dist/guard-engine.js +21 -0
  139. package/dist/guard-engine.js.map +1 -0
  140. package/dist/guard-evaluator.d.ts +47 -0
  141. package/dist/guard-evaluator.d.ts.map +1 -0
  142. package/dist/guard-evaluator.js +193 -0
  143. package/dist/guard-evaluator.js.map +1 -0
  144. package/dist/heartbeat.d.ts +73 -0
  145. package/dist/heartbeat.d.ts.map +1 -0
  146. package/dist/heartbeat.js +306 -0
  147. package/dist/heartbeat.js.map +1 -0
  148. package/dist/index.d.ts +32 -0
  149. package/dist/index.d.ts.map +1 -0
  150. package/dist/index.js +493 -0
  151. package/dist/index.js.map +1 -0
  152. package/dist/listener-auto-advance.d.ts +29 -0
  153. package/dist/listener-auto-advance.d.ts.map +1 -0
  154. package/dist/listener-auto-advance.js +172 -0
  155. package/dist/listener-auto-advance.js.map +1 -0
  156. package/dist/listener-review.d.ts +37 -0
  157. package/dist/listener-review.d.ts.map +1 -0
  158. package/dist/listener-review.js +217 -0
  159. package/dist/listener-review.js.map +1 -0
  160. package/dist/listener.d.ts +57 -0
  161. package/dist/listener.d.ts.map +1 -0
  162. package/dist/listener.js +361 -0
  163. package/dist/listener.js.map +1 -0
  164. package/dist/log-manager.d.ts +18 -0
  165. package/dist/log-manager.d.ts.map +1 -0
  166. package/dist/log-manager.js +18 -0
  167. package/dist/log-manager.js.map +1 -0
  168. package/dist/otlp-log-parser.d.ts +21 -0
  169. package/dist/otlp-log-parser.d.ts.map +1 -0
  170. package/dist/otlp-log-parser.js +143 -0
  171. package/dist/otlp-log-parser.js.map +1 -0
  172. package/dist/otlp-metric-parser.d.ts +20 -0
  173. package/dist/otlp-metric-parser.d.ts.map +1 -0
  174. package/dist/otlp-metric-parser.js +113 -0
  175. package/dist/otlp-metric-parser.js.map +1 -0
  176. package/dist/otlp-port-manager.d.ts +26 -0
  177. package/dist/otlp-port-manager.d.ts.map +1 -0
  178. package/dist/otlp-port-manager.js +130 -0
  179. package/dist/otlp-port-manager.js.map +1 -0
  180. package/dist/otlp-receiver.d.ts +51 -0
  181. package/dist/otlp-receiver.d.ts.map +1 -0
  182. package/dist/otlp-receiver.js +663 -0
  183. package/dist/otlp-receiver.js.map +1 -0
  184. package/dist/otlp-types.d.ts +92 -0
  185. package/dist/otlp-types.d.ts.map +1 -0
  186. package/dist/otlp-types.js +133 -0
  187. package/dist/otlp-types.js.map +1 -0
  188. package/dist/output-monitor.d.ts +33 -0
  189. package/dist/output-monitor.d.ts.map +1 -0
  190. package/dist/output-monitor.js +67 -0
  191. package/dist/output-monitor.js.map +1 -0
  192. package/dist/planning-prompt-builder.d.ts +67 -0
  193. package/dist/planning-prompt-builder.d.ts.map +1 -0
  194. package/dist/planning-prompt-builder.js +515 -0
  195. package/dist/planning-prompt-builder.js.map +1 -0
  196. package/dist/prompt-builder.d.ts +14 -0
  197. package/dist/prompt-builder.d.ts.map +1 -0
  198. package/dist/prompt-builder.js +174 -0
  199. package/dist/prompt-builder.js.map +1 -0
  200. package/dist/qa-crash-recovery.d.ts +77 -0
  201. package/dist/qa-crash-recovery.d.ts.map +1 -0
  202. package/dist/qa-crash-recovery.js +243 -0
  203. package/dist/qa-crash-recovery.js.map +1 -0
  204. package/dist/qa-dev-server.d.ts +73 -0
  205. package/dist/qa-dev-server.d.ts.map +1 -0
  206. package/dist/qa-dev-server.js +279 -0
  207. package/dist/qa-dev-server.js.map +1 -0
  208. package/dist/qa-orchestrator.d.ts +79 -0
  209. package/dist/qa-orchestrator.d.ts.map +1 -0
  210. package/dist/qa-orchestrator.js +349 -0
  211. package/dist/qa-orchestrator.js.map +1 -0
  212. package/dist/qa-port-allocator.d.ts +34 -0
  213. package/dist/qa-port-allocator.d.ts.map +1 -0
  214. package/dist/qa-port-allocator.js +75 -0
  215. package/dist/qa-port-allocator.js.map +1 -0
  216. package/dist/qa-provisioner.d.ts +33 -0
  217. package/dist/qa-provisioner.d.ts.map +1 -0
  218. package/dist/qa-provisioner.js +141 -0
  219. package/dist/qa-provisioner.js.map +1 -0
  220. package/dist/qa-state.d.ts +93 -0
  221. package/dist/qa-state.d.ts.map +1 -0
  222. package/dist/qa-state.js +74 -0
  223. package/dist/qa-state.js.map +1 -0
  224. package/dist/queries/control-state.d.ts +25 -0
  225. package/dist/queries/control-state.d.ts.map +1 -0
  226. package/dist/queries/control-state.js +34 -0
  227. package/dist/queries/control-state.js.map +1 -0
  228. package/dist/queries/daemon-connection.d.ts +25 -0
  229. package/dist/queries/daemon-connection.d.ts.map +1 -0
  230. package/dist/queries/daemon-connection.js +28 -0
  231. package/dist/queries/daemon-connection.js.map +1 -0
  232. package/dist/queries/deliveries.d.ts +100 -0
  233. package/dist/queries/deliveries.d.ts.map +1 -0
  234. package/dist/queries/deliveries.js +184 -0
  235. package/dist/queries/deliveries.js.map +1 -0
  236. package/dist/queries/git-activity.d.ts +20 -0
  237. package/dist/queries/git-activity.d.ts.map +1 -0
  238. package/dist/queries/git-activity.js +22 -0
  239. package/dist/queries/git-activity.js.map +1 -0
  240. package/dist/queries/guards.d.ts +47 -0
  241. package/dist/queries/guards.d.ts.map +1 -0
  242. package/dist/queries/guards.js +138 -0
  243. package/dist/queries/guards.js.map +1 -0
  244. package/dist/queries/index.d.ts +19 -0
  245. package/dist/queries/index.d.ts.map +1 -0
  246. package/dist/queries/index.js +17 -0
  247. package/dist/queries/index.js.map +1 -0
  248. package/dist/queries/issues.d.ts +41 -0
  249. package/dist/queries/issues.d.ts.map +1 -0
  250. package/dist/queries/issues.js +67 -0
  251. package/dist/queries/issues.js.map +1 -0
  252. package/dist/queries/qa.d.ts +79 -0
  253. package/dist/queries/qa.d.ts.map +1 -0
  254. package/dist/queries/qa.js +85 -0
  255. package/dist/queries/qa.js.map +1 -0
  256. package/dist/queries/roles.d.ts +13 -0
  257. package/dist/queries/roles.d.ts.map +1 -0
  258. package/dist/queries/roles.js +39 -0
  259. package/dist/queries/roles.js.map +1 -0
  260. package/dist/queries/schemas.d.ts +777 -0
  261. package/dist/queries/schemas.d.ts.map +1 -0
  262. package/dist/queries/schemas.js +391 -0
  263. package/dist/queries/schemas.js.map +1 -0
  264. package/dist/queries/sessions.d.ts +64 -0
  265. package/dist/queries/sessions.d.ts.map +1 -0
  266. package/dist/queries/sessions.js +100 -0
  267. package/dist/queries/sessions.js.map +1 -0
  268. package/dist/queries/shared.d.ts +61 -0
  269. package/dist/queries/shared.d.ts.map +1 -0
  270. package/dist/queries/shared.js +187 -0
  271. package/dist/queries/shared.js.map +1 -0
  272. package/dist/queries/strategies.d.ts +69 -0
  273. package/dist/queries/strategies.d.ts.map +1 -0
  274. package/dist/queries/strategies.js +80 -0
  275. package/dist/queries/strategies.js.map +1 -0
  276. package/dist/queries/workflows.d.ts +17 -0
  277. package/dist/queries/workflows.d.ts.map +1 -0
  278. package/dist/queries/workflows.js +49 -0
  279. package/dist/queries/workflows.js.map +1 -0
  280. package/dist/queries/worktrees.d.ts +38 -0
  281. package/dist/queries/worktrees.d.ts.map +1 -0
  282. package/dist/queries/worktrees.js +37 -0
  283. package/dist/queries/worktrees.js.map +1 -0
  284. package/dist/self-update.d.ts +94 -0
  285. package/dist/self-update.d.ts.map +1 -0
  286. package/dist/self-update.js +438 -0
  287. package/dist/self-update.js.map +1 -0
  288. package/dist/session-lifecycle.d.ts +77 -0
  289. package/dist/session-lifecycle.d.ts.map +1 -0
  290. package/dist/session-lifecycle.js +379 -0
  291. package/dist/session-lifecycle.js.map +1 -0
  292. package/dist/shutdown-state.d.ts +17 -0
  293. package/dist/shutdown-state.d.ts.map +1 -0
  294. package/dist/shutdown-state.js +22 -0
  295. package/dist/shutdown-state.js.map +1 -0
  296. package/dist/spawn-cooldown.d.ts +14 -0
  297. package/dist/spawn-cooldown.d.ts.map +1 -0
  298. package/dist/spawn-cooldown.js +34 -0
  299. package/dist/spawn-cooldown.js.map +1 -0
  300. package/dist/spawn-environment.d.ts +35 -0
  301. package/dist/spawn-environment.d.ts.map +1 -0
  302. package/dist/spawn-environment.js +48 -0
  303. package/dist/spawn-environment.js.map +1 -0
  304. package/dist/spawner-liveness.d.ts +23 -0
  305. package/dist/spawner-liveness.d.ts.map +1 -0
  306. package/dist/spawner-liveness.js +99 -0
  307. package/dist/spawner-liveness.js.map +1 -0
  308. package/dist/spawner-resolution.d.ts +27 -0
  309. package/dist/spawner-resolution.d.ts.map +1 -0
  310. package/dist/spawner-resolution.js +99 -0
  311. package/dist/spawner-resolution.js.map +1 -0
  312. package/dist/spawner-timeout.d.ts +32 -0
  313. package/dist/spawner-timeout.d.ts.map +1 -0
  314. package/dist/spawner-timeout.js +124 -0
  315. package/dist/spawner-timeout.js.map +1 -0
  316. package/dist/spawner.d.ts +77 -0
  317. package/dist/spawner.d.ts.map +1 -0
  318. package/dist/spawner.js +734 -0
  319. package/dist/spawner.js.map +1 -0
  320. package/dist/strategy-completion.d.ts +110 -0
  321. package/dist/strategy-completion.d.ts.map +1 -0
  322. package/dist/strategy-completion.js +434 -0
  323. package/dist/strategy-completion.js.map +1 -0
  324. package/dist/strategy-engine.d.ts +47 -0
  325. package/dist/strategy-engine.d.ts.map +1 -0
  326. package/dist/strategy-engine.js +419 -0
  327. package/dist/strategy-engine.js.map +1 -0
  328. package/dist/strategy-executor.d.ts +93 -0
  329. package/dist/strategy-executor.d.ts.map +1 -0
  330. package/dist/strategy-executor.js +775 -0
  331. package/dist/strategy-executor.js.map +1 -0
  332. package/dist/strategy-lifecycle.d.ts +61 -0
  333. package/dist/strategy-lifecycle.d.ts.map +1 -0
  334. package/dist/strategy-lifecycle.js +516 -0
  335. package/dist/strategy-lifecycle.js.map +1 -0
  336. package/dist/strategy-merge.d.ts +72 -0
  337. package/dist/strategy-merge.d.ts.map +1 -0
  338. package/dist/strategy-merge.js +371 -0
  339. package/dist/strategy-merge.js.map +1 -0
  340. package/dist/strategy-prompt-builder.d.ts +62 -0
  341. package/dist/strategy-prompt-builder.d.ts.map +1 -0
  342. package/dist/strategy-prompt-builder.js +538 -0
  343. package/dist/strategy-prompt-builder.js.map +1 -0
  344. package/dist/strategy-provisioning.d.ts +16 -0
  345. package/dist/strategy-provisioning.d.ts.map +1 -0
  346. package/dist/strategy-provisioning.js +119 -0
  347. package/dist/strategy-provisioning.js.map +1 -0
  348. package/dist/strategy-team-state.d.ts +24 -0
  349. package/dist/strategy-team-state.d.ts.map +1 -0
  350. package/dist/strategy-team-state.js +43 -0
  351. package/dist/strategy-team-state.js.map +1 -0
  352. package/dist/strategy-teardown.d.ts +24 -0
  353. package/dist/strategy-teardown.d.ts.map +1 -0
  354. package/dist/strategy-teardown.js +158 -0
  355. package/dist/strategy-teardown.js.map +1 -0
  356. package/dist/strategy-worktree-state.d.ts +47 -0
  357. package/dist/strategy-worktree-state.d.ts.map +1 -0
  358. package/dist/strategy-worktree-state.js +104 -0
  359. package/dist/strategy-worktree-state.js.map +1 -0
  360. package/dist/supabase.d.ts +36 -0
  361. package/dist/supabase.d.ts.map +1 -0
  362. package/dist/supabase.js +50 -0
  363. package/dist/supabase.js.map +1 -0
  364. package/dist/task-converter.d.ts +61 -0
  365. package/dist/task-converter.d.ts.map +1 -0
  366. package/dist/task-converter.js +286 -0
  367. package/dist/task-converter.js.map +1 -0
  368. package/dist/task-dag-builder.d.ts +14 -0
  369. package/dist/task-dag-builder.d.ts.map +1 -0
  370. package/dist/task-dag-builder.js +17 -0
  371. package/dist/task-dag-builder.js.map +1 -0
  372. package/dist/team-prompt-base.d.ts +114 -0
  373. package/dist/team-prompt-base.d.ts.map +1 -0
  374. package/dist/team-prompt-base.js +531 -0
  375. package/dist/team-prompt-base.js.map +1 -0
  376. package/dist/team-prompt-variants.d.ts +27 -0
  377. package/dist/team-prompt-variants.d.ts.map +1 -0
  378. package/dist/team-prompt-variants.js +134 -0
  379. package/dist/team-prompt-variants.js.map +1 -0
  380. package/dist/team-spawner.d.ts +50 -0
  381. package/dist/team-spawner.d.ts.map +1 -0
  382. package/dist/team-spawner.js +410 -0
  383. package/dist/team-spawner.js.map +1 -0
  384. package/dist/telemetry-writer.d.ts +66 -0
  385. package/dist/telemetry-writer.d.ts.map +1 -0
  386. package/dist/telemetry-writer.js +96 -0
  387. package/dist/telemetry-writer.js.map +1 -0
  388. package/dist/trigger-executor.d.ts +56 -0
  389. package/dist/trigger-executor.d.ts.map +1 -0
  390. package/dist/trigger-executor.js +313 -0
  391. package/dist/trigger-executor.js.map +1 -0
  392. package/dist/types/config.d.ts +60 -0
  393. package/dist/types/config.d.ts.map +1 -0
  394. package/dist/types/config.js +5 -0
  395. package/dist/types/config.js.map +1 -0
  396. package/dist/types/dag.d.ts +53 -0
  397. package/dist/types/dag.d.ts.map +1 -0
  398. package/dist/types/dag.js +5 -0
  399. package/dist/types/dag.js.map +1 -0
  400. package/dist/types/delivery.d.ts +71 -0
  401. package/dist/types/delivery.d.ts.map +1 -0
  402. package/dist/types/delivery.js +5 -0
  403. package/dist/types/delivery.js.map +1 -0
  404. package/dist/types/index.d.ts +15 -0
  405. package/dist/types/index.d.ts.map +1 -0
  406. package/dist/types/index.js +15 -0
  407. package/dist/types/index.js.map +1 -0
  408. package/dist/types/issue.d.ts +22 -0
  409. package/dist/types/issue.d.ts.map +1 -0
  410. package/dist/types/issue.js +5 -0
  411. package/dist/types/issue.js.map +1 -0
  412. package/dist/types/merge.d.ts +28 -0
  413. package/dist/types/merge.d.ts.map +1 -0
  414. package/dist/types/merge.js +5 -0
  415. package/dist/types/merge.js.map +1 -0
  416. package/dist/types/session.d.ts +98 -0
  417. package/dist/types/session.d.ts.map +1 -0
  418. package/dist/types/session.js +5 -0
  419. package/dist/types/session.js.map +1 -0
  420. package/dist/types/strategy.d.ts +175 -0
  421. package/dist/types/strategy.d.ts.map +1 -0
  422. package/dist/types/strategy.js +5 -0
  423. package/dist/types/strategy.js.map +1 -0
  424. package/dist/types/workflow.d.ts +34 -0
  425. package/dist/types/workflow.d.ts.map +1 -0
  426. package/dist/types/workflow.js +9 -0
  427. package/dist/types/workflow.js.map +1 -0
  428. package/dist/types.d.ts +9 -0
  429. package/dist/types.d.ts.map +1 -0
  430. package/dist/types.js +9 -0
  431. package/dist/types.js.map +1 -0
  432. package/dist/unified-init.d.ts +16 -0
  433. package/dist/unified-init.d.ts.map +1 -0
  434. package/dist/unified-init.js +183 -0
  435. package/dist/unified-init.js.map +1 -0
  436. package/dist/unified-shell-config.d.ts +34 -0
  437. package/dist/unified-shell-config.d.ts.map +1 -0
  438. package/dist/unified-shell-config.js +238 -0
  439. package/dist/unified-shell-config.js.map +1 -0
  440. package/dist/unified-shell-status.d.ts +15 -0
  441. package/dist/unified-shell-status.d.ts.map +1 -0
  442. package/dist/unified-shell-status.js +100 -0
  443. package/dist/unified-shell-status.js.map +1 -0
  444. package/dist/unified-shell.d.ts +50 -0
  445. package/dist/unified-shell.d.ts.map +1 -0
  446. package/dist/unified-shell.js +682 -0
  447. package/dist/unified-shell.js.map +1 -0
  448. package/dist/version-check.d.ts +19 -0
  449. package/dist/version-check.d.ts.map +1 -0
  450. package/dist/version-check.js +67 -0
  451. package/dist/version-check.js.map +1 -0
  452. package/dist/workflow-engine.d.ts +95 -0
  453. package/dist/workflow-engine.d.ts.map +1 -0
  454. package/dist/workflow-engine.js +165 -0
  455. package/dist/workflow-engine.js.map +1 -0
  456. package/dist/worktree-merge.d.ts +23 -0
  457. package/dist/worktree-merge.d.ts.map +1 -0
  458. package/dist/worktree-merge.js +57 -0
  459. package/dist/worktree-merge.js.map +1 -0
  460. package/dist/worktree-safety.d.ts +48 -0
  461. package/dist/worktree-safety.d.ts.map +1 -0
  462. package/dist/worktree-safety.js +113 -0
  463. package/dist/worktree-safety.js.map +1 -0
  464. package/dist/worktree-strategy.d.ts +69 -0
  465. package/dist/worktree-strategy.d.ts.map +1 -0
  466. package/dist/worktree-strategy.js +214 -0
  467. package/dist/worktree-strategy.js.map +1 -0
  468. package/dist/worktree.d.ts +159 -0
  469. package/dist/worktree.d.ts.map +1 -0
  470. package/dist/worktree.js +512 -0
  471. package/dist/worktree.js.map +1 -0
  472. package/package.json +76 -0
  473. package/scripts/telora-daemon-wrapper.sh +31 -0
@@ -0,0 +1,279 @@
1
+ /**
2
+ * QA dev server spawn and health monitoring.
3
+ *
4
+ * Manages the lifecycle of Vite dev servers in QA worktrees:
5
+ * runs npm install, spawns `npm run dev` on an allocated port,
6
+ * streams stdout/stderr to log files, and provides stop/health helpers.
7
+ */
8
+ import { spawn, execFileSync } from 'node:child_process';
9
+ import { mkdirSync, existsSync, createWriteStream, readFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ // ── Internal state ───────────────────────────────────────────────────
12
+ /**
13
+ * Track spawned child processes so stopQaDevServer can reference them.
14
+ * Keyed by PID.
15
+ */
16
+ const activeProcesses = new Map();
17
+ // ── Constants ────────────────────────────────────────────────────────
18
+ /** Grace period in ms to wait for SIGTERM before escalating to SIGKILL. */
19
+ const STOP_GRACE_PERIOD_MS = 5000;
20
+ // ── Public API ───────────────────────────────────────────────────────
21
+ /**
22
+ * Install dependencies and spawn a dev server in a QA worktree.
23
+ *
24
+ * 1. Runs `npm install` synchronously in the worktree.
25
+ * 2. Spawns `npm run dev` with `PORT` env var set to the allocated port.
26
+ * 3. Pipes stdout/stderr to log files under `{logDir}/qa-{strategyId-prefix}/`.
27
+ * 4. Registers an on-exit handler that calls `onUnexpectedExit` if the
28
+ * process exits without an intentional stop.
29
+ *
30
+ * @returns The child process PID and log file paths.
31
+ * @throws If npm install fails or the dev server process cannot be spawned.
32
+ */
33
+ export function startQaDevServer(options) {
34
+ const { config, strategyId, worktreePath, port, onUnexpectedExit } = options;
35
+ // ── 1. Run npm install ───────────────────────────────────────────
36
+ console.log(`[qa-dev-server] Running npm install in ${worktreePath}...`);
37
+ try {
38
+ execFileSync('npm', ['install'], {
39
+ cwd: worktreePath,
40
+ stdio: 'pipe',
41
+ timeout: 300_000, // 5 min timeout for install
42
+ });
43
+ console.log(`[qa-dev-server] npm install completed.`);
44
+ }
45
+ catch (err) {
46
+ const message = err instanceof Error ? err.message : String(err);
47
+ throw new Error(`npm install failed in QA worktree: ${message}`);
48
+ }
49
+ // ── 2. Prepare log directory and files ───────────────────────────
50
+ const logSubDir = join(config.logDir, 'qa-' + strategyId.slice(0, 8));
51
+ if (!existsSync(logSubDir)) {
52
+ mkdirSync(logSubDir, { recursive: true, mode: 0o700 });
53
+ }
54
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
55
+ const stdoutPath = join(logSubDir, `dev-server-${timestamp}.stdout.log`);
56
+ const stderrPath = join(logSubDir, `dev-server-${timestamp}.stderr.log`);
57
+ const stdoutStream = createWriteStream(stdoutPath, { mode: 0o600 });
58
+ const stderrStream = createWriteStream(stderrPath, { mode: 0o600 });
59
+ // ── 3. Build QA Supabase env overrides ──────────────────────────
60
+ // The browser running in a remote QA session needs to reach the local
61
+ // Supabase instance via the daemon host's LAN IP, not 127.0.0.1.
62
+ // Replace the host portion of localSupabaseUrl with config.qaHost.
63
+ const qaSupabaseUrl = buildQaSupabaseUrl(config.localSupabaseUrl, config.qaHost);
64
+ const spawnEnv = {
65
+ ...process.env,
66
+ VITE_LOCAL_SUPABASE_URL: qaSupabaseUrl,
67
+ VITE_USE_LOCAL_SUPABASE: 'true',
68
+ };
69
+ if (config.localSupabaseAnonKey) {
70
+ spawnEnv.VITE_LOCAL_SUPABASE_ANON_KEY = config.localSupabaseAnonKey;
71
+ }
72
+ console.log(`[qa-dev-server] QA Supabase URL: ${qaSupabaseUrl}`);
73
+ // ── 4. Spawn dev server ──────────────────────────────────────────
74
+ const framework = detectFramework(worktreePath);
75
+ const { command, args, extraEnv } = buildDevServerCommand(framework, port);
76
+ console.log(`[qa-dev-server] Detected framework: ${framework}. Spawning ${command} ${args.join(' ')} on port ${port} in ${worktreePath}...`);
77
+ const proc = spawn(command, args, {
78
+ cwd: worktreePath,
79
+ env: { ...spawnEnv, ...extraEnv },
80
+ stdio: ['ignore', 'pipe', 'pipe'],
81
+ detached: false,
82
+ });
83
+ if (!proc.pid) {
84
+ stdoutStream.destroy();
85
+ stderrStream.destroy();
86
+ throw new Error('Failed to spawn dev server process: no PID returned');
87
+ }
88
+ const pid = proc.pid;
89
+ activeProcesses.set(pid, proc);
90
+ // Pipe output to log files
91
+ proc.stdout?.pipe(stdoutStream);
92
+ proc.stderr?.pipe(stderrStream);
93
+ // ── 5. Set up exit handler ───────────────────────────────────────
94
+ // Track whether the stop was intentional (via stopQaDevServer)
95
+ let intentionalStop = false;
96
+ proc.on('close', (code, signal) => {
97
+ activeProcesses.delete(pid);
98
+ stdoutStream.end();
99
+ stderrStream.end();
100
+ if (!intentionalStop) {
101
+ const exitInfo = signal
102
+ ? `killed by signal ${signal}`
103
+ : `exited with code ${code ?? 'unknown'}`;
104
+ const errorMsg = `Dev server process (PID ${pid}) ${exitInfo}`;
105
+ console.error(`[qa-dev-server] Unexpected exit: ${errorMsg}`);
106
+ onUnexpectedExit(errorMsg);
107
+ }
108
+ else {
109
+ console.log(`[qa-dev-server] Dev server (PID ${pid}) stopped gracefully.`);
110
+ }
111
+ });
112
+ proc.on('error', (err) => {
113
+ activeProcesses.delete(pid);
114
+ stdoutStream.end();
115
+ stderrStream.end();
116
+ if (!intentionalStop) {
117
+ const errorMsg = `Dev server process error: ${err.message}`;
118
+ console.error(`[qa-dev-server] ${errorMsg}`);
119
+ onUnexpectedExit(errorMsg);
120
+ }
121
+ });
122
+ // Attach the intentional-stop flag setter to the process object
123
+ // so stopQaDevServer can mark it before sending signals.
124
+ proc._qaIntentionalStop = () => {
125
+ intentionalStop = true;
126
+ };
127
+ console.log(`[qa-dev-server] Dev server started (PID ${pid}, port ${port}).`);
128
+ return { pid, stdoutPath, stderrPath };
129
+ }
130
+ /**
131
+ * Gracefully stop a running QA dev server.
132
+ *
133
+ * Sends SIGTERM first, then escalates to SIGKILL if the process
134
+ * does not exit within the grace period.
135
+ */
136
+ export async function stopQaDevServer(pid) {
137
+ const proc = activeProcesses.get(pid);
138
+ // Mark as intentional stop if we have the process reference
139
+ if (proc) {
140
+ const extended = proc;
141
+ extended._qaIntentionalStop?.();
142
+ }
143
+ // Send SIGTERM
144
+ if (!isQaDevServerRunning(pid)) {
145
+ activeProcesses.delete(pid);
146
+ return;
147
+ }
148
+ console.log(`[qa-dev-server] Sending SIGTERM to PID ${pid}...`);
149
+ try {
150
+ process.kill(pid, 'SIGTERM');
151
+ }
152
+ catch {
153
+ // Process already gone
154
+ activeProcesses.delete(pid);
155
+ return;
156
+ }
157
+ // Wait for graceful shutdown
158
+ const exited = await waitForExit(pid, STOP_GRACE_PERIOD_MS);
159
+ if (exited) {
160
+ activeProcesses.delete(pid);
161
+ return;
162
+ }
163
+ // Escalate to SIGKILL
164
+ console.warn(`[qa-dev-server] PID ${pid} did not exit after SIGTERM, sending SIGKILL...`);
165
+ try {
166
+ process.kill(pid, 'SIGKILL');
167
+ }
168
+ catch {
169
+ // Process already gone
170
+ }
171
+ activeProcesses.delete(pid);
172
+ }
173
+ /**
174
+ * Check if a QA dev server process is still alive.
175
+ *
176
+ * Uses the `process.kill(pid, 0)` pattern which sends no signal
177
+ * but throws if the process does not exist.
178
+ */
179
+ export function isQaDevServerRunning(pid) {
180
+ try {
181
+ process.kill(pid, 0);
182
+ return true;
183
+ }
184
+ catch {
185
+ return false;
186
+ }
187
+ }
188
+ // ── Helpers ──────────────────────────────────────────────────────────
189
+ /**
190
+ * Build the browser-accessible Supabase URL for a QA environment.
191
+ *
192
+ * The local Supabase typically listens on 127.0.0.1:54321, but the QA
193
+ * browser is remote (e.g. on a different machine). Replace the host
194
+ * portion with the daemon's LAN IP (qaHost) so the browser can reach it.
195
+ */
196
+ export function buildQaSupabaseUrl(localSupabaseUrl, qaHost) {
197
+ try {
198
+ const parsed = new URL(localSupabaseUrl);
199
+ parsed.hostname = qaHost;
200
+ return parsed.toString().replace(/\/$/, '');
201
+ }
202
+ catch {
203
+ // If parsing fails, fall back to simple replacement
204
+ return `http://${qaHost}:54321`;
205
+ }
206
+ }
207
+ /**
208
+ * Detect the dev framework from the project's package.json.
209
+ * Checks devDependencies and dependencies for known frameworks.
210
+ */
211
+ export function detectFramework(worktreePath) {
212
+ try {
213
+ const pkgJson = JSON.parse(readFileSync(join(worktreePath, 'package.json'), 'utf-8'));
214
+ const allDeps = { ...pkgJson.dependencies, ...pkgJson.devDependencies };
215
+ if (allDeps['next'])
216
+ return 'nextjs';
217
+ if (allDeps['vite'])
218
+ return 'vite';
219
+ // Check the dev script as a fallback
220
+ const devScript = pkgJson.scripts?.dev ?? '';
221
+ if (devScript.includes('next'))
222
+ return 'nextjs';
223
+ if (devScript.includes('vite'))
224
+ return 'vite';
225
+ return 'unknown';
226
+ }
227
+ catch {
228
+ return 'unknown';
229
+ }
230
+ }
231
+ /**
232
+ * Build the spawn command and args for starting a dev server
233
+ * based on the detected framework.
234
+ */
235
+ function buildDevServerCommand(framework, port) {
236
+ switch (framework) {
237
+ case 'nextjs':
238
+ // Next.js reads PORT and HOSTNAME env vars since v13
239
+ return {
240
+ command: 'npm',
241
+ args: ['run', 'dev'],
242
+ extraEnv: { PORT: String(port), HOSTNAME: '0.0.0.0' },
243
+ };
244
+ case 'vite':
245
+ return {
246
+ command: 'npx',
247
+ args: ['vite', '--port', String(port), '--host', '0.0.0.0'],
248
+ extraEnv: {},
249
+ };
250
+ default:
251
+ // Fallback: use npm run dev with PORT env var (most frameworks respect this)
252
+ return {
253
+ command: 'npm',
254
+ args: ['run', 'dev'],
255
+ extraEnv: { PORT: String(port), HOSTNAME: '0.0.0.0' },
256
+ };
257
+ }
258
+ }
259
+ /**
260
+ * Wait for a process to exit, polling at short intervals.
261
+ * Returns true if the process exited within the timeout.
262
+ */
263
+ function waitForExit(pid, timeoutMs) {
264
+ return new Promise((resolve) => {
265
+ const startTime = Date.now();
266
+ const interval = setInterval(() => {
267
+ if (!isQaDevServerRunning(pid)) {
268
+ clearInterval(interval);
269
+ resolve(true);
270
+ return;
271
+ }
272
+ if (Date.now() - startTime >= timeoutMs) {
273
+ clearInterval(interval);
274
+ resolve(false);
275
+ }
276
+ }, 250);
277
+ });
278
+ }
279
+ //# sourceMappingURL=qa-dev-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa-dev-server.js","sourceRoot":"","sources":["../src/qa-dev-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * QA environment orchestration.
3
+ *
4
+ * Called by the daemon poll loop to process pending QA requests.
5
+ * Coordinates provisioning and teardown using the lower-level modules.
6
+ */
7
+ import type { DaemonConfig, StrategyWorktreeInfo } from './types.js';
8
+ import type { StartQaDevServerOptions, StartQaDevServerResult } from './qa-dev-server.js';
9
+ import type { QaEnvironmentState, ProductQaEnvironmentState } from './qa-state.js';
10
+ /** Shape of a QA request row from the API query. */
11
+ export interface QaRequest {
12
+ strategy_id: string;
13
+ strategy_name: string;
14
+ qa_status: string;
15
+ product_id: string;
16
+ }
17
+ /** Shape of a deactivated QA strategy row from the API query. */
18
+ export interface DeactivatedQaStrategy {
19
+ strategy_id: string;
20
+ strategy_name: string;
21
+ qa_status: string;
22
+ strategy_status: string;
23
+ product_id: string;
24
+ }
25
+ /** Injectable dependencies for testing. */
26
+ export interface QaOrchestratorDeps {
27
+ getQaRequests: (productId: string) => Promise<QaRequest[]>;
28
+ getDeactivatedQaStrategies: (productId: string) => Promise<DeactivatedQaStrategy[]>;
29
+ updateQaStatus: (strategyId: string, fields: Record<string, unknown>) => Promise<void>;
30
+ getStrategyWorktree: (strategyId: string) => StrategyWorktreeInfo | undefined;
31
+ symlinkEnvFiles: (repoPath: string, worktreePath: string) => void;
32
+ allocatePort: (config: DaemonConfig) => Promise<number>;
33
+ buildQaUrl: (config: DaemonConfig, port: number) => string;
34
+ startQaDevServer: (options: StartQaDevServerOptions) => StartQaDevServerResult;
35
+ stopQaDevServer: (pid: number) => Promise<void>;
36
+ getQaEnvironment: (strategyId: string) => QaEnvironmentState | undefined;
37
+ setQaEnvironment: (strategyId: string, state: QaEnvironmentState) => void;
38
+ removeQaEnvironment: (strategyId: string) => boolean;
39
+ hasActiveQaEnvironment: (strategyId: string) => boolean;
40
+ }
41
+ /**
42
+ * Check for and process pending QA requests.
43
+ * Called each poll cycle from listener.ts.
44
+ */
45
+ export declare function checkQaRequests(config: DaemonConfig, deps?: QaOrchestratorDeps): Promise<void>;
46
+ /**
47
+ * Check for strategies that have been deactivated while QA was running.
48
+ * Tears down any QA environment whose strategy is no longer in 'active' status.
49
+ * Called each poll cycle from listener.ts.
50
+ */
51
+ export declare function checkQaForDeactivatedStrategies(config: DaemonConfig, deps?: QaOrchestratorDeps): Promise<void>;
52
+ /** Shape of a product QA request row from the API query. */
53
+ export interface ProductQaRequest {
54
+ product_id: string;
55
+ product_name: string;
56
+ qa_status: string;
57
+ }
58
+ /** Injectable dependencies for product QA testing. */
59
+ export interface ProductQaOrchestratorDeps {
60
+ getProductQaRequests: (productId: string) => Promise<ProductQaRequest[]>;
61
+ updateProductQaStatus: (productId: string, fields: Record<string, unknown>) => Promise<void>;
62
+ createQaWorktree: (config: DaemonConfig, branchName: string, id: string) => string;
63
+ removeQaWorktree: (repoPath: string, worktreePath: string) => void;
64
+ symlinkEnvFiles: (repoPath: string, worktreePath: string) => void;
65
+ allocatePort: (config: DaemonConfig) => Promise<number>;
66
+ buildQaUrl: (config: DaemonConfig, port: number) => string;
67
+ startQaDevServer: (options: StartQaDevServerOptions) => StartQaDevServerResult;
68
+ stopQaDevServer: (pid: number) => Promise<void>;
69
+ getProductQaEnvironment: (productId: string) => ProductQaEnvironmentState | undefined;
70
+ setProductQaEnvironment: (productId: string, state: ProductQaEnvironmentState) => void;
71
+ removeProductQaEnvironment: (productId: string) => boolean;
72
+ hasActiveProductQaEnvironment: (productId: string) => boolean;
73
+ }
74
+ /**
75
+ * Check for and process pending product QA requests.
76
+ * Called each poll cycle from listener.ts.
77
+ */
78
+ export declare function checkProductQaRequests(config: DaemonConfig, deps?: ProductQaOrchestratorDeps): Promise<void>;
79
+ //# sourceMappingURL=qa-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa-orchestrator.d.ts","sourceRoot":"","sources":["../src/qa-orchestrator.ts"],"names":[],"mappings":"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"}