@askexenow/exe-os 0.9.372 → 0.9.374
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.
- package/deploy/compose/.env.customer.example +45 -10
- package/deploy/compose/.env.example +46 -9
- package/deploy/compose/docker-compose.yml +136 -18
- package/deploy/compose/generate-env.ts +142 -34
- package/deploy/compose/sso-edge/default.conf.template +78 -7
- package/deploy/compose/sso-edge/sso-redirect.conf +109 -13
- package/deploy/stack-manifests/v0.9.30-apps.json +1 -1
- package/deploy/stack-manifests/v0.9.json +4 -4
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-GRT5MKD5.js → active-agent-ONPPEWQV.js} +7 -6
- package/dist/{active-agent-L2ZSSXDK.js → active-agent-UJKMG7LJ.js} +7 -6
- package/dist/{agent-defs-generator-M4ZNYIVX.js → agent-defs-generator-ZWI6DXOE.js} +6 -5
- package/dist/{agent-loop-FOK2IRZQ.js → agent-loop-OYHJKNYH.js} +1 -1
- package/dist/{agentic-ontology-DMPRDEUX.js → agentic-ontology-WHFJ3QFS.js} +1 -1
- package/dist/{artifact-backup-767STHSW.js → artifact-backup-WXZNB7KE.js} +2 -1
- package/dist/{backfill-gate-VX2RZTQV.js → backfill-gate-KWJQ35YX.js} +3 -2
- package/dist/{backfill-metadata-ZMEHJQ5M.js → backfill-metadata-3OUSQD5V.js} +8 -7
- package/dist/{background-jobs-LTPWCMA3.js → background-jobs-6VMD55PK.js} +3 -2
- package/dist/{backup-verify-EX2K732J.js → backup-verify-ZKTUYLTA.js} +4 -3
- package/dist/{behavior-injection-22AGMS25.js → behavior-injection-M6UYZCMW.js} +17 -15
- package/dist/{behaviors-DVFXAWF5.js → behaviors-ZJ45TFBJ.js} +21 -13
- package/dist/bin/age-ontology-load.js +3 -2
- package/dist/bin/agentic-ontology-backfill.js +10 -9
- package/dist/bin/agentic-reflection-backfill.js +11 -10
- package/dist/bin/agentic-semantic-label.js +10 -9
- package/dist/bin/backfill-conversations.js +13 -11
- package/dist/bin/backfill-responses.js +13 -11
- package/dist/bin/backfill-vectors.js +17 -15
- package/dist/bin/bulk-sync-postgres.js +22 -20
- package/dist/bin/cc-doctor.js +10 -9
- package/dist/bin/cleanup-stale-review-tasks.js +29 -26
- package/dist/bin/cli.js +36 -26
- package/dist/bin/deferred-daemon-restart.js +114 -110
- package/dist/bin/exe-agent-config.js +6 -5
- package/dist/bin/exe-agent.js +127 -33
- package/dist/bin/exe-assign.js +15 -13
- package/dist/bin/exe-boot.js +57 -54
- package/dist/bin/exe-call.js +8 -7
- package/dist/bin/exe-cloud.js +24 -22
- package/dist/bin/exe-config-dump.js +6 -5
- package/dist/bin/exe-dispatch.js +30 -27
- package/dist/bin/exe-doctor.js +14 -10
- package/dist/bin/exe-export-behaviors.js +19 -17
- package/dist/bin/exe-forget.js +10 -9
- package/dist/bin/exe-gateway.js +199 -19
- package/dist/bin/exe-grant.js +5 -5
- package/dist/bin/exe-healthcheck.js +10 -9
- package/dist/bin/exe-heartbeat.js +35 -32
- package/dist/bin/exe-kill.js +34 -31
- package/dist/bin/exe-launch-agent.js +126 -54
- package/dist/bin/exe-mcp.js +6 -5
- package/dist/bin/exe-memory-reads.js +8 -7
- package/dist/bin/exe-new-employee.js +12 -11
- package/dist/bin/exe-os-mcp-proxy.js +6 -5
- package/dist/bin/exe-pending-messages.js +30 -27
- package/dist/bin/exe-pending-notifications.js +29 -26
- package/dist/bin/exe-pending-reviews.js +30 -27
- package/dist/bin/exe-rename.js +8 -7
- package/dist/bin/exe-repo-truth.js +1 -1
- package/dist/bin/exe-review.js +33 -30
- package/dist/bin/exe-search.js +9 -8
- package/dist/bin/exe-session-cleanup.js +35 -32
- package/dist/bin/exe-settings.js +24 -22
- package/dist/bin/exe-start-codex.js +137 -55
- package/dist/bin/exe-start-opencode.js +121 -23
- package/dist/bin/exe-status.js +31 -28
- package/dist/bin/exe-support.js +5 -4
- package/dist/bin/exe-team.js +7 -6
- package/dist/bin/exe-watchdog.js +31 -11
- package/dist/bin/generate-hook-manifest.js +44 -7
- package/dist/bin/git-sweep.js +31 -28
- package/dist/bin/graph-backfill.js +89 -35
- package/dist/bin/graph-export.js +9 -8
- package/dist/bin/import-history.js +14 -13
- package/dist/bin/install.js +137 -113
- package/dist/bin/intercom-check.js +5 -5
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +7 -6
- package/dist/bin/postgres-agentic-reflection-backfill.js +5 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +4 -3
- package/dist/bin/pre-publish.js +1 -1
- package/dist/bin/reconcile-backlog.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +29 -26
- package/dist/bin/setup.js +5 -4
- package/dist/bin/shard-migrate.js +9 -8
- package/dist/bin/stack-update.js +40 -9
- package/dist/bin/verify-stack.js +2 -2
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-OHXH4YC5.js → boot-generation-JKVZ4ZAT.js} +6 -5
- package/dist/{boot-review-sections-N5IXIGSS.js → boot-review-sections-2M6BTG73.js} +28 -25
- package/dist/{branch-hygiene-KCGXRAWP.js → branch-hygiene-U5GFRSTP.js} +31 -7
- package/dist/{branding-GH43W3PU.js → branding-I6KIMB7F.js} +3 -2
- package/dist/budget-fallback-XJRPMP2D.js +11 -0
- package/dist/build-manifest.json +1318 -1233
- package/dist/{capability-cards-4PXVLIVS.js → capability-cards-5IMJT6J7.js} +5 -4
- package/dist/{capacity-monitor-FKMQXORX.js → capacity-monitor-SAXCQK7O.js} +30 -27
- package/dist/{catchup-brief-SN5EKO4N.js → catchup-brief-U2TXBLHD.js} +34 -31
- package/dist/{chunk-CNC57JCS.js → chunk-23MVDXLY.js} +4 -4
- package/dist/{chunk-V4XAKXXF.js → chunk-2AJGV5UL.js} +1 -1
- package/dist/{chunk-FBYAXTDM.js → chunk-2ZOEC4KC.js} +10 -2
- package/dist/{chunk-ELXFSIIM.js → chunk-32YV32VA.js} +2 -2
- package/dist/{chunk-44C7QNZS.js → chunk-3KDCORDO.js} +1 -1
- package/dist/{chunk-JTB5V6BV.js → chunk-3SXHEQ7X.js} +1 -1
- package/dist/{chunk-HDW4XPDV.js → chunk-3UUX5OY4.js} +1 -1
- package/dist/{chunk-7PSLK36P.js → chunk-44TLJZJ5.js} +1 -1
- package/dist/{chunk-JTWTBX2M.js → chunk-4EN3IZ3Q.js} +2 -1
- package/dist/{chunk-KPMC7PY7.js → chunk-4HKTO2SV.js} +1 -1
- package/dist/{chunk-CDUB5Q6J.js → chunk-4IK2K3B3.js} +1 -1
- package/dist/{chunk-GH6YJOOC.js → chunk-4SJ4LK4V.js} +6 -6
- package/dist/{chunk-PVEM537A.js → chunk-4YLBKEL5.js} +2 -2
- package/dist/chunk-4YNA3CM6.js +872 -0
- package/dist/{chunk-KYFFVTGO.js → chunk-55BEFF4V.js} +3 -3
- package/dist/{chunk-SEP5ITFQ.js → chunk-636LKCKE.js} +2 -2
- package/dist/{chunk-QTI4QAWA.js → chunk-6EZQUNE6.js} +338 -5
- package/dist/{chunk-WAEKYKTK.js → chunk-6RKKVPYF.js} +1 -1
- package/dist/{chunk-VX2F4ZUY.js → chunk-6SCGLHJ7.js} +3 -3
- package/dist/{chunk-MEGRQ53A.js → chunk-6VHOQ3IM.js} +51 -6
- package/dist/{chunk-HIIXCAEE.js → chunk-6YVUR3OU.js} +3 -3
- package/dist/{chunk-L6ZNURWN.js → chunk-7GE2EQ23.js} +1 -1
- package/dist/{chunk-2CWS374F.js → chunk-7RI2CNXJ.js} +1 -1
- package/dist/{chunk-OL3QP3AU.js → chunk-7TSBV3SD.js} +1 -1
- package/dist/{chunk-DSOQUQTV.js → chunk-A27Q27CT.js} +27 -0
- package/dist/{chunk-5AHRZI3R.js → chunk-AETLDRZB.js} +1 -1
- package/dist/{chunk-RNLF3CBB.js → chunk-AKLJ4JH3.js} +1 -1
- package/dist/{chunk-XHYHX6F7.js → chunk-AKLQSC6W.js} +329 -164
- package/dist/chunk-ANLFH23R.js +261 -0
- package/dist/{chunk-QLA3RTH4.js → chunk-AWWKRZMB.js} +5 -5
- package/dist/{chunk-ERVQTR7P.js → chunk-BBSIEYF5.js} +17 -3
- package/dist/{chunk-IPMUWYRQ.js → chunk-BJ7AVSY6.js} +2 -2
- package/dist/{chunk-HV6Y6F4X.js → chunk-C2L622QJ.js} +89 -3
- package/dist/{chunk-TX3Q2GIL.js → chunk-C5HUMAA7.js} +24 -1
- package/dist/{chunk-QTYJPWJN.js → chunk-CBCGDEJA.js} +7 -7
- package/dist/{chunk-XXSNLM6R.js → chunk-DB55JZHU.js} +1 -1
- package/dist/{chunk-LAZKEJMS.js → chunk-DIXXEE3S.js} +840 -607
- package/dist/{chunk-FB343XQX.js → chunk-DJ7YXOTU.js} +2 -2
- package/dist/{chunk-YFCNWQAM.js → chunk-DJOIMFKV.js} +2 -2
- package/dist/{chunk-UTDMTQNH.js → chunk-DSJI76XL.js} +92 -14
- package/dist/{chunk-EEXX4UMQ.js → chunk-DZKPOSFD.js} +1 -1
- package/dist/{chunk-WSOA3WMC.js → chunk-E426DOSY.js} +161 -4
- package/dist/{chunk-ZISQOOER.js → chunk-EKE37MO4.js} +3 -3
- package/dist/{chunk-RIECV7SR.js → chunk-EKYYMIVT.js} +1 -1
- package/dist/{chunk-HIVZ53YB.js → chunk-EXTZSNWL.js} +2 -2
- package/dist/{chunk-YYA5LXCT.js → chunk-FNEZ4BWT.js} +1 -1
- package/dist/chunk-FTZET5YX.js +313 -0
- package/dist/chunk-GHR4ZPJ7.js +70 -0
- package/dist/{chunk-MINXPXAB.js → chunk-GJI77VDO.js} +3 -3
- package/dist/{chunk-AAMGHW5W.js → chunk-GLQEJOXE.js} +1 -0
- package/dist/{chunk-ADNBOKYZ.js → chunk-GM7TLYOK.js} +60 -18
- package/dist/{chunk-RUWWES2K.js → chunk-GNUAL43X.js} +2 -2
- package/dist/{chunk-QZL6E4UB.js → chunk-GOMQ7PVQ.js} +2 -2
- package/dist/{chunk-GB3AHV5F.js → chunk-GQOEWNVM.js} +1 -1
- package/dist/{chunk-NQZUSEAR.js → chunk-GS7LIT34.js} +246 -17
- package/dist/{chunk-XTWHNLGD.js → chunk-GZOG2MAX.js} +1 -1
- package/dist/{chunk-E5HAY3DQ.js → chunk-HDLAB7W3.js} +1 -1
- package/dist/{chunk-E5QQZDQN.js → chunk-HNWS7YHN.js} +358 -136
- package/dist/{chunk-VV5EZZNT.js → chunk-HTBEVCO2.js} +1 -1
- package/dist/{chunk-OZBII5E3.js → chunk-I4DNJFDR.js} +4 -4
- package/dist/{chunk-SI5SZAJA.js → chunk-IBS2FAI4.js} +21 -4
- package/dist/{chunk-J5EYOBFF.js → chunk-IHXW4VUI.js} +1 -1
- package/dist/{chunk-RUVO3NJC.js → chunk-IN6CAM4F.js} +9 -3
- package/dist/{chunk-53PYNYTW.js → chunk-IRVOXUSK.js} +5 -5
- package/dist/{chunk-THM7J6UI.js → chunk-JHI5WMK5.js} +5 -5
- package/dist/{chunk-3KTQWMHI.js → chunk-JSMDRKPJ.js} +12 -4
- package/dist/chunk-JTVIANUB.js +131 -0
- package/dist/{chunk-2ADYTOHQ.js → chunk-K4ESASPL.js} +1 -1
- package/dist/{chunk-YWUQVHDL.js → chunk-KTCXJWJG.js} +1 -1
- package/dist/{chunk-RGUDGC6A.js → chunk-KTU3EAWK.js} +5 -5
- package/dist/{chunk-DKBPCOU4.js → chunk-L6RXG36J.js} +2 -2
- package/dist/{chunk-T4EK56WI.js → chunk-LDNYSMPZ.js} +1 -1
- package/dist/{chunk-RIK5GRWI.js → chunk-LGS2V2XD.js} +3 -3
- package/dist/{chunk-JKXZGRWR.js → chunk-LP4GB656.js} +2 -2
- package/dist/{chunk-H74466TM.js → chunk-M7O7TGGU.js} +1 -1
- package/dist/chunk-MJCSEIFI.js +54 -0
- package/dist/{chunk-IDZPQG2D.js → chunk-MOGA4Q7F.js} +2 -2
- package/dist/{chunk-OYQNNKNS.js → chunk-MXPNVSXI.js} +37 -14
- package/dist/{chunk-UVW7YFAF.js → chunk-N7VEP5B3.js} +4 -4
- package/dist/{chunk-HHE2HV3V.js → chunk-NBXDXKLC.js} +1 -1
- package/dist/{chunk-LDL3S7AC.js → chunk-NKETJCB5.js} +7 -3
- package/dist/{chunk-ECHLVLA7.js → chunk-NMH5ZQPU.js} +1 -1
- package/dist/{chunk-U3XLRMJD.js → chunk-NT7W4RXD.js} +1 -1
- package/dist/{chunk-UQUUNGTP.js → chunk-NUK7EEN5.js} +11 -9
- package/dist/{chunk-GBNB4EWD.js → chunk-ORM7ZFKC.js} +16 -0
- package/dist/{chunk-O4ZFRK6W.js → chunk-OVEQE6YS.js} +244 -49
- package/dist/{chunk-4ZJ5BPY6.js → chunk-PB5S7YOF.js} +2 -2
- package/dist/{chunk-JR23BL74.js → chunk-PDVXWXTL.js} +4 -4
- package/dist/{chunk-3CIMDFXG.js → chunk-PFQ3VEEM.js} +1 -1
- package/dist/{chunk-SBJV2PCU.js → chunk-PHBU4LGO.js} +1 -1
- package/dist/{chunk-W25RLOQ2.js → chunk-PLZSZOZN.js} +3 -3
- package/dist/{chunk-THIJIOE2.js → chunk-PY3FOMRN.js} +18 -6
- package/dist/{chunk-AAUWFXOX.js → chunk-Q3AXXKDF.js} +3 -3
- package/dist/{chunk-VKXS2YGN.js → chunk-QHJR7IMX.js} +2 -2
- package/dist/chunk-QLZ46RCK.js +45 -0
- package/dist/{chunk-UHPMK6QZ.js → chunk-R3CZWFFC.js} +10 -2
- package/dist/{chunk-6XEYELCA.js → chunk-R4CBHKZ2.js} +1 -1
- package/dist/{chunk-5APCDDJZ.js → chunk-R522MWAR.js} +9 -9
- package/dist/chunk-RH4AH3YB.js +80 -0
- package/dist/{chunk-AMKSDKMK.js → chunk-S2WBS6BG.js} +22 -35
- package/dist/{chunk-WUKQVNLP.js → chunk-SEQIPGLU.js} +1 -1
- package/dist/{chunk-7WQRFSZI.js → chunk-SL6KQYDU.js} +26 -6
- package/dist/chunk-SLLLOOEI.js +103 -0
- package/dist/{chunk-5N4SG5NB.js → chunk-T35RCQFE.js} +3 -3
- package/dist/{chunk-7V6M3QUS.js → chunk-T3QUKNLI.js} +1 -1
- package/dist/{chunk-CW2UCKHS.js → chunk-TADAO3HV.js} +2 -2
- package/dist/{chunk-5DCCKHDY.js → chunk-TAMDAOCU.js} +109 -13
- package/dist/{chunk-ZXB56YR2.js → chunk-TFKCERAK.js} +101 -23
- package/dist/{chunk-RBYHJDAT.js → chunk-TQAZTRQ3.js} +3 -3
- package/dist/{chunk-OKGIOWOB.js → chunk-U6SUKSZR.js} +2 -2
- package/dist/{chunk-23QKEUF6.js → chunk-U73AC5AN.js} +34 -12
- package/dist/{chunk-PM6WSWVU.js → chunk-UBK7HK3J.js} +3 -3
- package/dist/{chunk-H37FSTF2.js → chunk-UBMZ3YQU.js} +1 -1
- package/dist/{chunk-JJUGI2YL.js → chunk-UCFC2AEI.js} +1 -1
- package/dist/{chunk-6IWLAQ7O.js → chunk-UCUOGVDX.js} +4 -0
- package/dist/{chunk-E7UCDSUE.js → chunk-UKLN57Q5.js} +2 -2
- package/dist/{chunk-ZYCLSEZT.js → chunk-ULIBLJ6W.js} +33 -11
- package/dist/{chunk-RLR6VVKV.js → chunk-UM3N6VND.js} +4 -4
- package/dist/{chunk-ZNUJFX7L.js → chunk-UQGSBM3U.js} +1 -1
- package/dist/{chunk-ZZXMB5F2.js → chunk-UZDF6FLJ.js} +1 -1
- package/dist/{chunk-LNOS24GV.js → chunk-V3WLC5TJ.js} +2 -95
- package/dist/{chunk-UXLO7VHX.js → chunk-VI4ATC6I.js} +1 -1
- package/dist/{chunk-77JP3LK4.js → chunk-VKJGHAZT.js} +92 -21
- package/dist/{chunk-7R73IAHU.js → chunk-VMTZ4RUW.js} +67 -150
- package/dist/{chunk-TGPQMMQP.js → chunk-VYQ7B7DI.js} +30 -17
- package/dist/{chunk-E2WEFZOR.js → chunk-W75GTHR3.js} +1 -1
- package/dist/{chunk-UKLF7F3Z.js → chunk-WJG344NC.js} +9 -9
- package/dist/{chunk-MBNIJXKI.js → chunk-WMEYJT4R.js} +18 -4
- package/dist/{chunk-R6FLELV6.js → chunk-XFTEX77S.js} +3 -3
- package/dist/{chunk-MDGYXUOV.js → chunk-XH7YL7JM.js} +1 -1
- package/dist/{chunk-JOO35RHR.js → chunk-XL5MFGMR.js} +3 -3
- package/dist/{chunk-OW5RZIDW.js → chunk-XNNECNDL.js} +95 -33
- package/dist/{chunk-5AHDQCTB.js → chunk-XXFKSJYA.js} +6 -6
- package/dist/{chunk-TGEPLJ66.js → chunk-XXOPG4BW.js} +3 -3
- package/dist/{chunk-PGLPUP37.js → chunk-XZ65ST2I.js} +1 -1
- package/dist/{chunk-3TTKAT6V.js → chunk-YKC7QDZH.js} +9 -4
- package/dist/{chunk-KXYFBBZR.js → chunk-YMP2QSOP.js} +20 -3
- package/dist/{chunk-TK4MI6F6.js → chunk-YSLGFPWX.js} +6 -6
- package/dist/{chunk-X2P43TB2.js → chunk-YTSXPJUQ.js} +1 -1
- package/dist/{chunk-HECXZGGZ.js → chunk-ZCERWHY2.js} +33 -35
- package/dist/{chunk-IVU3WN7S.js → chunk-ZG62LIK3.js} +74 -4
- package/dist/{chunk-GU62SNDH.js → chunk-ZGYNKA3O.js} +744 -111
- package/dist/{chunk-QMSEL5YS.js → chunk-ZIG7VPJV.js} +28 -76
- package/dist/{chunk-WZJVGA5I.js → chunk-ZL4AGWAH.js} +258 -13
- package/dist/{chunk-QR624DER.js → chunk-ZSODLMFV.js} +2 -2
- package/dist/{cleanup-graph-garbage-IPYDS5OX.js → cleanup-graph-garbage-DPJGO52H.js} +11 -10
- package/dist/{cloud-sync-command-JLNVG7H4.js → cloud-sync-command-JPNTT4OQ.js} +2 -2
- package/dist/{cloud-sync-db-init-JXUF6GI3.js → cloud-sync-db-init-V2LWIUQU.js} +1 -1
- package/dist/{cloud-sync-shutdown-Z4SBP6PL.js → cloud-sync-shutdown-BNALPWGX.js} +5 -4
- package/dist/{co-activation-74RDFTKS.js → co-activation-CMNSWS6B.js} +5 -4
- package/dist/{co-occurrence-CN3TBYVR.js → co-occurrence-WRI2NAN6.js} +9 -8
- package/dist/{code-context-index-D4MJ4VFX.js → code-context-index-NOJSHLPN.js} +12 -6
- package/dist/code-context-watcher-VZNZU3BO.js +118 -0
- package/dist/{codex-consolidation-PPXNBXCV.js → codex-consolidation-SH4UKFBQ.js} +2 -1
- package/dist/{conversation-entity-extractor-QGTLH4BP.js → conversation-entity-extractor-74252CAO.js} +4 -4
- package/dist/{conversation-wiki-populator-EBUZXYEU.js → conversation-wiki-populator-OS4C6W54.js} +1 -1
- package/dist/conversations-retention-C4BLKFEL.js +54 -0
- package/dist/coordinator-notice-MHUY7AQB.js +55 -0
- package/dist/{crdt-sync-7T4WCOKD.js → crdt-sync-B3JN6AIV.js} +1 -1
- package/dist/{crm-webhook-FTW3XZTO.js → crm-webhook-GYWQRFET.js} +2 -2
- package/dist/{cto-delegation-gate-SZCE34LB.js → cto-delegation-gate-LQHVLEMW.js} +29 -26
- package/dist/{daemon-auth-SSPY5ODS.js → daemon-auth-QZHEO7IQ.js} +3 -2
- package/dist/{daemon-orchestration-IGPHVNFR.js → daemon-orchestration-5HIQALZH.js} +36 -34
- package/dist/{daemon-ready-OT2VQLS7.js → daemon-ready-P2BR2XP5.js} +1 -1
- package/dist/{db-integrity-events-5DTASXJF.js → db-integrity-events-2DTFO37N.js} +3 -2
- package/dist/{db-restore-events-2FI4ZMKA.js → db-restore-events-G6NOQOVE.js} +2 -1
- package/dist/{destructive-data-guard-6I5MDFVD.js → destructive-data-guard-BVFWPPIS.js} +1 -1
- package/dist/doc-graph-extractor-PQHDHQPQ.js +367 -0
- package/dist/{documents-URULIXGM.js → documents-C4SSPJMC.js} +15 -13
- package/dist/{dreaming-VIZO3QDO.js → dreaming-XAO3FCBV.js} +33 -30
- package/dist/{employee-boot-brief-XLOG4ULP.js → employee-boot-brief-W4OHUMRQ.js} +37 -34
- package/dist/{exe-drift-TLQM3IHD.js → exe-drift-AG2KMKD5.js} +6 -5
- package/dist/{exe-export-7YWYWJHY.js → exe-export-IC5BT335.js} +17 -15
- package/dist/{exe-import-DW6VAUKW.js → exe-import-A35ZLDPG.js} +17 -15
- package/dist/{exe-key-TLJP2B4Y.js → exe-key-TCMJNYLA.js} +116 -112
- package/dist/{exe-org-LU46N36E.js → exe-org-JXCR3JYZ.js} +24 -23
- package/dist/{exe-snapshot-QHUZRS62.js → exe-snapshot-SV6SRIG6.js} +36 -33
- package/dist/{fast-db-init-SCTOOIUT.js → fast-db-init-L2RGKJWH.js} +1 -1
- package/dist/{founder-context-ZFZC4UHO.js → founder-context-D4HFIESJ.js} +4 -3
- package/dist/{founder-monitor-envelope-5KTKNL5G.js → founder-monitor-envelope-TFKRGCFE.js} +5 -4
- package/dist/{fts-integrity-LKAZEZJE.js → fts-integrity-4YB34KWX.js} +3 -2
- package/dist/gateway/index.js +19 -17
- package/dist/{git-main-guard-TN27QBAI.js → git-main-guard-VTW4N3CM.js} +7 -1
- package/dist/{git-staleness-GSGP344N.js → git-staleness-TN7CYGFG.js} +5 -4
- package/dist/{global-procedures-YAR7G4C6.js → global-procedures-YFDEIOG7.js} +7 -6
- package/dist/{graph-auto-extract-GNQS64F5.js → graph-auto-extract-3YR3TYRW.js} +9 -8
- package/dist/{graph-rag-RMSFLUOB.js → graph-rag-Z2KCJTPK.js} +6 -4
- package/dist/{hook-integrity-CF567MVN.js → hook-integrity-KGAV6ZC2.js} +14 -4
- package/dist/{hook-prefetch-36BK4F7U.js → hook-prefetch-K5DN3TOQ.js} +29 -26
- package/dist/hooks/bug-report-worker.js +34 -30
- package/dist/hooks/codex-stop-task-finalizer.js +36 -32
- package/dist/hooks/commit-complete.js +33 -30
- package/dist/hooks/error-recall.js +12 -11
- package/dist/hooks/exe-heartbeat-hook.js +8 -7
- package/dist/hooks/ingest-worker.js +23 -11
- package/dist/hooks/ingest.js +18 -17
- package/dist/hooks/instructions-loaded.js +10 -9
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +9 -8
- package/dist/hooks/post-compact.js +8 -7
- package/dist/hooks/post-tool-combined.js +26 -15
- package/dist/hooks/pre-compact.js +33 -30
- package/dist/hooks/pre-tool-use.js +404 -46
- package/dist/hooks/prompt-submit.js +57 -47
- package/dist/hooks/session-end.js +40 -41
- package/dist/hooks/session-start.js +21 -20
- package/dist/hooks/stop.js +40 -37
- package/dist/hooks/subagent-stop.js +38 -35
- package/dist/hooks/summary-worker.js +39 -36
- package/dist/hyde-MP4QNMU5.js +80 -0
- package/dist/index.js +44 -39
- package/dist/{installer-LUN4HQIC.js → installer-54HTN5RE.js} +8 -7
- package/dist/{installer-OC5VXNC7.js → installer-LK35OX6R.js} +8 -7
- package/dist/{installer-MPRFUQJE.js → installer-LLWKZI2S.js} +8 -7
- package/dist/intercom-ack-VCW755TN.js +13 -0
- package/dist/{intercom-queue-6DZ7BANV.js → intercom-queue-5NOT2RKI.js} +28 -25
- package/dist/{key-backup-status-6L2ARCXW.js → key-backup-status-LQPINQ3W.js} +2 -1
- package/dist/lib/agent-config.js +3 -2
- package/dist/lib/cloud-sync.js +26 -20
- package/dist/lib/config.js +2 -1
- package/dist/lib/consolidation.js +17 -10
- package/dist/lib/database.js +7 -4
- package/dist/lib/db-backup.js +17 -2
- package/dist/lib/db-daemon-client.js +8 -6
- package/dist/lib/db-write-worker-client.js +3 -1
- package/dist/lib/db-write-worker.js +20 -3
- package/dist/lib/db.js +7 -4
- package/dist/lib/device-registry.js +3 -2
- package/dist/lib/embed-worker.js +2 -1
- package/dist/lib/embedder.js +8 -6
- package/dist/lib/employee-templates.js +8 -7
- package/dist/lib/employees.js +5 -4
- package/dist/lib/exe-daemon-client.js +7 -5
- package/dist/lib/exe-daemon.js +467 -221
- package/dist/lib/hybrid-search.js +11 -8
- package/dist/lib/identity.js +5 -4
- package/dist/lib/license.js +4 -3
- package/dist/lib/messaging.js +29 -26
- package/dist/lib/post-tool-memory.js +16 -2
- package/dist/lib/registry-proxy.js +3 -1
- package/dist/lib/reminders.js +6 -5
- package/dist/lib/schedules.js +9 -8
- package/dist/lib/session-registry.js +7 -6
- package/dist/lib/skill-learning.js +16 -14
- package/dist/lib/stack-invariants.js +17 -1
- package/dist/lib/status-brief.js +5 -4
- package/dist/lib/store.js +10 -7
- package/dist/lib/task-router.js +6 -5
- package/dist/lib/tasks.js +31 -27
- package/dist/lib/tmux-routing.js +40 -25
- package/dist/lib/tmux-status.js +3 -1
- package/dist/lib/tmux-transport.js +2 -1
- package/dist/lib/token-spend.js +6 -5
- package/dist/lib/transport.js +3 -2
- package/dist/{license-gate-ESER24PJ.js → license-gate-JVMB6OFD.js} +5 -4
- package/dist/{license-sync-JVG5KNIY.js → license-sync-5VYS2F2W.js} +4 -3
- package/dist/mcp/register-tools.js +113 -109
- package/dist/mcp/server.js +118 -114
- package/dist/mcp/tools/complete-reminder.js +7 -6
- package/dist/mcp/tools/create-reminder.js +7 -6
- package/dist/mcp/tools/create-task.js +34 -30
- package/dist/mcp/tools/deactivate-behavior.js +18 -16
- package/dist/mcp/tools/list-reminders.js +7 -6
- package/dist/mcp/tools/list-tasks.js +34 -30
- package/dist/mcp/tools/send-message.js +32 -29
- package/dist/mcp/tools/update-task.js +32 -28
- package/dist/mcp-child-registry-OTG4MWO7.js +25 -0
- package/dist/{mcp-http-config-6K6IKH5F.js → mcp-http-config-DQWL7U2Z.js} +6 -5
- package/dist/{mcp-session-identity-LRC6WJSD.js → mcp-session-identity-277GASTQ.js} +28 -25
- package/dist/{memory-cards-V3OZHIYP.js → memory-cards-3S2ZQPR7.js} +17 -8
- package/dist/{memory-graph-extractor-JC2Z64L4.js → memory-graph-extractor-A6DFEFIN.js} +10 -9
- package/dist/{memory-poisoning-defense-YM4QJHCX.js → memory-poisoning-defense-ZVP4H6DY.js} +5 -4
- package/dist/{memory-pressure-watchdog-6F6KEQHN.js → memory-pressure-watchdog-6W5F6R7H.js} +29 -26
- package/dist/{memory-queue-QJNWKWKG.js → memory-queue-YF7IDSFY.js} +3 -2
- package/dist/{memory-queue-client-COA4ABEV.js → memory-queue-client-ADSDP6OX.js} +9 -7
- package/dist/{memory-reflection-QXHJPYPC.js → memory-reflection-BKB2YOE6.js} +52 -6
- package/dist/{monitor-grants-BW2WL4IU.js → monitor-grants-EV747HMW.js} +4 -3
- package/dist/{notification-ledger-6QRLQW4Q.js → notification-ledger-CLGM7ODF.js} +30 -27
- package/dist/{notifications-7B6D7Y5C.js → notifications-MACUZPYP.js} +28 -25
- package/dist/{oauth-server-TZFNQAFS.js → oauth-server-AYM37SQ4.js} +25 -4
- package/dist/{orchestration-events-GY5VP5LU.js → orchestration-events-N7LYMUGA.js} +6 -5
- package/dist/{orchestration-phase-UDS24CVQ.js → orchestration-phase-T2WD45UA.js} +3 -2
- package/dist/{orchestrator-JVPVOYWA.js → orchestrator-4X24EWHV.js} +30 -27
- package/dist/{org-brief-session-GRV5R5E3.js → org-brief-session-FZOFMO5U.js} +13 -12
- package/dist/{org-consent-policy-3FHHSYXV.js → org-consent-policy-O5E6HXBL.js} +1 -1
- package/dist/{org-join-BY4PV6UO.js → org-join-POWUG25F.js} +8 -7
- package/dist/{org-key-admin-WSCPT2CZ.js → org-key-admin-E7EMDOZZ.js} +9 -8
- package/dist/{org-key-pin-5WUSPGVN.js → org-key-pin-WHWHVWUO.js} +4 -3
- package/dist/{org-membership-ESALTLLN.js → org-membership-WRT2IHJK.js} +5 -4
- package/dist/{org-partner-config-YKHPDPZR.js → org-partner-config-B7T4CL2T.js} +7 -6
- package/dist/{org-partner-runtime-UJDGECZ4.js → org-partner-runtime-FODONVTM.js} +13 -12
- package/dist/{org-row-visibility-V5DXIHTE.js → org-row-visibility-VX4AVV5Q.js} +1 -1
- package/dist/{pipeline-router-YY5FQKTY.js → pipeline-router-6GGT2ZW3.js} +6 -5
- package/dist/{plan-limits-OVX6SN6B.js → plan-limits-FUN76LYY.js} +8 -7
- package/dist/{platform-procedures-I57ITMDC.js → platform-procedures-7YSCLF4Z.js} +1 -1
- package/dist/{postinstall-failure-B2JHNFPM.js → postinstall-failure-O6TSSNJB.js} +3 -2
- package/dist/{project-boot-LXLU2J32.js → project-boot-3Q65LCIP.js} +2 -1
- package/dist/project-name-LJVFMYTQ.js +30 -0
- package/dist/{projection-worker-D2472IOD.js → projection-worker-4OANGP5K.js} +5 -4
- package/dist/{prospective-memory-JXO2A6PL.js → prospective-memory-KR3P4T6N.js} +5 -4
- package/dist/{push-notifications-HR3FZRDI.js → push-notifications-NCZLH6DI.js} +29 -26
- package/dist/ref-provenance-gate-M4AQO4OT.js +269 -0
- package/dist/{reproject-worktree-memories-OSS3PGRF.js → reproject-worktree-memories-PWYKPB2U.js} +106 -23
- package/dist/{reranker-IMZRPYJ2.js → reranker-6V3C2AO4.js} +3 -2
- package/dist/resolve-image-labels-ZI6UBW5W.js +15 -0
- package/dist/{retrieval-health-W7OD44FE.js → retrieval-health-5D7O6VH6.js} +4 -3
- package/dist/{review-polling-2INP7H6M.js → review-polling-QW3LJ4KN.js} +29 -26
- package/dist/runtime/index.js +38 -34
- package/dist/{session-events-G4XUPVWV.js → session-events-T45SSTMF.js} +31 -26
- package/dist/{session-kill-telemetry-W7MHWJTQ.js → session-kill-telemetry-QSPVJGBF.js} +29 -26
- package/dist/{session-mcp-config-F7KATWOF.js → session-mcp-config-SC5BLWZG.js} +3 -2
- package/dist/{session-scope-LG2J4EMQ.js → session-scope-KRWE54C4.js} +28 -25
- package/dist/{setup-wizard-YQJI3SVM.js → setup-wizard-GP3TBTPF.js} +5 -4
- package/dist/{shard-manager-UROHZE46.js → shard-manager-OE36A4MY.js} +3 -2
- package/dist/{skill-refinement-RA37U756.js → skill-refinement-C7JTMLJG.js} +6 -5
- package/dist/stack-generate-manifest-MFMDWRUP.js +810 -0
- package/dist/{stack-promote-IYBRXHTA.js → stack-promote-EKSCYY63.js} +8 -6
- package/dist/{stack-release-OXWLVVG6.js → stack-release-2GZAAFO4.js} +8 -6
- package/dist/{stack-update-2CZEROPK.js → stack-update-J6JXSTAZ.js} +51 -5
- package/dist/{steward-gate-LTNFB3FY.js → steward-gate-BFCCMCSW.js} +6 -5
- package/dist/{subagent-brief-injection-OHLWLECQ.js → subagent-brief-injection-ED36PLYY.js} +44 -36
- package/dist/{subagent-spawn-ledger-USYZXU3M.js → subagent-spawn-ledger-E6U3OY6Z.js} +3 -2
- package/dist/{supervisor-handoff-CSJQMI53.js → supervisor-handoff-SGLEPOCY.js} +12 -3
- package/dist/{support-inbox-4KCEPAZQ.js → support-inbox-YW47SYJF.js} +20 -5
- package/dist/{task-enforcement-LGXWXGVZ.js → task-enforcement-CECTQX4U.js} +29 -26
- package/dist/{task-request-inbox-WHCOSUCP.js → task-request-inbox-Q5T4N5K7.js} +1 -1
- package/dist/{task-scope-KXF7Y6KA.js → task-scope-ERVEUEYU.js} +28 -25
- package/dist/{tasks-crud-5EM55WRZ.js → tasks-crud-ZRQNJXQ2.js} +28 -25
- package/dist/{tasks-notify-VFMAURTN.js → tasks-notify-MIZH4C2O.js} +29 -26
- package/dist/{tasks-review-MHGMBHUZ.js → tasks-review-Z7J2P6DG.js} +28 -25
- package/dist/{telemetry-upload-6NRTN7QJ.js → telemetry-upload-LVQUQYFP.js} +10 -9
- package/dist/{token-budget-LZPOYTRP.js → token-budget-BU4NOVZF.js} +6 -5
- package/dist/{tool-capability-index-ED5OAPMW.js → tool-capability-index-7F42MOJT.js} +1 -1
- package/dist/{tool-gates-7PLIOLAL.js → tool-gates-JWVSAYTW.js} +1 -1
- package/dist/{tool-gates-2OZY3GZM.js → tool-gates-VXITVRFQ.js} +1 -1
- package/dist/{tool-telemetry-ZX7VSAXK.js → tool-telemetry-O27EVMBR.js} +1 -1
- package/dist/tui/App.js +43 -40
- package/dist/{tui-data-CC5POSUV.js → tui-data-TPWWBIUQ.js} +28 -25
- package/dist/{update-support-KH6NSQON.js → update-support-F2F5537B.js} +22 -20
- package/dist/{whatsapp-QW3X7OCN.js → whatsapp-YM4A2CSK.js} +3 -1
- package/dist/{work-claims-MNK7PEPW.js → work-claims-B73X5NE7.js} +6 -5
- package/dist/{work-state-heartbeat-YEWT5NMZ.js → work-state-heartbeat-P4YX6E2R.js} +1 -1
- package/dist/{worker-gate-BOQSIU2Z.js → worker-gate-BEEIIVWA.js} +3 -2
- package/dist/{workflow-engine-MUUD7ZEX.js → workflow-engine-5X46PFCW.js} +4 -2
- package/dist/{worktree-GOGT2LZP.js → worktree-W47CIMJ6.js} +9 -6
- package/dist/worktree-ownership-guard-OUWJROW2.js +88 -0
- package/dist/{worktree-sweep-46VWPVQT.js → worktree-sweep-BNBD4RFX.js} +8 -7
- package/package.json +14 -5
- package/release-notes.json +5 -5
- package/src/commands/exe/call.md +1 -1
- package/stack.release.json +6 -0
- package/dist/chunk-KZXMP6JG.js +0 -319
- package/dist/chunk-TCTED52S.js +0 -120
- package/dist/chunk-W2IRQJ6R.js +0 -67
- package/dist/doc-graph-extractor-VPTRIEKN.js +0 -149
- package/dist/project-name-ILJTETUE.js +0 -14
- /package/dist/{chunk-3Y5THOU6.js → chunk-6WIFPD2P.js} +0 -0
- /package/dist/{chunk-7XGXRD22.js → chunk-AISULNGL.js} +0 -0
- /package/dist/{chunk-3F2UB4IQ.js → chunk-DN4YVV4Z.js} +0 -0
- /package/dist/{chunk-WV3TOOL7.js → chunk-KQ6RJWRW.js} +0 -0
- /package/dist/{chunk-HR2R2QER.js → chunk-M4IRPXSZ.js} +0 -0
- /package/dist/{chunk-ORA5BWCV.js → chunk-NRG7KZIP.js} +0 -0
- /package/dist/{chunk-7UTJA6HF.js → chunk-VZAFWPAY.js} +0 -0
- /package/dist/{chunk-VJSDGDNS.js → chunk-WSQASFLP.js} +0 -0
- /package/dist/{chunk-FZQWVQJG.js → chunk-YO4BO2CL.js} +0 -0
- /package/dist/{core-memory-6WBNT2HL.js → core-memory-7I7RE2SJ.js} +0 -0
- /package/dist/{entity-boost-MT336PI3.js → entity-boost-3UWGXG5O.js} +0 -0
- /package/dist/{memory-isolation-EJ45IXBH.js → memory-isolation-2TUZ7Z4K.js} +0 -0
- /package/dist/{message-queue-client-MVBTYCSV.js → message-queue-client-XQN7QABL.js} +0 -0
- /package/dist/{webhook-pipe-UQSEHFPO.js → webhook-pipe-W2FVXY7M.js} +0 -0
- /package/dist/{wiki-acl-WXRJGZ5Q.js → wiki-acl-IBQLLBTS.js} +0 -0
- /package/dist/{wiki-client-AXNM5FWY.js → wiki-client-W65IOSWF.js} +0 -0
|
@@ -9,17 +9,17 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
buildClaudeHttpMcpEntry,
|
|
11
11
|
buildClaudeStdioProxyMcpEntry
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NKETJCB5.js";
|
|
13
13
|
import {
|
|
14
14
|
ensureAllAgentSymlinks
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-6RKKVPYF.js";
|
|
16
16
|
import {
|
|
17
17
|
MCP_LEGACY_KEY,
|
|
18
18
|
MCP_PRIMARY_KEY
|
|
19
19
|
} from "./chunk-HYZV25LY.js";
|
|
20
20
|
import {
|
|
21
21
|
loadConfigSync
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-ZIG7VPJV.js";
|
|
23
23
|
|
|
24
24
|
// src/adapters/claude/installer.ts
|
|
25
25
|
import { readFile, writeFile, mkdir, readdir, rm } from "fs/promises";
|
|
@@ -942,7 +942,7 @@ async function runInstaller(homeDir) {
|
|
|
942
942
|
);
|
|
943
943
|
}
|
|
944
944
|
try {
|
|
945
|
-
const { generateAgentDefs, summarizeAgentDefResults } = await import("./agent-defs-generator-
|
|
945
|
+
const { generateAgentDefs, summarizeAgentDefResults } = await import("./agent-defs-generator-ZWI6DXOE.js");
|
|
946
946
|
const defResults = generateAgentDefs({ homeDir: resolvedHome });
|
|
947
947
|
process.stderr.write(`Agent definitions: ${summarizeAgentDefResults(defResults)}
|
|
948
948
|
`);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
withScopedReadWindow
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DJOIMFKV.js";
|
|
4
4
|
import {
|
|
5
5
|
requireOrgPartnerBinding,
|
|
6
6
|
resolvePartnerIdentities
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4YLBKEL5.js";
|
|
8
8
|
import {
|
|
9
9
|
allocateOutboundSeq,
|
|
10
10
|
approveBriefManually,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
sealMailboxEnvelope,
|
|
23
23
|
unrecordedText,
|
|
24
24
|
verifyManifest
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-IN6CAM4F.js";
|
|
26
26
|
import {
|
|
27
27
|
queueMailboxDeposit
|
|
28
28
|
} from "./chunk-4LWBC7CM.js";
|
|
@@ -132,6 +132,12 @@ var PLATFORM_PROCEDURES = [
|
|
|
132
132
|
priority: "p1",
|
|
133
133
|
content: "Do NOT query bug/feature status during startup; the boot script owns the startup brief. When the founder asks about filed bugs or shipped features after boot, call support(action='list_my_bugs') and support(action='list_my_features'). If any bug has status 'closed' with fixed_version, tell the founder: 'N bug fix(es) available \u2014 run exe-os update to get vX.Y.Z'. If any feature has status 'shipped' with shipped_version, tell founder: 'N feature(s) shipped \u2014 run exe-os update to get vX.Y.Z'. Skip silently if the support tool is unavailable."
|
|
134
134
|
},
|
|
135
|
+
{
|
|
136
|
+
title: "Link fix PRs to bugs at PR-open time",
|
|
137
|
+
domain: "support",
|
|
138
|
+
priority: "p1",
|
|
139
|
+
content: "When you open a PR that addresses a filed bug, immediately comment the linkage onto that bug: support(action='add_comment', id=<bug-id>, comment='Fix PR opened: <repo>#<PR number> (<branch>)'). Do this the moment the PR exists \u2014 before merge, not after. The bug stays open until the fix lands, but the bug\u2194PR linkage must be recorded at PR-open time so triage and other agents can see which PR owns which bug without guessing. Also reference the bug ID in the PR body for the reverse link."
|
|
140
|
+
},
|
|
135
141
|
// --- Tool guidance ---
|
|
136
142
|
{
|
|
137
143
|
title: "How to use company_actions \u2014 execute business actions through gateway connectors",
|
|
@@ -247,12 +253,6 @@ var PLATFORM_PROCEDURES = [
|
|
|
247
253
|
priority: "p0",
|
|
248
254
|
content: "Before broad repo exploration, agents MUST use code_context and graph MCP tools instead of manual grep/read. code_context: action=search (multi-language code/doc search), action=trace (symbol imports/dependents), action=blast_radius (impact analysis), action=index/stats (refresh/check index). graph: action=query_relationships, action=hot_entities, action=entity_neighbors, action=stats. NEVER brute-force grep without checking code_context first. CLI parity: exe-os code-context init|index|status|stats|search|doctor. Keep code_context separate from durable memory \u2014 promote only validated decisions/lessons."
|
|
249
255
|
},
|
|
250
|
-
{
|
|
251
|
-
title: "Retrieval architecture \u2014 three pillars, embeddings optional",
|
|
252
|
-
domain: "tool-use",
|
|
253
|
-
priority: "p1",
|
|
254
|
-
content: "THREE equal pillars: (1) Keyword (FTS5), (2) Graph (entity relationships), (3) Vector (embedding similarity). All run in parallel; results merge via Reciprocal Rank Fusion. Keyword + Graph are FIRST-CLASS, not fallbacks. 8-16GB machines without embeddings = still excellent. 8GB: FTS+Graph only. 16GB: +optional 0.6B model. 32+GB: full hybrid with 4B model. Degrades gracefully. CLaRa (query expansion) runs automatically on every recall \u2014 LLM infers related terms, closing the gap between keyword and semantic search WITHOUT embeddings. No config needed. BENCHMARK: FTS+Graph (42.25%) BEATS full hybrid (41.75%) on BEAM 100K. DOCUMENT-AWARE: For ingested documents (PDFs, exports, wiki imports), use retrieval_mode='document_aware' for neighbor chunk expansion, project affinity boost, and scoring diagnostics. For quick fact lookups on agent memories, default recall is better."
|
|
255
|
-
},
|
|
256
256
|
{
|
|
257
257
|
title: "Commit discipline \u2014 commit after every completed track, never batch",
|
|
258
258
|
domain: "workflow",
|
|
@@ -326,6 +326,18 @@ var PLATFORM_PROCEDURES = [
|
|
|
326
326
|
}
|
|
327
327
|
];
|
|
328
328
|
var PLATFORM_REFERENCE_PROCEDURES = [
|
|
329
|
+
// Demoted from the always-injected block (2026-08-19). Reference-shaped:
|
|
330
|
+
// hardware tiers, benchmark percentages and architecture prose that no
|
|
331
|
+
// agent has to act on mid-task. The actionable half already lives inline
|
|
332
|
+
// as "Code context + graph first — MANDATORY". Demoted because the
|
|
333
|
+
// injected set had reached 26,969 of its 27,000-char cap, which is
|
|
334
|
+
// exactly the pressure that cap exists to create.
|
|
335
|
+
{
|
|
336
|
+
title: "Retrieval architecture \u2014 three pillars, embeddings optional",
|
|
337
|
+
domain: "tool-use",
|
|
338
|
+
priority: "p1",
|
|
339
|
+
content: "THREE equal pillars: (1) Keyword (FTS5), (2) Graph (entity relationships), (3) Vector (embedding similarity). All run in parallel; results merge via Reciprocal Rank Fusion. Keyword + Graph are FIRST-CLASS, not fallbacks. 8-16GB machines without embeddings = still excellent. 8GB: FTS+Graph only. 16GB: +optional 0.6B model. 32+GB: full hybrid with 4B model. Degrades gracefully. CLaRa (query expansion) runs automatically on every recall \u2014 LLM infers related terms, closing the gap between keyword and semantic search WITHOUT embeddings. No config needed. BENCHMARK: FTS+Graph (42.25%) BEATS full hybrid (41.75%) on BEAM 100K. DOCUMENT-AWARE: For ingested documents (PDFs, exports, wiki imports), use retrieval_mode='document_aware' for neighbor chunk expansion, project affinity boost, and scoring diagnostics. For quick fact lookups on agent memories, default recall is better."
|
|
340
|
+
},
|
|
329
341
|
{
|
|
330
342
|
title: "Use the diagnostics dashboards \u2014 never grep daemon logs",
|
|
331
343
|
domain: "workflow",
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
InviteError,
|
|
3
3
|
resolveAuth,
|
|
4
4
|
resolveEndpoint
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-T35RCQFE.js";
|
|
6
6
|
import {
|
|
7
7
|
resolvePartnerIdentities
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-4YLBKEL5.js";
|
|
9
9
|
import {
|
|
10
10
|
orgKeyFingerprintDisplay
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UBMZ3YQU.js";
|
|
12
12
|
import {
|
|
13
13
|
asOrgBillablePlan
|
|
14
14
|
} from "./chunk-X2X3IGZU.js";
|
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
loadLicense,
|
|
10
10
|
readCachedLicenseToken
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-L6RXG36J.js";
|
|
12
12
|
import {
|
|
13
13
|
EXE_AI_DIR,
|
|
14
14
|
loadConfig
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZIG7VPJV.js";
|
|
16
16
|
|
|
17
17
|
// src/bin/exe-support.ts
|
|
18
18
|
import { mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/lib/budget-fallback.ts
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
function sessionCacheDir() {
|
|
5
|
+
const base = process.env.EXE_OS_DIR ?? path.join(process.env.HOME ?? "", ".exe-os");
|
|
6
|
+
return path.join(base, "session-cache");
|
|
7
|
+
}
|
|
8
|
+
function markerPath(taskId) {
|
|
9
|
+
const safe = String(taskId).replace(/[^a-zA-Z0-9_-]/g, "");
|
|
10
|
+
return path.join(sessionCacheDir(), `budget-fallback-${safe}.json`);
|
|
11
|
+
}
|
|
12
|
+
function setBudgetFallback(marker) {
|
|
13
|
+
if (!marker.taskId || !marker.fallbackModel) return;
|
|
14
|
+
try {
|
|
15
|
+
const dir = sessionCacheDir();
|
|
16
|
+
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
17
|
+
writeFileSync(markerPath(marker.taskId), JSON.stringify(marker), { mode: 384 });
|
|
18
|
+
} catch {
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function getBudgetFallback(taskId) {
|
|
22
|
+
if (!taskId) return null;
|
|
23
|
+
try {
|
|
24
|
+
const file = markerPath(taskId);
|
|
25
|
+
if (!existsSync(file)) return null;
|
|
26
|
+
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
27
|
+
return parsed && parsed.taskId && parsed.fallbackModel ? parsed : null;
|
|
28
|
+
} catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function clearBudgetFallback(taskId) {
|
|
33
|
+
if (!taskId) return;
|
|
34
|
+
try {
|
|
35
|
+
const file = markerPath(taskId);
|
|
36
|
+
if (existsSync(file)) unlinkSync(file);
|
|
37
|
+
} catch {
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
setBudgetFallback,
|
|
43
|
+
getBudgetFallback,
|
|
44
|
+
clearBudgetFallback
|
|
45
|
+
};
|
|
@@ -36,8 +36,8 @@ function rejectAllPending(reason) {
|
|
|
36
36
|
function isWriteWorkerEnabled(env = process.env) {
|
|
37
37
|
return env.EXE_WRITE_WORKER === "1";
|
|
38
38
|
}
|
|
39
|
-
function spawnDbWriteWorker(dbPath, encryptionKey) {
|
|
40
|
-
if (!isWriteWorkerEnabled()) return;
|
|
39
|
+
function spawnDbWriteWorker(dbPath, encryptionKey, opts) {
|
|
40
|
+
if (!opts?.forMaintenance && !isWriteWorkerEnabled()) return;
|
|
41
41
|
if (_worker) return;
|
|
42
42
|
if (_spawnAttempts >= MAX_SPAWN_ATTEMPTS) return;
|
|
43
43
|
_spawnAttempts++;
|
|
@@ -108,6 +108,13 @@ async function sweepSessionEventsRetentionInWorker(retentionDays) {
|
|
|
108
108
|
});
|
|
109
109
|
return { deleted: Number(result.deleted ?? 0) };
|
|
110
110
|
}
|
|
111
|
+
async function sweepConversationsRetentionInWorker(retentionDays) {
|
|
112
|
+
const result = await sendWriteWorkerRequest({
|
|
113
|
+
type: "sweep-conversations-retention",
|
|
114
|
+
retentionDays
|
|
115
|
+
});
|
|
116
|
+
return { deleted: Number(result.deleted ?? 0) };
|
|
117
|
+
}
|
|
111
118
|
function sendWriteWorkerRequest(payload) {
|
|
112
119
|
if (!_worker || !_workerReady) {
|
|
113
120
|
return Promise.reject(new Error("db write worker not available"));
|
|
@@ -150,6 +157,7 @@ export {
|
|
|
150
157
|
isDbWriteWorkerReady,
|
|
151
158
|
writeMemoryInWorker,
|
|
152
159
|
sweepSessionEventsRetentionInWorker,
|
|
160
|
+
sweepConversationsRetentionInWorker,
|
|
153
161
|
_getDbWriteWorkerForTests,
|
|
154
162
|
disposeDbWriteWorker
|
|
155
163
|
};
|
|
@@ -5,17 +5,17 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
getBrandAsciiArt,
|
|
7
7
|
getBrandName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7RI2CNXJ.js";
|
|
9
9
|
import {
|
|
10
10
|
FREE_TIER_BACKUP_DISCLOSURE
|
|
11
11
|
} from "./chunk-SO7KTH3Q.js";
|
|
12
|
+
import {
|
|
13
|
+
RUNTIME_TABLE
|
|
14
|
+
} from "./chunk-WNBZJSQT.js";
|
|
12
15
|
import {
|
|
13
16
|
getMasterKey,
|
|
14
17
|
setMasterKey
|
|
15
18
|
} from "./chunk-HPXFKUGU.js";
|
|
16
|
-
import {
|
|
17
|
-
RUNTIME_TABLE
|
|
18
|
-
} from "./chunk-WNBZJSQT.js";
|
|
19
19
|
import {
|
|
20
20
|
WINDOWS_UNSUPPORTED_EXIT,
|
|
21
21
|
isWSL,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
MODELS_DIR,
|
|
28
28
|
loadConfig,
|
|
29
29
|
saveConfig
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-ZIG7VPJV.js";
|
|
31
31
|
import {
|
|
32
32
|
atomicWriteJsonSync,
|
|
33
33
|
atomicWriteSync
|
|
@@ -219,7 +219,7 @@ function clearSetupState() {
|
|
|
219
219
|
}
|
|
220
220
|
async function probeDaemonHealthAfterInstall() {
|
|
221
221
|
try {
|
|
222
|
-
const { waitForDaemonReady } = await import("./daemon-ready-
|
|
222
|
+
const { waitForDaemonReady } = await import("./daemon-ready-P2BR2XP5.js");
|
|
223
223
|
return await waitForDaemonReady(4, 500);
|
|
224
224
|
} catch {
|
|
225
225
|
return false;
|
|
@@ -771,7 +771,7 @@ async function runSetupWizard(opts = {}) {
|
|
|
771
771
|
log(" The old directory will not be modified or deleted.");
|
|
772
772
|
log("");
|
|
773
773
|
}
|
|
774
|
-
const { getKeyBackupStatus, markKeyBackupConfirmed } = await import("./key-backup-status-
|
|
774
|
+
const { getKeyBackupStatus, markKeyBackupConfirmed } = await import("./key-backup-status-LQPINQ3W.js");
|
|
775
775
|
const keyBackupBeforeStep1 = getKeyBackupStatus();
|
|
776
776
|
const mustRunKeyCeremony = !state.completedSteps.includes(1) || !keyBackupBeforeStep1.exists;
|
|
777
777
|
if (mustRunKeyCeremony) {
|
|
@@ -1043,7 +1043,7 @@ async function runSetupWizard(opts = {}) {
|
|
|
1043
1043
|
} else if (cloudDeclined) {
|
|
1044
1044
|
delete config.cloud;
|
|
1045
1045
|
}
|
|
1046
|
-
const { applyDefaultOrchestrationPhase } = await import("./orchestration-phase-
|
|
1046
|
+
const { applyDefaultOrchestrationPhase } = await import("./orchestration-phase-T2WD45UA.js");
|
|
1047
1047
|
applyDefaultOrchestrationPhase(config);
|
|
1048
1048
|
await saveConfig(config);
|
|
1049
1049
|
log("");
|
|
@@ -1425,7 +1425,7 @@ async function runSetupWizard(opts = {}) {
|
|
|
1425
1425
|
log("");
|
|
1426
1426
|
unlockExecutives = await askYesNo("Unlock Phase 2 executives now? (y/N): ", void 0, false);
|
|
1427
1427
|
}
|
|
1428
|
-
const { setOrchestrationPhase } = await import("./orchestration-phase-
|
|
1428
|
+
const { setOrchestrationPhase } = await import("./orchestration-phase-T2WD45UA.js");
|
|
1429
1429
|
if (!unlockExecutives) {
|
|
1430
1430
|
await setOrchestrationPhase("phase_1_coo", "setup-wizard");
|
|
1431
1431
|
log("");
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// src/lib/hermetic-guard.ts
|
|
2
|
+
import { realpathSync } from "fs";
|
|
3
|
+
import os from "os";
|
|
4
|
+
import path from "path";
|
|
5
|
+
var SHARED_TMP_BASES = ["/tmp", os.tmpdir()];
|
|
6
|
+
function isHermeticTestEnv() {
|
|
7
|
+
return process.env.EXE_TEST_HERMETIC === "1";
|
|
8
|
+
}
|
|
9
|
+
function harnessRealHome() {
|
|
10
|
+
const v = process.env.EXE_HERMETIC_REAL_HOME ?? process.env.EXE_REAL_HOME;
|
|
11
|
+
return v && v.trim() ? v : null;
|
|
12
|
+
}
|
|
13
|
+
function harnessSandboxRoot() {
|
|
14
|
+
const v = process.env.EXE_HERMETIC_SANDBOX_ROOT;
|
|
15
|
+
return v && v.trim() ? v : null;
|
|
16
|
+
}
|
|
17
|
+
function canonical(p) {
|
|
18
|
+
let dir = path.resolve(p);
|
|
19
|
+
const tail = [];
|
|
20
|
+
for (; ; ) {
|
|
21
|
+
try {
|
|
22
|
+
return path.join(realpathSync(dir), ...tail);
|
|
23
|
+
} catch {
|
|
24
|
+
}
|
|
25
|
+
const parent = path.dirname(dir);
|
|
26
|
+
if (parent === dir) return path.resolve(p);
|
|
27
|
+
tail.unshift(path.basename(dir));
|
|
28
|
+
dir = parent;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function isInside(candidate, base) {
|
|
32
|
+
const rel = path.relative(canonical(base), canonical(candidate));
|
|
33
|
+
return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
34
|
+
}
|
|
35
|
+
function realInstallDirs(realHome) {
|
|
36
|
+
return [path.join(realHome, ".exe-os"), path.join(realHome, ".exe-mem")];
|
|
37
|
+
}
|
|
38
|
+
function assertHermeticPath(what, resolved) {
|
|
39
|
+
if (!isHermeticTestEnv()) return;
|
|
40
|
+
const realHome = harnessRealHome();
|
|
41
|
+
if (!realHome) return;
|
|
42
|
+
const sandboxRoot = harnessSandboxRoot();
|
|
43
|
+
if (sandboxRoot && isInside(resolved, sandboxRoot)) return;
|
|
44
|
+
const breached = realInstallDirs(realHome).find((dir) => isInside(resolved, dir));
|
|
45
|
+
if (!breached) return;
|
|
46
|
+
throw new Error(
|
|
47
|
+
`[hermetic-guard] Test isolation breach: ${what} resolved to ${resolved}, which is the REAL exe-os install at ${breached}.
|
|
48
|
+
This process runs under the hermetic test harness (EXE_TEST_HERMETIC=1) but is operating on the LIVE install. Real product code reached from here can and does kill the production daemon (bug 2b7072a7 / 7a915790).
|
|
49
|
+
Cause is almost always a spawn that overrode the sandbox: an explicit env: {...} that dropped EXE_OS_DIR/EXE_MEM_DIR, or HOME: os.homedir() captured outside the sandbox.
|
|
50
|
+
Fix: inherit ...process.env, or use the hermetic HOME (process.env.HOME), never os.homedir().`
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
function assertHermeticTmux() {
|
|
54
|
+
if (!isHermeticTestEnv()) return;
|
|
55
|
+
const realHome = harnessRealHome();
|
|
56
|
+
if (!realHome) return;
|
|
57
|
+
if (process.env.TMUX) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`[hermetic-guard] Test isolation breach: $TMUX is set (${process.env.TMUX}) under the hermetic test harness. A tmux client follows $TMUX to the LIVE tmux server regardless of -L, so this invocation would create, signal, or reap real agent sessions (bug 2b7072a7).
|
|
60
|
+
Fix: delete TMUX/TMUX_PANE from the child env \u2014 the harness does this for the worker itself.`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
const tmpdir = process.env.TMUX_TMPDIR;
|
|
64
|
+
const sandboxRoot = harnessSandboxRoot();
|
|
65
|
+
const recordedTmuxDir = process.env.EXE_HERMETIC_TMUX_DIR;
|
|
66
|
+
const isOwnScratch = !!tmpdir && (!!recordedTmuxDir && isInside(tmpdir, recordedTmuxDir) || !!sandboxRoot && isInside(tmpdir, sandboxRoot) || // No harness breadcrumbs (a child spawned without them): fall back to the
|
|
67
|
+
// property that matters — it must not be a bare shared base.
|
|
68
|
+
!recordedTmuxDir && !sandboxRoot && !SHARED_TMP_BASES.some((base) => canonical(tmpdir) === canonical(base)));
|
|
69
|
+
if (!isOwnScratch) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
`[hermetic-guard] Test isolation breach: TMUX_TMPDIR is ${tmpdir ? tmpdir : "unset"} under the hermetic test harness, so tmux would use a SHARED ${path.join("<base>", "tmux-<uid>")} server \u2014 the live one (bug 2b7072a7).
|
|
72
|
+
Fix: point TMUX_TMPDIR at a per-run scratch directory, as tests/setup/hermetic-env.ts does.`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
assertHermeticPath,
|
|
79
|
+
assertHermeticTmux
|
|
80
|
+
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
+
GIT_CRYPT_SMUDGE_BYPASS_ARGS,
|
|
2
3
|
getGitRoot,
|
|
3
4
|
getGitRootAsync,
|
|
4
5
|
isWorktreeDirty,
|
|
5
6
|
isWorktreeDirtyAsync
|
|
6
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-4EN3IZ3Q.js";
|
|
7
8
|
|
|
8
9
|
// src/lib/worktree-sweep.ts
|
|
9
10
|
import { execFile } from "child_process";
|
|
@@ -303,25 +304,6 @@ async function pruneWorktreeRegistry(repoRoot) {
|
|
|
303
304
|
} catch {
|
|
304
305
|
}
|
|
305
306
|
}
|
|
306
|
-
async function clearStashes(repoRoot) {
|
|
307
|
-
try {
|
|
308
|
-
const stashList = (await execFileAsync("git", ["stash", "list"], {
|
|
309
|
-
cwd: repoRoot,
|
|
310
|
-
encoding: "utf8",
|
|
311
|
-
timeout: GIT_TIMEOUT_MS
|
|
312
|
-
})).stdout.trim();
|
|
313
|
-
if (!stashList) return 0;
|
|
314
|
-
const count = stashList.split("\n").length;
|
|
315
|
-
await execFileAsync("git", ["stash", "clear"], {
|
|
316
|
-
cwd: repoRoot,
|
|
317
|
-
encoding: "utf8",
|
|
318
|
-
timeout: GIT_TIMEOUT_MS
|
|
319
|
-
});
|
|
320
|
-
return count;
|
|
321
|
-
} catch {
|
|
322
|
-
return 0;
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
307
|
function parseAgentName(wtPath) {
|
|
326
308
|
const dirName = path.basename(wtPath);
|
|
327
309
|
if (!dirName) return null;
|
|
@@ -338,17 +320,18 @@ async function archiveDirtyWorktree(wtPath, agentName) {
|
|
|
338
320
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
339
321
|
const quarantineBranch = `quarantine/${agentName}-${timestamp}`;
|
|
340
322
|
try {
|
|
341
|
-
await execFileAsync("git", ["-C", wtPath, "checkout", "-b", quarantineBranch], {
|
|
323
|
+
await execFileAsync("git", ["-C", wtPath, ...GIT_CRYPT_SMUDGE_BYPASS_ARGS, "checkout", "-b", quarantineBranch], {
|
|
342
324
|
encoding: "utf8",
|
|
343
325
|
timeout: GIT_TIMEOUT_MS
|
|
344
326
|
});
|
|
345
|
-
await execFileAsync("git", ["-C", wtPath, "add", "-A"], {
|
|
327
|
+
await execFileAsync("git", ["-C", wtPath, ...GIT_CRYPT_SMUDGE_BYPASS_ARGS, "add", "-A"], {
|
|
346
328
|
encoding: "utf8",
|
|
347
329
|
timeout: GIT_TIMEOUT_MS
|
|
348
330
|
});
|
|
349
331
|
await execFileAsync("git", [
|
|
350
332
|
"-C",
|
|
351
333
|
wtPath,
|
|
334
|
+
...GIT_CRYPT_SMUDGE_BYPASS_ARGS,
|
|
352
335
|
"commit",
|
|
353
336
|
"-m",
|
|
354
337
|
`[quarantine] Auto-archived dirty orphan worktree
|
|
@@ -369,9 +352,19 @@ Archived by worktree-sweep after ${DIRTY_ORPHAN_MAX_AGE_MS / 864e5}-day dirty or
|
|
|
369
352
|
});
|
|
370
353
|
process.stderr.write(`[worktree-sweep] Archived dirty changes to branch ${quarantineBranch}
|
|
371
354
|
`);
|
|
372
|
-
return true;
|
|
373
|
-
} catch {
|
|
374
|
-
|
|
355
|
+
return { ok: true };
|
|
356
|
+
} catch (err) {
|
|
357
|
+
const detail = (() => {
|
|
358
|
+
if (!err || typeof err !== "object") return String(err);
|
|
359
|
+
const e = err;
|
|
360
|
+
const parts = [e.message, e.stderr, e.stdout].map((part) => Buffer.isBuffer(part) ? part.toString("utf8") : String(part ?? "")).filter(Boolean);
|
|
361
|
+
return parts.join(" | ").replace(/\s+/g, " ").trim().slice(0, 400);
|
|
362
|
+
})();
|
|
363
|
+
process.stderr.write(
|
|
364
|
+
`[worktree-sweep] Archive FAILED for ${wtPath} (branch ${quarantineBranch}): ${detail}
|
|
365
|
+
`
|
|
366
|
+
);
|
|
367
|
+
return { ok: false, detail };
|
|
375
368
|
}
|
|
376
369
|
}
|
|
377
370
|
async function sweepWorktrees(options = {}) {
|
|
@@ -428,13 +421,15 @@ async function sweepWorktrees(options = {}) {
|
|
|
428
421
|
`
|
|
429
422
|
);
|
|
430
423
|
const archived = await archiveDirtyWorktree(wt.path, agentName);
|
|
431
|
-
if (archived) {
|
|
424
|
+
if (archived.ok) {
|
|
432
425
|
} else {
|
|
433
426
|
result.skipped.push({
|
|
434
427
|
repo: repoName,
|
|
435
428
|
worktree: wtName,
|
|
436
429
|
branch: wt.branch,
|
|
437
|
-
|
|
430
|
+
// Carry the git error. Without it this read "archive failed" 205
|
|
431
|
+
// times over and gave an operator nothing to act on (42aa8c56).
|
|
432
|
+
reason: `uncommitted changes (archive failed after ${ageD}d: ${archived.detail})`
|
|
438
433
|
});
|
|
439
434
|
continue;
|
|
440
435
|
}
|
|
@@ -492,14 +487,6 @@ async function sweepWorktrees(options = {}) {
|
|
|
492
487
|
result.branchesDeleted.push({ repo: repoName, branch: wt.branch, remote: remoteDeleted });
|
|
493
488
|
}
|
|
494
489
|
}
|
|
495
|
-
if (!dryRun) {
|
|
496
|
-
const cleared = await clearStashes(repoRoot);
|
|
497
|
-
if (cleared > 0) {
|
|
498
|
-
result.stashesCleared += cleared;
|
|
499
|
-
process.stderr.write(`[worktree-sweep] Cleared ${cleared} stash(es) in ${repoName}
|
|
500
|
-
`);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
490
|
if (!dryRun) {
|
|
504
491
|
await pruneWorktreeRegistry(repoRoot);
|
|
505
492
|
}
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
2
|
employeeSessionName,
|
|
3
|
+
extractRootExe,
|
|
4
|
+
getDispatchedBy,
|
|
3
5
|
isEmployeeAlive,
|
|
6
|
+
isProvenIntercomDelivery,
|
|
4
7
|
resolveExeSession,
|
|
5
8
|
sendIntercom,
|
|
6
9
|
strictSessionScopeFilter
|
|
7
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AKLQSC6W.js";
|
|
11
|
+
import {
|
|
12
|
+
isValidSessionScope
|
|
13
|
+
} from "./chunk-BTSWFMEH.js";
|
|
8
14
|
import {
|
|
9
15
|
parseMessage,
|
|
10
16
|
serializeMessage
|
|
11
17
|
} from "./chunk-QAEWWYHL.js";
|
|
12
18
|
import {
|
|
13
19
|
recordOrchestrationEventBestEffort
|
|
14
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-W75GTHR3.js";
|
|
21
|
+
import {
|
|
22
|
+
getSessionKey
|
|
23
|
+
} from "./chunk-CVYC6DUW.js";
|
|
15
24
|
import {
|
|
16
25
|
getClient
|
|
17
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-TAMDAOCU.js";
|
|
18
27
|
|
|
19
28
|
// src/lib/messaging.ts
|
|
20
29
|
import crypto from "crypto";
|
|
@@ -45,6 +54,18 @@ function rowToMessage(row) {
|
|
|
45
54
|
};
|
|
46
55
|
}
|
|
47
56
|
var MAX_RETRIES = 10;
|
|
57
|
+
function resolveSenderSessionScope() {
|
|
58
|
+
const ambient = resolveExeSession();
|
|
59
|
+
if (ambient) return ambient;
|
|
60
|
+
try {
|
|
61
|
+
const dispatcher = getDispatchedBy(getSessionKey());
|
|
62
|
+
if (!dispatcher) return null;
|
|
63
|
+
const scope = extractRootExe(dispatcher) ?? dispatcher;
|
|
64
|
+
return isValidSessionScope(scope) ? scope : null;
|
|
65
|
+
} catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
48
69
|
function buildUnreadMessagesCountStatement(targetAgent, sessionScope) {
|
|
49
70
|
const scope = strictSessionScopeFilter(sessionScope);
|
|
50
71
|
return {
|
|
@@ -63,7 +84,7 @@ async function sendMessage(input) {
|
|
|
63
84
|
const id = generateUlid();
|
|
64
85
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
65
86
|
const targetDevice = input.targetDevice ?? "local";
|
|
66
|
-
const sessionScope = input.sessionScope === void 0 ?
|
|
87
|
+
const sessionScope = input.sessionScope === void 0 ? resolveSenderSessionScope() : input.sessionScope;
|
|
67
88
|
await client.execute({
|
|
68
89
|
sql: `INSERT INTO messages (id, from_agent, from_device, target_agent, target_project, target_device, session_scope, content, priority, status, founder_id, created_at)
|
|
69
90
|
VALUES (?, ?, 'local', ?, ?, ?, ?, ?, ?, 'pending', ?, ?)`,
|
|
@@ -176,8 +197,7 @@ async function deliverLocalMessage(messageId) {
|
|
|
176
197
|
if (intercomResult === "failed") {
|
|
177
198
|
throw new Error(`intercom delivery failed for ${sessionName}`);
|
|
178
199
|
}
|
|
179
|
-
|
|
180
|
-
if (!DELIVERED_RESULTS.has(intercomResult)) {
|
|
200
|
+
if (!isProvenIntercomDelivery(intercomResult)) {
|
|
181
201
|
return false;
|
|
182
202
|
}
|
|
183
203
|
await client.execute({
|