@askexenow/exe-os 0.9.397 → 0.9.398

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 (393) hide show
  1. package/deploy/stack-manifests/v0.9.json +267 -1
  2. package/dist/.dist-verified.json +3 -3
  3. package/dist/{active-agent-GOCTWSHD.js → active-agent-5DC75ZP3.js} +4 -4
  4. package/dist/{active-agent-GHNUSBYO.js → active-agent-Q7AOGCY5.js} +4 -4
  5. package/dist/{agent-defs-generator-KKXWCDQR.js → agent-defs-generator-TBR4P3XR.js} +3 -3
  6. package/dist/{agentic-ontology-5JFHYHEN.js → agentic-ontology-UFSQDLCW.js} +1 -1
  7. package/dist/{artifact-backup-FDU7UQ5Z.js → artifact-backup-VWQ6EYNO.js} +3 -3
  8. package/dist/{backfill-metadata-OIVQN3GF.js → backfill-metadata-BVW4KXY3.js} +7 -7
  9. package/dist/{backup-verify-ZKTVXYOK.js → backup-verify-6UIMP3QY.js} +1 -1
  10. package/dist/{behavior-injection-S2NBCHRK.js → behavior-injection-MVL5PXIH.js} +10 -10
  11. package/dist/{behavior-promotion-WZIKTD3C.js → behavior-promotion-ZQSQLBNO.js} +9 -9
  12. package/dist/{behaviors-T2N3VJS3.js → behaviors-S6ANWJTO.js} +8 -8
  13. package/dist/bin/agentic-ontology-backfill.js +8 -8
  14. package/dist/bin/agentic-reflection-backfill.js +9 -9
  15. package/dist/bin/agentic-semantic-label.js +8 -8
  16. package/dist/bin/backfill-conversations.js +7 -7
  17. package/dist/bin/backfill-responses.js +7 -7
  18. package/dist/bin/backfill-vectors.js +7 -7
  19. package/dist/bin/bulk-sync-postgres.js +16 -16
  20. package/dist/bin/cc-doctor.js +8 -8
  21. package/dist/bin/cleanup-stale-review-tasks.js +15 -15
  22. package/dist/bin/cli.js +24 -24
  23. package/dist/bin/deferred-daemon-restart.js +93 -93
  24. package/dist/bin/exe-actions.js +1 -1
  25. package/dist/bin/exe-agent-config.js +3 -3
  26. package/dist/bin/exe-agent.js +8 -8
  27. package/dist/bin/exe-assign.js +8 -8
  28. package/dist/bin/exe-boot.js +35 -35
  29. package/dist/bin/exe-call.js +8 -8
  30. package/dist/bin/exe-cloud.js +17 -17
  31. package/dist/bin/exe-config-dump.js +3 -3
  32. package/dist/bin/exe-dispatch.js +16 -16
  33. package/dist/bin/exe-doctor.js +5 -5
  34. package/dist/bin/exe-export-behaviors.js +12 -12
  35. package/dist/bin/exe-forget.js +10 -10
  36. package/dist/bin/exe-gateway.js +9 -9
  37. package/dist/bin/exe-grant.js +6 -6
  38. package/dist/bin/exe-healthcheck.js +8 -8
  39. package/dist/bin/exe-heartbeat.js +21 -21
  40. package/dist/bin/exe-kill.js +20 -20
  41. package/dist/bin/exe-launch-agent.js +28 -28
  42. package/dist/bin/exe-mcp.js +5 -5
  43. package/dist/bin/exe-memory-reads.js +7 -7
  44. package/dist/bin/exe-new-employee.js +10 -10
  45. package/dist/bin/exe-os-mcp-proxy.js +5 -5
  46. package/dist/bin/exe-pending-messages.js +16 -16
  47. package/dist/bin/exe-pending-notifications.js +15 -15
  48. package/dist/bin/exe-pending-reviews.js +16 -16
  49. package/dist/bin/exe-rename.js +6 -6
  50. package/dist/bin/exe-review.js +19 -19
  51. package/dist/bin/exe-search.js +9 -9
  52. package/dist/bin/exe-session-cleanup.js +20 -20
  53. package/dist/bin/exe-settings.js +16 -16
  54. package/dist/bin/exe-start-codex.js +18 -18
  55. package/dist/bin/exe-start-opencode.js +16 -16
  56. package/dist/bin/exe-status.js +17 -17
  57. package/dist/bin/exe-support.js +3 -3
  58. package/dist/bin/exe-team.js +5 -5
  59. package/dist/bin/git-sweep.js +16 -16
  60. package/dist/bin/graph-backfill.js +8 -8
  61. package/dist/bin/graph-export.js +8 -8
  62. package/dist/bin/hooks-cli.js +1 -1
  63. package/dist/bin/import-history.js +11 -11
  64. package/dist/bin/install.js +95 -95
  65. package/dist/bin/intercom-check.js +5 -5
  66. package/dist/bin/mcp-sessions.js +2 -2
  67. package/dist/bin/orchestration-metrics.js +5 -5
  68. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  69. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  70. package/dist/bin/reconcile-backlog.js +2 -2
  71. package/dist/bin/registry-proxy.js +1 -1
  72. package/dist/bin/repair-document-chunks.js +7 -7
  73. package/dist/bin/scan-tasks.js +16 -16
  74. package/dist/bin/setup.js +2 -2
  75. package/dist/bin/shard-migrate.js +8 -8
  76. package/dist/bin/stack-update.js +4 -4
  77. package/dist/bin/vps-health-gate.js +1 -1
  78. package/dist/{boot-generation-SJQ7JNY7.js → boot-generation-ASJLGXK2.js} +4 -4
  79. package/dist/{boot-review-sections-G33ATPSN.js → boot-review-sections-B34SK4LE.js} +14 -14
  80. package/dist/{bug-landed-reconciler-C4UHLQKA.js → bug-landed-reconciler-P53SGWZG.js} +6 -6
  81. package/dist/build-manifest.json +904 -904
  82. package/dist/{capability-cards-KD4UW5DR.js → capability-cards-WMK2P2O2.js} +3 -3
  83. package/dist/{capacity-monitor-RKLRCGOG.js → capacity-monitor-WSRFY3UK.js} +16 -16
  84. package/dist/{catchup-brief-UHPPUIRL.js → catchup-brief-CE3FP6SL.js} +21 -21
  85. package/dist/{chunk-DQQTUIQJ.js → chunk-2CGKFJ3Q.js} +2 -2
  86. package/dist/{chunk-4BC5DUD7.js → chunk-2FMLMHJE.js} +3 -3
  87. package/dist/{chunk-BLZ2LEZF.js → chunk-2YLN5M5K.js} +3 -3
  88. package/dist/{chunk-EZ2JLFDT.js → chunk-33D76SCE.js} +147 -147
  89. package/dist/{chunk-MB3XK7YW.js → chunk-342X5YQB.js} +1 -1
  90. package/dist/{chunk-QRWGGJAA.js → chunk-3HV3TRBB.js} +2 -2
  91. package/dist/{chunk-DNCEIP3G.js → chunk-3QGQG2CR.js} +1 -1
  92. package/dist/{chunk-7KMFHVKB.js → chunk-4VD4CIHX.js} +9 -9
  93. package/dist/{chunk-NW6XAQLN.js → chunk-5ID4DJ2E.js} +2 -2
  94. package/dist/{chunk-FZPJBU3F.js → chunk-5OG5UQKP.js} +4 -4
  95. package/dist/{chunk-EK5EYX37.js → chunk-5VZDXC7N.js} +2 -2
  96. package/dist/{chunk-O2INE7WD.js → chunk-6X4TCYMU.js} +1 -1
  97. package/dist/{chunk-WOG5XT2P.js → chunk-6YJKBKSI.js} +1 -1
  98. package/dist/{chunk-2QF657OK.js → chunk-7ECQZXUE.js} +3 -3
  99. package/dist/{chunk-SC3QNY3H.js → chunk-7PNTI56G.js} +2 -2
  100. package/dist/{chunk-Y2DTTZCV.js → chunk-7QYXNSKT.js} +21 -21
  101. package/dist/{chunk-K5FSX6H6.js → chunk-A6GDEHRQ.js} +3 -3
  102. package/dist/{chunk-BNLXWJLD.js → chunk-AIOP4BF6.js} +10 -10
  103. package/dist/{chunk-HSEBRWE2.js → chunk-AWERP5SW.js} +3 -3
  104. package/dist/{chunk-F63FRP7L.js → chunk-B4OZKTIS.js} +1 -1
  105. package/dist/{chunk-P4C3BX2L.js → chunk-B7T7I5BK.js} +16 -16
  106. package/dist/{chunk-RC6Q5KSW.js → chunk-BI6SK67J.js} +2 -2
  107. package/dist/{chunk-VESYCD2K.js → chunk-BTN6AEKU.js} +3 -3
  108. package/dist/{chunk-2YESHX5N.js → chunk-C3CRGIS4.js} +1 -1
  109. package/dist/{chunk-KPDKZEVT.js → chunk-C4OMBSRB.js} +2 -2
  110. package/dist/{chunk-SH5IEP2Q.js → chunk-CBLI4ANF.js} +1 -1
  111. package/dist/{chunk-E7IALVOP.js → chunk-CBUFW5J2.js} +12 -12
  112. package/dist/{chunk-QR7VJ5WB.js → chunk-CIFHEPMI.js} +1 -1
  113. package/dist/{chunk-3MK5RGIP.js → chunk-CIRZLORZ.js} +1 -1
  114. package/dist/{chunk-RWDU3OKM.js → chunk-CN7IOETW.js} +2 -2
  115. package/dist/{chunk-M65DE5CO.js → chunk-CTMEIRJQ.js} +1 -1
  116. package/dist/{chunk-5BCJKGB3.js → chunk-DKD6JKIQ.js} +5 -5
  117. package/dist/{chunk-IV63ZWK6.js → chunk-DTUQGAD4.js} +1 -1
  118. package/dist/{chunk-D73NQPRC.js → chunk-DUPQMNK6.js} +6 -6
  119. package/dist/{chunk-5DFDHMOD.js → chunk-DVFVOT42.js} +4 -4
  120. package/dist/{chunk-P25NNTN3.js → chunk-E72V3JWD.js} +1 -1
  121. package/dist/{chunk-44FX5OK6.js → chunk-EI53C646.js} +1 -1
  122. package/dist/{chunk-YLY66VLU.js → chunk-ENEYMKL6.js} +3 -3
  123. package/dist/{chunk-VRPXCQV6.js → chunk-F4C3X66B.js} +1 -1
  124. package/dist/{chunk-XJRF26L5.js → chunk-FCQK3CNA.js} +1 -1
  125. package/dist/{chunk-ABDYYZSP.js → chunk-GER43BIE.js} +224 -7
  126. package/dist/{chunk-XYB7GHGV.js → chunk-GOQ5EE67.js} +1 -1
  127. package/dist/{chunk-I3MPYHFM.js → chunk-HRLCAV2S.js} +2 -2
  128. package/dist/{chunk-ZBUUFS5G.js → chunk-HWZZNUJJ.js} +1 -1
  129. package/dist/{chunk-5UC27XF6.js → chunk-I3OXYKU7.js} +2 -2
  130. package/dist/{chunk-AMSNTFS4.js → chunk-IACMGMGW.js} +1 -1
  131. package/dist/{chunk-MKHUI5UB.js → chunk-ICAGVBZ4.js} +1 -1
  132. package/dist/{chunk-DOMITJOC.js → chunk-IDFOZ6YH.js} +1 -1
  133. package/dist/{chunk-AFYSK7BX.js → chunk-J54BOM4G.js} +4 -4
  134. package/dist/{chunk-YYPHTYOV.js → chunk-JDRIUUMY.js} +3 -3
  135. package/dist/{chunk-AUZ4VPKO.js → chunk-JK5XB7Z5.js} +1 -1
  136. package/dist/{chunk-KDRYMX6M.js → chunk-JWA3Y6PE.js} +11 -11
  137. package/dist/{chunk-4MFPPHG4.js → chunk-KUJODN4N.js} +1 -1
  138. package/dist/{chunk-JO7ZJTFL.js → chunk-L5TOPOTW.js} +1 -1
  139. package/dist/{chunk-C44UWID5.js → chunk-LGP67CBT.js} +1 -1
  140. package/dist/{chunk-GGSXOKK6.js → chunk-LHNMKY7N.js} +10 -10
  141. package/dist/{chunk-ITV2CEFW.js → chunk-MBF7NXKP.js} +1 -1
  142. package/dist/{chunk-PSB3QGYL.js → chunk-MT3P3B2L.js} +1 -1
  143. package/dist/{chunk-6G7CTQBF.js → chunk-MYGXI2UC.js} +4 -4
  144. package/dist/{chunk-XHSCV3BM.js → chunk-NCKHGVDK.js} +1 -1
  145. package/dist/{chunk-RAPFF7J7.js → chunk-NITCVCRV.js} +1 -1
  146. package/dist/{chunk-KOOURQVV.js → chunk-NJG3YVZI.js} +3 -3
  147. package/dist/{chunk-F6OV7JP2.js → chunk-NQG5CD3V.js} +1 -1
  148. package/dist/{chunk-62MT4SAM.js → chunk-NUHCZF6C.js} +1 -1
  149. package/dist/{chunk-BMGX4GUS.js → chunk-OLRMWNOW.js} +1 -1
  150. package/dist/{chunk-JI7TFGJY.js → chunk-OSLT3VAE.js} +3 -3
  151. package/dist/{chunk-PAYDZ6J3.js → chunk-OURGAT7A.js} +2 -2
  152. package/dist/{chunk-DFNCYH7G.js → chunk-OZMKDFJU.js} +2 -2
  153. package/dist/{chunk-3ODUTQG5.js → chunk-P47UW3N5.js} +2 -2
  154. package/dist/{chunk-M7P6GCXS.js → chunk-POMZGFDP.js} +3 -3
  155. package/dist/{chunk-2WMPGRZV.js → chunk-PSWYKWKN.js} +4 -4
  156. package/dist/{chunk-SKWDDWHT.js → chunk-PTAJKZBG.js} +4 -4
  157. package/dist/{chunk-DFIH6ZZF.js → chunk-Q6X5EVH5.js} +1 -1
  158. package/dist/{chunk-HNVYH2WE.js → chunk-Q7YT7RGZ.js} +2 -2
  159. package/dist/{chunk-2DDXCN4A.js → chunk-QJI5LPRJ.js} +3 -3
  160. package/dist/{chunk-TRBSWP2V.js → chunk-QX7FJJBT.js} +1 -1
  161. package/dist/{chunk-2SDTYPJ5.js → chunk-R7F3UARN.js} +1 -1
  162. package/dist/{chunk-TM2BQ6PS.js → chunk-R7JQKULM.js} +3 -3
  163. package/dist/{chunk-TTHUPNBU.js → chunk-RCMXCNMC.js} +1 -1
  164. package/dist/{chunk-XWOEPR2Q.js → chunk-RSOHC3JR.js} +2 -2
  165. package/dist/{chunk-36WZEH4Z.js → chunk-RUAEYGEH.js} +1 -1
  166. package/dist/{chunk-ROQ6R3FV.js → chunk-SQE2PHXK.js} +1 -1
  167. package/dist/{chunk-WO6KY2SP.js → chunk-SVORDFGR.js} +6 -6
  168. package/dist/{chunk-TFKVXWVG.js → chunk-SZHPUFK7.js} +5 -5
  169. package/dist/{chunk-KAY2CDFK.js → chunk-TLAW77QU.js} +7 -7
  170. package/dist/{chunk-TWHPVYBU.js → chunk-TRH6E2HV.js} +4 -4
  171. package/dist/{chunk-YBUSK4GH.js → chunk-UAPWTGRP.js} +1 -1
  172. package/dist/{chunk-PTI2NYAM.js → chunk-UI2MRWQC.js} +2 -2
  173. package/dist/{chunk-3QYMH77Q.js → chunk-UI5HQJK5.js} +1 -1
  174. package/dist/{chunk-ROOST7ZU.js → chunk-ULBPH7SD.js} +1 -1
  175. package/dist/{chunk-GUZOREJ4.js → chunk-ULORKGXX.js} +2 -2
  176. package/dist/{chunk-GW67QP3K.js → chunk-UMXUJTSQ.js} +6 -6
  177. package/dist/{chunk-FQMLNMUZ.js → chunk-UOZBM4LO.js} +3 -3
  178. package/dist/{chunk-EPKJANA5.js → chunk-UPGKO5UD.js} +1 -1
  179. package/dist/{chunk-AFDVI6KB.js → chunk-UQDCXE5D.js} +1 -1
  180. package/dist/{chunk-GAUMGWSQ.js → chunk-UYU25KCR.js} +4 -4
  181. package/dist/{chunk-TQDEHRVD.js → chunk-UZZSM36C.js} +1 -1
  182. package/dist/{chunk-OJ2OGGK2.js → chunk-V5C7NLBF.js} +3 -3
  183. package/dist/{chunk-AQZ3WYPU.js → chunk-V6EIR7QO.js} +2 -2
  184. package/dist/{chunk-AXGHNNOO.js → chunk-VFVF3FHG.js} +1 -1
  185. package/dist/{chunk-QTVEBBQT.js → chunk-VRTBRPRO.js} +1 -1
  186. package/dist/{chunk-GTW56AUB.js → chunk-VX7I5XT6.js} +2 -3
  187. package/dist/{chunk-4Y5EKT3D.js → chunk-VXYXKN6Z.js} +5 -5
  188. package/dist/{chunk-XG7OHNPA.js → chunk-W2SNTOQE.js} +5 -5
  189. package/dist/{chunk-ZFDQJVKH.js → chunk-WHQADJV7.js} +1 -1
  190. package/dist/{chunk-SDYIUXW7.js → chunk-XMQE5IBD.js} +1 -1
  191. package/dist/{chunk-YPSS2SHD.js → chunk-XQH5BKEC.js} +2 -2
  192. package/dist/{chunk-5523XPQ5.js → chunk-YQ7V5UGG.js} +4 -4
  193. package/dist/{chunk-U67KLIPZ.js → chunk-YUMZXMKO.js} +1 -1
  194. package/dist/{chunk-BIHUXE5T.js → chunk-Z25GSJ55.js} +3 -3
  195. package/dist/{chunk-O22YLZXQ.js → chunk-ZFJ2KQNY.js} +1 -1
  196. package/dist/{chunk-UBFKX2AN.js → chunk-ZGILZG4X.js} +3 -3
  197. package/dist/{chunk-T4LKMZKF.js → chunk-ZHENW7C3.js} +1 -1
  198. package/dist/{chunk-QKH64COS.js → chunk-ZK645I2O.js} +5 -5
  199. package/dist/{chunk-AZRKNXMB.js → chunk-ZPMKJS7L.js} +4 -4
  200. package/dist/{cleanup-graph-garbage-EPZIDN7L.js → cleanup-graph-garbage-4PGUCD7L.js} +8 -8
  201. package/dist/{cli-shutdown-DM5YVHIP.js → cli-shutdown-TWBTAIJX.js} +1 -1
  202. package/dist/{cloud-sync-command-FNOSXKNT.js → cloud-sync-command-GLTTBKWO.js} +2 -2
  203. package/dist/{cloud-sync-db-init-5DIULXS2.js → cloud-sync-db-init-GCR22YII.js} +1 -1
  204. package/dist/{cloud-sync-shutdown-RTTZ3C53.js → cloud-sync-shutdown-YMLKOH3D.js} +3 -3
  205. package/dist/{co-activation-7D34HSWC.js → co-activation-MTMCPMZ7.js} +3 -3
  206. package/dist/{co-occurrence-7JJMQ3GI.js → co-occurrence-USGUH6Q4.js} +6 -6
  207. package/dist/{consent-passphrase-ZNB3GYWB.js → consent-passphrase-47T2T7AI.js} +2 -2
  208. package/dist/{conversation-entity-extractor-YSNOVYBN.js → conversation-entity-extractor-NMXN4MFL.js} +3 -3
  209. package/dist/{crdt-sync-MHQ6XSMO.js → crdt-sync-MKLAGQ44.js} +4 -4
  210. package/dist/{crm-webhook-WLFDORDH.js → crm-webhook-5XPG7KVJ.js} +2 -2
  211. package/dist/{cto-delegation-gate-KD5POZYX.js → cto-delegation-gate-MPD4NXN2.js} +14 -14
  212. package/dist/{daemon-orchestration-3LRZCT6E.js → daemon-orchestration-3PQVCRII.js} +20 -20
  213. package/dist/{doc-graph-extractor-KNX2SMZH.js → doc-graph-extractor-N4ROA5Y6.js} +6 -6
  214. package/dist/{documents-2QWQETQJ.js → documents-MB6ZBMFN.js} +8 -8
  215. package/dist/{dreaming-AQHABHGO.js → dreaming-J44REYEX.js} +19 -19
  216. package/dist/{employee-boot-brief-XJDE3JSJ.js → employee-boot-brief-XGGQIUWH.js} +23 -23
  217. package/dist/{entity-boost-T6WZN7UG.js → entity-boost-EF4ZVOAL.js} +1 -1
  218. package/dist/{exe-drift-NRQ36UMA.js → exe-drift-BG7P4MPD.js} +4 -4
  219. package/dist/{exe-export-ET4SWQ3K.js → exe-export-JGIBEZ6Y.js} +9 -9
  220. package/dist/{exe-import-DSMF6Z6O.js → exe-import-WLFLUY3Y.js} +9 -9
  221. package/dist/{exe-key-UUMREJEU.js → exe-key-VST55TOI.js} +93 -93
  222. package/dist/{exe-org-GV72LHO5.js → exe-org-FRBL3DFL.js} +32 -32
  223. package/dist/{exe-snapshot-EQG3R45R.js → exe-snapshot-RYI5ECPA.js} +22 -22
  224. package/dist/{fast-db-init-YRCNKGFD.js → fast-db-init-SIDYVAXH.js} +1 -1
  225. package/dist/{founder-context-3X5JFEQQ.js → founder-context-2NDDWGSH.js} +2 -2
  226. package/dist/{founder-monitor-envelope-OYRYJZBS.js → founder-monitor-envelope-KZCFNWMB.js} +4 -4
  227. package/dist/gateway/index.js +11 -11
  228. package/dist/{gateway-client-R3XZHUNA.js → gateway-client-KABOHP62.js} +1 -1
  229. package/dist/{git-staleness-JWTUU3B7.js → git-staleness-2CLU6VTA.js} +3 -3
  230. package/dist/{global-procedures-GUCIJGTG.js → global-procedures-W3G63OIF.js} +5 -5
  231. package/dist/{graph-auto-extract-SGRQ37NU.js → graph-auto-extract-3UV2CVSW.js} +6 -6
  232. package/dist/{graph-query-ABAIG6YK.js → graph-query-6HLVU6K6.js} +1 -1
  233. package/dist/{graph-rag-DB5SXSJ6.js → graph-rag-5AMI2SXI.js} +3 -3
  234. package/dist/{hook-integrity-AGQSJJGP.js → hook-integrity-OYI2N5RC.js} +1 -1
  235. package/dist/{hook-prefetch-GUBRFD5N.js → hook-prefetch-JV5HG7BJ.js} +15 -15
  236. package/dist/hooks/bug-report-worker.js +19 -19
  237. package/dist/hooks/codex-stop-task-finalizer.js +21 -21
  238. package/dist/hooks/commit-complete.js +18 -18
  239. package/dist/hooks/error-recall.js +11 -11
  240. package/dist/hooks/exe-heartbeat-hook.js +5 -5
  241. package/dist/hooks/ingest-worker.js +7 -7
  242. package/dist/hooks/ingest.js +13 -13
  243. package/dist/hooks/instructions-loaded.js +7 -7
  244. package/dist/hooks/manifest.json +20 -20
  245. package/dist/hooks/notification.js +6 -6
  246. package/dist/hooks/post-compact.js +5 -5
  247. package/dist/hooks/post-tool-combined.js +13 -13
  248. package/dist/hooks/pre-compact.js +18 -18
  249. package/dist/hooks/pre-tool-use.js +2 -2
  250. package/dist/hooks/prompt-submit.js +36 -36
  251. package/dist/hooks/session-end.js +23 -23
  252. package/dist/hooks/session-start.js +18 -18
  253. package/dist/hooks/stop.js +21 -21
  254. package/dist/hooks/subagent-stop.js +20 -20
  255. package/dist/hooks/summary-worker.js +22 -22
  256. package/dist/index.js +26 -26
  257. package/dist/{installer-KC5BRKQD.js → installer-LY3KOTTY.js} +7 -7
  258. package/dist/{installer-W2REG4OT.js → installer-X3WJPT5P.js} +7 -7
  259. package/dist/{installer-IRALYZ4O.js → installer-Y5OURERO.js} +7 -7
  260. package/dist/{intercom-queue-WJ52Y7ZM.js → intercom-queue-5LBDKW7T.js} +14 -14
  261. package/dist/lib/cloud-sync.js +16 -16
  262. package/dist/lib/consolidation.js +9 -9
  263. package/dist/lib/crypto.js +3 -3
  264. package/dist/lib/database.js +3 -3
  265. package/dist/lib/db-backup.js +1 -1
  266. package/dist/lib/db-write-worker.js +3 -3
  267. package/dist/lib/db.js +3 -3
  268. package/dist/lib/device-registry.js +1 -1
  269. package/dist/lib/employee-templates.js +6 -6
  270. package/dist/lib/employees.js +3 -3
  271. package/dist/lib/exe-daemon.js +85 -85
  272. package/dist/lib/hybrid-search.js +9 -9
  273. package/dist/lib/identity.js +3 -3
  274. package/dist/lib/keychain.js +1 -1
  275. package/dist/lib/license.js +2 -2
  276. package/dist/lib/messaging.js +15 -15
  277. package/dist/lib/post-tool-memory.js +5 -5
  278. package/dist/lib/registry-proxy.js +1 -1
  279. package/dist/lib/reminders.js +4 -4
  280. package/dist/lib/schedules.js +8 -8
  281. package/dist/lib/session-registry.js +5 -5
  282. package/dist/lib/skill-learning.js +9 -9
  283. package/dist/lib/store.js +7 -7
  284. package/dist/lib/task-router.js +4 -4
  285. package/dist/lib/tasks.js +16 -16
  286. package/dist/lib/tmux-routing.js +14 -14
  287. package/dist/lib/token-spend.js +4 -4
  288. package/dist/lib/ws-client.js +1 -1
  289. package/dist/{license-gate-YAA3BFTG.js → license-gate-ZENWFXPR.js} +3 -3
  290. package/dist/{license-recheck-WOVNBY54.js → license-recheck-J2I5LOY6.js} +1 -1
  291. package/dist/{license-sync-4GBRQ3NQ.js → license-sync-Y5JLOYTI.js} +2 -2
  292. package/dist/mcp/register-tools.js +92 -92
  293. package/dist/mcp/server.js +92 -92
  294. package/dist/mcp/tools/complete-reminder.js +5 -5
  295. package/dist/mcp/tools/create-reminder.js +5 -5
  296. package/dist/mcp/tools/create-task.js +18 -18
  297. package/dist/mcp/tools/deactivate-behavior.js +10 -10
  298. package/dist/mcp/tools/list-reminders.js +5 -5
  299. package/dist/mcp/tools/list-tasks.js +18 -18
  300. package/dist/mcp/tools/send-message.js +17 -17
  301. package/dist/mcp/tools/update-task.js +17 -17
  302. package/dist/{mcp-http-config-JJFHT7EU.js → mcp-http-config-CQDHUBEL.js} +5 -5
  303. package/dist/{mcp-session-identity-AA24Y7M7.js → mcp-session-identity-5P4KAHTQ.js} +14 -14
  304. package/dist/{memory-cards-FE7CH766.js → memory-cards-XYZQ5J5T.js} +7 -7
  305. package/dist/{memory-graph-extractor-XALPE33I.js → memory-graph-extractor-K57UAS52.js} +7 -7
  306. package/dist/{memory-maintenance-42VRD746.js → memory-maintenance-BF6DEY23.js} +1 -1
  307. package/dist/{memory-poisoning-defense-R7T4ZQBO.js → memory-poisoning-defense-DRJOUPIL.js} +3 -3
  308. package/dist/{memory-pressure-watchdog-YR7OOVNY.js → memory-pressure-watchdog-6EVWGJ6K.js} +15 -15
  309. package/dist/{memory-reflection-SU57VEBT.js → memory-reflection-3TX3U2RP.js} +7 -7
  310. package/dist/{memory-write-repository-AZFMYNFE.js → memory-write-repository-IXUYUMAK.js} +1 -1
  311. package/dist/{monitor-grants-EQOXKY44.js → monitor-grants-BTAWMLRU.js} +3 -3
  312. package/dist/{monitor-identity-QO7YCJ45.js → monitor-identity-VZDTHQDS.js} +2 -2
  313. package/dist/{notification-ledger-BYBU427R.js → notification-ledger-FQ5FE6H2.js} +15 -15
  314. package/dist/{notifications-7EBPEORY.js → notifications-4NV4X5US.js} +14 -14
  315. package/dist/{orchestration-events-UWSAFL25.js → orchestration-events-J6MGN7BL.js} +4 -4
  316. package/dist/{orchestrator-T3LSQK7S.js → orchestrator-3RAP4BIW.js} +16 -16
  317. package/dist/{org-brief-session-4VXN7UFY.js → org-brief-session-S5TVA7ZS.js} +15 -15
  318. package/dist/{org-consent-policy-X4ZEAHIR.js → org-consent-policy-EBTTGC7A.js} +5 -5
  319. package/dist/{org-join-2GRVJWCW.js → org-join-WLATMHMH.js} +9 -9
  320. package/dist/{org-key-admin-Q54ZASNY.js → org-key-admin-KJBO4TMT.js} +11 -11
  321. package/dist/{org-key-epoch-F3XYALXK.js → org-key-epoch-5E7OFFY5.js} +5 -5
  322. package/dist/{org-key-pin-3ZKOEYQS.js → org-key-pin-YHWVAB4F.js} +3 -3
  323. package/dist/{org-membership-3EHM5TDB.js → org-membership-PGATG3HH.js} +4 -4
  324. package/dist/{org-partner-config-N32CQSIW.js → org-partner-config-I6RTWJYD.js} +8 -8
  325. package/dist/{org-partner-runtime-S7Q4W5I5.js → org-partner-runtime-CSKMXXHT.js} +15 -15
  326. package/dist/{org-row-visibility-IUOZSB56.js → org-row-visibility-ZK3OLJ67.js} +1 -1
  327. package/dist/{pipeline-router-GCAJZN4H.js → pipeline-router-A3LVNWB6.js} +4 -4
  328. package/dist/{plan-limits-N5TAWTKK.js → plan-limits-3XZY7F72.js} +6 -6
  329. package/dist/{pre-tool-use-impl-VCHU3RAP.js → pre-tool-use-impl-DNACKCTW.js} +30 -30
  330. package/dist/{project-name-2GN2XXVD.js → project-name-2TTGTGEQ.js} +4 -4
  331. package/dist/{projection-worker-3GKE4WEE.js → projection-worker-WW7T7QN2.js} +2 -2
  332. package/dist/{prospective-memory-TYA3TWQD.js → prospective-memory-44J6PINA.js} +3 -3
  333. package/dist/{push-notifications-NKOXRWUY.js → push-notifications-XXJDSJA6.js} +15 -15
  334. package/dist/{reproject-worktree-memories-OPUWR2K2.js → reproject-worktree-memories-DVAR2CSE.js} +14 -14
  335. package/dist/{reranker-IYVEMKHW.js → reranker-4LFGA2X5.js} +1 -1
  336. package/dist/{retrieval-health-BIGTBGIP.js → retrieval-health-OMOG6DVF.js} +1 -1
  337. package/dist/{review-polling-ZLIBMKW4.js → review-polling-EX2WCR5V.js} +15 -15
  338. package/dist/runtime/index.js +18 -18
  339. package/dist/{session-events-H5T2UBTK.js → session-events-Z5XJD4R3.js} +15 -15
  340. package/dist/{session-kill-telemetry-AHUOYQEM.js → session-kill-telemetry-UYQ5H3XQ.js} +15 -15
  341. package/dist/{session-scope-KVIRKTX7.js → session-scope-NUWMURJ7.js} +14 -14
  342. package/dist/{setup-wizard-5VRFHYUR.js → setup-wizard-BP4FM3SE.js} +2 -2
  343. package/dist/{shard-manager-TPRWCONR.js → shard-manager-FIMZLYAN.js} +2 -2
  344. package/dist/{skill-refinement-2IOY2TOP.js → skill-refinement-YRTPOCTT.js} +4 -4
  345. package/dist/{skill-retrieval-55KMSROF.js → skill-retrieval-WEGXROXO.js} +11 -11
  346. package/dist/{skill-usage-JCSBXOM6.js → skill-usage-7HHQGIMF.js} +4 -4
  347. package/dist/{stack-generate-manifest-HDZZ5ZRU.js → stack-generate-manifest-NWBAQUC6.js} +4 -4
  348. package/dist/{stack-promote-OLIJI4GI.js → stack-promote-NV2ZQEVL.js} +4 -4
  349. package/dist/{stack-release-QBLVY2ZF.js → stack-release-IPOLLLJH.js} +5 -5
  350. package/dist/{stack-update-JHPGK6AM.js → stack-update-5LT2U7IP.js} +3 -3
  351. package/dist/{steward-gate-2YQ6DOO3.js → steward-gate-BY7R6PJI.js} +4 -4
  352. package/dist/{subagent-brief-injection-BKSHRUTQ.js → subagent-brief-injection-MHQEC6VS.js} +25 -25
  353. package/dist/{support-bug-actions-G2I77EPX.js → support-bug-actions-QIJETJW5.js} +3 -3
  354. package/dist/{support-inbox-FP44VIA4.js → support-inbox-YGGVORLU.js} +12 -12
  355. package/dist/{task-enforcement-MJSY7ZZF.js → task-enforcement-IRFSPSN3.js} +15 -15
  356. package/dist/{task-request-inbox-AZUGPSW6.js → task-request-inbox-3JRUEHQ5.js} +5 -5
  357. package/dist/{task-scope-NF7JKUD7.js → task-scope-Q4GALTXQ.js} +14 -14
  358. package/dist/{tasks-crud-SRP4GIL2.js → tasks-crud-EPCTLLQ3.js} +14 -14
  359. package/dist/{tasks-notify-VP3ZRTKA.js → tasks-notify-B6ORX32W.js} +15 -15
  360. package/dist/{tasks-review-ASOST3JT.js → tasks-review-6MXUAHHW.js} +14 -14
  361. package/dist/{telemetry-upload-KIMFENPR.js → telemetry-upload-HQEFD3C5.js} +8 -8
  362. package/dist/{token-budget-47HHAV2D.js → token-budget-WD3O2E67.js} +4 -4
  363. package/dist/{tool-telemetry-D6DUOQHB.js → tool-telemetry-WRQUOLQX.js} +1 -1
  364. package/dist/tui/App.js +24 -24
  365. package/dist/{tui-data-3Y2DUC57.js → tui-data-F4MEUKAG.js} +18 -18
  366. package/dist/{update-support-5G5P4ZGV.js → update-support-UXAVIPYK.js} +11 -11
  367. package/dist/{whatsapp-KGOFKMVE.js → whatsapp-OXW4DIHE.js} +2 -2
  368. package/dist/{wiki-acl-CXFMQHKZ.js → wiki-acl-J564J7MH.js} +1 -1
  369. package/dist/{work-claims-O2WSV3EK.js → work-claims-AURJKQOJ.js} +4 -4
  370. package/dist/{work-state-heartbeat-EPJZICCW.js → work-state-heartbeat-KS3XNIJW.js} +1 -1
  371. package/dist/{workflow-engine-MVMZIOEQ.js → workflow-engine-TSLIUTU2.js} +2 -2
  372. package/dist/{worktree-DIXUIFXS.js → worktree-4YARVREJ.js} +5 -5
  373. package/dist/{worktree-sweep-ZKPAO5EG.js → worktree-sweep-XMESZYDA.js} +6 -6
  374. package/package.json +1 -1
  375. package/release-notes.json +10 -3
  376. package/stack.release.json +3 -3
  377. /package/dist/{chunk-TXMGX6U2.js → chunk-2WJDZ7ZL.js} +0 -0
  378. /package/dist/{chunk-FMCLWB6A.js → chunk-5RIIZINL.js} +0 -0
  379. /package/dist/{chunk-ONXR3HDH.js → chunk-7SQPOOQI.js} +0 -0
  380. /package/dist/{chunk-X7VWZ4ZI.js → chunk-A65MJS3O.js} +0 -0
  381. /package/dist/{chunk-MBZXKIG3.js → chunk-CZ3RYFNL.js} +0 -0
  382. /package/dist/{chunk-GASLH556.js → chunk-DTQF6UBE.js} +0 -0
  383. /package/dist/{chunk-RICCASG5.js → chunk-IPJRMBYC.js} +0 -0
  384. /package/dist/{chunk-GZL3DOGB.js → chunk-J6UCIUPI.js} +0 -0
  385. /package/dist/{chunk-RYXW24OR.js → chunk-JCV4UPMD.js} +0 -0
  386. /package/dist/{chunk-ZZBQO44I.js → chunk-K2ETALNO.js} +0 -0
  387. /package/dist/{chunk-OJ7SLC5P.js → chunk-OJG6S5OI.js} +0 -0
  388. /package/dist/{chunk-BTIXHM2F.js → chunk-R75Z5WXN.js} +0 -0
  389. /package/dist/{chunk-3JRVKBF2.js → chunk-ZXMOTEQE.js} +0 -0
  390. /package/dist/{core-memory-LDOO2QBB.js → core-memory-SKTPW67X.js} +0 -0
  391. /package/dist/{memory-isolation-JVIFSPYK.js → memory-isolation-XXQUEA6Z.js} +0 -0
  392. /package/dist/{oauth-server-N22SJWOH.js → oauth-server-XD33YOXG.js} +0 -0
  393. /package/dist/{project-boot-46E2KI2Y.js → project-boot-H2RD4NGX.js} +0 -0
