@proletariat/cli 0.3.105 → 0.3.110

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 (240) hide show
  1. package/dist/commands/agent/cleanup.js +13 -1
  2. package/dist/commands/agent/cleanup.js.map +1 -1
  3. package/dist/commands/claude/index.js +2 -2
  4. package/dist/commands/claude/index.js.map +1 -1
  5. package/dist/commands/feedback/list.js +4 -9
  6. package/dist/commands/feedback/list.js.map +1 -1
  7. package/dist/commands/feedback/submit.js +4 -9
  8. package/dist/commands/feedback/submit.js.map +1 -1
  9. package/dist/commands/feedback/view.js +4 -9
  10. package/dist/commands/feedback/view.js.map +1 -1
  11. package/dist/commands/gc.d.ts +1 -0
  12. package/dist/commands/gc.js +34 -1
  13. package/dist/commands/gc.js.map +1 -1
  14. package/dist/commands/notify/connect.d.ts +34 -0
  15. package/dist/commands/notify/connect.js +166 -0
  16. package/dist/commands/notify/connect.js.map +1 -0
  17. package/dist/commands/notify/disconnect.d.ts +16 -0
  18. package/dist/commands/notify/disconnect.js +45 -0
  19. package/dist/commands/notify/disconnect.js.map +1 -0
  20. package/dist/commands/notify/list.d.ts +15 -0
  21. package/dist/commands/notify/list.js +101 -0
  22. package/dist/commands/notify/list.js.map +1 -0
  23. package/dist/commands/notify/rules/add.d.ts +26 -0
  24. package/dist/commands/notify/rules/add.js +95 -0
  25. package/dist/commands/notify/rules/add.js.map +1 -0
  26. package/dist/commands/notify/rules/list.d.ts +14 -0
  27. package/dist/commands/notify/rules/list.js +82 -0
  28. package/dist/commands/notify/rules/list.js.map +1 -0
  29. package/dist/commands/notify/rules/remove.d.ts +16 -0
  30. package/dist/commands/notify/rules/remove.js +44 -0
  31. package/dist/commands/notify/rules/remove.js.map +1 -0
  32. package/dist/commands/notify/test.d.ts +16 -0
  33. package/dist/commands/notify/test.js +63 -0
  34. package/dist/commands/notify/test.js.map +1 -0
  35. package/dist/commands/orchestrate/index.js +11 -6
  36. package/dist/commands/orchestrate/index.js.map +1 -1
  37. package/dist/commands/orchestrate/machine.d.ts +29 -0
  38. package/dist/commands/orchestrate/machine.js +230 -0
  39. package/dist/commands/orchestrate/machine.js.map +1 -0
  40. package/dist/commands/pr/checks.js +4 -8
  41. package/dist/commands/pr/checks.js.map +1 -1
  42. package/dist/commands/pr/close.js +4 -8
  43. package/dist/commands/pr/close.js.map +1 -1
  44. package/dist/commands/pr/create.js +4 -8
  45. package/dist/commands/pr/create.js.map +1 -1
  46. package/dist/commands/pr/index.js +1 -1
  47. package/dist/commands/pr/index.js.map +1 -1
  48. package/dist/commands/pr/link.js +4 -8
  49. package/dist/commands/pr/link.js.map +1 -1
  50. package/dist/commands/pr/list.js +5 -9
  51. package/dist/commands/pr/list.js.map +1 -1
  52. package/dist/commands/pr/merge.d.ts +5 -0
  53. package/dist/commands/pr/merge.js +35 -11
  54. package/dist/commands/pr/merge.js.map +1 -1
  55. package/dist/commands/pr/status.js +5 -4
  56. package/dist/commands/pr/status.js.map +1 -1
  57. package/dist/commands/qa/index.js +2 -2
  58. package/dist/commands/qa/index.js.map +1 -1
  59. package/dist/commands/repo/create.js +4 -8
  60. package/dist/commands/repo/create.js.map +1 -1
  61. package/dist/commands/session/list.js +81 -41
  62. package/dist/commands/session/list.js.map +1 -1
  63. package/dist/commands/session/poke.d.ts +1 -11
  64. package/dist/commands/session/poke.js +20 -78
  65. package/dist/commands/session/poke.js.map +1 -1
  66. package/dist/commands/session/prune.js +3 -0
  67. package/dist/commands/session/prune.js.map +1 -1
  68. package/dist/commands/ticket/move.d.ts +12 -0
  69. package/dist/commands/ticket/move.js +75 -2
  70. package/dist/commands/ticket/move.js.map +1 -1
  71. package/dist/commands/work/drop.js +2 -2
  72. package/dist/commands/work/drop.js.map +1 -1
  73. package/dist/commands/work/ready.js +3 -3
  74. package/dist/commands/work/ready.js.map +1 -1
  75. package/dist/commands/work/rebase.js +4 -8
  76. package/dist/commands/work/rebase.js.map +1 -1
  77. package/dist/commands/work/run.d.ts +58 -0
  78. package/dist/commands/work/run.js +411 -0
  79. package/dist/commands/work/run.js.map +1 -0
  80. package/dist/commands/work/ship.d.ts +6 -0
  81. package/dist/commands/work/ship.js +93 -51
  82. package/dist/commands/work/ship.js.map +1 -1
  83. package/dist/commands/work/start.d.ts +1 -0
  84. package/dist/commands/work/start.js +126 -13
  85. package/dist/commands/work/start.js.map +1 -1
  86. package/dist/lib/agents/commands.d.ts +6 -0
  87. package/dist/lib/agents/commands.js +55 -2
  88. package/dist/lib/agents/commands.js.map +1 -1
  89. package/dist/lib/database/credential-store.js +2 -3
  90. package/dist/lib/database/credential-store.js.map +1 -1
  91. package/dist/lib/database/db-safety.d.ts +25 -0
  92. package/dist/lib/database/db-safety.js +35 -0
  93. package/dist/lib/database/db-safety.js.map +1 -1
  94. package/dist/lib/database/driver.js +6 -12
  95. package/dist/lib/database/driver.js.map +1 -1
  96. package/dist/lib/database/drizzle-schema.d.ts +3 -3
  97. package/dist/lib/database/drizzle.js +3 -3
  98. package/dist/lib/database/drizzle.js.map +1 -1
  99. package/dist/lib/database/index.d.ts +1 -1
  100. package/dist/lib/database/index.js +1 -1
  101. package/dist/lib/database/index.js.map +1 -1
  102. package/dist/lib/database/migrations/0021_notification_system.d.ts +2 -0
  103. package/dist/lib/database/migrations/0021_notification_system.js +39 -0
  104. package/dist/lib/database/migrations/0021_notification_system.js.map +1 -0
  105. package/dist/lib/database/migrations/0022_hook_mode_tiers.d.ts +11 -0
  106. package/dist/lib/database/migrations/0022_hook_mode_tiers.js +53 -0
  107. package/dist/lib/database/migrations/0022_hook_mode_tiers.js.map +1 -0
  108. package/dist/lib/database/migrations/index.js +4 -0
  109. package/dist/lib/database/migrations/index.js.map +1 -1
  110. package/dist/lib/database/pmo-bootstrap.js +6 -2
  111. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  112. package/dist/lib/database/workspace.js +5 -13
  113. package/dist/lib/database/workspace.js.map +1 -1
  114. package/dist/lib/events/emitting-runner.js +10 -0
  115. package/dist/lib/events/emitting-runner.js.map +1 -1
  116. package/dist/lib/execution/cc-version.d.ts +62 -0
  117. package/dist/lib/execution/cc-version.js +103 -0
  118. package/dist/lib/execution/cc-version.js.map +1 -0
  119. package/dist/lib/execution/devcontainer.js +2 -1
  120. package/dist/lib/execution/devcontainer.js.map +1 -1
  121. package/dist/lib/execution/runners/devcontainer.js +4 -1
  122. package/dist/lib/execution/runners/devcontainer.js.map +1 -1
  123. package/dist/lib/execution/runners/docker-management.js +10 -46
  124. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  125. package/dist/lib/execution/runners/orchestrator.js +13 -39
  126. package/dist/lib/execution/runners/orchestrator.js.map +1 -1
  127. package/dist/lib/execution/session-utils.d.ts +88 -1
  128. package/dist/lib/execution/session-utils.js +120 -46
  129. package/dist/lib/execution/session-utils.js.map +1 -1
  130. package/dist/lib/execution/storage.js +20 -2
  131. package/dist/lib/execution/storage.js.map +1 -1
  132. package/dist/lib/flags/resolver.d.ts +8 -1
  133. package/dist/lib/flags/resolver.js +35 -2
  134. package/dist/lib/flags/resolver.js.map +1 -1
  135. package/dist/lib/gc/cascade.d.ts +99 -0
  136. package/dist/lib/gc/cascade.js +357 -0
  137. package/dist/lib/gc/cascade.js.map +1 -0
  138. package/dist/lib/gc/config.d.ts +69 -0
  139. package/dist/lib/gc/config.js +134 -0
  140. package/dist/lib/gc/config.js.map +1 -0
  141. package/dist/lib/gc/index.d.ts +36 -0
  142. package/dist/lib/gc/index.js +209 -1
  143. package/dist/lib/gc/index.js.map +1 -1
  144. package/dist/lib/init/index.js +10 -1
  145. package/dist/lib/init/index.js.map +1 -1
  146. package/dist/lib/machine-db.d.ts +144 -0
  147. package/dist/lib/machine-db.js +338 -0
  148. package/dist/lib/machine-db.js.map +1 -0
  149. package/dist/lib/machine-orchestrator.d.ts +35 -0
  150. package/dist/lib/machine-orchestrator.js +139 -0
  151. package/dist/lib/machine-orchestrator.js.map +1 -0
  152. package/dist/lib/notifications/dispatcher.d.ts +29 -0
  153. package/dist/lib/notifications/dispatcher.js +281 -0
  154. package/dist/lib/notifications/dispatcher.js.map +1 -0
  155. package/dist/lib/notifications/index.d.ts +13 -0
  156. package/dist/lib/notifications/index.js +18 -0
  157. package/dist/lib/notifications/index.js.map +1 -0
  158. package/dist/lib/notifications/manager.d.ts +46 -0
  159. package/dist/lib/notifications/manager.js +200 -0
  160. package/dist/lib/notifications/manager.js.map +1 -0
  161. package/dist/lib/notifications/storage.d.ts +60 -0
  162. package/dist/lib/notifications/storage.js +182 -0
  163. package/dist/lib/notifications/storage.js.map +1 -0
  164. package/dist/lib/notifications/types.d.ts +126 -0
  165. package/dist/lib/notifications/types.js +16 -0
  166. package/dist/lib/notifications/types.js.map +1 -0
  167. package/dist/lib/orchestrate/actions.d.ts +8 -0
  168. package/dist/lib/orchestrate/actions.js +339 -88
  169. package/dist/lib/orchestrate/actions.js.map +1 -1
  170. package/dist/lib/orchestrate/config-loader.js +9 -35
  171. package/dist/lib/orchestrate/config-loader.js.map +1 -1
  172. package/dist/lib/orchestrate/engine.d.ts +53 -1
  173. package/dist/lib/orchestrate/engine.js +74 -3
  174. package/dist/lib/orchestrate/engine.js.map +1 -1
  175. package/dist/lib/orchestrate/escalation.d.ts +87 -0
  176. package/dist/lib/orchestrate/escalation.js +63 -0
  177. package/dist/lib/orchestrate/escalation.js.map +1 -0
  178. package/dist/lib/orchestrate/index.d.ts +2 -0
  179. package/dist/lib/orchestrate/index.js +1 -0
  180. package/dist/lib/orchestrate/index.js.map +1 -1
  181. package/dist/lib/orchestrate/llm-agent.d.ts +101 -0
  182. package/dist/lib/orchestrate/llm-agent.js +295 -0
  183. package/dist/lib/orchestrate/llm-agent.js.map +1 -0
  184. package/dist/lib/orchestrate/presets.d.ts +4 -3
  185. package/dist/lib/orchestrate/presets.js +13 -8
  186. package/dist/lib/orchestrate/presets.js.map +1 -1
  187. package/dist/lib/orchestrate/prompt-chain.d.ts +166 -0
  188. package/dist/lib/orchestrate/prompt-chain.js +308 -0
  189. package/dist/lib/orchestrate/prompt-chain.js.map +1 -0
  190. package/dist/lib/orchestrate/types.d.ts +7 -1
  191. package/dist/lib/orchestrate/types.js +1 -0
  192. package/dist/lib/orchestrate/types.js.map +1 -1
  193. package/dist/lib/pmo/base-command.js +1 -1
  194. package/dist/lib/pmo/base-command.js.map +1 -1
  195. package/dist/lib/pmo/find-pmo.d.ts +8 -0
  196. package/dist/lib/pmo/find-pmo.js +63 -2
  197. package/dist/lib/pmo/find-pmo.js.map +1 -1
  198. package/dist/lib/pmo/index.d.ts +1 -1
  199. package/dist/lib/pmo/index.js +1 -1
  200. package/dist/lib/pmo/index.js.map +1 -1
  201. package/dist/lib/pmo/pmo-context.js +1 -1
  202. package/dist/lib/pmo/pmo-context.js.map +1 -1
  203. package/dist/lib/pmo/storage/index.js +2 -1
  204. package/dist/lib/pmo/storage/index.js.map +1 -1
  205. package/dist/lib/pr/index.d.ts +32 -0
  206. package/dist/lib/pr/index.js +45 -0
  207. package/dist/lib/pr/index.js.map +1 -1
  208. package/dist/lib/prompt-command.d.ts +61 -1
  209. package/dist/lib/prompt-command.js +167 -1
  210. package/dist/lib/prompt-command.js.map +1 -1
  211. package/dist/lib/prompt-json.d.ts +129 -2
  212. package/dist/lib/prompt-json.js +157 -0
  213. package/dist/lib/prompt-json.js.map +1 -1
  214. package/dist/lib/registry/index.js +0 -1
  215. package/dist/lib/registry/index.js.map +1 -1
  216. package/dist/lib/runtime-command.d.ts +3 -1
  217. package/dist/lib/runtime-command.js +4 -2
  218. package/dist/lib/runtime-command.js.map +1 -1
  219. package/dist/lib/signal-handler.d.ts +8 -0
  220. package/dist/lib/signal-handler.js +33 -0
  221. package/dist/lib/signal-handler.js.map +1 -1
  222. package/dist/lib/themes.js +8 -1
  223. package/dist/lib/themes.js.map +1 -1
  224. package/dist/lib/work-lifecycle/container-cleanup-hook.d.ts +17 -7
  225. package/dist/lib/work-lifecycle/container-cleanup-hook.js +64 -11
  226. package/dist/lib/work-lifecycle/container-cleanup-hook.js.map +1 -1
  227. package/dist/lib/work-lifecycle/hooks/executor.d.ts +22 -2
  228. package/dist/lib/work-lifecycle/hooks/executor.js +46 -8
  229. package/dist/lib/work-lifecycle/hooks/executor.js.map +1 -1
  230. package/dist/lib/work-lifecycle/hooks/manager.d.ts +62 -3
  231. package/dist/lib/work-lifecycle/hooks/manager.js +285 -4
  232. package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
  233. package/dist/lib/work-lifecycle/hooks/types.d.ts +36 -5
  234. package/dist/lib/work-lifecycle/hooks/types.js +1 -1
  235. package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
  236. package/dist/lib/workspace-resolution.d.ts +73 -0
  237. package/dist/lib/workspace-resolution.js +188 -0
  238. package/dist/lib/workspace-resolution.js.map +1 -0
  239. package/oclif.manifest.json +1787 -1099
  240. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/config-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAsB,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAQtF,OAAO,EAAsB,UAAU,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAA;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEzC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAqB,CAAA;IACrD,OAAO,MAAM,IAAI,IAAI,CAAA;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,CAAA;IAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEzC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAwB,CAAA;IACxD,OAAO,MAAM,IAAI,IAAI,CAAA;AACvB,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAqB,EAAE,SAAoB;IAC3E,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,oCAAoC;IACpC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IAED,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAQ;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAQ;YAE3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAgB,CAAC;gBACpE,CAAC,CAAC,KAAK,CAAC,IAAgB;gBACxB,CAAC,CAAC,MAAM,CAAA;YAEV,MAAM,QAAQ,GAAG,QAAQ,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;YAEzD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC1B,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAG,SAA2B,IAAI,qBAAqB;oBAC5D,UAAU,EAAE,OAAO;oBACnB,WAAW,EAAE,KAAK,CAAC,MAAM;oBACzB,WAAW,EAAE,mBAAmB,SAAS,MAAM,KAAK,CAAC,MAAM,KAAK,IAAI,GAAG;iBACxE,CAAC,CAAA;gBAEF,yFAAyF;gBACzF,IAAI,CAAC;oBACH,EAAE,CAAC,OAAO,CACR,4FAA4F,CAC7F,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBACxG,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;gBAED,KAAK,EAAE,CAAA;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAAqB,EAAE,UAAsB;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,sCAAsC;IACtC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,UAAU,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;QAEzE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC7B,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC3C,UAAU,EAAE,OAAO;gBACnB,WAAW,EAAE,kBAAkB,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,MAAM,EAAE;gBACnE,WAAW,EAAE,UAAU,UAAU,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,GAAG;aACnF,CAAC,CAAA;YAEF,IAAI,CAAC;gBACH,EAAE,CAAC,OAAO,CACR,8FAA8F,CAC/F,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;YACnF,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;YAC5B,CAAC;YAED,KAAK,EAAE,CAAA;QACT,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,KAAuB;IACvD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,eAAe,CAAC,CAAA;IACpD,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAsB,CAAA;IAC/B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,sCAAsC,CAAC,CAAA;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAqB;IACrD,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAE5B,MAAM,OAAO,GAA8F,EAAE,CAAA;IAE7G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAExC,IAAI,IAAI,GAAG,MAAM,CAAA;QACjB,IAAI,MAA2C,CAAA;QAC/C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAmD,CAAA;YAC7I,IAAI,GAAG,EAAE,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;YAC9B,IAAI,GAAG,EAAE,MAAM;gBAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAA4B,CAAA;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,IAAI;YACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;AAC1D,CAAC"}
