@askexenow/exe-os 0.9.374 → 0.9.376

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 (455) hide show
  1. package/deploy/compose/.env.customer.example +16 -1
  2. package/deploy/compose/.env.example +16 -1
  3. package/deploy/compose/docker-compose.yml +80 -18
  4. package/deploy/compose/gateway-watchdog.sh +17 -0
  5. package/deploy/compose/generate-env.ts +41 -1
  6. package/deploy/compose/sso-edge/default.conf.template +59 -63
  7. package/deploy/compose/sso-edge/error-pages/404.html +129 -0
  8. package/deploy/compose/sso-edge/error-pages/500.html +129 -0
  9. package/deploy/compose/sso-edge/error-pages/503.html +118 -0
  10. package/deploy/compose/sso-edge/sso-redirect.conf +115 -92
  11. package/dist/.dist-verified.json +3 -3
  12. package/dist/{active-agent-ONPPEWQV.js → active-agent-BOBBUJ74.js} +6 -6
  13. package/dist/{active-agent-UJKMG7LJ.js → active-agent-GFGEGK2U.js} +6 -6
  14. package/dist/{agent-defs-generator-ZWI6DXOE.js → agent-defs-generator-OX6UFPRX.js} +5 -5
  15. package/dist/{agent-loop-OYHJKNYH.js → agent-loop-7ZRH56EX.js} +1 -1
  16. package/dist/{agentic-ontology-WHFJ3QFS.js → agentic-ontology-DT3VOXBT.js} +1 -1
  17. package/dist/{backfill-metadata-3OUSQD5V.js → backfill-metadata-VRP6PTPP.js} +9 -9
  18. package/dist/{backup-verify-ZKTUYLTA.js → backup-verify-LWHKGOOV.js} +1 -1
  19. package/dist/behavior-injection-GMZKZ3BT.js +83 -0
  20. package/dist/behavior-promotion-QPC4AQ24.js +62 -0
  21. package/dist/{behaviors-ZJ45TFBJ.js → behaviors-GPI4BLTC.js} +16 -14
  22. package/dist/bin/agentic-ontology-backfill.js +10 -10
  23. package/dist/bin/agentic-reflection-backfill.js +11 -11
  24. package/dist/bin/agentic-semantic-label.js +10 -10
  25. package/dist/bin/backfill-conversations.js +14 -12
  26. package/dist/bin/backfill-responses.js +14 -12
  27. package/dist/bin/backfill-vectors.js +16 -14
  28. package/dist/bin/bulk-sync-postgres.js +21 -19
  29. package/dist/bin/cc-doctor.js +19 -11
  30. package/dist/bin/cleanup-stale-review-tasks.js +27 -26
  31. package/dist/bin/cli.js +83 -109
  32. package/dist/bin/daemon-restart-handoff.js +2 -1
  33. package/dist/bin/deferred-daemon-restart.js +118 -110
  34. package/dist/bin/exe-actions.js +176 -0
  35. package/dist/bin/exe-agent-config.js +5 -5
  36. package/dist/bin/exe-agent.js +23 -23
  37. package/dist/bin/exe-assign.js +16 -14
  38. package/dist/bin/exe-boot.js +91 -71
  39. package/dist/bin/exe-call.js +8 -8
  40. package/dist/bin/exe-cicd.js +1210 -0
  41. package/dist/bin/exe-cloud.js +70 -37
  42. package/dist/bin/exe-config-dump.js +5 -5
  43. package/dist/bin/exe-dispatch.js +28 -27
  44. package/dist/bin/exe-doctor.js +12 -11
  45. package/dist/bin/exe-export-behaviors.js +20 -18
  46. package/dist/bin/exe-forget.js +11 -11
  47. package/dist/bin/exe-gateway.js +10 -10
  48. package/dist/bin/exe-healthcheck.js +22 -10
  49. package/dist/bin/exe-heartbeat.js +33 -32
  50. package/dist/bin/exe-kill.js +32 -31
  51. package/dist/bin/exe-launch-agent.js +76 -54
  52. package/dist/bin/exe-mcp.js +10 -6
  53. package/dist/bin/exe-memory-reads.js +9 -9
  54. package/dist/bin/exe-model-supervisor.js +138 -0
  55. package/dist/bin/exe-new-employee.js +14 -14
  56. package/dist/bin/exe-os-mcp-proxy.js +10 -6
  57. package/dist/bin/exe-pending-messages.js +28 -27
  58. package/dist/bin/exe-pending-notifications.js +27 -26
  59. package/dist/bin/exe-pending-reviews.js +28 -27
  60. package/dist/bin/exe-rename.js +9 -9
  61. package/dist/bin/exe-repo-truth.js +1 -1
  62. package/dist/bin/exe-review.js +31 -30
  63. package/dist/bin/exe-search.js +10 -10
  64. package/dist/bin/exe-session-cleanup.js +32 -31
  65. package/dist/bin/exe-settings.js +21 -19
  66. package/dist/bin/exe-start-codex.js +31 -25
  67. package/dist/bin/exe-start-opencode.js +24 -22
  68. package/dist/bin/exe-start.sh +11 -2
  69. package/dist/bin/exe-status.js +29 -28
  70. package/dist/bin/exe-support.js +3 -3
  71. package/dist/bin/exe-team.js +7 -7
  72. package/dist/bin/exe-timers.js +2 -1
  73. package/dist/bin/exe-watchdog.js +170 -16
  74. package/dist/bin/generate-hook-manifest.js +8 -41
  75. package/dist/bin/git-sweep.js +28 -27
  76. package/dist/bin/graph-backfill.js +11 -11
  77. package/dist/bin/graph-export.js +10 -10
  78. package/dist/bin/hooks-cli.js +289 -0
  79. package/dist/bin/import-history.js +14 -14
  80. package/dist/bin/install.js +130 -116
  81. package/dist/bin/intercom-check.js +5 -5
  82. package/dist/bin/mcp-sessions.js +2 -2
  83. package/dist/bin/orchestration-metrics.js +7 -7
  84. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  85. package/dist/bin/postgres-agentic-semantic-backfill.js +4 -4
  86. package/dist/bin/pre-publish.js +1 -1
  87. package/dist/bin/reconcile-backlog.js +2 -2
  88. package/dist/bin/registry-proxy.js +2 -2
  89. package/dist/bin/scan-tasks.js +52 -38
  90. package/dist/bin/setup.js +1 -1
  91. package/dist/bin/shard-migrate.js +9 -9
  92. package/dist/bin/stack-update.js +10 -5
  93. package/dist/bin/verify-stack.js +3 -1
  94. package/dist/bin/vps-health-gate.js +1 -1
  95. package/dist/{boot-generation-JKVZ4ZAT.js → boot-generation-BN6GKASY.js} +6 -6
  96. package/dist/{boot-review-sections-2M6BTG73.js → boot-review-sections-OQ5JGSOD.js} +26 -25
  97. package/dist/{branch-hygiene-U5GFRSTP.js → branch-hygiene-QLD77IMJ.js} +1 -1
  98. package/dist/build-manifest.json +1186 -1106
  99. package/dist/{capability-cards-5IMJT6J7.js → capability-cards-EDZ62HKG.js} +5 -5
  100. package/dist/{capacity-monitor-SAXCQK7O.js → capacity-monitor-6GMTVILS.js} +28 -27
  101. package/dist/{catchup-brief-U2TXBLHD.js → catchup-brief-SGGBMDUP.js} +32 -31
  102. package/dist/{cc-binary-detect-6TNIY5JX.js → cc-binary-detect-ZR6WNOUU.js} +1 -3
  103. package/dist/{chunk-NKETJCB5.js → chunk-2ODXCCMR.js} +18 -3
  104. package/dist/{hook-integrity-KGAV6ZC2.js → chunk-3L72UBUH.js} +28 -15
  105. package/dist/chunk-3OX5S7KZ.js +273 -0
  106. package/dist/{chunk-W75GTHR3.js → chunk-3SRZNJKD.js} +1 -1
  107. package/dist/{chunk-I4DNJFDR.js → chunk-42IFYZUN.js} +4 -4
  108. package/dist/{chunk-JHI5WMK5.js → chunk-473JUDCT.js} +5 -5
  109. package/dist/{chunk-ANLFH23R.js → chunk-4F5CNI65.js} +1 -1
  110. package/dist/{chunk-AWWKRZMB.js → chunk-4KVSCQND.js} +87 -14
  111. package/dist/{chunk-ZCERWHY2.js → chunk-4M6RXJEY.js} +33 -23
  112. package/dist/{chunk-YTSXPJUQ.js → chunk-4YJEEOYT.js} +3 -3
  113. package/dist/{chunk-6RKKVPYF.js → chunk-4YUGB637.js} +1 -1
  114. package/dist/{chunk-XXOPG4BW.js → chunk-4ZSOKEDY.js} +3 -3
  115. package/dist/{chunk-55BEFF4V.js → chunk-5DF4Y6EC.js} +1 -1
  116. package/dist/{chunk-4QCFFW2H.js → chunk-5QCIWWFA.js} +46 -0
  117. package/dist/{chunk-3UUX5OY4.js → chunk-5QKLWJ4Z.js} +1 -1
  118. package/dist/{chunk-YSLGFPWX.js → chunk-5UBWBXLF.js} +3 -3
  119. package/dist/chunk-5WA4DG2A.js +117 -0
  120. package/dist/{chunk-4EN3IZ3Q.js → chunk-64ODONK2.js} +67 -1
  121. package/dist/{chunk-TAMDAOCU.js → chunk-66CGXQUA.js} +239 -39
  122. package/dist/{chunk-QHJR7IMX.js → chunk-6F3FQCAQ.js} +3 -3
  123. package/dist/{chunk-WMEYJT4R.js → chunk-6FG34V6D.js} +15 -14
  124. package/dist/{chunk-NMH5ZQPU.js → chunk-6KQ6WMTI.js} +1 -1
  125. package/dist/{chunk-IRVOXUSK.js → chunk-6WKBTZVL.js} +10 -4
  126. package/dist/{chunk-NOKJCF27.js → chunk-7INEFMVU.js} +9 -3
  127. package/dist/{chunk-GSJLB6JI.js → chunk-7THUQU44.js} +34 -8
  128. package/dist/{chunk-HDLAB7W3.js → chunk-7UH2JWBF.js} +1 -1
  129. package/dist/{chunk-KTCXJWJG.js → chunk-7UNMSF5O.js} +1 -1
  130. package/dist/{chunk-JTVIANUB.js → chunk-AEUGIJDO.js} +3 -1
  131. package/dist/{chunk-DSJI76XL.js → chunk-AHNVFBVB.js} +113 -16
  132. package/dist/{chunk-IBS2FAI4.js → chunk-AUKRBHHZ.js} +4 -1
  133. package/dist/{chunk-AKLJ4JH3.js → chunk-BBK2TSK3.js} +1 -1
  134. package/dist/{chunk-ZL4AGWAH.js → chunk-BNWWVYRN.js} +6 -5
  135. package/dist/{chunk-PY3FOMRN.js → chunk-BQEZPRUC.js} +4 -4
  136. package/dist/{chunk-DIXXEE3S.js → chunk-BQXYXJYC.js} +721 -309
  137. package/dist/{chunk-ORM7ZFKC.js → chunk-BZ546I4Q.js} +32 -0
  138. package/dist/{chunk-3KDCORDO.js → chunk-C2UN464N.js} +1 -1
  139. package/dist/{chunk-75H4R62K.js → chunk-CBPNZFSU.js} +0 -2
  140. package/dist/{chunk-YLXTKI6M.js → chunk-CHO5SNWR.js} +1 -1
  141. package/dist/{chunk-MXPNVSXI.js → chunk-CIEVY5TD.js} +11 -11
  142. package/dist/{chunk-UBK7HK3J.js → chunk-CKLJT2DH.js} +2 -2
  143. package/dist/{chunk-MOGA4Q7F.js → chunk-CKOJP7JI.js} +1 -1
  144. package/dist/{chunk-V3W3SATA.js → chunk-CL4J4757.js} +1 -1
  145. package/dist/{chunk-XNNECNDL.js → chunk-CQFWTWC6.js} +13 -13
  146. package/dist/{chunk-PDVXWXTL.js → chunk-CROVXJ4S.js} +3 -3
  147. package/dist/{chunk-WJG344NC.js → chunk-CWSLTSL6.js} +8 -8
  148. package/dist/{chunk-VMTZ4RUW.js → chunk-DDMGQ5Q3.js} +60 -26
  149. package/dist/{chunk-YKC7QDZH.js → chunk-DN24VTS5.js} +31 -6
  150. package/dist/{chunk-IN6CAM4F.js → chunk-EHAN752X.js} +7 -7
  151. package/dist/{chunk-EXTZSNWL.js → chunk-EPHSISMT.js} +2 -2
  152. package/dist/{chunk-6EZQUNE6.js → chunk-FCMQVEVL.js} +36 -3
  153. package/dist/{chunk-3L2QU5ZF.js → chunk-FS7XF7SE.js} +1 -1
  154. package/dist/{chunk-LGS2V2XD.js → chunk-FUKVP54K.js} +66 -19
  155. package/dist/{chunk-44TLJZJ5.js → chunk-FX2QRSRT.js} +1 -1
  156. package/dist/{chunk-PWRC5XZO.js → chunk-FXZ6VGFW.js} +16 -8
  157. package/dist/{chunk-NT7W4RXD.js → chunk-GKDAQL45.js} +1 -1
  158. package/dist/{chunk-EKE37MO4.js → chunk-GOT5ZHPX.js} +3 -3
  159. package/dist/{chunk-SLLLOOEI.js → chunk-GPJIBLP4.js} +1 -0
  160. package/dist/{chunk-EKYYMIVT.js → chunk-GPUOUUHA.js} +10 -1
  161. package/dist/{chunk-PB5S7YOF.js → chunk-GXNBPTPJ.js} +1 -1
  162. package/dist/{chunk-4SJ4LK4V.js → chunk-HE34XVD5.js} +5 -5
  163. package/dist/{chunk-6VHOQ3IM.js → chunk-HHAKXIKX.js} +12 -9
  164. package/dist/{chunk-TFKCERAK.js → chunk-HHT527PV.js} +38 -41
  165. package/dist/{chunk-ZSODLMFV.js → chunk-HIVOLPLD.js} +1 -40
  166. package/dist/{chunk-UCFC2AEI.js → chunk-I3LDTSWU.js} +1 -1
  167. package/dist/{chunk-Q3AXXKDF.js → chunk-IKXH4BFC.js} +5 -5
  168. package/dist/chunk-IMYGYIAI.js +23 -0
  169. package/dist/{chunk-GS7LIT34.js → chunk-IPHLUZ37.js} +1 -1
  170. package/dist/{chunk-M4IRPXSZ.js → chunk-IZA7XW2Q.js} +3 -3
  171. package/dist/{chunk-SEQIPGLU.js → chunk-IZLML47J.js} +1 -1
  172. package/dist/{chunk-4HKTO2SV.js → chunk-JRMHGO5B.js} +1 -1
  173. package/dist/{chunk-U73AC5AN.js → chunk-JSTTPYL3.js} +16 -16
  174. package/dist/{chunk-6SCGLHJ7.js → chunk-JVWLHBAV.js} +4 -4
  175. package/dist/{chunk-OVEQE6YS.js → chunk-K7UNIEB4.js} +254 -48
  176. package/dist/{chunk-HNWS7YHN.js → chunk-KBR5LIWD.js} +1 -1
  177. package/dist/{chunk-AKLQSC6W.js → chunk-KI7O64XV.js} +328 -98
  178. package/dist/{chunk-XXFKSJYA.js → chunk-KK3MIY5C.js} +5 -5
  179. package/dist/{chunk-U6SUKSZR.js → chunk-KO3OHI6V.js} +3 -3
  180. package/dist/{chunk-NJFJWQNN.js → chunk-L5CGXEZC.js} +27 -22
  181. package/dist/{chunk-NBXDXKLC.js → chunk-LK3XQDBP.js} +1 -1
  182. package/dist/{chunk-T3QUKNLI.js → chunk-LM443ORV.js} +1 -1
  183. package/dist/{chunk-BBSIEYF5.js → chunk-LNAFLXL7.js} +12 -4
  184. package/dist/{chunk-32YV32VA.js → chunk-LTUA5EYI.js} +122 -11
  185. package/dist/{chunk-23MVDXLY.js → chunk-MAXD5JQL.js} +11 -10
  186. package/dist/{chunk-GNUAL43X.js → chunk-MFASHRJ6.js} +5 -5
  187. package/dist/chunk-MFYMDGE7.js +37 -0
  188. package/dist/{chunk-VKJGHAZT.js → chunk-MGVILAYU.js} +57 -13
  189. package/dist/{chunk-DB55JZHU.js → chunk-MSLWRWTI.js} +1 -1
  190. package/dist/{chunk-C2L622QJ.js → chunk-NB5IRTC4.js} +52 -44
  191. package/dist/{chunk-2ZOEC4KC.js → chunk-ND75TGPR.js} +2 -2
  192. package/dist/{chunk-VRTCVZND.js → chunk-NE34MWVL.js} +142 -16
  193. package/dist/{chunk-S2WBS6BG.js → chunk-NMOFLWDY.js} +1 -1
  194. package/dist/{chunk-CRCB5S7I.js → chunk-NPXKGBVZ.js} +140 -23
  195. package/dist/{chunk-JSMDRKPJ.js → chunk-NRBGUIPE.js} +1 -1
  196. package/dist/{chunk-4LWBC7CM.js → chunk-NY6SBR4O.js} +1 -1
  197. package/dist/{chunk-UCUOGVDX.js → chunk-O3K2C22L.js} +13 -1
  198. package/dist/{chunk-R522MWAR.js → chunk-OATET4BV.js} +2 -2
  199. package/dist/chunk-OOZU5H3T.js +86 -0
  200. package/dist/{chunk-XFTEX77S.js → chunk-OQ4FNDRG.js} +28 -6
  201. package/dist/{chunk-VYQ7B7DI.js → chunk-OWVX52XF.js} +4 -4
  202. package/dist/{chunk-AETLDRZB.js → chunk-PEAAX6UA.js} +1 -1
  203. package/dist/{chunk-UM3N6VND.js → chunk-PFAVHC5N.js} +5 -5
  204. package/dist/chunk-PMVVUIHH.js +85 -0
  205. package/dist/chunk-PPMGQFLJ.js +2317 -0
  206. package/dist/{chunk-7TSBV3SD.js → chunk-PTY2N23C.js} +310 -2
  207. package/dist/{chunk-UKLN57Q5.js → chunk-PZ5SKYK6.js} +4 -4
  208. package/dist/{chunk-636LKCKE.js → chunk-Q6ZLQMP2.js} +1 -1
  209. package/dist/{chunk-N7VEP5B3.js → chunk-QFR5EKZG.js} +29 -7
  210. package/dist/{chunk-YMP2QSOP.js → chunk-QN56VQ6Z.js} +1 -1
  211. package/dist/{chunk-6YVUR3OU.js → chunk-QR3BUMOS.js} +2 -2
  212. package/dist/{chunk-XZ65ST2I.js → chunk-QV5CQLQH.js} +2 -2
  213. package/dist/{chunk-DJOIMFKV.js → chunk-REZIGNA6.js} +2 -2
  214. package/dist/{chunk-UQGSBM3U.js → chunk-RFPMXR6B.js} +11 -0
  215. package/dist/{chunk-DN4YVV4Z.js → chunk-RSABKW6B.js} +1 -1
  216. package/dist/{chunk-LP4GB656.js → chunk-RZNP35SI.js} +2 -2
  217. package/dist/{chunk-NUTZJZKW.js → chunk-SKTAZGFI.js} +10 -42
  218. package/dist/{chunk-TQAZTRQ3.js → chunk-SVXUT2DN.js} +4 -4
  219. package/dist/{chunk-DJ7YXOTU.js → chunk-T7EF5CQO.js} +3 -3
  220. package/dist/{chunk-QAEWWYHL.js → chunk-TDF2XKLK.js} +5 -1
  221. package/dist/{chunk-ZGYNKA3O.js → chunk-TT5BBVLX.js} +29 -31
  222. package/dist/{chunk-5H47VHB7.js → chunk-UWX6MMCX.js} +1 -1
  223. package/dist/{chunk-XL5MFGMR.js → chunk-V4YNN7PA.js} +10 -3
  224. package/dist/{chunk-SL6KQYDU.js → chunk-V5DDXXMP.js} +7 -7
  225. package/dist/{chunk-DZKPOSFD.js → chunk-VH6SPPNA.js} +1 -1
  226. package/dist/{chunk-LDNYSMPZ.js → chunk-VJUUI2VT.js} +1 -1
  227. package/dist/{chunk-CBCGDEJA.js → chunk-VN5WOOAQ.js} +42 -6
  228. package/dist/{chunk-EXDW3E2R.js → chunk-VPHJ2LUI.js} +165 -15
  229. package/dist/{chunk-GOMQ7PVQ.js → chunk-WJC6AAJN.js} +1 -1
  230. package/dist/{chunk-GJI77VDO.js → chunk-WVBVUVZB.js} +6 -5
  231. package/dist/{chunk-A6PDF4BO.js → chunk-XTQ7R2PA.js} +2 -2
  232. package/dist/{chunk-L6RXG36J.js → chunk-Y2HD2YB7.js} +1 -1
  233. package/dist/{chunk-KTU3EAWK.js → chunk-YAACLBZ7.js} +5 -5
  234. package/dist/{chunk-7GE2EQ23.js → chunk-YGVAKKGJ.js} +11 -6
  235. package/dist/chunk-YLHACCCB.js +166 -0
  236. package/dist/{chunk-PLZSZOZN.js → chunk-YP6UGVEY.js} +3 -3
  237. package/dist/{chunk-ULIBLJ6W.js → chunk-YYC553FO.js} +5 -5
  238. package/dist/{chunk-T35RCQFE.js → chunk-YZPEQW7H.js} +9 -8
  239. package/dist/{chunk-KI5PFRG6.js → chunk-ZKGWHT56.js} +60 -2
  240. package/dist/{chunk-NUK7EEN5.js → chunk-ZKJ5S23O.js} +33 -13
  241. package/dist/chunk-ZLPS3GR7.js +146 -0
  242. package/dist/{chunk-XH7YL7JM.js → chunk-ZMX22HSS.js} +50 -6
  243. package/dist/{chunk-JY5GAZYC.js → chunk-ZQEJ4IX2.js} +4 -0
  244. package/dist/{chunk-R4CBHKZ2.js → chunk-ZS5JO6QV.js} +7 -6
  245. package/dist/{cleanup-graph-garbage-DPJGO52H.js → cleanup-graph-garbage-LAPIZGFX.js} +12 -12
  246. package/dist/{cloud-sync-command-JPNTT4OQ.js → cloud-sync-command-QAZ2NWRA.js} +11 -2
  247. package/dist/{cloud-sync-db-init-V2LWIUQU.js → cloud-sync-db-init-HAGVF32Y.js} +1 -1
  248. package/dist/{cloud-sync-shutdown-BNALPWGX.js → cloud-sync-shutdown-DAEPCFVK.js} +5 -5
  249. package/dist/{co-activation-CMNSWS6B.js → co-activation-523TKQPZ.js} +5 -5
  250. package/dist/{co-occurrence-WRI2NAN6.js → co-occurrence-PQUCTENN.js} +36 -17
  251. package/dist/{code-context-index-NOJSHLPN.js → code-context-index-LIDOFKOR.js} +6 -4
  252. package/dist/{code-context-watcher-VZNZU3BO.js → code-context-watcher-4F7K2N3U.js} +6 -4
  253. package/dist/{content-extractor-NXYNEF5K.js → content-extractor-DJM5EUDA.js} +2 -2
  254. package/dist/{conversation-entity-extractor-74252CAO.js → conversation-entity-extractor-THGKQ5RD.js} +5 -5
  255. package/dist/{crdt-sync-B3JN6AIV.js → crdt-sync-32B55NOJ.js} +1 -1
  256. package/dist/{crm-webhook-GYWQRFET.js → crm-webhook-FHRISFYQ.js} +2 -2
  257. package/dist/{cto-delegation-gate-LQHVLEMW.js → cto-delegation-gate-O6XPGECP.js} +27 -26
  258. package/dist/{daemon-auth-QZHEO7IQ.js → daemon-auth-PNKHERLV.js} +6 -1
  259. package/dist/daemon-drift-N2GKUBAO.js +15 -0
  260. package/dist/{daemon-orchestration-5HIQALZH.js → daemon-orchestration-BWLSJG2X.js} +33 -30
  261. package/dist/{daemon-ready-P2BR2XP5.js → daemon-ready-BN6EZLTQ.js} +1 -1
  262. package/dist/{daemon-ready-signal-CKXPUMJ2.js → daemon-ready-signal-PNDMVKPJ.js} +3 -1
  263. package/dist/{daemon-restart-circuit-breaker-SMTWFX27.js → daemon-restart-circuit-breaker-CD4VMCU7.js} +1 -1
  264. package/dist/daemon-restart-report-FIO5HZTJ.js +15 -0
  265. package/dist/{daemon-timer-report-TNJH5SFY.js → daemon-timer-report-6UK5PSDP.js} +2 -1
  266. package/dist/{db-integrity-events-2DTFO37N.js → db-integrity-events-GYGANKZV.js} +1 -1
  267. package/dist/{destructive-data-guard-BVFWPPIS.js → destructive-data-guard-HHWUBIGS.js} +1 -1
  268. package/dist/{doc-graph-extractor-PQHDHQPQ.js → doc-graph-extractor-HOKOV7BE.js} +10 -10
  269. package/dist/{documents-C4SSPJMC.js → documents-HWEJMONR.js} +16 -14
  270. package/dist/{dreaming-XAO3FCBV.js → dreaming-FMNDODG2.js} +31 -30
  271. package/dist/{employee-boot-brief-W4OHUMRQ.js → employee-boot-brief-DBFROOQJ.js} +35 -34
  272. package/dist/{entity-boost-3UWGXG5O.js → entity-boost-5V4W6NFA.js} +1 -1
  273. package/dist/{exe-drift-AG2KMKD5.js → exe-drift-V55UAYRT.js} +6 -6
  274. package/dist/{exe-export-IC5BT335.js → exe-export-LHN42ZUS.js} +18 -16
  275. package/dist/{exe-import-A35ZLDPG.js → exe-import-M536BEZC.js} +18 -16
  276. package/dist/{exe-key-TCMJNYLA.js → exe-key-37XIR22X.js} +111 -107
  277. package/dist/{exe-org-JXCR3JYZ.js → exe-org-7TDIRNTE.js} +14 -14
  278. package/dist/{exe-snapshot-SV6SRIG6.js → exe-snapshot-EOUBCIQK.js} +34 -33
  279. package/dist/{fast-db-init-L2RGKJWH.js → fast-db-init-GWUZ746B.js} +1 -1
  280. package/dist/{founder-context-D4HFIESJ.js → founder-context-6LQKET4A.js} +2 -2
  281. package/dist/{fts-integrity-4YB34KWX.js → fts-integrity-PLAL6NMG.js} +1 -1
  282. package/dist/gateway/index.js +17 -17
  283. package/dist/{git-main-guard-VTW4N3CM.js → git-main-guard-BGICS25C.js} +1 -1
  284. package/dist/{git-staleness-TN7CYGFG.js → git-staleness-QNNXJK3W.js} +5 -5
  285. package/dist/{global-procedures-YFDEIOG7.js → global-procedures-NMQGF54V.js} +7 -7
  286. package/dist/{gotrue-session-ODZ2ERJX.js → gotrue-session-U4H3UGHL.js} +1 -3
  287. package/dist/{graph-auto-extract-3YR3TYRW.js → graph-auto-extract-7POGAKHM.js} +10 -10
  288. package/dist/{graph-query-AP5R6ZHO.js → graph-query-ZEDO4BDF.js} +1 -1
  289. package/dist/{graph-rag-Z2KCJTPK.js → graph-rag-JA7XN7NO.js} +5 -5
  290. package/dist/hook-integrity-6NLSNTXD.js +15 -0
  291. package/dist/{hook-prefetch-K5DN3TOQ.js → hook-prefetch-4KH3D4YU.js} +28 -26
  292. package/dist/hook-tamper-log-Z4PWC7N4.js +90 -0
  293. package/dist/hooks/bug-report-worker.js +31 -30
  294. package/dist/hooks/codex-stop-task-finalizer.js +33 -32
  295. package/dist/hooks/commit-complete.js +30 -29
  296. package/dist/hooks/error-recall.js +12 -12
  297. package/dist/hooks/exe-heartbeat-hook.js +7 -7
  298. package/dist/hooks/ingest-worker.js +17 -15
  299. package/dist/hooks/ingest.js +20 -20
  300. package/dist/hooks/instructions-loaded.js +9 -9
  301. package/dist/hooks/manifest.json +20 -20
  302. package/dist/hooks/notification.js +8 -8
  303. package/dist/hooks/post-compact.js +7 -7
  304. package/dist/hooks/post-tool-combined.js +14 -14
  305. package/dist/hooks/pre-compact.js +30 -29
  306. package/dist/hooks/pre-tool-use.js +303 -489
  307. package/dist/hooks/prompt-submit.js +61 -54
  308. package/dist/hooks/session-end.js +35 -34
  309. package/dist/hooks/session-start.js +18 -18
  310. package/dist/hooks/stop.js +36 -35
  311. package/dist/hooks/subagent-stop.js +32 -31
  312. package/dist/hooks/summary-worker.js +36 -35
  313. package/dist/index.js +39 -38
  314. package/dist/{installer-LK35OX6R.js → installer-M34Q7LAS.js} +25 -10
  315. package/dist/{installer-54HTN5RE.js → installer-POV6TDQ5.js} +12 -8
  316. package/dist/{installer-LLWKZI2S.js → installer-S624ZOMB.js} +12 -8
  317. package/dist/{intercom-queue-5NOT2RKI.js → intercom-queue-MKDWAEUV.js} +26 -25
  318. package/dist/lib/cloud-sync.js +27 -19
  319. package/dist/lib/consolidation.js +12 -12
  320. package/dist/lib/database.js +5 -5
  321. package/dist/lib/db-backup.js +7 -1
  322. package/dist/lib/db-daemon-client.js +8 -6
  323. package/dist/lib/db-write-worker.js +4 -4
  324. package/dist/lib/db.js +5 -5
  325. package/dist/lib/device-registry.js +1 -1
  326. package/dist/lib/embedder.js +6 -4
  327. package/dist/lib/employee-templates.js +8 -8
  328. package/dist/lib/employees.js +5 -5
  329. package/dist/lib/exe-daemon-client.js +5 -3
  330. package/dist/lib/exe-daemon.js +333 -262
  331. package/dist/lib/hybrid-search.js +10 -10
  332. package/dist/lib/identity-templates.js +1 -1
  333. package/dist/lib/identity.js +17 -7
  334. package/dist/lib/license.js +2 -2
  335. package/dist/lib/messaging.js +27 -26
  336. package/dist/lib/post-tool-memory.js +9 -9
  337. package/dist/lib/registry-proxy.js +3 -1
  338. package/dist/lib/reminders.js +6 -6
  339. package/dist/lib/schedules.js +11 -11
  340. package/dist/lib/session-registry.js +11 -7
  341. package/dist/lib/session-wrappers.js +1 -1
  342. package/dist/lib/skill-learning.js +17 -15
  343. package/dist/lib/status-brief.js +2 -1
  344. package/dist/lib/store.js +9 -9
  345. package/dist/lib/task-router.js +6 -6
  346. package/dist/lib/tasks.js +28 -27
  347. package/dist/lib/tmux-routing.js +26 -25
  348. package/dist/lib/tmux-status.js +5 -1
  349. package/dist/lib/token-spend.js +6 -6
  350. package/dist/{license-gate-JVMB6OFD.js → license-gate-2QNMBAZU.js} +3 -3
  351. package/dist/{license-sync-5VYS2F2W.js → license-sync-FEDKH5MD.js} +2 -2
  352. package/dist/{mailbox-inbox-4MEUOL3J.js → mailbox-inbox-XE72D3AX.js} +2 -2
  353. package/dist/{mailbox-outbox-J6WIF3UY.js → mailbox-outbox-DNDDP2HW.js} +1 -1
  354. package/dist/mcp/register-tools.js +110 -106
  355. package/dist/mcp/server.js +113 -109
  356. package/dist/mcp/tools/complete-reminder.js +7 -7
  357. package/dist/mcp/tools/create-reminder.js +7 -7
  358. package/dist/mcp/tools/create-task.js +30 -29
  359. package/dist/mcp/tools/deactivate-behavior.js +18 -16
  360. package/dist/mcp/tools/list-reminders.js +7 -7
  361. package/dist/mcp/tools/list-tasks.js +30 -29
  362. package/dist/mcp/tools/send-message.js +33 -30
  363. package/dist/mcp/tools/update-task.js +29 -28
  364. package/dist/{mcp-child-registry-OTG4MWO7.js → mcp-child-registry-DVHYAHPW.js} +2 -2
  365. package/dist/{mcp-health-HNVSWKFA.js → mcp-health-B5EKRCZG.js} +2 -2
  366. package/dist/{mcp-http-config-DQWL7U2Z.js → mcp-http-config-ZJ7XHWT7.js} +10 -6
  367. package/dist/{mcp-session-identity-277GASTQ.js → mcp-session-identity-PEVM7VIP.js} +26 -25
  368. package/dist/{memory-cards-3S2ZQPR7.js → memory-cards-VN5DEWPD.js} +9 -9
  369. package/dist/{memory-graph-extractor-A6DFEFIN.js → memory-graph-extractor-TMEB6WLA.js} +11 -11
  370. package/dist/{memory-poisoning-defense-ZVP4H6DY.js → memory-poisoning-defense-DYHARQ2G.js} +5 -5
  371. package/dist/{memory-pressure-watchdog-6W5F6R7H.js → memory-pressure-watchdog-J6Q3SIBL.js} +27 -26
  372. package/dist/{memory-queue-client-ADSDP6OX.js → memory-queue-client-QC2OTMJB.js} +6 -4
  373. package/dist/{memory-reflection-BKB2YOE6.js → memory-reflection-ZYJUOSFX.js} +9 -9
  374. package/dist/{message-queue-client-XQN7QABL.js → message-queue-client-OEQCGSWC.js} +1 -25
  375. package/dist/{notification-ledger-CLGM7ODF.js → notification-ledger-TG6EFYBP.js} +29 -28
  376. package/dist/{notifications-MACUZPYP.js → notifications-LGYY22W5.js} +26 -25
  377. package/dist/{orchestration-events-N7LYMUGA.js → orchestration-events-JPHB6NPY.js} +6 -6
  378. package/dist/{orchestrator-4X24EWHV.js → orchestrator-IC4WGP6L.js} +28 -27
  379. package/dist/{org-brief-session-FZOFMO5U.js → org-brief-session-DEPHWCQR.js} +9 -9
  380. package/dist/{org-consent-policy-O5E6HXBL.js → org-consent-policy-T27AO5OJ.js} +2 -2
  381. package/dist/{org-join-POWUG25F.js → org-join-A3YXC5RB.js} +2 -2
  382. package/dist/{org-key-admin-E7EMDOZZ.js → org-key-admin-SQFHCVP2.js} +3 -3
  383. package/dist/{org-partner-runtime-FODONVTM.js → org-partner-runtime-L7L2WWGN.js} +10 -10
  384. package/dist/{org-row-visibility-VX4AVV5Q.js → org-row-visibility-M54Z6ZH3.js} +1 -1
  385. package/dist/{pipeline-router-6GGT2ZW3.js → pipeline-router-NKYAUR3Y.js} +6 -6
  386. package/dist/{plan-limits-FUN76LYY.js → plan-limits-ISRRGF23.js} +8 -8
  387. package/dist/{platform-procedures-7YSCLF4Z.js → platform-procedures-Z7ZGBJWN.js} +1 -1
  388. package/dist/{project-boot-3Q65LCIP.js → project-boot-BLYGVUJH.js} +4 -1
  389. package/dist/{project-name-LJVFMYTQ.js → project-name-WKSNNKXK.js} +6 -6
  390. package/dist/{projection-worker-4OANGP5K.js → projection-worker-RNYPE46G.js} +2 -2
  391. package/dist/{prospective-memory-KR3P4T6N.js → prospective-memory-GEO6E3UL.js} +5 -5
  392. package/dist/{push-notifications-NCZLH6DI.js → push-notifications-EY6BXZUY.js} +27 -26
  393. package/dist/{reproject-worktree-memories-PWYKPB2U.js → reproject-worktree-memories-DAA5GWMH.js} +28 -27
  394. package/dist/{reranker-6V3C2AO4.js → reranker-7OADQPMG.js} +1 -1
  395. package/dist/{retrieval-health-5D7O6VH6.js → retrieval-health-FCEDWN2P.js} +2 -2
  396. package/dist/{review-polling-QW3LJ4KN.js → review-polling-G52BR4MC.js} +27 -26
  397. package/dist/runtime/index.js +39 -38
  398. package/dist/{session-events-T45SSTMF.js → session-events-P6E2373E.js} +27 -26
  399. package/dist/{session-kill-telemetry-QSPVJGBF.js → session-kill-telemetry-OHNJMIVT.js} +27 -26
  400. package/dist/{session-mcp-config-SC5BLWZG.js → session-mcp-config-WFZAH6R5.js} +2 -1
  401. package/dist/{session-scope-KRWE54C4.js → session-scope-DKOHPQPJ.js} +26 -25
  402. package/dist/{setup-wizard-GP3TBTPF.js → setup-wizard-RNU3RFBE.js} +1 -1
  403. package/dist/{skill-refinement-C7JTMLJG.js → skill-refinement-AKJTHFXC.js} +6 -6
  404. package/dist/{stack-generate-manifest-MFMDWRUP.js → stack-generate-manifest-7WJZWSPK.js} +163 -15
  405. package/dist/{stack-promote-EKSCYY63.js → stack-promote-OP2URGFF.js} +4 -4
  406. package/dist/{stack-release-2GZAAFO4.js → stack-release-MY6U2QIO.js} +31 -8
  407. package/dist/{stack-update-J6JXSTAZ.js → stack-update-QSHSLUTZ.js} +3 -3
  408. package/dist/{steward-gate-BFCCMCSW.js → steward-gate-KMLS5ECC.js} +6 -6
  409. package/dist/{subagent-brief-injection-ED36PLYY.js → subagent-brief-injection-HCKZQZBF.js} +37 -36
  410. package/dist/{support-inbox-YW47SYJF.js → support-inbox-UBXU5RKV.js} +11 -11
  411. package/dist/{support-outbox-HFJWG52M.js → support-outbox-G2NG2U5K.js} +2 -2
  412. package/dist/{sweep-budget-KMPJ7O5Z.js → sweep-budget-YGLCNXZZ.js} +9 -3
  413. package/dist/{task-enforcement-CECTQX4U.js → task-enforcement-2GR7HU6V.js} +27 -26
  414. package/dist/{task-request-inbox-Q5T4N5K7.js → task-request-inbox-ANCVK2VG.js} +2 -2
  415. package/dist/{task-scope-ERVEUEYU.js → task-scope-QANJJXXB.js} +30 -29
  416. package/dist/{tasks-crud-ZRQNJXQ2.js → tasks-crud-45WOIMIM.js} +44 -25
  417. package/dist/{tasks-notify-MIZH4C2O.js → tasks-notify-ZJS4MA3S.js} +29 -26
  418. package/dist/{tasks-review-Z7J2P6DG.js → tasks-review-ZVPKY47Z.js} +26 -25
  419. package/dist/{telemetry-upload-LVQUQYFP.js → telemetry-upload-VY3UWAEL.js} +10 -10
  420. package/dist/{token-budget-BU4NOVZF.js → token-budget-XHX6XFEC.js} +6 -6
  421. package/dist/{tool-capability-index-7F42MOJT.js → tool-capability-index-6HLZU437.js} +1 -1
  422. package/dist/{tool-telemetry-O27EVMBR.js → tool-telemetry-GBDI4AXR.js} +1 -1
  423. package/dist/tui/App.js +36 -35
  424. package/dist/{tui-data-TPWWBIUQ.js → tui-data-IQFE3UW3.js} +30 -29
  425. package/dist/{typed-messages-RCMPEKJN.js → typed-messages-P2HLLA62.js} +1 -1
  426. package/dist/{update-support-F2F5537B.js → update-support-BDN5AK4R.js} +25 -22
  427. package/dist/{work-claims-B73X5NE7.js → work-claims-PDQNLE5K.js} +7 -7
  428. package/dist/{work-state-heartbeat-P4YX6E2R.js → work-state-heartbeat-CH6BLQKV.js} +1 -1
  429. package/dist/{worker-gate-BEEIIVWA.js → worker-gate-NUUSQMBT.js} +1 -3
  430. package/dist/{workflow-engine-5X46PFCW.js → workflow-engine-RZ7QEI3Z.js} +2 -2
  431. package/dist/{worktree-W47CIMJ6.js → worktree-Q25PZST6.js} +11 -7
  432. package/dist/worktree-ownership-guard-4LKMW6PW.js +421 -0
  433. package/dist/{worktree-sweep-BNBD4RFX.js → worktree-sweep-EV5YQ2OB.js} +8 -8
  434. package/package.json +15 -3
  435. package/release-notes.json +5 -5
  436. package/src/commands/exe.md +16 -16
  437. package/stack.release.json +9 -8
  438. package/dist/behavior-injection-M6UYZCMW.js +0 -63
  439. package/dist/chunk-BJ7AVSY6.js +0 -50
  440. package/dist/daemon-restart-report-EIVD6WDJ.js +0 -10
  441. package/dist/worktree-ownership-guard-OUWJROW2.js +0 -88
  442. /package/dist/{chunk-GQOEWNVM.js → chunk-4EG4DT4F.js} +0 -0
  443. /package/dist/{chunk-AISULNGL.js → chunk-BRAIWGMF.js} +0 -0
  444. /package/dist/{chunk-NRG7KZIP.js → chunk-HQEAZDAC.js} +0 -0
  445. /package/dist/{chunk-VZAFWPAY.js → chunk-IK4344V5.js} +0 -0
  446. /package/dist/{chunk-GM7TLYOK.js → chunk-K3VDF6II.js} +0 -0
  447. /package/dist/{chunk-2AJGV5UL.js → chunk-KM7DAG5J.js} +0 -0
  448. /package/dist/{chunk-YO4BO2CL.js → chunk-QIEYJ4KZ.js} +0 -0
  449. /package/dist/{chunk-WSQASFLP.js → chunk-VCTK5HRA.js} +0 -0
  450. /package/dist/{chunk-KQ6RJWRW.js → chunk-VPT6VMBG.js} +0 -0
  451. /package/dist/{chunk-6WIFPD2P.js → chunk-YZ4AEMR7.js} +0 -0
  452. /package/dist/{core-memory-7I7RE2SJ.js → core-memory-UIZKCY4L.js} +0 -0
  453. /package/dist/{memory-isolation-2TUZ7Z4K.js → memory-isolation-3GJ6WLYX.js} +0 -0
  454. /package/dist/{oauth-server-AYM37SQ4.js → oauth-server-ZRHXIRXQ.js} +0 -0
  455. /package/dist/{wiki-acl-IBQLLBTS.js → wiki-acl-MFOYK5F4.js} +0 -0
