@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,66 @@
1
+ /**
2
+ * Telemetry Postgres writer.
3
+ *
4
+ * Buffers incoming telemetry data (metrics and events) and flushes
5
+ * to agent_telemetry_metrics / agent_telemetry_events tables via
6
+ * the Telora API (service role). Flushes on interval or buffer size.
7
+ */
8
+ export interface TelemetryMetricRow {
9
+ organization_id: string;
10
+ strategy_id: string | null;
11
+ delivery_id: string | null;
12
+ session_id: string | null;
13
+ input_tokens: number;
14
+ output_tokens: number;
15
+ cache_read_tokens: number;
16
+ cache_creation_tokens: number;
17
+ cost_usd: number;
18
+ active_time_ms: number;
19
+ tool_call_count: number;
20
+ tool_error_count: number;
21
+ model: string | null;
22
+ metadata: Record<string, unknown> | null;
23
+ period_start: string;
24
+ period_end: string;
25
+ }
26
+ export interface TelemetryEventRow {
27
+ organization_id: string;
28
+ strategy_id: string | null;
29
+ delivery_id: string | null;
30
+ session_id: string | null;
31
+ event_type: string;
32
+ tool_name: string | null;
33
+ success: boolean | null;
34
+ duration_ms: number | null;
35
+ error_message: string | null;
36
+ metadata: Record<string, unknown> | null;
37
+ event_timestamp: string;
38
+ }
39
+ /**
40
+ * Initialize the telemetry writer with the configured flush interval.
41
+ */
42
+ export declare function initTelemetryWriter(intervalMs: number): void;
43
+ /**
44
+ * Buffer a metrics row for batch insert.
45
+ */
46
+ export declare function bufferMetric(row: TelemetryMetricRow): void;
47
+ /**
48
+ * Buffer an event row for batch insert.
49
+ */
50
+ export declare function bufferEvent(row: TelemetryEventRow): void;
51
+ /**
52
+ * Flush all buffered metrics and events to Postgres.
53
+ */
54
+ export declare function flush(): Promise<void>;
55
+ /**
56
+ * Stop the writer — flush remaining data and clear the timer.
57
+ */
58
+ export declare function stopTelemetryWriter(): Promise<void>;
59
+ /**
60
+ * Get current buffer sizes (for diagnostics).
61
+ */
62
+ export declare function getBufferStats(): {
63
+ metrics: number;
64
+ events: number;
65
+ };
66
+ //# sourceMappingURL=telemetry-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-writer.d.ts","sourceRoot":"","sources":["../src/telemetry-writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;CACzB;AAWD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAO5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAO1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAOxD;AAED;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C3C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAEpE"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Telemetry Postgres writer.
3
+ *
4
+ * Buffers incoming telemetry data (metrics and events) and flushes
5
+ * to agent_telemetry_metrics / agent_telemetry_events tables via
6
+ * the Telora API (service role). Flushes on interval or buffer size.
7
+ */
8
+ import { callApi } from './queries/shared.js';
9
+ // ── Writer ───────────────────────────────────────────────────────────
10
+ const MAX_BUFFER_SIZE = 100;
11
+ let metricsBuffer = [];
12
+ let eventsBuffer = [];
13
+ let flushTimer = null;
14
+ let flushIntervalMs = 5000;
15
+ /**
16
+ * Initialize the telemetry writer with the configured flush interval.
17
+ */
18
+ export function initTelemetryWriter(intervalMs) {
19
+ flushIntervalMs = intervalMs;
20
+ flushTimer = setInterval(() => {
21
+ flush().catch(err => console.warn('[telemetry-writer] Periodic flush failed (non-fatal):', err instanceof Error ? err.message : String(err)));
22
+ }, flushIntervalMs);
23
+ }
24
+ /**
25
+ * Buffer a metrics row for batch insert.
26
+ */
27
+ export function bufferMetric(row) {
28
+ metricsBuffer.push(row);
29
+ if (metricsBuffer.length >= MAX_BUFFER_SIZE) {
30
+ flush().catch(err => console.warn('[telemetry-writer] Buffer overflow flush failed:', err instanceof Error ? err.message : String(err)));
31
+ }
32
+ }
33
+ /**
34
+ * Buffer an event row for batch insert.
35
+ */
36
+ export function bufferEvent(row) {
37
+ eventsBuffer.push(row);
38
+ if (eventsBuffer.length >= MAX_BUFFER_SIZE) {
39
+ flush().catch(err => console.warn('[telemetry-writer] Buffer overflow flush failed:', err instanceof Error ? err.message : String(err)));
40
+ }
41
+ }
42
+ /**
43
+ * Flush all buffered metrics and events to Postgres.
44
+ */
45
+ export async function flush() {
46
+ const metrics = metricsBuffer;
47
+ const events = eventsBuffer;
48
+ metricsBuffer = [];
49
+ eventsBuffer = [];
50
+ if (metrics.length === 0 && events.length === 0)
51
+ return;
52
+ const promises = [];
53
+ if (metrics.length > 0) {
54
+ promises.push(callApi('telemetry-ingest-metrics', { rows: metrics })
55
+ .then(() => {
56
+ console.debug(`[telemetry-writer] Flushed ${metrics.length} metric row(s)`);
57
+ })
58
+ .catch(err => {
59
+ console.warn(`[telemetry-writer] Failed to flush ${metrics.length} metric row(s):`, err instanceof Error ? err.message : String(err));
60
+ // Re-buffer on failure (with size cap to prevent unbounded growth)
61
+ if (metricsBuffer.length + metrics.length <= MAX_BUFFER_SIZE * 2) {
62
+ metricsBuffer.unshift(...metrics);
63
+ }
64
+ }));
65
+ }
66
+ if (events.length > 0) {
67
+ promises.push(callApi('telemetry-ingest-events', { rows: events })
68
+ .then(() => {
69
+ console.debug(`[telemetry-writer] Flushed ${events.length} event row(s)`);
70
+ })
71
+ .catch(err => {
72
+ console.warn(`[telemetry-writer] Failed to flush ${events.length} event row(s):`, err instanceof Error ? err.message : String(err));
73
+ if (eventsBuffer.length + events.length <= MAX_BUFFER_SIZE * 2) {
74
+ eventsBuffer.unshift(...events);
75
+ }
76
+ }));
77
+ }
78
+ await Promise.allSettled(promises);
79
+ }
80
+ /**
81
+ * Stop the writer — flush remaining data and clear the timer.
82
+ */
83
+ export async function stopTelemetryWriter() {
84
+ if (flushTimer) {
85
+ clearInterval(flushTimer);
86
+ flushTimer = null;
87
+ }
88
+ await flush();
89
+ }
90
+ /**
91
+ * Get current buffer sizes (for diagnostics).
92
+ */
93
+ export function getBufferStats() {
94
+ return { metrics: metricsBuffer.length, events: eventsBuffer.length };
95
+ }
96
+ //# sourceMappingURL=telemetry-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-writer.js","sourceRoot":"","sources":["../src/telemetry-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Trigger execution for the guard engine.
3
+ *
4
+ * Contains all trigger action type executors: block_transition, emit_warning,
5
+ * spawn_agent, create_issue, inject_prompt, manage_context, set_field, notify.
6
+ * Also includes the main executeTriggers orchestrator and template interpolation.
7
+ *
8
+ * Extracted from guard-engine.ts to improve maintainability.
9
+ */
10
+ import type { WorkflowGuard, WorkflowTrigger, GuardEvalResult, TransitionGuardResult, TriggerExecutionTarget, FactoryTemplateContext } from './types.js';
11
+ /**
12
+ * Template interpolation for trigger templates.
13
+ * Supports guard variables and optional factory-specific variables.
14
+ *
15
+ * Guard variables: {{guard_name}}, {{condition_summary}}, {{observed_values}}, {{policy_name}}
16
+ * Factory variables (when factoryCtx provided): {{instance_id}}, {{work_unit_title}},
17
+ * {{work_unit_description}}, {{cycle_number}}, {{gate_type}}, {{gate_output}},
18
+ * {{tokens_used}}, {{token_budget}}, {{wall_clock_elapsed}}
19
+ */
20
+ export declare function interpolateTemplate(template: string | null, evalResult: GuardEvalResult | null, factoryCtx?: FactoryTemplateContext | null): string;
21
+ /**
22
+ * Execute a block_transition trigger.
23
+ * Sets delivery to paused and creates a transition_blocks record.
24
+ */
25
+ export declare function executeBlockTransition(deliveryId: string, organizationId: string, transitionId: string, guard: WorkflowGuard | null, trigger: WorkflowTrigger, evaluationId: string): Promise<string>;
26
+ /**
27
+ * Execute an emit_warning trigger.
28
+ * Logs the warning.
29
+ */
30
+ export declare function executeEmitWarning(guard: WorkflowGuard | null, evalResult: GuardEvalResult | null): void;
31
+ /**
32
+ * Execute a spawn_agent trigger.
33
+ * Creates a new agent session for the specified role.
34
+ */
35
+ export declare function executeSpawnAgent(deliveryId: string, organizationId: string, trigger: WorkflowTrigger): Promise<string>;
36
+ /**
37
+ * Execute a create_issue trigger.
38
+ * Creates a bug or task on the delivery.
39
+ */
40
+ export declare function executeCreateIssue(deliveryId: string, trigger: WorkflowTrigger, evalResult: GuardEvalResult | null): Promise<string>;
41
+ /**
42
+ * Execute all triggers from a guard evaluation result.
43
+ * Returns metadata about what was executed.
44
+ *
45
+ * @param target Optional TriggerExecutionTarget for factory context. When
46
+ * provided, inject_prompt and manage_context triggers use it. When absent
47
+ * (daemon delivery context), those trigger types log a warning and skip.
48
+ * @param factoryCtx Optional factory template context for prompt interpolation.
49
+ */
50
+ export declare function executeTriggers(deliveryId: string, organizationId: string, transitionId: string, triggersToExecute: TransitionGuardResult['triggers_to_execute'], target?: TriggerExecutionTarget | null, factoryCtx?: FactoryTemplateContext | null): Promise<{
51
+ blocked: boolean;
52
+ blockId: string | null;
53
+ spawnedSessionIds: string[];
54
+ createdIssueIds: string[];
55
+ }>;
56
+ //# sourceMappingURL=trigger-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-executor.d.ts","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,qBAAqB,EAErB,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAepB;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,eAAe,GAAG,IAAI,EAClC,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACzC,MAAM,CA2CR;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,GACjC,IAAI,CASN;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,eAAe,GAAG,IAAI,GACjC,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAoID;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,EAC/D,MAAM,CAAC,EAAE,sBAAsB,GAAG,IAAI,EACtC,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACzC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC,CA+ED"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Trigger execution for the guard engine.
3
+ *
4
+ * Contains all trigger action type executors: block_transition, emit_warning,
5
+ * spawn_agent, create_issue, inject_prompt, manage_context, set_field, notify.
6
+ * Also includes the main executeTriggers orchestrator and template interpolation.
7
+ *
8
+ * Extracted from guard-engine.ts to improve maintainability.
9
+ */
10
+ import { createSession, updateDeliveryStatus, } from './supabase.js';
11
+ import { createTransitionEvaluation, createTransitionBlock, createIssue, } from './queries/guards.js';
12
+ // ============================================
13
+ // Template Interpolation
14
+ // ============================================
15
+ /**
16
+ * Template interpolation for trigger templates.
17
+ * Supports guard variables and optional factory-specific variables.
18
+ *
19
+ * Guard variables: {{guard_name}}, {{condition_summary}}, {{observed_values}}, {{policy_name}}
20
+ * Factory variables (when factoryCtx provided): {{instance_id}}, {{work_unit_title}},
21
+ * {{work_unit_description}}, {{cycle_number}}, {{gate_type}}, {{gate_output}},
22
+ * {{tokens_used}}, {{token_budget}}, {{wall_clock_elapsed}}
23
+ */
24
+ export function interpolateTemplate(template, evalResult, factoryCtx) {
25
+ if (!template)
26
+ return '';
27
+ let result = template;
28
+ if (evalResult) {
29
+ const conditionSummary = evalResult.condition_details
30
+ .filter(d => !d.passed)
31
+ .map(d => d.message)
32
+ .join('\n- ');
33
+ const observedValues = evalResult.condition_details
34
+ .map(d => `${d.condition_type}: ${String(d.observed_value)}`)
35
+ .join(', ');
36
+ result = result
37
+ .replace(/\{\{guard_name\}\}/g, evalResult.guard_name)
38
+ .replace(/\{\{policy_name\}\}/g, evalResult.guard_name) // backward compat
39
+ .replace(/\{\{condition_summary\}\}/g, conditionSummary || 'No failed conditions')
40
+ .replace(/\{\{observed_values\}\}/g, observedValues || 'No values');
41
+ }
42
+ // Factory-specific variables -- resolve to empty string when absent
43
+ const fCtx = factoryCtx ?? {};
44
+ const MAX_GATE_OUTPUT = 2000;
45
+ const gateOutput = fCtx.gateOutput
46
+ ? (fCtx.gateOutput.length > MAX_GATE_OUTPUT
47
+ ? fCtx.gateOutput.slice(0, MAX_GATE_OUTPUT) + '... (truncated)'
48
+ : fCtx.gateOutput)
49
+ : '';
50
+ result = result
51
+ .replace(/\{\{instance_id\}\}/g, fCtx.instanceId ?? '')
52
+ .replace(/\{\{work_unit_title\}\}/g, fCtx.workUnitTitle ?? '')
53
+ .replace(/\{\{work_unit_description\}\}/g, fCtx.workUnitDescription ?? '')
54
+ .replace(/\{\{cycle_number\}\}/g, fCtx.cycleNumber != null ? String(fCtx.cycleNumber) : '')
55
+ .replace(/\{\{gate_type\}\}/g, fCtx.gateType ?? '')
56
+ .replace(/\{\{gate_output\}\}/g, gateOutput)
57
+ .replace(/\{\{tokens_used\}\}/g, fCtx.tokensUsed != null ? String(fCtx.tokensUsed) : '')
58
+ .replace(/\{\{token_budget\}\}/g, fCtx.tokenBudget != null ? String(fCtx.tokenBudget) : 'unlimited')
59
+ .replace(/\{\{wall_clock_elapsed\}\}/g, fCtx.wallClockElapsed ?? '');
60
+ return result;
61
+ }
62
+ // ============================================
63
+ // Individual Trigger Executors
64
+ // ============================================
65
+ /**
66
+ * Execute a block_transition trigger.
67
+ * Sets delivery to paused and creates a transition_blocks record.
68
+ */
69
+ export async function executeBlockTransition(deliveryId, organizationId, transitionId, guard, trigger, evaluationId) {
70
+ // Use decision_paths from trigger, or fallback defaults
71
+ let decisionPaths = trigger.decision_paths ?? [];
72
+ if (decisionPaths.length === 0) {
73
+ decisionPaths = [
74
+ { path: 'retry', label: 'Retry', directive_template: null },
75
+ { path: 'override', label: 'Override and advance', directive_template: null },
76
+ ];
77
+ }
78
+ // Set delivery to paused
79
+ await updateDeliveryStatus(deliveryId, 'paused');
80
+ // Create block record
81
+ const blockId = await createTransitionBlock({
82
+ entity_type: 'delivery',
83
+ entity_id: deliveryId,
84
+ organization_id: organizationId,
85
+ transition_id: transitionId,
86
+ guard_id: guard?.id ?? null,
87
+ evaluation_id: evaluationId,
88
+ decision_paths: decisionPaths,
89
+ });
90
+ console.log(`[guard] Blocked transition for delivery ${deliveryId} -- guard "${guard?.name ?? 'unknown'}" (block ${blockId})`);
91
+ return blockId;
92
+ }
93
+ /**
94
+ * Execute an emit_warning trigger.
95
+ * Logs the warning.
96
+ */
97
+ export function executeEmitWarning(guard, evalResult) {
98
+ const failedConditions = evalResult?.condition_details
99
+ .filter(d => !d.passed)
100
+ .map(d => d.message)
101
+ .join('; ');
102
+ console.warn(`[guard] Warning from "${guard?.name ?? 'trigger'}": ${failedConditions || 'conditions not met'}`);
103
+ }
104
+ /**
105
+ * Execute a spawn_agent trigger.
106
+ * Creates a new agent session for the specified role.
107
+ */
108
+ export async function executeSpawnAgent(deliveryId, organizationId, trigger) {
109
+ const config = trigger.action_config;
110
+ const agentRoleId = config.agent_role_id;
111
+ if (!agentRoleId) {
112
+ throw new Error('spawn_agent trigger missing agent_role_id in action_config');
113
+ }
114
+ const session = await createSession({
115
+ organizationId,
116
+ roleId: agentRoleId,
117
+ issueId: null,
118
+ deliveryId,
119
+ branchName: `guard-agent/${deliveryId.slice(0, 8)}`,
120
+ });
121
+ await updateDeliveryStatus(deliveryId, 'paused');
122
+ console.log(`[guard] Spawned guard agent (session ${session.id}) for delivery ${deliveryId}`);
123
+ return session.id;
124
+ }
125
+ /**
126
+ * Execute a create_issue trigger.
127
+ * Creates a bug or task on the delivery.
128
+ */
129
+ export async function executeCreateIssue(deliveryId, trigger, evalResult) {
130
+ const config = trigger.action_config;
131
+ const title = interpolateTemplate(config.title ?? `Guard "${evalResult?.guard_name ?? 'unknown'}" -- action required`, evalResult);
132
+ const description = interpolateTemplate(config.description ?? null, evalResult);
133
+ const issueType = config.issue_type ?? 'Bug';
134
+ const priority = config.priority ?? null;
135
+ const issueId = await createIssue(deliveryId, title, description, issueType, priority);
136
+ console.log(`[guard] Created issue "${title}" on delivery ${deliveryId} (issue ${issueId})`);
137
+ return issueId;
138
+ }
139
+ // -- Whitelist for set_field action type --
140
+ const SET_FIELD_WHITELIST = new Set([
141
+ 'status',
142
+ 'execution_status',
143
+ 'description',
144
+ 'tech_context',
145
+ ]);
146
+ /**
147
+ * Execute an inject_prompt trigger.
148
+ * Delivers a prompt template to the active AI session via TriggerExecutionTarget.
149
+ */
150
+ async function executeInjectPrompt(trigger, evalResult, target, factoryCtx) {
151
+ const prompt = interpolateTemplate(trigger.directive_template, evalResult, factoryCtx);
152
+ if (!prompt) {
153
+ console.warn('[guard] inject_prompt: empty template -- skipped');
154
+ return;
155
+ }
156
+ await target.injectPrompt(prompt);
157
+ }
158
+ /**
159
+ * Execute a manage_context trigger.
160
+ * Dispatches context management directives to the active AI session.
161
+ */
162
+ async function executeManageContext(trigger, target) {
163
+ const config = trigger.action_config;
164
+ const directiveType = config.directive;
165
+ if (!directiveType) {
166
+ throw new Error('manage_context trigger missing required "directive" in action_config');
167
+ }
168
+ const directive = {
169
+ type: directiveType,
170
+ files: config.files,
171
+ };
172
+ await target.manageContext(directive);
173
+ }
174
+ /**
175
+ * Execute a set_field trigger.
176
+ * Updates a whitelisted field on the entity.
177
+ */
178
+ async function executeSetField(trigger, evalResult, target, factoryCtx) {
179
+ const config = trigger.action_config;
180
+ const fieldName = config.field_name;
181
+ let fieldValue = config.field_value;
182
+ if (!fieldName) {
183
+ console.warn('[guard] set_field: missing field_name in action_config -- skipped');
184
+ return;
185
+ }
186
+ // Interpolate string values
187
+ if (typeof fieldValue === 'string') {
188
+ fieldValue = interpolateTemplate(fieldValue, evalResult, factoryCtx);
189
+ }
190
+ // For factory context, delegate to target
191
+ if (target) {
192
+ await target.setField(fieldName, fieldValue);
193
+ return;
194
+ }
195
+ // For daemon context, check whitelist
196
+ if (!SET_FIELD_WHITELIST.has(fieldName)) {
197
+ console.warn(`[guard] set_field: field "${fieldName}" is not in whitelist -- skipped`);
198
+ return;
199
+ }
200
+ // Daemon-context set_field is a no-op for now (delivery field updates require
201
+ // API calls that vary per field). Log the intent for debugging.
202
+ console.log(`[guard] set_field: would set ${fieldName} = ${JSON.stringify(fieldValue)} (daemon context -- not implemented)`);
203
+ }
204
+ /**
205
+ * Execute a notify trigger.
206
+ * Sends notifications to symbolic recipients.
207
+ */
208
+ async function executeNotify(trigger, evalResult, target, factoryCtx) {
209
+ const config = trigger.action_config;
210
+ const recipients = config.recipients ?? [];
211
+ const messageTemplate = config.message_template ?? null;
212
+ const message = interpolateTemplate(messageTemplate, evalResult, factoryCtx);
213
+ if (target) {
214
+ await target.notify(recipients, message || '');
215
+ return;
216
+ }
217
+ // Structured log fallback when no execution target is available
218
+ for (const recipient of recipients) {
219
+ switch (recipient) {
220
+ case 'team_lead':
221
+ console.warn(`[guard] notify team_lead: ${message || '(no message)'}`);
222
+ break;
223
+ case 'escalation':
224
+ console.warn(`[guard] notify escalation: ${message || '(no message)'}`);
225
+ break;
226
+ default:
227
+ console.warn(`[guard] notify: unknown recipient "${recipient}" -- skipped`);
228
+ }
229
+ }
230
+ }
231
+ // ============================================
232
+ // Trigger Execution Orchestrator
233
+ // ============================================
234
+ /**
235
+ * Execute all triggers from a guard evaluation result.
236
+ * Returns metadata about what was executed.
237
+ *
238
+ * @param target Optional TriggerExecutionTarget for factory context. When
239
+ * provided, inject_prompt and manage_context triggers use it. When absent
240
+ * (daemon delivery context), those trigger types log a warning and skip.
241
+ * @param factoryCtx Optional factory template context for prompt interpolation.
242
+ */
243
+ export async function executeTriggers(deliveryId, organizationId, transitionId, triggersToExecute, target, factoryCtx) {
244
+ let blocked = false;
245
+ let blockId = null;
246
+ const spawnedSessionIds = [];
247
+ const createdIssueIds = [];
248
+ for (const { trigger, guard, eval_result } of triggersToExecute) {
249
+ try {
250
+ switch (trigger.action_type) {
251
+ case 'block_transition': {
252
+ // Record the evaluation first to get an ID for the block
253
+ const evalId = await createTransitionEvaluation({
254
+ organization_id: organizationId,
255
+ entity_type: 'delivery',
256
+ entity_id: deliveryId,
257
+ transition_id: transitionId,
258
+ guard_id: guard?.id ?? null,
259
+ result: 'failed',
260
+ blocked: true,
261
+ enforcement_level: guard?.enforcement ?? 'hard',
262
+ evaluation_details: { conditions: eval_result?.condition_details ?? [] },
263
+ });
264
+ blockId = await executeBlockTransition(deliveryId, organizationId, transitionId, guard, trigger, evalId);
265
+ blocked = true;
266
+ break;
267
+ }
268
+ case 'emit_warning':
269
+ executeEmitWarning(guard, eval_result);
270
+ break;
271
+ case 'spawn_agent': {
272
+ const sessionId = await executeSpawnAgent(deliveryId, organizationId, trigger);
273
+ spawnedSessionIds.push(sessionId);
274
+ break;
275
+ }
276
+ case 'create_issue': {
277
+ const issueId = await executeCreateIssue(deliveryId, trigger, eval_result);
278
+ createdIssueIds.push(issueId);
279
+ break;
280
+ }
281
+ case 'inject_prompt': {
282
+ if (!target) {
283
+ console.warn('[guard] inject_prompt trigger skipped -- no TriggerExecutionTarget (daemon context)');
284
+ break;
285
+ }
286
+ await executeInjectPrompt(trigger, eval_result, target, factoryCtx);
287
+ break;
288
+ }
289
+ case 'manage_context': {
290
+ if (!target) {
291
+ console.warn('[guard] manage_context trigger skipped -- no TriggerExecutionTarget (daemon context)');
292
+ break;
293
+ }
294
+ await executeManageContext(trigger, target);
295
+ break;
296
+ }
297
+ case 'set_field': {
298
+ await executeSetField(trigger, eval_result, target ?? null, factoryCtx);
299
+ break;
300
+ }
301
+ case 'notify': {
302
+ await executeNotify(trigger, eval_result, target ?? null, factoryCtx);
303
+ break;
304
+ }
305
+ }
306
+ }
307
+ catch (err) {
308
+ console.error(`[guard] Failed to execute ${trigger.action_type} trigger "${trigger.name}":`, err.message);
309
+ }
310
+ }
311
+ return { blocked, blockId, spawnedSessionIds, createdIssueIds };
312
+ }
313
+ //# sourceMappingURL=trigger-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-executor.js","sourceRoot":"","sources":["../src/trigger-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Daemon configuration types.
3
+ */
4
+ import type { BaseConfig } from '@telora/daemon-core';
5
+ /**
6
+ * Guard/trigger failure mode -- determines behavior when guard evaluation itself errors.
7
+ * - fail-open: proceed without guard checks (default, backward compatible)
8
+ * - fail-closed: block transition, create escalation
9
+ */
10
+ export type PolicyFailureMode = 'fail-open' | 'fail-closed';
11
+ /**
12
+ * Configuration for the OTLP telemetry receiver.
13
+ */
14
+ export interface TelemetryConfig {
15
+ /** Whether telemetry ingestion is enabled. Default: true. */
16
+ enabled: boolean;
17
+ /** Port for the OTLP HTTP receiver. Default: 4318. */
18
+ port: number;
19
+ /** Interval in ms between batch flushes to Postgres. Default: 5000. */
20
+ flushIntervalMs: number;
21
+ /** Number of days to retain telemetry events. Default: 30. */
22
+ retentionDays: number;
23
+ }
24
+ /**
25
+ * Configuration for the daemon.
26
+ *
27
+ * Extends BaseConfig from @telora/daemon-core with daemon-specific fields.
28
+ */
29
+ export interface DaemonConfig extends BaseConfig {
30
+ worktreeDir: string;
31
+ integrationBranch: string;
32
+ maxTotalSessions: number;
33
+ tokenLimit: number;
34
+ costLimit: number;
35
+ /** Timeout in ms for acquiring the merge lock. Default: 300000 (5 min). */
36
+ mergeLockTimeoutMs: number;
37
+ /** Threshold in ms before logging a merge lock contention warning. Default: 30000 (30s). */
38
+ mergeLockContentionWarningMs: number;
39
+ /** Default failure mode when policy evaluation errors. Default: 'fail-open'. */
40
+ policyFailureMode: PolicyFailureMode;
41
+ /** Max age in days for log files. Default: 7. */
42
+ logMaxAgeDays: number;
43
+ /** Max total bytes for all log files. Default: 1073741824 (1 GB). */
44
+ logMaxTotalBytes: number;
45
+ /** Max number of log files. Default: 500. */
46
+ logMaxFiles: number;
47
+ /** OTLP telemetry receiver configuration. */
48
+ telemetry: TelemetryConfig;
49
+ /** QA environment port range start. Default: 9100. */
50
+ qaPortRangeStart: number;
51
+ /** QA environment port range end. Default: 9199. */
52
+ qaPortRangeEnd: number;
53
+ /** Host IP/hostname for QA URLs (LAN-accessible). Default: auto-detect. */
54
+ qaHost: string;
55
+ /** Local Supabase URL for QA environments. Default: http://127.0.0.1:54321. */
56
+ localSupabaseUrl: string;
57
+ /** Local Supabase anon key for QA environments. If unset, inherits from .env. */
58
+ localSupabaseAnonKey: string | null;
59
+ }
60
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,aAAa,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4FAA4F;IAC5F,4BAA4B,EAAE,MAAM,CAAC;IACrC,gFAAgF;IAChF,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,SAAS,EAAE,eAAe,CAAC;IAC3B,sDAAsD;IACtD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,gBAAgB,EAAE,MAAM,CAAC;IACzB,iFAAiF;IACjF,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Daemon configuration types.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG"}