@askexenow/exe-os 0.9.371 → 0.9.372

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 (343) hide show
  1. package/deploy/compose/docker-compose.yml +46 -15
  2. package/deploy/stack-manifests/v0.9.json +117 -2
  3. package/dist/.dist-verified.json +3 -3
  4. package/dist/{active-agent-JEUX2MHE.js → active-agent-GRT5MKD5.js} +3 -3
  5. package/dist/{active-agent-JXOH2JBH.js → active-agent-L2ZSSXDK.js} +3 -3
  6. package/dist/{agent-defs-generator-J6A57TL6.js → agent-defs-generator-M4ZNYIVX.js} +2 -2
  7. package/dist/{agentic-ontology-DRUE3NUX.js → agentic-ontology-DMPRDEUX.js} +1 -1
  8. package/dist/{backfill-metadata-BZ7LEKAR.js → backfill-metadata-ZMEHJQ5M.js} +5 -5
  9. package/dist/{backup-verify-MYRJCSDR.js → backup-verify-EX2K732J.js} +1 -1
  10. package/dist/{behavior-injection-BHCOAC4O.js → behavior-injection-22AGMS25.js} +8 -8
  11. package/dist/{behaviors-352X5WJ6.js → behaviors-DVFXAWF5.js} +6 -6
  12. package/dist/bin/agentic-ontology-backfill.js +6 -6
  13. package/dist/bin/agentic-reflection-backfill.js +7 -7
  14. package/dist/bin/agentic-semantic-label.js +6 -6
  15. package/dist/bin/backfill-conversations.js +5 -5
  16. package/dist/bin/backfill-responses.js +5 -5
  17. package/dist/bin/backfill-vectors.js +6 -6
  18. package/dist/bin/bulk-sync-postgres.js +10 -10
  19. package/dist/bin/cc-doctor.js +4 -4
  20. package/dist/bin/cleanup-stale-review-tasks.js +13 -13
  21. package/dist/bin/cli.js +28 -20
  22. package/dist/bin/deferred-daemon-restart.js +76 -76
  23. package/dist/bin/exe-agent-config.js +2 -2
  24. package/dist/bin/exe-agent.js +8 -8
  25. package/dist/bin/exe-assign.js +6 -6
  26. package/dist/bin/exe-boot.js +41 -31
  27. package/dist/bin/exe-call.js +4 -4
  28. package/dist/bin/exe-cloud.js +11 -11
  29. package/dist/bin/exe-config-dump.js +2 -2
  30. package/dist/bin/exe-dispatch.js +14 -14
  31. package/dist/bin/exe-doctor.js +4 -4
  32. package/dist/bin/exe-export-behaviors.js +10 -10
  33. package/dist/bin/exe-forget.js +7 -7
  34. package/dist/bin/exe-gateway.js +7 -7
  35. package/dist/bin/exe-healthcheck.js +4 -4
  36. package/dist/bin/exe-heartbeat.js +16 -16
  37. package/dist/bin/exe-kill.js +17 -17
  38. package/dist/bin/exe-launch-agent.js +23 -23
  39. package/dist/bin/exe-mcp.js +3 -3
  40. package/dist/bin/exe-memory-reads.js +5 -5
  41. package/dist/bin/exe-new-employee.js +8 -8
  42. package/dist/bin/exe-os-mcp-proxy.js +3 -3
  43. package/dist/bin/exe-pending-messages.js +14 -14
  44. package/dist/bin/exe-pending-notifications.js +13 -13
  45. package/dist/bin/exe-pending-reviews.js +13 -13
  46. package/dist/bin/exe-rename.js +4 -4
  47. package/dist/bin/exe-repo-truth.js +369 -0
  48. package/dist/bin/exe-review.js +16 -16
  49. package/dist/bin/exe-search.js +6 -6
  50. package/dist/bin/exe-session-cleanup.js +17 -17
  51. package/dist/bin/exe-settings.js +10 -10
  52. package/dist/bin/exe-start-codex.js +15 -15
  53. package/dist/bin/exe-start-opencode.js +11 -11
  54. package/dist/bin/exe-status.js +15 -15
  55. package/dist/bin/exe-support.js +3 -3
  56. package/dist/bin/exe-team.js +4 -4
  57. package/dist/bin/git-sweep.js +14 -14
  58. package/dist/bin/graph-backfill.js +6 -6
  59. package/dist/bin/graph-export.js +6 -6
  60. package/dist/bin/import-history.js +9 -9
  61. package/dist/bin/install.js +78 -78
  62. package/dist/bin/intercom-check.js +4 -4
  63. package/dist/bin/mcp-sessions.js +2 -2
  64. package/dist/bin/orchestration-metrics.js +4 -4
  65. package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
  66. package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
  67. package/dist/bin/reconcile-backlog.js +2 -2
  68. package/dist/bin/registry-proxy.js +1 -1
  69. package/dist/bin/scan-tasks.js +13 -13
  70. package/dist/bin/setup.js +1 -1
  71. package/dist/bin/shard-migrate.js +5 -5
  72. package/dist/bin/stack-update.js +4 -4
  73. package/dist/bin/vps-health-gate.js +1 -1
  74. package/dist/{boot-generation-ZLU4WCQM.js → boot-generation-OHXH4YC5.js} +3 -3
  75. package/dist/{boot-review-sections-N6BNB6XH.js → boot-review-sections-N5IXIGSS.js} +12 -12
  76. package/dist/{branch-hygiene-HFJ3HA62.js → branch-hygiene-KCGXRAWP.js} +125 -73
  77. package/dist/build-manifest.json +785 -775
  78. package/dist/{capability-cards-KQOG53EI.js → capability-cards-4PXVLIVS.js} +2 -2
  79. package/dist/{capacity-monitor-AUDIPQFT.js → capacity-monitor-FKMQXORX.js} +14 -14
  80. package/dist/{catchup-brief-HRSMXUUZ.js → catchup-brief-SN5EKO4N.js} +17 -17
  81. package/dist/{chunk-ELSZZPKV.js → chunk-23QKEUF6.js} +11 -11
  82. package/dist/{chunk-CQPXU7TX.js → chunk-3KTQWMHI.js} +1 -1
  83. package/dist/{chunk-QS6HI4B6.js → chunk-3TTKAT6V.js} +31 -9
  84. package/dist/{chunk-HVL53G6O.js → chunk-44C7QNZS.js} +1 -1
  85. package/dist/{chunk-LQW7BZLZ.js → chunk-4ZJ5BPY6.js} +1 -1
  86. package/dist/{chunk-PNU7BPJ6.js → chunk-53PYNYTW.js} +3 -3
  87. package/dist/{chunk-VHUIVLOZ.js → chunk-5AHDQCTB.js} +4 -4
  88. package/dist/{chunk-XRFTLVRV.js → chunk-5AHRZI3R.js} +1 -1
  89. package/dist/{chunk-AGML75Y4.js → chunk-5DCCKHDY.js} +3 -3
  90. package/dist/{chunk-SWYONKEF.js → chunk-6XEYELCA.js} +1 -1
  91. package/dist/{chunk-IBPCNS6U.js → chunk-77JP3LK4.js} +5 -5
  92. package/dist/{chunk-JDDT3G7L.js → chunk-7PSLK36P.js} +1 -1
  93. package/dist/{chunk-JU5CF53A.js → chunk-7R73IAHU.js} +9 -9
  94. package/dist/{chunk-IBFCSUJV.js → chunk-7V6M3QUS.js} +1 -1
  95. package/dist/{chunk-G5D62GZA.js → chunk-7WQRFSZI.js} +3 -3
  96. package/dist/{chunk-5AOQEERG.js → chunk-AAUWFXOX.js} +4 -4
  97. package/dist/{chunk-PZBYI3ED.js → chunk-AMKSDKMK.js} +1 -1
  98. package/dist/{chunk-UYAQRBHY.js → chunk-CNC57JCS.js} +4 -4
  99. package/dist/{chunk-ZVDF4Y6O.js → chunk-DKBPCOU4.js} +50 -20
  100. package/dist/{chunk-PRMGNTW3.js → chunk-E2WEFZOR.js} +1 -1
  101. package/dist/{chunk-DRFRUDML.js → chunk-E7UCDSUE.js} +4 -4
  102. package/dist/{chunk-X7IU6JM7.js → chunk-ECHLVLA7.js} +1 -1
  103. package/dist/{chunk-75R6NMW5.js → chunk-EEXX4UMQ.js} +1 -1
  104. package/dist/{chunk-XPRZ6LLL.js → chunk-ELXFSIIM.js} +2 -2
  105. package/dist/{chunk-AXVUURYS.js → chunk-ERVQTR7P.js} +2 -2
  106. package/dist/{chunk-AJTRBGIC.js → chunk-FB343XQX.js} +2 -2
  107. package/dist/{chunk-ZLKDEKK5.js → chunk-FBYAXTDM.js} +1 -1
  108. package/dist/{chunk-B353FGPH.js → chunk-GH6YJOOC.js} +5 -5
  109. package/dist/{chunk-MCBPDKWB.js → chunk-GU62SNDH.js} +1 -1
  110. package/dist/{chunk-ZTZ6DM2M.js → chunk-HDW4XPDV.js} +1 -1
  111. package/dist/{chunk-5ROSYSRQ.js → chunk-HECXZGGZ.js} +9 -9
  112. package/dist/{chunk-V4SLIPZS.js → chunk-HHE2HV3V.js} +1 -1
  113. package/dist/{chunk-Q7YSVIJL.js → chunk-HIIXCAEE.js} +2 -2
  114. package/dist/{chunk-V7CLIEDZ.js → chunk-HIVZ53YB.js} +1 -1
  115. package/dist/{chunk-QCQT5RXR.js → chunk-HV6Y6F4X.js} +95 -3
  116. package/dist/{chunk-QCCAOLAS.js → chunk-IPMUWYRQ.js} +2 -2
  117. package/dist/{chunk-DVUQYAUC.js → chunk-JJUGI2YL.js} +1 -1
  118. package/dist/{chunk-O7BGW45J.js → chunk-JKXZGRWR.js} +1 -1
  119. package/dist/{chunk-ZGSAKOMA.js → chunk-JOO35RHR.js} +2 -2
  120. package/dist/{chunk-6OJVMXAC.js → chunk-JR23BL74.js} +3 -3
  121. package/dist/{chunk-ZQEHMWGI.js → chunk-JTWTBX2M.js} +1 -1
  122. package/dist/{chunk-7MXJXYJS.js → chunk-KPMC7PY7.js} +1 -1
  123. package/dist/{chunk-IRYOOXZQ.js → chunk-KXYFBBZR.js} +1 -1
  124. package/dist/{chunk-5RTDR52E.js → chunk-KYFFVTGO.js} +1 -1
  125. package/dist/{chunk-YKXQT3ZW.js → chunk-L6ZNURWN.js} +1 -1
  126. package/dist/{chunk-FBSTMK4X.js → chunk-LAZKEJMS.js} +138 -138
  127. package/dist/{chunk-ZWDWRWQW.js → chunk-LDL3S7AC.js} +1 -1
  128. package/dist/{chunk-KCO4NVOF.js → chunk-MBNIJXKI.js} +2 -2
  129. package/dist/{chunk-DZYDMHI5.js → chunk-MDGYXUOV.js} +1 -1
  130. package/dist/{chunk-GC2AIMNA.js → chunk-MEGRQ53A.js} +5 -5
  131. package/dist/{chunk-GKFO2ASR.js → chunk-MINXPXAB.js} +3 -3
  132. package/dist/{chunk-ZWHDGIHV.js → chunk-O4ZFRK6W.js} +11 -11
  133. package/dist/{chunk-FRLKE6CX.js → chunk-OKGIOWOB.js} +1 -1
  134. package/dist/{chunk-R5YGJRSH.js → chunk-OW5RZIDW.js} +4 -4
  135. package/dist/{chunk-6HYV622V.js → chunk-OYQNNKNS.js} +10 -10
  136. package/dist/{chunk-QESZNU5H.js → chunk-OZBII5E3.js} +4 -4
  137. package/dist/{chunk-CO4LNMLT.js → chunk-PM6WSWVU.js} +2 -2
  138. package/dist/{chunk-4DGM3F7F.js → chunk-QLA3RTH4.js} +1 -1
  139. package/dist/{chunk-SQVBAWJ6.js → chunk-QR624DER.js} +1 -1
  140. package/dist/{chunk-MWWSJ5FO.js → chunk-QTI4QAWA.js} +1 -1
  141. package/dist/{chunk-OBY6D44R.js → chunk-QTYJPWJN.js} +4 -4
  142. package/dist/{chunk-PRKEHXGC.js → chunk-RBYHJDAT.js} +3 -3
  143. package/dist/{chunk-X5E5CVJG.js → chunk-RGUDGC6A.js} +3 -3
  144. package/dist/{chunk-L2KHIVNA.js → chunk-RIK5GRWI.js} +3 -3
  145. package/dist/{chunk-WLOAKBUB.js → chunk-RLR6VVKV.js} +4 -4
  146. package/dist/{chunk-WNHGHO7M.js → chunk-RNLF3CBB.js} +1 -1
  147. package/dist/{chunk-QYV6JWP3.js → chunk-RUVO3NJC.js} +3 -3
  148. package/dist/{chunk-BN7NSTFF.js → chunk-RUWWES2K.js} +2 -2
  149. package/dist/{chunk-ASERE4BL.js → chunk-SEP5ITFQ.js} +1 -1
  150. package/dist/chunk-SI5SZAJA.js +178 -0
  151. package/dist/{chunk-S5W4OAVN.js → chunk-T4EK56WI.js} +1 -1
  152. package/dist/{chunk-3LI2UY56.js → chunk-TGEPLJ66.js} +3 -3
  153. package/dist/{chunk-6656BVBH.js → chunk-TGPQMMQP.js} +3 -3
  154. package/dist/{chunk-HK6BHPXG.js → chunk-THM7J6UI.js} +4 -4
  155. package/dist/{chunk-Y72EP2Q7.js → chunk-TK4MI6F6.js} +3 -3
  156. package/dist/{chunk-LAHOHXHD.js → chunk-UKLF7F3Z.js} +2 -2
  157. package/dist/{chunk-VGMRL522.js → chunk-UTDMTQNH.js} +1 -1
  158. package/dist/{chunk-4YUQNYOJ.js → chunk-UVW7YFAF.js} +4 -4
  159. package/dist/{chunk-EIJRPAUS.js → chunk-VKXS2YGN.js} +1 -1
  160. package/dist/{chunk-ZBT3C2WH.js → chunk-VX2F4ZUY.js} +2 -2
  161. package/dist/{chunk-UUVRBSH4.js → chunk-W25RLOQ2.js} +2 -2
  162. package/dist/{chunk-UOOCN72R.js → chunk-WAEKYKTK.js} +1 -1
  163. package/dist/{chunk-XPDAFAS7.js → chunk-WUKQVNLP.js} +1 -1
  164. package/dist/{chunk-YAT5IEQK.js → chunk-WZJVGA5I.js} +1 -1
  165. package/dist/{chunk-KWMCCRM6.js → chunk-XHYHX6F7.js} +19 -19
  166. package/dist/{chunk-JK6LGA62.js → chunk-XXSNLM6R.js} +1 -1
  167. package/dist/{chunk-A6BXK7AQ.js → chunk-YFCNWQAM.js} +2 -2
  168. package/dist/{chunk-FUPE3KJA.js → chunk-YWUQVHDL.js} +1 -1
  169. package/dist/{chunk-NYEJOJVS.js → chunk-ZISQOOER.js} +2 -2
  170. package/dist/{chunk-3SL3C2GZ.js → chunk-ZXB56YR2.js} +9 -9
  171. package/dist/{chunk-MIVFYHZM.js → chunk-ZYCLSEZT.js} +2 -2
  172. package/dist/{cleanup-graph-garbage-6DD6TADI.js → cleanup-graph-garbage-IPYDS5OX.js} +7 -7
  173. package/dist/{cloud-sync-command-YXA4IEKT.js → cloud-sync-command-JLNVG7H4.js} +2 -2
  174. package/dist/{cloud-sync-db-init-H6QPNK3Z.js → cloud-sync-db-init-JXUF6GI3.js} +1 -1
  175. package/dist/{cloud-sync-shutdown-A6T7RQT2.js → cloud-sync-shutdown-Z4SBP6PL.js} +2 -2
  176. package/dist/{co-activation-HSKIFJHU.js → co-activation-74RDFTKS.js} +2 -2
  177. package/dist/{co-occurrence-UW563FHZ.js → co-occurrence-CN3TBYVR.js} +5 -5
  178. package/dist/{conversation-entity-extractor-LFDOCVKB.js → conversation-entity-extractor-QGTLH4BP.js} +3 -3
  179. package/dist/{crdt-sync-MGP67KLW.js → crdt-sync-7T4WCOKD.js} +1 -1
  180. package/dist/{crm-webhook-6DZSEFSP.js → crm-webhook-FTW3XZTO.js} +2 -2
  181. package/dist/{cto-delegation-gate-QPPDJGLY.js → cto-delegation-gate-SZCE34LB.js} +12 -12
  182. package/dist/{daemon-orchestration-MXWB4ZOF.js → daemon-orchestration-IGPHVNFR.js} +17 -17
  183. package/dist/{destructive-data-guard-5SKHIZNN.js → destructive-data-guard-6I5MDFVD.js} +1 -1
  184. package/dist/{doc-graph-extractor-4XUPW4SI.js → doc-graph-extractor-VPTRIEKN.js} +5 -5
  185. package/dist/{documents-KG5AACEM.js → documents-URULIXGM.js} +6 -6
  186. package/dist/{dreaming-3VQVED4S.js → dreaming-VIZO3QDO.js} +16 -16
  187. package/dist/{employee-boot-brief-CHKXWH4B.js → employee-boot-brief-XLOG4ULP.js} +19 -19
  188. package/dist/{exe-drift-CSD2AAVQ.js → exe-drift-TLQM3IHD.js} +3 -3
  189. package/dist/{exe-export-DCJSNQXL.js → exe-export-7YWYWJHY.js} +7 -7
  190. package/dist/{exe-import-NLT7ABRP.js → exe-import-DW6VAUKW.js} +7 -7
  191. package/dist/{exe-key-2DFWB3RD.js → exe-key-TLJP2B4Y.js} +76 -76
  192. package/dist/{exe-org-6GZ54U6N.js → exe-org-LU46N36E.js} +12 -12
  193. package/dist/{exe-snapshot-PRLVRLLN.js → exe-snapshot-QHUZRS62.js} +17 -17
  194. package/dist/{fast-db-init-Y2MMNYVV.js → fast-db-init-SCTOOIUT.js} +1 -1
  195. package/dist/{founder-context-7IEVQPD7.js → founder-context-ZFZC4UHO.js} +2 -2
  196. package/dist/gateway/index.js +8 -8
  197. package/dist/{git-main-guard-TGK3RQY3.js → git-main-guard-TN27QBAI.js} +11 -1
  198. package/dist/{git-staleness-VXP474EL.js → git-staleness-GSGP344N.js} +2 -2
  199. package/dist/{global-procedures-XT7FBDNK.js → global-procedures-YAR7G4C6.js} +3 -3
  200. package/dist/{graph-auto-extract-DAWMUOJT.js → graph-auto-extract-GNQS64F5.js} +5 -5
  201. package/dist/{graph-rag-F35FMFDG.js → graph-rag-RMSFLUOB.js} +3 -3
  202. package/dist/{hook-integrity-Y3OAZFSH.js → hook-integrity-CF567MVN.js} +1 -1
  203. package/dist/{hook-prefetch-A4WNG6CH.js → hook-prefetch-36BK4F7U.js} +13 -13
  204. package/dist/hooks/bug-report-worker.js +17 -17
  205. package/dist/hooks/codex-stop-task-finalizer.js +18 -18
  206. package/dist/hooks/commit-complete.js +16 -16
  207. package/dist/hooks/error-recall.js +8 -8
  208. package/dist/hooks/exe-heartbeat-hook.js +4 -4
  209. package/dist/hooks/ingest-worker.js +2 -2
  210. package/dist/hooks/ingest.js +11 -11
  211. package/dist/hooks/instructions-loaded.js +5 -5
  212. package/dist/hooks/manifest.json +20 -20
  213. package/dist/hooks/notification.js +5 -5
  214. package/dist/hooks/post-compact.js +4 -4
  215. package/dist/hooks/post-tool-combined.js +11 -11
  216. package/dist/hooks/pre-compact.js +16 -16
  217. package/dist/hooks/pre-tool-use.js +28 -28
  218. package/dist/hooks/prompt-submit.js +29 -29
  219. package/dist/hooks/session-end.js +20 -20
  220. package/dist/hooks/session-start.js +16 -16
  221. package/dist/hooks/stop.js +19 -19
  222. package/dist/hooks/subagent-stop.js +17 -17
  223. package/dist/hooks/summary-worker.js +21 -21
  224. package/dist/index.js +23 -23
  225. package/dist/{installer-OIJ5K2AR.js → installer-LUN4HQIC.js} +5 -5
  226. package/dist/{installer-N4IBPKQP.js → installer-MPRFUQJE.js} +5 -5
  227. package/dist/{installer-MMMNOFLS.js → installer-OC5VXNC7.js} +5 -5
  228. package/dist/{intercom-queue-S2PK53WU.js → intercom-queue-6DZ7BANV.js} +12 -12
  229. package/dist/lib/cloud-sync.js +10 -10
  230. package/dist/lib/consolidation.js +7 -7
  231. package/dist/lib/database.js +2 -2
  232. package/dist/lib/db-backup.js +1 -1
  233. package/dist/lib/db-write-worker.js +3 -3
  234. package/dist/lib/db.js +2 -2
  235. package/dist/lib/device-registry.js +1 -1
  236. package/dist/lib/employee-templates.js +4 -4
  237. package/dist/lib/employees.js +2 -2
  238. package/dist/lib/exe-daemon.js +85 -77
  239. package/dist/lib/hybrid-search.js +6 -6
  240. package/dist/lib/identity.js +2 -2
  241. package/dist/lib/license.js +4 -2
  242. package/dist/lib/messaging.js +13 -13
  243. package/dist/lib/registry-proxy.js +1 -1
  244. package/dist/lib/reminders.js +3 -3
  245. package/dist/lib/schedules.js +6 -6
  246. package/dist/lib/session-registry.js +4 -4
  247. package/dist/lib/skill-learning.js +7 -7
  248. package/dist/lib/status-brief.js +1 -1
  249. package/dist/lib/store.js +5 -5
  250. package/dist/lib/task-router.js +3 -3
  251. package/dist/lib/tasks.js +14 -14
  252. package/dist/lib/tmux-routing.js +12 -12
  253. package/dist/lib/token-spend.js +3 -3
  254. package/dist/{license-gate-TQUNTYGQ.js → license-gate-ESER24PJ.js} +3 -3
  255. package/dist/{license-sync-MELIT6GE.js → license-sync-JVG5KNIY.js} +2 -2
  256. package/dist/mcp/register-tools.js +75 -75
  257. package/dist/mcp/server.js +76 -76
  258. package/dist/mcp/tools/complete-reminder.js +4 -4
  259. package/dist/mcp/tools/create-reminder.js +4 -4
  260. package/dist/mcp/tools/create-task.js +16 -16
  261. package/dist/mcp/tools/deactivate-behavior.js +8 -8
  262. package/dist/mcp/tools/list-reminders.js +4 -4
  263. package/dist/mcp/tools/list-tasks.js +16 -16
  264. package/dist/mcp/tools/send-message.js +15 -15
  265. package/dist/mcp/tools/update-task.js +15 -15
  266. package/dist/{mcp-http-config-V4CGMP2O.js → mcp-http-config-6K6IKH5F.js} +3 -3
  267. package/dist/{mcp-session-identity-6CI2MVTG.js → mcp-session-identity-LRC6WJSD.js} +12 -12
  268. package/dist/{memory-cards-LTM7NC52.js → memory-cards-V3OZHIYP.js} +5 -5
  269. package/dist/{memory-graph-extractor-653465YU.js → memory-graph-extractor-JC2Z64L4.js} +6 -6
  270. package/dist/{memory-poisoning-defense-XEF6EJFZ.js → memory-poisoning-defense-YM4QJHCX.js} +2 -2
  271. package/dist/{memory-pressure-watchdog-CCTRSTCP.js → memory-pressure-watchdog-6F6KEQHN.js} +13 -13
  272. package/dist/{memory-reflection-A4XN5LJB.js → memory-reflection-QXHJPYPC.js} +2 -2
  273. package/dist/{notification-ledger-LYFY6J6T.js → notification-ledger-6QRLQW4Q.js} +13 -13
  274. package/dist/{notifications-CRMZYTZD.js → notifications-7B6D7Y5C.js} +12 -12
  275. package/dist/{orchestration-events-BG7ECYYB.js → orchestration-events-GY5VP5LU.js} +3 -3
  276. package/dist/{orchestrator-CXBMAJ3V.js → orchestrator-JVPVOYWA.js} +14 -14
  277. package/dist/{org-brief-session-PGYGY47D.js → org-brief-session-GRV5R5E3.js} +5 -5
  278. package/dist/{org-consent-policy-3PNMR2ML.js → org-consent-policy-3FHHSYXV.js} +1 -1
  279. package/dist/{org-join-E5V5QFJ4.js → org-join-BY4PV6UO.js} +2 -2
  280. package/dist/{org-key-admin-FZW2PUZB.js → org-key-admin-WSCPT2CZ.js} +3 -3
  281. package/dist/{org-partner-runtime-Z7E3FAW4.js → org-partner-runtime-UJDGECZ4.js} +5 -5
  282. package/dist/{org-row-visibility-G2K3XPZJ.js → org-row-visibility-V5DXIHTE.js} +1 -1
  283. package/dist/{pipeline-router-6ITGNPKO.js → pipeline-router-YY5FQKTY.js} +3 -3
  284. package/dist/{plan-limits-43MY7ZUK.js → plan-limits-OVX6SN6B.js} +5 -5
  285. package/dist/{projection-worker-QXUIZL72.js → projection-worker-D2472IOD.js} +2 -2
  286. package/dist/{prospective-memory-JF4KX7SB.js → prospective-memory-JXO2A6PL.js} +2 -2
  287. package/dist/{push-notifications-7PXAAEA5.js → push-notifications-HR3FZRDI.js} +13 -13
  288. package/dist/{reproject-worktree-memories-IXYGHTGA.js → reproject-worktree-memories-OSS3PGRF.js} +127 -35
  289. package/dist/{reranker-43VKZIKQ.js → reranker-IMZRPYJ2.js} +1 -1
  290. package/dist/{retrieval-health-PDXYWW4G.js → retrieval-health-W7OD44FE.js} +1 -1
  291. package/dist/{review-polling-6CZ2Q5LG.js → review-polling-2INP7H6M.js} +13 -13
  292. package/dist/runtime/index.js +20 -20
  293. package/dist/{session-events-APEFXOYX.js → session-events-G4XUPVWV.js} +13 -13
  294. package/dist/{session-kill-telemetry-7RHDZE2H.js → session-kill-telemetry-W7MHWJTQ.js} +13 -13
  295. package/dist/{session-scope-H5S6SIWW.js → session-scope-LG2J4EMQ.js} +12 -12
  296. package/dist/{setup-wizard-5SC3DNUD.js → setup-wizard-YQJI3SVM.js} +1 -1
  297. package/dist/{skill-refinement-WXER7O2B.js → skill-refinement-RA37U756.js} +3 -3
  298. package/dist/{stack-promote-KANK5AB6.js → stack-promote-IYBRXHTA.js} +4 -4
  299. package/dist/{stack-release-PXLJNV7I.js → stack-release-OXWLVVG6.js} +4 -4
  300. package/dist/{stack-update-NICYINJ3.js → stack-update-2CZEROPK.js} +3 -3
  301. package/dist/{steward-gate-YXVHUILI.js → steward-gate-LTNFB3FY.js} +3 -3
  302. package/dist/{subagent-brief-injection-YQEH65XW.js → subagent-brief-injection-OHLWLECQ.js} +20 -20
  303. package/dist/{support-inbox-7H25MDCH.js → support-inbox-4KCEPAZQ.js} +3 -3
  304. package/dist/{task-enforcement-UO6YWPWA.js → task-enforcement-LGXWXGVZ.js} +13 -13
  305. package/dist/{task-request-inbox-4HJRWUJ6.js → task-request-inbox-WHCOSUCP.js} +1 -1
  306. package/dist/{task-scope-HYLP4GNF.js → task-scope-KXF7Y6KA.js} +12 -12
  307. package/dist/{tasks-crud-FBDDZ7AA.js → tasks-crud-5EM55WRZ.js} +12 -12
  308. package/dist/{tasks-notify-Y24O7NUS.js → tasks-notify-VFMAURTN.js} +13 -13
  309. package/dist/{tasks-review-WW6W3TNM.js → tasks-review-MHGMBHUZ.js} +12 -12
  310. package/dist/{telemetry-upload-WZBHZLC6.js → telemetry-upload-6NRTN7QJ.js} +7 -7
  311. package/dist/{token-budget-ANESTRO5.js → token-budget-LZPOYTRP.js} +3 -3
  312. package/dist/{tool-telemetry-GUMN5D45.js → tool-telemetry-ZX7VSAXK.js} +1 -1
  313. package/dist/tui/App.js +20 -20
  314. package/dist/{tui-data-TAXTMZSL.js → tui-data-CC5POSUV.js} +12 -12
  315. package/dist/{update-support-WWGWPCU3.js → update-support-KH6NSQON.js} +9 -9
  316. package/dist/{work-claims-XXHRJI5N.js → work-claims-MNK7PEPW.js} +3 -3
  317. package/dist/{work-state-heartbeat-PFPOZLVI.js → work-state-heartbeat-YEWT5NMZ.js} +1 -1
  318. package/dist/{worker-gate-MRQ44Y4I.js → worker-gate-BOQSIU2Z.js} +1 -1
  319. package/dist/{workflow-engine-QIBHWCIH.js → workflow-engine-MUUD7ZEX.js} +2 -2
  320. package/dist/{worktree-O3AE77YT.js → worktree-GOGT2LZP.js} +4 -4
  321. package/dist/{worktree-sweep-KX75U5TO.js → worktree-sweep-46VWPVQT.js} +5 -5
  322. package/package.json +2 -1
  323. package/release-notes.json +15 -29
  324. package/stack.release.json +4 -4
  325. package/dist/{chunk-IX6ZFC3M.js → chunk-3F2UB4IQ.js} +0 -0
  326. package/dist/{chunk-4XFQTDUS.js → chunk-3Y5THOU6.js} +0 -0
  327. package/dist/{chunk-UINNP65J.js → chunk-5APCDDJZ.js} +0 -0
  328. package/dist/{chunk-LBDOJAGX.js → chunk-5N4SG5NB.js} +3 -3
  329. /package/dist/{chunk-6PDPYOAV.js → chunk-7UTJA6HF.js} +0 -0
  330. /package/dist/{chunk-WTDNYATC.js → chunk-ADNBOKYZ.js} +0 -0
  331. /package/dist/{chunk-6O73T44R.js → chunk-GB3AHV5F.js} +0 -0
  332. /package/dist/{chunk-25T6EERD.js → chunk-HR2R2QER.js} +0 -0
  333. /package/dist/{chunk-E4NB3B2R.js → chunk-ORA5BWCV.js} +0 -0
  334. /package/dist/{chunk-KSQUNVPJ.js → chunk-R6FLELV6.js} +0 -0
  335. /package/dist/{chunk-5Y43SCSF.js → chunk-U3XLRMJD.js} +0 -0
  336. /package/dist/{chunk-LBRBL5S3.js → chunk-V4XAKXXF.js} +0 -0
  337. /package/dist/{chunk-XWJXNIBG.js → chunk-VJSDGDNS.js} +0 -0
  338. /package/dist/{chunk-V4S5XV3S.js → chunk-WV3TOOL7.js} +0 -0
  339. /package/dist/{core-memory-NOF6XESC.js → core-memory-6WBNT2HL.js} +0 -0
  340. /package/dist/{memory-isolation-SANJ4VHY.js → memory-isolation-EJ45IXBH.js} +0 -0
  341. /package/dist/{oauth-server-KEWQDSQ7.js → oauth-server-TZFNQAFS.js} +0 -0
  342. /package/dist/{project-boot-A5SF6NXB.js → project-boot-LXLU2J32.js} +0 -0
  343. /package/dist/{wiki-acl-XZMUIGP4.js → wiki-acl-WXRJGZ5Q.js} +0 -0
