@askexenow/exe-os 0.9.367 → 0.9.368

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 (344) hide show
  1. package/deploy/compose/.env.askexe-control-plane.example +3 -1
  2. package/deploy/compose/.env.customer.example +6 -2
  3. package/deploy/compose/.env.example +8 -2
  4. package/deploy/compose/docker-compose.yml +21 -2
  5. package/deploy/compose/generate-env.ts +21 -1
  6. package/dist/.dist-verified.json +3 -3
  7. package/dist/{active-agent-V3CUDNED.js → active-agent-6WNC756A.js} +3 -3
  8. package/dist/{active-agent-R6Q7UEUD.js → active-agent-RDTJGZHP.js} +3 -3
  9. package/dist/{agent-defs-generator-MLPRGY75.js → agent-defs-generator-M5AUL3WM.js} +2 -2
  10. package/dist/{agentic-ontology-5FMQWGDZ.js → agentic-ontology-ZJBRYETW.js} +1 -1
  11. package/dist/{backfill-metadata-YXUMCKRV.js → backfill-metadata-Q4X23XLR.js} +5 -5
  12. package/dist/{backup-verify-GYHKAX7K.js → backup-verify-UKLX6IEK.js} +1 -1
  13. package/dist/behavior-injection-C3HEKSJY.js +60 -0
  14. package/dist/{behaviors-O6HKTSOF.js → behaviors-UCMAREU3.js} +8 -6
  15. package/dist/bin/agentic-ontology-backfill.js +6 -6
  16. package/dist/bin/agentic-reflection-backfill.js +7 -7
  17. package/dist/bin/agentic-semantic-label.js +6 -6
  18. package/dist/bin/backfill-conversations.js +5 -5
  19. package/dist/bin/backfill-responses.js +5 -5
  20. package/dist/bin/backfill-vectors.js +6 -6
  21. package/dist/bin/bulk-sync-postgres.js +10 -10
  22. package/dist/bin/cc-doctor.js +4 -4
  23. package/dist/bin/cleanup-stale-review-tasks.js +14 -14
  24. package/dist/bin/cli.js +20 -20
  25. package/dist/bin/deferred-daemon-restart.js +83 -81
  26. package/dist/bin/exe-agent-config.js +2 -2
  27. package/dist/bin/exe-agent.js +11 -11
  28. package/dist/bin/exe-assign.js +6 -6
  29. package/dist/bin/exe-boot.js +30 -30
  30. package/dist/bin/exe-call.js +4 -4
  31. package/dist/bin/exe-cloud.js +11 -11
  32. package/dist/bin/exe-config-dump.js +2 -2
  33. package/dist/bin/exe-dispatch.js +15 -15
  34. package/dist/bin/exe-doctor.js +5 -5
  35. package/dist/bin/exe-export-behaviors.js +10 -8
  36. package/dist/bin/exe-forget.js +7 -7
  37. package/dist/bin/exe-gateway.js +7 -7
  38. package/dist/bin/exe-healthcheck.js +4 -4
  39. package/dist/bin/exe-heartbeat.js +17 -17
  40. package/dist/bin/exe-kill.js +18 -18
  41. package/dist/bin/exe-launch-agent.js +24 -23
  42. package/dist/bin/exe-mcp.js +3 -3
  43. package/dist/bin/exe-memory-reads.js +5 -5
  44. package/dist/bin/exe-new-employee.js +8 -8
  45. package/dist/bin/exe-os-mcp-proxy.js +3 -3
  46. package/dist/bin/exe-pending-messages.js +15 -15
  47. package/dist/bin/exe-pending-notifications.js +14 -14
  48. package/dist/bin/exe-pending-reviews.js +14 -14
  49. package/dist/bin/exe-rename.js +4 -4
  50. package/dist/bin/exe-review.js +17 -17
  51. package/dist/bin/exe-search.js +6 -6
  52. package/dist/bin/exe-session-cleanup.js +19 -18
  53. package/dist/bin/exe-settings.js +10 -10
  54. package/dist/bin/exe-start-codex.js +73 -19
  55. package/dist/bin/exe-start-opencode.js +11 -9
  56. package/dist/bin/exe-status.js +16 -16
  57. package/dist/bin/exe-support.js +3 -3
  58. package/dist/bin/exe-team.js +4 -4
  59. package/dist/bin/exe-verify-running-images.js +123 -4
  60. package/dist/bin/exe-watchdog.js +44 -3
  61. package/dist/bin/git-sweep.js +16 -15
  62. package/dist/bin/graph-backfill.js +7 -7
  63. package/dist/bin/graph-export.js +6 -6
  64. package/dist/bin/import-history.js +10 -10
  65. package/dist/bin/install.js +85 -83
  66. package/dist/bin/intercom-check.js +4 -4
  67. package/dist/bin/mcp-sessions.js +2 -2
  68. package/dist/bin/orchestration-metrics.js +4 -4
  69. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  70. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  71. package/dist/bin/reconcile-backlog.js +47 -6
  72. package/dist/bin/registry-proxy.js +1 -1
  73. package/dist/bin/scan-tasks.js +14 -14
  74. package/dist/bin/setup.js +1 -1
  75. package/dist/bin/shard-migrate.js +5 -5
  76. package/dist/bin/stack-update.js +6 -5
  77. package/dist/bin/verify-stack.js +6 -1
  78. package/dist/bin/vps-health-gate.js +1 -1
  79. package/dist/{boot-generation-EZ2Y74IG.js → boot-generation-7H7Y4KC2.js} +3 -3
  80. package/dist/{boot-review-sections-7CNQTAYR.js → boot-review-sections-4AGCECCP.js} +13 -13
  81. package/dist/build-manifest.json +808 -773
  82. package/dist/{capability-cards-ZTFMK4VJ.js → capability-cards-6KAC5D2Z.js} +2 -2
  83. package/dist/{capacity-monitor-B2XU4YHP.js → capacity-monitor-J2Y4SFLA.js} +15 -15
  84. package/dist/{catchup-brief-3BEOL7EV.js → catchup-brief-F2HKF2CU.js} +18 -18
  85. package/dist/{chunk-PR3AHVFW.js → chunk-2AS6FG6C.js} +3 -3
  86. package/dist/{chunk-WCDIDSLR.js → chunk-2UBMXN4D.js} +2 -2
  87. package/dist/{chunk-267QB6VB.js → chunk-2UGU3V63.js} +1 -1
  88. package/dist/{chunk-PQ6NRLKL.js → chunk-34BMZTWV.js} +1 -1
  89. package/dist/{chunk-XA4EU3CW.js → chunk-4DGIOK6T.js} +1 -1
  90. package/dist/{chunk-JJRZE2LD.js → chunk-4GVJIMMK.js} +12 -6
  91. package/dist/{chunk-2IZH6W73.js → chunk-4L732DE5.js} +3 -3
  92. package/dist/{chunk-ZSHLY5BS.js → chunk-4RRMZJLG.js} +1 -1
  93. package/dist/{chunk-MQ3N4KZY.js → chunk-5IVLOOJR.js} +1 -1
  94. package/dist/{chunk-PFR6EOUY.js → chunk-5YKNEL3W.js} +2 -2
  95. package/dist/{chunk-AE3PYLLS.js → chunk-6EXOW5ZA.js} +9 -9
  96. package/dist/{chunk-CTPG4KYZ.js → chunk-6P7DVFKA.js} +1 -1
  97. package/dist/{chunk-F3PIHVVY.js → chunk-6UZ3DEQI.js} +1 -1
  98. package/dist/{chunk-URHJDUWO.js → chunk-72JZQ7EV.js} +1 -1
  99. package/dist/{chunk-66BFQOWR.js → chunk-72QUZX6J.js} +4 -4
  100. package/dist/{chunk-JOKKIFRN.js → chunk-AAL6CDMQ.js} +7 -7
  101. package/dist/{chunk-FSIAGX55.js → chunk-AJGX4Z34.js} +1 -1
  102. package/dist/{chunk-OADOH45L.js → chunk-BEPO36MW.js} +3 -3
  103. package/dist/{chunk-UI3K73LD.js → chunk-BFL3UB77.js} +1 -1
  104. package/dist/{chunk-KDD26FUY.js → chunk-BFPQXPN3.js} +1 -1
  105. package/dist/{chunk-7W5LCREK.js → chunk-BJKC6ZJU.js} +40 -84
  106. package/dist/{chunk-OPS7KUFV.js → chunk-BLNSUBP3.js} +3 -3
  107. package/dist/{chunk-5CH6XKVC.js → chunk-BNDHQGOY.js} +1 -1
  108. package/dist/{chunk-Z5Z3MYUW.js → chunk-BPQWRR4H.js} +2 -2
  109. package/dist/{chunk-YA4PM3MV.js → chunk-BTGR55GX.js} +3 -3
  110. package/dist/{chunk-WYVBWDFY.js → chunk-C4IJ5IS5.js} +1 -1
  111. package/dist/{chunk-XVRQZCTS.js → chunk-C5FOA5GO.js} +14 -3
  112. package/dist/{chunk-XKFMNAJ7.js → chunk-CSBD7QLZ.js} +1 -1
  113. package/dist/{chunk-BY3V5CLX.js → chunk-CU2OUUSV.js} +25 -5
  114. package/dist/{chunk-Y4JVM3SI.js → chunk-CXHRNESJ.js} +1 -1
  115. package/dist/{chunk-SFKIZYKK.js → chunk-DRMGPZSC.js} +2 -2
  116. package/dist/{chunk-PFOJX6CR.js → chunk-DYPKSVB7.js} +5 -5
  117. package/dist/{chunk-PS4NA7PM.js → chunk-EDB3LXBQ.js} +268 -166
  118. package/dist/{chunk-TCR7NBHD.js → chunk-EDRXCUEP.js} +4 -4
  119. package/dist/{chunk-BQYQES2Z.js → chunk-ELY5WBZX.js} +10 -10
  120. package/dist/{chunk-ALYI3P5D.js → chunk-EZUSIF66.js} +1 -1
  121. package/dist/{chunk-CYNL3ZFD.js → chunk-FHYX64H3.js} +3 -3
  122. package/dist/{chunk-PWCZFIQH.js → chunk-FSALI4B7.js} +4 -4
  123. package/dist/{chunk-4DJDC4Y2.js → chunk-FWKTZURC.js} +4 -4
  124. package/dist/{chunk-53LCVVX5.js → chunk-FWVPGXHD.js} +5 -5
  125. package/dist/{chunk-O3F5P6Z5.js → chunk-GILYOIMP.js} +2 -2
  126. package/dist/{chunk-NPND34FS.js → chunk-GP3J3AOT.js} +4 -4
  127. package/dist/{chunk-6NJURKRG.js → chunk-H6J7N3BZ.js} +1 -1
  128. package/dist/{chunk-WSLFGJBA.js → chunk-HQSUXAB4.js} +1 -1
  129. package/dist/{chunk-XTEKGO44.js → chunk-HTLJHSN4.js} +1 -1
  130. package/dist/{chunk-AEVE654G.js → chunk-HXV3DGL7.js} +1 -1
  131. package/dist/{chunk-LW5WRSDD.js → chunk-IEE6X6R2.js} +1 -1
  132. package/dist/{chunk-V3ISR2QT.js → chunk-IKRIUEIF.js} +1 -1
  133. package/dist/{chunk-52CFP2AV.js → chunk-J44774XC.js} +1 -1
  134. package/dist/{chunk-TJSTWACD.js → chunk-J77ZIMH5.js} +5 -5
  135. package/dist/{chunk-Y7OK5PJE.js → chunk-JDPV7W2L.js} +1 -1
  136. package/dist/{chunk-7W6FDHHY.js → chunk-KGPWS4KE.js} +1 -1
  137. package/dist/{chunk-XAMLDTRA.js → chunk-KWQ7RHYD.js} +4 -4
  138. package/dist/{chunk-IIVFXD6P.js → chunk-KYVIV54Y.js} +1 -1
  139. package/dist/chunk-KZXMP6JG.js +319 -0
  140. package/dist/{chunk-ZZ3JQM5I.js → chunk-LJWCK2DR.js} +9 -9
  141. package/dist/{chunk-WBKIU6UJ.js → chunk-MCXYNYZI.js} +30 -2
  142. package/dist/{chunk-L2VZBPJJ.js → chunk-MWEIBVBS.js} +13 -1
  143. package/dist/{chunk-GUOMZ3JM.js → chunk-MXP27XTP.js} +2 -2
  144. package/dist/{chunk-EDZ5URGR.js → chunk-N3CGSO3S.js} +1 -1
  145. package/dist/{chunk-QWDZNQXA.js → chunk-NNXPIJRB.js} +1 -1
  146. package/dist/{chunk-OISZ2I4X.js → chunk-NWE3CFX7.js} +4 -4
  147. package/dist/{chunk-HSBKV5LB.js → chunk-OBESOWFJ.js} +3 -3
  148. package/dist/{chunk-XKZD5FGK.js → chunk-OL3QP3AU.js} +116 -1
  149. package/dist/{chunk-6MCUXRIP.js → chunk-P3PAD6AA.js} +1 -1
  150. package/dist/{chunk-N3JLNMPF.js → chunk-PGF5I7EV.js} +2 -2
  151. package/dist/{chunk-CX4MVEM3.js → chunk-PVWM2WMM.js} +1 -1
  152. package/dist/{chunk-JFOZHVNO.js → chunk-QCSAYYL6.js} +1 -1
  153. package/dist/{chunk-J6VQ7HYV.js → chunk-QE5KWKVU.js} +27 -6
  154. package/dist/{chunk-4WOOCTON.js → chunk-QKZEUCTS.js} +2 -2
  155. package/dist/{chunk-P5XER5QY.js → chunk-QT6CNCXO.js} +3 -3
  156. package/dist/{chunk-P76VYS6V.js → chunk-QZYYCPNL.js} +1 -1
  157. package/dist/{chunk-DTTISDTI.js → chunk-RDIZSXXD.js} +1 -1
  158. package/dist/{chunk-R4AROSYI.js → chunk-RFWOXKVL.js} +10 -179
  159. package/dist/chunk-S2YTU74T.js +76 -0
  160. package/dist/{chunk-K2OFS57E.js → chunk-TP7BFVQP.js} +2 -2
  161. package/dist/{chunk-LIZ3QQGK.js → chunk-TTJWPV4G.js} +1 -1
  162. package/dist/{chunk-XUGOVOID.js → chunk-UATT6BNO.js} +3 -3
  163. package/dist/{chunk-ALKYXAMB.js → chunk-UVM5ZXO2.js} +4 -4
  164. package/dist/{chunk-R3H3WW7H.js → chunk-V7E37GE3.js} +2 -2
  165. package/dist/{chunk-XSXZVKJ7.js → chunk-VD3CVNGB.js} +3 -3
  166. package/dist/{chunk-CKKLSY7B.js → chunk-VIW62NN5.js} +1 -1
  167. package/dist/{chunk-VY3QUSWS.js → chunk-VTOO5UB3.js} +9 -9
  168. package/dist/chunk-W5MCOZTW.js +304 -0
  169. package/dist/{chunk-TZFOWWPM.js → chunk-WJOJWRN5.js} +139 -33
  170. package/dist/{chunk-PS6VPW64.js → chunk-X4MRVNR3.js} +1 -1
  171. package/dist/{chunk-YYLVHUYZ.js → chunk-XBTQPQN7.js} +1 -1
  172. package/dist/{behavior-injection-7VGYY2KO.js → chunk-XOTDAKJL.js} +24 -38
  173. package/dist/{chunk-QX33D4CH.js → chunk-Y4AYNLXU.js} +25 -25
  174. package/dist/{chunk-BTMX2D4X.js → chunk-YGPJ7VSJ.js} +48 -10
  175. package/dist/{chunk-DXCTHNEF.js → chunk-ZR3VMM3X.js} +9 -9
  176. package/dist/{chunk-MLPPG2OG.js → chunk-ZWONQU5S.js} +1 -1
  177. package/dist/{cleanup-graph-garbage-XDIX3HLN.js → cleanup-graph-garbage-FBSQI33K.js} +8 -8
  178. package/dist/{cloud-sync-command-VPYE4FIH.js → cloud-sync-command-NHGVDTLM.js} +11 -3
  179. package/dist/{cloud-sync-db-init-NSDBTFGI.js → cloud-sync-db-init-I75VOTXC.js} +1 -1
  180. package/dist/{cloud-sync-shutdown-6OUYTG4T.js → cloud-sync-shutdown-JGOFGGET.js} +2 -2
  181. package/dist/{cloud-sync-state-5DFKLWNB.js → cloud-sync-state-QF3TMMJ4.js} +3 -1
  182. package/dist/{co-activation-EAAKGGZH.js → co-activation-AE5L2SJV.js} +2 -2
  183. package/dist/{co-occurrence-OFVF55RX.js → co-occurrence-O65D4SCN.js} +6 -6
  184. package/dist/{conversation-entity-extractor-ZR5GFKAI.js → conversation-entity-extractor-LFIDTD2O.js} +4 -4
  185. package/dist/{crdt-sync-FGH4SBFW.js → crdt-sync-NRWDBRSE.js} +1 -1
  186. package/dist/{crm-webhook-PJATR2DC.js → crm-webhook-XOQGX6DV.js} +2 -2
  187. package/dist/{cto-delegation-gate-PO4LSSQ4.js → cto-delegation-gate-ZGOAXQI2.js} +13 -13
  188. package/dist/{daemon-orchestration-IJFZFQUX.js → daemon-orchestration-ZMQWYYDT.js} +18 -18
  189. package/dist/dispatch-intent-journal-VV6HMZC4.js +17 -0
  190. package/dist/{doc-graph-extractor-CAYUAM5A.js → doc-graph-extractor-6C5JBKPP.js} +6 -6
  191. package/dist/{documents-W2G477QE.js → documents-FKSQGSO4.js} +6 -6
  192. package/dist/{dreaming-FVXSIIWV.js → dreaming-IB3H6NDZ.js} +17 -17
  193. package/dist/{employee-boot-brief-OYMSHFHA.js → employee-boot-brief-5YRTUEJH.js} +24 -21
  194. package/dist/{exe-drift-67RGJOBX.js → exe-drift-CUWUYX3O.js} +3 -3
  195. package/dist/{exe-export-SGYX6XZG.js → exe-export-XWENYJNM.js} +7 -7
  196. package/dist/{exe-import-UABVA5N3.js → exe-import-OWOMRF2S.js} +7 -7
  197. package/dist/{exe-key-XNYDCVFE.js → exe-key-P356FGK5.js} +83 -81
  198. package/dist/{exe-org-XJVSU5HN.js → exe-org-UKIVF3KE.js} +8 -8
  199. package/dist/{exe-snapshot-YXOGYZUX.js → exe-snapshot-AZI2WW5Y.js} +18 -18
  200. package/dist/{fast-db-init-GDFJY5UH.js → fast-db-init-FPAPF3GB.js} +1 -1
  201. package/dist/{founder-context-KUXSNXKS.js → founder-context-QTQ6V3B5.js} +2 -2
  202. package/dist/gateway/index.js +11 -11
  203. package/dist/{git-staleness-NN6RWNLW.js → git-staleness-6ACWLV5Q.js} +2 -2
  204. package/dist/{global-procedures-XDNA3TNA.js → global-procedures-RXIKBVLZ.js} +3 -3
  205. package/dist/{graph-auto-extract-KTOR45V4.js → graph-auto-extract-Q4A4QMOF.js} +6 -6
  206. package/dist/{graph-rag-L5NV5YWD.js → graph-rag-RLRQMY54.js} +4 -4
  207. package/dist/{hook-integrity-X3YAVGUW.js → hook-integrity-3X2JRLBM.js} +1 -1
  208. package/dist/{hook-prefetch-WE4MIXBM.js → hook-prefetch-DU44UZQP.js} +14 -14
  209. package/dist/hooks/bug-report-worker.js +18 -18
  210. package/dist/hooks/codex-stop-task-finalizer.js +19 -19
  211. package/dist/hooks/commit-complete.js +20 -18
  212. package/dist/hooks/error-recall.js +8 -8
  213. package/dist/hooks/exe-heartbeat-hook.js +4 -4
  214. package/dist/hooks/ingest-worker.js +2 -2
  215. package/dist/hooks/ingest.js +11 -11
  216. package/dist/hooks/instructions-loaded.js +5 -5
  217. package/dist/hooks/manifest.json +20 -20
  218. package/dist/hooks/notification.js +5 -5
  219. package/dist/hooks/post-compact.js +4 -4
  220. package/dist/hooks/post-tool-combined.js +11 -11
  221. package/dist/hooks/pre-compact.js +17 -17
  222. package/dist/hooks/pre-tool-use.js +44 -37
  223. package/dist/hooks/prompt-submit.js +35 -31
  224. package/dist/hooks/session-end.js +21 -21
  225. package/dist/hooks/session-start.js +16 -16
  226. package/dist/hooks/stop.js +20 -20
  227. package/dist/hooks/subagent-stop.js +18 -18
  228. package/dist/hooks/summary-worker.js +22 -22
  229. package/dist/index.js +25 -25
  230. package/dist/{installer-EAAYEEEF.js → installer-B7QYQE56.js} +7 -5
  231. package/dist/{installer-UDRMFY75.js → installer-EXR25DDG.js} +5 -5
  232. package/dist/{installer-EPQAOI6M.js → installer-TOPA7673.js} +5 -5
  233. package/dist/{intercom-queue-IBOAVT2I.js → intercom-queue-BZ4M3L4S.js} +13 -13
  234. package/dist/lib/cloud-sync.js +10 -10
  235. package/dist/lib/consolidation.js +8 -8
  236. package/dist/lib/database.js +2 -2
  237. package/dist/lib/db-backup.js +1 -1
  238. package/dist/lib/db-write-worker.js +3 -3
  239. package/dist/lib/db.js +2 -2
  240. package/dist/lib/delivery-truth.js +25 -0
  241. package/dist/lib/device-registry.js +1 -1
  242. package/dist/lib/employee-templates.js +4 -4
  243. package/dist/lib/employees.js +2 -2
  244. package/dist/lib/exe-daemon.js +181 -76
  245. package/dist/lib/hybrid-search.js +6 -6
  246. package/dist/lib/identity.js +2 -2
  247. package/dist/lib/license.js +2 -2
  248. package/dist/lib/messaging.js +14 -14
  249. package/dist/lib/registry-proxy.js +1 -1
  250. package/dist/lib/reminders.js +3 -3
  251. package/dist/lib/schedules.js +6 -6
  252. package/dist/lib/session-registry.js +4 -4
  253. package/dist/lib/skill-learning.js +7 -7
  254. package/dist/lib/store.js +5 -5
  255. package/dist/lib/task-router.js +3 -3
  256. package/dist/lib/tasks.js +15 -15
  257. package/dist/lib/tmux-routing.js +13 -13
  258. package/dist/lib/token-spend.js +3 -3
  259. package/dist/{license-gate-3TTWJABL.js → license-gate-YTIOLKVV.js} +3 -3
  260. package/dist/{license-sync-ZC6TPKVV.js → license-sync-5VE5OSTV.js} +2 -2
  261. package/dist/mcp/register-tools.js +82 -80
  262. package/dist/mcp/server.js +85 -83
  263. package/dist/mcp/tools/complete-reminder.js +4 -4
  264. package/dist/mcp/tools/create-reminder.js +4 -4
  265. package/dist/mcp/tools/create-task.js +25 -23
  266. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  267. package/dist/mcp/tools/list-reminders.js +4 -4
  268. package/dist/mcp/tools/list-tasks.js +17 -17
  269. package/dist/mcp/tools/send-message.js +16 -16
  270. package/dist/mcp/tools/update-task.js +16 -16
  271. package/dist/{mcp-http-config-ROF5EPEF.js → mcp-http-config-XUNRIGQH.js} +3 -3
  272. package/dist/{mcp-session-identity-ERU6FEUB.js → mcp-session-identity-4UIG7KLK.js} +13 -13
  273. package/dist/{memory-cards-3QTXI2SG.js → memory-cards-R74YU4CO.js} +5 -5
  274. package/dist/{memory-graph-extractor-7GAILMYG.js → memory-graph-extractor-3B4QJUXI.js} +7 -7
  275. package/dist/{memory-poisoning-defense-TPXSRJTQ.js → memory-poisoning-defense-OAKFL5O2.js} +2 -2
  276. package/dist/{memory-pressure-watchdog-ZSOP6T2F.js → memory-pressure-watchdog-FFC2CHFJ.js} +14 -14
  277. package/dist/{memory-reflection-3AI4JBV2.js → memory-reflection-5IJ6RE2J.js} +2 -2
  278. package/dist/{notification-ledger-ZU7ZFJJX.js → notification-ledger-P5XBUYKO.js} +14 -14
  279. package/dist/{notifications-S4GU22GF.js → notifications-LLCCHRYV.js} +13 -13
  280. package/dist/{orchestration-events-HVG56HJ5.js → orchestration-events-VBGCIQSS.js} +3 -3
  281. package/dist/{orchestrator-UW3Q3WYG.js → orchestrator-EB3SCTAJ.js} +15 -15
  282. package/dist/{org-brief-session-G36TJBN4.js → org-brief-session-GDCDKBFF.js} +6 -6
  283. package/dist/{org-consent-policy-RMYVMM3X.js → org-consent-policy-HCD42NBN.js} +2 -2
  284. package/dist/{org-partner-runtime-KXMGEYFW.js → org-partner-runtime-TPVKFR6E.js} +6 -6
  285. package/dist/{org-row-visibility-UI5PGN76.js → org-row-visibility-ZZLOPZLH.js} +1 -1
  286. package/dist/{pipeline-router-IODWXDDI.js → pipeline-router-3JTL2KF6.js} +3 -3
  287. package/dist/{plan-limits-XMAQVEJZ.js → plan-limits-MTHRP4WY.js} +5 -5
  288. package/dist/{projection-worker-6LZUCI3B.js → projection-worker-FLASNERC.js} +2 -2
  289. package/dist/{prospective-memory-G5VK5GCD.js → prospective-memory-HI3WUY4U.js} +2 -2
  290. package/dist/{push-notifications-S2RYRXLF.js → push-notifications-DFSR6P7V.js} +14 -14
  291. package/dist/{reranker-EHQTAA3L.js → reranker-XHBKUDGG.js} +1 -1
  292. package/dist/{retrieval-health-WZ4ICGNF.js → retrieval-health-NYKSDS6M.js} +1 -1
  293. package/dist/{review-polling-MAWLRDSP.js → review-polling-UAV6DZIZ.js} +14 -14
  294. package/dist/runtime/index.js +21 -21
  295. package/dist/{session-events-BRUIZ5E4.js → session-events-YCYPLWPG.js} +14 -14
  296. package/dist/{session-kill-telemetry-PTZLHT33.js → session-kill-telemetry-UEJTHL65.js} +14 -14
  297. package/dist/{session-scope-G4RVJJGR.js → session-scope-LXDW7LJJ.js} +13 -13
  298. package/dist/{setup-wizard-WFEUB63Z.js → setup-wizard-OVJQYUUL.js} +1 -1
  299. package/dist/{skill-refinement-2OYPH7WD.js → skill-refinement-EWRJID73.js} +3 -3
  300. package/dist/{stack-promote-DLYYQXQI.js → stack-promote-4IJM36OG.js} +4 -4
  301. package/dist/{stack-release-OPWARLXI.js → stack-release-BAIRY65H.js} +4 -4
  302. package/dist/{stack-update-SJ43IEQE.js → stack-update-VDM5WXRS.js} +3 -3
  303. package/dist/stalled-dispatch-escalation-MHLYH2PT.js +80 -0
  304. package/dist/{steward-gate-V7PBGVFK.js → steward-gate-Y4N2XY3R.js} +3 -3
  305. package/dist/{subagent-brief-injection-BLCRI2AJ.js → subagent-brief-injection-7A6JEVTP.js} +21 -20
  306. package/dist/{support-inbox-6HOQYFD2.js → support-inbox-LT4WJECQ.js} +4 -3
  307. package/dist/{task-enforcement-EF6O2V26.js → task-enforcement-WOIZ5TLK.js} +14 -14
  308. package/dist/{task-request-inbox-OB2KIJWO.js → task-request-inbox-D65BPUKZ.js} +2 -2
  309. package/dist/{task-scope-74JBTKJN.js → task-scope-PQ67YRWP.js} +13 -13
  310. package/dist/{tasks-crud-ZU6RZDEZ.js → tasks-crud-TJNMUKKH.js} +13 -13
  311. package/dist/{tasks-notify-767DRYAA.js → tasks-notify-7UVC3VGI.js} +14 -14
  312. package/dist/{tasks-review-4F6PZZ3B.js → tasks-review-WDWYISZ2.js} +13 -13
  313. package/dist/{telemetry-upload-2JM6KIAB.js → telemetry-upload-6LBGRJUE.js} +7 -7
  314. package/dist/{token-budget-NH2RD4YX.js → token-budget-XO5XW6DL.js} +3 -3
  315. package/dist/{tool-telemetry-CHCBD4OQ.js → tool-telemetry-ZL6TTZWG.js} +1 -1
  316. package/dist/tui/App.js +21 -21
  317. package/dist/{tui-data-244GF3BI.js → tui-data-UK7ZPKN4.js} +13 -13
  318. package/dist/{update-support-P2LO3DAB.js → update-support-BGL5KAZO.js} +12 -12
  319. package/dist/{work-claims-4QOE7DT2.js → work-claims-XZL2DKQ3.js} +3 -3
  320. package/dist/{work-state-heartbeat-GX3VWWWK.js → work-state-heartbeat-267YQ75U.js} +1 -1
  321. package/dist/{worker-gate-62PZATOV.js → worker-gate-RUM6MLIR.js} +1 -1
  322. package/dist/{workflow-engine-7YIRU62F.js → workflow-engine-YQHGHKSJ.js} +2 -2
  323. package/dist/{worktree-3TUKIZWY.js → worktree-3FO6EQ4G.js} +4 -4
  324. package/dist/{worktree-sweep-MYQHUXDE.js → worktree-sweep-X7MUEEQS.js} +5 -5
  325. package/package.json +2 -1
  326. package/release-notes.json +29 -23
  327. /package/dist/{chunk-25EN7XXN.js → chunk-4AN2PWUK.js} +0 -0
  328. /package/dist/{chunk-WM7Y5ZV2.js → chunk-5U4UJGTW.js} +0 -0
  329. /package/dist/{chunk-62U63R3E.js → chunk-EYIX6JU7.js} +0 -0
  330. /package/dist/{chunk-JLYHJJHU.js → chunk-FDA45THL.js} +0 -0
  331. /package/dist/{chunk-JZBZI36P.js → chunk-GIO4VU4J.js} +0 -0
  332. /package/dist/{chunk-BTFDA3UJ.js → chunk-I76LRCNA.js} +0 -0
  333. /package/dist/{chunk-YNPOELAN.js → chunk-LBWEAQ6Z.js} +0 -0
  334. /package/dist/{chunk-65ZSFW3O.js → chunk-MQ5RUHNZ.js} +0 -0
  335. /package/dist/{chunk-XM7HJ5SS.js → chunk-PFCE4AXQ.js} +0 -0
  336. /package/dist/{chunk-FLP2BQOA.js → chunk-SXAERZL2.js} +0 -0
  337. /package/dist/{chunk-OUIEDJFO.js → chunk-TKTQRSSD.js} +0 -0
  338. /package/dist/{chunk-DAXFAXLN.js → chunk-U2AZUMBZ.js} +0 -0
  339. /package/dist/{chunk-GTOMDMJL.js → chunk-W6FVADZS.js} +0 -0
  340. /package/dist/{core-memory-EARETDZ6.js → core-memory-W5ZHHBRR.js} +0 -0
  341. /package/dist/{memory-isolation-XASOGA7G.js → memory-isolation-ZE7EDBO4.js} +0 -0
  342. /package/dist/{oauth-server-C3BXAKAW.js → oauth-server-3HG62YYJ.js} +0 -0
  343. /package/dist/{project-boot-LCFBQ6NB.js → project-boot-3OAWKYLO.js} +0 -0
  344. /package/dist/{wiki-acl-XQH4UBP2.js → wiki-acl-FQV4E6M4.js} +0 -0