@@ -1809,6 +1809,27 @@ function expandEnvReferences(token, homeDir, env) {
1809
1809
  if (out === "~" || out.startsWith("~/")) out = home + out.slice(1);
1810
1810
  return out;
1811
1811
  }
1812
+ var KNOWN_SAFE_PATH_ROOT_SUBSTITUTION = /^\$\(\s*npm\s+root\s+(?:-g|--global)\s*\)$/;
1813
+ function npmRootGSubstitutionMayBePolluted(fullCommand, env) {
1814
+ if (env.npm_config_prefix || env.NPM_CONFIG_PREFIX || env.PREFIX) return true;
1815
+ if (/\b(?:npm_config_prefix|NPM_CONFIG_PREFIX|PREFIX)\s*=/.test(fullCommand)) return true;
1816
+ if (/\bnpm\s+config\b/i.test(fullCommand)) return true;
1817
+ if (/\bln\b/.test(fullCommand)) return true;
1818
+ return false;
1819
+ }
1820
+ function isTrustedNodeBootArgument(argument, homeDir, env) {
1821
+ const expanded = expandEnvReferences(argument, homeDir, env);
1822
+ if (fstringIsOpaque(expanded)) return false;
1823
+ const substitutions = expanded.match(/\$\([^)]*\)|`[^`]*`/g) ?? [];
1824
+ if (substitutions.length !== 1) return false;
1825
+ const substitution = substitutions[0];
1826
+ if (!KNOWN_SAFE_PATH_ROOT_SUBSTITUTION.test(substitution)) return false;
1827
+ if (expanded.indexOf(substitution) !== 0) return false;
1828
+ const rest = expanded.slice(substitution.length);
1829
+ if (/\$\{|\$[^A-Za-z_\s)]/.test(rest)) return false;
1830
+ if (rest.split("/").some((seg) => seg === "..")) return false;
1831
+ return true;
1832
+ }
1812
1833
  function isUnverifiablePathToken(expanded) {
1813
1834
  if (fstringIsOpaque(expanded)) return true;
1814
1835
  if (!UNRESOLVABLE_EXPANSION.test(expanded)) return false;
@@ -1818,6 +1839,15 @@ function isUnverifiablePathToken(expanded) {
1818
1839
  function inAuditDir(resolved, auditDir, ledgerFile) {
1819
1840
  return resolved === ledgerFile || resolved === auditDir || resolved.startsWith(auditDir + path2.sep);
1820
1841
  }
1842
+ function findBracketClassEnd(component, start) {
1843
+ return component.indexOf("]", component[start] === "]" ? start + 1 : start);
1844
+ }
1845
+ function hasAmbiguousPosixClassIntroducer(chars) {
1846
+ for (let i = 0; i < chars.length; i++) {
1847
+ if (chars[i] === "[" && /[:.=]/.test(chars[i + 1] ?? "")) return true;
1848
+ }
1849
+ return false;
1850
+ }
1821
1851
  function globComponentPattern(component) {
1822
1852
  let pattern = "";
1823
1853
  for (let i = 0; i < component.length; i++) {
@@ -1828,11 +1858,16 @@ function globComponentPattern(component) {
1828
1858
  let start = i + 1;
1829
1859
  const negated = component[start] === "!" || component[start] === "^";
1830
1860
  if (negated) start++;
1831
- const end = component.indexOf("]", component[start] === "]" ? start + 1 : start);
1832
- if (end < 0) throw new Error("Unverified glob character class");
1861
+ const end = findBracketClassEnd(component, start);
1862
+ if (end < 0) {
1863
+ pattern += "\\[";
1864
+ continue;
1865
+ }
1833
1866
  const chars = component.slice(start, end);
1834
- if (chars.includes("[") || chars.includes("\\")) throw new Error("Unverified glob character class");
1835
- pattern += `[${negated ? "^" : ""}${chars.replace(/[\]^]/g, "\\$&")}]`;
1867
+ if (chars.includes("\\") || hasAmbiguousPosixClassIntroducer(chars)) {
1868
+ throw new Error("Unverified glob character class");
1869
+ }
1870
+ pattern += `[${negated ? "^" : ""}${chars.replace(/[\]^\\]/g, "\\$&")}]`;
1836
1871
  i = end;
1837
1872
  } else pattern += char.replace(/[.+^${}()|\\\]]/g, "\\$&");
1838
1873
  }
@@ -1893,7 +1928,16 @@ function segmentAuditVerdict(text, auditDir, ledgerFile, rawLedgerPath, rawAudit
1893
1928
  if (mentions(text) || mentions(expandEnvReferences(text, homeDir, env))) return "yes";
1894
1929
  let unverified = false;
1895
1930
  for (const frag of text.split(/\s+/)) {
1896
- if (isUnverifiablePathToken(expandEnvReferences(frag, homeDir, env))) unverified = true;
1931
+ const expandedFrag = expandEnvReferences(frag, homeDir, env);
1932
+ if (isUnverifiablePathToken(expandedFrag)) {
1933
+ unverified = true;
1934
+ continue;
1935
+ }
1936
+ if (!/[*?\[]/.test(expandedFrag)) continue;
1937
+ if (UNRESOLVABLE_EXPANSION.test(expandedFrag)) continue;
1938
+ const verdict = globAuditVerdict(expandedFrag.replace(/\/+\*+\/?$/, ""), cwd, auditDir, ledgerFile);
1939
+ if (verdict === "yes") return "yes";
1940
+ if (verdict === "unverified") unverified = true;
1897
1941
  }
1898
1942
  for (const tok of tokenizeShell(text).tokens) {
1899
1943
  const stripped = tok.replace(/\/+\*+\/?$/, "");
@@ -1987,6 +2031,159 @@ function segmentAuditVerdict(text, auditDir, ledgerFile, rawLedgerPath, rawAudit
1987
2031
  }
1988
2032
  return unverified ? "unverified" : "no";
1989
2033
  }
2034
+ function segmentHasOnlyAllowlistedRedirects(segment) {
2035
+ const n = segment.length;
2036
+ let i = 0;
2037
+ let inSingle = false;
2038
+ let inDouble = false;
2039
+ const readWord = (start) => {
2040
+ let cur = "";
2041
+ let j = start;
2042
+ let single = false;
2043
+ let double = false;
2044
+ while (j < n) {
2045
+ const ch = segment[j];
2046
+ const next = segment[j + 1];
2047
+ if (single) {
2048
+ if (ch === "'") {
2049
+ single = false;
2050
+ j++;
2051
+ continue;
2052
+ }
2053
+ cur += ch;
2054
+ j++;
2055
+ continue;
2056
+ }
2057
+ if (double) {
2058
+ if (ch === '"') {
2059
+ double = false;
2060
+ j++;
2061
+ continue;
2062
+ }
2063
+ if (ch === "\\" && (next === "$" || next === "`" || next === '"' || next === "\\")) {
2064
+ cur += next;
2065
+ j += 2;
2066
+ continue;
2067
+ }
2068
+ cur += ch;
2069
+ j++;
2070
+ continue;
2071
+ }
2072
+ if (ch === "'") {
2073
+ single = true;
2074
+ j++;
2075
+ continue;
2076
+ }
2077
+ if (ch === '"') {
2078
+ double = true;
2079
+ j++;
2080
+ continue;
2081
+ }
2082
+ if (/\s/.test(ch)) break;
2083
+ if (ch === ";" || ch === "|" || ch === "&" || ch === "<" || ch === ">" || ch === "(" || ch === ")") break;
2084
+ if (ch === "\\" && next !== void 0) {
2085
+ cur += next;
2086
+ j += 2;
2087
+ continue;
2088
+ }
2089
+ cur += ch;
2090
+ j++;
2091
+ }
2092
+ return { word: cur, end: j, ambiguous: single || double };
2093
+ };
2094
+ while (i < n) {
2095
+ const ch = segment[i];
2096
+ const next = segment[i + 1];
2097
+ if (inSingle) {
2098
+ if (ch === "'") inSingle = false;
2099
+ i++;
2100
+ continue;
2101
+ }
2102
+ if (inDouble) {
2103
+ if (ch === "\\" && (next === "$" || next === "`" || next === '"' || next === "\\")) {
2104
+ i += 2;
2105
+ continue;
2106
+ }
2107
+ if (ch === '"') {
2108
+ inDouble = false;
2109
+ i++;
2110
+ continue;
2111
+ }
2112
+ i++;
2113
+ continue;
2114
+ }
2115
+ if (ch === "'") {
2116
+ inSingle = true;
2117
+ i++;
2118
+ continue;
2119
+ }
2120
+ if (ch === '"') {
2121
+ inDouble = true;
2122
+ i++;
2123
+ continue;
2124
+ }
2125
+ if (ch === "\\" && next !== void 0) {
2126
+ i += 2;
2127
+ continue;
2128
+ }
2129
+ let opStart = i;
2130
+ let fdDigits = "";
2131
+ if (/[0-9]/.test(ch)) {
2132
+ let k2 = i;
2133
+ while (k2 < n && /[0-9]/.test(segment[k2])) k2++;
2134
+ if (segment[k2] === "<" || segment[k2] === ">") {
2135
+ opStart = k2;
2136
+ fdDigits = segment.slice(i, k2);
2137
+ }
2138
+ }
2139
+ let opText = "";
2140
+ if (segment.startsWith("<<<", opStart)) opText = "<<<";
2141
+ else if (segment.startsWith("<<", opStart)) opText = "<<";
2142
+ else if (segment.startsWith("<>", opStart)) opText = "<>";
2143
+ else if (segment[opStart] === "<") opText = "<";
2144
+ else if (segment.startsWith("&>>", opStart)) opText = "&>>";
2145
+ else if (segment.startsWith("&>", opStart)) opText = "&>";
2146
+ else if (segment.startsWith(">>", opStart)) opText = ">>";
2147
+ else if (segment[opStart] === ">") opText = ">";
2148
+ if (opText === "") {
2149
+ i++;
2150
+ continue;
2151
+ }
2152
+ const isHeredoc = opText === "<<" || opText === "<<<";
2153
+ let k = opStart + opText.length;
2154
+ while (k < n && /[ \t]/.test(segment[k])) k++;
2155
+ if (segment[k] === "&" && /[0-9-]/.test(segment[k + 1] ?? "")) {
2156
+ const dupTo = segment[k + 1];
2157
+ const isAllowedDup = opText === ">" && fdDigits === "2" && dupTo === "1" || // 2>&1
2158
+ opText === ">" && fdDigits === "1" && dupTo === "2" || // 1>&2
2159
+ opText === ">" && fdDigits === "" && dupTo === "2";
2160
+ if (!isAllowedDup) return false;
2161
+ i = k + 2;
2162
+ continue;
2163
+ }
2164
+ if (isHeredoc) {
2165
+ const from = segment[k] === "-" ? k + 1 : k;
2166
+ const { end: end2, ambiguous: ambiguous2 } = readWord(from);
2167
+ if (ambiguous2) return false;
2168
+ i = Math.max(end2, opStart + opText.length);
2169
+ continue;
2170
+ }
2171
+ const { word, end, ambiguous } = readWord(k);
2172
+ if (ambiguous) return false;
2173
+ const isNullTargetShape = opText === ">" && (fdDigits === "" || fdDigits === "1" || fdDigits === "2") || opText === "&>" || opText === "<" && fdDigits === "";
2174
+ if (!isNullTargetShape || word !== "/dev/null") return false;
2175
+ i = Math.max(end, opStart + opText.length);
2176
+ }
2177
+ return !(inSingle || inDouble);
2178
+ }
2179
+ function isTrustedNodeBootLine(seg, homeDir, env, npmRootGSubstitutionPolluted) {
2180
+ if (npmRootGSubstitutionPolluted) return false;
2181
+ if (!/^\s*node\s+"\$\(npm root (?:-g|--global)\)\/[A-Za-z0-9@._\/-]+"(?:\s+--[a-z][a-z-]*)*\s*$/.test(seg)) return false;
2182
+ const tokens = tokenizeShell(seg).tokens;
2183
+ if (tokens.length < 2 || tokens[0] !== "node") return false;
2184
+ if (!tokens.slice(2).every((t) => /^--[a-z][a-z-]*$/.test(t))) return false;
2185
+ return isTrustedNodeBootArgument(tokens[1], homeDir, env);
2186
+ }
1990
2187
  function hasLiveCommandOrProcessSubstitution(text) {
1991
2188
  let state = "none";
1992
2189
  for (let i = 0; i < text.length; i++) {
@@ -2052,11 +2249,27 @@ function commandMutatesLedger(command, ledgerPath, homeDir, cwd, env, depth = 0)
2052
2249
  });