@@ -1,3 +1,8 @@
1
+ import {
2
+ getRemoteDefaultBranch,
3
+ ghPrStateLookup,
4
+ listRemoteHeads
5
+ } from "./chunk-SI5SZAJA.js";
1
6
  import {
2
7
  EXE_AI_DIR
3
8
  } from "./chunk-QMSEL5YS.js";
@@ -16,6 +21,9 @@ var MAX_BRANCHES_SCANNED = 60;
16
21
  var DEFAULT_LISTING_CAP = 10;
17
22
  var SCAN_CONCURRENCY = 8;
18
23
  var DEFAULT_CACHE_MAX_AGE_MS = 90 * 60 * 1e3;
24
+ function isAttention(c) {
25
+ return c === "closed_unmerged" || c === "never_proposed";
26
+ }
19
27
  async function git(repoRoot, args) {
20
28
  const { stdout } = await execFileAsync("git", args, {
21
29
  cwd: repoRoot,
@@ -24,21 +32,6 @@ async function git(repoRoot, args) {
24
32
  });
25
33
  return stdout.trim();
26
34
  }
27
- async function detectRemoteBase(repoRoot) {
28
- for (const candidate of ["main", "master"]) {
29
- try {
30
- await git(repoRoot, ["rev-parse", "--verify", `refs/remotes/origin/${candidate}`]);
31
- return `origin/${candidate}`;
32
- } catch {
33
- }
34
- }
35
- return null;
36
- }
37
- function parseRefLine(line) {
38
- const [name, committedAt] = line.split("");
39
- if (!name) return null;
40
- return { name: name.replace(/^origin\//, ""), committedAt: committedAt ?? "" };
41
- }
42
35
  async function mapPool(items, concurrency, fn) {
43
36
  const results = new Array(items.length);
44
37
  let next = 0;
@@ -53,74 +46,115 @@ async function mapPool(items, concurrency, fn) {
53
46
  await Promise.all(Array.from({ length: lanes }, () => worker()));
54
47
  return results;
55
48
  }
56
- async function scanUnmergedBranchesRaw(repoRoot) {
57
- const emptyRaw = { branches: [], truncated: false };
58
- let base;
59
- try {
60
- base = await detectRemoteBase(repoRoot);
61
- } catch {
62
- return emptyRaw;
49
+ async function scanUnmergedBranchesRaw(repoRoot, prStateLookup = ghPrStateLookup) {
50
+ const emptyRaw = {
51
+ branches: [],
52
+ truncated: false,
53
+ remoteRead: false,
54
+ prStateAvailable: false
55
+ };
56
+ const heads = await listRemoteHeads(repoRoot);
57
+ if (!heads) return emptyRaw;
58
+ const remoteDefault = await getRemoteDefaultBranch(repoRoot);
59
+ let baseName = remoteDefault?.name;
60
+ if (!baseName) {
61
+ baseName = heads.find((h) => h.name === "main")?.name ?? heads.find((h) => h.name === "master")?.name;
63
62
  }
64
- if (!base) return emptyRaw;
65
- const baseRef = base;
66
- let lines;
63
+ if (!baseName) return { ...emptyRaw, remoteRead: true };
64
+ const baseSha = heads.find((h) => h.name === baseName)?.sha ?? remoteDefault?.sha;
65
+ if (!baseSha) return { ...emptyRaw, remoteRead: true };
66
+ let baseLocal = false;
67
67
  try {
68
- const raw = await git(repoRoot, [
69
- "for-each-ref",
70
- `--no-merged=${baseRef}`,
71
- "--sort=-committerdate",
72
- "--format=%(refname:short)%(committerdate:iso-strict)",
73
- "refs/remotes/origin"
74
- ]);
75
- lines = raw ? raw.split("\n") : [];
68
+ await git(repoRoot, ["cat-file", "-e", `${baseSha}^{commit}`]);
69
+ baseLocal = true;
76
70
  } catch {
77
- return emptyRaw;
71
+ baseLocal = false;
78
72
  }
79
- const baseShort = baseRef.replace(/^origin\//, "");
80
73
  const candidates = [];
81
74
  let truncated = false;
82
- for (const line of lines) {
83
- const parsed = parseRefLine(line);
84
- if (!parsed) continue;
85
- if (parsed.name === baseShort || parsed.name === "HEAD") continue;
75
+ for (const h of heads) {
76
+ if (h.name === baseName || h.name === "HEAD") continue;
86
77
  if (candidates.length >= MAX_BRANCHES_SCANNED) {
87
78
  truncated = true;
88
79
  break;
89
80
  }
90
- candidates.push(parsed);
81
+ candidates.push(h);
91
82
  }
92
- const counted = await mapPool(candidates, SCAN_CONCURRENCY, async (c) => {
83
+ const measured = await mapPool(candidates, SCAN_CONCURRENCY, async (c) => {
93
84
  let ahead = 0;
85
+ let aheadUnknown = true;
86
+ let committedAt = "";
87
+ if (baseLocal) {
88
+ try {
89
+ const cnt = await git(repoRoot, ["rev-list", "--count", `${baseSha}..${c.sha}`]);
90
+ ahead = parseInt(cnt, 10) || 0;
91
+ aheadUnknown = false;
92
+ } catch {
93
+ aheadUnknown = true;
94
+ }
95
+ }
94
96
  try {
95
- const cnt = await git(repoRoot, ["rev-list", "--count", `${baseRef}..origin/${c.name}`]);
96
- ahead = parseInt(cnt, 10) || 0;
97
+ committedAt = await git(repoRoot, ["log", "-1", "--format=%cI", c.sha]);
97
98
  } catch {
98
- ahead = 0;
99
+ committedAt = "";
99
100
  }
100
- return { c, ahead };
101
+ return { c, ahead, aheadUnknown, committedAt };
101
102
  });
103
+ const kept = measured.filter((m) => m.aheadUnknown || m.ahead > 0);
104
+ const prMap = await prStateLookup(repoRoot, kept.map((m) => m.c.name));
105
+ const prStateAvailable = prMap !== null;
102
106
  const now = Date.now();
103
- const out = [];
104
- for (const { c, ahead } of counted) {
105
- if (ahead <= 0) continue;
106
- const committedMs = c.committedAt ? Date.parse(c.committedAt) : NaN;
107
+ const out = kept.map((m) => {
108
+ const committedMs = m.committedAt ? Date.parse(m.committedAt) : NaN;
107
109
  const ageHours = Number.isFinite(committedMs) ? Math.max(0, (now - committedMs) / 36e5) : 0;
108
- out.push({ name: c.name, ahead, committedAt: c.committedAt, ageHours, filesChanged: 0 });
109
- }
110
- return { branches: out, truncated };
110
+ const pr = prMap?.get(m.c.name);
111
+ return {
112
+ name: m.c.name,
113
+ ahead: m.ahead,
114
+ aheadUnknown: m.aheadUnknown,
115
+ committedAt: m.committedAt,
116
+ ageHours,
117
+ // filesChanged retained in the shape (cosmetic) but no longer computed — 0.
118
+ filesChanged: 0,
119
+ classification: pr?.state ?? "unknown",
120
+ prNumber: pr?.number ?? null
121
+ };
122
+ });
123
+ out.sort((a, b) => (Date.parse(b.committedAt) || 0) - (Date.parse(a.committedAt) || 0));
124
+ return { branches: out, truncated, remoteRead: true, prStateAvailable };
111
125
  }
112
- function finalizeScan(rawBranches, truncated, staleHours, listingCap, now = Date.now()) {
113
- const refreshed = rawBranches.map((b) => {
126
+ function finalizeScan(raw, staleHours, listingCap, include, now = Date.now()) {
127
+ const refreshed = raw.branches.map((b) => {
114
128
  const ms = b.committedAt ? Date.parse(b.committedAt) : NaN;
115
129
  const ageHours = Number.isFinite(ms) ? Math.max(0, (now - ms) / 36e5) : b.ageHours;
116
130
  return { ...b, ageHours };
117
131
  });
118
- const staleCount = refreshed.filter((b) => b.ageHours >= staleHours).length;
132
+ const selected = include ? refreshed.filter((b) => include.includes(b.classification)) : refreshed.filter((b) => isAttention(b.classification));
133
+ return {
134
+ branches: selected.slice(0, listingCap),
135
+ total: selected.length,
136
+ staleCount: selected.filter((b) => b.ageHours >= staleHours).length,
137
+ truncated: raw.truncated,
138
+ liveTotal: refreshed.length,
139
+ mergedCount: refreshed.filter((b) => b.classification === "merged").length,
140
+ openCount: refreshed.filter((b) => b.classification === "open").length,
141
+ unknownCount: refreshed.filter((b) => b.classification === "unknown").length,
142
+ remoteRead: raw.remoteRead,
143
+ prStateAvailable: raw.prStateAvailable
144
+ };
145
+ }
146
+ function unknownScanResult() {
119
147
  return {
120
- branches: refreshed.slice(0, listingCap),
121
- total: refreshed.length,
122
- staleCount,
123
- truncated
148
+ branches: [],
149
+ total: 0,
150
+ staleCount: 0,
151
+ truncated: false,
152
+ liveTotal: 0,
153
+ mergedCount: 0,
154
+ openCount: 0,
155
+ unknownCount: 0,
156
+ remoteRead: false,
157
+ prStateAvailable: false
124
158
  };
125
159
  }
126
160
  async function scanUnmergedBranches(repoRoot, options = {}) {
@@ -128,13 +162,13 @@ async function scanUnmergedBranches(repoRoot, options = {}) {
128
162
  const listingCap = options.listingCap ?? DEFAULT_LISTING_CAP;
129
163
  let raw;
130
164
  try {
131
- raw = await scanUnmergedBranchesRaw(repoRoot);
165
+ raw = await scanUnmergedBranchesRaw(repoRoot, options.prStateLookup);
132
166
  } catch {
133
- return { branches: [], total: 0, staleCount: 0, truncated: false };
167
+ return unknownScanResult();
134
168
  }
135
- return finalizeScan(raw.branches, raw.truncated, staleHours, listingCap);
169
+ return finalizeScan(raw, staleHours, listingCap, options.include);
136
170
  }
137
- var BRANCH_SCAN_CACHE_VERSION = 1;
171
+ var BRANCH_SCAN_CACHE_VERSION = 2;
138
172
  function branchScanCacheDir() {
139
173
  return join(EXE_AI_DIR, "session-cache");
140
174
  }
@@ -177,29 +211,47 @@ async function scanUnmergedBranchesCached(repoRoot, options = {}, cacheOpts = {}
177
211
  if (entry?.scannedAt) {
178
212
  const age = Date.now() - Date.parse(entry.scannedAt);
179
213
  if (Number.isFinite(age) && age >= 0 && age <= maxAgeMs) {
180
- return finalizeScan(entry.branches ?? [], entry.truncated ?? false, staleHours, listingCap);
214
+ return finalizeScan(
215
+ {
216
+ branches: entry.branches ?? [],
217
+ truncated: entry.truncated ?? false,
218
+ remoteRead: entry.remoteRead ?? false,
219
+ prStateAvailable: entry.prStateAvailable ?? false
220
+ },
221
+ staleHours,
222
+ listingCap,
223
+ options.include
224
+ );
181
225
  }
182
226
  }
183
227
  }
184
228
  let raw;
185
229
  try {
186
- raw = await scanUnmergedBranchesRaw(repoRoot);
230
+ raw = await scanUnmergedBranchesRaw(repoRoot, options.prStateLookup);
187
231
  } catch {
188
- return { branches: [], total: 0, staleCount: 0, truncated: false };
232
+ return unknownScanResult();
189
233
  }
190
- await writeBranchScanCacheEntryAsync(repoRoot, {
191
- scannedAt: (/* @__PURE__ */ new Date()).toISOString(),
192
- branches: raw.branches,
193
- truncated: raw.truncated
194
- });
195
- return finalizeScan(raw.branches, raw.truncated, staleHours, listingCap);
234
+ if (raw.remoteRead) {
235
+ await writeBranchScanCacheEntryAsync(repoRoot, {
236
+ scannedAt: (/* @__PURE__ */ new Date()).toISOString(),
237
+ branches: raw.branches,
238
+ truncated: raw.truncated,
239
+ remoteRead: raw.remoteRead,
240
+ prStateAvailable: raw.prStateAvailable
241
+ });
242
+ }
243
+ return finalizeScan(raw, staleHours, listingCap, options.include);
196
244
  }
197
245
  function slugForMatch(input) {
198
246
  return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
199
247
  }
200
248
  async function findMatchingBranches(repoRoot, opts) {
201
249
  const result = [];
202
- const scan = await scanUnmergedBranches(repoRoot, { listingCap: MAX_BRANCHES_SCANNED });
250
+ const scan = await scanUnmergedBranchesCached(repoRoot, {
251
+ listingCap: MAX_BRANCHES_SCANNED,
252
+ include: ["closed_unmerged", "never_proposed", "open"],
253
+ prStateLookup: opts.prStateLookup
254
+ });
203
255
  if (scan.branches.length === 0) return result;
204
256
  const idToken = opts.id ? slugForMatch(opts.id) : "";
205
257
  const shortId = idToken ? idToken.replace(/-/g, "").slice(0, 8) : "";