@askexenow/exe-os 0.9.409 → 0.9.411
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/stack-manifests/v0.9.json +408 -1
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-5AKPW2N7.js → active-agent-3YCLS7GB.js} +4 -4
- package/dist/{active-agent-2AMJC3SC.js → active-agent-MHWQDMML.js} +4 -4
- package/dist/agent-defs-generator-DNXMO34I.js +32 -0
- package/dist/{agentic-ontology-6RS7A7KP.js → agentic-ontology-RA6CMND6.js} +1 -1
- package/dist/{artifact-backup-6O4FNYPS.js → artifact-backup-EETHNFFP.js} +3 -3
- package/dist/{backfill-metadata-6YX6LGPJ.js → backfill-metadata-WYT257VG.js} +7 -7
- package/dist/backup-verify-AG54CYGR.js +62 -0
- package/dist/{behavior-injection-NRXTNROW.js → behavior-injection-G7GAUHGO.js} +10 -10
- package/dist/{behavior-promotion-MW7OQ72V.js → behavior-promotion-I2DIUFUR.js} +9 -9
- package/dist/{behaviors-7AOK44QK.js → behaviors-SKVKPCRW.js} +8 -8
- package/dist/bin/agentic-ontology-backfill.js +8 -8
- package/dist/bin/agentic-reflection-backfill.js +9 -9
- package/dist/bin/agentic-semantic-label.js +8 -8
- package/dist/bin/backfill-conversations.js +7 -7
- package/dist/bin/backfill-responses.js +7 -7
- package/dist/bin/backfill-vectors.js +7 -7
- package/dist/bin/bulk-sync-postgres.js +16 -16
- package/dist/bin/cc-doctor.js +8 -8
- package/dist/bin/cleanup-stale-review-tasks.js +13 -16
- package/dist/bin/cli.js +24 -24
- package/dist/bin/deferred-daemon-restart.js +97 -97
- package/dist/bin/exe-actions.js +1 -1
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +12 -12
- package/dist/bin/exe-assign.js +8 -8
- package/dist/bin/exe-boot.js +35 -38
- package/dist/bin/exe-call.js +9 -9
- package/dist/bin/exe-cloud.js +26 -22
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +14 -17
- package/dist/bin/exe-doctor.js +5 -5
- package/dist/bin/exe-export-behaviors.js +12 -12
- package/dist/bin/exe-forget.js +12 -12
- package/dist/bin/exe-gateway.js +9 -9
- package/dist/bin/exe-grant.js +6 -6
- package/dist/bin/exe-healthcheck.js +8 -8
- package/dist/bin/exe-heartbeat.js +19 -22
- package/dist/bin/exe-kill.js +18 -21
- package/dist/bin/exe-launch-agent.js +264 -110
- package/dist/bin/exe-mcp.js +5 -5
- package/dist/bin/exe-memory-reads.js +7 -7
- package/dist/bin/exe-new-employee.js +11 -11
- package/dist/bin/exe-os-mcp-proxy.js +5 -5
- package/dist/bin/exe-pending-messages.js +14 -17
- package/dist/bin/exe-pending-notifications.js +13 -16
- package/dist/bin/exe-pending-reviews.js +14 -17
- package/dist/bin/exe-rename.js +7 -7
- package/dist/bin/exe-review.js +17 -20
- package/dist/bin/exe-search.js +11 -11
- package/dist/bin/exe-session-cleanup.js +18 -21
- package/dist/bin/exe-settings.js +16 -16
- package/dist/bin/exe-start-codex.js +37 -19
- package/dist/bin/exe-start-opencode.js +35 -17
- package/dist/bin/exe-status.js +15 -18
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +5 -5
- package/dist/bin/git-sweep.js +15 -17
- package/dist/bin/graph-backfill.js +8 -8
- package/dist/bin/graph-export.js +8 -8
- package/dist/bin/hooks-cli.js +1 -1
- package/dist/bin/import-history.js +11 -11
- package/dist/bin/install.js +99 -99
- package/dist/bin/intercom-check.js +5 -5
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +5 -5
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- 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/repair-document-chunks.js +7 -7
- package/dist/bin/scan-tasks.js +14 -17
- package/dist/bin/setup.js +2 -2
- package/dist/bin/shard-migrate.js +8 -8
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-HG6LLZLY.js → boot-generation-RPJVFAQJ.js} +4 -4
- package/dist/{boot-review-sections-STZ5EAIL.js → boot-review-sections-FOPPZTJI.js} +12 -15
- package/dist/{bug-landed-reconciler-EO72HUI2.js → bug-landed-reconciler-FN5KPBRK.js} +6 -6
- package/dist/build-info.json +3 -3
- package/dist/build-manifest.json +997 -987
- package/dist/{capability-cards-C3SMHB2E.js → capability-cards-YQWBEG7A.js} +3 -3
- package/dist/{capacity-monitor-UI553HRL.js → capacity-monitor-7SMEJHYG.js} +14 -17
- package/dist/{catchup-brief-VE2X4HML.js → catchup-brief-IBQ26LEB.js} +21 -23
- package/dist/{chunk-6ZW6BRI4.js → chunk-27NG2NTG.js} +2 -2
- package/dist/{chunk-EIM7OGTD.js → chunk-2BOLFLAU.js} +4 -2
- package/dist/{chunk-DM4VTXM6.js → chunk-2EYVXUGA.js} +4 -4
- package/dist/{chunk-LMF2YC5C.js → chunk-2YFMBXUU.js} +4 -4
- package/dist/{chunk-C426MZMD.js → chunk-2YGBJHC2.js} +3 -3
- package/dist/{chunk-6EY6OFBC.js → chunk-353XF4LU.js} +2 -2
- package/dist/{chunk-VMHZSZQJ.js → chunk-3ARSKDHC.js} +52 -0
- package/dist/{chunk-ZYOIH5NY.js → chunk-3DXAJVXE.js} +6 -6
- package/dist/{chunk-HFSFWMID.js → chunk-3GGMHSY2.js} +3 -3
- package/dist/{chunk-BM467PZN.js → chunk-3N24FV22.js} +1 -1
- package/dist/{chunk-SY53PYLU.js → chunk-47YGEM4N.js} +1 -1
- package/dist/{chunk-NVM3SKJ4.js → chunk-4CN3EE6U.js} +27 -21
- package/dist/{chunk-KIJRAZWR.js → chunk-4J77TCTX.js} +1 -1
- package/dist/{chunk-NHQWPKX7.js → chunk-54STF27U.js} +2 -2
- package/dist/{chunk-Q4GS5VW7.js → chunk-5BWDUUMH.js} +3 -3
- package/dist/{chunk-VYKXRSHU.js → chunk-5ZMNFSHV.js} +1 -1
- package/dist/{chunk-HNGAM3U4.js → chunk-657I6PUF.js} +3 -3
- package/dist/{chunk-OE7TAEOG.js → chunk-6777GNWI.js} +1 -1
- package/dist/{chunk-HYZV25LY.js → chunk-67IVG6CB.js} +1 -11
- package/dist/{chunk-5N34MMKS.js → chunk-6APOLYIZ.js} +43 -3
- package/dist/{chunk-TBYWOHTE.js → chunk-6BD6JYR2.js} +1 -1
- package/dist/{chunk-JJYAETCO.js → chunk-6DMURUBY.js} +4 -4
- package/dist/{chunk-W5XAB2SW.js → chunk-6HJF7IA3.js} +273 -206
- package/dist/{chunk-HRKN3DQE.js → chunk-6J2J3VJS.js} +11 -11
- package/dist/{chunk-XFGS22VE.js → chunk-6PXFF6IV.js} +1 -1
- package/dist/{chunk-RZ23QQCI.js → chunk-7HLAYQRG.js} +4 -4
- package/dist/{chunk-IUBCS6TA.js → chunk-7KPZQ65I.js} +3 -3
- package/dist/{chunk-SYUJCVJG.js → chunk-7PDZBPGW.js} +1 -1
- package/dist/{chunk-VLAENYCN.js → chunk-7SHU5MOD.js} +1 -1
- package/dist/{chunk-6RRPVE5O.js → chunk-A5I2GYVQ.js} +3 -3
- package/dist/{chunk-X4V5ZLNX.js → chunk-A75TAU2I.js} +628 -4
- package/dist/{chunk-SGR4ZQAV.js → chunk-BE3UETW6.js} +3 -3
- package/dist/{chunk-GG73NHZD.js → chunk-BG6RAOCJ.js} +63 -9
- package/dist/{chunk-DMYJVGQM.js → chunk-BIPTWAEO.js} +1 -1
- package/dist/{chunk-B3ISLIKE.js → chunk-BLTXAUP6.js} +2 -2
- package/dist/{chunk-G2M7WQ2M.js → chunk-CBC3JCIF.js} +1 -1
- package/dist/{chunk-FJKUFMNF.js → chunk-CFFSHBQF.js} +1 -1
- package/dist/{chunk-WYNIWJRN.js → chunk-CJ6CS2IH.js} +5 -5
- package/dist/{chunk-7LTAA55U.js → chunk-CRW63CDI.js} +1 -1
- package/dist/{chunk-BHDDDNC6.js → chunk-CWHTUNJX.js} +2 -2
- package/dist/{chunk-FZT4VQP7.js → chunk-D6NZNUVH.js} +1 -1
- package/dist/{chunk-GKPPLIMJ.js → chunk-DHLJZDWI.js} +4 -4
- package/dist/{chunk-JR3GTBV3.js → chunk-DRHTRVDT.js} +1 -1
- package/dist/{chunk-GTRB6DGI.js → chunk-DWRULKB3.js} +2 -2
- package/dist/{chunk-DIKLSAJE.js → chunk-EOWJXCYC.js} +25 -7
- package/dist/{chunk-4W7Y67B5.js → chunk-EWDBWOCX.js} +1 -1
- package/dist/{chunk-EHILXBVT.js → chunk-FPF2PJFK.js} +3 -3
- package/dist/{chunk-BPBEJD7U.js → chunk-FSXMKIDO.js} +1 -1
- package/dist/{chunk-E2Z3F26R.js → chunk-FUDXITKX.js} +1 -1
- package/dist/{chunk-SFGFNJBR.js → chunk-FYV2CTKP.js} +1 -1
- package/dist/{chunk-4M24XCTI.js → chunk-GATAYYAF.js} +53 -7
- package/dist/{chunk-L5CPS34O.js → chunk-GHYHNHDL.js} +1 -1
- package/dist/{chunk-OISOA6NX.js → chunk-GL5ZG72X.js} +1 -1
- package/dist/{chunk-XAGIZVYI.js → chunk-GM4UEZDE.js} +181 -1625
- package/dist/{chunk-4O7OUBEX.js → chunk-GZVFHFO3.js} +27 -140
- package/dist/{chunk-M4N7I2H5.js → chunk-HA6BIZ6L.js} +5 -5
- package/dist/chunk-HDQAVAV6.js +248 -0
- package/dist/{chunk-IPANAGA3.js → chunk-HDV2V25K.js} +1 -1
- package/dist/{chunk-XGPBHKU3.js → chunk-HTFM7ZDD.js} +2 -2
- package/dist/{chunk-KPLMY2GT.js → chunk-HUHR5CKJ.js} +4 -4
- package/dist/{chunk-IPBNHPTE.js → chunk-IC2AONBH.js} +9 -9
- package/dist/{chunk-23XUZHB7.js → chunk-IHAXXDBH.js} +245 -36
- package/dist/{chunk-4S6H2NWS.js → chunk-IPUDXR67.js} +1 -1
- package/dist/{chunk-UXJAW4IQ.js → chunk-J6U4ZR77.js} +2 -2
- package/dist/{chunk-7I6KVKFF.js → chunk-JAIZCE6W.js} +3 -3
- package/dist/{chunk-SA66WRBT.js → chunk-JGBYZTWH.js} +1 -1
- package/dist/{chunk-HRYWB4TO.js → chunk-JJZZXEAN.js} +3 -3
- package/dist/{chunk-IZ24HRDC.js → chunk-JNULO6I5.js} +3 -3
- package/dist/{chunk-YVS77JPW.js → chunk-JTJP4JK7.js} +3 -3
- package/dist/{chunk-BIV4IHED.js → chunk-JW5NUXPN.js} +15 -28
- package/dist/{chunk-NFNM64A7.js → chunk-K2HIXAIF.js} +22 -18
- package/dist/{chunk-F5ZRHLG5.js → chunk-KEDZRQI3.js} +2 -2
- package/dist/{chunk-QPMKVSHU.js → chunk-KN5GAVCG.js} +2 -2
- package/dist/{chunk-3MDUKF3N.js → chunk-L5JFVK5T.js} +5 -4
- package/dist/{chunk-FBZ32BD4.js → chunk-LBSCOP25.js} +1 -1
- package/dist/{chunk-K7DAE2HO.js → chunk-LLZUL7M2.js} +19 -6
- package/dist/{chunk-PCFYNK7V.js → chunk-LQGLGSBY.js} +2 -2
- package/dist/{chunk-APVU4Q5B.js → chunk-LSHUX7P4.js} +16 -16
- package/dist/{chunk-GRAMRMWS.js → chunk-M6AX64J2.js} +2 -2
- package/dist/{chunk-52Z435PH.js → chunk-M6SUJLNP.js} +15 -10
- package/dist/{chunk-GPWXUU3L.js → chunk-MZNLQC6W.js} +1 -1
- package/dist/{chunk-G3ZYXXO7.js → chunk-N7POJZJT.js} +10 -10
- package/dist/{chunk-DE2V7547.js → chunk-NCNT2C2P.js} +2 -2
- package/dist/{chunk-HK7HIDXP.js → chunk-O3BLL6MY.js} +1 -1
- package/dist/{chunk-YLWKWEJJ.js → chunk-O6KQAJCC.js} +3 -3
- package/dist/{chunk-QUK3UDZV.js → chunk-OHHZNNUD.js} +1 -1
- package/dist/{chunk-6JLVCMKH.js → chunk-PDQGR5LZ.js} +1 -1
- package/dist/{chunk-LE3DIA25.js → chunk-PTF5TB6O.js} +3 -3
- package/dist/{chunk-KBHK2WNO.js → chunk-PYXXL7N7.js} +1 -1
- package/dist/{chunk-QK3Z4TKQ.js → chunk-Q6KUBP6R.js} +5 -5
- package/dist/{chunk-NDCW4G55.js → chunk-QJWLQXR7.js} +1 -1
- package/dist/{chunk-ME733Y2F.js → chunk-QOFQY7BJ.js} +37 -9
- package/dist/{chunk-HFXBL7XE.js → chunk-QSW5DHMZ.js} +1 -1
- package/dist/{chunk-OFT5KSBM.js → chunk-QV26G2BF.js} +1 -1
- package/dist/{chunk-LVEMYNYH.js → chunk-RHHEYC6H.js} +3 -3
- package/dist/{chunk-QYIR64RR.js → chunk-RHJOTGEU.js} +1 -1
- package/dist/{chunk-HUMNRJZE.js → chunk-RJIH7JXM.js} +4 -4
- package/dist/{chunk-6TB7UXCA.js → chunk-RMC2A6EE.js} +1 -1
- package/dist/{chunk-XCPD7NGP.js → chunk-RYMXD2NT.js} +1 -1
- package/dist/{chunk-W2VDJKTB.js → chunk-RYYFFCJG.js} +1 -1
- package/dist/{chunk-YUAOQJVV.js → chunk-SINIRUYZ.js} +101 -9
- package/dist/{chunk-R7QZXQPU.js → chunk-SXUABANK.js} +216 -147
- package/dist/{backup-verify-QIAQ63VC.js → chunk-T3AM52YT.js} +411 -90
- package/dist/{chunk-NK4JHJNP.js → chunk-TCBWHLKH.js} +4 -4
- package/dist/{chunk-R6CKQLEA.js → chunk-TS4LSNRI.js} +2 -2
- package/dist/{chunk-4Q7H3TO7.js → chunk-TVWYMOZ4.js} +1 -1
- package/dist/{chunk-TCV3WA5I.js → chunk-VAHQOIQY.js} +1 -1
- package/dist/{chunk-ZEHBSA25.js → chunk-VQQPYI4X.js} +1 -1
- package/dist/{chunk-PZDAPIQL.js → chunk-VS7V5HNO.js} +1 -1
- package/dist/{chunk-7R7KDRKV.js → chunk-W7VKGB42.js} +1 -1
- package/dist/{chunk-M7774YLB.js → chunk-WC44PNZU.js} +1 -1
- package/dist/{chunk-3AL2LO3L.js → chunk-WHUQ44F2.js} +1 -1
- package/dist/{chunk-4RQ62XXK.js → chunk-X2ZHCNNB.js} +5 -5
- package/dist/{chunk-T2PAFWRK.js → chunk-X4FHT6ST.js} +5 -5
- package/dist/{chunk-N3JEYUDV.js → chunk-XC5OASHV.js} +1 -1
- package/dist/{agent-defs-generator-QN3J6FVJ.js → chunk-XDOCXKHW.js} +61 -21
- package/dist/{chunk-OEHZ46WQ.js → chunk-XEAZJXMZ.js} +2 -2
- package/dist/{chunk-DACRR362.js → chunk-XQ7BIVLI.js} +6 -6
- package/dist/{chunk-7P2TDFZL.js → chunk-Z3LGAFMG.js} +1 -1
- package/dist/{chunk-GEQQGN3J.js → chunk-ZJ6AMC4Y.js} +7 -7
- package/dist/{chunk-IURGBN5B.js → chunk-ZZR2WRNW.js} +4 -4
- package/dist/{cleanup-graph-garbage-NKAJSCWZ.js → cleanup-graph-garbage-SYGPMPUM.js} +8 -8
- package/dist/{cli-shutdown-F3DFDCB5.js → cli-shutdown-JI7CASE4.js} +1 -1
- package/dist/{cloud-sync-command-3YBLSMAL.js → cloud-sync-command-ZV3P5FP6.js} +2 -2
- package/dist/{cloud-sync-db-init-JWSPAFKY.js → cloud-sync-db-init-RQIHWKV4.js} +1 -1
- package/dist/{cloud-sync-shutdown-4R6RIO67.js → cloud-sync-shutdown-V2N7VLD3.js} +3 -3
- package/dist/{co-activation-2ZRANV3Q.js → co-activation-SRE6DIRX.js} +3 -3
- package/dist/{co-occurrence-6EELW2L2.js → co-occurrence-F5TMSEQZ.js} +6 -6
- package/dist/{consent-passphrase-TDR263MC.js → consent-passphrase-MWZRHJRC.js} +2 -2
- package/dist/content-extractor-GWF2T7FK.js +13 -0
- package/dist/{conversation-entity-extractor-KUJN3MOH.js → conversation-entity-extractor-XMOUHGMT.js} +3 -3
- package/dist/{crdt-sync-IX43KVQ3.js → crdt-sync-FXEKABM7.js} +4 -4
- package/dist/{crm-webhook-GSCIW6CE.js → crm-webhook-D6IJOPRQ.js} +2 -2
- package/dist/{cto-delegation-gate-ZWD4EFRR.js → cto-delegation-gate-BU3JRCYN.js} +12 -15
- package/dist/{daemon-orchestration-WL6V4QL4.js → daemon-orchestration-K4NKFYXO.js} +19 -21
- package/dist/{destructive-data-guard-JDUJ2ULM.js → destructive-data-guard-3TGAAE7K.js} +77 -23
- package/dist/{doc-graph-extractor-NJ7ZZC2C.js → doc-graph-extractor-TVK2NGAR.js} +6 -6
- package/dist/{documents-O7WYZFFE.js → documents-MDZ4VB5X.js} +8 -8
- package/dist/{dreaming-TUESPDT3.js → dreaming-L24PSS35.js} +17 -20
- package/dist/{employee-boot-brief-UCP6QLN4.js → employee-boot-brief-GQVL3FQC.js} +23 -25
- package/dist/{entity-boost-TK43XT24.js → entity-boost-OMFA5QCG.js} +2 -2
- package/dist/{exe-drift-QD6LUZT2.js → exe-drift-JDDG3OPT.js} +4 -4
- package/dist/{exe-export-QIUNHFSS.js → exe-export-EEGIE3JP.js} +10 -10
- package/dist/{exe-import-3UFOLHEW.js → exe-import-UJNC5Q2L.js} +10 -10
- package/dist/{exe-key-D5NDKGHT.js → exe-key-TYEY4W4E.js} +97 -97
- package/dist/{exe-org-UWDJBOCV.js → exe-org-B3ICTTEV.js} +32 -32
- package/dist/{exe-snapshot-P6SFODEN.js → exe-snapshot-VBFBONYN.js} +20 -23
- package/dist/{fast-db-init-SD7JZSEC.js → fast-db-init-TFRTK6EH.js} +1 -1
- package/dist/{founder-context-QIXDZIJX.js → founder-context-3X4QUWKD.js} +2 -2
- package/dist/{founder-monitor-envelope-TLOC4UYG.js → founder-monitor-envelope-54UNZNY4.js} +4 -4
- package/dist/gateway/index.js +11 -11
- package/dist/{gateway-client-CQTSYJLP.js → gateway-client-OUDO5GGV.js} +1 -1
- package/dist/{git-staleness-JSQTHB4Z.js → git-staleness-73YZ5PGU.js} +3 -3
- package/dist/{global-procedures-T3RKI4QX.js → global-procedures-PYNE2BQG.js} +20 -6
- package/dist/{graph-auto-extract-V75GSTNX.js → graph-auto-extract-PGUMEEQB.js} +6 -6
- package/dist/{graph-query-VAQN2RK3.js → graph-query-7YA3YNKL.js} +1 -1
- package/dist/{graph-rag-GBA5E3QC.js → graph-rag-UWOTK4AQ.js} +3 -3
- package/dist/{hook-integrity-II6QK6Y4.js → hook-integrity-6MNEPT6W.js} +1 -1
- package/dist/{hook-prefetch-5EHPOYY3.js → hook-prefetch-JOF6YZSR.js} +13 -16
- package/dist/hooks/bug-report-worker.js +17 -20
- package/dist/hooks/codex-stop-task-finalizer.js +19 -22
- package/dist/hooks/commit-complete.js +16 -19
- package/dist/hooks/error-recall.js +14 -14
- package/dist/hooks/exe-heartbeat-hook.js +5 -5
- package/dist/hooks/ingest-worker.js +18 -20
- package/dist/hooks/ingest.js +16 -16
- package/dist/hooks/instructions-loaded.js +7 -7
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +6 -6
- package/dist/hooks/post-compact.js +5 -5
- package/dist/hooks/post-tool-combined.js +13 -13
- package/dist/hooks/pre-compact.js +16 -19
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/prompt-submit.js +40 -39
- package/dist/hooks/session-end.js +21 -24
- package/dist/hooks/session-start.js +18 -18
- package/dist/hooks/stop.js +19 -22
- package/dist/hooks/subagent-stop.js +18 -21
- package/dist/hooks/summary-worker.js +20 -23
- package/dist/index.js +25 -28
- package/dist/{installer-XEEZSF3V.js → installer-34XZ7JMW.js} +7 -8
- package/dist/{installer-MPVQ5L22.js → installer-356RMQ2K.js} +7 -8
- package/dist/{installer-ILYC4LI5.js → installer-7TN36Z7T.js} +113 -30
- package/dist/{intercom-queue-QGHAW2KO.js → intercom-queue-ZJ3MNULM.js} +12 -15
- package/dist/lib/backup-verify-worker.js +157 -0
- package/dist/lib/cloud-sync.js +16 -20
- package/dist/lib/consolidation.js +9 -9
- package/dist/lib/crypto.js +3 -3
- package/dist/lib/database.js +3 -3
- package/dist/lib/db-backup.js +7 -3
- package/dist/lib/db-write-worker.js +3 -3
- package/dist/lib/db.js +3 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +7 -7
- package/dist/lib/employees.js +3 -3
- package/dist/lib/error-detector.js +2 -2
- package/dist/lib/exe-daemon.js +89 -87
- package/dist/lib/hybrid-search.js +11 -11
- package/dist/lib/identity.js +5 -3
- package/dist/lib/keychain.js +1 -1
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +13 -16
- package/dist/lib/post-tool-memory.js +16 -18
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +4 -4
- package/dist/lib/schedules.js +8 -8
- package/dist/lib/session-registry.js +5 -5
- package/dist/lib/skill-learning.js +9 -9
- package/dist/lib/store.js +7 -7
- package/dist/lib/task-router.js +4 -4
- package/dist/lib/tasks.js +14 -17
- package/dist/lib/tmux-routing.js +14 -41
- package/dist/lib/token-spend.js +4 -4
- package/dist/lib/ws-client.js +1 -1
- package/dist/{license-gate-CARN6AB6.js → license-gate-4BXUTHLB.js} +3 -3
- package/dist/{license-recheck-7Z3LS6YS.js → license-recheck-QFPUKISQ.js} +1 -1
- package/dist/{license-sync-PUQV3HSZ.js → license-sync-FDEDT4AC.js} +2 -2
- package/dist/mcp/register-tools.js +96 -96
- package/dist/mcp/server.js +96 -96
- package/dist/mcp/tools/complete-reminder.js +5 -5
- package/dist/mcp/tools/create-reminder.js +5 -5
- package/dist/mcp/tools/create-task.js +16 -19
- package/dist/mcp/tools/deactivate-behavior.js +10 -10
- package/dist/mcp/tools/list-reminders.js +5 -5
- package/dist/mcp/tools/list-tasks.js +16 -19
- package/dist/mcp/tools/send-message.js +15 -18
- package/dist/mcp/tools/update-task.js +15 -18
- package/dist/{mcp-http-config-RJKTZPHZ.js → mcp-http-config-GKP5QGAO.js} +5 -5
- package/dist/{mcp-session-identity-HN444A3G.js → mcp-session-identity-JHAGRB7B.js} +12 -15
- package/dist/{memory-cards-AT3QCCWU.js → memory-cards-O377ETAM.js} +8 -8
- package/dist/{memory-graph-extractor-B43UWGV5.js → memory-graph-extractor-4KJCCUOP.js} +7 -7
- package/dist/{memory-maintenance-WDLL3ZX3.js → memory-maintenance-RR5UPRW3.js} +1 -1
- package/dist/{memory-poisoning-defense-TS4WNW4S.js → memory-poisoning-defense-Y5TTKGOP.js} +3 -3
- package/dist/{memory-pressure-watchdog-6YH7S6W7.js → memory-pressure-watchdog-NGXTI4HR.js} +13 -16
- package/dist/{memory-reflection-N6NSYW6S.js → memory-reflection-EXNHRZL7.js} +8 -8
- package/dist/{memory-write-repository-D35RDO62.js → memory-write-repository-S4TX7WQB.js} +1 -1
- package/dist/{monitor-grants-FH4PNYN5.js → monitor-grants-57Q4NL25.js} +3 -3
- package/dist/{monitor-identity-LK5ZCCND.js → monitor-identity-3FQ52SYU.js} +2 -2
- package/dist/{notification-ledger-3WJYJGGS.js → notification-ledger-O6KQYYGK.js} +13 -16
- package/dist/{notifications-T5C2CVB3.js → notifications-6FCQCJ4P.js} +12 -15
- package/dist/{orchestration-events-73VEJT7Q.js → orchestration-events-2Z2BMMA5.js} +4 -4
- package/dist/{orchestrator-3O657734.js → orchestrator-AGOSKPHD.js} +14 -17
- package/dist/{org-brief-session-EGB35QLM.js → org-brief-session-WJHZVXXJ.js} +15 -15
- package/dist/{org-consent-policy-MSVSRI53.js → org-consent-policy-X43UGTHI.js} +5 -5
- package/dist/{org-join-4BK2XJJI.js → org-join-M3UTBMHC.js} +9 -9
- package/dist/{org-key-admin-EUSSGXQ3.js → org-key-admin-AA2DRHB2.js} +11 -11
- package/dist/{org-key-epoch-NMEWDT5L.js → org-key-epoch-Z5UIVUHT.js} +5 -5
- package/dist/{org-key-pin-HUSXGINB.js → org-key-pin-FE6YHEZ3.js} +3 -3
- package/dist/{org-membership-B74IWEM5.js → org-membership-3J2MIGE4.js} +4 -4
- package/dist/{org-partner-config-5FJTJABN.js → org-partner-config-5HATZYG4.js} +8 -8
- package/dist/{org-partner-runtime-GN4GFWI2.js → org-partner-runtime-UI35IHUC.js} +15 -15
- package/dist/{org-row-visibility-PBZ2TSCR.js → org-row-visibility-TRJERVYP.js} +1 -1
- package/dist/{pipeline-router-2IELBSVJ.js → pipeline-router-EKQ6D7ZA.js} +4 -4
- package/dist/{plan-limits-4GXK5PFT.js → plan-limits-3BGHIHX6.js} +6 -6
- package/dist/{platform-procedures-QP3W2NLH.js → platform-procedures-RXW46WNY.js} +1 -1
- package/dist/{pre-tool-use-impl-CY73PRJP.js → pre-tool-use-impl-7BT5TJVM.js} +35 -33
- package/dist/{project-name-337ERIAX.js → project-name-PGJGUEJY.js} +4 -4
- package/dist/{projection-worker-W476IG6V.js → projection-worker-3GEVFPAI.js} +2 -2
- package/dist/{prospective-memory-5INB7NUL.js → prospective-memory-GEN7CN7H.js} +3 -3
- package/dist/{push-notifications-YVOP4KGN.js → push-notifications-QW4BWRC7.js} +13 -16
- package/dist/{reproject-worktree-memories-OGBR3CMO.js → reproject-worktree-memories-DIULBEBD.js} +12 -15
- package/dist/{reranker-W7WCJH6Y.js → reranker-LQ6OPJOI.js} +1 -1
- package/dist/{retrieval-health-R6MGXLTP.js → retrieval-health-XDFYFEOP.js} +1 -1
- package/dist/{review-polling-TKAWVY6G.js → review-polling-ED33YLFT.js} +13 -16
- package/dist/runtime/index.js +20 -23
- package/dist/{session-events-HUCZ7TOR.js → session-events-7IJGTBVH.js} +13 -16
- package/dist/{session-kill-telemetry-RWRWOW4C.js → session-kill-telemetry-RUTEARJ3.js} +13 -16
- package/dist/{session-scope-5CDRHV75.js → session-scope-SSYA64L3.js} +12 -15
- package/dist/{setup-wizard-RBTJAZOP.js → setup-wizard-XD7FZVLJ.js} +2 -2
- package/dist/{shard-manager-LRPAAQA4.js → shard-manager-FH5JZRSE.js} +2 -2
- package/dist/{skill-refinement-MDXKDCY6.js → skill-refinement-UHD4E6GV.js} +4 -4
- package/dist/{skill-retrieval-OWY6MTCX.js → skill-retrieval-F6PAJ3I5.js} +11 -11
- package/dist/{skill-usage-GNV737U5.js → skill-usage-2MBTF7Y4.js} +4 -4
- package/dist/{stack-generate-manifest-S4SBLKBY.js → stack-generate-manifest-SU6OFFY7.js} +4 -4
- package/dist/{stack-promote-U4EZNLOV.js → stack-promote-MJF436JD.js} +4 -4
- package/dist/{stack-release-4VBGOYGK.js → stack-release-S37R57XC.js} +5 -5
- package/dist/{stack-update-C5YKHE7A.js → stack-update-XXDRKGGR.js} +3 -3
- package/dist/{steward-gate-QFPXQBUZ.js → steward-gate-EWG2BHYQ.js} +4 -4
- package/dist/{subagent-brief-injection-GDXO5WNS.js → subagent-brief-injection-YZGSWUEY.js} +25 -27
- package/dist/{support-bug-actions-4XEKXIIO.js → support-bug-actions-RU6WZ3UV.js} +3 -3
- package/dist/{support-inbox-Y7AFCOGM.js → support-inbox-A3S52SPS.js} +12 -12
- package/dist/{task-enforcement-CN3Q4PEH.js → task-enforcement-LVAS55AR.js} +13 -16
- package/dist/{task-request-inbox-AY3C6DND.js → task-request-inbox-2TN4ZUH2.js} +5 -5
- package/dist/{task-scope-AMR3Z3DJ.js → task-scope-NLKUVCP5.js} +12 -15
- package/dist/{tasks-crud-2GHKIZOM.js → tasks-crud-NQDPLHNZ.js} +14 -15
- package/dist/{tasks-notify-Z53446KM.js → tasks-notify-BDM2NEHP.js} +13 -16
- package/dist/{tasks-review-APRNSHMQ.js → tasks-review-3G7CAW2O.js} +12 -15
- package/dist/{telemetry-upload-5XR42SQN.js → telemetry-upload-6DR6AL3V.js} +8 -8
- package/dist/{token-budget-TTNJXI7W.js → token-budget-KNC2WGR7.js} +4 -4
- package/dist/{tool-telemetry-36ST422N.js → tool-telemetry-I3SEU5M5.js} +1 -1
- package/dist/tui/App.js +23 -26
- package/dist/{tui-data-AP5TPUOQ.js → tui-data-KJDWP4CB.js} +16 -19
- package/dist/{update-support-SFTI2PUD.js → update-support-UYDYMHVR.js} +11 -11
- package/dist/{whatsapp-5CXE3JHG.js → whatsapp-5EMPZHF5.js} +2 -2
- package/dist/{wiki-acl-N754BC2W.js → wiki-acl-M7BTQJBZ.js} +1 -1
- package/dist/{work-claims-OAICQBWO.js → work-claims-5CFMZTML.js} +4 -4
- package/dist/{work-state-heartbeat-MTTUGMPU.js → work-state-heartbeat-7IA2DZ2E.js} +1 -1
- package/dist/{workflow-engine-RID3QL2U.js → workflow-engine-S5JOE2YR.js} +2 -2
- package/dist/{worktree-XWVNDBRD.js → worktree-7V4ZMF3D.js} +5 -5
- package/dist/{worktree-sweep-6VEHGH7U.js → worktree-sweep-34MXJ7S6.js} +6 -6
- package/package.json +2 -1
- package/release-notes.json +25 -7
- package/stack.release.json +3 -3
- package/dist/chunk-ESO5JDOT.js +0 -70
- package/dist/chunk-KCRSJ3VU.js +0 -113
- package/dist/content-extractor-OVD7PTSN.js +0 -9
- /package/dist/{chunk-OLMLA377.js → chunk-542FBM5U.js} +0 -0
- /package/dist/{chunk-LDHJX4TZ.js → chunk-6D2O5SAH.js} +0 -0
- /package/dist/{chunk-33PG3KNY.js → chunk-6NRZLVK3.js} +0 -0
- /package/dist/{chunk-CLV7ALXV.js → chunk-CFO47VW4.js} +0 -0
- /package/dist/{chunk-FLO24BNN.js → chunk-EULAP6L6.js} +0 -0
- /package/dist/{chunk-PKM456D2.js → chunk-FYSKQPTE.js} +0 -0
- /package/dist/{chunk-WIDOLS7T.js → chunk-J4B4M5PH.js} +0 -0
- /package/dist/{chunk-YBB43SXC.js → chunk-J635FA7T.js} +0 -0
- /package/dist/{chunk-64UAHPXA.js → chunk-MOBZTIJQ.js} +0 -0
- /package/dist/{chunk-EZQ4W3WW.js → chunk-N45FAI6D.js} +0 -0
- /package/dist/{chunk-OEEHLATI.js → chunk-QDSNEGJE.js} +0 -0
- /package/dist/{chunk-YG4DZZ6J.js → chunk-SKSXROKP.js} +0 -0
- /package/dist/{chunk-FUZHMV7K.js → chunk-YVWXI2HM.js} +0 -0
- /package/dist/{core-memory-WR7I7DIP.js → core-memory-PZEO3OWH.js} +0 -0
- /package/dist/{memory-isolation-4RQJ5RCK.js → memory-isolation-MFNT2ITE.js} +0 -0
- /package/dist/{oauth-server-VBDMZIEV.js → oauth-server-CBGEWD6H.js} +0 -0
- /package/dist/{project-boot-G7T5WHO6.js → project-boot-VESAYDIH.js} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isPaneBusy
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HUHR5CKJ.js";
|
|
4
4
|
import {
|
|
5
5
|
recordSessionKill
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3GGMHSY2.js";
|
|
7
7
|
import {
|
|
8
8
|
buildMergedPrCache,
|
|
9
9
|
getBranchLandedState
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VS7V5HNO.js";
|
|
11
11
|
import {
|
|
12
12
|
updateTask
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-IC2AONBH.js";
|
|
14
14
|
import {
|
|
15
15
|
BUSY_PATTERN,
|
|
16
16
|
countPendingReviews,
|
|
@@ -29,14 +29,14 @@ import {
|
|
|
29
29
|
sessionScopeFilter,
|
|
30
30
|
strictSessionScopeFilter,
|
|
31
31
|
writeNotification
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-GM4UEZDE.js";
|
|
33
33
|
import {
|
|
34
34
|
LEASE_MINUTES,
|
|
35
35
|
isLeaseExpired
|
|
36
36
|
} from "./chunk-E23LNUWJ.js";
|
|
37
37
|
import {
|
|
38
38
|
listSessions
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-QSW5DHMZ.js";
|
|
40
40
|
import {
|
|
41
41
|
getTransport
|
|
42
42
|
} from "./chunk-VI4ATC6I.js";
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
} from "./chunk-6L4VIYLZ.js";
|
|
52
52
|
import {
|
|
53
53
|
recordOrchestrationEventBestEffort
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-JGBYZTWH.js";
|
|
55
55
|
import {
|
|
56
56
|
checkDispatchStatus,
|
|
57
57
|
readTerminalLauncherFailure,
|
|
@@ -79,7 +79,7 @@ import {
|
|
|
79
79
|
getCoordinatorName,
|
|
80
80
|
isCoordinatorName,
|
|
81
81
|
shouldAutoInstance
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-L5JFVK5T.js";
|
|
83
83
|
import {
|
|
84
84
|
eventLoopBlockedMarkerPath
|
|
85
85
|
} from "./chunk-ZQEJ4IX2.js";
|
|
@@ -3822,7 +3822,7 @@ function createMergedPrCacheMemo(lookup = buildMergedPrCache) {
|
|
|
3822
3822
|
}
|
|
3823
3823
|
async function createWorktreeReaperRealDeps() {
|
|
3824
3824
|
const { getPaneCwdAsync } = await import("./lib/tmux-status.js");
|
|
3825
|
-
const { getGitRootAsync, isWorktreeDirtyAsync, GIT_CRYPT_SMUDGE_BYPASS_ARGS } = await import("./worktree-
|
|
3825
|
+
const { getGitRootAsync, isWorktreeDirtyAsync, GIT_CRYPT_SMUDGE_BYPASS_ARGS } = await import("./worktree-7V4ZMF3D.js");
|
|
3826
3826
|
const { statSync: statSync3 } = await import("fs");
|
|
3827
3827
|
const { basename: basename2 } = await import("path");
|
|
3828
3828
|
const { promisify: promisify2 } = await import("util");
|
|
@@ -4070,7 +4070,7 @@ function shouldNotifyTaskGroupViaIntercom(executionMode) {
|
|
|
4070
4070
|
}
|
|
4071
4071
|
async function pollTaskGroupBarriers() {
|
|
4072
4072
|
try {
|
|
4073
|
-
const { checkAndFireBarriers } = await import("./tasks-crud-
|
|
4073
|
+
const { checkAndFireBarriers } = await import("./tasks-crud-NQDPLHNZ.js");
|
|
4074
4074
|
const firedGroupIds = await checkAndFireBarriers();
|
|
4075
4075
|
if (firedGroupIds.length === 0) return 0;
|
|
4076
4076
|
const { getClient } = await import("./lib/database.js");
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-VGMACSEV.js";
|
|
4
4
|
import {
|
|
5
5
|
storeBehavior
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KEDZRQI3.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-L5JFVK5T.js";
|
|
10
10
|
import {
|
|
11
11
|
loadConfig
|
|
12
12
|
} from "./chunk-MMS2HBRT.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
withScopedReadWindow
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KN5GAVCG.js";
|
|
4
4
|
import {
|
|
5
5
|
requireOrgPartnerBinding,
|
|
6
6
|
resolvePartnerIdentities
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CJ6CS2IH.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-XQ7BIVLI.js";
|
|
26
26
|
import {
|
|
27
27
|
queueMailboxDeposit
|
|
28
28
|
} from "./chunk-3FGBBJYM.js";
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
createCRMWebhookHandler,
|
|
9
9
|
parseTwentyWebhook
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-RHJOTGEU.js";
|
|
11
11
|
import {
|
|
12
12
|
WhatsAppAdapter
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3N24FV22.js";
|
|
14
14
|
import {
|
|
15
15
|
SignalAdapter
|
|
16
16
|
} from "./chunk-RJT7H2KR.js";
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
retryWithBackoff,
|
|
43
43
|
routeMessage,
|
|
44
44
|
validateGatewayConfig
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-XEAZJXMZ.js";
|
|
46
46
|
import {
|
|
47
47
|
OllamaProvider
|
|
48
48
|
} from "./chunk-FWFFZGSC.js";
|
|
@@ -22,7 +22,7 @@ var OrgOriginProvenanceError = class extends Error {
|
|
|
22
22
|
async function mintOrgOriginStamp(input) {
|
|
23
23
|
if (!input.orgId) throw new OrgOriginProvenanceError("An org-origin stamp requires a non-empty org_id (\xA71.5)");
|
|
24
24
|
if (!input.requestId) throw new OrgOriginProvenanceError("An org-origin stamp requires a request id");
|
|
25
|
-
const { getTaskRequest } = await import("./task-request-inbox-
|
|
25
|
+
const { getTaskRequest } = await import("./task-request-inbox-2TN4ZUH2.js");
|
|
26
26
|
const req = getTaskRequest(input.orgId, input.requestId);
|
|
27
27
|
if (!req) {
|
|
28
28
|
throw new OrgOriginProvenanceError(
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordSessionKill
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3GGMHSY2.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter,
|
|
6
6
|
verifyPaneAtCapacity,
|
|
7
7
|
writeNotification
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GM4UEZDE.js";
|
|
9
9
|
import {
|
|
10
10
|
listSessions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QSW5DHMZ.js";
|
|
12
12
|
import {
|
|
13
13
|
getTransport
|
|
14
14
|
} from "./chunk-VI4ATC6I.js";
|
|
15
15
|
import {
|
|
16
16
|
recordOrchestrationEventBestEffort
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-JGBYZTWH.js";
|
|
18
18
|
import {
|
|
19
19
|
getClient,
|
|
20
20
|
isCoordinatorName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-L5JFVK5T.js";
|
|
22
22
|
|
|
23
23
|
// src/lib/capacity-monitor.ts
|
|
24
24
|
var CAPACITY_PATTERNS = [
|
|
@@ -85,7 +85,7 @@ async function getRetrievalHealth() {
|
|
|
85
85
|
totalMemories = Number(totalRes.rows[0]?.cnt ?? 0);
|
|
86
86
|
memoriesWithVectors = Number(vectorRes.rows[0]?.cnt ?? 0);
|
|
87
87
|
try {
|
|
88
|
-
const { getGraphStats } = await import("./graph-query-
|
|
88
|
+
const { getGraphStats } = await import("./graph-query-7YA3YNKL.js");
|
|
89
89
|
const stats = await getGraphStats(client);
|
|
90
90
|
entities = stats.entities;
|
|
91
91
|
relationships = stats.relationships;
|
|
@@ -111,10 +111,12 @@ async function getRetrievalHealth() {
|
|
|
111
111
|
ledgerReadFailures["db-restore"] = err instanceof Error ? err.message : String(err);
|
|
112
112
|
}
|
|
113
113
|
let dbIntegrity = NO_INTEGRITY_EVENTS;
|
|
114
|
+
let backupFailedDetails = [];
|
|
114
115
|
try {
|
|
115
|
-
const { getDbIntegrityHealth } = await import("./db-integrity-events-6363LLDT.js");
|
|
116
|
+
const { getDbIntegrityHealth, listDbIntegrityEvents } = await import("./db-integrity-events-6363LLDT.js");
|
|
116
117
|
dbIntegrity = getDbIntegrityHealth();
|
|
117
118
|
if (dbIntegrity.readFailure) ledgerReadFailures["db-integrity"] = dbIntegrity.readFailure;
|
|
119
|
+
backupFailedDetails = listDbIntegrityEvents().filter((e) => e.kind === "backup-failed").map((e) => e.detail ?? "");
|
|
118
120
|
} catch (err) {
|
|
119
121
|
ledgerReadFailures["db-integrity"] = err instanceof Error ? err.message : String(err);
|
|
120
122
|
}
|
|
@@ -138,7 +140,8 @@ async function getRetrievalHealth() {
|
|
|
138
140
|
},
|
|
139
141
|
dbRestore,
|
|
140
142
|
dbIntegrity,
|
|
141
|
-
ledgerReadFailures
|
|
143
|
+
ledgerReadFailures,
|
|
144
|
+
backupFailedDetails
|
|
142
145
|
};
|
|
143
146
|
return {
|
|
144
147
|
...summary,
|
|
@@ -146,6 +149,8 @@ async function getRetrievalHealth() {
|
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
151
|
var NO_INTEGRITY_EVENTS = NO_DB_INTEGRITY_EVENTS;
|
|
152
|
+
var BACKUP_ARTIFACT_FAILURE = /ARTIFACT is unreadable|dirty-WAL backup could not be manifested/;
|
|
153
|
+
var BACKUP_ARTIFACT_FAILURE_SOURCE_VERIFIED = /backup ARTIFACT is unreadable while the source check said "verified"/;
|
|
149
154
|
function computeDegradations(h) {
|
|
150
155
|
const out = [];
|
|
151
156
|
for (const [ledger, reason] of Object.entries(h.ledgerReadFailures ?? {})) {
|
|
@@ -224,12 +229,35 @@ function computeDegradations(h) {
|
|
|
224
229
|
}
|
|
225
230
|
const gi = h.dbIntegrity ?? NO_INTEGRITY_EVENTS;
|
|
226
231
|
if (gi.failedBackups > 0) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
232
|
+
const details = h.backupFailedDetails ?? [];
|
|
233
|
+
const artifactFailures = details.filter((d) => BACKUP_ARTIFACT_FAILURE.test(d)).length;
|
|
234
|
+
const verifiedSourceArtifactFailures = details.filter(
|
|
235
|
+
(d) => BACKUP_ARTIFACT_FAILURE_SOURCE_VERIFIED.test(d)
|
|
236
|
+
).length;
|
|
237
|
+
const unknownSourceArtifactFailures = artifactFailures - verifiedSourceArtifactFailures;
|
|
238
|
+
const sourceFailures = gi.failedBackups - artifactFailures;
|
|
239
|
+
if (sourceFailures > 0) {
|
|
240
|
+
out.push({
|
|
241
|
+
code: "backup_source_corrupt",
|
|
242
|
+
severity: "critical",
|
|
243
|
+
message: `${sourceFailures} backup(s) failed their source integrity check \u2014 the database itself did not verify`,
|
|
244
|
+
remediation: "Do NOT trust recent backups. Run `exe-os doctor` to confirm, and restore from the newest backup that carries a `backup-verified` ledger entry."
|
|
245
|
+
});
|
|
246
|
+
} else if (unknownSourceArtifactFailures > 0) {
|
|
247
|
+
out.push({
|
|
248
|
+
code: "backup_artifact_source_unknown",
|
|
249
|
+
severity: "warn",
|
|
250
|
+
message: `${unknownSourceArtifactFailures} backup ARTIFACT(s) failed after capture without a successful source check on record \u2014 the live database's integrity is UNKNOWN (neither proven clean nor proven corrupt)`,
|
|
251
|
+
remediation: "Do not assume the live DB is clean and do not restore over it on this evidence alone. Run `exe-os doctor` (or take a fresh backup and confirm its `backup-verified` event) to establish the live DB's integrity; the failed copies were quarantined and are not valid backups."
|
|
252
|
+
});
|
|
253
|
+
} else {
|
|
254
|
+
out.push({
|
|
255
|
+
code: "backup_artifact_unreadable",
|
|
256
|
+
severity: "warn",
|
|
257
|
+
message: `${gi.failedBackups} backup ARTIFACT(s) were unreadable after capture \u2014 the live database itself PASSED its integrity check`,
|
|
258
|
+
remediation: "The live DB is NOT corrupt \u2014 do NOT restore. The unreadable copies were quarantined and are not valid backups; the next scheduled backup replaces them. Run `exe-os doctor` to confirm."
|
|
259
|
+
});
|
|
260
|
+
}
|
|
233
261
|
}
|
|
234
262
|
if (gi.lastProvenBackupOnDisk && !postCaptureReverifyEnabled()) {
|
|
235
263
|
out.push({
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
extractIdentifiers,
|
|
5
5
|
isGarbageEntity,
|
|
6
6
|
normalizeEntityName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HTFM7ZDD.js";
|
|
8
8
|
import {
|
|
9
9
|
getClient
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-L5JFVK5T.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/memory-graph-extractor.ts
|
|
13
13
|
function relationshipId(sourceId, targetId, relType) {
|
|
@@ -432,7 +432,7 @@ async function upsertMemoryGraph(result, memoryId, opts) {
|
|
|
432
432
|
});
|
|
433
433
|
}
|
|
434
434
|
try {
|
|
435
|
-
const { createCoOccurrenceEdges } = await import("./co-occurrence-
|
|
435
|
+
const { createCoOccurrenceEdges } = await import("./co-occurrence-F5TMSEQZ.js");
|
|
436
436
|
await createCoOccurrenceEdges(result.entities, memoryId, { linkOnly });
|
|
437
437
|
} catch {
|
|
438
438
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sendMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7KPZQ65I.js";
|
|
4
4
|
import {
|
|
5
5
|
getActiveAgent
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GL5ZG72X.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveExeSession
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GM4UEZDE.js";
|
|
10
10
|
import {
|
|
11
11
|
getDispatcherSession
|
|
12
12
|
} from "./chunk-PCV52RYM.js";
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
getCoordinatorName,
|
|
18
18
|
isCoordinatorName
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-L5JFVK5T.js";
|
|
20
20
|
|
|
21
21
|
// src/mcp/tools/send-message.ts
|
|
22
22
|
import { z } from "zod";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-MMS2HBRT.js";
|
|
7
7
|
|
|
8
8
|
// src/lib/db-backup.ts
|
|
9
|
-
import { existsSync, readdirSync, unlinkSync, statSync, statfsSync, appendFileSync, writeFileSync } from "fs";
|
|
9
|
+
import { existsSync, readdirSync, unlinkSync, statSync, statfsSync, appendFileSync, writeFileSync, readFileSync } from "fs";
|
|
10
10
|
import { copyFile, mkdir, unlink, rename } from "fs/promises";
|
|
11
11
|
import { randomBytes } from "crypto";
|
|
12
12
|
import path from "path";
|
|
@@ -35,6 +35,28 @@ function clearBackupInFlight(backupPath) {
|
|
|
35
35
|
} catch {
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
function sweepStaleInflightMarkers(now = Date.now()) {
|
|
39
|
+
let removed = 0;
|
|
40
|
+
let files;
|
|
41
|
+
try {
|
|
42
|
+
files = readdirSync(BACKUP_DIR);
|
|
43
|
+
} catch {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
for (const file of files) {
|
|
47
|
+
if (!file.endsWith(INFLIGHT_MARKER_SUFFIX)) continue;
|
|
48
|
+
const backupPath = path.join(BACKUP_DIR, file.slice(0, -INFLIGHT_MARKER_SUFFIX.length));
|
|
49
|
+
if (activeBackupPaths.has(backupPath)) continue;
|
|
50
|
+
const marker = path.join(BACKUP_DIR, file);
|
|
51
|
+
try {
|
|
52
|
+
if (now - statSync(marker).mtimeMs < INFLIGHT_MARKER_STALE_MS) continue;
|
|
53
|
+
unlinkSync(marker);
|
|
54
|
+
removed++;
|
|
55
|
+
} catch {
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return removed;
|
|
59
|
+
}
|
|
38
60
|
function isBackupInFlight(backupPath) {
|
|
39
61
|
if (activeBackupPaths.has(backupPath)) return true;
|
|
40
62
|
try {
|
|
@@ -206,7 +228,48 @@ async function preBackupCheckpoint(dbPath, checkpointMode) {
|
|
|
206
228
|
`);
|
|
207
229
|
}
|
|
208
230
|
}
|
|
209
|
-
async function
|
|
231
|
+
async function offloadedSourceQuickCheck(dbPath) {
|
|
232
|
+
try {
|
|
233
|
+
const { backupVerifyOffloadEnabled, runInBackupVerifyWorker, reportBackupVerifyWorkerMissing } = await import("./backup-verify-AG54CYGR.js");
|
|
234
|
+
if (!backupVerifyOffloadEnabled()) return null;
|
|
235
|
+
if (!backupOffloadCreds || path.resolve(backupOffloadCreds.dbPath) !== path.resolve(dbPath)) {
|
|
236
|
+
process.stderr.write(
|
|
237
|
+
`[db-backup] off-loop source quick_check skipped: backup offload is ${backupOffloadCreds ? "registered for a different db" : "not registered yet"}; running the source quick_check on the main thread.
|
|
238
|
+
`
|
|
239
|
+
);
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
const run = await runInBackupVerifyWorker({
|
|
243
|
+
op: "source",
|
|
244
|
+
dbPath,
|
|
245
|
+
keyHex: backupOffloadCreds.encryptionKeyHex ?? null
|
|
246
|
+
});
|
|
247
|
+
if (run.ok && run.response.op === "source") {
|
|
248
|
+
if (run.response.verdict.toLowerCase() === "ok") return "ok";
|
|
249
|
+
process.stderr.write(
|
|
250
|
+
`[db-backup] off-loop source quick_check returned "${run.response.verdict.slice(0, 200)}"; re-checking on the trusted main-thread connection before acting on it.
|
|
251
|
+
`
|
|
252
|
+
);
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
if (!run.ok && run.unavailable) {
|
|
256
|
+
reportBackupVerifyWorkerMissing("backup source quick_check", run.reason);
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
process.stderr.write(
|
|
260
|
+
`[db-backup] off-loop source quick_check did not complete (${run.ok ? "unexpected reply" : run.reason}); falling back to the main-thread check.
|
|
261
|
+
`
|
|
262
|
+
);
|
|
263
|
+
return null;
|
|
264
|
+
} catch (err) {
|
|
265
|
+
process.stderr.write(
|
|
266
|
+
`[db-backup] off-loop source quick_check failed (${err instanceof Error ? err.message : String(err)}); falling back to the main-thread check.
|
|
267
|
+
`
|
|
268
|
+
);
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
async function quickCheckBackupSourceAfterCopy(reason, backupPath, dbPath) {
|
|
210
273
|
const route = await (async () => {
|
|
211
274
|
try {
|
|
212
275
|
const { isDbReadWorkerReady } = await import("./lib/db-read-worker-client.js");
|
|
@@ -238,8 +301,14 @@ async function quickCheckBackupSourceAfterCopy(reason, backupPath) {
|
|
|
238
301
|
if (!await canTrustIntegrityVerdict(client)) {
|
|
239
302
|
return markUnverified("connection is query_only; an FTS5 verdict from it is not trustworthy");
|
|
240
303
|
}
|
|
241
|
-
const
|
|
242
|
-
|
|
304
|
+
const offloaded = await offloadedSourceQuickCheck(dbPath);
|
|
305
|
+
let result;
|
|
306
|
+
if (offloaded === "ok") {
|
|
307
|
+
result = "ok";
|
|
308
|
+
} else {
|
|
309
|
+
const chk = await client.execute("PRAGMA quick_check;");
|
|
310
|
+
result = String(chk.rows[0]?.quick_check ?? chk.rows[0]?.[0] ?? "").trim();
|
|
311
|
+
}
|
|
243
312
|
if (result && result !== "ok") {
|
|
244
313
|
process.stderr.write(`[db-backup] CRITICAL: backup source failed quick_check (${reason}): ${result}
|
|
245
314
|
`);
|
|
@@ -417,6 +486,16 @@ async function createBackupAsync(reason = "manual", opts = {}) {
|
|
|
417
486
|
const dbPath = findActiveDb();
|
|
418
487
|
if (!dbPath) return null;
|
|
419
488
|
await mkdir(BACKUP_DIR, { recursive: true });
|
|
489
|
+
if (!opts.skipRetention && reason !== "pre-restore") {
|
|
490
|
+
try {
|
|
491
|
+
enforceSizeRetention();
|
|
492
|
+
} catch {
|
|
493
|
+
}
|
|
494
|
+
try {
|
|
495
|
+
enforceKeepOneRetention();
|
|
496
|
+
} catch {
|
|
497
|
+
}
|
|
498
|
+
}
|
|
420
499
|
let lowDisk = null;
|
|
421
500
|
try {
|
|
422
501
|
let dbSize = 0;
|
|
@@ -476,7 +555,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
|
|
|
476
555
|
markBackupInFlight(backupPath);
|
|
477
556
|
try {
|
|
478
557
|
await promoteTmpBackup(tmpBackupPath, backupPath, bytePreservingSidecars);
|
|
479
|
-
const sourceStatus = preserveForRestore ? null : await quickCheckBackupSourceAfterCopy(reason, backupPath);
|
|
558
|
+
const sourceStatus = preserveForRestore ? null : await quickCheckBackupSourceAfterCopy(reason, backupPath, dbPath);
|
|
480
559
|
if (sourceStatus === "failed") return null;
|
|
481
560
|
if (sourceStatus === "repaired") {
|
|
482
561
|
if (opts._retriedAfterFtsRepair) {
|
|
@@ -497,7 +576,7 @@ async function createBackupAsync(reason = "manual", opts = {}) {
|
|
|
497
576
|
let artifactState = "not-checked";
|
|
498
577
|
let artifactDetail = "artifact read-back did not run";
|
|
499
578
|
try {
|
|
500
|
-
const { manifestWriteEnabled, readBackBackupArtifact, manifestPathFor } = await import("./backup-verify-
|
|
579
|
+
const { manifestWriteEnabled, readBackBackupArtifact, manifestPathFor } = await import("./backup-verify-AG54CYGR.js");
|
|
501
580
|
if (manifestWriteEnabled()) {
|
|
502
581
|
const readback = await readBackBackupArtifact(backupPath, dbName, { keyHex: encryptionKey });
|
|
503
582
|
artifactState = readback.artifact;
|
|
@@ -737,7 +816,7 @@ function recordMissedBackup(entry) {
|
|
|
737
816
|
function alertMissedBackup(message, skipped) {
|
|
738
817
|
void (async () => {
|
|
739
818
|
try {
|
|
740
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
819
|
+
const { pushNotifyAsync } = await import("./push-notifications-QW4BWRC7.js");
|
|
741
820
|
pushNotifyAsync({
|
|
742
821
|
event: "backup_failed",
|
|
743
822
|
title: skipped ? "Backup SKIPPED \u2014 disk full" : "Backup FAILED \u2014 disk full",
|
|
@@ -878,14 +957,21 @@ function backupSizeCapBytes() {
|
|
|
878
957
|
return Math.max(3 * currentDbSize, DEFAULT_BACKUP_SIZE_CAP_FLOOR_BYTES);
|
|
879
958
|
}
|
|
880
959
|
function backupVerifiedProbe(backupPath) {
|
|
960
|
+
let raw;
|
|
881
961
|
try {
|
|
882
|
-
|
|
883
|
-
return true;
|
|
962
|
+
raw = readFileSync(backupPath + ".manifest.json", "utf-8");
|
|
884
963
|
} catch (err) {
|
|
885
964
|
const code = err.code;
|
|
886
965
|
if (code === "ENOENT" || code === "ENOTDIR") return false;
|
|
887
966
|
return null;
|
|
888
967
|
}
|
|
968
|
+
if (raw.trim() === "") return false;
|
|
969
|
+
try {
|
|
970
|
+
const parsed = JSON.parse(raw);
|
|
971
|
+
return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed);
|
|
972
|
+
} catch {
|
|
973
|
+
return false;
|
|
974
|
+
}
|
|
889
975
|
}
|
|
890
976
|
function enforceSizeRetention() {
|
|
891
977
|
if (!existsSync(BACKUP_DIR)) return 0;
|
|
@@ -975,6 +1061,10 @@ function tryUnlinkInBackupDir(p) {
|
|
|
975
1061
|
function enforceKeepOneRetention() {
|
|
976
1062
|
if (!existsSync(BACKUP_DIR)) return 0;
|
|
977
1063
|
let deleted = 0;
|
|
1064
|
+
try {
|
|
1065
|
+
sweepStaleInflightMarkers();
|
|
1066
|
+
} catch {
|
|
1067
|
+
}
|
|
978
1068
|
try {
|
|
979
1069
|
const files = readdirSync(BACKUP_DIR);
|
|
980
1070
|
const candidates = [];
|
|
@@ -1258,6 +1348,7 @@ function getBackupDir() {
|
|
|
1258
1348
|
}
|
|
1259
1349
|
|
|
1260
1350
|
export {
|
|
1351
|
+
sweepStaleInflightMarkers,
|
|
1261
1352
|
isBackupInFlight,
|
|
1262
1353
|
findActiveDb,
|
|
1263
1354
|
registerBackupOffload,
|
|
@@ -1289,6 +1380,7 @@ export {
|
|
|
1289
1380
|
reasonFromBackupName,
|
|
1290
1381
|
discoverBackupReasons,
|
|
1291
1382
|
enforceRetention,
|
|
1383
|
+
backupVerifiedProbe,
|
|
1292
1384
|
enforceSizeRetention,
|
|
1293
1385
|
keepVerifiedCount,
|
|
1294
1386
|
selectKeepOneRetentionDeletions,
|