2053
2250
  return commandMutatesLedgerForSegments(quoteAwareSegments, command, ledgerPath, homeDir, cwd, env, depth) || commandMutatesLedgerForSegments(naiveSegments, command, ledgerPath, homeDir, cwd, env, depth);
2054
2251
  }
2055
- function commandMutatesLedgerForSegments(segments, command, ledgerPath, homeDir, cwd, env, depth) {
2252
+ function rejoinSplitFdDuplications(segments) {
2253
+ const rejoined = [];
2254
+ for (let i = 0; i < segments.length; i++) {
2255
+ const seg = segments[i];
2256
+ const next = segments[i + 1];
2257
+ if (next !== void 0 && /[0-9]?[<>]$/.test(seg.trimEnd()) && /^[0-9-]+$/.test(next.trim())) {
2258
+ rejoined.push(`${seg}&${next}`);
2259
+ i++;
2260
+ continue;
2261
+ }
2262
+ rejoined.push(seg);
2263
+ }
2264
+ return rejoined;
2265
+ }
2266
+ function commandMutatesLedgerForSegments(rawSegments, command, ledgerPath, homeDir, cwd, env, depth) {
2267
+ const segments = rejoinSplitFdDuplications(rawSegments);
2056
2268
  const rawLedgerPath = path2.resolve(ledgerPath);
2057
2269
  const rawAuditDir = path2.dirname(rawLedgerPath);
2058
2270
  const auditDir = realResolve(cwd, rawAuditDir) ?? rawAuditDir;
2059
2271
  const ledgerFile = realResolve(cwd, rawLedgerPath) ?? rawLedgerPath;
2272
+ const npmRootGSubstitutionPolluted = npmRootGSubstitutionMayBePolluted(command, env);
2060
2273
  const verdictOf = (text, directory = cwd) => segmentAuditVerdict(text, auditDir, ledgerFile, rawLedgerPath, rawAuditDir, homeDir, directory, env);
2061
2274
  if (segments.length === 0) return verdictOf(command) !== "no";
2062
2275
  let accountedFor = false;
@@ -2069,6 +2282,10 @@ function commandMutatesLedgerForSegments(segments, command, ledgerPath, homeDir,
2069
2282
  if (scriptIndex < 0) continue;
2070
2283
  if (unknownDirectory || [...directories].some((directory) => commandMutatesLedger(tokens[scriptIndex], ledgerPath, homeDir, directory, env, depth + 1))) return true;
2071
2284
  }
2285
+ if (isTrustedNodeBootLine(seg, homeDir, env, npmRootGSubstitutionPolluted)) {
2286
+ accountedFor = true;
2287
+ continue;
2288
+ }
2072
2289
  const changesDirectory = ["cd", "pushd", "popd"].includes(tokens[0] ?? "");
2073
2290
  if (changesDirectory && /\$\(|`/.test(seg)) return true;
2074
2291
  if (changesDirectory && !/[<>]/.test(seg)) {
@@ -2089,7 +2306,7 @@ function commandMutatesLedgerForSegments(segments, command, ledgerPath, homeDir,
2089
2306
  const verdict = verdicts.includes("yes") ? "yes" : unknownDirectory || verdicts.includes("unverified") ? "unverified" : "no";
2090
2307
  if (verdict === "no") continue;
2091
2308
  accountedFor = true;
2092
- if (!/[<>]/.test(seg) && !hasLiveCommandOrProcessSubstitution(seg) && [...directories].every((directory) => LEDGER_READ_ONLY_PROGRAMS.has(segmentProgram(seg, directory)))) continue;
2309
+ if (segmentHasOnlyAllowlistedRedirects(seg) && !hasLiveCommandOrProcessSubstitution(seg) && [...directories].every((directory) => LEDGER_READ_ONLY_PROGRAMS.has(segmentProgram(seg, directory)))) continue;
2093
2310
  return true;
2094
2311
  }
2095
2312
  return !accountedFor && verdictOf(command) === "yes";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getIdentity,
3
3
  loadEmployeesSync
4
- } from "./chunk-GAUMGWSQ.js";
4
+ } from "./chunk-UYU25KCR.js";
5
5
 
6
6
  // src/lib/drift-probes.ts
7
7
  var DRIFT_THRESHOLD = 80;
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  storeBehavior
3
- } from "./chunk-HNVYH2WE.js";
3
+ } from "./chunk-Q7YT7RGZ.js";
4
4
  import {
5
5
  resolveAnthropicAuth
6
6
  } from "./chunk-VGMACSEV.js";
7
7
  import {
8
8
  getClient
9
- } from "./chunk-GAUMGWSQ.js";
9
+ } from "./chunk-UYU25KCR.js";
10
10
  import {
11
11
  loadConfig
12
12
  } from "./chunk-MMS2HBRT.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-P4C3BX2L.js";
7
+ } from "./chunk-B7T7I5BK.js";
8
8
  import {
9
9
  SUPPORT_PRODUCTS,
10
10
  isWellFormedCommit,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  sessionScopeFilter
3
- } from "./chunk-Y2DTTZCV.js";
3
+ } from "./chunk-7QYXNSKT.js";
4
4
  import {
5
5
  leaseExpiryIso
6
6
  } from "./chunk-E23LNUWJ.js";
7
7
  import {
8
8
  getProjectName
9
- } from "./chunk-ROQ6R3FV.js";
9
+ } from "./chunk-SQE2PHXK.js";
10
10
 
11
11
  // src/lib/subagent-observability.ts
12
12
  var MAX_RESULT_DIGEST_CHARS = 200;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isManagementRole
3
- } from "./chunk-GAUMGWSQ.js";
3
+ } from "./chunk-UYU25KCR.js";
4
4
 
5
5
  // src/lib/transcript-sidechain.ts
6
6
  import { readFileSync } from "fs";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-T4IDLAZM.js";
13
13
  import {
14
14
  getProjectName
15
- } from "./chunk-ROQ6R3FV.js";
15
+ } from "./chunk-SQE2PHXK.js";
16
16
 
17
17
  // src/lib/post-tool-memory.ts
18
18
  var NON_INGESTIBLE_TOOLS = /* @__PURE__ */ new Set([
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  getMasterKey,
17
17
  setMasterKey
18
- } from "./chunk-O22YLZXQ.js";
18
+ } from "./chunk-ZFJ2KQNY.js";
19
19
  import {
20
20
  WINDOWS_UNSUPPORTED_EXIT,
21
21
  isWSL,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  sendMessage
3
- } from "./chunk-JI7TFGJY.js";
3
+ } from "./chunk-OSLT3VAE.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-C44UWID5.js";
6
+ } from "./chunk-LGP67CBT.js";
7
7
  import {
8
8
  resolveExeSession
9
- } from "./chunk-Y2DTTZCV.js";
9
+ } from "./chunk-7QYXNSKT.js";
10
10
  import {
11
11
  getDispatcherSession
12
12
  } from "./chunk-PCV52RYM.js";
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  getCoordinatorName,
18
18
  isCoordinatorName
19
- } from "./chunk-GAUMGWSQ.js";
19
+ } from "./chunk-UYU25KCR.js";
20
20
 
21
21
  // src/mcp/tools/send-message.ts
22
22
  import { z } from "zod";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  extractMemoryGraph
3
- } from "./chunk-2DDXCN4A.js";
3
+ } from "./chunk-QJI5LPRJ.js";
4
4
  import {
5
5
  flushBatch,
6
6
  writeMemory
7
- } from "./chunk-P4C3BX2L.js";
7
+ } from "./chunk-B7T7I5BK.js";
8
8
  import {
9
9
  extractKeywords
10
10
  } from "./chunk-CHCA3ZM2.js";
11
11
  import {
12
12
  getActiveAgent
13
- } from "./chunk-C44UWID5.js";
13
+ } from "./chunk-LGP67CBT.js";
14
14
 
15
15
  // src/mcp/tools/import-conversations.ts
16
16
  import { z } from "zod";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  checkLicense,
3
3
  loadLicense
4
- } from "./chunk-GTW56AUB.js";
4
+ } from "./chunk-VX7I5XT6.js";
5
5
 
6
6
  // src/lib/license-gate.ts
7
7
  var _cachedLicense = null;
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-S2YTU74T.js";
8
8
  import {
9
9
  createTask
10
- } from "./chunk-7KMFHVKB.js";
10
+ } from "./chunk-4VD4CIHX.js";
11
11
  import {
12
12
  getActiveAgent
13
- } from "./chunk-C44UWID5.js";
13
+ } from "./chunk-LGP67CBT.js";
14
14
  import {
15
15
  deriveTaskIdempotencyKey,
16
16
  ensureEmployeeAsync,
@@ -18,13 +18,13 @@ import {
18
18
  isExeSession,
19
19
  logTaskDispatch,
20
20
  resolveExeSession
21
- } from "./chunk-Y2DTTZCV.js";
21
+ } from "./chunk-7QYXNSKT.js";
22
22
  import {
23
23
  getPaneCwdAsync
24
24
  } from "./chunk-6L4VIYLZ.js";
25
25
  import {
26
26
  recordOrchestrationEventBestEffort
27
- } from "./chunk-2YESHX5N.js";
27
+ } from "./chunk-C3CRGIS4.js";
28
28
  import {
29
29
  releaseDispatchClaim,
30
30
  tryAcquireDispatchClaim,
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-GWAN2BDB.js";
38
38
  import {
39
39
  getLicenseSync
40
- } from "./chunk-QRWGGJAA.js";
40
+ } from "./chunk-3HV3TRBB.js";
41
41
  import {
42
42
  isValidSessionScope
43
43
  } from "./chunk-BTSWFMEH.js";
@@ -46,7 +46,7 @@ import {
46
46
  } from "./chunk-GJV3WDWM.js";
47
47
  import {
48
48
  isCoordinatorName
49
- } from "./chunk-GAUMGWSQ.js";
49
+ } from "./chunk-UYU25KCR.js";
50
50
  import {
51
51
  EXE_AI_DIR
52
52
  } from "./chunk-MMS2HBRT.js";
@@ -891,7 +891,7 @@ Idempotent no-op (existing task unchanged; no execution side effects)`
891
891
  let claimWarning = "";
892
892
  const claimRefRaw = (work_ref ?? "").trim();
893
893
  try {
894
- const { findConflicts, findConflictsInText, describeConflict, normalizeTarget } = await import("./work-claims-O2WSV3EK.js");
894
+ const { findConflicts, findConflictsInText, describeConflict, normalizeTarget } = await import("./work-claims-AURJKQOJ.js");
895
895
  const conflicts = claimRefRaw ? await findConflicts(
896
896
  [normalizeTarget({ kind: "work_ref", value: claimRefRaw })],
897
897
  callerRoot
@@ -958,7 +958,7 @@ Nothing was created or dispatched. Either pick different work, or \u2014 if that
958
958
  });
959
959
  if (claimRefRaw) {
960
960
  try {
961
- const { acquireClaim } = await import("./work-claims-O2WSV3EK.js");
961
+ const { acquireClaim } = await import("./work-claims-AURJKQOJ.js");
962
962
  const acquired = await acquireClaim({
963
963
  targets: [{ kind: "work_ref", value: claimRefRaw }],
964
964
  holderSession: callerRoot,
@@ -1154,7 +1154,7 @@ Note: ${spawnOverrideNoopNotice(ignoredSpawnOverrides)}`;
1154
1154
  }
1155
1155
  if (claimRefRaw) {
1156
1156
  try {
1157
- const { acquireClaim } = await import("./work-claims-O2WSV3EK.js");
1157
+ const { acquireClaim } = await import("./work-claims-AURJKQOJ.js");
1158
1158
  const acquired = await acquireClaim({
1159
1159
  targets: [{ kind: "work_ref", value: claimRefRaw }],
1160
1160
  holderSession: callerRoot,
@@ -1207,7 +1207,7 @@ Claimed ${claimRefRaw} for session ${callerRoot} (claim_group ${acquired.claimGr
1207
1207
  session_scope: sessionScope,
1208
1208
  created_at: (/* @__PURE__ */ new Date()).toISOString()
1209
1209
  }), "utf-8");
1210
- const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-UWSAFL25.js");
1210
+ const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-J6MGN7BL.js");
1211
1211
  recordOE({
1212
1212
  eventType: "signal.created",
1213
1213
  source: "create-task.mcp",
@@ -1240,7 +1240,7 @@ Claimed ${claimRefRaw} for session ${callerRoot} (claim_group ${acquired.claimGr
1240
1240
  let projectConflictOpts = {};
1241
1241
  try {
1242
1242
  const { getClient } = await import("./lib/database.js");
1243
- const { sessionScopeFilter } = await import("./task-scope-NF7JKUD7.js");
1243
+ const { sessionScopeFilter } = await import("./task-scope-Q4GALTXQ.js");
1244
1244
  const client = getClient();
1245
1245
  const scope = sessionScopeFilter(task.sessionScope || callerRoot || exeSession || null);
1246
1246
  const existing = await client.execute({
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  isValidX25519Recipient,
6
6
  pubKeyHash
7
- } from "./chunk-F6OV7JP2.js";
7
+ } from "./chunk-NQG5CD3V.js";
8
8
 
9
9
  // src/lib/monitor-grants.ts
10
10
  import crypto from "crypto";
@@ -265,7 +265,7 @@ async function persistMemoryBatch(client, rows) {
265
265
  }
266
266
  const hygieneIds = inserted.filter((row) => row.supersedes_id).map((row) => row.id);
267
267
  if (hygieneIds.length > 0) {
268
- const { scheduleSupersessionHygiene } = await import("./memory-maintenance-42VRD746.js");
268
+ const { scheduleSupersessionHygiene } = await import("./memory-maintenance-BF6DEY23.js");
269
269
  scheduleSupersessionHygiene(hygieneIds);
270
270
  }
271
271
  return { outcomes, inserted };
@@ -14,7 +14,7 @@ import {
14
14
  getEmployee,
15
15
  isCoordinatorRole,
16
16
  loadEmployeesSync
17
- } from "./chunk-GAUMGWSQ.js";
17
+ } from "./chunk-UYU25KCR.js";
18
18
  import {
19
19
  EXE_AI_DIR
20
20
  } from "./chunk-MMS2HBRT.js";
@@ -4,18 +4,18 @@ import {
4
4
  } from "./chunk-NEHOQ3P2.js";
5
5
  import {
6
6
  isCrdtSyncEnabled
7
- } from "./chunk-M65DE5CO.js";
7
+ } from "./chunk-CTMEIRJQ.js";
8
8
  import {
9
9
  orgMembershipsPath,
10
10
  orgModeActive
11
- } from "./chunk-SDYIUXW7.js";
11
+ } from "./chunk-XMQE5IBD.js";
12
12
  import {
13
13
  activeRecipientPubKeys,
14
14
  grantsPath,
15
15
  isGrantsMacPrimed,
16
16
  primeGrantsMacKey,
17
17
  warnActiveMonitoringOnce
18
- } from "./chunk-4MFPPHG4.js";
18
+ } from "./chunk-KUJODN4N.js";
19
19
  import {
20
20
  assertGateAndGrantsColocated
21
21
  } from "./chunk-NPXIS2RY.js";
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  GHOST_BEHAVIOR_SQL,
27
27
  isGhostBehaviorRow
28
- } from "./chunk-HNVYH2WE.js";
28
+ } from "./chunk-Q7YT7RGZ.js";
29
29
  import {
30
30
  isTransientDaemonTransportError,
31
31
  retryOnDaemonTransportError
@@ -36,17 +36,17 @@ import {
36
36
  encryptSyncBlob,
37
37
  initSyncCrypto,
38
38
  isSyncCryptoInitialized
39
- } from "./chunk-F63FRP7L.js";
39
+ } from "./chunk-B4OZKTIS.js";
40
40
  import {
41
41
  getClient,
42
42
  isGenuineCorruptionError,
43
43
  loadEmployees,
44
44
  registerBinSymlinks,
45
45
  saveEmployees
46
- } from "./chunk-GAUMGWSQ.js";
46
+ } from "./chunk-UYU25KCR.js";
47
47
  import {
48
48
  loadDeviceId
49
- } from "./chunk-GTW56AUB.js";
49
+ } from "./chunk-VX7I5XT6.js";
50
50
  import {
51
51
  EXE_AI_DIR
52
52
  } from "./chunk-MMS2HBRT.js";
@@ -72,7 +72,7 @@ var _lastSealOrgMode = null;
72
72
  async function getSyncCipher() {
73
73
  if (_resolved) return _resolved;
74
74
  if (!orgModeActive()) {
75
- const mod = await import("./founder-monitor-envelope-OYRYJZBS.js");
75
+ const mod = await import("./founder-monitor-envelope-KZCFNWMB.js");
76
76
  _monitoredWriter = mod.encryptMonitoredSyncBlob;
77
77
  _founderModuleLinked = true;
78
78
  }
@@ -1283,7 +1283,7 @@ async function cloudSync(config, options) {
1283
1283
  })
1284
1284
  };
1285
1285
  if (shouldUseCrdtMergeForCloudSync()) {
1286
- const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-MHQ6XSMO.js");
1286
+ const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-MKLAGQ44.js");
1287
1287
  initCrdtDoc();
1288
1288
  importExistingMemories(
1289
1289
  pullResult.records.map((rec) => ({
@@ -1844,7 +1844,7 @@ async function cloudSync(config, options) {
1844
1844
  const artifactResult = { pushed: 0, frozen: false, remaining: 0 };
1845
1845
  if (!shouldSkip("artifacts")) {
1846
1846
  try {
1847
- const { flushArtifactBackups } = await import("./artifact-backup-FDU7UQ5Z.js");
1847
+ const { flushArtifactBackups } = await import("./artifact-backup-VWQ6EYNO.js");
1848
1848
  const flushed = await flushArtifactBackups(cloudArtifactTransport(config));
1849
1849
  artifactResult.pushed = flushed.pushed;
1850
1850
  artifactResult.frozen = flushed.frozen;
@@ -2,7 +2,7 @@ import {
2
2
  getClient,
3
3
  isCoordinatorName,
4
4
  loadEmployeesSync
5
- } from "./chunk-GAUMGWSQ.js";
5
+ } from "./chunk-UYU25KCR.js";
6
6
 
7
7
  // src/lib/steward-gate.ts
8
8
  import crypto from "crypto";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-WCGNCH3Q.js";
4
4
  import {
5
5
  registerAllTools
6
- } from "./chunk-EZ2JLFDT.js";
6
+ } from "./chunk-33D76SCE.js";
7
7
 
8
8
  // src/mcp/mcp-surface-hash.ts
9
9
  function computeMcpSurfaceHash() {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  deactivateBehavior
3
- } from "./chunk-HNVYH2WE.js";
3
+ } from "./chunk-Q7YT7RGZ.js";
4
4
  import {
5
5
  getActiveAgent
6
- } from "./chunk-C44UWID5.js";
6
+ } from "./chunk-LGP67CBT.js";
7
7
  import {
8
8
  canCoordinate,
9
9
  getClient
10
- } from "./chunk-GAUMGWSQ.js";
10
+ } from "./chunk-UYU25KCR.js";
11
11
 
12
12
  // src/mcp/tools/deactivate-behavior.ts
13
13
  import { z } from "zod";
@@ -24,7 +24,7 @@ function registerDeactivateBehavior(server) {
24
24
  async ({ behavior_id }) => {
25
25
  const caller = getActiveAgent();
26
26
  try {
27
- const { StewardGate } = await import("./steward-gate-2YQ6DOO3.js");
27
+ const { StewardGate } = await import("./steward-gate-BY7R6PJI.js");
28
28
  const steward = new StewardGate();
29
29
  const gateDecision = await steward.checkAuthority(caller.agentId || "unknown", "deactivate_behavior", behavior_id);
30
30
  if (!gateDecision.allowed) {