reflectt-node 0.1.14 → 0.1.16

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 (218) hide show
  1. package/README.md +54 -0
  2. package/defaults/TEAM-ROLES.starter.yaml +87 -0
  3. package/defaults/lane-templates/ops.json +32 -0
  4. package/defaults/lane-templates/workflow.json +32 -0
  5. package/defaults/reviewer-routing.yaml +34 -0
  6. package/dist/activationEvents.d.ts +7 -1
  7. package/dist/activationEvents.d.ts.map +1 -1
  8. package/dist/activationEvents.js +29 -3
  9. package/dist/activationEvents.js.map +1 -1
  10. package/dist/activity-stream-normalizer.d.ts +37 -0
  11. package/dist/activity-stream-normalizer.d.ts.map +1 -0
  12. package/dist/activity-stream-normalizer.js +101 -0
  13. package/dist/activity-stream-normalizer.js.map +1 -0
  14. package/dist/agent-exec-guardrail.d.ts +9 -0
  15. package/dist/agent-exec-guardrail.d.ts.map +1 -0
  16. package/dist/agent-exec-guardrail.js +24 -0
  17. package/dist/agent-exec-guardrail.js.map +1 -0
  18. package/dist/agent-exec-guardrail.test.d.ts +2 -0
  19. package/dist/agent-exec-guardrail.test.d.ts.map +1 -0
  20. package/dist/agent-exec-guardrail.test.js +55 -0
  21. package/dist/agent-exec-guardrail.test.js.map +1 -0
  22. package/dist/agent-interface.d.ts +137 -0
  23. package/dist/agent-interface.d.ts.map +1 -0
  24. package/dist/agent-interface.js +463 -0
  25. package/dist/agent-interface.js.map +1 -0
  26. package/dist/agent-notifications.d.ts +51 -0
  27. package/dist/agent-notifications.d.ts.map +1 -0
  28. package/dist/agent-notifications.js +104 -0
  29. package/dist/agent-notifications.js.map +1 -0
  30. package/dist/agent-runs.d.ts +31 -7
  31. package/dist/agent-runs.d.ts.map +1 -1
  32. package/dist/agent-runs.js +137 -28
  33. package/dist/agent-runs.js.map +1 -1
  34. package/dist/artifact-mirror.d.ts.map +1 -1
  35. package/dist/artifact-mirror.js +4 -1
  36. package/dist/artifact-mirror.js.map +1 -1
  37. package/dist/assignment.d.ts.map +1 -1
  38. package/dist/assignment.js +54 -2
  39. package/dist/assignment.js.map +1 -1
  40. package/dist/boardHealthWorker.d.ts.map +1 -1
  41. package/dist/boardHealthWorker.js +15 -1
  42. package/dist/boardHealthWorker.js.map +1 -1
  43. package/dist/canvas-auto-state.d.ts +58 -0
  44. package/dist/canvas-auto-state.d.ts.map +1 -0
  45. package/dist/canvas-auto-state.js +89 -0
  46. package/dist/canvas-auto-state.js.map +1 -0
  47. package/dist/canvas-routes.d.ts +36 -0
  48. package/dist/canvas-routes.d.ts.map +1 -0
  49. package/dist/canvas-routes.js +47 -0
  50. package/dist/canvas-routes.js.map +1 -0
  51. package/dist/capability-readiness.d.ts +28 -0
  52. package/dist/capability-readiness.d.ts.map +1 -0
  53. package/dist/capability-readiness.js +162 -0
  54. package/dist/capability-readiness.js.map +1 -0
  55. package/dist/channels.d.ts.map +1 -1
  56. package/dist/channels.js +1 -0
  57. package/dist/channels.js.map +1 -1
  58. package/dist/cli.js +179 -4
  59. package/dist/cli.js.map +1 -1
  60. package/dist/cloud.d.ts +5 -0
  61. package/dist/cloud.d.ts.map +1 -1
  62. package/dist/cloud.js +485 -18
  63. package/dist/cloud.js.map +1 -1
  64. package/dist/comms-routing-policy.d.ts +31 -0
  65. package/dist/comms-routing-policy.d.ts.map +1 -0
  66. package/dist/comms-routing-policy.js +128 -0
  67. package/dist/comms-routing-policy.js.map +1 -0
  68. package/dist/config.d.ts.map +1 -1
  69. package/dist/config.js +1 -0
  70. package/dist/config.js.map +1 -1
  71. package/dist/continuity-loop.d.ts.map +1 -1
  72. package/dist/continuity-loop.js +26 -0
  73. package/dist/continuity-loop.js.map +1 -1
  74. package/dist/cost-enforcement.d.ts.map +1 -1
  75. package/dist/cost-enforcement.js +22 -0
  76. package/dist/cost-enforcement.js.map +1 -1
  77. package/dist/db.d.ts.map +1 -1
  78. package/dist/db.js +56 -5
  79. package/dist/db.js.map +1 -1
  80. package/dist/doctor.js +2 -2
  81. package/dist/e2e-loop-proof.test.js +11 -1
  82. package/dist/e2e-loop-proof.test.js.map +1 -1
  83. package/dist/events.d.ts +4 -2
  84. package/dist/events.d.ts.map +1 -1
  85. package/dist/events.js +22 -1
  86. package/dist/events.js.map +1 -1
  87. package/dist/executionSweeper.d.ts.map +1 -1
  88. package/dist/executionSweeper.js +155 -0
  89. package/dist/executionSweeper.js.map +1 -1
  90. package/dist/health.d.ts +21 -1
  91. package/dist/health.d.ts.map +1 -1
  92. package/dist/health.js +164 -19
  93. package/dist/health.js.map +1 -1
  94. package/dist/inbox.d.ts +4 -0
  95. package/dist/inbox.d.ts.map +1 -1
  96. package/dist/inbox.js +38 -1
  97. package/dist/inbox.js.map +1 -1
  98. package/dist/index.js +90 -14
  99. package/dist/index.js.map +1 -1
  100. package/dist/insight-auto-tagger.d.ts +58 -0
  101. package/dist/insight-auto-tagger.d.ts.map +1 -0
  102. package/dist/insight-auto-tagger.js +331 -0
  103. package/dist/insight-auto-tagger.js.map +1 -0
  104. package/dist/insight-task-bridge.d.ts +9 -0
  105. package/dist/insight-task-bridge.d.ts.map +1 -1
  106. package/dist/insight-task-bridge.js +43 -7
  107. package/dist/insight-task-bridge.js.map +1 -1
  108. package/dist/insights.d.ts +6 -0
  109. package/dist/insights.d.ts.map +1 -1
  110. package/dist/insights.js +13 -0
  111. package/dist/insights.js.map +1 -1
  112. package/dist/lane-config.d.ts.map +1 -1
  113. package/dist/lane-config.js +1 -0
  114. package/dist/lane-config.js.map +1 -1
  115. package/dist/lane-template-successor.d.ts +13 -0
  116. package/dist/lane-template-successor.d.ts.map +1 -0
  117. package/dist/lane-template-successor.js +132 -0
  118. package/dist/lane-template-successor.js.map +1 -0
  119. package/dist/local-whisper.d.ts +21 -0
  120. package/dist/local-whisper.d.ts.map +1 -0
  121. package/dist/local-whisper.js +137 -0
  122. package/dist/local-whisper.js.map +1 -0
  123. package/dist/macos-accessibility.d.ts +50 -0
  124. package/dist/macos-accessibility.d.ts.map +1 -0
  125. package/dist/macos-accessibility.js +185 -0
  126. package/dist/macos-accessibility.js.map +1 -0
  127. package/dist/manage.d.ts.map +1 -1
  128. package/dist/manage.js +47 -1
  129. package/dist/manage.js.map +1 -1
  130. package/dist/mcp.d.ts.map +1 -1
  131. package/dist/mcp.js +123 -0
  132. package/dist/mcp.js.map +1 -1
  133. package/dist/notification-worker.d.ts +66 -0
  134. package/dist/notification-worker.d.ts.map +1 -0
  135. package/dist/notification-worker.js +232 -0
  136. package/dist/notification-worker.js.map +1 -0
  137. package/dist/openclaw-usage-sync.d.ts +28 -0
  138. package/dist/openclaw-usage-sync.d.ts.map +1 -0
  139. package/dist/openclaw-usage-sync.js +161 -0
  140. package/dist/openclaw-usage-sync.js.map +1 -0
  141. package/dist/policy.js +1 -1
  142. package/dist/policy.js.map +1 -1
  143. package/dist/pr-link-reconciler.d.ts +61 -0
  144. package/dist/pr-link-reconciler.d.ts.map +1 -0
  145. package/dist/pr-link-reconciler.js +127 -0
  146. package/dist/pr-link-reconciler.js.map +1 -0
  147. package/dist/preflight.js +2 -2
  148. package/dist/presence-narrator.d.ts +52 -0
  149. package/dist/presence-narrator.d.ts.map +1 -0
  150. package/dist/presence-narrator.js +193 -0
  151. package/dist/presence-narrator.js.map +1 -0
  152. package/dist/presence.d.ts +2 -0
  153. package/dist/presence.d.ts.map +1 -1
  154. package/dist/presence.js +23 -3
  155. package/dist/presence.js.map +1 -1
  156. package/dist/product-observation-source.d.ts +52 -0
  157. package/dist/product-observation-source.d.ts.map +1 -0
  158. package/dist/product-observation-source.js +326 -0
  159. package/dist/product-observation-source.js.map +1 -0
  160. package/dist/reflection-automation.d.ts +25 -0
  161. package/dist/reflection-automation.d.ts.map +1 -1
  162. package/dist/reflection-automation.js +163 -42
  163. package/dist/reflection-automation.js.map +1 -1
  164. package/dist/review-autoclose.d.ts +62 -0
  165. package/dist/review-autoclose.d.ts.map +1 -0
  166. package/dist/review-autoclose.js +75 -0
  167. package/dist/review-autoclose.js.map +1 -0
  168. package/dist/routing-enforcement.test.js +32 -56
  169. package/dist/routing-enforcement.test.js.map +1 -1
  170. package/dist/sentry-webhook.d.ts +69 -0
  171. package/dist/sentry-webhook.d.ts.map +1 -0
  172. package/dist/sentry-webhook.js +88 -0
  173. package/dist/sentry-webhook.js.map +1 -0
  174. package/dist/sentry.d.ts +29 -0
  175. package/dist/sentry.d.ts.map +1 -0
  176. package/dist/sentry.js +86 -0
  177. package/dist/sentry.js.map +1 -0
  178. package/dist/server.d.ts.map +1 -1
  179. package/dist/server.js +5130 -233
  180. package/dist/server.js.map +1 -1
  181. package/dist/stale-candidate-reconciler.d.ts +69 -0
  182. package/dist/stale-candidate-reconciler.d.ts.map +1 -0
  183. package/dist/stale-candidate-reconciler.js +236 -0
  184. package/dist/stale-candidate-reconciler.js.map +1 -0
  185. package/dist/system-loop-state.d.ts +1 -1
  186. package/dist/system-loop-state.d.ts.map +1 -1
  187. package/dist/system-loop-state.js +1 -0
  188. package/dist/system-loop-state.js.map +1 -1
  189. package/dist/taskPrecheck.d.ts.map +1 -1
  190. package/dist/taskPrecheck.js +47 -2
  191. package/dist/taskPrecheck.js.map +1 -1
  192. package/dist/tasks.d.ts.map +1 -1
  193. package/dist/tasks.js +130 -0
  194. package/dist/tasks.js.map +1 -1
  195. package/dist/trust-events.d.ts +61 -0
  196. package/dist/trust-events.d.ts.map +1 -0
  197. package/dist/trust-events.js +148 -0
  198. package/dist/trust-events.js.map +1 -0
  199. package/dist/types.d.ts +1 -0
  200. package/dist/types.d.ts.map +1 -1
  201. package/dist/usage-tracking.d.ts +6 -0
  202. package/dist/usage-tracking.d.ts.map +1 -1
  203. package/dist/usage-tracking.js +14 -0
  204. package/dist/usage-tracking.js.map +1 -1
  205. package/dist/voice-sessions.d.ts +51 -0
  206. package/dist/voice-sessions.d.ts.map +1 -0
  207. package/dist/voice-sessions.js +143 -0
  208. package/dist/voice-sessions.js.map +1 -0
  209. package/dist/workflow-templates.d.ts.map +1 -1
  210. package/dist/workflow-templates.js +18 -3
  211. package/dist/workflow-templates.js.map +1 -1
  212. package/dist/working-contract.d.ts +22 -1
  213. package/dist/working-contract.d.ts.map +1 -1
  214. package/dist/working-contract.js +31 -2
  215. package/dist/working-contract.js.map +1 -1
  216. package/package.json +4 -4
  217. package/public/dashboard.js +12 -4
  218. package/public/docs.md +98 -10