@@ -132,11 +132,11 @@ async function printOrgSection() {
132
132
  console.log("");
133
133
  return;
134
134
  }
135
- const { orgPartnerRuntimeStatus } = await import("./org-partner-runtime-FODONVTM.js");
136
- const { getStandingPolicies } = await import("./org-consent-policy-O5E6HXBL.js");
137
- const { listTaskRequests } = await import("./task-request-inbox-Q5T4N5K7.js");
138
- const { getMailboxOutboxStatus, listFailureNotices } = await import("./mailbox-outbox-J6WIF3UY.js");
139
- const { getMailboxInboxState } = await import("./mailbox-inbox-4MEUOL3J.js");
135
+ const { orgPartnerRuntimeStatus } = await import("./org-partner-runtime-L7L2WWGN.js");
136
+ const { getStandingPolicies } = await import("./org-consent-policy-T27AO5OJ.js");
137
+ const { listTaskRequests } = await import("./task-request-inbox-ANCVK2VG.js");
138
+ const { getMailboxOutboxStatus, listFailureNotices } = await import("./mailbox-outbox-DNDDP2HW.js");
139
+ const { getMailboxInboxState } = await import("./mailbox-inbox-XE72D3AX.js");
140
140
  const runtime = orgPartnerRuntimeStatus();