@@ -5,6 +5,9 @@ import {
5
5
  supportTaskIdSchema,
6
6
  supportVersionSchema
7
7
  } from "./chunk-5H47VHB7.js";
8
+ import {
9
+ buildVerificationArtifact
10
+ } from "./chunk-KZXMP6JG.js";
8
11
  import {
9
12
  SUPPORT_PRODUCTS,
10
13
  sanitizeProductFilter,
@@ -14,16 +17,88 @@ import {
14
17
  import {
15
18
  loadLicense,
16
19
  readCachedLicenseToken
17
- } from "./chunk-F3PIHVVY.js";
20
+ } from "./chunk-6UZ3DEQI.js";
18
21
 
19
22
  // src/mcp/tools/support-inbox.ts
20
- import { z } from "zod";
23
+ import { z as z2 } from "zod";
21
24
  import { readFileSync } from "fs";
22
25
  import { join } from "path";
23
26
  import { homedir } from "os";
27
+
28
+ // src/lib/support-verification-input.ts
29
+ import { z } from "zod";
30
+ function isVerifiedStatus(status) {
31
+ return status === "fixed" || status === "closed";
32
+ }
33
+ var verificationArtifactInputSchema = {
34
+ verification_kind: z.enum(["regression_test", "manual"]).optional().describe(
35
+ "REQUIRED to set status=fixed or closed. 'regression_test' when you actually RAN a test that fails at the parent commit and passes at the fix. 'manual' when a named person reproduced the original defect and confirmed it is gone."
36
+ ),
37
+ fix_commit: supportCommitSchema.optional().describe("SHA of the merged commit containing the fix. Its diff is measured locally \u2014 a comment-only or test-only commit is refused."),
38
+ repo_path: z.string().optional().describe("Absolute path to the repository containing fix_commit. Required when the fix landed outside the current working repo (e.g. exe-gateway, exe-crm). Defaults to the current directory."),
39
+ regression_test_id: z.string().optional().describe("regression_test only: the test that detects the defect, e.g. 'tests/raw-event-backlog.test.ts::counts unprocessed events'."),
40
+ parent_result: z.enum(["fail", "pass", "error"]).optional().describe("regression_test only: the result you OBSERVED running that test at the parent commit. Must be 'fail' \u2014 a test that already passed does not detect the defect."),
41
+ fix_result: z.enum(["fail", "pass", "error"]).optional().describe("regression_test only: the result you OBSERVED running that test at the fix commit. Must be 'pass'."),
42
+ verifier: z.string().optional().describe("manual only: the identity of the person or employee who confirmed the defect is gone. Checked server-side against the bug's filer and assignee \u2014 it may not be either. Placeholders ('me', 'agent') are refused."),
43
+ verification_method: z.string().optional().describe("manual only: how it was verified, in enough detail for someone else to repeat it."),
44
+ verification_observation: z.string().optional().describe("manual only: what was observed that shows the DEFECT IS ABSENT \u2014 not what the change did. 'It is fixed' is refused."),
45
+ delivery_proof: z.string().optional().describe('Optional JSON delivery declaration, e.g. {"channel":"npm","version":"0.9.364","tarball_shasum":"\u2026","fix_path_published":true}. Recorded, not required \u2014 delivery does not gate closing. A declaration that is present must still be true.')
46
+ };
47
+ var NO_ARTIFACT_HELP = [
48
+ "Refused locally: setting status=fixed or closed requires evidence that the defect is ABSENT.",
49
+ "",
50
+ "Supply ONE of:",
51
+ " regression_test \u2014 verification_kind='regression_test', fix_commit, repo_path,",
52
+ " regression_test_id, parent_result (must be the result you observed at the parent),",
53
+ " fix_result. Use this when you actually ran the test at both commits.",
54
+ " manual \u2014 verification_kind='manual', fix_commit, repo_path, verifier (a real identity,",
55
+ " not the bug's filer or assignee), verification_method, verification_observation",
56
+ " describing what you saw that shows the defect is gone.",
57
+ "",
58
+ "The fix commit's diff is measured from the repository; substance is never taken from the caller.",
59
+ "If you have not verified the defect is absent, do not close it \u2014 record what you found with notes instead."
60
+ ].join("\n");
61
+ function resolveVerificationArtifact(status, input, context = {}) {
62
+ if (!isVerifiedStatus(status)) return { ok: true };
63
+ if (!input.verification_kind && !input.fix_commit) {
64
+ return { ok: false, message: NO_ARTIFACT_HELP };
65
+ }
66
+ if (!input.verification_kind) {
67
+ return { ok: false, message: "verification_kind is required (regression_test or manual) when setting status=fixed or closed." };
68
+ }
69
+ if (!input.fix_commit) {
70
+ return { ok: false, message: "fix_commit is required when setting status=fixed or closed \u2014 the diff is measured, not described." };
71
+ }
72
+ const request = {
73
+ kind: input.verification_kind,
74
+ fix_commit: input.fix_commit,
75
+ repo_path: input.repo_path?.trim() || process.cwd(),
76
+ test_id: input.regression_test_id,
77
+ parent_result: input.parent_result,
78
+ fix_result: input.fix_result,
79
+ verifier: input.verifier,
80
+ method: input.verification_method,
81
+ observation: input.verification_observation
82
+ };
83
+ const built = buildVerificationArtifact(request, context);
84
+ if (!built.ok) {
85
+ return { ok: false, message: `Refused locally [${built.code}]: ${built.message}` };
86
+ }
87
+ return { ok: true, artifact: built.artifact };
88
+ }
89
+ function parseDeliveryProof(raw) {
90
+ if (raw === void 0 || !raw.trim()) return { ok: true };
91
+ try {
92
+ return { ok: true, value: JSON.parse(raw) };
93
+ } catch {
94
+ return { ok: false, message: "delivery_proof must be valid JSON (or omitted \u2014 delivery does not gate closing)." };
95
+ }
96
+ }
97
+
98
+ // src/mcp/tools/support-inbox.ts
24
99
  var DEFAULT_ENDPOINT = "https://api.askexe.com/admin/support/bug-reports";
25
100
  var DEFAULT_OWNER_ENDPOINT = "https://api.askexe.com/v1/support/bug-reports";
26
- var STATUS = z.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
101
+ var STATUS = z2.enum(["open", "triaged", "fixed", "closed", "wontfix"]);
27
102
  var SupportHttpError = class extends Error {
28
103
  constructor(status, message) {
29
104
  super(message);
@@ -158,13 +233,13 @@ function registerListBugReports(server) {
158
233
  title: "List Bug Reports",
159
234
  description: "AskExe-internal only: list incoming customer bug reports from the support inbox.",
160
235
  inputSchema: {
161
- status: z.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
162
- severity: z.enum(["p0", "p1", "p2", "p3"]).optional(),
236
+ status: z2.enum(["all", "open", "triaged", "fixed", "closed", "wontfix"]).default("open"),
237
+ severity: z2.enum(["p0", "p1", "p2", "p3"]).optional(),
163
238
  // Round 8: constrain to the known enum at the schema — a `product` filter is
164
239
  // NOT free text, and it was sent raw as a query param.
165
- product: z.enum(SUPPORT_PRODUCTS).optional().describe("Filter by product"),
166
- limit: z.number().int().min(1).max(500).default(25),
167
- offset: z.number().int().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
240
+ product: z2.enum(SUPPORT_PRODUCTS).optional().describe("Filter by product"),
241
+ limit: z2.number().int().min(1).max(500).default(25),
242
+ offset: z2.number().int().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
168
243
  }
169
244
  },
170
245
  async ({ status, severity, product, limit, offset }) => {
@@ -215,7 +290,7 @@ function registerAddBugReportComment(server) {
215
290
  description: "AskExe-internal only: append a comment to a bug report's thread (POST /comments). Non-destructive \u2014 does not touch triage_notes or status.",
216
291
  inputSchema: {
217
292
  id: supportIdSchema,
218
- comment: z.string().min(1).describe("Comment text to append to the bug report thread")
293
+ comment: z2.string().min(1).describe("Comment text to append to the bug report thread")
219
294
  }
220
295
  },
221
296
  async ({ id, comment }) => {
@@ -246,22 +321,50 @@ function registerTriageBugReport(server) {
246
321
  "triage_bug_report",
247
322
  {
248
323
  title: "Triage Bug Report",
249
- description: "AskExe-internal only: update bug report status and link task/commit/release metadata.",
324
+ description: "AskExe-internal only: update bug report status and link task/commit/release metadata. Setting status=fixed or closed requires a verification artifact (verification_kind + fix_commit + either the regression-test fields or the manual verifier fields); the fix commit's diff is measured locally.",
250
325
  inputSchema: {
251
326
  id: supportIdSchema,
252
327
  status: STATUS.optional(),
253
- triage_notes: z.string().optional(),
254
- add_note: z.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
328
+ triage_notes: z2.string().optional(),
329
+ add_note: z2.string().optional().describe("Append a timestamped progress note without changing status or replacing triage_notes"),
255
330
  linked_task_id: supportTaskIdSchema.optional(),
256
331
  linked_commit: supportCommitSchema.optional(),
257
332
  fixed_version: supportVersionSchema.optional(),
258
- product: supportProductSchema.optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp")
333
+ product: supportProductSchema.optional().describe("Re-label this bug's product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
334
+ ...verificationArtifactInputSchema
259
335
  }
260
336
  },
261
- async ({ id, status, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }) => {
262
- const data = await requestJson(`${endpoint()}/${encodeURIComponent(sanitizeUpstreamId(id))}`, {
337
+ async ({ id, status, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product, ...verification }) => {
338
+ const bugUrl = `${endpoint()}/${encodeURIComponent(sanitizeUpstreamId(id))}`;
339
+ let authorIdentities = [];
340
+ if (isVerifiedStatus(status) && verification.verification_kind === "manual") {
341
+ try {
342
+ const row = await requestJson(bugUrl);
343
+ authorIdentities = [row?.agent_id, row?.license_email];
344
+ } catch {
345
+ }
346
+ }
347
+ const resolved = resolveVerificationArtifact(status, verification, { authorIdentities });
348
+ if (!resolved.ok) {
349
+ return { isError: true, content: [{ type: "text", text: resolved.message }] };
350
+ }
351
+ const delivery = parseDeliveryProof(verification.delivery_proof);
352
+ if (!delivery.ok) {
353
+ return { isError: true, content: [{ type: "text", text: delivery.message }] };
354
+ }
355
+ const data = await requestJson(bugUrl, {
263
356
  method: "PATCH",
264
- body: sanitizedUpstreamBody({ status, triage_notes, add_note, linked_task_id, linked_commit, fixed_version, product }, "support-inbox:triage_bug")
357
+ body: sanitizedUpstreamBody({
358
+ status,
359
+ triage_notes,
360
+ add_note,
361
+ linked_task_id,
362
+ linked_commit,
363
+ fixed_version,
364
+ product,
365
+ verification_artifact: resolved.artifact,
366
+ delivery_proof: delivery.value
367
+ }, "support-inbox:triage_bug")
265
368
  });
266
369
  const response = fixed_version && !status ? withStatusNotice(
267
370
  data,
@@ -271,7 +374,7 @@ function registerTriageBugReport(server) {
271
374
  }
272
375
  );
273
376
  }
274
- var FEATURE_STATUS = z.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
377
+ var FEATURE_STATUS = z2.enum(["open", "planned", "in_progress", "shipped", "closed", "wontdo"]);
275
378
  function featureEndpoint() {
276
379
  return endpoint().replace(/\/bug-reports\/?$/, "/feature-requests");
277
380
  }
@@ -285,11 +388,11 @@ function registerListFeatureRequests(server) {
285
388
  title: "List Feature Requests",
286
389
  description: "AskExe-internal only: list incoming customer feature requests from the support inbox.",
287
390
  inputSchema: {
288
- status: z.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
289
- priority: z.enum(["p0", "p1", "p2", "p3"]).optional(),
290
- product: z.string().optional().describe("Filter by product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
291
- limit: z.number().int().min(1).max(500).default(25),
292
- offset: z.number().int().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
391
+ status: z2.enum(["all", "open", "planned", "in_progress", "shipped", "closed", "wontdo"]).default("open"),
392
+ priority: z2.enum(["p0", "p1", "p2", "p3"]).optional(),
393
+ product: z2.string().optional().describe("Filter by product: exe-os, exe-create, exe-wiki, exe-gateway, exe-crm, exe-build, exe-chat, exe-auth, exe-monitor, exe-db, exe-erp"),
394
+ limit: z2.number().int().min(1).max(500).default(25),
395
+ offset: z2.number().int().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
293
396
  }
294
397
  },
295
398
  async ({ status, priority, product, limit, offset }) => {
@@ -328,8 +431,8 @@ function registerTriageFeatureRequest(server) {
328
431
  inputSchema: {
329
432
  id: supportIdSchema,
330
433
  status: FEATURE_STATUS.optional(),
331
- response_notes: z.string().optional(),
332
- add_note: z.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
434
+ response_notes: z2.string().optional(),
435
+ add_note: z2.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
333
436
  target_version: supportVersionSchema.optional(),
334
437
  shipped_version: supportVersionSchema.optional(),
335
438
  // bug b8e990ed: allow admin re-label of a feature's product. Typed with the
@@ -350,7 +453,7 @@ function registerTriageFeatureRequest(server) {
350
453
  }
351
454
  );
352
455
  }
353
- var REVIEW_STATUS = z.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
456
+ var REVIEW_STATUS = z2.enum(["open", "in_review", "approved", "merged", "closed", "rejected"]);
354
457
  function reviewEndpoint() {
355
458
  return endpoint().replace(/\/bug-reports\/?$/, "/reviews");
356
459
  }
@@ -361,10 +464,10 @@ function registerListReviews(server) {
361
464
  title: "List Reviews",
362
465
  description: "AskExe-internal only: list incoming review requests from the support inbox.",
363
466
  inputSchema: {
364
- status: z.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
365
- priority: z.enum(["p0", "p1", "p2", "p3"]).optional(),
366
- limit: z.number().int().min(1).max(500).default(25),
367
- offset: z.number().int().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
467
+ status: z2.enum(["all", "open", "in_review", "approved", "merged", "closed", "rejected"]).default("open"),
468
+ priority: z2.enum(["p0", "p1", "p2", "p3"]).optional(),
469
+ limit: z2.number().int().min(1).max(500).default(25),
470
+ offset: z2.number().int().min(0).default(0).describe("Number of results to skip for pagination. Use next_offset from a prior response.")
368
471
  }
369
472
  },
370
473
  async ({ status, priority, limit, offset }) => {
@@ -401,10 +504,10 @@ function registerTriageReview(server) {
401
504
  inputSchema: {
402
505
  id: supportIdSchema,
403
506
  status: REVIEW_STATUS.optional(),
404
- response_notes: z.string().optional(),
405
- add_note: z.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
406
- resolution: z.string().optional(),
407
- pr_url: z.string().optional()
507
+ response_notes: z2.string().optional(),
508
+ add_note: z2.string().optional().describe("Append a timestamped progress note without changing status or replacing response_notes"),
509
+ resolution: z2.string().optional(),
510
+ pr_url: z2.string().optional()
408
511
  }
409
512
  },
410
513
  async ({ id, status, response_notes, add_note, resolution, pr_url }) => {
@@ -418,6 +521,9 @@ function registerTriageReview(server) {
418
521
  }
419
522
 
420
523
  export {
524
+ verificationArtifactInputSchema,
525
+ resolveVerificationArtifact,
526
+ parseDeliveryProof,
421
527
  registerListBugReports,
422
528
  registerGetBugReport,
423
529
  registerAddBugReportComment,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clean,
3
3
  stableId
4
- } from "./chunk-FLP2BQOA.js";
4
+ } from "./chunk-SXAERZL2.js";
5
5
 
6
6
  // src/lib/reflection-checkpoints.ts
7
7
  function parsePayload(payload) {
@@ -351,7 +351,7 @@ async function runRegistryProxy(options = registryProxyOptionsFromEnv()) {
351
351
  await new Promise((resolve) => server.listen(options.port, options.host, resolve));
352
352
  console.log(`exe-registry-proxy listening on ${options.host ?? "0.0.0.0"}:${options.port}`);
353
353
  console.log(`proxying /v2/${options.allowedNamespace ?? "askexe"}/* -> ${options.upstream ?? "https://ghcr.io"}`);
354
- const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-ZC6TPKVV.js");
354
+ const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-5VE5OSTV.js");
355
355
  const syncConfig = licenseSyncConfigFromEnv();
356
356
  if (syncConfig) {
357
357
  startLicenseSyncScheduler(syncConfig);
@@ -1,41 +1,9 @@
1
1
  import {
2
2
  listBehaviors
3
- } from "./chunk-WBKIU6UJ.js";
4
- import "./chunk-VMJ2UH4S.js";
5
- import "./chunk-QGGH7LOU.js";
6
- import "./chunk-BQYQES2Z.js";
7
- import "./chunk-JLYHJJHU.js";
8
- import "./chunk-CHCA3ZM2.js";
9
- import "./chunk-OTVEIJUQ.js";
10
- import "./chunk-WM7Y5ZV2.js";
11
- import "./chunk-5MOYSU5A.js";
12
- import "./chunk-4QCFFW2H.js";
13
- import "./chunk-76CJBM36.js";
3
+ } from "./chunk-MCXYNYZI.js";
14
4
  import {
15
5
  incrementSkillUsage
16
- } from "./chunk-CX4MVEM3.js";
17
- import "./chunk-BNHAZ65R.js";
18
- import "./chunk-RIECV7SR.js";
19
- import "./chunk-LNOS24GV.js";
20
- import "./chunk-NLEW62VC.js";
21
- import "./chunk-MP2AFCGL.js";
22
- import "./chunk-HSBKV5LB.js";
23
- import "./chunk-TKDITWDN.js";
24
- import "./chunk-BBMTVAE3.js";
25
- import "./chunk-5YEUPUV4.js";
26
- import "./chunk-Y7OK5PJE.js";
27
- import "./chunk-YYB5PMTK.js";
28
- import "./chunk-NJFJWQNN.js";
29
- import "./chunk-V3W3SATA.js";
30
- import "./chunk-JY5GAZYC.js";
31
- import "./chunk-FXU7JOXK.js";
32
- import "./chunk-HPXFKUGU.js";
33
- import "./chunk-QILQ5FCG.js";
34
- import "./chunk-ARX6TAGN.js";
35
- import "./chunk-QMSEL5YS.js";
36
- import "./chunk-HSGBZSCA.js";
37
- import "./chunk-JKKZGDLP.js";
38
- import "./chunk-MLKGABMK.js";
6
+ } from "./chunk-PVWM2WMM.js";
39
7
 
40
8
  // src/lib/behavior-injection.ts
41
9
  import { appendFile } from "fs/promises";
@@ -49,6 +17,20 @@ function p0OverflowNotice(activeBehaviors, cap = BEHAVIOR_INJECTION_CAP) {
49
17
  const dropped = storedP0 - injectedP0;
50
18
  return `\u26A0\uFE0F ${storedP0} p0 behaviors stored, ${injectedP0} injected \u2014 ${dropped} dropped. Prune/promote to avoid silent loss.`;
51
19
  }
20
+ var BEHAVIOR_SELECTION_ORDER_DOC = "p0 first, then identity rules, then most-recently-updated";
21
+ function behaviorTruncationNotice(injected, counts) {
22
+ const shown = injected.length;
23
+ const shownP0 = injected.filter((b) => b.priority === "p0").length;
24
+ const dropped = Math.max(0, counts.total - shown);
25
+ if (dropped === 0) return null;
26
+ const droppedP0 = Math.max(0, counts.p0 - shownP0);
27
+ const p0Clause = droppedP0 > 0 ? ` ${droppedP0} of them are p0 (showing ${shownP0} of ${counts.p0}).` : "";
28
+ return `\u26A0\uFE0F TRUNCATED: showing ${shown} of ${counts.total} active behaviors \u2014 ${dropped} not injected.${p0Clause} Selection order: ${BEHAVIOR_SELECTION_ORDER_DOC}. Your ruleset here is PARTIAL \u2014 do not assume a rule does not exist because it is absent. Run behavior(action='list', priority='p0') for the rest.`;
29
+ }
30
+ function formatOverCapWarning(agentId, counts, cap = BEHAVIOR_INJECTION_CAP) {
31
+ if (counts.total <= cap) return null;
32
+ return `\u26A0\uFE0F Over injection cap: ${agentId} now has ${counts.total} active behaviors (${counts.p0} p0) but only ~${cap} are injected into context (${BEHAVIOR_SELECTION_ORDER_DOC}). The rest are stored but NOT enforced at runtime. Prune stale ones with behavior(action='deactivate') or raise the priority of what must always apply.`;
33
+ }
52
34
  function cosineSimilarity(a, b) {
53
35
  if (a.length !== b.length || a.length === 0) return 0;
54
36
  let dot = 0, normA = 0, normB = 0;
@@ -274,13 +256,17 @@ async function injectBehaviors(opts) {
274
256
  );
275
257
  }
276
258
  }
259
+
277
260
  export {
278
261
  BEHAVIOR_INJECTION_CAP,
262
+ p0OverflowNotice,
263
+ BEHAVIOR_SELECTION_ORDER_DOC,
264
+ behaviorTruncationNotice,
265
+ formatOverCapWarning,
279
266
  cosineSimilarity,
267
+ scoreRelevance,
280
268
  extractKeywords,
269
+ selectRelevantBehaviors,
281
270
  formatBehaviorsMarkdown,
282
- injectBehaviors,
283
- p0OverflowNotice,
284
- scoreRelevance,
285
- selectRelevantBehaviors
271
+ injectBehaviors
286
272
  };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BTSWFMEH.js";
4
4
  import {
5
5
  ensureAgentSymlink
6
- } from "./chunk-6MCUXRIP.js";
6
+ } from "./chunk-P3PAD6AA.js";
7
7
  import {
8
8
  ensureWorktree,
9
9
  ensureWorktreeAsync,
@@ -11,16 +11,17 @@ import {
11
11
  getMainRepoRoot,
12
12
  isInsideGitRepo,
13
13
  isWorktreeDirty
14
- } from "./chunk-7W6FDHHY.js";
14
+ } from "./chunk-KGPWS4KE.js";
15
15
  import {
16
16
  resolveRowVisibility
17
- } from "./chunk-IIVFXD6P.js";
18
- import {
19
- incrementSkillSuccess
20
- } from "./chunk-CX4MVEM3.js";
17
+ } from "./chunk-KYVIV54Y.js";
21
18
  import {
22
19
  runBudgetedSweep
23
20
  } from "./chunk-KI5PFRG6.js";
21
+ import {
22
+ buildTaskResult,
23
+ serializeMessage
24
+ } from "./chunk-QAEWWYHL.js";
24
25
  import {
25
26
  reviewSignalPath,
26
27
  taskSignalDir
@@ -30,14 +31,10 @@ import {
30
31
  isLeaseExpired,
31
32
  leaseExpiryIso
32
33
  } from "./chunk-E23LNUWJ.js";
33
- import {
34
- buildTaskResult,
35
- serializeMessage
36
- } from "./chunk-QAEWWYHL.js";
37
34
  import {
38
35
  listSessions,
39
36
  registerSession
40
- } from "./chunk-XKFMNAJ7.js";
37
+ } from "./chunk-CSBD7QLZ.js";
41
38
  import {
42
39
  listTmuxSessions
43
40
  } from "./chunk-GBNB4EWD.js";
@@ -46,13 +43,16 @@ import {
46
43
  } from "./chunk-UXLO7VHX.js";
47
44
  import {
48
45
  recordOrchestrationEventBestEffort
49
- } from "./chunk-UI3K73LD.js";
46
+ } from "./chunk-BFL3UB77.js";
50
47
  import {
51
48
  appendDispatchJournalEvent,
52
49
  releaseDispatchClaim,
53
50
  tryAcquireDispatchClaim,
54
51
  writeDispatchAck
55
52
  } from "./chunk-AJIXH5JF.js";
53
+ import {
54
+ incrementSkillSuccess
55
+ } from "./chunk-PVWM2WMM.js";
56
56
  import {
57
57
  assertRuntimeModelCompatible,
58
58
  getAgentRuntime,
@@ -62,7 +62,7 @@ import {
62
62
  import {
63
63
  PlanLimitError,
64
64
  assertEmployeeLimitSync
65
- } from "./chunk-N3JLNMPF.js";
65
+ } from "./chunk-PGF5I7EV.js";
66
66
  import {
67
67
  getSessionKey
68
68
  } from "./chunk-CVYC6DUW.js";
@@ -96,13 +96,13 @@ import {
96
96
  loadEmployeesSync,
97
97
  offloadReadIfMain,
98
98
  offloadReadQuery
99
- } from "./chunk-HSBKV5LB.js";
99
+ } from "./chunk-OBESOWFJ.js";
100
100
  import {
101
101
  RUNTIME_TABLE
102
102
  } from "./chunk-WNBZJSQT.js";
103
103
  import {
104
104
  loadDeviceId
105
- } from "./chunk-F3PIHVVY.js";
105
+ } from "./chunk-6UZ3DEQI.js";
106
106
  import {
107
107
  EXE_AI_DIR
108
108
  } from "./chunk-QMSEL5YS.js";
@@ -1528,7 +1528,7 @@ async function createTaskCore(input) {
1528
1528
  if (isCoordinatorSession) {
1529
1529
  earlySessionScope = resolved;
1530
1530
  } else {
1531
- const { getSessionProject } = await import("./session-scope-G4RVJJGR.js");
1531
+ const { getSessionProject } = await import("./session-scope-LXDW7LJJ.js");
1532
1532
  const sessionProject = getSessionProject(resolved);
1533
1533
  if (sessionProject && sessionProject !== input.projectName) {
1534
1534
  scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
@@ -1832,7 +1832,7 @@ async function buildTaskRowsStatement(opts) {
1832
1832
  }
1833
1833
  if (opts.founderId !== null) {
1834
1834
  try {
1835
- const { founderScopeFilter } = await import("./founder-context-KUXSNXKS.js");
1835
+ const { founderScopeFilter } = await import("./founder-context-QTQ6V3B5.js");
1836
1836
  const founderFilter = founderScopeFilter(opts.founderId);
1837
1837
  const cleaned = founderFilter.sql.replace(/^\s*AND\s+/, "");
1838
1838
  conditions.push(cleaned);
@@ -5158,7 +5158,7 @@ async function verifyPaneAtCapacity(sessionName) {
5158
5158
  reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
5159
5159
  };
5160
5160
  }
5161
- const { isAtCapacity } = await import("./capacity-monitor-B2XU4YHP.js");
5161
+ const { isAtCapacity } = await import("./capacity-monitor-J2Y4SFLA.js");
5162
5162
  if (!isAtCapacity(pane)) {
5163
5163
  return {
5164
5164
  atCapacity: false,
@@ -5392,7 +5392,7 @@ async function countScopedPendingReviews(targetSession, reviewer) {
5392
5392
  }
5393
5393
  async function countScopedOpenTasks(targetSession, agentId) {
5394
5394
  try {
5395
- const { fastDbInit } = await import("./fast-db-init-GDFJY5UH.js");
5395
+ const { fastDbInit } = await import("./fast-db-init-FPAPF3GB.js");
5396
5396
  const client = await fastDbInit();
5397
5397
  const scope = extractRootExe(targetSession);
5398
5398
  if (!scope) return 0;
@@ -5447,7 +5447,7 @@ function buildScopedInProgressTaskQuery(targetSession) {
5447
5447
  async function findScopedInProgressTaskId(targetSession) {
5448
5448
  const q = buildScopedInProgressTaskQuery(targetSession);
5449
5449
  if (!q) return null;
5450
- const { fastDbInit } = await import("./fast-db-init-GDFJY5UH.js");
5450
+ const { fastDbInit } = await import("./fast-db-init-FPAPF3GB.js");
5451
5451
  const client = await fastDbInit();
5452
5452
  const result = await client.execute(q);
5453
5453
  const id = result.rows[0]?.id;
@@ -5568,7 +5568,7 @@ function sendIntercom(targetSession, opts) {
5568
5568
  const ledgerEnv = (process.env.EXE_NOTIFICATION_LEDGER ?? "").trim().toLowerCase();
5569
5569
  if (ledgerEnv === "shadow" || ledgerEnv === "on") {
5570
5570
  const ledgerScope = opts && "callerSessionScope" in opts ? opts.callerSessionScope : void 0;
5571
- void import("./notification-ledger-ZU7ZFJJX.js").then((m) => m.recordShadowNudge(targetSession, reason, ledgerScope, { force: opts?.force })).catch(() => {
5571
+ void import("./notification-ledger-P5XBUYKO.js").then((m) => m.recordShadowNudge(targetSession, reason, ledgerScope, { force: opts?.force })).catch(() => {
5572
5572
  });
5573
5573
  }
5574
5574
  if (!opts?.force && isDebounced(targetSession)) {
@@ -5704,7 +5704,7 @@ function scheduleDeferredSpawnNudge(input) {
5704
5704
  return;
5705
5705
  }
5706
5706
  queueIntercom(input.sessionName, `spawn nudge failed after ${attempt} attempts: ${msg}`, "signal");
5707
- void import("./notifications-S4GU22GF.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
5707
+ void import("./notifications-LLCCHRYV.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
5708
5708
  agentId: getCoordinatorName(),
5709
5709
  agentRole: "COO",
5710
5710
  event: "error_spike",
@@ -5798,7 +5798,7 @@ async function sendIntercomAsync(targetSession, opts) {
5798
5798
  let ledgerClaim = null;
5799
5799
  if (authoritativeLedger) {
5800
5800
  try {
5801
- const { claimAuthoritativeNudge } = await import("./notification-ledger-ZU7ZFJJX.js");
5801
+ const { claimAuthoritativeNudge } = await import("./notification-ledger-P5XBUYKO.js");
5802
5802
  const claim2 = await claimAuthoritativeNudge(
5803
5803
  targetSession,
5804
5804
  reason,
@@ -5821,7 +5821,7 @@ async function sendIntercomAsync(targetSession, opts) {
5821
5821
  const markLedgerDelivered = async () => {
5822
5822
  if (!ledgerClaim) return;
5823
5823
  try {
5824
- const { markNudgeDelivered } = await import("./notification-ledger-ZU7ZFJJX.js");
5824
+ const { markNudgeDelivered } = await import("./notification-ledger-P5XBUYKO.js");
5825
5825
  await markNudgeDelivered(ledgerClaim.id, ledgerClaim.sessionScope);
5826
5826
  } catch {
5827
5827
  }
@@ -5829,7 +5829,7 @@ async function sendIntercomAsync(targetSession, opts) {
5829
5829
  const markLedgerFailed = async (error) => {
5830
5830
  if (!ledgerClaim) return;
5831
5831
  try {
5832
- const { markNudgeDeliveryFailed } = await import("./notification-ledger-ZU7ZFJJX.js");
5832
+ const { markNudgeDeliveryFailed } = await import("./notification-ledger-P5XBUYKO.js");
5833
5833
  await markNudgeDeliveryFailed(ledgerClaim.id, error, ledgerClaim.sessionScope);
5834
5834
  } catch {
5835
5835
  }