@@ -12,7 +12,9 @@
12
12
  * All hook matching, mode checking, and execution is delegated to HookManager.
13
13
  */
14
14
  import type Database from 'better-sqlite3';
15
+ import type { LlmDecision } from '../work-lifecycle/hooks/types.js';
15
16
  import type { OrchestrateActionResult } from './types.js';
17
+ import type { EscalationContext, EscalationReason, PendingLlmDecision, PendingHumanEscalation } from './escalation.js';
16
18
  export interface OrchestrateEngineOptions {
17
19
  /** Database connection */
18
20
  db: Database.Database;
@@ -22,13 +24,30 @@ export interface OrchestrateEngineOptions {
22
24
  onConfirm?: (hookName: string, event: string, action: string) => Promise<boolean>;
23
25
  /** Callback for notifications */
24
26
  onNotify?: (hookName: string, event: string, action: string, result: OrchestrateActionResult) => void;
27
+ /**
28
+ * Callback for LLM-mode hooks (Tier 2).
29
+ * Returns the LLM's decision: approve, deny, or escalate.
30
+ */
31
+ onLlmDecision?: (context: EscalationContext) => Promise<LlmDecision>;
32
+ /**
33
+ * Callback for human-mode hooks (Tier 3).
34
+ * Called for direct human-mode hooks or when LLM escalates.
35
+ * Returns true to approve, false to deny.
36
+ */
37
+ onHumanEscalation?: (context: EscalationContext, reason: EscalationReason) => Promise<boolean>;
38
+ /**
39
+ * Timeout in ms for LLM decisions before auto-escalating to human.
40
+ * Defaults to 5 minutes.
41
+ */
42
+ llmTimeoutMs?: number;
25
43
  }
26
44
  export declare class OrchestrateEngine {
27
45
  private manager;
46
+ private notificationManager;
28
47
  private running;
29
48
  constructor(options: OrchestrateEngineOptions);
30
49
  /**
31
- * Start the orchestrate engine — delegates to HookManager.
50
+ * Start the orchestrate engine — delegates to HookManager and NotificationManager.
32
51
  */
33
52
  start(): void;
34
53
  /**
@@ -58,6 +77,39 @@ export declare class OrchestrateEngine {
58
77
  * Deny a pending confirmation.
59
78
  */
60
79
  denyConfirmation(index: number): boolean;
80
+ /**
81
+ * Get pending LLM decisions.
82
+ */
83
+ getPendingLlmDecisions(): PendingLlmDecision[];
84
+ /**
85
+ * Approve a pending LLM decision and execute the action.
86
+ */
87
+ approveLlmDecision(index: number): Promise<OrchestrateActionResult | null>;
88
+ /**
89
+ * Deny a pending LLM decision.
90
+ */
91
+ denyLlmDecision(index: number): boolean;
92
+ /**
93
+ * Escalate a pending LLM decision to human tier.
94
+ */
95
+ escalateLlmDecision(index: number): boolean;
96
+ /**
97
+ * Check for timed-out LLM decisions and auto-escalate them to human tier.
98
+ * Returns the number of decisions that were escalated.
99
+ */
100
+ escalateTimedOutLlmDecisions(): number;
101
+ /**
102
+ * Get pending human escalations.
103
+ */
104
+ getPendingHumanEscalations(): PendingHumanEscalation[];
105
+ /**
106
+ * Approve a pending human escalation and execute the action.
107
+ */
108
+ approveHumanEscalation(index: number): Promise<OrchestrateActionResult | null>;
109
+ /**
110
+ * Deny a pending human escalation.
111
+ */
112
+ denyHumanEscalation(index: number): boolean;
61
113
  }
62
114
  /**
63
115
  * Initialize and start the orchestrate engine.
@@ -13,8 +13,10 @@
13
13
  */
14
14
  import { HookManager } from '../work-lifecycle/hooks/manager.js';
15
15
  import { ACTION_HANDLERS } from './actions.js';
16
+ import { initNotificationManager, stopNotificationManager, } from '../notifications/index.js';
16
17
  export class OrchestrateEngine {
17
18
  manager;
19
+ notificationManager;
18
20
  running = false;
19
21
  constructor(options) {
20
22
  // Map OrchestrateActionResult-based onNotify to HookExecutionResult-based onNotify
@@ -28,19 +30,26 @@ export class OrchestrateEngine {
28
30
  log: options.log,
29
31
  onConfirm: options.onConfirm,
30
32
  onNotify,
33
+ onLlmDecision: options.onLlmDecision,
34
+ onHumanEscalation: options.onHumanEscalation,
35
+ llmTimeoutMs: options.llmTimeoutMs,
31
36
  actionHandlers: ACTION_HANDLERS,
32
37
  });
38
+ // Initialize the notification manager so it subscribes to events
39
+ this.notificationManager = initNotificationManager({
40
+ db: options.db,
41
+ log: options.log,
42
+ });
33
43
  }
34
44
  /**
35
- * Start the orchestrate engine — delegates to HookManager.
45
+ * Start the orchestrate engine — delegates to HookManager and NotificationManager.
36
46
  */
37
47
  start() {
38
48
  if (this.running)
39
49
  return;
40
50
  this.running = true;
41
51
  this.manager.start();
42
- // Log is internal to the manager, but we can't access it here easily.
43
- // The manager's log callback will handle logging.
52
+ void this.notificationManager.start();
44
53
  }
45
54
  /**
46
55
  * Stop the engine and clean up subscriptions.
@@ -48,6 +57,8 @@ export class OrchestrateEngine {
48
57
  stop() {
49
58
  this.running = false;
50
59
  this.manager.stop();
60
+ this.notificationManager.stop();
61
+ stopNotificationManager();
51
62
  }
52
63
  /**
53
64
  * Fire an event manually (used by `prlt hook fire`).
@@ -76,6 +87,63 @@ export class OrchestrateEngine {
76
87
  denyConfirmation(index) {
77
88
  return this.manager.denyConfirmation(index);
78
89
  }
90
+ // ===========================================================================
91
+ // LLM Decision Queue (Tier 2)
92
+ // ===========================================================================
93
+ /**
94
+ * Get pending LLM decisions.
95
+ */
96
+ getPendingLlmDecisions() {
97
+ return this.manager.getPendingLlmDecisions();
98
+ }
99
+ /**
100
+ * Approve a pending LLM decision and execute the action.
101
+ */
102
+ async approveLlmDecision(index) {
103
+ const result = await this.manager.approveLlmDecision(index);
104
+ return result ? toActionResult(result) : null;
105
+ }
106
+ /**
107
+ * Deny a pending LLM decision.
108
+ */
109
+ denyLlmDecision(index) {
110
+ return this.manager.denyLlmDecision(index);
111
+ }
112
+ /**
113
+ * Escalate a pending LLM decision to human tier.
114
+ */
115
+ escalateLlmDecision(index) {
116
+ return this.manager.escalateLlmDecision(index);
117
+ }
118
+ /**
119
+ * Check for timed-out LLM decisions and auto-escalate them to human tier.
120
+ * Returns the number of decisions that were escalated.
121
+ */
122
+ escalateTimedOutLlmDecisions() {
123
+ return this.manager.escalateTimedOutLlmDecisions();
124
+ }
125
+ // ===========================================================================
126
+ // Human Escalation Queue (Tier 3)
127
+ // ===========================================================================
128
+ /**
129
+ * Get pending human escalations.
130
+ */
131
+ getPendingHumanEscalations() {
132
+ return this.manager.getPendingHumanEscalations();
133
+ }
134
+ /**
135
+ * Approve a pending human escalation and execute the action.
136
+ */
137
+ async approveHumanEscalation(index) {
138
+ const result = await this.manager.approveHumanEscalation(index);
139
+ return result ? toActionResult(result) : null;
140
+ }
141
+ /**
142
+ * Deny a pending human escalation.
143
+ */
144
+ denyHumanEscalation(index) {
145
+ return this.manager.denyHumanEscalation(index);
146
+ }
79
147
  }