141
141
  console.log("Org membership: ACTIVE (org mode is latched on this machine)");
142
142
  if (bindings.readError) {
@@ -186,8 +186,8 @@ async function printOrgSection() {
186
186
  if (runtime.defects.length > 0) console.log("");
187
187
  }
188
188
  async function runReport(argv) {
189
- const { assertOrgPartnerRuntimeReady } = await import("./org-partner-runtime-FODONVTM.js");
190
- const { draftOrgUpBrief, sendOpenDraft } = await import("./org-brief-session-FZOFMO5U.js");
189
+ const { assertOrgPartnerRuntimeReady } = await import("./org-partner-runtime-L7L2WWGN.js");
190
+ const { draftOrgUpBrief, sendOpenDraft } = await import("./org-brief-session-DEPHWCQR.js");
191
191
  const { resolveOrgPartnerBindings } = await import("./org-partner-config-B7T4CL2T.js");
192
192
  assertOrgPartnerRuntimeReady();
193
193
  let orgId = flag(argv, "org");
@@ -263,10 +263,10 @@ async function runReport(argv) {
263
263
  return 0;
264
264
  }
265
265
  async function runRequests(argv) {
266
- const { assertOrgPartnerRuntimeReady } = await import("./org-partner-runtime-FODONVTM.js");
266
+ const { assertOrgPartnerRuntimeReady } = await import("./org-partner-runtime-L7L2WWGN.js");
267
267
  const { requireOrgPartnerBinding, resolveOrgPartnerBindings, resolvePartnerIdentities } = await import("./org-partner-config-B7T4CL2T.js");
268
- const { listTaskRequests, getTaskRequest, acceptTaskRequest, declineTaskRequest } = await import("./task-request-inbox-Q5T4N5K7.js");
269
- const { decideRequestManually } = await import("./org-consent-policy-O5E6HXBL.js");
268
+ const { listTaskRequests, getTaskRequest, acceptTaskRequest, declineTaskRequest } = await import("./task-request-inbox-ANCVK2VG.js");
269
+ const { decideRequestManually } = await import("./org-consent-policy-T27AO5OJ.js");
270
270
  assertOrgPartnerRuntimeReady();
271
271
  let orgId = flag(argv, "org");
272
272
  if (!orgId) {
@@ -401,7 +401,7 @@ async function runJoin(argv) {
401
401
  console.error('exe-os org join <invite-code> [--confirm "<phrase>"]');
402
402
  return 1;
403
403
  }
404
- const { fetchInviteOffer, completeOrgJoin, orgKeyPinConfirmation } = await import("./org-join-POWUG25F.js");
404
+ const { fetchInviteOffer, completeOrgJoin, orgKeyPinConfirmation } = await import("./org-join-A3YXC5RB.js");
405
405
  const { readOrgKeyPin, orgKeyUnpinConfirmation } = await import("./org-key-pin-WHWHVWUO.js");
406
406
  const { resolvePartnerIdentities } = await import("./org-partner-config-B7T4CL2T.js");
407
407
  const offer = await fetchInviteOffer(code, {
@@ -484,7 +484,7 @@ async function runCreate(argv) {
484
484
  console.error("before it is sent and refused by the database if it ever arrives uncanonical.");
485
485
  return 1;
486
486
  }
487
- const { createOrg } = await import("./org-key-admin-E7EMDOZZ.js");
487
+ const { createOrg } = await import("./org-key-admin-SQFHCVP2.js");
488
488
  const created = await createOrg({
489
489
  orgId,
490
490
  ...flag(argv, "endpoint") ? { endpoint: flag(argv, "endpoint") } : {}
@@ -520,7 +520,7 @@ async function runPublishKey(argv) {
520
520
  console.error("without publishing again.");
521
521
  return 1;
522
522
  }
523
- const { publishOrgKey, readMyPinnedOrgKey, describeRotation } = await import("./org-key-admin-E7EMDOZZ.js");
523
+ const { publishOrgKey, readMyPinnedOrgKey, describeRotation } = await import("./org-key-admin-SQFHCVP2.js");
524
524
  const transport = flag(argv, "endpoint") ? { endpoint: flag(argv, "endpoint") } : {};
525
525
  const existing = await readMyPinnedOrgKey({ orgId, ...transport });
526
526
  const { resolvePartnerIdentities } = await import("./org-partner-config-B7T4CL2T.js");
@@ -576,7 +576,7 @@ async function runInvite(argv) {
576
576
  console.error("directory entry. Try `engineer.03` or `support.lead`.");
577
577
  return 1;
578
578
  }
579
- const { issueSeatInvite } = await import("./org-key-admin-E7EMDOZZ.js");
579
+ const { issueSeatInvite } = await import("./org-key-admin-SQFHCVP2.js");
580
580
  const invite = await issueSeatInvite({
581
581
  orgId,
582
582
  seatRef,
@@ -1,77 +1,78 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DreamingEngine
4
- } from "./chunk-UM3N6VND.js";
4
+ } from "./chunk-PFAVHC5N.js";
5
5
  import {
6
6
  storeBehavior
7
- } from "./chunk-WMEYJT4R.js";
8
- import "./chunk-XZ65ST2I.js";
7
+ } from "./chunk-6FG34V6D.js";
8
+ import "./chunk-QV5CQLQH.js";
9
9
  import "./chunk-QGGH7LOU.js";
10
10
  import {
11
11
  disposeStore,
12
12
  flushBatch,
13
13
  initStore,
14
14
  writeMemory
15
- } from "./chunk-MXPNVSXI.js";
16
- import "./chunk-VZAFWPAY.js";
15
+ } from "./chunk-CIEVY5TD.js";
16
+ import "./chunk-IK4344V5.js";
17
17
  import {
18
18
  extractKeywords,
19
19
  keywordsToString
20
20
  } from "./chunk-CHCA3ZM2.js";
21
21
  import "./chunk-OTVEIJUQ.js";
22
- import "./chunk-DN4YVV4Z.js";
22
+ import "./chunk-RSABKW6B.js";
23
23
  import "./chunk-5MOYSU5A.js";
24
- import "./chunk-4QCFFW2H.js";
24
+ import "./chunk-5QCIWWFA.js";
25
25
  import "./chunk-76CJBM36.js";
26
- import "./chunk-AKLQSC6W.js";
27
- import "./chunk-BTSWFMEH.js";
28
- import "./chunk-6RKKVPYF.js";
29
- import "./chunk-4EN3IZ3Q.js";
30
- import "./chunk-KI5PFRG6.js";
31
- import "./chunk-3KDCORDO.js";
26
+ import "./chunk-KI7O64XV.js";
27
+ import "./chunk-4YUGB637.js";
28
+ import "./chunk-64ODONK2.js";
29
+ import "./chunk-C2UN464N.js";
30
+ import "./chunk-ZKGWHT56.js";
32
31
  import "./chunk-WT4RI36X.js";
33
- import "./chunk-E23LNUWJ.js";
34
- import "./chunk-QAEWWYHL.js";
32
+ import "./chunk-TDF2XKLK.js";
35
33
  import "./chunk-EIKATSE4.js";
36
34
  import "./chunk-MJCSEIFI.js";
37
- import "./chunk-XH7YL7JM.js";
38
- import "./chunk-ORM7ZFKC.js";
35
+ import "./chunk-E23LNUWJ.js";
36
+ import "./chunk-ZMX22HSS.js";
39
37
  import "./chunk-VI4ATC6I.js";
40
38
  import "./chunk-A27Q27CT.js";
41
- import "./chunk-W75GTHR3.js";
39
+ import "./chunk-BZ546I4Q.js";
40
+ import "./chunk-3SRZNJKD.js";
42
41
  import "./chunk-AJIXH5JF.js";
43
- import "./chunk-7GE2EQ23.js";
42
+ import "./chunk-YGVAKKGJ.js";
44
43
  import "./chunk-GZOG2MAX.js";
45
44
  import "./chunk-AM7S2TY6.js";
46
- import "./chunk-6YVUR3OU.js";
45
+ import "./chunk-QR3BUMOS.js";
47
46
  import "./chunk-CVYC6DUW.js";
48
- import "./chunk-GOMQ7PVQ.js";
47
+ import "./chunk-WJC6AAJN.js";
49
48
  import "./chunk-4IK2K3B3.js";
50
- import "./chunk-NUK7EEN5.js";
49
+ import "./chunk-ZKJ5S23O.js";
50
+ import "./chunk-GPUOUUHA.js";
51
+ import "./chunk-BTSWFMEH.js";
51
52
  import "./chunk-ZG62LIK3.js";
52
- import "./chunk-EKYYMIVT.js";
53
+ import "./chunk-IMYGYIAI.js";
53
54
  import "./chunk-NLEW62VC.js";
54
- import "./chunk-SLLLOOEI.js";
55
+ import "./chunk-GPJIBLP4.js";
55
56
  import "./chunk-V3WLC5TJ.js";
56
- import "./chunk-JTVIANUB.js";
57
+ import "./chunk-AEUGIJDO.js";
57
58
  import "./chunk-HYZV25LY.js";
58
59
  import "./chunk-GJV3WDWM.js";
59
60
  import "./chunk-MP2AFCGL.js";
60
- import "./chunk-TAMDAOCU.js";
61
+ import "./chunk-66CGXQUA.js";
61
62
  import "./chunk-BBMTVAE3.js";
62
63
  import "./chunk-TKDITWDN.js";
63
64
  import "./chunk-5YEUPUV4.js";
64
- import "./chunk-DSJI76XL.js";
65
+ import "./chunk-AHNVFBVB.js";
65
66
  import "./chunk-YYB5PMTK.js";
66
- import "./chunk-NJFJWQNN.js";
67
- import "./chunk-V3W3SATA.js";
68
- import "./chunk-JY5GAZYC.js";
67
+ import "./chunk-L5CGXEZC.js";
68
+ import "./chunk-CL4J4757.js";
69
+ import "./chunk-ZQEJ4IX2.js";
69
70
  import "./chunk-FXU7JOXK.js";
70
71
  import "./chunk-WNBZJSQT.js";
71
72
  import "./chunk-HPXFKUGU.js";
72
- import "./chunk-L6RXG36J.js";
73
+ import "./chunk-Y2HD2YB7.js";
73
74
  import "./chunk-A7XLR3K7.js";
74
- import "./chunk-GQOEWNVM.js";
75
+ import "./chunk-4EG4DT4F.js";
75
76
  import "./chunk-A7JYF4RG.js";
76
77
  import "./chunk-ARX6TAGN.js";
77
78
  import "./chunk-ZIG7VPJV.js";
@@ -273,7 +274,7 @@ async function main(_args = []) {
273
274
  const agentId = process.env.AGENT_ID || "default";
274
275
  let projectName = process.env.EXE_PROJECT;
275
276
  if (!projectName) {
276
- const { resolveProjectName } = await import("./project-name-LJVFMYTQ.js");
277
+ const { resolveProjectName } = await import("./project-name-WKSNNKXK.js");
277
278
  projectName = resolveProjectName();
278
279
  }
279
280
  try {
@@ -2,7 +2,7 @@ import {
2
2
  ensureReadDbReady,
3
3
  fastDbInit,
4
4
  isNoopFastDbClient
5
- } from "./chunk-M4IRPXSZ.js";
5
+ } from "./chunk-IZA7XW2Q.js";
6
6
  import "./chunk-MLKGABMK.js";
7
7
  export {
8
8
  ensureReadDbReady,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  checkLicense
3
- } from "./chunk-L6RXG36J.js";
3
+ } from "./chunk-Y2HD2YB7.js";
4
4
  import "./chunk-A7XLR3K7.js";
5
- import "./chunk-GQOEWNVM.js";
5
+ import "./chunk-4EG4DT4F.js";
6
6
  import {
7
7
  loadConfigSync
8
8
  } from "./chunk-ZIG7VPJV.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  recordDbIntegrityEvent
3
- } from "./chunk-UQGSBM3U.js";
3
+ } from "./chunk-RFPMXR6B.js";
4
4
  import "./chunk-ZIG7VPJV.js";
5
5
  import "./chunk-HSGBZSCA.js";
6
6
  import "./chunk-RH4AH3YB.js";
@@ -11,14 +11,7 @@ import {
11
11
  createSignupBot,
12
12
  ensureCRMContact,
13
13
  formatAlert
14
- } from "../chunk-WJG344NC.js";
15
- import {
16
- IMessageAdapter
17
- } from "../chunk-2SRG3B3D.js";
18
- import {
19
- createCRMWebhookHandler,
20
- parseTwentyWebhook
21
- } from "../chunk-NMH5ZQPU.js";
14
+ } from "../chunk-CWSLTSL6.js";
22
15
  import {
23
16
  WhatsAppAdapter
24
17
  } from "../chunk-E426DOSY.js";
@@ -34,6 +27,13 @@ import {
34
27
  import {
35
28
  SlackAdapter
36
29
  } from "../chunk-ORCCI2VV.js";
30
+ import {
31
+ IMessageAdapter
32
+ } from "../chunk-2SRG3B3D.js";
33
+ import {
34
+ createCRMWebhookHandler,
35
+ parseTwentyWebhook
36
+ } from "../chunk-6KQ6WMTI.js";
37
37
  import {
38
38
  BotRegistry,
39
39
  BotRuntime,
@@ -56,9 +56,9 @@ import {
56
56
  retryWithBackoff,
57
57
  routeMessage,
58
58
  validateGatewayConfig
59
- } from "../chunk-UKLN57Q5.js";
60
- import "../chunk-YMP2QSOP.js";
61
- import "../chunk-YSLGFPWX.js";
59
+ } from "../chunk-PZ5SKYK6.js";
60
+ import "../chunk-5UBWBXLF.js";
61
+ import "../chunk-QN56VQ6Z.js";
62
62
  import {
63
63
  OllamaProvider
64
64
  } from "../chunk-FWFFZGSC.js";
@@ -72,7 +72,6 @@ import {
72
72
  getDefaultAccount,
73
73
  loadAccounts
74
74
  } from "../chunk-GL57PO3K.js";
75
- import "../chunk-GM7TLYOK.js";
76
75
  import {
77
76
  createPerson,
78
77
  findPersonByContact,
@@ -82,16 +81,17 @@ import {
82
81
  pushGatewayEventToCRM,
83
82
  pushInboundMessageToCRM
84
83
  } from "../chunk-ML4S5SHZ.js";
84
+ import "../chunk-K3VDF6II.js";
85
85
  import "../chunk-MP2AFCGL.js";
86
- import "../chunk-TAMDAOCU.js";
86
+ import "../chunk-66CGXQUA.js";
87
87
  import "../chunk-BBMTVAE3.js";
88
88
  import "../chunk-TKDITWDN.js";
89
89
  import "../chunk-5YEUPUV4.js";
90
- import "../chunk-DSJI76XL.js";
90
+ import "../chunk-AHNVFBVB.js";
91
91
  import "../chunk-YYB5PMTK.js";
92
- import "../chunk-NJFJWQNN.js";
93
- import "../chunk-V3W3SATA.js";
94
- import "../chunk-JY5GAZYC.js";
92
+ import "../chunk-L5CGXEZC.js";
93
+ import "../chunk-CL4J4757.js";
94
+ import "../chunk-ZQEJ4IX2.js";
95
95
  import "../chunk-FXU7JOXK.js";
96
96
  import "../chunk-HPXFKUGU.js";
97
97
  import "../chunk-ZIG7VPJV.js";
@@ -24,7 +24,7 @@ import {
24
24
  resolveRepoState,
25
25
  splitShellSegments,
26
26
  tokenizeShell
27
- } from "./chunk-C2L622QJ.js";
27
+ } from "./chunk-NB5IRTC4.js";
28
28
  import "./chunk-MLKGABMK.js";
29
29
  export {
30
30
  MAIN_GUARD_OVERRIDE_ENV,
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  getClient
3
- } from "./chunk-TAMDAOCU.js";
3
+ } from "./chunk-66CGXQUA.js";
4
4
  import "./chunk-BBMTVAE3.js";
5
5
  import "./chunk-TKDITWDN.js";
6
6
  import "./chunk-5YEUPUV4.js";
7
- import "./chunk-DSJI76XL.js";
7
+ import "./chunk-AHNVFBVB.js";
8
8
  import "./chunk-YYB5PMTK.js";
9
- import "./chunk-NJFJWQNN.js";
10
- import "./chunk-V3W3SATA.js";
11
- import "./chunk-JY5GAZYC.js";
9
+ import "./chunk-L5CGXEZC.js";
10
+ import "./chunk-CL4J4757.js";
11
+ import "./chunk-ZQEJ4IX2.js";
12
12
  import "./chunk-FXU7JOXK.js";
13
13
  import "./chunk-ZIG7VPJV.js";
14
14
  import "./chunk-HSGBZSCA.js";
@@ -3,17 +3,17 @@ import {
3
3
  getGlobalProceduresBlock,
4
4
  loadGlobalProcedures,
5
5
  storeGlobalProcedure
6
- } from "./chunk-EXTZSNWL.js";
7
- import "./chunk-PY3FOMRN.js";
8
- import "./chunk-TAMDAOCU.js";
6
+ } from "./chunk-EPHSISMT.js";
7
+ import "./chunk-BQEZPRUC.js";
8
+ import "./chunk-66CGXQUA.js";
9
9
  import "./chunk-BBMTVAE3.js";
10
10
  import "./chunk-TKDITWDN.js";
11
11
  import "./chunk-5YEUPUV4.js";
12
- import "./chunk-DSJI76XL.js";
12
+ import "./chunk-AHNVFBVB.js";
13
13
  import "./chunk-YYB5PMTK.js";
14
- import "./chunk-NJFJWQNN.js";
15
- import "./chunk-V3W3SATA.js";
16
- import "./chunk-JY5GAZYC.js";
14
+ import "./chunk-L5CGXEZC.js";
15
+ import "./chunk-CL4J4757.js";
16
+ import "./chunk-ZQEJ4IX2.js";
17
17
  import "./chunk-FXU7JOXK.js";
18
18
  import "./chunk-ZIG7VPJV.js";
19
19
  import "./chunk-HSGBZSCA.js";
@@ -5,11 +5,10 @@ import {
5
5
  getSession,
6
6
  getSessionInfo,
7
7
  isExpired,
8
- login,
9
8
  refreshSession,
10
9
  saveSession,
11
10
  storeToken
12
- } from "./chunk-NUTZJZKW.js";
11
+ } from "./chunk-SKTAZGFI.js";
13
12
  import "./chunk-MLKGABMK.js";
14
13
  export {
15
14
  clearSession,
@@ -18,7 +17,6 @@ export {
18
17
  getSession,
19
18
  getSessionInfo,
20
19
  isExpired,
21
- login,
22
20
  refreshSession,
23
21
  saveSession,
24
22
  storeToken
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  entityId,
3
3
  normalizeEntityName
4
- } from "./chunk-ULIBLJ6W.js";
5
- import "./chunk-GUMRIUI5.js";
4
+ } from "./chunk-YYC553FO.js";
6
5
  import "./chunk-Z6BZQHP5.js";
6
+ import "./chunk-GUMRIUI5.js";
7
7
  import "./chunk-VGMACSEV.js";
8
- import "./chunk-VZAFWPAY.js";
8
+ import "./chunk-IK4344V5.js";
9
9
  import "./chunk-CHCA3ZM2.js";
10
- import "./chunk-DN4YVV4Z.js";
10
+ import "./chunk-RSABKW6B.js";
11
11
  import "./chunk-5MOYSU5A.js";
12
- import "./chunk-4QCFFW2H.js";
12
+ import "./chunk-5QCIWWFA.js";
13
13
  import "./chunk-76CJBM36.js";
14
14
  import {
15
15
  getClient
16
- } from "./chunk-TAMDAOCU.js";
16
+ } from "./chunk-66CGXQUA.js";
17
17
  import "./chunk-BBMTVAE3.js";
