@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
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
} from "./chunk-75H4R62K.js";
|
|
4
4
|
import {
|
|
5
5
|
initStore
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MXPNVSXI.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient,
|
|
9
9
|
isInitialized
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TAMDAOCU.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/schedules.ts
|
|
13
13
|
import crypto from "crypto";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registerScopedQueryChokepoint,
|
|
3
3
|
scopedQueryChokepointStatus
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IN6CAM4F.js";
|
|
5
5
|
import {
|
|
6
6
|
getClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TAMDAOCU.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/org-scoped-rows.ts
|
|
10
10
|
var SCOPED_QUERY_MAX_LIMIT = 200;
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-YYB5PMTK.js";
|
|
4
4
|
import {
|
|
5
5
|
EXE_AI_DIR
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZIG7VPJV.js";
|
|
7
7
|
|
|
8
8
|
// src/lib/db-backup.ts
|
|
9
|
-
import { existsSync, readdirSync, unlinkSync, statSync, statfsSync } from "fs";
|
|
9
|
+
import { existsSync, readdirSync, unlinkSync, statSync, statfsSync, appendFileSync } from "fs";
|
|
10
10
|
import { copyFile, mkdir, unlink, rename } from "fs/promises";
|
|
11
11
|
import { randomBytes } from "crypto";
|
|
12
12
|
import path from "path";
|
|
@@ -192,7 +192,7 @@ async function quickCheckBackupSourceAfterCopy(reason, backupPath) {
|
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
})();
|
|
195
|
-
const { recordDbIntegrityEvent } = await import("./db-integrity-events-
|
|
195
|
+
const { recordDbIntegrityEvent } = await import("./db-integrity-events-2DTFO37N.js");
|
|
196
196
|
const backupName = path.basename(backupPath);
|
|
197
197
|
const markUnverified = (detail) => {
|
|
198
198
|
process.stderr.write(
|
|
@@ -205,7 +205,7 @@ async function quickCheckBackupSourceAfterCopy(reason, backupPath) {
|
|
|
205
205
|
try {
|
|
206
206
|
const { getClient } = await import("./lib/database.js");
|
|
207
207
|
const client = getClient();
|
|
208
|
-
const { canTrustIntegrityVerdict } = await import("./fts-integrity-
|
|
208
|
+
const { canTrustIntegrityVerdict } = await import("./fts-integrity-4YB34KWX.js");
|
|
209
209
|
if (!await canTrustIntegrityVerdict(client)) {
|
|
210
210
|
return markUnverified("connection is query_only; an FTS5 verdict from it is not trustworthy");
|
|
211
211
|
}
|
|
@@ -350,6 +350,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
|
|
|
350
350
|
const dbPath = findActiveDb();
|
|
351
351
|
if (!dbPath) return null;
|
|
352
352
|
await mkdir(BACKUP_DIR, { recursive: true });
|
|
353
|
+
let lowDisk = null;
|
|
353
354
|
try {
|
|
354
355
|
let dbSize = 0;
|
|
355
356
|
try {
|
|
@@ -358,14 +359,26 @@ async function createBackupAsync(reason = "manual", opts = {}) {
|
|
|
358
359
|
}
|
|
359
360
|
const freeBytes = getFreeBytes(BACKUP_DIR);
|
|
360
361
|
if (!hasEnoughDiskSpace(freeBytes, dbSize)) {
|
|
361
|
-
|
|
362
|
-
`[db-backup] DISK GUARD: skipping "${reason}" backup \u2014 ${Math.round(freeBytes / 1024 / 1024)}MB free, need >${Math.round(Math.max(MIN_FREE_BYTES, dbSize * 2) / 1024 / 1024)}MB. Disk is nearly full; refusing to make it worse.
|
|
363
|
-
`
|
|
364
|
-
);
|
|
365
|
-
return null;
|
|
362
|
+
lowDisk = { freeBytes, requiredBytes: requiredFreeBytes(dbSize) };
|
|
366
363
|
}
|
|
367
364
|
} catch {
|
|
368
365
|
}
|
|
366
|
+
if (lowDisk) {
|
|
367
|
+
const skipping = lowDiskSkipAllowed(opts);
|
|
368
|
+
const message = lowDiskMessage(reason, lowDisk.freeBytes, lowDisk.requiredBytes, skipping);
|
|
369
|
+
process.stderr.write(`${message}
|
|
370
|
+
`);
|
|
371
|
+
recordMissedBackup({
|
|
372
|
+
reason,
|
|
373
|
+
freeBytes: lowDisk.freeBytes,
|
|
374
|
+
requiredBytes: lowDisk.requiredBytes,
|
|
375
|
+
skipped: skipping,
|
|
376
|
+
message
|
|
377
|
+
});
|
|
378
|
+
alertMissedBackup(message, skipping);
|
|
379
|
+
if (!skipping) throw new BackupDiskSpaceError(message, { reason, ...lowDisk });
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
369
382
|
const dbName = path.basename(dbPath, ".db");
|
|
370
383
|
const backupName = `${dbName}-${reason}-${uniqueBackupSuffix()}.db`;
|
|
371
384
|
const backupPath = path.join(BACKUP_DIR, backupName);
|
|
@@ -402,11 +415,11 @@ async function createBackupAsync(reason = "manual", opts = {}) {
|
|
|
402
415
|
}
|
|
403
416
|
}
|
|
404
417
|
try {
|
|
405
|
-
const { manifestWriteEnabled, writeBackupManifest } = await import("./backup-verify-
|
|
418
|
+
const { manifestWriteEnabled, writeBackupManifest } = await import("./backup-verify-ZKTUYLTA.js");
|
|
406
419
|
if (manifestWriteEnabled()) {
|
|
407
420
|
const manifest = await writeBackupManifest(backupPath, dbName);
|
|
408
421
|
if (manifest && sourceStatus === "unverified") {
|
|
409
|
-
const { recordDbIntegrityEvent } = await import("./db-integrity-events-
|
|
422
|
+
const { recordDbIntegrityEvent } = await import("./db-integrity-events-2DTFO37N.js");
|
|
410
423
|
recordDbIntegrityEvent({
|
|
411
424
|
kind: "backup-verified",
|
|
412
425
|
reason,
|
|
@@ -518,9 +531,67 @@ function cleanupStaleTmp(maxAgeMs = STALE_TMP_MAX_AGE_MS) {
|
|
|
518
531
|
}
|
|
519
532
|
return deleted;
|
|
520
533
|
}
|
|
521
|
-
function hasEnoughDiskSpace(freeBytes, backupSizeBytes, minFreeBytes =
|
|
522
|
-
|
|
523
|
-
|
|
534
|
+
function hasEnoughDiskSpace(freeBytes, backupSizeBytes, minFreeBytes = minFreeFloorBytes()) {
|
|
535
|
+
return freeBytes >= Math.max(minFreeBytes, backupSizeBytes * 2);
|
|
536
|
+
}
|
|
537
|
+
function minFreeFloorBytes() {
|
|
538
|
+
const raw = Number(process.env.EXE_BACKUP_MIN_FREE_BYTES);
|
|
539
|
+
return Number.isFinite(raw) && raw > 0 ? raw : MIN_FREE_BYTES;
|
|
540
|
+
}
|
|
541
|
+
function requiredFreeBytes(backupSizeBytes, minFreeBytes = minFreeFloorBytes()) {
|
|
542
|
+
return Math.max(minFreeBytes, backupSizeBytes * 2);
|
|
543
|
+
}
|
|
544
|
+
var BackupDiskSpaceError = class extends Error {
|
|
545
|
+
code = "BACKUP_LOW_DISK";
|
|
546
|
+
reason;
|
|
547
|
+
freeBytes;
|
|
548
|
+
requiredBytes;
|
|
549
|
+
constructor(message, detail) {
|
|
550
|
+
super(message);
|
|
551
|
+
this.name = "BackupDiskSpaceError";
|
|
552
|
+
this.reason = detail.reason;
|
|
553
|
+
this.freeBytes = detail.freeBytes;
|
|
554
|
+
this.requiredBytes = detail.requiredBytes;
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
function lowDiskSkipAllowed(opts) {
|
|
558
|
+
if (opts?.allowSkipOnLowDisk === true) return true;
|
|
559
|
+
return ["1", "true", "yes"].includes(
|
|
560
|
+
(process.env.EXE_BACKUP_ALLOW_LOW_DISK_SKIP ?? "").trim().toLowerCase()
|
|
561
|
+
);
|
|
562
|
+
}
|
|
563
|
+
function mb(bytes) {
|
|
564
|
+
return Number.isFinite(bytes) ? `${Math.round(bytes / 1024 / 1024)}MB` : "unknown";
|
|
565
|
+
}
|
|
566
|
+
function lowDiskMessage(reason, freeBytes, requiredBytes, skipping) {
|
|
567
|
+
return `[db-backup] DISK GUARD: BACKUP NOT TAKEN ("${reason}") \u2014 ${mb(freeBytes)} free, need >${mb(requiredBytes)}. ` + (skipping ? "Skip explicitly authorized (allowSkipOnLowDisk/EXE_BACKUP_ALLOW_LOW_DISK_SKIP); " : "") + "This machine is NOT being backed up until disk space is freed.";
|
|
568
|
+
}
|
|
569
|
+
function missedBackupLogPath() {
|
|
570
|
+
return path.join(EXE_AI_DIR, "missed-backups.jsonl");
|
|
571
|
+
}
|
|
572
|
+
function recordMissedBackup(entry) {
|
|
573
|
+
try {
|
|
574
|
+
appendFileSync(
|
|
575
|
+
missedBackupLogPath(),
|
|
576
|
+
`${JSON.stringify({ at: (/* @__PURE__ */ new Date()).toISOString(), cause: "low_disk", ...entry })}
|
|
577
|
+
`
|
|
578
|
+
);
|
|
579
|
+
} catch {
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
function alertMissedBackup(message, skipped) {
|
|
583
|
+
void (async () => {
|
|
584
|
+
try {
|
|
585
|
+
const { pushNotifyAsync } = await import("./push-notifications-NCZLH6DI.js");
|
|
586
|
+
pushNotifyAsync({
|
|
587
|
+
event: "backup_failed",
|
|
588
|
+
title: skipped ? "Backup SKIPPED \u2014 disk full" : "Backup FAILED \u2014 disk full",
|
|
589
|
+
body: message,
|
|
590
|
+
priority: "urgent"
|
|
591
|
+
});
|
|
592
|
+
} catch {
|
|
593
|
+
}
|
|
594
|
+
})();
|
|
524
595
|
}
|
|
525
596
|
function backupMinFreeRatio() {
|
|
526
597
|
const raw = Number(process.env.EXE_BACKUP_MIN_FREE_RATIO);
|
|
@@ -847,6 +918,13 @@ export {
|
|
|
847
918
|
selectStaleTmpFiles,
|
|
848
919
|
cleanupStaleTmp,
|
|
849
920
|
hasEnoughDiskSpace,
|
|
921
|
+
minFreeFloorBytes,
|
|
922
|
+
requiredFreeBytes,
|
|
923
|
+
BackupDiskSpaceError,
|
|
924
|
+
lowDiskSkipAllowed,
|
|
925
|
+
lowDiskMessage,
|
|
926
|
+
missedBackupLogPath,
|
|
927
|
+
recordMissedBackup,
|
|
850
928
|
backupMinFreeRatio,
|
|
851
929
|
shouldSkipBackupUnderMemoryPressure,
|
|
852
930
|
rotateBackupsByReason,
|
|
@@ -1,19 +1,167 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getMasterKey
|
|
3
|
+
} from "./chunk-HPXFKUGU.js";
|
|
1
4
|
import {
|
|
2
5
|
PRIVATE_DIR_MODE,
|
|
3
6
|
PRIVATE_FILE_MODE,
|
|
7
|
+
enforcePrivateFileSync,
|
|
4
8
|
ensurePrivateDirSync
|
|
5
9
|
} from "./chunk-HSGBZSCA.js";
|
|
6
10
|
|
|
7
11
|
// src/gateway/adapters/whatsapp.ts
|
|
8
12
|
import { randomUUID } from "crypto";
|
|
9
13
|
import { homedir } from "os";
|
|
10
|
-
import { join } from "path";
|
|
14
|
+
import { join as join2 } from "path";
|
|
11
15
|
import { chmodSync, lstatSync, readdirSync } from "fs";
|
|
16
|
+
|
|
17
|
+
// src/lib/whatsapp-auth-store.ts
|
|
18
|
+
import crypto from "crypto";
|
|
19
|
+
import { readFile, writeFile, unlink, readdir } from "fs/promises";
|
|
20
|
+
import { join } from "path";
|
|
21
|
+
var ALGORITHM = "aes-256-gcm";
|
|
22
|
+
var IV_LENGTH = 12;
|
|
23
|
+
var TAG_LENGTH = 16;
|
|
24
|
+
var ENC_PREFIX = "enc:";
|
|
25
|
+
var HKDF_INFO = "exe-whatsapp-auth-v1";
|
|
26
|
+
function deriveWhatsAppAuthKey(masterKey) {
|
|
27
|
+
if (masterKey.length !== 32) {
|
|
28
|
+
throw new Error(`Master key must be 32 bytes, got ${masterKey.length}`);
|
|
29
|
+
}
|
|
30
|
+
return Buffer.from(crypto.hkdfSync("sha256", masterKey, "", HKDF_INFO, 32));
|
|
31
|
+
}
|
|
32
|
+
function encryptString(plaintext, key) {
|
|
33
|
+
const iv = crypto.randomBytes(IV_LENGTH);
|
|
34
|
+
const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
|
|
35
|
+
const encrypted = Buffer.concat([
|
|
36
|
+
cipher.update(Buffer.from(plaintext, "utf-8")),
|
|
37
|
+
cipher.final()
|
|
38
|
+
]);
|
|
39
|
+
const tag = cipher.getAuthTag();
|
|
40
|
+
return ENC_PREFIX + Buffer.concat([iv, encrypted, tag]).toString("base64");
|
|
41
|
+
}
|
|
42
|
+
function decryptString(content, key) {
|
|
43
|
+
if (!content.startsWith(ENC_PREFIX)) {
|
|
44
|
+
return content;
|
|
45
|
+
}
|
|
46
|
+
const combined = Buffer.from(content.slice(ENC_PREFIX.length), "base64");
|
|
47
|
+
if (combined.length < IV_LENGTH + TAG_LENGTH) {
|
|
48
|
+
throw new Error("WhatsApp auth blob too short");
|
|
49
|
+
}
|
|
50
|
+
const iv = combined.subarray(0, IV_LENGTH);
|
|
51
|
+
const tag = combined.subarray(combined.length - TAG_LENGTH);
|
|
52
|
+
const body = combined.subarray(IV_LENGTH, combined.length - TAG_LENGTH);
|
|
53
|
+
const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);
|
|
54
|
+
decipher.setAuthTag(tag);
|
|
55
|
+
return Buffer.concat([
|
|
56
|
+
decipher.update(body),
|
|
57
|
+
decipher.final()
|
|
58
|
+
]).toString("utf-8");
|
|
59
|
+
}
|
|
60
|
+
async function migratePlaintextAuthFiles(folder, key) {
|
|
61
|
+
let files;
|
|
62
|
+
try {
|
|
63
|
+
files = await readdir(folder);
|
|
64
|
+
} catch {
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
let migrated = 0;
|
|
68
|
+
for (const file of files) {
|
|
69
|
+
if (!file.endsWith(".json")) continue;
|
|
70
|
+
const filePath = join(folder, file);
|
|
71
|
+
try {
|
|
72
|
+
const raw = await readFile(filePath, "utf-8");
|
|
73
|
+
if (raw.startsWith(ENC_PREFIX)) continue;
|
|
74
|
+
await writeFile(filePath, encryptString(raw, key), "utf-8");
|
|
75
|
+
enforcePrivateFileSync(filePath);
|
|
76
|
+
migrated++;
|
|
77
|
+
} catch {
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return migrated;
|
|
81
|
+
}
|
|
82
|
+
var fileLocks = /* @__PURE__ */ new Map();
|
|
83
|
+
function withFileLock(filePath, fn) {
|
|
84
|
+
const prev = fileLocks.get(filePath) ?? Promise.resolve();
|
|
85
|
+
const next = prev.then(fn, fn);
|
|
86
|
+
fileLocks.set(filePath, next.catch(() => {
|
|
87
|
+
}));
|
|
88
|
+
return next;
|
|
89
|
+
}
|
|
90
|
+
async function useEncryptedMultiFileAuthState(folder, key) {
|
|
91
|
+
ensurePrivateDirSync(folder);
|
|
92
|
+
await migratePlaintextAuthFiles(folder, key);
|
|
93
|
+
const baileys = await import("@whiskeysockets/baileys");
|
|
94
|
+
const { initAuthCreds, BufferJSON, proto } = baileys;
|
|
95
|
+
const fixFileName = (file) => file?.replace(/\//g, "__")?.replace(/:/g, "-");
|
|
96
|
+
const writeData = async (data, file) => {
|
|
97
|
+
const filePath = join(folder, fixFileName(file));
|
|
98
|
+
await withFileLock(filePath, async () => {
|
|
99
|
+
const serialized = JSON.stringify(data, BufferJSON.replacer);
|
|
100
|
+
await writeFile(filePath, encryptString(serialized, key), "utf-8");
|
|
101
|
+
enforcePrivateFileSync(filePath);
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
const readData = async (file) => {
|
|
105
|
+
const filePath = join(folder, fixFileName(file));
|
|
106
|
+
try {
|
|
107
|
+
return await withFileLock(filePath, async () => {
|
|
108
|
+
const raw = await readFile(filePath, "utf-8");
|
|
109
|
+
return JSON.parse(decryptString(raw, key), BufferJSON.reviver);
|
|
110
|
+
});
|
|
111
|
+
} catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const removeData = async (file) => {
|
|
116
|
+
const filePath = join(folder, fixFileName(file));
|
|
117
|
+
await withFileLock(filePath, async () => {
|
|
118
|
+
try {
|
|
119
|
+
await unlink(filePath);
|
|
120
|
+
} catch {
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
const creds = await readData("creds.json") || initAuthCreds();
|
|
125
|
+
return {
|
|
126
|
+
state: {
|
|
127
|
+
creds,
|
|
128
|
+
keys: {
|
|
129
|
+
get: async (type, ids) => {
|
|
130
|
+
const data = {};
|
|
131
|
+
await Promise.all(ids.map(async (id) => {
|
|
132
|
+
let value = await readData(`${type}-${id}.json`);
|
|
133
|
+
if (type === "app-state-sync-key" && value) {
|
|
134
|
+
value = proto.Message.AppStateSyncKeyData.fromObject(value);
|
|
135
|
+
}
|
|
136
|
+
data[id] = value;
|
|
137
|
+
}));
|
|
138
|
+
return data;
|
|
139
|
+
},
|
|
140
|
+
set: async (data) => {
|
|
141
|
+
const tasks = [];
|
|
142
|
+
for (const category in data) {
|
|
143
|
+
for (const id in data[category]) {
|
|
144
|
+
const value = data[category][id];
|
|
145
|
+
const file = `${category}-${id}.json`;
|
|
146
|
+
tasks.push(value ? writeData(value, file) : removeData(file));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
await Promise.all(tasks);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
saveCreds: async () => {
|
|
154
|
+
await writeData(creds, "creds.json");
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// src/gateway/adapters/whatsapp.ts
|
|
12
160
|
var INITIAL_BACKOFF_MS = 1e3;
|
|
13
161
|
var MAX_BACKOFF_MS = 3e5;
|
|
14
162
|
var BACKOFF_MULTIPLIER = 2;
|
|
15
163
|
var JITTER_FACTOR = 0.25;
|
|
16
|
-
var AUTH_DIR =
|
|
164
|
+
var AUTH_DIR = join2(homedir(), ".exe-os", "whatsapp-auth");
|
|
17
165
|
function createBaileysLogger(accountName) {
|
|
18
166
|
const prefix = accountName ? `[whatsapp:${accountName}]` : "[whatsapp]";
|
|
19
167
|
const logger = {
|
|
@@ -49,7 +197,7 @@ function hardenBaileysAuthState(authDir) {
|
|
|
49
197
|
return;
|
|
50
198
|
}
|
|
51
199
|
for (const entry of entries) {
|
|
52
|
-
const child =
|
|
200
|
+
const child = join2(dir, entry);
|
|
53
201
|
let stat;
|
|
54
202
|
try {
|
|
55
203
|
stat = lstatSync(child);
|
|
@@ -91,7 +239,16 @@ var WhatsAppAdapter = class {
|
|
|
91
239
|
hardenBaileysAuthState(this.authDir);
|
|
92
240
|
const baileys = await import("@whiskeysockets/baileys");
|
|
93
241
|
const { makeWASocket, useMultiFileAuthState, fetchLatestBaileysVersion, DisconnectReason, makeCacheableSignalKeyStore } = baileys;
|
|
94
|
-
const
|
|
242
|
+
const masterKey = await getMasterKey();
|
|
243
|
+
let state;
|
|
244
|
+
let saveCreds;
|
|
245
|
+
if (masterKey) {
|
|
246
|
+
const authKey = deriveWhatsAppAuthKey(masterKey);
|
|
247
|
+
({ state, saveCreds } = await useEncryptedMultiFileAuthState(this.authDir, authKey));
|
|
248
|
+
} else {
|
|
249
|
+
console.error("[whatsapp] WARNING: no master key available \u2014 WhatsApp auth credentials will be stored WITHOUT encryption at rest (file permissions only). Run exe-os setup to enable the keychain.");
|
|
250
|
+
({ state, saveCreds } = await useMultiFileAuthState(this.authDir));
|
|
251
|
+
}
|
|
95
252
|
hardenBaileysAuthState(this.authDir);
|
|
96
253
|
const { version } = await fetchLatestBaileysVersion();
|
|
97
254
|
this.baileysLogger = createBaileysLogger();
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
storeBehavior
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WMEYJT4R.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveAnthropicAuth
|
|
6
6
|
} from "./chunk-VGMACSEV.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TAMDAOCU.js";
|
|
10
10
|
import {
|
|
11
11
|
loadConfig
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ZIG7VPJV.js";
|
|
13
13
|
|
|
14
14
|
// src/lib/skill-learning.ts
|
|
15
15
|
import crypto from "crypto";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PLATFORM_PROCEDURES,
|
|
3
3
|
PLATFORM_PROCEDURE_TITLES
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PY3FOMRN.js";
|
|
5
5
|
import {
|
|
6
6
|
getClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TAMDAOCU.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/global-procedures.ts
|
|
10
10
|
import { randomUUID } from "crypto";
|