80
148
  // =============================================================================
81
149
  // Result Mapping
@@ -91,6 +159,9 @@ function toActionResult(result) {
91
159
  durationMs: result.durationMs,
92
160
  skipped: result.skipped,
93
161
  awaitingConfirmation: result.awaitingConfirmation,
162
+ awaitingLlmDecision: result.awaitingLlmDecision,
163
+ escalatedToHuman: result.escalatedToHuman,
164
+ tier: result.tier,
94
165
  };
95
166
  }
96
167
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * 3-Tier Escalation Pipeline
3
+ *
4
+ * Routes hook actions through a 3-tier decision hierarchy:
5
+ *
6
+ * Tier 1 (auto): Deterministic — fires immediately, no decision needed.
7
+ * Tier 2 (llm): LLM orchestrator decides — approve/deny/escalate.
8
+ * Tier 3 (human): Human decides — final authority.
9
+ *
10
+ * Escalation flows upward: auto → llm → human.
11
+ * Timeout on LLM response auto-escalates to human.
12
+ */
13
+ import type { DecisionTier, LlmDecision } from '../work-lifecycle/hooks/types.js';
14
+ /**
15
+ * Context provided to LLM and human decision-makers.
16
+ */
17
+ export interface EscalationContext {
18
+ /** The hook name requesting a decision */
19
+ hookName: string;
20
+ /** The event that triggered the hook */
21
+ event: string;
22
+ /** The action to be executed if approved */
23
+ action: string;
24
+ /** Full event context (ticket, PR, branch, etc.) */
25
+ ctx: Record<string, unknown>;
26
+ /** Optional per-hook config */
27
+ config?: Record<string, unknown>;
28
+ }
29
+ /**
30
+ * A pending LLM decision queued when no onLlmDecision callback is provided.
31
+ */
32
+ export interface PendingLlmDecision extends EscalationContext {
33
+ /** When the decision was queued */
34
+ queuedAt: number;
35
+ /** Timeout in ms after which the decision auto-escalates to human */
36
+ timeoutMs: number;
37
+ }
38
+ /**
39
+ * A pending human escalation queued when no onHumanEscalation callback is provided.
40
+ */
41
+ export interface PendingHumanEscalation extends EscalationContext {
42
+ /** When the escalation was queued */
43
+ queuedAt: number;
44
+ /** Reason for escalation (direct human-mode hook, LLM escalated, LLM timed out) */
45
+ reason: EscalationReason;
46
+ }
47
+ /**
48
+ * Why a hook was escalated to human tier.
49
+ */
50
+ export type EscalationReason = 'direct' | 'llm_escalate' | 'llm_timeout';
51
+ /**
52
+ * Callbacks for the escalation pipeline.
53
+ */
54
+ export interface EscalationCallbacks {
55
+ /**
56
+ * Called when a Tier 2 (LLM) decision is needed.
57
+ * Should return the LLM's decision: approve, deny, or escalate.
58
+ * If not provided, decisions are queued in pendingLlmDecisions.
59
+ */
60
+ onLlmDecision?: (context: EscalationContext) => Promise<LlmDecision>;
61
+ /**
62
+ * Called when a Tier 3 (human) decision is needed.
63
+ * Should return true to approve, false to deny.
64
+ * If not provided, decisions are queued in pendingHumanEscalations.
65
+ */
66
+ onHumanEscalation?: (context: EscalationContext, reason: EscalationReason) => Promise<boolean>;
67
+ }
68
+ /** Default timeout for LLM decisions before auto-escalating to human (5 minutes). */
69
+ export declare const DEFAULT_LLM_TIMEOUT_MS: number;
70
+ /**
71
+ * Resolve a HookMode to its decision tier.
72
+ *
73
+ * - auto, notify → Tier 1 (auto)
74
+ * - llm → Tier 2 (llm)
75
+ * - confirm, human → Tier 3 (human)
76
+ * - off → Tier 1 (auto) — handled separately as skip
77
+ */
78
+ export declare function modeToTier(mode: string): DecisionTier;
79
+ /**
80
+ * Check if a pending LLM decision has timed out.
81
+ */
82
+ export declare function isLlmDecisionTimedOut(decision: PendingLlmDecision, now?: number): boolean;
83
+ /**
84
+ * Get all timed-out LLM decisions from a list, returning them
85
+ * as human escalations with reason 'llm_timeout'.
86
+ */
87
+ export declare function getTimedOutLlmDecisions(decisions: PendingLlmDecision[], now?: number): PendingHumanEscalation[];
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 3-Tier Escalation Pipeline
3
+ *
4
+ * Routes hook actions through a 3-tier decision hierarchy:
5
+ *
6
+ * Tier 1 (auto): Deterministic — fires immediately, no decision needed.
7
+ * Tier 2 (llm): LLM orchestrator decides — approve/deny/escalate.
8
+ * Tier 3 (human): Human decides — final authority.
9
+ *
10
+ * Escalation flows upward: auto → llm → human.
11
+ * Timeout on LLM response auto-escalates to human.
12
+ */
13
+ // =============================================================================
14
+ // Configuration
15
+ // =============================================================================
16
+ /** Default timeout for LLM decisions before auto-escalating to human (5 minutes). */
17
+ export const DEFAULT_LLM_TIMEOUT_MS = 5 * 60 * 1000;
18
+ // =============================================================================
19
+ // Utility Functions
20
+ // =============================================================================
21
+ /**
22
+ * Resolve a HookMode to its decision tier.
23
+ *
24
+ * - auto, notify → Tier 1 (auto)
25
+ * - llm → Tier 2 (llm)
26
+ * - confirm, human → Tier 3 (human)
27
+ * - off → Tier 1 (auto) — handled separately as skip
28
+ */
29
+ export function modeToTier(mode) {
30
+ switch (mode) {
31
+ case 'llm':
32
+ return 'llm';
33
+ case 'confirm':
34
+ case 'human':
35
+ return 'human';
36
+ default:
37
+ return 'auto';
38
+ }
39
+ }
40
+ /**
41
+ * Check if a pending LLM decision has timed out.
42
+ */
43
+ export function isLlmDecisionTimedOut(decision, now = Date.now()) {
44
+ return (now - decision.queuedAt) >= decision.timeoutMs;
45
+ }
46
+ /**
47
+ * Get all timed-out LLM decisions from a list, returning them
48
+ * as human escalations with reason 'llm_timeout'.
49
+ */
50
+ export function getTimedOutLlmDecisions(decisions, now = Date.now()) {
51
+ return decisions
52
+ .filter(d => isLlmDecisionTimedOut(d, now))
53
+ .map(d => ({
54
+ hookName: d.hookName,
55
+ event: d.event,
56
+ action: d.action,
57
+ ctx: d.ctx,
58
+ config: d.config,
59
+ queuedAt: d.queuedAt,
60
+ reason: 'llm_timeout',
61
+ }));
62
+ }
63
+ //# sourceMappingURL=escalation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/escalation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuEH,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAEnD,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,KAAK,CAAA;QACd,KAAK,SAAS,CAAC;QACf,KAAK,OAAO;YACV,OAAO,OAAO,CAAA;QAChB;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA4B,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IAC1F,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAA;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA+B,EAC/B,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,OAAO,SAAS;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,aAAiC;KAC1C,CAAC,CAAC,CAAA;AACP,CAAC"}
@@ -16,3 +16,5 @@ export { OrchestratePoller } from './poller.js';
16
16
  export type { PollerOptions } from './poller.js';