18
18
  import "./chunk-TKDITWDN.js";
19
19
  import "./chunk-5YEUPUV4.js";
20
- import "./chunk-DSJI76XL.js";
20
+ import "./chunk-AHNVFBVB.js";
21
21
  import "./chunk-YYB5PMTK.js";
22
- import "./chunk-NJFJWQNN.js";
23
- import "./chunk-V3W3SATA.js";
24
- import "./chunk-JY5GAZYC.js";
22
+ import "./chunk-L5CGXEZC.js";
23
+ import "./chunk-CL4J4757.js";
24
+ import "./chunk-ZQEJ4IX2.js";
25
25
  import "./chunk-FXU7JOXK.js";
26
26
  import "./chunk-ZIG7VPJV.js";
27
27
  import "./chunk-HSGBZSCA.js";
@@ -10,7 +10,7 @@ import {
10
10
  getRelationships,
11
11
  searchEntities,
12
12
  traverseChain
13
- } from "./chunk-CRCB5S7I.js";
13
+ } from "./chunk-NPXKGBVZ.js";
14
14
  import "./chunk-GUMRIUI5.js";
15
15
  import "./chunk-MLKGABMK.js";
16
16
  export {
@@ -15,15 +15,15 @@ import {
15
15
  registerAlias,
16
16
  resolveAlias,
17
17
  storeExtraction
18
- } from "./chunk-ULIBLJ6W.js";
19
- import "./chunk-GUMRIUI5.js";
18
+ } from "./chunk-YYC553FO.js";
20
19
  import "./chunk-Z6BZQHP5.js";