@@ -1 +1 @@
1
- {"version":3,"file":"reflection-automation.js","sourceRoot":"","sources":["../src/reflection-automation.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,8EAA8E;AAC9E,wDAAwD;AAExD,OAAO,EAAE,KAAK,EAAoC,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AA2C3C,cAAc;AAEd,MAAM,aAAa,GAAmB,EAAE,CAAA;AACxC,MAAM,WAAW,GAA2B,EAAE,CAAA;AAE9C,kFAAkF;AAClF,IAAI,YAAY,GAAG,KAAK,CAAA;AAExB;;;GAGG;AACH,IAAI,OAAO,GAAG,KAAK,CAAA;AACnB,SAAS,qBAAqB;IAC5B,IAAI,OAAO;QAAE,OAAM;IACnB,OAAO,GAAG,IAAI,CAAA;IACd,IAAI,CAAC;QACH,6BAA6B,EAAE,CAAA;QAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,sFAAsF,CAAC,CAAC,GAAG,EAAgD,CAAA;QACnK,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1E,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAa,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACvC,CAAC;AAED,cAAc;AAEd,MAAM,UAAU,6BAA6B;IAC3C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,IAAI,CAAC;;;;;;;;GAQP,CAAC,CAAA;AACJ,CAAC;AAED,mCAAmC;AAEnC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAM;IAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC3B,IAAI,CAAC,KAAK;QAAE,OAAM;IAClB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAM;IAEtE,+BAA+B;IAC/B,6BAA6B,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,OAAO,CAAC;;;;;;GAMV,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAErC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAA;IAC7D,aAAa,CAAC,IAAI,CAAC;QACjB,KAAK;QACL,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,SAAS,EAAE,IAAI,CAAC,KAAK;QACrB,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;QAClB,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,6BAA6B,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOV,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,mDAAmD;AAEnD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IAKxC,iFAAiF;IACjF,0DAA0D;IAC1D,IAAI,YAAY;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IACvE,YAAY,GAAG,IAAI,CAAA;IAEnB,qEAAqE;IACrE,qBAAqB,EAAE,CAAA;IAEvB,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,EAAE,CAAA;IACxB,CAAC;YAAS,CAAC;QACT,YAAY,GAAG,KAAK,CAAA;IACtB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO;IAKpB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;IAE1E,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAA;IAE9C,mCAAmC;IACnC,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IACzD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,GAAG,IAAI,CAAC;YAAE,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAE1C,iBAAiB;QACjB,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU;YAAE,SAAQ;QAErF,yDAAyD;QACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,QAAQ,IAAI,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM;YAAE,SAAQ;QAEnG,MAAM,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QAC7F,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;QAC9B,cAAc,EAAE,CAAA;IAClB,CAAC;IAED,4BAA4B;IAC5B,6FAA6F;IAC7F,sFAAsF;IACtF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IAErC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,KAAK,KAAK,CAAA,CAAC,eAAe;IAEhF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU;YAAE,SAAQ;QAEzE,gDAAgD;QAChD,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,cAAc,GAAG,QAAQ,EAAE,kBAAkB,IAAI,CAAC,CAAA;QACxD,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAA;QAEjF,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,IAAI,iBAAiB,GAAG,CAAC,CAAA;QAEzB,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,0CAA0C;YAC1C,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5D,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAA;gBAClB,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;aAAM,IAAI,mBAAmB,EAAE,CAAC;YAC/B,oEAAoE;YACpE,MAAM,QAAQ,GAAG,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAA;YAC1C,MAAM,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;YAC1F,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAC;gBACrC,WAAW,GAAG,IAAI,CAAA;gBAClB,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,2BAA2B,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;YACjG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA;YAExB,qBAAqB;YACrB,6BAA6B,EAAE,CAAA;YAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;YAClB,EAAE,CAAC,OAAO,CAAC;;;;;;OAMV,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAEjC,UAAU,EAAE,CAAA;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,UAAU,EAAE,CAAA;AAC3E,CAAC;AAED,sBAAsB;AAEtB,MAAM,UAAU,iBAAiB;IAC/B,6BAA6B,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,0DAA0D;IAC1D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACrG,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAyB,CAAA;IACpG,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAEnD,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAClF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QACjC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACvC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAoB,EAAE,CAAA;IAEhC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,cAAc,GAAG,QAAQ,EAAE,kBAAkB,IAAI,IAAI,CAAA;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAA;QAEjF,IAAI,YAAY,GAAkB,IAAI,CAAA;QACtC,IAAI,MAAM,GAA4B,SAAS,CAAA;QAE/C,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5D,IAAI,UAAU,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;gBACrC,MAAM,GAAG,SAAS,CAAA;gBAClB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;YAClE,CAAC;iBAAM,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;gBACtC,MAAM,GAAG,KAAK,CAAA;gBACd,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;YAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,MAAM,GAAG,SAAS,CAAA;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC;YACR,KAAK;YACL,gBAAgB,EAAE,cAAc;YAChC,WAAW,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI;YAC5C,4BAA4B,EAAE,QAAQ,EAAE,2BAA2B,IAAI,CAAC;YACxE,YAAY;YACZ,MAAM;SACP,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;QAChD,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,uBAAuB;AAEvB,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB,EAAE,MAA6B,EAAE,UAAmB;IACnI,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS,CAAA;IAC1C,MAAM,GAAG,GAAG,SAAS;QACnB,CAAC,CAAC,yBAAyB,KAAK,MAAM,SAAS,MAAM,MAAM,gBAAgB;YACzE,4FAA4F;YAC5F,sDAAsD;QACxD,CAAC,CAAC,yBAAyB,KAAK,yBAAyB,SAAS,MAAM,MAAM,KAAK;YACjF,uFAAuF;YACvF,sDAAsD,CAAA;IAE1D,IAAI,CAAC;QACH,MAAM,YAAY,CAAC;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,MAAM;YAChB,YAAY,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;SAC1C,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,UAAkB,EAAE,SAAiB,EAAE,MAA6B;IAC9G,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,SAAS,sCAAsC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1G,MAAM,GAAG,GAAG,uBAAuB,KAAK,eAAe,UAAU,gCAAgC,QAAQ,GAAG;QAC1G,6EAA6E,CAAA;IAE/E,IAAI,CAAC;QACH,MAAM,YAAY,CAAC;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,gBAAgB;YAC1B,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;SAC1C,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC,CAAC,+BAA+B,CAAC,CAAC;AAC7C,CAAC;AAED,gBAAgB;AAEhB,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAA;IAClC,OAAQ,MAAc,CAAC,eAAe,IAAI;QACxC,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,CAAC;QACnB,mBAAmB,EAAE,CAAC;QACtB,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,SAAS;QAClB,gBAAgB,EAAE,EAAE;QACpB,aAAa,EAAE,EAAE;QACjB,mBAAmB,EAAE,IAAI;KAC1B,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IAMrC,6BAA6B,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,OAAO,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAQ,CAAA;AAC1F,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,6BAA6B,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAC3B,CAAC;AAED,2EAA2E;AAC3E,MAAM,wBAAwB,GAAG;IAC/B,SAAS;IACT,UAAU;IACV,SAAS;IACT,eAAe;IACf,WAAW;IACX,QAAQ;CACT,CAAA;AAED,SAAS,eAAe,CAAC,WAAsB;IAC7C,sDAAsD;IACtD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAA;IAChC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACzE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QACjC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACvC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAC,MAA6B;IACnD,6BAA6B,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAElB,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAY;SACjF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IAE5B,kFAAkF;IAClF,6EAA6E;IAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IAE7C,MAAM,IAAI,GAAG,YAAY;QACvB,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IAEzC,MAAM,GAAG,GAAG,YAAY;QACtB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAEvC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAClF,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QACjC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACvC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC;AAGD,qBAAqB;AAErB,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;QAClB,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,GAAG,EAAE,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACrC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAA;IACxB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,GAAG,aAAa,CAAC,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"reflection-automation.js","sourceRoot":"","sources":["../src/reflection-automation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Review auto-close bridge.
3
+ *
4
+ * Parses structured `[review] approved:` / `[review] rejected:` comments
5
+ * posted by the assigned reviewer and auto-fires the review decision,
6
+ * transitioning the task from validating→done or validating→todo.
7
+ *
8
+ * Safety invariants:
9
+ * - Only fires when task.status === 'validating'
10
+ * - Author must match task.reviewer (exact match, case-insensitive)
11
+ * - Parsed via strict regex — no fuzzy matching
12
+ * - Idempotent: ignores if task already past validating
13
+ * - Emits trust event on self-review attempt (reviewer === assignee)
14
+ * - Dry-run safe: `dryRun=true` returns parsed result without mutating
15
+ *
16
+ * Comment format (reviewer posts in task-comments):
17
+ * [review] approved: <comment text>
18
+ * [review] rejected: <comment text>
19
+ *
20
+ * task-1773490646984-eujrozhai
21
+ */
22
+ /** Result of parsing a comment for a review signal. */
23
+ export interface ReviewSignal {
24
+ detected: boolean;
25
+ decision?: 'approve' | 'reject';
26
+ comment?: string;
27
+ }
28
+ /**
29
+ * Parse a task comment body for a structured review signal.
30
+ *
31
+ * Accepts:
32
+ * [review] approved: <comment>
33
+ * [review] rejected: <comment>
34
+ * [review] approved (no trailing text also accepted)
35
+ *
36
+ * Case-insensitive. Leading/trailing whitespace ignored.
37
+ */
38
+ export declare function parseReviewSignal(content: string): ReviewSignal;
39
+ export interface AutoCloseContext {
40
+ taskId: string;
41
+ taskStatus: string;
42
+ taskReviewer: string | null | undefined;
43
+ taskAssignee: string | null | undefined;
44
+ commentAuthor: string;
45
+ commentContent: string;
46
+ dryRun?: boolean;
47
+ }
48
+ export interface AutoCloseResult {
49
+ fired: boolean;
50
+ decision?: 'approve' | 'reject';
51
+ reason?: string;
52
+ dryRun?: boolean;
53
+ }
54
+ /**
55
+ * Evaluate whether a comment should trigger auto-close, and return the decision.
56
+ * Does NOT mutate — caller is responsible for invoking the review endpoint.
57
+ *
58
+ * Returns fired=true + decision when all safety checks pass.
59
+ * Returns fired=false with reason when skipped.
60
+ */
61
+ export declare function evaluateAutoClose(ctx: AutoCloseContext): AutoCloseResult;
62
+ //# sourceMappingURL=review-autoclose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-autoclose.d.ts","sourceRoot":"","sources":["../src/review-autoclose.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,uDAAuD;AACvD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAQ/D;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACvC,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CA6BxE"}
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Review auto-close bridge.
4
+ *
5
+ * Parses structured `[review] approved:` / `[review] rejected:` comments
6
+ * posted by the assigned reviewer and auto-fires the review decision,
7
+ * transitioning the task from validating→done or validating→todo.
8
+ *
9
+ * Safety invariants:
10
+ * - Only fires when task.status === 'validating'
11
+ * - Author must match task.reviewer (exact match, case-insensitive)
12
+ * - Parsed via strict regex — no fuzzy matching
13
+ * - Idempotent: ignores if task already past validating
14
+ * - Emits trust event on self-review attempt (reviewer === assignee)
15
+ * - Dry-run safe: `dryRun=true` returns parsed result without mutating
16
+ *
17
+ * Comment format (reviewer posts in task-comments):
18
+ * [review] approved: <comment text>
19
+ * [review] rejected: <comment text>
20
+ *
21
+ * task-1773490646984-eujrozhai
22
+ */
23
+ /**
24
+ * Parse a task comment body for a structured review signal.
25
+ *
26
+ * Accepts:
27
+ * [review] approved: <comment>
28
+ * [review] rejected: <comment>
29
+ * [review] approved (no trailing text also accepted)
30
+ *
31
+ * Case-insensitive. Leading/trailing whitespace ignored.
32
+ */
33
+ export function parseReviewSignal(content) {
34
+ const normalized = content.trim();
35
+ // Match: [review] approved: ... or [review] rejected: ...
36
+ const match = normalized.match(/^\[review\]\s+(approved|rejected)[:\s]*(.*)/i);
37
+ if (!match)
38
+ return { detected: false };
39
+ const decision = match[1].toLowerCase() === 'approved' ? 'approve' : 'reject';
40
+ const comment = (match[2] ?? '').trim() || (decision === 'approve' ? 'Approved via structured review comment' : 'Rejected via structured review comment');
41
+ return { detected: true, decision, comment };
42
+ }
43
+ /**
44
+ * Evaluate whether a comment should trigger auto-close, and return the decision.
45
+ * Does NOT mutate — caller is responsible for invoking the review endpoint.
46
+ *
47
+ * Returns fired=true + decision when all safety checks pass.
48
+ * Returns fired=false with reason when skipped.
49
+ */
50
+ export function evaluateAutoClose(ctx) {
51
+ const { taskStatus, taskReviewer, taskAssignee, commentAuthor, commentContent, dryRun } = ctx;
52
+ // Only act on validating tasks
53
+ if (taskStatus !== 'validating') {
54
+ return { fired: false, reason: `task is ${taskStatus}, not validating` };
55
+ }
56
+ // Must have an assigned reviewer
57
+ if (!taskReviewer) {
58
+ return { fired: false, reason: 'task has no assigned reviewer' };
59
+ }
60
+ // Author must be the assigned reviewer
61
+ if (commentAuthor.trim().toLowerCase() !== taskReviewer.trim().toLowerCase()) {
62
+ return { fired: false, reason: `author "${commentAuthor}" is not the assigned reviewer "${taskReviewer}"` };
63
+ }
64
+ // Parse the comment
65
+ const signal = parseReviewSignal(commentContent);
66
+ if (!signal.detected) {
67
+ return { fired: false, reason: 'no structured [review] signal found in comment' };
68
+ }
69
+ return {
70
+ fired: true,
71
+ decision: signal.decision,
72
+ dryRun,
73
+ };
74
+ }
75
+ //# sourceMappingURL=review-autoclose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-autoclose.js","sourceRoot":"","sources":["../src/review-autoclose.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;GAoBG;AASH;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IACjC,0DAA0D;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IAC9E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC7E,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAA;IACzJ,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC9C,CAAC;AAmBD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAqB;IACrD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IAE7F,+BAA+B;IAC/B,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,UAAU,kBAAkB,EAAE,CAAA;IAC1E,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAA;IAClE,CAAC;IAED,uCAAuC;IACvC,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,aAAa,mCAAmC,YAAY,GAAG,EAAE,CAAA;IAC7G,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAA;IACnF,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM;KACP,CAAA;AACH,CAAC"}
@@ -1,86 +1,62 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  import { describe, it } from 'node:test';
3
3
  import assert from 'node:assert/strict';
4
- const ACTIONABLE = new Set(['review_requested', 'approval_requested', 'escalation', 'handoff']);
5
- const VALID_URGENCY = new Set(['low', 'normal', 'high', 'critical']);
6
- function validate(eventType, payload) {
7
- if (!ACTIONABLE.has(eventType))
8
- return { valid: true, errors: [] };
9
- const errors = [];
10
- if (!payload.action_required || typeof payload.action_required !== 'string')
11
- errors.push('action_required required');
12
- if (!payload.urgency || typeof payload.urgency !== 'string')
13
- errors.push('urgency required');
14
- else if (!VALID_URGENCY.has(payload.urgency))
15
- errors.push('invalid urgency');
16
- if (!payload.owner || typeof payload.owner !== 'string')
17
- errors.push('owner required');
18
- return { valid: errors.length === 0, errors };
19
- }
4
+ import { validateRoutingSemantics, VALID_ACTION_REQUIRED, VALID_ROUTING_URGENCY } from './agent-runs.js';
20
5
  describe('routing semantics enforcement', () => {
21
- it('non-actionable events always pass', () => {
22
- assert.equal(validate('task_completed', {}).valid, true);
23
- assert.equal(validate('memory_written', {}).valid, true);
24
- assert.equal(validate('run_started', {}).valid, true);
6
+ it('non-routing payload on non-actionable events passes', () => {
7
+ assert.equal(validateRoutingSemantics('task_completed', {}).valid, true);
8
+ assert.equal(validateRoutingSemantics('memory_written', {}).valid, true);
25
9
  });
26
- it('review_requested with all fields passes', () => {
27
- const r = validate('review_requested', { action_required: 'Review PR', urgency: 'normal', owner: 'kai' });
10
+ it('review_requested with locked routing vocabulary passes', () => {
11
+ const r = validateRoutingSemantics('review_requested', { action_required: 'review', urgency: 'normal', owner: 'kai' });
28
12
  assert.equal(r.valid, true);
29
13
  });
30
- it('approval_requested with all fields passes', () => {
31
- const r = validate('approval_requested', { action_required: 'Deploy?', urgency: 'high', owner: 'ryan' });
32
- assert.equal(r.valid, true);
33
- });
34
- it('escalation with all fields passes', () => {
35
- const r = validate('escalation', { action_required: 'Server down', urgency: 'critical', owner: 'link' });
36
- assert.equal(r.valid, true);
37
- });
38
- it('handoff with all fields passes', () => {
39
- const r = validate('handoff', { action_required: 'Continue build', urgency: 'normal', owner: 'pixel' });
40
- assert.equal(r.valid, true);
14
+ it('routing payload on any event requires both fields', () => {
15
+ const r = validateRoutingSemantics('tool_invoked', { action_required: 'fyi' });
16
+ assert.equal(r.valid, false);
17
+ assert.ok(r.errors.some(e => e.includes('urgency')));
41
18
  });
42
19
  it('rejects missing action_required', () => {
43
- const r = validate('review_requested', { urgency: 'normal', owner: 'kai' });
20
+ const r = validateRoutingSemantics('review_requested', { urgency: 'normal', owner: 'kai' });
44
21
  assert.equal(r.valid, false);
45
22
  assert.ok(r.errors.some(e => e.includes('action_required')));
46
23
  });
47
24
  it('rejects missing urgency', () => {
48
- const r = validate('review_requested', { action_required: 'Review', owner: 'kai' });
25
+ const r = validateRoutingSemantics('review_requested', { action_required: 'review', owner: 'kai' });
49
26
  assert.equal(r.valid, false);
50
27
  assert.ok(r.errors.some(e => e.includes('urgency')));
51
28
  });
52
- it('rejects missing owner', () => {
53
- const r = validate('review_requested', { action_required: 'Review', urgency: 'normal' });
29
+ it('rejects invalid action_required value', () => {
30
+ const r = validateRoutingSemantics('review_requested', { action_required: 'Review PR', urgency: 'normal', owner: 'kai' });
54
31
  assert.equal(r.valid, false);
55
- assert.ok(r.errors.some(e => e.includes('owner')));
32
+ assert.ok(r.errors.some(e => e.includes('action_required')));
56
33
  });
57
34
  it('rejects invalid urgency value', () => {
58
- const r = validate('review_requested', { action_required: 'Review', urgency: 'medium', owner: 'kai' });
35
+ const r = validateRoutingSemantics('review_requested', { action_required: 'review', urgency: 'high', owner: 'kai' });
59
36
  assert.equal(r.valid, false);
60
37
  assert.ok(r.errors.some(e => e.includes('urgency')));
61
38
  });
62
- it('accepts all valid urgency levels', () => {
63
- for (const u of ['low', 'normal', 'high', 'critical']) {
64
- const r = validate('review_requested', { action_required: 'Test', urgency: u, owner: 'kai' });
65
- assert.equal(r.valid, true, `${u} should be valid`);
39
+ it('accepts all locked action_required values', () => {
40
+ for (const value of VALID_ACTION_REQUIRED) {
41
+ const r = validateRoutingSemantics('review_requested', { action_required: value, urgency: 'normal' });
42
+ assert.equal(r.valid, true, `${value} should be valid`);
66
43
  }
67
44
  });
68
- it('rejects empty payload for actionable event', () => {
69
- const r = validate('approval_requested', {});
70
- assert.equal(r.valid, false);
71
- assert.equal(r.errors.length, 3); // missing all 3 required fields
72
- });
73
- it('collects all errors at once', () => {
74
- const r = validate('escalation', {});
75
- assert.equal(r.errors.length, 3);
45
+ it('accepts all locked urgency values', () => {
46
+ for (const value of VALID_ROUTING_URGENCY) {
47
+ const r = validateRoutingSemantics('review_requested', { action_required: 'review', urgency: value });
48
+ assert.equal(r.valid, true, `${value} should be valid`);
49
+ }
76
50
  });
77
- it('rejects non-string action_required', () => {
78
- const r = validate('review_requested', { action_required: 123, urgency: 'normal', owner: 'kai' });
51
+ it('collects both missing-field errors at once', () => {
52
+ const r = validateRoutingSemantics('handoff', {});
79
53
  assert.equal(r.valid, false);
54
+ assert.equal(r.errors.length, 2);
80
55
  });
81
- it('rejects non-string owner', () => {
82
- const r = validate('review_requested', { action_required: 'Review', urgency: 'normal', owner: 42 });
83
- assert.equal(r.valid, false);
56
+ it('warns on non-numeric expires_at', () => {
57
+ const r = validateRoutingSemantics('handoff', { action_required: 'approve', urgency: 'low', expires_at: 'soon' });
58
+ assert.equal(r.valid, true);
59
+ assert.ok(r.warnings.some(w => w.includes('expires_at')));
84
60
  });
85
61
  });
86
62
  //# sourceMappingURL=routing-enforcement.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routing-enforcement.test.js","sourceRoot":"","sources":["../src/routing-enforcement.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing-enforcement.test.js","sourceRoot":"","sources":["../src/routing-enforcement.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Sentry Webhook → #ops Bridge
3
+ *
4
+ * Parses Sentry webhook payloads (issue alerts, metric alerts, etc.)
5
+ * and formats them as chat messages for the #ops channel.
6
+ *
7
+ * Sentry webhook payload docs:
8
+ * https://docs.sentry.io/organization/integrations/integration-platform/webhooks/
9
+ */
10
+ interface SentryIssueData {
11
+ id?: string;
12
+ title?: string;
13
+ culprit?: string;
14
+ metadata?: {
15
+ type?: string;
16
+ value?: string;
17
+ filename?: string;
18
+ function?: string;
19
+ };
20
+ count?: string | number;
21
+ userCount?: number;
22
+ firstSeen?: string;
23
+ shortId?: string;
24
+ project?: {
25
+ slug?: string;
26
+ name?: string;
27
+ id?: string;
28
+ };
29
+ level?: string;
30
+ status?: string;
31
+ }
32
+ interface SentryActor {
33
+ type?: string;
34
+ id?: string;
35
+ name?: string;
36
+ }
37
+ interface SentryWebhookPayload {
38
+ action?: string;
39
+ data?: {
40
+ issue?: SentryIssueData;
41
+ event?: Record<string, unknown>;
42
+ triggered_rule?: string;
43
+ metric_alert?: {
44
+ id?: string | number;
45
+ title?: string;
46
+ alert_rule?: {
47
+ id?: number;
48
+ name?: string;
49
+ };
50
+ status?: string;
51
+ };
52
+ };
53
+ actor?: SentryActor;
54
+ installation?: {
55
+ uuid?: string;
56
+ };
57
+ }
58
+ /**
59
+ * Format a Sentry webhook payload as a human-readable chat message.
60
+ * Returns null if the payload isn't actionable (e.g. installation hooks).
61
+ */
62
+ export declare function formatSentryAlert(payload: SentryWebhookPayload): string | null;
63
+ /**
64
+ * Verify Sentry webhook signature (HMAC-SHA256).
65
+ * Returns true if valid or if no secret is configured (permissive mode).
66
+ */
67
+ export declare function verifySentrySignature(rawBody: string | Buffer, signatureHeader: string | undefined, clientSecret: string | undefined): boolean;
68
+ export {};
69
+ //# sourceMappingURL=sentry-webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry-webhook.d.ts","sourceRoot":"","sources":["../src/sentry-webhook.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAIH,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,eAAe,CAAA;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,YAAY,CAAC,EAAE;YACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;YACpB,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,UAAU,CAAC,EAAE;gBAAE,EAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;YAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;SAChB,CAAA;KACF,CAAA;IACD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACjC;AAgBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAkB9E;AA8CD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAkBT"}
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (c) Reflectt AI
3
+ // ── Severity Emoji ─────────────────────────────────────────────────────────
4
+ function severityEmoji(level) {
5
+ switch (level) {
6
+ case 'fatal': return '💀';
7
+ case 'error': return '🔴';
8
+ case 'warning': return '🟡';
9
+ case 'info': return 'ℹ️';
10
+ default: return '🔴';
11
+ }
12
+ }
13
+ // ── Formatters ─────────────────────────────────────────────────────────────
14
+ /**
15
+ * Format a Sentry webhook payload as a human-readable chat message.
16
+ * Returns null if the payload isn't actionable (e.g. installation hooks).
17
+ */
18
+ export function formatSentryAlert(payload) {
19
+ const action = payload.action;
20
+ // Issue alert (most common)
21
+ if (payload.data?.issue) {
22
+ return formatIssueAlert(action, payload.data.issue, payload.data.triggered_rule);
23
+ }
24
+ // Metric alert
25
+ if (payload.data?.metric_alert) {
26
+ const ma = payload.data.metric_alert;
27
+ const ruleName = ma.alert_rule?.name ?? ma.title ?? 'Unknown metric alert';
28
+ const status = ma.status ?? action ?? 'triggered';
29
+ return `📊 **Metric Alert** — ${ruleName}\nStatus: ${status}`;
30
+ }
31
+ // Unrecognized / installation / comment hooks — skip
32
+ return null;
33
+ }
34
+ function formatIssueAlert(action, issue, triggeredRule) {
35
+ const emoji = severityEmoji(issue.level);
36
+ const title = issue.title ?? 'Unknown error';
37
+ const project = issue.project?.slug ?? issue.project?.name ?? 'unknown';
38
+ const shortId = issue.shortId ?? issue.id ?? '?';
39
+ const count = issue.count ?? '?';
40
+ // Build file/function hint
41
+ const file = issue.metadata?.filename ?? issue.culprit ?? null;
42
+ const fn = issue.metadata?.function ?? null;
43
+ const location = file ? (fn ? `${file} in ${fn}` : file) : null;
44
+ // Action verb
45
+ const verb = action === 'resolved' ? '✅ Resolved'
46
+ : action === 'assigned' ? '👤 Assigned'
47
+ : action === 'archived' ? '📦 Archived'
48
+ : action === 'unresolved' ? '🔄 Reopened'
49
+ : `${emoji} Triggered`;
50
+ const lines = [
51
+ `${verb}: **${title}**`,
52
+ `Project: ${project} · ${shortId} · ${count} event(s)`,
53
+ ];
54
+ if (location) {
55
+ lines.push(`📁 ${location}`);
56
+ }
57
+ if (triggeredRule) {
58
+ lines.push(`Rule: ${triggeredRule}`);
59
+ }
60
+ // Sentry issue URL (conventional format)
61
+ if (issue.project?.slug && issue.id) {
62
+ lines.push(`🔗 https://sentry.io/issues/${issue.id}/`);
63
+ }
64
+ return lines.join('\n');
65
+ }
66
+ /**
67
+ * Verify Sentry webhook signature (HMAC-SHA256).
68
+ * Returns true if valid or if no secret is configured (permissive mode).
69
+ */
70
+ export function verifySentrySignature(rawBody, signatureHeader, clientSecret) {
71
+ // If no secret configured, accept all (permissive mode for initial setup)
72
+ if (!clientSecret)
73
+ return true;
74
+ if (!signatureHeader)
75
+ return false;
76
+ try {
77
+ const crypto = require('crypto');
78
+ const expected = crypto
79
+ .createHmac('sha256', clientSecret)
80
+ .update(rawBody)
81
+ .digest('hex');
82
+ return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected));
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ //# sourceMappingURL=sentry-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry-webhook.js","sourceRoot":"","sources":["../src/sentry-webhook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Sentry Integration
3
+ *
4
+ * Initializes Sentry error tracking for reflectt-node.
5
+ * Only activates when SENTRY_DSN environment variable is set.
6
+ *
7
+ * Setup:
8
+ * 1. Create a Sentry project at sentry.io
9
+ * 2. Set SENTRY_DSN env var to the project's DSN
10
+ * 3. Optionally set SENTRY_ENVIRONMENT (defaults to 'production')
11
+ * 4. Optionally set SENTRY_CLIENT_SECRET for webhook signature verification
12
+ */
13
+ import * as Sentry from '@sentry/node';
14
+ export declare function initSentry(): boolean;
15
+ /**
16
+ * Capture an exception and send to Sentry.
17
+ * No-op if Sentry is not initialized.
18
+ */
19
+ export declare function captureException(error: Error | unknown, context?: Record<string, unknown>): void;
20
+ /**
21
+ * Capture a message and send to Sentry.
22
+ */
23
+ export declare function captureMessage(message: string, level?: 'info' | 'warning' | 'error'): void;
24
+ /**
25
+ * Flush pending events before shutdown.
26
+ */
27
+ export declare function flushSentry(timeoutMs?: number): Promise<void>;
28
+ export { Sentry };
29
+ //# sourceMappingURL=sentry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAItC,wBAAgB,UAAU,IAAI,OAAO,CA2CpC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAS,GAAG,OAAgB,GAAG,IAAI,CAGlG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}