17
17
  export { SimplePoller } from './simple-poller.js';
18
18
  export type { SimplePollerOptions, PollChange, PollResult } from './simple-poller.js';
19
+ export { createLlmDecisionHandler, buildDecisionPrompt, parseDecisionResponse, gatherDecisionContext, fetchPrDiff, fetchTicketDescription, fetchTestOutput, invokeClaudeLlm, } from './llm-agent.js';
20
+ export type { DecisionContext, LlmAgentOptions } from './llm-agent.js';
@@ -12,4 +12,5 @@ export { ACTION_HANDLERS, executeBuiltinAction, } from './actions.js';
12
12
  export { OrchestrateEngine, initOrchestrateEngine, getOrchestrateEngine, stopOrchestrateEngine, } from './engine.js';
13
13
  export { OrchestratePoller } from './poller.js';
14
14
  export { SimplePoller } from './simple-poller.js';
15
+ export { createLlmDecisionHandler, buildDecisionPrompt, parseDecisionResponse, gatherDecisionContext, fetchPrDiff, fetchTicketDescription, fetchTestOutput, invokeClaudeLlm, } from './llm-agent.js';
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,EACP,SAAS,GACV,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,EACP,SAAS,GACV,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,eAAe,EACf,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * LLM Orchestrator Agent (Tier 2)
3
+ *
4
+ * Implements the onLlmDecision callback for the 3-tier supervision tree.
5
+ * When the daemon encounters a hook with mode=llm, this agent:
6
+ *
7
+ * 1. Gathers rich context — PR diff, ticket description, test output
8
+ * 2. Builds a structured decision prompt
9
+ * 3. Calls claude -p (print mode) to get a judgment
10
+ * 4. Parses the response to return approve/deny/escalate
11
+ *
12
+ * This is the bridge between the deterministic daemon (tier 1) and
13
+ * human escalation (tier 3). Without it, tier 2 is a pass-through.
14
+ */
15
+ import type { EscalationContext } from './escalation.js';
16
+ import type { LlmDecision } from '../work-lifecycle/hooks/types.js';
17
+ /**
18
+ * Enriched context gathered for the LLM decision.
19
+ */
20
+ export interface DecisionContext {
21
+ /** The original escalation context */
22
+ escalation: EscalationContext;
23
+ /** PR diff (truncated if too large) */
24
+ prDiff?: string;
25
+ /** Ticket description */
26
+ ticketDescription?: string;
27
+ /** Recent test/CI output */
28
+ testOutput?: string;
29
+ /** Branch name */
30
+ branch?: string;
31
+ }
32
+ /**
33
+ * Options for creating the LLM decision handler.
34
+ */
35
+ export interface LlmAgentOptions {
36
+ /** Logger function */
37
+ log?: (msg: string) => void;
38
+ /** Maximum characters for PR diff in prompt (default: 8000) */
39
+ maxDiffChars?: number;
40
+ /** Maximum characters for test output in prompt (default: 4000) */
41
+ maxTestOutputChars?: number;
42
+ /** Timeout in ms for the LLM call (default: 60000) */
43
+ llmCallTimeoutMs?: number;
44
+ /** Override the LLM invocation for testing */
45
+ invokeLlm?: (prompt: string) => string;
46
+ }
47
+ /**
48
+ * Fetch the PR diff via `gh pr diff`.
49
+ * Returns undefined if no PR number is available or the command fails.
50
+ */
51
+ export declare function fetchPrDiff(prNumber: number | undefined, maxChars: number): string | undefined;
52
+ /**
53
+ * Fetch the ticket description via `prlt ticket show`.
54
+ * Returns undefined if no ticket ID is available or the command fails.
55
+ */
56
+ export declare function fetchTicketDescription(ticketId: string | undefined): string | undefined;
57
+ /**
58
+ * Fetch recent CI/test output via `gh pr checks` or `gh run list`.
59
+ * Returns undefined if unavailable.
60
+ */
61
+ export declare function fetchTestOutput(prNumber: number | undefined, maxChars: number): string | undefined;
62
+ /**
63
+ * Gather enriched context from all available sources.
64
+ */
65
+ export declare function gatherDecisionContext(escalation: EscalationContext, options: {
66
+ maxDiffChars: number;
67
+ maxTestOutputChars: number;
68
+ }): DecisionContext;
69
+ /**
70
+ * Build the decision prompt for the LLM.
71
+ *
72
+ * The prompt is structured to get a clear approve/deny/escalate response
73
+ * with reasoning.
74
+ */
75
+ export declare function buildDecisionPrompt(context: DecisionContext): string;
76
+ /**
77
+ * Parse the LLM response to extract the decision.
78
+ *
79
+ * Looks for APPROVE, DENY, or ESCALATE as the first meaningful word.
80
+ * Falls back to 'escalate' if the response is ambiguous.
81
+ */
82
+ export declare function parseDecisionResponse(response: string): LlmDecision;
83
+ /**
84
+ * Invoke the LLM via `claude -p` (print mode).
85
+ * Returns the raw response text.
86
+ */
87
+ export declare function invokeClaudeLlm(prompt: string, timeoutMs: number): string;
88
+ /**
89
+ * Create an onLlmDecision callback for the OrchestrateEngine.
90
+ *
91
+ * This is the main entry point — wire this into the engine to activate tier 2.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * const engine = new OrchestrateEngine({
96
+ * db,
97
+ * onLlmDecision: createLlmDecisionHandler({ log: console.log }),
98
+ * })
99
+ * ```
100
+ */
101
+ export declare function createLlmDecisionHandler(options?: LlmAgentOptions): (context: EscalationContext) => Promise<LlmDecision>;