20
+ import "./chunk-GUMRIUI5.js";
21
21
  import "./chunk-VGMACSEV.js";
22
- import "./chunk-VZAFWPAY.js";
22
+ import "./chunk-IK4344V5.js";
23
23
  import "./chunk-CHCA3ZM2.js";
24
- import "./chunk-DN4YVV4Z.js";
24
+ import "./chunk-RSABKW6B.js";
25
25
  import "./chunk-5MOYSU5A.js";
26
- import "./chunk-4QCFFW2H.js";
26
+ import "./chunk-5QCIWWFA.js";
27
27
  import "./chunk-76CJBM36.js";
28
28
  import "./chunk-MLKGABMK.js";
29
29
  export {
@@ -0,0 +1,15 @@
1
+ import {
2
+ getHooksDir,
3
+ resetManifestCache,
4
+ setHooksDirForTest,
5
+ verifyHookIntegrity,
6
+ verifyOrBlock
7
+ } from "./chunk-3L72UBUH.js";
8
+ import "./chunk-MLKGABMK.js";
9
+ export {
10
+ getHooksDir,
11
+ resetManifestCache,
12
+ setHooksDirForTest,
13
+ verifyHookIntegrity,
14
+ verifyOrBlock
15
+ };
@@ -1,58 +1,59 @@
1
1
  import {
2
2
  buildUnreadMessagesCountStatement
3
- } from "./chunk-SL6KQYDU.js";
3
+ } from "./chunk-V5DDXXMP.js";
4
4
  import {
5
5
  buildPendingReviewsCountStatement,
6
6
  extractRootExe,
7
7
  isExeSession
8
- } from "./chunk-AKLQSC6W.js";
9
- import "./chunk-BTSWFMEH.js";
10
- import "./chunk-6RKKVPYF.js";
11
- import "./chunk-4EN3IZ3Q.js";
12
- import "./chunk-KI5PFRG6.js";
13
- import "./chunk-3KDCORDO.js";
8
+ } from "./chunk-KI7O64XV.js";
9
+ import "./chunk-4YUGB637.js";
10
+ import "./chunk-64ODONK2.js";
11
+ import "./chunk-C2UN464N.js";
12
+ import "./chunk-ZKGWHT56.js";
14
13
  import "./chunk-WT4RI36X.js";
