@askexenow/exe-os 0.9.356 → 0.9.358
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 +3 -3
- package/dist/{active-agent-LCRV3HVS.js → active-agent-OYZRH6D2.js} +6 -4
- package/dist/{active-agent-PYMOMGQ7.js → active-agent-QQJCFJG4.js} +6 -4
- package/dist/{agentic-ontology-TNKI4FOM.js → agentic-ontology-U5JHQDMG.js} +1 -1
- package/dist/{backfill-metadata-SFS4ARNR.js → backfill-metadata-D25I5HN2.js} +8 -6
- package/dist/{backup-verify-7NLKR4S6.js → backup-verify-ZLU3DBPH.js} +6 -1
- package/dist/{behavior-injection-OT7VX7M6.js → behavior-injection-GVCRBUYW.js} +10 -8
- package/dist/{behaviors-6GW5AFG4.js → behaviors-6B2FZ4KP.js} +9 -7
- package/dist/bin/agentic-ontology-backfill.js +9 -7
- package/dist/bin/agentic-reflection-backfill.js +10 -8
- package/dist/bin/agentic-semantic-label.js +9 -7
- package/dist/bin/backfill-conversations.js +8 -6
- package/dist/bin/backfill-responses.js +8 -6
- package/dist/bin/backfill-vectors.js +9 -7
- package/dist/bin/bulk-sync-postgres.js +14 -12
- package/dist/bin/cc-doctor.js +7 -5
- package/dist/bin/cleanup-stale-review-tasks.js +16 -14
- package/dist/bin/cli.js +19 -19
- package/dist/bin/deferred-daemon-restart.js +74 -72
- package/dist/bin/exe-agent-config.js +5 -3
- package/dist/bin/exe-agent.js +8 -6
- package/dist/bin/exe-assign.js +9 -7
- package/dist/bin/exe-boot.js +62 -28
- package/dist/bin/exe-call.js +8 -6
- package/dist/bin/exe-cloud.js +16 -14
- package/dist/bin/exe-config-dump.js +5 -3
- package/dist/bin/exe-dispatch.js +16 -14
- package/dist/bin/exe-doctor.js +9 -6
- package/dist/bin/exe-export-behaviors.js +11 -9
- package/dist/bin/exe-forget.js +10 -8
- package/dist/bin/exe-gateway.js +10 -8
- package/dist/bin/exe-healthcheck.js +7 -5
- package/dist/bin/exe-heartbeat.js +18 -16
- package/dist/bin/exe-kill.js +20 -18
- package/dist/bin/exe-launch-agent.js +27 -25
- package/dist/bin/exe-memory-reads.js +8 -6
- package/dist/bin/exe-new-employee.js +12 -10
- package/dist/bin/exe-os-mcp-proxy.js +6 -4
- package/dist/bin/exe-pending-messages.js +17 -15
- package/dist/bin/exe-pending-notifications.js +16 -14
- package/dist/bin/exe-pending-reviews.js +16 -14
- package/dist/bin/exe-rename.js +8 -6
- package/dist/bin/exe-review.js +19 -17
- package/dist/bin/exe-search.js +9 -7
- package/dist/bin/exe-session-cleanup.js +20 -18
- package/dist/bin/exe-settings.js +14 -12
- package/dist/bin/exe-start-codex.js +16 -14
- package/dist/bin/exe-start-opencode.js +12 -10
- package/dist/bin/exe-status.js +17 -15
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +6 -4
- package/dist/bin/exe-timers.js +2 -1
- package/dist/bin/git-sweep.js +17 -15
- package/dist/bin/graph-backfill.js +9 -7
- package/dist/bin/graph-export.js +9 -7
- package/dist/bin/import-history.js +12 -10
- package/dist/bin/install.js +76 -74
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +7 -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/scan-tasks.js +16 -14
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +9 -7
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-7ZI7JYGR.js → boot-generation-EA4UCCZN.js} +6 -4
- package/dist/{boot-review-sections-3MSXM6V7.js → boot-review-sections-BBOHRDM3.js} +15 -13
- package/dist/{capability-cards-4RD2SB2K.js → capability-cards-XELC77DF.js} +5 -3
- package/dist/{capacity-monitor-5XUR3JTN.js → capacity-monitor-6FD2LIDV.js} +17 -15
- package/dist/{catchup-brief-AYJWMQUZ.js → catchup-brief-I3YBJXL4.js} +20 -18
- package/dist/{chunk-QXAE6S3A.js → chunk-2NPK6FIV.js} +3 -3
- package/dist/{chunk-YNYISUMW.js → chunk-2X76NMT7.js} +1 -1
- package/dist/{chunk-AWB7M62V.js → chunk-2XYL3ZBJ.js} +4 -4
- package/dist/{chunk-VCKIV5WG.js → chunk-36PGDNMS.js} +2 -2
- package/dist/{chunk-2TL5RKMC.js → chunk-3BAGFZFN.js} +1 -1
- package/dist/{chunk-EWOMZLR6.js → chunk-3I7SENGU.js} +1 -1
- package/dist/{chunk-FWJFKWYA.js → chunk-3M6TUMXM.js} +2 -2
- package/dist/{chunk-IIHFSNL4.js → chunk-5A43OWIJ.js} +1 -1
- package/dist/{chunk-6H4ZEU7P.js → chunk-5SWYRYRO.js} +4 -4
- package/dist/{chunk-TAR5J7WI.js → chunk-5T3VZ2TX.js} +4 -4
- package/dist/{chunk-WJIGSNJM.js → chunk-5TMFK3NT.js} +12 -12
- package/dist/chunk-5YEUPUV4.js +53 -0
- package/dist/{chunk-4VU2VCEU.js → chunk-6VUMFHWB.js} +1 -1
- package/dist/{chunk-X4EDW3FH.js → chunk-6ZUHNYAB.js} +1 -1
- package/dist/{chunk-H4ZSOAP6.js → chunk-72HSYKEQ.js} +1 -1
- package/dist/{chunk-DF5K4JJL.js → chunk-76IW4LIS.js} +3 -3
- package/dist/{chunk-P2Y6S53G.js → chunk-7AWKMYWF.js} +1 -1
- package/dist/{chunk-LDRMNJJJ.js → chunk-7G35SOMT.js} +2 -2
- package/dist/{chunk-A5P2MMII.js → chunk-7GUHIYZ6.js} +2 -2
- package/dist/{chunk-2WWGTOVP.js → chunk-7HFUCBQO.js} +19 -1
- package/dist/{chunk-JZXHLDQN.js → chunk-7KPY52EO.js} +1 -1
- package/dist/{chunk-LLXYWNCH.js → chunk-AXAHRTST.js} +1 -1
- package/dist/{chunk-ZMVVKOOS.js → chunk-AXXGZSW5.js} +7 -7
- package/dist/{chunk-6SAQSXT2.js → chunk-BP5H6ZJA.js} +1 -1
- package/dist/{chunk-EHL4RCND.js → chunk-CYAFF5EP.js} +1 -1
- package/dist/{chunk-H4IZKSOY.js → chunk-E47WQHCT.js} +1 -1
- package/dist/{chunk-QGLAMWQJ.js → chunk-EBOKPLWI.js} +3 -3
- package/dist/{chunk-NT4GET5B.js → chunk-ELGZDMXM.js} +4 -4
- package/dist/{chunk-KT4RUFYO.js → chunk-F25FABZ6.js} +3 -3
- package/dist/{chunk-W3IXTUCL.js → chunk-GXMS5PZR.js} +6 -6
- package/dist/{chunk-4OMIENRX.js → chunk-H3C2LVUB.js} +1 -1
- package/dist/{chunk-JUE37LOD.js → chunk-IEHGR7XU.js} +4 -4
- package/dist/{chunk-UQCYG6EI.js → chunk-INY36ISH.js} +1 -1
- package/dist/{chunk-4GGP4Q5N.js → chunk-IOSM2N3Z.js} +2 -2
- package/dist/{chunk-YSUHXDQU.js → chunk-IR6CEBWC.js} +21 -19
- package/dist/{chunk-XPGUSSG7.js → chunk-J3I5OG4P.js} +1 -1
- package/dist/{chunk-P7EUKYSQ.js → chunk-J4DLB36O.js} +1 -1
- package/dist/{chunk-VPMAC5VB.js → chunk-JXQB7HHZ.js} +1 -1
- package/dist/{chunk-APRVAUOR.js → chunk-JY5GAZYC.js} +1 -0
- package/dist/{chunk-2LM5GO5R.js → chunk-KTM4TODC.js} +5 -5
- package/dist/{chunk-YG4LS7TI.js → chunk-L576MK4B.js} +7 -7
- package/dist/{chunk-XQAELSOQ.js → chunk-L73MPNIB.js} +2 -2
- package/dist/{chunk-RUBXKPOT.js → chunk-LFJPHWHH.js} +1 -1
- package/dist/{chunk-PM4TIRCR.js → chunk-MODZZ52R.js} +1 -1
- package/dist/{chunk-JO6TS75M.js → chunk-MYJJSKE6.js} +1 -1
- package/dist/{chunk-ES6PDSEK.js → chunk-MZ6ZB6SP.js} +8 -8
- package/dist/{chunk-PNTRRXAN.js → chunk-N6XPSEIA.js} +1 -1
- package/dist/{chunk-6CZXY5BD.js → chunk-N7YI2ZRJ.js} +5 -5
- package/dist/{chunk-IO5FR7BZ.js → chunk-NIXTDUOC.js} +3 -3
- package/dist/{chunk-6UTP7AIH.js → chunk-NLDKJJDM.js} +1 -1
- package/dist/{chunk-PUAA3P47.js → chunk-NXZ2RSEO.js} +4 -4
- package/dist/{chunk-W3REQ37P.js → chunk-OFXQO43S.js} +2 -2
- package/dist/{chunk-Z5DTZ464.js → chunk-OIS5VIAH.js} +6 -0
- package/dist/{chunk-Y4JA5V22.js → chunk-OP7M5N5R.js} +1 -1
- package/dist/{chunk-CI3YVCUY.js → chunk-ORPELDVP.js} +1 -1
- package/dist/{chunk-PUNCHUEX.js → chunk-PTOJPD26.js} +3 -3
- package/dist/{chunk-TQ4O5A4S.js → chunk-Q5AFCR57.js} +1 -1
- package/dist/{chunk-6WAJJN5W.js → chunk-QJCFUUSB.js} +3 -3
- package/dist/{chunk-YQ7IZPVC.js → chunk-QQQ4I5IZ.js} +1 -1
- package/dist/{chunk-JKOEOHOD.js → chunk-R7F6HKTH.js} +6 -21
- package/dist/{chunk-CQPFNVWY.js → chunk-RGKB272D.js} +3 -3
- package/dist/{chunk-HAOZB4W6.js → chunk-SCR5Q5PI.js} +1 -1
- package/dist/{chunk-ES4XE6AU.js → chunk-SKTGLMUJ.js} +4 -4
- package/dist/{chunk-AJGTBW3N.js → chunk-SU3GMJT5.js} +1 -1
- package/dist/{chunk-JLXJMDKG.js → chunk-T6V4XURD.js} +1 -1
- package/dist/{chunk-KP3PLOGC.js → chunk-U5KZQP7R.js} +2 -2
- package/dist/{chunk-M5DPPJLS.js → chunk-U7I4YINB.js} +39 -7
- package/dist/{chunk-RZSPCNLY.js → chunk-UBVYDXTU.js} +1 -1
- package/dist/chunk-V3W3SATA.js +135 -0
- package/dist/{chunk-IT4TFJTK.js → chunk-V6QMFX46.js} +3 -3
- package/dist/{chunk-EQQYCP6D.js → chunk-VI4LQLD2.js} +1 -1
- package/dist/{chunk-WHQYVFE2.js → chunk-VIIOEVAF.js} +22 -15
- package/dist/{chunk-WL3CT5KX.js → chunk-VJACZJD2.js} +2 -2
- package/dist/{chunk-X7CWCQ5S.js → chunk-VJRLBE2R.js} +1 -1
- package/dist/{chunk-VU2MZ7BP.js → chunk-VNK3MNZE.js} +40 -3
- package/dist/{chunk-MVYB76QG.js → chunk-VRTCVZND.js} +16 -20
- package/dist/{chunk-LVZZ7YS3.js → chunk-W64WE36F.js} +2 -2
- package/dist/{chunk-7FKC2TIB.js → chunk-WA3ZB6TK.js} +1 -1
- package/dist/{chunk-ZWXSO4FN.js → chunk-WIKYYOHP.js} +9 -9
- package/dist/{chunk-DZNXWCJN.js → chunk-WKHC54KH.js} +1 -1
- package/dist/{chunk-SFSB64NK.js → chunk-WTTCNZ6J.js} +1 -1
- package/dist/{chunk-72GUU6Z4.js → chunk-WXUTAQX2.js} +3 -3
- package/dist/{chunk-OBWTTM7E.js → chunk-YPZTTTFH.js} +2 -2
- package/dist/chunk-YQGMSXT5.js +33 -0
- package/dist/{chunk-5Q2J6P4T.js → chunk-YVCKSEF6.js} +3 -3
- package/dist/{chunk-34MIJGQS.js → chunk-YXWAPO6F.js} +1 -1
- package/dist/{chunk-4KCLB4TY.js → chunk-YXY5AEPG.js} +1 -1
- package/dist/{chunk-ABM3DZF3.js → chunk-ZANQKOBC.js} +1 -1
- package/dist/{chunk-AW3WT3TJ.js → chunk-ZJB26D36.js} +119 -119
- package/dist/{cleanup-graph-garbage-XUNHVCRR.js → cleanup-graph-garbage-5DFMJQTV.js} +10 -8
- package/dist/{cloud-sync-shutdown-JRAERBUO.js → cloud-sync-shutdown-H36HDBZQ.js} +5 -3
- package/dist/{co-activation-5AN2CF23.js → co-activation-GWRPFKYT.js} +5 -3
- package/dist/{co-occurrence-A7E774ZX.js → co-occurrence-TBDCT3EB.js} +8 -6
- package/dist/{conversation-entity-extractor-2XI2GC4N.js → conversation-entity-extractor-CAFZFIDB.js} +3 -3
- package/dist/{crdt-sync-2IUU6GZ6.js → crdt-sync-DE6P7FHB.js} +1 -1
- package/dist/{crm-webhook-BQCP77TI.js → crm-webhook-GXUJOMHX.js} +2 -2
- package/dist/{cto-delegation-gate-UHHNMWCL.js → cto-delegation-gate-EKA7LOY7.js} +15 -13
- package/dist/{daemon-orchestration-7WS3X5DQ.js → daemon-orchestration-WEHBZJW4.js} +20 -19
- package/dist/{daemon-ready-signal-TVCPSG7J.js → daemon-ready-signal-CKXPUMJ2.js} +3 -1
- package/dist/{daemon-restart-report-QDRGKLL6.js → daemon-restart-report-HZU5LWXN.js} +2 -1
- package/dist/{daemon-timer-report-NM44WQRH.js → daemon-timer-report-TNJH5SFY.js} +2 -1
- package/dist/{doc-graph-extractor-NFERAJNP.js → doc-graph-extractor-QCT4CCBN.js} +8 -6
- package/dist/{documents-SW2MJUXY.js → documents-NJRAJKAS.js} +9 -7
- package/dist/{dreaming-KSNJVNFH.js → dreaming-MRNOUJKA.js} +19 -17
- package/dist/{exe-drift-NBLYKQBQ.js → exe-drift-CSOXQU4J.js} +6 -4
- package/dist/{exe-export-44IWTJHL.js → exe-export-ER75RRLD.js} +11 -9
- package/dist/{exe-import-PPECH3KO.js → exe-import-TYTAQ6AY.js} +11 -9
- package/dist/{exe-key-ZCRJQYA7.js → exe-key-HM4FZRL2.js} +77 -72
- package/dist/{exe-snapshot-OVINJ6MC.js → exe-snapshot-NS6PVGJL.js} +20 -18
- package/dist/{fast-db-init-B5Q3SJQG.js → fast-db-init-LRC6RZ6U.js} +1 -1
- package/dist/{founder-context-5OFTZNDO.js → founder-context-K5NWGKX7.js} +2 -2
- package/dist/gateway/index.js +11 -9
- package/dist/{git-staleness-XQJTOSGZ.js → git-staleness-VLVOG2SH.js} +5 -3
- package/dist/{global-procedures-YCJ3JPAP.js → global-procedures-EMTNFAMU.js} +7 -5
- package/dist/{graph-auto-extract-XJN6PQH3.js → graph-auto-extract-56OOJLRB.js} +8 -6
- package/dist/{graph-rag-HCQCZ2W7.js → graph-rag-WUM5JUB7.js} +3 -3
- package/dist/{hook-prefetch-FKXDTCDS.js → hook-prefetch-WQBVWWSD.js} +16 -14
- package/dist/hooks/bug-report-worker.js +18 -16
- package/dist/hooks/codex-stop-task-finalizer.js +19 -17
- package/dist/hooks/commit-complete.js +18 -16
- package/dist/hooks/error-recall.js +10 -8
- package/dist/hooks/exe-heartbeat-hook.js +6 -4
- package/dist/hooks/ingest.js +11 -9
- package/dist/hooks/instructions-loaded.js +7 -5
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +7 -5
- package/dist/hooks/post-compact.js +17 -15
- package/dist/hooks/post-tool-combined.js +10 -10
- package/dist/hooks/pre-compact.js +18 -16
- package/dist/hooks/pre-tool-use.js +23 -21
- package/dist/hooks/prompt-submit.js +34 -33
- package/dist/hooks/session-end.js +22 -20
- package/dist/hooks/session-start.js +13 -13
- package/dist/hooks/stop.js +21 -19
- package/dist/hooks/subagent-stop.js +19 -17
- package/dist/hooks/summary-worker.js +22 -25
- package/dist/index.js +25 -23
- package/dist/{installer-YSCUE6MT.js → installer-KBOFELYW.js} +8 -6
- package/dist/{installer-YTT5OSRL.js → installer-UDRUKMVA.js} +8 -6
- package/dist/{installer-G3DVMNC6.js → installer-VZYXKVLO.js} +8 -6
- package/dist/{intercom-queue-5D52JF3Q.js → intercom-queue-QWUEMESK.js} +15 -13
- package/dist/lib/cloud-sync.js +14 -12
- package/dist/lib/consolidation.js +10 -8
- package/dist/lib/database.js +9 -3
- package/dist/lib/db-backup.js +1 -1
- package/dist/lib/db-checkpoint-worker.js +4 -0
- package/dist/lib/db-daemon-client.js +3 -1
- package/dist/lib/db-read-worker.js +4 -0
- package/dist/lib/db-write-worker.js +3 -3
- package/dist/lib/db.js +9 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +8 -6
- package/dist/lib/employees.js +5 -3
- package/dist/lib/exe-daemon.js +202 -93
- package/dist/lib/hybrid-search.js +9 -7
- package/dist/lib/identity.js +5 -3
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +16 -14
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +6 -4
- package/dist/lib/schedules.js +9 -7
- package/dist/lib/session-registry.js +7 -5
- package/dist/lib/skill-learning.js +10 -8
- package/dist/lib/store.js +8 -6
- package/dist/lib/task-router.js +6 -4
- package/dist/lib/tasks.js +17 -15
- package/dist/lib/tmux-routing.js +15 -13
- package/dist/lib/token-spend.js +8 -4
- package/dist/{license-gate-DKYHCAMN.js → license-gate-4FBFBGOS.js} +3 -3
- package/dist/{license-sync-JVEXPDHN.js → license-sync-PES4GIXL.js} +2 -2
- package/dist/mcp/register-tools.js +73 -71
- package/dist/mcp/server.js +74 -72
- package/dist/mcp/tools/complete-reminder.js +7 -5
- package/dist/mcp/tools/create-reminder.js +7 -5
- package/dist/mcp/tools/create-task.js +19 -17
- package/dist/mcp/tools/deactivate-behavior.js +11 -9
- package/dist/mcp/tools/list-reminders.js +7 -5
- package/dist/mcp/tools/list-tasks.js +19 -17
- package/dist/mcp/tools/send-message.js +18 -16
- package/dist/mcp/tools/update-task.js +18 -16
- package/dist/{mcp-health-WDOB6XUB.js → mcp-health-HNVSWKFA.js} +6 -1
- package/dist/{mcp-http-config-L5RDDU6P.js → mcp-http-config-SL43BGFQ.js} +6 -4
- package/dist/{mcp-session-identity-S6UCHBER.js → mcp-session-identity-G2NSIUWR.js} +15 -13
- package/dist/{memory-cards-65RGFT5M.js → memory-cards-GOSSB6QK.js} +8 -6
- package/dist/{memory-graph-extractor-ZDZ5VQUX.js → memory-graph-extractor-5S6AVC5L.js} +9 -7
- package/dist/{memory-poisoning-defense-EQUQNXRE.js → memory-poisoning-defense-6KFJEDCT.js} +5 -3
- package/dist/{memory-pressure-watchdog-CC344JBH.js → memory-pressure-watchdog-7BOUNASS.js} +16 -14
- package/dist/{memory-reflection-Q4OT4V55.js → memory-reflection-LIILYJAS.js} +5 -3
- package/dist/{notification-ledger-GL3ZPZNR.js → notification-ledger-54CAO4AS.js} +16 -14
- package/dist/{notifications-FGYNO2FY.js → notifications-MCJFLBAO.js} +15 -13
- package/dist/{orchestration-events-N5FQ4SKU.js → orchestration-events-SHRMUOV7.js} +6 -4
- package/dist/{orchestrator-XUJDK4EW.js → orchestrator-RVUAGQV6.js} +17 -15
- package/dist/{pipeline-router-YQOZ4M62.js → pipeline-router-CWB6QZ5E.js} +6 -4
- package/dist/{plan-limits-VBHKYKSK.js → plan-limits-APRN2I6H.js} +8 -6
- package/dist/{platform-procedures-F3XB6WWM.js → platform-procedures-2VQGBJU7.js} +1 -1
- package/dist/{projection-worker-NJUNGEXE.js → projection-worker-ECMC4XKX.js} +2 -2
- package/dist/{prospective-memory-3MKUPDVI.js → prospective-memory-ZLMPXBGE.js} +5 -3
- package/dist/{reranker-LGSIL6TX.js → reranker-TLECHHQH.js} +1 -1
- package/dist/{retrieval-health-AEEQ5IO6.js → retrieval-health-K4EPRPJU.js} +1 -1
- package/dist/{review-polling-2RMEZ5QO.js → review-polling-6NYH7IO2.js} +16 -14
- package/dist/runtime/index.js +19 -17
- package/dist/{session-events-5XSYCV4I.js → session-events-RL7JNGJK.js} +16 -14
- package/dist/{session-kill-telemetry-QJUHG3IG.js → session-kill-telemetry-IV4BFLSS.js} +16 -14
- package/dist/{session-scope-LIJ746K2.js → session-scope-ISVYSAC2.js} +15 -13
- package/dist/{setup-wizard-RLUCGGA7.js → setup-wizard-OQB6FMJM.js} +1 -1
- package/dist/{shard-manager-3L2NMJVJ.js → shard-manager-DFLCDZT5.js} +2 -1
- package/dist/{skill-refinement-FMN3WFSG.js → skill-refinement-7SANCL3P.js} +6 -4
- package/dist/{stack-promote-BGDGAYKG.js → stack-promote-I7H727IS.js} +29 -4
- package/dist/{stack-release-SOIHMI3I.js → stack-release-6I7GGSC7.js} +4 -4
- package/dist/{stack-update-AXFHJRK5.js → stack-update-2ZV6MBXF.js} +3 -3
- package/dist/{steward-gate-R2XWABMV.js → steward-gate-SW4UYGIH.js} +6 -4
- package/dist/{support-inbox-IITW66TG.js → support-inbox-OX3VJ2OF.js} +3 -3
- package/dist/{task-enforcement-SFZGBY27.js → task-enforcement-VLGRGIKW.js} +16 -14
- package/dist/{task-scope-74ZIFQRH.js → task-scope-NTANJZPS.js} +15 -13
- package/dist/{tasks-crud-N54JZCXU.js → tasks-crud-FDCGFA72.js} +15 -13
- package/dist/{tasks-notify-62IJZW55.js → tasks-notify-GGN2HRFW.js} +16 -14
- package/dist/{tasks-review-3LHBE6ZJ.js → tasks-review-KFUKHWMF.js} +15 -13
- package/dist/{telemetry-upload-HR3QIWZV.js → telemetry-upload-GFEOMNUY.js} +10 -8
- package/dist/{token-budget-DBXHLCMN.js → token-budget-TJJV6ZCC.js} +6 -4
- package/dist/{tool-telemetry-UFUTCNE3.js → tool-telemetry-EH6SIQHX.js} +1 -1
- package/dist/tui/App.js +24 -22
- package/dist/{tui-data-BPXEJKRQ.js → tui-data-W4M3MMLG.js} +15 -13
- package/dist/{update-support-HLZ7KMVM.js → update-support-67ADNRYC.js} +12 -10
- package/dist/{work-state-heartbeat-IQI3LCHN.js → work-state-heartbeat-34V6UFHR.js} +1 -1
- package/dist/{worker-gate-5ABYGLC2.js → worker-gate-7EXQ46BV.js} +1 -1
- package/dist/{workflow-engine-XSUWZK6I.js → workflow-engine-IK6SIMT5.js} +2 -2
- package/dist/{worktree-EUYBBABA.js → worktree-HRX5BSXT.js} +7 -5
- package/dist/{worktree-sweep-LSKFA2PK.js → worktree-sweep-W24XZKQO.js} +8 -6
- package/package.json +2 -1
- package/release-notes.json +29 -30
- package/dist/chunk-7HLWBYH7.js +0 -60
- /package/dist/{chunk-AK77MITT.js → chunk-4QDO2KT4.js} +0 -0
- /package/dist/{chunk-HABPXFHZ.js → chunk-B2F5BZJA.js} +0 -0
- /package/dist/{chunk-A627QFOE.js → chunk-BH2X3N6S.js} +0 -0
- /package/dist/{chunk-2267TRAO.js → chunk-CCQ3VCK2.js} +0 -0
- /package/dist/{chunk-IHKRHGKT.js → chunk-F766HECM.js} +0 -0
- /package/dist/{chunk-7GOSAV25.js → chunk-L6GEKT6M.js} +0 -0
- /package/dist/{chunk-GVU3BW6N.js → chunk-MZXYP2YA.js} +0 -0
- /package/dist/{chunk-HMBMHZ3S.js → chunk-UURVJW2K.js} +0 -0
- /package/dist/{chunk-VML2UQK7.js → chunk-ZOFI53LD.js} +0 -0
- /package/dist/{chunk-G2MXTLOD.js → chunk-ZP3224K3.js} +0 -0
- /package/dist/{core-memory-KXE4QMOA.js → core-memory-P7YBDZGM.js} +0 -0
- /package/dist/{memory-isolation-VSKUKTN4.js → memory-isolation-A4CRGWRS.js} +0 -0
- /package/dist/{oauth-server-JELOVN5D.js → oauth-server-MM4VE2YN.js} +0 -0
- /package/dist/{project-boot-LQ4CF6BI.js → project-boot-PT5HJT7E.js} +0 -0
- /package/dist/{wiki-acl-VR4AFJ3T.js → wiki-acl-SD3DF4IP.js} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildSystemStateMemoryTypeExclusion
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VIIOEVAF.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IR6CEBWC.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient,
|
|
9
9
|
getIdentity
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-U7I4YINB.js";
|
|
11
11
|
import {
|
|
12
12
|
getEmotionalBaseline
|
|
13
13
|
} from "./chunk-OMXJMOBD.js";
|
|
@@ -646,7 +646,7 @@ var DreamingEngine = class {
|
|
|
646
646
|
}
|
|
647
647
|
let overdueProspective = [];
|
|
648
648
|
try {
|
|
649
|
-
const { getOverdueProspective, completeProspective } = await import("./prospective-memory-
|
|
649
|
+
const { getOverdueProspective, completeProspective } = await import("./prospective-memory-ZLMPXBGE.js");
|
|
650
650
|
const overdue = await getOverdueProspective(agentId);
|
|
651
651
|
overdueProspective = overdue.map((o) => ({
|
|
652
652
|
id: o.id,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertValidDbPath
|
|
3
3
|
} from "./chunk-2I23RPSI.js";
|
|
4
|
+
import {
|
|
5
|
+
recordDbOpen
|
|
6
|
+
} from "./chunk-5YEUPUV4.js";
|
|
4
7
|
import {
|
|
5
8
|
EXE_AI_DIR
|
|
6
9
|
} from "./chunk-BCZF3AGJ.js";
|
|
@@ -56,6 +59,7 @@ async function validateEncryptionKey() {
|
|
|
56
59
|
const dbPath = path.join(SHARDS_DIR, shardFile);
|
|
57
60
|
assertValidDbPath(dbPath, "shard-manager validateEncryptionKey");
|
|
58
61
|
const testClient = createClient({ url: `file:${dbPath}`, encryptionKey: _encryptionKey });
|
|
62
|
+
recordDbOpen({ dbPath, source: "shard-manager-validate-key", writeCapable: true, checkpointTimer: false });
|
|
59
63
|
try {
|
|
60
64
|
await testClient.execute("SELECT COUNT(*) FROM sqlite_schema");
|
|
61
65
|
testClient.close();
|
|
@@ -111,6 +115,7 @@ function getShardClient(projectName) {
|
|
|
111
115
|
url: `file:${dbPath}`,
|
|
112
116
|
encryptionKey: _encryptionKey
|
|
113
117
|
});
|
|
118
|
+
recordDbOpen({ dbPath, source: "shard-manager-get-shard", writeCapable: true, checkpointTimer: false });
|
|
114
119
|
_shards.set(safeName, client);
|
|
115
120
|
_shardLastAccess.set(safeName, Date.now());
|
|
116
121
|
return client;
|
|
@@ -152,6 +157,7 @@ async function auditShardHealth(options = {}) {
|
|
|
152
157
|
url: `file:${dbPath}`,
|
|
153
158
|
encryptionKey: _encryptionKey
|
|
154
159
|
});
|
|
160
|
+
recordDbOpen({ dbPath, source: "shard-manager-health", writeCapable: true, checkpointTimer: false });
|
|
155
161
|
try {
|
|
156
162
|
await client.execute("SELECT COUNT(*) as cnt FROM sqlite_schema");
|
|
157
163
|
const hasMemories = await client.execute(
|
|
@@ -4,17 +4,17 @@ import {
|
|
|
4
4
|
resolveExeSession,
|
|
5
5
|
sendIntercom,
|
|
6
6
|
strictSessionScopeFilter
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IR6CEBWC.js";
|
|
8
8
|
import {
|
|
9
9
|
parseMessage,
|
|
10
10
|
serializeMessage
|
|
11
11
|
} from "./chunk-4JERP7NT.js";
|
|
12
12
|
import {
|
|
13
13
|
recordOrchestrationEventBestEffort
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6ZUHNYAB.js";
|
|
15
15
|
import {
|
|
16
16
|
getClient
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-U7I4YINB.js";
|
|
18
18
|
|
|
19
19
|
// src/lib/messaging.ts
|
|
20
20
|
import crypto from "crypto";
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
reserveVersions,
|
|
6
6
|
vectorToBlob
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-VIIOEVAF.js";
|
|
8
8
|
import {
|
|
9
9
|
getClient
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-U7I4YINB.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/documents.ts
|
|
13
13
|
import crypto from "crypto";
|
|
@@ -270,7 +270,7 @@ async function ingestDocument(input) {
|
|
|
270
270
|
await client.batch([documentStmt, ...chunkStmts], "write");
|
|
271
271
|
const embedded = vectors.filter((v) => v !== null).length;
|
|
272
272
|
const originalTexts = input.chunks.map((c) => c.text);
|
|
273
|
-
import("./doc-graph-extractor-
|
|
273
|
+
import("./doc-graph-extractor-QCT4CCBN.js").then(
|
|
274
274
|
({ extractAndStoreDocumentGraph }) => extractAndStoreDocumentGraph(documentId, originalTexts)
|
|
275
275
|
).catch((err) => {
|
|
276
276
|
process.stderr.write(
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
filterTimerWakeClusterArtifacts
|
|
3
|
+
} from "./chunk-YQGMSXT5.js";
|
|
4
|
+
|
|
1
5
|
// src/lib/daemon-restart-report.ts
|
|
2
6
|
import { existsSync, readFileSync, statSync, openSync, readSync, closeSync } from "fs";
|
|
3
7
|
import path from "path";
|
|
4
8
|
import os from "os";
|
|
5
|
-
var SUSPEND_CLUSTER_MIN_MS = 6e4;
|
|
6
|
-
var SUSPEND_CLUSTER_WINDOW_MS = 2e3;
|
|
7
|
-
var SUSPEND_CLUSTER_MIN_TIMERS = 2;
|
|
8
9
|
function logDir() {
|
|
9
10
|
return path.join(os.homedir(), ".exe-os", "logs");
|
|
10
11
|
}
|
|
@@ -84,23 +85,6 @@ function parseTsMs(ts) {
|
|
|
84
85
|
const parsed = Date.parse(ts);
|
|
85
86
|
return Number.isFinite(parsed) ? parsed : null;
|
|
86
87
|
}
|
|
87
|
-
function filterTimerSleepArtifacts(samples) {
|
|
88
|
-
const clockClean = samples.filter((sample) => sample.durationMs >= 0);
|
|
89
|
-
const candidates = clockClean.filter((sample) => sample.atMs !== null && sample.durationMs >= SUSPEND_CLUSTER_MIN_MS).sort((a, b) => a.atMs - b.atMs);
|
|
90
|
-
const suspendArtifacts = /* @__PURE__ */ new Set();
|
|
91
|
-
let start = 0;
|
|
92
|
-
for (let end = 0; end < candidates.length; end++) {
|
|
93
|
-
while (candidates[end].atMs - candidates[start].atMs > SUSPEND_CLUSTER_WINDOW_MS) {
|
|
94
|
-
start++;
|
|
95
|
-
}
|
|
96
|
-
const window = candidates.slice(start, end + 1);
|
|
97
|
-
const distinctTimers = new Set(window.map((sample) => sample.timer));
|
|
98
|
-
if (distinctTimers.size >= SUSPEND_CLUSTER_MIN_TIMERS) {
|
|
99
|
-
for (const sample of window) suspendArtifacts.add(sample);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return clockClean.filter((sample) => !suspendArtifacts.has(sample));
|
|
103
|
-
}
|
|
104
88
|
function maxIso(a, b) {
|
|
105
89
|
if (!b) return a;
|
|
106
90
|
if (!a) return b;
|
|
@@ -153,8 +137,9 @@ function buildRestartReport(opts = {}) {
|
|
|
153
137
|
if (data.clockJump === true || sleptMs > 1e3) continue;
|
|
154
138
|
rawTimerSamples.push({ timer, durationMs, atMs: parseTsMs(rec.ts) });
|
|
155
139
|
}
|
|
140
|
+
const clockCleanTimerSamples = rawTimerSamples.filter((sample) => sample.durationMs >= 0);
|
|
156
141
|
const timerSamples = /* @__PURE__ */ new Map();
|
|
157
|
-
for (const { timer, durationMs } of
|
|
142
|
+
for (const { timer, durationMs } of filterTimerWakeClusterArtifacts(clockCleanTimerSamples)) {
|
|
158
143
|
const arr = timerSamples.get(timer) ?? [];
|
|
159
144
|
arr.push(durationMs);
|
|
160
145
|
timerSamples.set(timer, arr);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fastDbInit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2NPK6FIV.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IR6CEBWC.js";
|
|
7
7
|
import {
|
|
8
8
|
formatStatusAll,
|
|
9
9
|
formatStatusDeep,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
getClient,
|
|
15
15
|
isCoordinatorRole,
|
|
16
16
|
loadEmployees
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-U7I4YINB.js";
|
|
18
18
|
import {
|
|
19
19
|
isMainModule
|
|
20
20
|
} from "./chunk-6Y4B3QF6.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
updateTask
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AXXGZSW5.js";
|
|
4
4
|
import {
|
|
5
5
|
TASK_ALREADY_CLAIMED_PREFIX,
|
|
6
6
|
TASK_CLAIM_NOT_HELD_PREFIX,
|
|
7
7
|
TASK_SIDECHAIN_WRITE_BLOCKED_PREFIX
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-IR6CEBWC.js";
|
|
9
9
|
import {
|
|
10
10
|
getAgentContext
|
|
11
11
|
} from "./chunk-GJV3WDWM.js";
|
|
12
12
|
import {
|
|
13
13
|
isCoordinatorName
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-U7I4YINB.js";
|
|
15
15
|
|
|
16
16
|
// src/mcp/tools/update-task.ts
|
|
17
17
|
import { z } from "zod";
|
|
@@ -72,7 +72,7 @@ function registerUpdateTask(server) {
|
|
|
72
72
|
let callerSession;
|
|
73
73
|
let callerIsSidechain = false;
|
|
74
74
|
try {
|
|
75
|
-
const { getActiveAgent: getAgent } = await import("./active-agent-
|
|
75
|
+
const { getActiveAgent: getAgent } = await import("./active-agent-OYZRH6D2.js");
|
|
76
76
|
const active = getAgent();
|
|
77
77
|
callerAgentId = active.agentId;
|
|
78
78
|
callerSession = resolveCallerSessionForUpdate();
|
|
@@ -263,7 +263,7 @@ async function runRegistryProxy(options = registryProxyOptionsFromEnv()) {
|
|
|
263
263
|
await new Promise((resolve) => server.listen(options.port, options.host, resolve));
|
|
264
264
|
console.log(`exe-registry-proxy listening on ${options.host ?? "0.0.0.0"}:${options.port}`);
|
|
265
265
|
console.log(`proxying /v2/${options.allowedNamespace ?? "askexe"}/* -> ${options.upstream ?? "https://ghcr.io"}`);
|
|
266
|
-
const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-
|
|
266
|
+
const { licenseSyncConfigFromEnv, startLicenseSyncScheduler } = await import("./license-sync-PES4GIXL.js");
|
|
267
267
|
const syncConfig = licenseSyncConfigFromEnv();
|
|
268
268
|
if (syncConfig) {
|
|
269
269
|
startLicenseSyncScheduler(syncConfig);
|
|
@@ -212,7 +212,7 @@ async function main(args) {
|
|
|
212
212
|
console.log("[health-gate] Starting rollback...");
|
|
213
213
|
restorePreDeployBackup();
|
|
214
214
|
try {
|
|
215
|
-
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-
|
|
215
|
+
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-2ZV6MBXF.js");
|
|
216
216
|
const paths = defaultStackPaths();
|
|
217
217
|
await rollbackStackUpdate({
|
|
218
218
|
manifestRef: paths.manifestRef,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PLATFORM_PROCEDURES,
|
|
3
3
|
PLATFORM_PROCEDURE_TITLES
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3BAGFZFN.js";
|
|
5
5
|
import {
|
|
6
6
|
getClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-U7I4YINB.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/global-procedures.ts
|
|
10
10
|
import { randomUUID } from "crypto";
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertValidDbPath
|
|
3
3
|
} from "./chunk-2I23RPSI.js";
|
|
4
|
+
import {
|
|
5
|
+
recordDbOpen
|
|
6
|
+
} from "./chunk-5YEUPUV4.js";
|
|
4
7
|
import {
|
|
5
8
|
listBackups
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-AXAHRTST.js";
|
|
7
10
|
import {
|
|
8
11
|
getEmotionalBaseline,
|
|
9
12
|
renderEmotionalBaselineSection
|
|
10
13
|
} from "./chunk-OMXJMOBD.js";
|
|
11
|
-
import {
|
|
12
|
-
isDaemonAlive
|
|
13
|
-
} from "./chunk-7HLWBYH7.js";
|
|
14
14
|
import {
|
|
15
15
|
logDaemonHealth
|
|
16
16
|
} from "./chunk-BBMTVAE3.js";
|
|
17
17
|
import {
|
|
18
18
|
isPostgresBackendEnabled
|
|
19
19
|
} from "./chunk-YMUZWC33.js";
|
|
20
|
+
import {
|
|
21
|
+
directWriterAllowed,
|
|
22
|
+
isDaemonAlive
|
|
23
|
+
} from "./chunk-V3W3SATA.js";
|
|
20
24
|
import {
|
|
21
25
|
EMBEDDING_DIM
|
|
22
26
|
} from "./chunk-FXU7JOXK.js";
|
|
@@ -1329,7 +1333,7 @@ async function migrateReflectionDedup(client) {
|
|
|
1329
1333
|
"ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
|
|
1330
1334
|
"migration add memory_reflections.dedup_key"
|
|
1331
1335
|
);
|
|
1332
|
-
const { reflectionDedupKey } = await import("./memory-reflection-
|
|
1336
|
+
const { reflectionDedupKey } = await import("./memory-reflection-LIILYJAS.js");
|
|
1333
1337
|
const keyForRow = (row) => {
|
|
1334
1338
|
let sources = [];
|
|
1335
1339
|
try {
|
|
@@ -1751,6 +1755,7 @@ async function _attemptBackupRestore(config) {
|
|
|
1751
1755
|
opts.encryptionKey = config.encryptionKey;
|
|
1752
1756
|
}
|
|
1753
1757
|
const testClient = createClient(opts);
|
|
1758
|
+
recordDbOpen({ dbPath: config.dbPath, source: "auto-restore-verify", writeCapable: true, checkpointTimer: false });
|
|
1754
1759
|
await testClient.execute("PRAGMA busy_timeout = 30000");
|
|
1755
1760
|
await testClient.execute("PRAGMA journal_mode = WAL");
|
|
1756
1761
|
const isCorrupt = await _checkDbIntegrity(testClient);
|
|
@@ -1914,6 +1919,11 @@ async function initDatabase(config) {
|
|
|
1914
1919
|
cleanupLegacyPlaintextStubs(dirname(config.dbPath), config.dbPath);
|
|
1915
1920
|
} catch {
|
|
1916
1921
|
}
|
|
1922
|
+
if (process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" && !isPostgresBackendEnabled() && !await directWriterAllowed()) {
|
|
1923
|
+
throw new Error(
|
|
1924
|
+
"Background cloud-sync child refused a direct SQLite WRITER open: the daemon is alive and owns the single writer connection. Cloud-sync writes must route through the daemon socket (fastDbInit); a direct open would be an unsanctioned second writer (bug 4a6f8aaf). This is safe to retry once the daemon socket is reachable."
|
|
1925
|
+
);
|
|
1926
|
+
}
|
|
1917
1927
|
await acquireDbLock();
|
|
1918
1928
|
if (existsSync4(config.dbPath)) {
|
|
1919
1929
|
const dbStat = statSync(config.dbPath);
|
|
@@ -1976,6 +1986,15 @@ async function initDatabase(config) {
|
|
|
1976
1986
|
opts.encryptionKey = config.encryptionKey;
|
|
1977
1987
|
}
|
|
1978
1988
|
_client = createClient(opts);
|
|
1989
|
+
recordDbOpen({
|
|
1990
|
+
dbPath: config.dbPath,
|
|
1991
|
+
source: config.telemetrySource ?? "initDatabase",
|
|
1992
|
+
writeCapable: config.telemetryWriteCapable ?? process.env.EXE_DB_READONLY !== "1",
|
|
1993
|
+
// Must mirror the ACTUAL timer gate below (bug df26c896: daemon-only by
|
|
1994
|
+
// default) — a telemetry flag that disagrees with the real decision would
|
|
1995
|
+
// poison the regression tripwire.
|
|
1996
|
+
checkpointTimer: config.telemetryCheckpointTimer ?? ((process.env.EXE_IS_DAEMON === "1" || process.env.EXE_DB_CHECKPOINT_TIMER === "1") && process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1")
|
|
1997
|
+
});
|
|
1979
1998
|
_resilientClient = wrapWithRetry(_client);
|
|
1980
1999
|
_adapterClient = _resilientClient;
|
|
1981
2000
|
await _client.execute("PRAGMA busy_timeout = 30000");
|
|
@@ -2033,7 +2052,8 @@ async function initDatabase(config) {
|
|
|
2033
2052
|
}
|
|
2034
2053
|
}
|
|
2035
2054
|
if (_walCheckpointTimer) clearInterval(_walCheckpointTimer);
|
|
2036
|
-
|
|
2055
|
+
const checkpointTimerAllowed = process.env.EXE_IS_DAEMON === "1" || process.env.EXE_DB_CHECKPOINT_TIMER === "1";
|
|
2056
|
+
if (checkpointTimerAllowed && process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1") {
|
|
2037
2057
|
_walCheckpointTimer = setInterval(() => {
|
|
2038
2058
|
void runWalCheckpoint(_client, config.dbPath, false).catch(() => {
|
|
2039
2059
|
});
|
|
@@ -2061,6 +2081,9 @@ async function initDatabase(config) {
|
|
|
2061
2081
|
}
|
|
2062
2082
|
releaseDbLock();
|
|
2063
2083
|
}
|
|
2084
|
+
function _isWalCheckpointTimerActive() {
|
|
2085
|
+
return _walCheckpointTimer !== null;
|
|
2086
|
+
}
|
|
2064
2087
|
function isInitialized() {
|
|
2065
2088
|
return _adapterClient !== null || _client !== null;
|
|
2066
2089
|
}
|
|
@@ -2109,7 +2132,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
|
|
|
2109
2132
|
const purgeArchived = archDays !== void 0;
|
|
2110
2133
|
const BATCH_SIZE = 2e3;
|
|
2111
2134
|
const MAX_BATCHES = 500;
|
|
2112
|
-
const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-
|
|
2135
|
+
const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-WUM5JUB7.js");
|
|
2113
2136
|
const softCutoff = `-${softDays} days`;
|
|
2114
2137
|
const selectArgsBase = [softCutoff];
|
|
2115
2138
|
let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
|
|
@@ -2178,9 +2201,13 @@ function getClient() {
|
|
|
2178
2201
|
} catch {
|
|
2179
2202
|
}
|
|
2180
2203
|
if (daemonAlive) {
|
|
2204
|
+
if (_daemonClient) {
|
|
2205
|
+
return _daemonClient;
|
|
2206
|
+
}
|
|
2181
2207
|
process.stderr.write(
|
|
2182
2208
|
"[database] INFO: daemon running \u2014 CLI taking direct SQLite access (single-writer CLI mode).\n"
|
|
2183
2209
|
);
|
|
2210
|
+
return _resilientClient;
|
|
2184
2211
|
} else {
|
|
2185
2212
|
process.stderr.write(
|
|
2186
2213
|
"[database] WARN: daemon unavailable \u2014 using direct SQLite (single-writer CLI mode).\n"
|
|
@@ -2224,6 +2251,9 @@ async function initDaemonClient() {
|
|
|
2224
2251
|
);
|
|
2225
2252
|
}
|
|
2226
2253
|
}
|
|
2254
|
+
function isDaemonRoutingActive() {
|
|
2255
|
+
return _daemonClient !== null && _daemonClient._isDaemonActive();
|
|
2256
|
+
}
|
|
2227
2257
|
function getRawClient() {
|
|
2228
2258
|
if (!_client) {
|
|
2229
2259
|
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
@@ -4259,6 +4289,7 @@ export {
|
|
|
4259
4289
|
optimizeFtsIndexes,
|
|
4260
4290
|
initTurso,
|
|
4261
4291
|
initDatabase,
|
|
4292
|
+
_isWalCheckpointTimerActive,
|
|
4262
4293
|
isInitialized,
|
|
4263
4294
|
setExternalClient,
|
|
4264
4295
|
initPostgresOnlyDatabase,
|
|
@@ -4270,6 +4301,7 @@ export {
|
|
|
4270
4301
|
getClient,
|
|
4271
4302
|
getCurrentDatabaseConfig,
|
|
4272
4303
|
initDaemonClient,
|
|
4304
|
+
isDaemonRoutingActive,
|
|
4273
4305
|
getRawClient,
|
|
4274
4306
|
tryGetRawClient,
|
|
4275
4307
|
_getMigrationBlockRuns,
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import {
|
|
2
|
+
eventLoopHeartbeatPath,
|
|
3
|
+
exeDir
|
|
4
|
+
} from "./chunk-JY5GAZYC.js";
|
|
5
|
+
|
|
6
|
+
// src/lib/mcp-health.ts
|
|
7
|
+
import { existsSync, readFileSync, statSync } from "fs";
|
|
8
|
+
import net from "net";
|
|
9
|
+
import path from "path";
|
|
10
|
+
function daemonPidPath() {
|
|
11
|
+
return process.env.EXE_DAEMON_PID ?? process.env.EXE_EMBED_PID ?? path.join(exeDir(), "exed.pid");
|
|
12
|
+
}
|
|
13
|
+
function daemonSockPath() {
|
|
14
|
+
return process.env.EXE_DAEMON_SOCK ?? process.env.EXE_EMBED_SOCK ?? path.join(exeDir(), "exed.sock");
|
|
15
|
+
}
|
|
16
|
+
var SOCKET_PING_TIMEOUT_MS = 300;
|
|
17
|
+
var HEARTBEAT_FRESH_MS = 6e4;
|
|
18
|
+
function isDaemonAlive() {
|
|
19
|
+
if (_isDaemonProcess) {
|
|
20
|
+
return { alive: true, pid: process.pid };
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const pidPath = daemonPidPath();
|
|
24
|
+
if (!existsSync(pidPath)) {
|
|
25
|
+
if (existsSync(daemonSockPath())) return { alive: true, pid: null };
|
|
26
|
+
return { alive: false, pid: null };
|
|
27
|
+
}
|
|
28
|
+
const pid = parseInt(readFileSync(pidPath, "utf8").trim(), 10);
|
|
29
|
+
if (!Number.isFinite(pid) || pid <= 0) return { alive: false, pid: null };
|
|
30
|
+
process.kill(pid, 0);
|
|
31
|
+
return { alive: true, pid };
|
|
32
|
+
} catch {
|
|
33
|
+
return { alive: false, pid: null };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function pingUnixSocket(socketPath, timeoutMs) {
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
let settled = false;
|
|
39
|
+
const finish = (result) => {
|
|
40
|
+
if (settled) return;
|
|
41
|
+
settled = true;
|
|
42
|
+
try {
|
|
43
|
+
sock.destroy();
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
resolve(result);
|
|
47
|
+
};
|
|
48
|
+
const sock = net.connect(socketPath);
|
|
49
|
+
sock.once("connect", () => finish("alive"));
|
|
50
|
+
sock.once("error", (err) => {
|
|
51
|
+
const code = err?.code;
|
|
52
|
+
finish(
|
|
53
|
+
code === "ECONNREFUSED" || code === "ENOENT" || code === "ENOTSOCK" || code === "ENOTDIR" ? "dead" : "indeterminate"
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
sock.setTimeout(timeoutMs, () => finish("indeterminate"));
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function livePidWithFreshHeartbeat() {
|
|
60
|
+
let pidAlive = false;
|
|
61
|
+
try {
|
|
62
|
+
const pidPath = daemonPidPath();
|
|
63
|
+
if (existsSync(pidPath)) {
|
|
64
|
+
const pid = parseInt(readFileSync(pidPath, "utf8").trim(), 10);
|
|
65
|
+
if (Number.isFinite(pid) && pid > 0) {
|
|
66
|
+
try {
|
|
67
|
+
process.kill(pid, 0);
|
|
68
|
+
pidAlive = true;
|
|
69
|
+
} catch {
|
|
70
|
+
pidAlive = false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
} catch {
|
|
75
|
+
pidAlive = false;
|
|
76
|
+
}
|
|
77
|
+
if (!pidAlive) return false;
|
|
78
|
+
try {
|
|
79
|
+
const st = statSync(eventLoopHeartbeatPath());
|
|
80
|
+
return Date.now() - st.mtimeMs <= HEARTBEAT_FRESH_MS;
|
|
81
|
+
} catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function isDaemonWriterAuthority() {
|
|
86
|
+
if (_isDaemonProcess) return true;
|
|
87
|
+
const socketPath = daemonSockPath();
|
|
88
|
+
const ping = await pingUnixSocket(socketPath, SOCKET_PING_TIMEOUT_MS);
|
|
89
|
+
if (ping !== "dead") return true;
|
|
90
|
+
return livePidWithFreshHeartbeat();
|
|
91
|
+
}
|
|
92
|
+
async function directWriterAllowed() {
|
|
93
|
+
if (process.env.VITEST) return true;
|
|
94
|
+
if (process.env.EXE_IS_DAEMON === "1" || _isDaemonProcess) return true;
|
|
95
|
+
if (process.env.EXE_DB_DIRECT === "1") return true;
|
|
96
|
+
return !await isDaemonWriterAuthority();
|
|
97
|
+
}
|
|
98
|
+
function isMcpHealthy(_timeoutMs = 2e3) {
|
|
99
|
+
if (_isDaemonProcess) return true;
|
|
100
|
+
const { alive } = isDaemonAlive();
|
|
101
|
+
if (!alive) return false;
|
|
102
|
+
return existsSync(daemonSockPath());
|
|
103
|
+
}
|
|
104
|
+
var _isDaemonProcess = false;
|
|
105
|
+
function markAsDaemonProcess() {
|
|
106
|
+
_isDaemonProcess = true;
|
|
107
|
+
}
|
|
108
|
+
var EVENT_LOOP_DEGRADED_THRESHOLD_MS = 5e3;
|
|
109
|
+
var _eventLoopLagMs = 0;
|
|
110
|
+
var _eventLoopLagUpdatedAt = 0;
|
|
111
|
+
function setEventLoopLagMs(lagMs) {
|
|
112
|
+
_eventLoopLagMs = lagMs;
|
|
113
|
+
_eventLoopLagUpdatedAt = Date.now();
|
|
114
|
+
}
|
|
115
|
+
function getEventLoopLagMs() {
|
|
116
|
+
return _eventLoopLagMs;
|
|
117
|
+
}
|
|
118
|
+
function getEventLoopLagUpdatedAt() {
|
|
119
|
+
return _eventLoopLagUpdatedAt;
|
|
120
|
+
}
|
|
121
|
+
function isEventLoopDegraded() {
|
|
122
|
+
return _eventLoopLagMs > EVENT_LOOP_DEGRADED_THRESHOLD_MS;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export {
|
|
126
|
+
isDaemonAlive,
|
|
127
|
+
isDaemonWriterAuthority,
|
|
128
|
+
directWriterAllowed,
|
|
129
|
+
isMcpHealthy,
|
|
130
|
+
markAsDaemonProcess,
|
|
131
|
+
setEventLoopLagMs,
|
|
132
|
+
getEventLoopLagMs,
|
|
133
|
+
getEventLoopLagUpdatedAt,
|
|
134
|
+
isEventLoopDegraded
|
|
135
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PLATFORM_PROCEDURE_TITLES
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3BAGFZFN.js";
|
|
4
4
|
import {
|
|
5
5
|
isGhostBehaviorRow
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3M6TUMXM.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient,
|
|
9
9
|
getIdentity,
|
|
10
10
|
listIdentities,
|
|
11
11
|
updateIdentity
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-U7I4YINB.js";
|
|
13
13
|
import {
|
|
14
14
|
atomicWriteJsonSync
|
|
15
15
|
} from "./chunk-HSGBZSCA.js";
|