15
- import "./chunk-E23LNUWJ.js";
16
- import "./chunk-QAEWWYHL.js";
14
+ import "./chunk-TDF2XKLK.js";
17
15
  import "./chunk-EIKATSE4.js";
18
16
  import "./chunk-MJCSEIFI.js";
19
- import "./chunk-XH7YL7JM.js";
20
- import "./chunk-ORM7ZFKC.js";
17
+ import "./chunk-E23LNUWJ.js";
18
+ import "./chunk-ZMX22HSS.js";
21
19
  import "./chunk-VI4ATC6I.js";
22
20
  import "./chunk-A27Q27CT.js";
23
- import "./chunk-W75GTHR3.js";
21
+ import "./chunk-BZ546I4Q.js";
22
+ import "./chunk-3SRZNJKD.js";
24
23
  import "./chunk-AJIXH5JF.js";
25
- import "./chunk-7GE2EQ23.js";
24
+ import "./chunk-YGVAKKGJ.js";
26
25
  import "./chunk-GZOG2MAX.js";
27
26
  import "./chunk-AM7S2TY6.js";
28
- import "./chunk-6YVUR3OU.js";
27
+ import "./chunk-QR3BUMOS.js";
29
28
  import "./chunk-CVYC6DUW.js";
30
- import "./chunk-GOMQ7PVQ.js";
29
+ import "./chunk-WJC6AAJN.js";
31
30
  import "./chunk-4IK2K3B3.js";
32
- import "./chunk-NUK7EEN5.js";
31
+ import "./chunk-ZKJ5S23O.js";
32
+ import "./chunk-GPUOUUHA.js";
33
+ import "./chunk-BTSWFMEH.js";
33
34
  import "./chunk-ZG62LIK3.js";
34
- import "./chunk-EKYYMIVT.js";
35
+ import "./chunk-IMYGYIAI.js";
35
36
  import "./chunk-NLEW62VC.js";
36
- import "./chunk-SLLLOOEI.js";
37
+ import "./chunk-GPJIBLP4.js";
37
38
  import "./chunk-V3WLC5TJ.js";
38
- import "./chunk-JTVIANUB.js";
39
+ import "./chunk-AEUGIJDO.js";
39
40
  import "./chunk-HYZV25LY.js";
40
41
  import "./chunk-GJV3WDWM.js";
41
42
  import "./chunk-MP2AFCGL.js";
42
- import "./chunk-TAMDAOCU.js";
43
+ import "./chunk-66CGXQUA.js";
43
44
  import "./chunk-BBMTVAE3.js";
44
45
  import "./chunk-TKDITWDN.js";
45
46
  import "./chunk-5YEUPUV4.js";
46
- import "./chunk-DSJI76XL.js";
47
+ import "./chunk-AHNVFBVB.js";
47
48
  import "./chunk-YYB5PMTK.js";
48
- import "./chunk-NJFJWQNN.js";
49
- import "./chunk-V3W3SATA.js";
50
- import "./chunk-JY5GAZYC.js";
49
+ import "./chunk-L5CGXEZC.js";
50
+ import "./chunk-CL4J4757.js";
51
+ import "./chunk-ZQEJ4IX2.js";
51
52
  import "./chunk-FXU7JOXK.js";
52
53
  import "./chunk-WNBZJSQT.js";
53
- import "./chunk-L6RXG36J.js";
54
+ import "./chunk-Y2HD2YB7.js";
54
55
  import "./chunk-A7XLR3K7.js";
55
- import "./chunk-GQOEWNVM.js";
56
+ import "./chunk-4EG4DT4F.js";
56
57
  import "./chunk-A7JYF4RG.js";
57
58
  import "./chunk-ARX6TAGN.js";
58
59
  import "./chunk-ZIG7VPJV.js";
@@ -75,6 +76,7 @@ function buildOpenTasksCountStatement(agentIds, sessionScope, projectName) {
75
76
  FROM tasks
76
77
  WHERE assigned_to IN (${placeholders})
77
78
  AND status = 'open'
79
+ AND execution_mode = 'durable_tmux'
78
80
  AND session_scope = ?
79
81
  AND project_name = ?`,
80
82
  args: [...agentIds, sessionScope, projectName]
@@ -0,0 +1,90 @@
1
+ import {
2
+ LockTimeoutError,
3
+ withLock
4
+ } from "./chunk-5WA4DG2A.js";
5
+ import {
6
+ writeFileAtomicSync
7
+ } from "./chunk-MFYMDGE7.js";
8
+ import "./chunk-MLKGABMK.js";
9
+
10
+ // src/lib/hook-tamper-log.ts
11
+ import { readFileSync, existsSync, mkdirSync } from "fs";
12
+ import path from "path";
13
+ import os from "os";
14
+ var LOCK_GIVE_UP_MS = 750;
15
+ var EMPTY_FILE = { version: 1, entries: {} };
16
+ var _logDirForTest = null;
17
+ function setTamperLogDirForTest(dir) {
18
+ _logDirForTest = dir;
19
+ }
20
+ async function resolveLogDir() {
21
+ if (_logDirForTest) return _logDirForTest;
22
+ try {
23
+ const { resolveDataDir } = await import("./lib/config.js");
24
+ return path.join(resolveDataDir(), "hooks");
25
+ } catch {
26
+ return path.join(os.homedir(), ".exe-os", "hooks");
27
+ }
28
+ }
29
+ async function getLogPath() {
30
+ return path.join(await resolveLogDir(), "tamper-log.json");
31
+ }
32
+ function loadLog(p) {
33
+ if (!existsSync(p)) return { ...EMPTY_FILE, entries: {} };
34
+ try {
35
+ const parsed = JSON.parse(readFileSync(p, "utf-8"));
36
+ if (!parsed || typeof parsed !== "object" || typeof parsed.entries !== "object") {
37
+ return { ...EMPTY_FILE, entries: {} };
38
+ }
39
+ return parsed;
40
+ } catch {
41
+ return { ...EMPTY_FILE, entries: {} };
42
+ }
43
+ }
44
+ function saveLog(p, file) {
45
+ mkdirSync(path.dirname(p), { recursive: true });
46
+ writeFileAtomicSync(p, JSON.stringify(file, null, 2) + "\n");
47
+ }
48
+ async function recordTamperEvent(filename, hash, reason) {
49
+ const p = await getLogPath();
50
+ mkdirSync(path.dirname(p), { recursive: true });
51
+ const lockDir = `${p}.lock`;
52
+ try {
53
+ return await withLock(
54
+ lockDir,
55
+ () => {
56
+ const file = loadLog(p);
57
+ const key = `${filename}:${hash}`;
58
+ const now = (/* @__PURE__ */ new Date()).toISOString();
59
+ const existing = file.entries[key];
60
+ if (existing) {
61
+ existing.lastSeen = now;
62
+ existing.count += 1;
63
+ existing.reason = reason;
64
+ saveLog(p, file);
65
+ return false;
66
+ }
67
+ file.entries[key] = { file: filename, hash, reason, firstSeen: now, lastSeen: now, count: 1 };
68
+ saveLog(p, file);
69
+ return true;
70
+ },
71
+ { giveUpAfterMs: LOCK_GIVE_UP_MS }
72
+ );
73
+ } catch (err) {
74
+ if (!(err instanceof LockTimeoutError)) throw err;
75
+ process.stderr.write(
76
+ `[hook-tamper-log] ${err.message} \u2014 proceeding without persisting dedup for this sighting
77
+ `
78
+ );
79
+ return true;
80
+ }
81
+ }
82
+ async function loadTamperLog() {
83
+ const p = await getLogPath();
84
+ return loadLog(p).entries;
85
+ }
86
+ export {
87
+ loadTamperLog,
88
+ recordTamperEvent,
89
+ setTamperLogDirForTest
90
+ };