@askexenow/exe-os 0.9.347 → 0.9.348
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/cloudflared/config.yml.example +9 -6
- package/deploy/compose/docker-compose.yml +16 -9
- package/deploy/compose/sso-edge/default.conf.template +26 -0
- package/deploy/stack-manifests/v0.9.json +1 -1
- package/dist/{active-agent-CMY7WTJL.js → active-agent-PX6KAEEQ.js} +4 -3
- package/dist/{active-agent-US4KO4LV.js → active-agent-QVLZKWR2.js} +4 -3
- package/dist/{agentic-ontology-3Y37SQYR.js → agentic-ontology-6MEXY5L7.js} +1 -1
- package/dist/{backfill-metadata-GK66TYQE.js → backfill-metadata-MCFBGWKX.js} +6 -5
- package/dist/{backup-verify-72XBKKHL.js → backup-verify-RGB3KKD4.js} +2 -1
- package/dist/{behaviors-G7TR6LBM.js → behaviors-6GI6VND2.js} +7 -6
- package/dist/bin/agentic-ontology-backfill.js +7 -6
- package/dist/bin/agentic-reflection-backfill.js +8 -7
- package/dist/bin/agentic-semantic-label.js +7 -6
- package/dist/bin/backfill-conversations.js +6 -5
- package/dist/bin/backfill-responses.js +6 -5
- package/dist/bin/backfill-vectors.js +7 -6
- package/dist/bin/bulk-sync-postgres.js +11 -10
- package/dist/bin/cc-doctor.js +5 -4
- package/dist/bin/cleanup-stale-review-tasks.js +14 -13
- package/dist/bin/cli.js +16 -16
- package/dist/bin/deferred-daemon-restart.js +105 -91
- package/dist/bin/exe-agent-config.js +4 -3
- package/dist/bin/exe-agent.js +6 -5
- package/dist/bin/exe-assign.js +7 -6
- package/dist/bin/exe-boot.js +29 -28
- package/dist/bin/exe-call.js +6 -5
- package/dist/bin/exe-cloud.js +26 -15
- package/dist/bin/exe-config-dump.js +4 -3
- package/dist/bin/exe-dispatch.js +14 -13
- package/dist/bin/exe-doctor.js +5 -4
- package/dist/bin/exe-export-behaviors.js +9 -8
- package/dist/bin/exe-forget.js +8 -7
- package/dist/bin/exe-gateway.js +8 -7
- package/dist/bin/exe-healthcheck.js +5 -4
- package/dist/bin/exe-heartbeat.js +16 -15
- package/dist/bin/exe-kill.js +18 -17
- package/dist/bin/exe-launch-agent.js +24 -23
- package/dist/bin/exe-memory-reads.js +6 -5
- package/dist/bin/exe-new-employee.js +10 -9
- package/dist/bin/exe-os-mcp-proxy.js +4 -3
- package/dist/bin/exe-pending-messages.js +15 -14
- package/dist/bin/exe-pending-notifications.js +14 -13
- package/dist/bin/exe-pending-reviews.js +14 -13
- package/dist/bin/exe-rename.js +6 -5
- package/dist/bin/exe-review.js +17 -16
- package/dist/bin/exe-search.js +7 -6
- package/dist/bin/exe-session-cleanup.js +18 -17
- package/dist/bin/exe-settings.js +12 -11
- package/dist/bin/exe-start-codex.js +97 -15
- package/dist/bin/exe-start-opencode.js +10 -9
- package/dist/bin/exe-status.js +15 -14
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +4 -3
- package/dist/bin/git-sweep.js +15 -14
- package/dist/bin/graph-backfill.js +7 -6
- package/dist/bin/graph-export.js +7 -6
- package/dist/bin/import-history.js +10 -9
- package/dist/bin/install.js +71 -70
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +5 -4
- 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 +14 -13
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +6 -5
- package/dist/bin/stack-update.js +7 -6
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-KG43UYL4.js → boot-generation-FB2J53IG.js} +4 -3
- package/dist/{boot-review-sections-56BRURLM.js → boot-review-sections-QF5MZGJI.js} +13 -12
- package/dist/{capability-cards-4MN3IVJO.js → capability-cards-YADEM2KN.js} +3 -2
- package/dist/{capacity-monitor-4NJTN5QQ.js → capacity-monitor-CG2IGONS.js} +15 -14
- package/dist/{catchup-brief-AMBXLHXU.js → catchup-brief-QFVNMTU5.js} +18 -17
- package/dist/{chunk-PYNWGP72.js → chunk-23O6LHII.js} +1 -1
- package/dist/{chunk-VDJUATQJ.js → chunk-27REQ7KR.js} +1 -1
- package/dist/{chunk-G4HOMQY7.js → chunk-2AD2GAPC.js} +1 -1
- package/dist/{chunk-QZA5NG6Z.js → chunk-2WJYLXPF.js} +1 -1
- package/dist/{chunk-G6IANQKD.js → chunk-43RTUMUT.js} +1 -1
- package/dist/{chunk-WOKPKILI.js → chunk-5C46Y4AK.js} +1 -1
- package/dist/{chunk-IMHERTUL.js → chunk-5KCC26FB.js} +2 -2
- package/dist/{chunk-XRX7F7XW.js → chunk-5RPCWLXE.js} +1 -1
- package/dist/{chunk-DZJL775P.js → chunk-6GSYN262.js} +1 -1
- package/dist/{chunk-UMK7TNCF.js → chunk-6JQTSKDR.js} +157 -65
- package/dist/{chunk-2BOEUPL6.js → chunk-6QRS3IZF.js} +1 -1
- package/dist/{chunk-M722B4DA.js → chunk-6WFXNQDJ.js} +1 -1
- package/dist/{chunk-LUQ57SRM.js → chunk-7QRMFYOV.js} +23 -9
- package/dist/{chunk-I3XN3G3H.js → chunk-7WQ3WHPW.js} +113 -113
- package/dist/{chunk-3EMAJBBN.js → chunk-A3YHWWE6.js} +1 -1
- package/dist/{chunk-JLYQD2XF.js → chunk-A42356G7.js} +1 -1
- package/dist/{chunk-EYWB6526.js → chunk-A43SIGAO.js} +3 -3
- package/dist/{chunk-Z7DWUHDP.js → chunk-AFY4V4N3.js} +1 -1
- package/dist/{chunk-MT6YGWJ6.js → chunk-AMC2OPYP.js} +1 -1
- package/dist/{chunk-SUG5P42S.js → chunk-AQ24P2O7.js} +4 -4
- package/dist/{chunk-T7ZLJZAO.js → chunk-AUILJKSM.js} +2 -2
- package/dist/{chunk-PRUZNNEF.js → chunk-AXNUMBLO.js} +3 -3
- package/dist/{chunk-PEVOVM3W.js → chunk-BOQUXG7N.js} +3 -3
- package/dist/{chunk-ILLBFFY6.js → chunk-BUUGFQHL.js} +2 -2
- package/dist/{chunk-VMTKHDFM.js → chunk-CCOKYSJA.js} +3 -3
- package/dist/{chunk-YSTIPPZK.js → chunk-DAODOSH4.js} +1 -1
- package/dist/{chunk-LJGHAZYU.js → chunk-DJYJDK53.js} +7 -7
- package/dist/{chunk-K3ZHVW26.js → chunk-DXMTJJP3.js} +4 -4
- package/dist/{chunk-IRMJHC23.js → chunk-E3BNUQHW.js} +2 -2
- package/dist/{chunk-CNIAEIWV.js → chunk-EFHGK6JP.js} +1 -1
- package/dist/{chunk-FM4ZI5ZP.js → chunk-FE6WBI2M.js} +5 -1
- package/dist/{chunk-DBDMZTU5.js → chunk-FENYNW52.js} +1 -1
- package/dist/{chunk-FJPZ7KHN.js → chunk-FFCPSPNK.js} +1 -1
- package/dist/{chunk-FAH7JUNS.js → chunk-FPK753IZ.js} +10 -10
- package/dist/{chunk-F6NABQJ4.js → chunk-GA655CUD.js} +2 -2
- package/dist/{chunk-BRVDGE7N.js → chunk-GJ6KIHOM.js} +4 -4
- package/dist/{chunk-2ESYTX6F.js → chunk-GKNWKQFY.js} +1 -1
- package/dist/{chunk-3HGAAWNZ.js → chunk-GLOWJP5H.js} +2 -2
- package/dist/{chunk-DNN27P35.js → chunk-H3TA23PH.js} +4 -4
- package/dist/{chunk-TQSAPNFW.js → chunk-H5QNVWU4.js} +18 -10
- package/dist/{chunk-PO64LWTM.js → chunk-HL24OHHS.js} +9 -9
- package/dist/{chunk-FDOURKUO.js → chunk-HYZE3MNS.js} +1 -1
- package/dist/{chunk-3T4BRBSH.js → chunk-JORPYG4O.js} +1 -1
- package/dist/{chunk-2LZMDOC6.js → chunk-JW5XS35A.js} +5 -5
- package/dist/{chunk-3LQMUO5D.js → chunk-KIMAQNSM.js} +3 -3
- package/dist/{chunk-AHR3F7HW.js → chunk-KZUU6MNF.js} +1 -1
- package/dist/{chunk-VALVWYAK.js → chunk-L36RX54F.js} +5 -5
- package/dist/{chunk-UO56K55W.js → chunk-M7PBRIRH.js} +1 -1
- package/dist/{chunk-4VLRGKNY.js → chunk-MGMXYI7Y.js} +2 -2
- package/dist/{chunk-MESFJRIT.js → chunk-MH5HWMVH.js} +1 -1
- package/dist/{chunk-ZK53K7OR.js → chunk-MMOONM6D.js} +1 -1
- package/dist/{chunk-CQN4IKRB.js → chunk-MMXIE6HV.js} +1 -1
- package/dist/{chunk-VA3ZUIWG.js → chunk-MOZY4IQO.js} +1 -1
- package/dist/{chunk-VTMSGELG.js → chunk-MVZLF27P.js} +2 -2
- package/dist/{chunk-H44V3Y6D.js → chunk-NY6DU5RB.js} +1 -1
- package/dist/{chunk-F4ZW76IX.js → chunk-O522M4YZ.js} +1 -1
- package/dist/{chunk-7667KFAG.js → chunk-OBWIVRD6.js} +1 -1
- package/dist/{chunk-VDKDW5IA.js → chunk-PAXAF2UY.js} +29 -9
- package/dist/{chunk-QFGUAJ6T.js → chunk-PBLDPW4U.js} +2 -2
- package/dist/{chunk-D74XYSA3.js → chunk-QCQT5RXR.js} +5 -1
- package/dist/{chunk-ZY2ABBVR.js → chunk-QNKR7WEL.js} +20 -6
- package/dist/{chunk-XOVHWGPV.js → chunk-RBRGSOK5.js} +1 -1
- package/dist/{chunk-Y7637VDZ.js → chunk-RFRUDXOI.js} +2 -2
- package/dist/{chunk-7AD4GSRT.js → chunk-SLH2743O.js} +3 -3
- package/dist/{chunk-OE6D2IJI.js → chunk-SMQ642D3.js} +4 -4
- package/dist/{chunk-4K2PLZKF.js → chunk-SQ4WACH4.js} +1 -1
- package/dist/{chunk-HWK5GKE6.js → chunk-TF5E6O5Q.js} +1 -1
- package/dist/{chunk-KWRO4RMT.js → chunk-TLWYOMSS.js} +3 -3
- package/dist/{chunk-XDVLCS64.js → chunk-UAKGNQWE.js} +1 -1
- package/dist/{chunk-JYFBQH5O.js → chunk-UTQWVRU6.js} +5 -5
- package/dist/{chunk-FBSAXAXQ.js → chunk-WL3IQJKN.js} +3 -3
- package/dist/{chunk-BMTUSSHV.js → chunk-WUMWXU6B.js} +1 -1
- package/dist/{chunk-W7HKGDJO.js → chunk-WWT3E7DO.js} +3 -3
- package/dist/{chunk-YJK4JZ35.js → chunk-WZJ3VYRJ.js} +3 -3
- package/dist/{chunk-QIALRZZG.js → chunk-X6VEQ7MC.js} +1 -1
- package/dist/{chunk-W666YWFU.js → chunk-Y3JXLIZV.js} +3 -3
- package/dist/{chunk-M3NSYVE3.js → chunk-YAIFZXOM.js} +5 -5
- package/dist/{chunk-ZYNQXN73.js → chunk-YM6GJM2F.js} +4 -4
- package/dist/chunk-YMUZWC33.js +8 -0
- package/dist/{chunk-7DAJHBFH.js → chunk-YTPCJLEL.js} +1 -1
- package/dist/{chunk-53VXPGZ2.js → chunk-Z52QQB4Z.js} +2 -2
- package/dist/{chunk-EWWCMMES.js → chunk-ZXSFUR77.js} +16 -16
- package/dist/{cleanup-graph-garbage-5HKGGUS3.js → cleanup-graph-garbage-XTSBQXD6.js} +8 -7
- package/dist/{cloud-sync-shutdown-2JAEIAW6.js → cloud-sync-shutdown-A2QB74YM.js} +3 -2
- package/dist/{co-activation-SYSIFY66.js → co-activation-S2FVGMQP.js} +3 -2
- package/dist/{co-occurrence-QZFT5ORJ.js → co-occurrence-VQB6U5ME.js} +6 -5
- package/dist/{conversation-entity-extractor-YC3A2ODD.js → conversation-entity-extractor-YF3ZLTEJ.js} +3 -3
- package/dist/{crdt-sync-W45AKWCU.js → crdt-sync-2SGCDWC3.js} +1 -1
- package/dist/{crm-webhook-ZAGDYWB3.js → crm-webhook-P64SXEHD.js} +2 -2
- package/dist/{cto-delegation-gate-PLSICYEK.js → cto-delegation-gate-6KLGT2LB.js} +13 -12
- package/dist/{daemon-orchestration-QX3FS4L2.js → daemon-orchestration-JQGKEWPD.js} +18 -17
- package/dist/{doc-graph-extractor-NK6CP4LE.js → doc-graph-extractor-DCJMATVZ.js} +6 -5
- package/dist/{documents-FGXV6BDL.js → documents-7EPH3VPE.js} +7 -6
- package/dist/{dreaming-YIESEME7.js → dreaming-O4P2W5E5.js} +17 -16
- package/dist/{exe-drift-TLY7MCXW.js → exe-drift-ED7FBS2C.js} +4 -3
- package/dist/{exe-export-32J4WPS6.js → exe-export-YJI4USGZ.js} +9 -8
- package/dist/{exe-import-MDEWE325.js → exe-import-SUTAYKUW.js} +9 -8
- package/dist/{exe-key-NW42YUA3.js → exe-key-CRSDAOZD.js} +69 -68
- package/dist/{exe-snapshot-NNEEAGYI.js → exe-snapshot-KB4YYDCA.js} +18 -17
- package/dist/{fast-db-init-O7AECNTB.js → fast-db-init-3K2PV6GJ.js} +1 -1
- package/dist/{founder-context-3WDZ6LIS.js → founder-context-JHHFM4GF.js} +2 -2
- package/dist/gateway/index.js +9 -8
- package/dist/{git-main-guard-UZP3KXYI.js → git-main-guard-TGK3RQY3.js} +1 -1
- package/dist/{git-staleness-GEJ7U4MW.js → git-staleness-YPHGWE3B.js} +3 -2
- package/dist/{global-procedures-HY3BJXY4.js → global-procedures-PEWDBSPJ.js} +5 -4
- package/dist/{graph-auto-extract-DBAIFNDK.js → graph-auto-extract-7OJYYV4G.js} +6 -5
- package/dist/{graph-rag-LWKKHY72.js → graph-rag-YFITUAVO.js} +3 -3
- package/dist/{hook-prefetch-KNHZNI4L.js → hook-prefetch-O6ZCZCTX.js} +14 -13
- package/dist/hooks/bug-report-worker.js +16 -15
- package/dist/hooks/codex-stop-task-finalizer.js +17 -16
- package/dist/hooks/commit-complete.js +16 -15
- package/dist/hooks/error-recall.js +8 -7
- package/dist/hooks/exe-heartbeat-hook.js +4 -3
- package/dist/hooks/ingest.js +7 -6
- package/dist/hooks/instructions-loaded.js +5 -4
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +5 -4
- package/dist/hooks/post-compact.js +15 -14
- package/dist/hooks/post-tool-combined.js +9 -9
- package/dist/hooks/pre-compact.js +16 -15
- package/dist/hooks/pre-tool-use.js +36 -38
- package/dist/hooks/prompt-submit.js +28 -27
- package/dist/hooks/session-end.js +20 -19
- package/dist/hooks/session-start.js +13 -13
- package/dist/hooks/stop.js +19 -18
- package/dist/hooks/subagent-stop.js +17 -16
- package/dist/hooks/summary-worker.js +20 -19
- package/dist/index.js +23 -22
- package/dist/{installer-R2S64Q6T.js → installer-3ONNP5JV.js} +6 -5
- package/dist/{installer-AWALPCAX.js → installer-CY5PN7TN.js} +6 -5
- package/dist/{installer-SQF5I6YS.js → installer-N4QXGINR.js} +6 -5
- package/dist/{intercom-queue-SJL4G3J5.js → intercom-queue-A52WQOCD.js} +13 -12
- package/dist/lib/agent-config.js +1 -1
- package/dist/lib/cloud-sync.js +11 -10
- package/dist/lib/consolidation.js +8 -7
- package/dist/lib/database.js +5 -2
- package/dist/lib/db-backup.js +2 -1
- package/dist/lib/db-checkpoint-worker.js +9 -0
- package/dist/lib/db-read-worker-client.js +21 -8
- package/dist/lib/db-read-worker.js +15 -0
- package/dist/lib/db-write-worker-client.js +4 -1
- package/dist/lib/db-write-worker.js +21 -6
- package/dist/lib/db.js +5 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +6 -5
- package/dist/lib/employees.js +3 -2
- package/dist/lib/exe-daemon.js +211 -71
- package/dist/lib/hybrid-search.js +7 -6
- package/dist/lib/identity.js +3 -2
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +14 -13
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +4 -3
- package/dist/lib/schedules.js +7 -6
- package/dist/lib/session-registry.js +5 -4
- package/dist/lib/skill-learning.js +8 -7
- package/dist/lib/store.js +6 -5
- package/dist/lib/task-router.js +4 -3
- package/dist/lib/tasks.js +15 -14
- package/dist/lib/tmux-routing.js +13 -12
- package/dist/lib/token-spend.js +4 -3
- package/dist/{license-gate-ZYZQGPKW.js → license-gate-ZRORTAQ2.js} +3 -3
- package/dist/{license-sync-GU3L66JR.js → license-sync-CQHBDUQE.js} +2 -2
- package/dist/mcp/register-tools.js +68 -67
- package/dist/mcp/server.js +69 -68
- package/dist/mcp/tools/complete-reminder.js +5 -4
- package/dist/mcp/tools/create-reminder.js +5 -4
- package/dist/mcp/tools/create-task.js +17 -16
- package/dist/mcp/tools/deactivate-behavior.js +9 -8
- package/dist/mcp/tools/list-reminders.js +5 -4
- package/dist/mcp/tools/list-tasks.js +17 -16
- package/dist/mcp/tools/send-message.js +16 -15
- package/dist/mcp/tools/update-task.js +16 -15
- package/dist/{mcp-http-config-BV2GO7P4.js → mcp-http-config-2A6HKQP5.js} +4 -3
- package/dist/{mcp-session-identity-3QQPOGNI.js → mcp-session-identity-OPRX32H5.js} +13 -12
- package/dist/{memory-cards-NISTO4EP.js → memory-cards-GFO2CSPV.js} +6 -5
- package/dist/{memory-graph-extractor-CO3R5K7L.js → memory-graph-extractor-2Z72HN5P.js} +7 -6
- package/dist/{memory-poisoning-defense-QZCG3BMC.js → memory-poisoning-defense-WZJ52KXT.js} +3 -2
- package/dist/{memory-pressure-watchdog-VWQM3GXR.js → memory-pressure-watchdog-IG7VRFIX.js} +14 -13
- package/dist/{memory-reflection-G32OQ3X3.js → memory-reflection-LTRHDGUL.js} +3 -2
- package/dist/{notification-ledger-C3J4HFMM.js → notification-ledger-KSCPGLQG.js} +14 -13
- package/dist/{notifications-JIARMDZ5.js → notifications-YKHZPCXU.js} +13 -12
- package/dist/{orchestration-events-AL7AWHBX.js → orchestration-events-HAFDPTLV.js} +4 -3
- package/dist/{orchestrator-LWVALDUO.js → orchestrator-4MZEQULR.js} +15 -14
- package/dist/{pipeline-router-HK5BI3LQ.js → pipeline-router-RSRJPZNI.js} +4 -3
- package/dist/{plan-limits-4LMRHOUW.js → plan-limits-5QYYPIPT.js} +6 -5
- package/dist/{platform-procedures-G44IYUM2.js → platform-procedures-DZ6YABEK.js} +1 -1
- package/dist/{projection-worker-Z5U6UWCE.js → projection-worker-SKAMSZJF.js} +2 -2
- package/dist/{prospective-memory-UDQWFP5Y.js → prospective-memory-V7LFCPU4.js} +3 -2
- package/dist/{reranker-FX4QOK2G.js → reranker-HXMJ7SKW.js} +1 -1
- package/dist/{retrieval-health-2LIKKDMW.js → retrieval-health-4NCBHUUS.js} +1 -1
- package/dist/{review-polling-B2EP4KGE.js → review-polling-KQUALBEU.js} +14 -13
- package/dist/runtime/index.js +17 -16
- package/dist/{session-events-HVYX42HD.js → session-events-3KL735DZ.js} +14 -13
- package/dist/{session-kill-telemetry-BHKUHSK2.js → session-kill-telemetry-KVRGLYVI.js} +14 -13
- package/dist/{session-scope-TXCBVOSN.js → session-scope-LBG6DT5O.js} +13 -12
- package/dist/{setup-wizard-QMKBAK6B.js → setup-wizard-UL3AKI6E.js} +1 -1
- package/dist/{skill-refinement-G6BPD6QK.js → skill-refinement-6HPISXQC.js} +4 -3
- package/dist/{stack-update-CBP5S5BG.js → stack-update-WBDTJJEF.js} +7 -3
- package/dist/{steward-gate-CGP6U7KC.js → steward-gate-CWPD4HEK.js} +4 -3
- package/dist/{support-inbox-3ATAP7KN.js → support-inbox-HRIHHKPU.js} +3 -3
- package/dist/{task-enforcement-YINAK3T6.js → task-enforcement-OAOL7XFL.js} +14 -13
- package/dist/{task-scope-5OSP2MUP.js → task-scope-PSVAE3EM.js} +13 -12
- package/dist/{tasks-crud-PTN36B5F.js → tasks-crud-TLELWWUL.js} +13 -12
- package/dist/{tasks-notify-QCJXVZCJ.js → tasks-notify-7Q2XTDZ7.js} +14 -13
- package/dist/{tasks-review-ZY3S65OV.js → tasks-review-S6QB5KGS.js} +13 -12
- package/dist/{telemetry-upload-Z47OEELW.js → telemetry-upload-LTL5SW24.js} +8 -7
- package/dist/{token-budget-B3OKOYDA.js → token-budget-SK32GKFZ.js} +4 -3
- package/dist/{tool-telemetry-KIHAHUPT.js → tool-telemetry-QJGJAHOC.js} +1 -1
- package/dist/tui/App.js +22 -21
- package/dist/{tui-data-YIFXHE2D.js → tui-data-3JSV56ME.js} +13 -12
- package/dist/{update-support-IZUWVU2U.js → update-support-LMPGWJVG.js} +10 -9
- package/dist/{work-state-heartbeat-WIURKX3N.js → work-state-heartbeat-MQQOCU54.js} +1 -1
- package/dist/{worker-gate-NZRA426F.js → worker-gate-P2O64XMH.js} +1 -1
- package/dist/{workflow-engine-LAB6TGBZ.js → workflow-engine-BLLQKA3O.js} +2 -2
- package/dist/{worktree-TBUUZJHY.js → worktree-FJZXHDCJ.js} +5 -4
- package/dist/{worktree-sweep-LXDNIZPM.js → worktree-sweep-SW4AG6JR.js} +6 -5
- package/package.json +1 -1
- package/release-notes.json +26 -37
- /package/dist/{chunk-QPNXYGWG.js → chunk-AQ6ECPUP.js} +0 -0
- /package/dist/{chunk-UVPLZ6AK.js → chunk-BTP7BORU.js} +0 -0
- /package/dist/{chunk-4P7NUL4D.js → chunk-DRHXISWL.js} +0 -0
- /package/dist/{chunk-G4JZ22KK.js → chunk-E42D2E5F.js} +0 -0
- /package/dist/{chunk-MA22RV3T.js → chunk-FXZRJT3H.js} +0 -0
- /package/dist/{chunk-D4UCBR4O.js → chunk-GFIWADEH.js} +0 -0
- /package/dist/{chunk-VBHLE3TR.js → chunk-GPZQZTJB.js} +0 -0
- /package/dist/{chunk-FFUEDKYK.js → chunk-H4JKOLXU.js} +0 -0
- /package/dist/{chunk-OG2RT4IY.js → chunk-HTJKAAHD.js} +0 -0
- /package/dist/{chunk-MDK7E653.js → chunk-PIUDQ7P2.js} +0 -0
- /package/dist/{chunk-CYI2YR56.js → chunk-QUOMJKVF.js} +0 -0
- /package/dist/{chunk-SJLZ53ZR.js → chunk-XF2D4CDA.js} +0 -0
- /package/dist/{core-memory-FOW4BCPN.js → core-memory-Z7LPR3RX.js} +0 -0
- /package/dist/{oauth-server-OR4RAQYM.js → oauth-server-FSKABATB.js} +0 -0
- /package/dist/{project-boot-WP54EOAG.js → project-boot-FVSC4VQC.js} +0 -0
- /package/dist/{wiki-acl-4DQQCP4V.js → wiki-acl-CW2UALTJ.js} +0 -0
package/dist/lib/exe-daemon.js
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
isWriteWorkerEnabled,
|
|
18
18
|
spawnDbWriteWorker,
|
|
19
19
|
writeMemoryInWorker
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-7QRMFYOV.js";
|
|
21
21
|
import {
|
|
22
22
|
shouldScheduleDaemonRestartHandoff
|
|
23
23
|
} from "../chunk-PWRC5XZO.js";
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
findScopedDuplicate,
|
|
48
48
|
governMemoryRecord,
|
|
49
49
|
schedulePostWriteMemoryHygiene
|
|
50
|
-
} from "../chunk-
|
|
50
|
+
} from "../chunk-GPZQZTJB.js";
|
|
51
51
|
import "../chunk-5MOYSU5A.js";
|
|
52
52
|
import "../chunk-4QCFFW2H.js";
|
|
53
53
|
import "../chunk-76CJBM36.js";
|
|
@@ -99,6 +99,9 @@ import {
|
|
|
99
99
|
logHeartbeat,
|
|
100
100
|
logShutdown
|
|
101
101
|
} from "../chunk-BBMTVAE3.js";
|
|
102
|
+
import {
|
|
103
|
+
isPostgresBackendEnabled
|
|
104
|
+
} from "../chunk-YMUZWC33.js";
|
|
102
105
|
import {
|
|
103
106
|
EMBEDDING_DIM
|
|
104
107
|
} from "../chunk-FXU7JOXK.js";
|
|
@@ -117,7 +120,7 @@ import net from "net";
|
|
|
117
120
|
import v8 from "v8";
|
|
118
121
|
import { createServer as createHttpServer, request as httpRequest } from "http";
|
|
119
122
|
import { randomUUID, timingSafeEqual } from "crypto";
|
|
120
|
-
import { writeFileSync as writeFileSync5, unlinkSync as unlinkSync4, mkdirSync as mkdirSync5, existsSync as existsSync7, readFileSync as readFileSync6, chmodSync as chmodSync2, readdirSync, renameSync as renameSync2, statSync as statSync4 } from "fs";
|
|
123
|
+
import { writeFileSync as writeFileSync5, unlinkSync as unlinkSync4, mkdirSync as mkdirSync5, existsSync as existsSync7, readFileSync as readFileSync6, chmodSync as chmodSync2, readdirSync as readdirSync2, renameSync as renameSync2, statSync as statSync4 } from "fs";
|
|
121
124
|
import { writeFile } from "fs/promises";
|
|
122
125
|
import { execSync as execSyncNode, execFile as execFileNode } from "child_process";
|
|
123
126
|
import { promisify } from "util";
|
|
@@ -153,6 +156,36 @@ function createMemoizedNpmGlobalRootResolver(execFile, log = (m) => void process
|
|
|
153
156
|
// src/lib/exe-daemon.ts
|
|
154
157
|
import path4 from "path";
|
|
155
158
|
import { fileURLToPath } from "url";
|
|
159
|
+
|
|
160
|
+
// src/lib/dist-drift.ts
|
|
161
|
+
import { readdirSync } from "fs";
|
|
162
|
+
function listDistChunkFiles(distDir, readdir = readdirSync) {
|
|
163
|
+
try {
|
|
164
|
+
return readdir(distDir).filter((f) => typeof f === "string" && f.endsWith(".js")).sort();
|
|
165
|
+
} catch {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function snapshotDist(distDir, pkgVersion, readdir = readdirSync) {
|
|
170
|
+
return { version: pkgVersion, chunks: listDistChunkFiles(distDir, readdir) };
|
|
171
|
+
}
|
|
172
|
+
function detectDistDrift(boot, current) {
|
|
173
|
+
const versionChanged = boot.version !== "unknown" && current.version !== "unknown" && boot.version !== current.version;
|
|
174
|
+
const currentSet = new Set(current.chunks);
|
|
175
|
+
const missingChunks = current.chunks.length === 0 && boot.chunks.length > 0 ? [] : boot.chunks.filter((c) => !currentSet.has(c));
|
|
176
|
+
const drifted = versionChanged || missingChunks.length > 0;
|
|
177
|
+
let reason = null;
|
|
178
|
+
if (versionChanged && missingChunks.length > 0) {
|
|
179
|
+
reason = `version ${boot.version} -> ${current.version} and ${missingChunks.length} chunk(s) removed`;
|
|
180
|
+
} else if (versionChanged) {
|
|
181
|
+
reason = `version ${boot.version} -> ${current.version}`;
|
|
182
|
+
} else if (missingChunks.length > 0) {
|
|
183
|
+
reason = `${missingChunks.length} boot chunk(s) removed from dist`;
|
|
184
|
+
}
|
|
185
|
+
return { drifted, reason, missingChunks, versionChanged };
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// src/lib/exe-daemon.ts
|
|
156
189
|
import { fork, spawn as spawn2 } from "child_process";
|
|
157
190
|
import { Worker } from "worker_threads";
|
|
158
191
|
|
|
@@ -1203,6 +1236,21 @@ var PACKAGE_VERSION = (() => {
|
|
|
1203
1236
|
return "unknown";
|
|
1204
1237
|
}
|
|
1205
1238
|
})();
|
|
1239
|
+
var DIST_DIR = (() => {
|
|
1240
|
+
try {
|
|
1241
|
+
return fileURLToPath(new URL("..", import.meta.url));
|
|
1242
|
+
} catch {
|
|
1243
|
+
return "";
|
|
1244
|
+
}
|
|
1245
|
+
})();
|
|
1246
|
+
var PACKAGE_JSON_PATH = (() => {
|
|
1247
|
+
try {
|
|
1248
|
+
return fileURLToPath(new URL("../../package.json", import.meta.url));
|
|
1249
|
+
} catch {
|
|
1250
|
+
return "";
|
|
1251
|
+
}
|
|
1252
|
+
})();
|
|
1253
|
+
var BOOT_DIST_SNAPSHOT = snapshotDist(DIST_DIR, PACKAGE_VERSION);
|
|
1206
1254
|
var _embedWorker = null;
|
|
1207
1255
|
var _embedWorkerReady = false;
|
|
1208
1256
|
var _embedLoadDeferrals = 0;
|
|
@@ -2079,7 +2127,7 @@ async function loadModel() {
|
|
|
2079
2127
|
void (async () => {
|
|
2080
2128
|
try {
|
|
2081
2129
|
if (_storeInitialized) {
|
|
2082
|
-
const { writeNotification } = await import("../notifications-
|
|
2130
|
+
const { writeNotification } = await import("../notifications-YKHZPCXU.js");
|
|
2083
2131
|
await writeNotification({
|
|
2084
2132
|
agentId: "exe",
|
|
2085
2133
|
agentRole: "system",
|
|
@@ -2195,7 +2243,7 @@ function disableEmbeddingsForInferenceTimeouts() {
|
|
|
2195
2243
|
void (async () => {
|
|
2196
2244
|
try {
|
|
2197
2245
|
if (_storeInitialized) {
|
|
2198
|
-
const { writeNotification } = await import("../notifications-
|
|
2246
|
+
const { writeNotification } = await import("../notifications-YKHZPCXU.js");
|
|
2199
2247
|
await writeNotification({
|
|
2200
2248
|
agentId: "exe",
|
|
2201
2249
|
agentRole: "system",
|
|
@@ -2441,7 +2489,7 @@ async function shutdown(exitCode = 0, reason = null) {
|
|
|
2441
2489
|
dbBytes = dbPath ? statSync4(dbPath).size : 0;
|
|
2442
2490
|
} catch {
|
|
2443
2491
|
}
|
|
2444
|
-
const { getAvailableMemoryBytesSync } = await import("../memory-pressure-watchdog-
|
|
2492
|
+
const { getAvailableMemoryBytesSync } = await import("../memory-pressure-watchdog-IG7VRFIX.js");
|
|
2445
2493
|
const freeBytes = getAvailableMemoryBytesSync();
|
|
2446
2494
|
if (shouldSkipBackupUnderMemoryPressure(freeBytes, dbBytes)) {
|
|
2447
2495
|
memoryGateSkip = true;
|
|
@@ -2494,7 +2542,7 @@ async function shutdown(exitCode = 0, reason = null) {
|
|
|
2494
2542
|
`);
|
|
2495
2543
|
}
|
|
2496
2544
|
try {
|
|
2497
|
-
const { stopProjectionWorker } = await import("../projection-worker-
|
|
2545
|
+
const { stopProjectionWorker } = await import("../projection-worker-SKAMSZJF.js");
|
|
2498
2546
|
stopProjectionWorker();
|
|
2499
2547
|
} catch {
|
|
2500
2548
|
}
|
|
@@ -2590,7 +2638,7 @@ async function handleHealthCheck(socket, requestId) {
|
|
|
2590
2638
|
let pipelineStatus = "unknown";
|
|
2591
2639
|
if (dbConnected) {
|
|
2592
2640
|
try {
|
|
2593
|
-
await import("../pipeline-router-
|
|
2641
|
+
await import("../pipeline-router-RSRJPZNI.js");
|
|
2594
2642
|
pipelineStatus = "ok";
|
|
2595
2643
|
} catch {
|
|
2596
2644
|
pipelineStatus = "unavailable";
|
|
@@ -2791,7 +2839,7 @@ function persistIngestOutbox(req) {
|
|
|
2791
2839
|
async function drainIngestOutbox() {
|
|
2792
2840
|
try {
|
|
2793
2841
|
if (!existsSync7(INGEST_OUTBOX_DIR)) return;
|
|
2794
|
-
const files =
|
|
2842
|
+
const files = readdirSync2(INGEST_OUTBOX_DIR).filter((f) => f.endsWith(".json")).sort().slice(0, 500);
|
|
2795
2843
|
for (const file of files) {
|
|
2796
2844
|
const fullPath = path4.join(INGEST_OUTBOX_DIR, file);
|
|
2797
2845
|
try {
|
|
@@ -3022,7 +3070,7 @@ async function _writeMemoryRecordInner(entry, syncOnly = false) {
|
|
|
3022
3070
|
const vRow = await client.execute({ sql: "SELECT version FROM memories WHERE id = ?", args: [id] });
|
|
3023
3071
|
const version = Number(vRow.rows[0]?.version) || 0;
|
|
3024
3072
|
try {
|
|
3025
|
-
const { insertOntologyForMemory } = await import("../agentic-ontology-
|
|
3073
|
+
const { insertOntologyForMemory } = await import("../agentic-ontology-6MEXY5L7.js");
|
|
3026
3074
|
await insertOntologyForMemory({
|
|
3027
3075
|
id,
|
|
3028
3076
|
agent_id: record.agent_id,
|
|
@@ -3832,7 +3880,7 @@ async function startMcpHttpServer() {
|
|
|
3832
3880
|
clearBootstrapFailureMarker();
|
|
3833
3881
|
setBootPhase("db_ready");
|
|
3834
3882
|
_storeInitialized = true;
|
|
3835
|
-
const { initLicenseGate, getCachedLicenseGate } = await import("../license-gate-
|
|
3883
|
+
const { initLicenseGate, getCachedLicenseGate } = await import("../license-gate-ZRORTAQ2.js");
|
|
3836
3884
|
const gateResult = await initLicenseGate();
|
|
3837
3885
|
if (!gateResult.hasKey) {
|
|
3838
3886
|
process.stderr.write(
|
|
@@ -3847,7 +3895,7 @@ async function startMcpHttpServer() {
|
|
|
3847
3895
|
let _cachedWrapTelemetry = null;
|
|
3848
3896
|
async function getWrapTelemetry() {
|
|
3849
3897
|
if (!_cachedWrapTelemetry) {
|
|
3850
|
-
const { wrapServerWithTelemetry } = await import("../tool-telemetry-
|
|
3898
|
+
const { wrapServerWithTelemetry } = await import("../tool-telemetry-QJGJAHOC.js");
|
|
3851
3899
|
_cachedWrapTelemetry = wrapServerWithTelemetry;
|
|
3852
3900
|
}
|
|
3853
3901
|
return _cachedWrapTelemetry;
|
|
@@ -3919,7 +3967,7 @@ async function startMcpHttpServer() {
|
|
|
3919
3967
|
const expectedBuf = Buffer.from(_daemonToken);
|
|
3920
3968
|
if (tokenBuf.length === expectedBuf.length && timingSafeEqual(tokenBuf, expectedBuf)) return true;
|
|
3921
3969
|
try {
|
|
3922
|
-
const { verifyAccessToken } = await import("../oauth-server-
|
|
3970
|
+
const { verifyAccessToken } = await import("../oauth-server-FSKABATB.js");
|
|
3923
3971
|
const result = verifyAccessToken(token);
|
|
3924
3972
|
return result.valid;
|
|
3925
3973
|
} catch {
|
|
@@ -4172,7 +4220,7 @@ async function startMcpHttpServer() {
|
|
|
4172
4220
|
return;
|
|
4173
4221
|
}
|
|
4174
4222
|
try {
|
|
4175
|
-
const { handleOAuthRoute } = await import("../oauth-server-
|
|
4223
|
+
const { handleOAuthRoute } = await import("../oauth-server-FSKABATB.js");
|
|
4176
4224
|
const handled = await handleOAuthRoute(req, res, url, MCP_HTTP_PORT);
|
|
4177
4225
|
if (handled) return;
|
|
4178
4226
|
} catch (err) {
|
|
@@ -4300,7 +4348,7 @@ async function startMcpHttpServer() {
|
|
|
4300
4348
|
contextPct: body.context_pct
|
|
4301
4349
|
});
|
|
4302
4350
|
if (body.context_pct !== void 0 && body.context_pct > 70) {
|
|
4303
|
-
void import("../orchestration-events-
|
|
4351
|
+
void import("../orchestration-events-HAFDPTLV.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
|
|
4304
4352
|
recordOE({
|
|
4305
4353
|
eventType: "context.pressure",
|
|
4306
4354
|
source: "exe-daemon.heartbeat",
|
|
@@ -4385,7 +4433,7 @@ async function startMcpHttpServer() {
|
|
|
4385
4433
|
let sessionHint = req.headers["x-exe-session-name"] || req.headers["x-exe-session"] || "";
|
|
4386
4434
|
if (sessionHint) {
|
|
4387
4435
|
try {
|
|
4388
|
-
const { sanitizeSessionHintHeader, rejectForgedSessionHint } = await import("../mcp-session-identity-
|
|
4436
|
+
const { sanitizeSessionHintHeader, rejectForgedSessionHint } = await import("../mcp-session-identity-OPRX32H5.js");
|
|
4389
4437
|
const rawHint = sessionHint;
|
|
4390
4438
|
sessionHint = sanitizeSessionHintHeader(sessionHint);
|
|
4391
4439
|
if (!sessionHint) {
|
|
@@ -4424,7 +4472,7 @@ async function startMcpHttpServer() {
|
|
|
4424
4472
|
try {
|
|
4425
4473
|
const liveSessions = await getTmuxSessionsAsync();
|
|
4426
4474
|
const paneCommands = await getPaneCommandsAsync();
|
|
4427
|
-
const { resolveMcpSessionHint } = await import("../mcp-session-identity-
|
|
4475
|
+
const { resolveMcpSessionHint } = await import("../mcp-session-identity-OPRX32H5.js");
|
|
4428
4476
|
let registrySessions = [];
|
|
4429
4477
|
try {
|
|
4430
4478
|
const { listSessions: listRegistrySessions } = await import("./session-registry.js");
|
|
@@ -4561,7 +4609,7 @@ async function startMcpHttpServer() {
|
|
|
4561
4609
|
bindLive = await getTmuxSessionsAsync();
|
|
4562
4610
|
} catch {
|
|
4563
4611
|
}
|
|
4564
|
-
const { isLauncherCorroboratedIdentity } = await import("../mcp-session-identity-
|
|
4612
|
+
const { isLauncherCorroboratedIdentity } = await import("../mcp-session-identity-OPRX32H5.js");
|
|
4565
4613
|
const corroborated = isLauncherCorroboratedIdentity({
|
|
4566
4614
|
agentId,
|
|
4567
4615
|
registrySessions: bindRegistry,
|
|
@@ -4804,7 +4852,7 @@ async function startMcpHttpServer() {
|
|
|
4804
4852
|
}
|
|
4805
4853
|
}
|
|
4806
4854
|
try {
|
|
4807
|
-
const { reconcileHintWithRegistryIdentity } = await import("../mcp-session-identity-
|
|
4855
|
+
const { reconcileHintWithRegistryIdentity } = await import("../mcp-session-identity-OPRX32H5.js");
|
|
4808
4856
|
const { listSessions: listRegistrySessions } = await import("./session-registry.js");
|
|
4809
4857
|
const recon = reconcileHintWithRegistryIdentity({
|
|
4810
4858
|
agentId,
|
|
@@ -4984,15 +5032,31 @@ var _storeInitialized = false;
|
|
|
4984
5032
|
async function ensureStoreForPolling() {
|
|
4985
5033
|
if (_storeInitialized) return true;
|
|
4986
5034
|
try {
|
|
4987
|
-
const { initDatabase, isInitialized, ensureSchema } = await import("./database.js");
|
|
5035
|
+
const { initDatabase, initPostgresOnlyDatabase, isInitialized, ensureSchema } = await import("./database.js");
|
|
4988
5036
|
if (!isInitialized()) {
|
|
4989
5037
|
const { loadConfig } = await import("./config.js");
|
|
4990
5038
|
const { getMasterKey } = await import("./keychain.js");
|
|
4991
5039
|
const config = await loadConfig();
|
|
4992
5040
|
const masterKey = await getMasterKey();
|
|
4993
5041
|
if (!masterKey) {
|
|
4994
|
-
if (
|
|
5042
|
+
if (isPostgresBackendEnabled()) {
|
|
5043
|
+
await initPostgresOnlyDatabase();
|
|
4995
5044
|
process.stderr.write("[exed] No encryption key \u2014 running in PostgreSQL-only mode (VPS)\n");
|
|
5045
|
+
try {
|
|
5046
|
+
const { spawnDbReadWorker } = await import("./db-read-worker-client.js");
|
|
5047
|
+
spawnDbReadWorker();
|
|
5048
|
+
} catch (e) {
|
|
5049
|
+
process.stderr.write(`[exed] DB read worker spawn failed (non-fatal): ${e instanceof Error ? e.message : String(e)}
|
|
5050
|
+
`);
|
|
5051
|
+
}
|
|
5052
|
+
try {
|
|
5053
|
+
if (isWriteWorkerEnabled()) {
|
|
5054
|
+
spawnDbWriteWorker();
|
|
5055
|
+
}
|
|
5056
|
+
} catch (e) {
|
|
5057
|
+
process.stderr.write(`[exed] DB write worker spawn failed (non-fatal): ${e instanceof Error ? e.message : String(e)}
|
|
5058
|
+
`);
|
|
5059
|
+
}
|
|
4996
5060
|
_storeInitialized = true;
|
|
4997
5061
|
return true;
|
|
4998
5062
|
}
|
|
@@ -5001,9 +5065,9 @@ async function ensureStoreForPolling() {
|
|
|
5001
5065
|
await initDatabase({ dbPath: config.dbPath, encryptionKey: masterKey.toString("hex") });
|
|
5002
5066
|
await ensureSchema();
|
|
5003
5067
|
try {
|
|
5004
|
-
const { isLedgerEnabled } = await import("../notification-ledger-
|
|
5068
|
+
const { isLedgerEnabled } = await import("../notification-ledger-KSCPGLQG.js");
|
|
5005
5069
|
if (isLedgerEnabled()) {
|
|
5006
|
-
const { bumpBootGeneration } = await import("../boot-generation-
|
|
5070
|
+
const { bumpBootGeneration } = await import("../boot-generation-FB2J53IG.js");
|
|
5007
5071
|
const { setDaemonReadyGeneration } = await import("../daemon-ready-signal-TVCPSG7J.js");
|
|
5008
5072
|
const generation = await bumpBootGeneration();
|
|
5009
5073
|
setDaemonReadyGeneration(generation);
|
|
@@ -5043,13 +5107,13 @@ async function ensureStoreForPolling() {
|
|
|
5043
5107
|
}
|
|
5044
5108
|
}
|
|
5045
5109
|
async function startReviewPolling() {
|
|
5046
|
-
const polling = await import("../review-polling-
|
|
5110
|
+
const polling = await import("../review-polling-KQUALBEU.js");
|
|
5047
5111
|
const state = {
|
|
5048
5112
|
lastIntercomSent: /* @__PURE__ */ new Map(),
|
|
5049
5113
|
lastNudgeSent: /* @__PURE__ */ new Map(),
|
|
5050
5114
|
intervalMs: REVIEW_POLL_INTERVAL_MS
|
|
5051
5115
|
};
|
|
5052
|
-
const { pollReviewNudge, createReviewNudgeRealDeps, loadNudgeState } = await import("../daemon-orchestration-
|
|
5116
|
+
const { pollReviewNudge, createReviewNudgeRealDeps, loadNudgeState } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
5053
5117
|
const nudgeState = loadNudgeState();
|
|
5054
5118
|
const tick = async () => traceDaemonTimer("review_polling", async () => {
|
|
5055
5119
|
fired("review_polling");
|
|
@@ -5095,7 +5159,7 @@ function startSessionTTL() {
|
|
|
5095
5159
|
if (!await ensureStoreForPolling()) return;
|
|
5096
5160
|
if (inPostRestartDestructiveGrace("session_ttl")) return;
|
|
5097
5161
|
const { getClient } = await import("./database.js");
|
|
5098
|
-
const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-
|
|
5162
|
+
const { checkSessionTTL, createSessionTTLRealDeps } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
5099
5163
|
const deps = createSessionTTLRealDeps(getClient);
|
|
5100
5164
|
const killed = await checkSessionTTL(deps, _wedgeObservations);
|
|
5101
5165
|
if (killed.length > 0) acted("session_ttl");
|
|
@@ -5147,7 +5211,7 @@ function startIdleKill() {
|
|
|
5147
5211
|
const cfg = await getCachedConfig();
|
|
5148
5212
|
if (!cfg) return;
|
|
5149
5213
|
const { getClient } = await import("./database.js");
|
|
5150
|
-
const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-
|
|
5214
|
+
const { pollIdleKill, createIdleKillRealDeps } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
5151
5215
|
const { sessions: liveSessions, paneCache, aliveSessions } = await getSharedOrchestrationCaches();
|
|
5152
5216
|
const realDeps = createIdleKillRealDeps(
|
|
5153
5217
|
getClient,
|
|
@@ -5300,16 +5364,18 @@ async function runCloudSyncChild() {
|
|
|
5300
5364
|
const env = buildCloudSyncChildEnv(process.env, { dbPath });
|
|
5301
5365
|
const timeoutMs = cloudSyncChildTimeoutMs({ dbPath });
|
|
5302
5366
|
cloudSyncDebugLog(`[exed] Cloud sync child timeout: ${timeoutMs}ms${dbPath ? ` (db=${dbPath})` : ""}`);
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
|
|
5367
|
+
if (!isPostgresBackendEnabled()) {
|
|
5368
|
+
try {
|
|
5369
|
+
const { verifyAndCleanStaleDbLock } = await import("./database.js");
|
|
5370
|
+
const lockResult = await verifyAndCleanStaleDbLock();
|
|
5371
|
+
if (lockResult === "cleaned-dead" || lockResult === "cleaned-pid-reuse") {
|
|
5372
|
+
process.stderr.write(`[exed] Cloud sync pre-spawn db.lock verification: ${lockResult}
|
|
5308
5373
|
`);
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5374
|
+
}
|
|
5375
|
+
} catch (err) {
|
|
5376
|
+
process.stderr.write(`[exed] Cloud sync pre-spawn db.lock verification failed: ${err instanceof Error ? err.message : String(err)}
|
|
5312
5377
|
`);
|
|
5378
|
+
}
|
|
5313
5379
|
}
|
|
5314
5380
|
try {
|
|
5315
5381
|
return await runCapturedCloudSyncChild({
|
|
@@ -5518,7 +5584,7 @@ function startSkillRefinement() {
|
|
|
5518
5584
|
if (!shouldRunHeavyJob("skill_refinement")) return;
|
|
5519
5585
|
try {
|
|
5520
5586
|
if (!await ensureStoreForPolling()) return;
|
|
5521
|
-
const { runSkillRefinement } = await import("../skill-refinement-
|
|
5587
|
+
const { runSkillRefinement } = await import("../skill-refinement-6HPISXQC.js");
|
|
5522
5588
|
const result = await runSkillRefinement();
|
|
5523
5589
|
if (result.reviewed > 0) {
|
|
5524
5590
|
acted("skill_refinement");
|
|
@@ -5544,7 +5610,7 @@ function startStaleBranchSweep() {
|
|
|
5544
5610
|
const tick = async () => {
|
|
5545
5611
|
fired("stale_branch_sweep");
|
|
5546
5612
|
try {
|
|
5547
|
-
const { discoverRepoPaths } = await import("../worktree-sweep-
|
|
5613
|
+
const { discoverRepoPaths } = await import("../worktree-sweep-SW4AG6JR.js");
|
|
5548
5614
|
const { scanUnmergedBranchesCached } = await import("../branch-hygiene-HNSOUDJE.js");
|
|
5549
5615
|
const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
5550
5616
|
for (const k of _staleBranchAlertedToday) {
|
|
@@ -5576,7 +5642,7 @@ function startStaleBranchSweep() {
|
|
|
5576
5642
|
if (!_storeInitialized) continue;
|
|
5577
5643
|
const stale = scan.branches.filter((b) => b.ageHours >= STALE_BRANCH_HOURS).slice(0, 5).map((b) => `${b.name} (+${b.ahead} commits, ${(b.ageHours / 24).toFixed(1)}d)`).join("; ");
|
|
5578
5644
|
try {
|
|
5579
|
-
const { writeNotification } = await import("../notifications-
|
|
5645
|
+
const { writeNotification } = await import("../notifications-YKHZPCXU.js");
|
|
5580
5646
|
await writeNotification({
|
|
5581
5647
|
agentId: "exe",
|
|
5582
5648
|
agentRole: "system",
|
|
@@ -5631,7 +5697,7 @@ function startWorkStateHeartbeat() {
|
|
|
5631
5697
|
const { getClient } = await import("./database.js");
|
|
5632
5698
|
const { listSessions } = await import("./session-registry.js");
|
|
5633
5699
|
const { isCoordinatorName } = await import("./employees.js");
|
|
5634
|
-
const { runWorkStateTick } = await import("../work-state-heartbeat-
|
|
5700
|
+
const { runWorkStateTick } = await import("../work-state-heartbeat-MQQOCU54.js");
|
|
5635
5701
|
let liveTmux = null;
|
|
5636
5702
|
const loadLiveTmux = async () => {
|
|
5637
5703
|
if (!liveTmux) liveTmux = await listTmuxSessionNamesAsync();
|
|
@@ -5696,7 +5762,7 @@ function startGraphExtraction() {
|
|
|
5696
5762
|
if (!await ensureStoreForPolling()) return;
|
|
5697
5763
|
const { getClient } = await import("./database.js");
|
|
5698
5764
|
const client = getClient();
|
|
5699
|
-
const { extractBatch } = await import("../graph-rag-
|
|
5765
|
+
const { extractBatch } = await import("../graph-rag-YFITUAVO.js");
|
|
5700
5766
|
const result = await extractBatch(client, 50, config.selfQueryModel);
|
|
5701
5767
|
if (result.processed > 0) {
|
|
5702
5768
|
acted("graph_extraction");
|
|
@@ -6114,7 +6180,7 @@ function startReflectionSweep() {
|
|
|
6114
6180
|
);
|
|
6115
6181
|
let runReflection;
|
|
6116
6182
|
try {
|
|
6117
|
-
({ runReflection } = await import("../memory-reflection-
|
|
6183
|
+
({ runReflection } = await import("../memory-reflection-LTRHDGUL.js"));
|
|
6118
6184
|
} catch (importErr) {
|
|
6119
6185
|
_reflectionImportFailed = true;
|
|
6120
6186
|
process.stderr.write(`[exed] Reflection module unavailable (stale chunk hash?) \u2014 disabled until daemon restart: ${importErr instanceof Error ? importErr.message : String(importErr)}
|
|
@@ -6155,7 +6221,7 @@ function startReflectionSweep() {
|
|
|
6155
6221
|
if (memories > 100 && cards < memories * 0.1) {
|
|
6156
6222
|
process.stderr.write(`[exed] Memory cards sparse (${cards} cards / ${memories} memories) \u2014 running backfill...
|
|
6157
6223
|
`);
|
|
6158
|
-
const { insertMemoryCardsForBatch } = await import("../memory-cards-
|
|
6224
|
+
const { insertMemoryCardsForBatch } = await import("../memory-cards-GFO2CSPV.js");
|
|
6159
6225
|
const batchSize = 500;
|
|
6160
6226
|
let offset = 0;
|
|
6161
6227
|
let totalCards = 0;
|
|
@@ -6223,7 +6289,7 @@ function startDatabaseBackup() {
|
|
|
6223
6289
|
`
|
|
6224
6290
|
);
|
|
6225
6291
|
try {
|
|
6226
|
-
const { maybeVerifyDailyBackup } = await import("../backup-verify-
|
|
6292
|
+
const { maybeVerifyDailyBackup } = await import("../backup-verify-RGB3KKD4.js");
|
|
6227
6293
|
const verdict = await maybeVerifyDailyBackup(backupPath);
|
|
6228
6294
|
if (verdict && !verdict.ok) {
|
|
6229
6295
|
process.stderr.write(
|
|
@@ -6300,7 +6366,7 @@ function startSessionEventsRetention() {
|
|
|
6300
6366
|
if (!await ensureStoreForPolling()) return;
|
|
6301
6367
|
try {
|
|
6302
6368
|
const { getClient } = await import("./database.js");
|
|
6303
|
-
const { sweepExpiredSessionEvents, DEFAULT_SESSION_EVENTS_RETENTION_DAYS } = await import("../session-events-
|
|
6369
|
+
const { sweepExpiredSessionEvents, DEFAULT_SESSION_EVENTS_RETENTION_DAYS } = await import("../session-events-3KL735DZ.js");
|
|
6304
6370
|
const days = SESSION_EVENTS_RETENTION_DAYS ?? DEFAULT_SESSION_EVENTS_RETENTION_DAYS;
|
|
6305
6371
|
const count = await sweepExpiredSessionEvents(getClient(), days);
|
|
6306
6372
|
if (count > 0) {
|
|
@@ -6331,7 +6397,7 @@ function startIntercomQueueDrain() {
|
|
|
6331
6397
|
const tick = async () => traceDaemonTimer("intercom_queue_drain", async () => {
|
|
6332
6398
|
fired("intercom_queue_drain");
|
|
6333
6399
|
try {
|
|
6334
|
-
const { drainQueueAsync, readQueue } = await import("../intercom-queue-
|
|
6400
|
+
const { drainQueueAsync, readQueue } = await import("../intercom-queue-A52WQOCD.js");
|
|
6335
6401
|
const {
|
|
6336
6402
|
sendIntercomAsync: centralSendIntercomAsync,
|
|
6337
6403
|
countScopedPendingReviews,
|
|
@@ -6463,7 +6529,7 @@ function startLedgerDrain() {
|
|
|
6463
6529
|
const tick = async () => traceDaemonTimer("ledger_drain", async () => {
|
|
6464
6530
|
fired("ledger_drain");
|
|
6465
6531
|
try {
|
|
6466
|
-
const { isLedgerEnabled, drainLedger } = await import("../notification-ledger-
|
|
6532
|
+
const { isLedgerEnabled, drainLedger } = await import("../notification-ledger-KSCPGLQG.js");
|
|
6467
6533
|
if (!isLedgerEnabled()) return;
|
|
6468
6534
|
const result = await drainLedger({
|
|
6469
6535
|
// Shadow "would-deliver": idle target = would-deliver, busy = retry.
|
|
@@ -6502,7 +6568,7 @@ function startOrphanReaper() {
|
|
|
6502
6568
|
const tick = async () => traceDaemonTimer("orphan_reaper", async () => {
|
|
6503
6569
|
fired("orphan_reaper");
|
|
6504
6570
|
try {
|
|
6505
|
-
const { reapOrphanedMcpProcesses, createOrphanReaperRealDepsAsync } = await import("../daemon-orchestration-
|
|
6571
|
+
const { reapOrphanedMcpProcesses, createOrphanReaperRealDepsAsync } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
6506
6572
|
const deps = await createOrphanReaperRealDepsAsync();
|
|
6507
6573
|
const reaped = await reapOrphanedMcpProcesses(deps);
|
|
6508
6574
|
if (reaped.length > 0) acted("orphan_reaper");
|
|
@@ -6527,7 +6593,7 @@ function startZombieAgentReaper() {
|
|
|
6527
6593
|
const tick = async () => traceDaemonTimer("zombie_agent_reaper", async () => {
|
|
6528
6594
|
fired("zombie_agent_reaper");
|
|
6529
6595
|
try {
|
|
6530
|
-
const { reapZombieAgentProcesses, createZombieAgentReaperRealDepsAsync } = await import("../daemon-orchestration-
|
|
6596
|
+
const { reapZombieAgentProcesses, createZombieAgentReaperRealDepsAsync } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
6531
6597
|
const deps = await createZombieAgentReaperRealDepsAsync();
|
|
6532
6598
|
const reaped = reapZombieAgentProcesses(deps);
|
|
6533
6599
|
if (reaped.length > 0) acted("zombie_agent_reaper");
|
|
@@ -6551,7 +6617,7 @@ async function startDaemonMemoryPressureWatchdog() {
|
|
|
6551
6617
|
try {
|
|
6552
6618
|
const cfg = await getCachedConfig();
|
|
6553
6619
|
if (!cfg) return;
|
|
6554
|
-
const { startMemoryPressureWatchdog: startWatchdog, MEMORY_PRESSURE_WATCHDOG_DEFAULTS } = await import("../memory-pressure-watchdog-
|
|
6620
|
+
const { startMemoryPressureWatchdog: startWatchdog, MEMORY_PRESSURE_WATCHDOG_DEFAULTS } = await import("../memory-pressure-watchdog-IG7VRFIX.js");
|
|
6555
6621
|
const watchdogCfg = {
|
|
6556
6622
|
...MEMORY_PRESSURE_WATCHDOG_DEFAULTS,
|
|
6557
6623
|
...cfg.memoryPressureWatchdog ?? {}
|
|
@@ -6582,7 +6648,7 @@ function startWorktreeReaper() {
|
|
|
6582
6648
|
const tick = async () => traceDaemonTimer("worktree_reaper", async () => {
|
|
6583
6649
|
fired("worktree_reaper");
|
|
6584
6650
|
try {
|
|
6585
|
-
const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-
|
|
6651
|
+
const { reapOrphanedWorktrees, createWorktreeReaperRealDeps } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
6586
6652
|
const deps = await createWorktreeReaperRealDeps();
|
|
6587
6653
|
const result = await reapOrphanedWorktrees(deps);
|
|
6588
6654
|
if (result.pruned.length > 0) {
|
|
@@ -6622,8 +6688,8 @@ function startWorktreeReaper() {
|
|
|
6622
6688
|
}
|
|
6623
6689
|
continue;
|
|
6624
6690
|
}
|
|
6625
|
-
const { cleanupAgentWorktree } = await import("../worktree-sweep-
|
|
6626
|
-
const { getMainRepoRootAsync } = await import("../worktree-
|
|
6691
|
+
const { cleanupAgentWorktree } = await import("../worktree-sweep-SW4AG6JR.js");
|
|
6692
|
+
const { getMainRepoRootAsync } = await import("../worktree-FJZXHDCJ.js");
|
|
6627
6693
|
const repoRoot = await getMainRepoRootAsync(signal.worktreePath);
|
|
6628
6694
|
if (repoRoot && signal.agentId) {
|
|
6629
6695
|
const notes = await cleanupAgentWorktree(repoRoot, signal.agentId);
|
|
@@ -6656,7 +6722,7 @@ function startAutoWake() {
|
|
|
6656
6722
|
if (!await ensureStoreForPolling()) return;
|
|
6657
6723
|
try {
|
|
6658
6724
|
const { getClient } = await import("./database.js");
|
|
6659
|
-
const { pollOrphanedTasks, createAutoWakeRealDeps } = await import("../daemon-orchestration-
|
|
6725
|
+
const { pollOrphanedTasks, createAutoWakeRealDeps } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
6660
6726
|
const deps = createAutoWakeRealDeps(getClient, process.cwd(), getTmuxSessionsAsync);
|
|
6661
6727
|
const woken = await pollOrphanedTasks(deps);
|
|
6662
6728
|
if (woken.length > 0) acted("auto_wake");
|
|
@@ -6667,12 +6733,12 @@ function startAutoWake() {
|
|
|
6667
6733
|
try {
|
|
6668
6734
|
const signalBase = path4.join(os3.homedir(), ".exe-os", "task-signals");
|
|
6669
6735
|
if (existsSync7(signalBase)) {
|
|
6670
|
-
const { readdirSync:
|
|
6736
|
+
const { readdirSync: readdirSync3, statSync: statSyncFs } = await import("fs");
|
|
6671
6737
|
const { sendIntercomAsync, extractRootExe } = await import("./tmux-routing.js");
|
|
6672
6738
|
const sessionCache = path4.join(os3.homedir(), ".exe-os", "session-cache");
|
|
6673
6739
|
const sessions = await getTmuxSessionsAsync();
|
|
6674
6740
|
const signalDirs = [];
|
|
6675
|
-
for (const entry of
|
|
6741
|
+
for (const entry of readdirSync3(signalBase, { withFileTypes: true })) {
|
|
6676
6742
|
if (entry.isDirectory()) signalDirs.push({ dir: path4.join(signalBase, entry.name), scope: entry.name });
|
|
6677
6743
|
}
|
|
6678
6744
|
signalDirs.push({ dir: signalBase, scope: null });
|
|
@@ -6697,7 +6763,7 @@ function startAutoWake() {
|
|
|
6697
6763
|
for (const { dir, scope } of signalDirs) {
|
|
6698
6764
|
let files = [];
|
|
6699
6765
|
try {
|
|
6700
|
-
files =
|
|
6766
|
+
files = readdirSync3(dir).filter((f) => f.endsWith(".pending") && !f.includes("review-"));
|
|
6701
6767
|
} catch {
|
|
6702
6768
|
continue;
|
|
6703
6769
|
}
|
|
@@ -6707,7 +6773,7 @@ function startAutoWake() {
|
|
|
6707
6773
|
if (age > 60 * 60 * 1e3) {
|
|
6708
6774
|
try {
|
|
6709
6775
|
unlinkSync4(signalPath);
|
|
6710
|
-
void import("../orchestration-events-
|
|
6776
|
+
void import("../orchestration-events-HAFDPTLV.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
|
|
6711
6777
|
recordOE({ eventType: "signal.stale", source: "exe-daemon.autoWake", severity: "warn", payload: { file, ageMinutes: Math.round(age / 6e4) } });
|
|
6712
6778
|
}).catch(() => {
|
|
6713
6779
|
});
|
|
@@ -6853,7 +6919,7 @@ function startStuckTaskRelease() {
|
|
|
6853
6919
|
createStuckTaskRealDeps,
|
|
6854
6920
|
escalateStuckBlockedTasks,
|
|
6855
6921
|
createStuckBlockedRealDeps
|
|
6856
|
-
} = await import("../daemon-orchestration-
|
|
6922
|
+
} = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
6857
6923
|
const deps = createStuckTaskRealDeps(getClient);
|
|
6858
6924
|
const released = await releaseStuckTasks(deps);
|
|
6859
6925
|
if (released.length > 0) {
|
|
@@ -7048,12 +7114,12 @@ function startTaskEnforcementScanner() {
|
|
|
7048
7114
|
const tick = async () => traceDaemonTimer("task_enforcement", async () => {
|
|
7049
7115
|
fired("task_enforcement");
|
|
7050
7116
|
try {
|
|
7051
|
-
const { runTaskEnforcementTick } = await import("../task-enforcement-
|
|
7117
|
+
const { runTaskEnforcementTick } = await import("../task-enforcement-OAOL7XFL.js");
|
|
7052
7118
|
const { getTransport } = await import("./transport.js");
|
|
7053
7119
|
const { loadAgentConfig } = await import("./agent-config.js");
|
|
7054
7120
|
const { getClient } = await import("./database.js");
|
|
7055
7121
|
const { loadEmployeesSync } = await import("./employees.js");
|
|
7056
|
-
const { sessionScopeFilter } = await import("../task-scope-
|
|
7122
|
+
const { sessionScopeFilter } = await import("../task-scope-PSVAE3EM.js");
|
|
7057
7123
|
const transport = getTransport();
|
|
7058
7124
|
const { sessions: allSessions, paneCache, aliveSessions } = await getSharedOrchestrationCaches();
|
|
7059
7125
|
await yieldToEventLoop();
|
|
@@ -7064,10 +7130,10 @@ function startTaskEnforcementScanner() {
|
|
|
7064
7130
|
sendKeysLiteral: transport.sendKeysLiteral?.bind(transport),
|
|
7065
7131
|
isAlive: (session) => aliveSessions.has(session)
|
|
7066
7132
|
};
|
|
7067
|
-
const { checkAutoWakeGates } = await import("../daemon-orchestration-
|
|
7133
|
+
const { checkAutoWakeGates } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
7068
7134
|
const { ensureEmployeeAsync, employeeSessionName, sendIntercomAsync } = await import("./tmux-routing.js");
|
|
7069
7135
|
const { shouldAutoInstance } = await import("./employees.js");
|
|
7070
|
-
const { recordOrchestrationEventBestEffort } = await import("../orchestration-events-
|
|
7136
|
+
const { recordOrchestrationEventBestEffort } = await import("../orchestration-events-HAFDPTLV.js");
|
|
7071
7137
|
const projectDir = process.cwd();
|
|
7072
7138
|
await runTaskEnforcementTick({
|
|
7073
7139
|
transport: enforcementTransport,
|
|
@@ -7448,6 +7514,78 @@ process.on("unhandledRejection", (reason) => {
|
|
|
7448
7514
|
logCrash(reason instanceof Error ? reason : String(reason), "unhandled_rejection");
|
|
7449
7515
|
maybeSelfHealStaleDist(reason, "unhandledRejection");
|
|
7450
7516
|
});
|
|
7517
|
+
var DIST_DRIFT_CHECK_INTERVAL_MS = 2e4;
|
|
7518
|
+
var _distDriftRestartRequested = false;
|
|
7519
|
+
var _distDriftPendingMissing = false;
|
|
7520
|
+
function readOnDiskPackageVersion() {
|
|
7521
|
+
if (!PACKAGE_JSON_PATH) return PACKAGE_VERSION;
|
|
7522
|
+
try {
|
|
7523
|
+
const pkg = JSON.parse(readFileSync6(PACKAGE_JSON_PATH, "utf8"));
|
|
7524
|
+
return typeof pkg.version === "string" ? pkg.version : PACKAGE_VERSION;
|
|
7525
|
+
} catch {
|
|
7526
|
+
return PACKAGE_VERSION;
|
|
7527
|
+
}
|
|
7528
|
+
}
|
|
7529
|
+
function startDistDriftWatch() {
|
|
7530
|
+
if (!DIST_DIR) {
|
|
7531
|
+
process.stderr.write("[exed] Dist-drift watch skipped \u2014 could not resolve dist dir\n");
|
|
7532
|
+
return;
|
|
7533
|
+
}
|
|
7534
|
+
const tick = () => {
|
|
7535
|
+
fired("dist_drift_watch");
|
|
7536
|
+
if (_distDriftRestartRequested) return;
|
|
7537
|
+
const current = {
|
|
7538
|
+
version: readOnDiskPackageVersion(),
|
|
7539
|
+
chunks: listDistChunkFiles(DIST_DIR)
|
|
7540
|
+
};
|
|
7541
|
+
const drift = detectDistDrift(BOOT_DIST_SNAPSHOT, current);
|
|
7542
|
+
if (!drift.drifted) {
|
|
7543
|
+
_distDriftPendingMissing = false;
|
|
7544
|
+
return;
|
|
7545
|
+
}
|
|
7546
|
+
if (!drift.versionChanged) {
|
|
7547
|
+
if (!_distDriftPendingMissing) {
|
|
7548
|
+
_distDriftPendingMissing = true;
|
|
7549
|
+
process.stderr.write(
|
|
7550
|
+
`[exed] Dist-drift candidate (${drift.reason}) \u2014 re-checking next pass before restart
|
|
7551
|
+
`
|
|
7552
|
+
);
|
|
7553
|
+
return;
|
|
7554
|
+
}
|
|
7555
|
+
}
|
|
7556
|
+
_distDriftRestartRequested = true;
|
|
7557
|
+
acted("dist_drift_watch");
|
|
7558
|
+
process.stderr.write(
|
|
7559
|
+
`[exed] Dist drift detected (${drift.reason}) \u2014 daemon is running against a swapped build; requesting restart. boot=v${BOOT_DIST_SNAPSHOT.version} disk=v${current.version} missing=[${drift.missingChunks.slice(0, 8).join(", ")}]
|
|
7560
|
+
`
|
|
7561
|
+
);
|
|
7562
|
+
logRestartEvent("daemon_self_exit", {
|
|
7563
|
+
trigger: "dist_drift",
|
|
7564
|
+
reason: drift.reason ?? "unknown",
|
|
7565
|
+
version_changed: drift.versionChanged,
|
|
7566
|
+
missing_chunks: drift.missingChunks.length,
|
|
7567
|
+
boot_version: BOOT_DIST_SNAPSHOT.version,
|
|
7568
|
+
disk_version: current.version,
|
|
7569
|
+
uptime_s: Math.floor((Date.now() - _startedAt2) / 1e3)
|
|
7570
|
+
});
|
|
7571
|
+
try {
|
|
7572
|
+
const result = requestRestart("dist-drift-self-heal");
|
|
7573
|
+
if (!result.ok) _distDriftRestartRequested = false;
|
|
7574
|
+
} catch (err) {
|
|
7575
|
+
_distDriftRestartRequested = false;
|
|
7576
|
+
process.stderr.write(
|
|
7577
|
+
`[exed] requestRestart for dist-drift self-heal failed (non-fatal): ${err instanceof Error ? err.message : String(err)}
|
|
7578
|
+
`
|
|
7579
|
+
);
|
|
7580
|
+
}
|
|
7581
|
+
};
|
|
7582
|
+
const timer = setInterval(() => void traceDaemonTimer("dist_drift_watch", tick), DIST_DRIFT_CHECK_INTERVAL_MS);
|
|
7583
|
+
timer.unref();
|
|
7584
|
+
process.stderr.write(
|
|
7585
|
+
`[exed] Dist-drift watch started (every ${DIST_DRIFT_CHECK_INTERVAL_MS / 1e3}s; boot v${BOOT_DIST_SNAPSHOT.version}, ${BOOT_DIST_SNAPSHOT.chunks.length} chunks tracked)
|
|
7586
|
+
`
|
|
7587
|
+
);
|
|
7588
|
+
}
|
|
7451
7589
|
var BUG_AUTOFIX_INTERVAL_MS = 5 * 6e4;
|
|
7452
7590
|
var AUTOFIX_DEDUP_TTL_MS = 6 * 60 * 60 * 1e3;
|
|
7453
7591
|
var AUTOFIX_DEDUP_MAX_ENTRIES = 1e3;
|
|
@@ -7975,7 +8113,7 @@ function startEventLoopLagDetector() {
|
|
|
7975
8113
|
const msg = `[exed] EVENT LOOP BLOCKED ${(lag / 1e3).toFixed(1)}s \u2014 MCP UNRESPONSIVE. Sessions will die.`;
|
|
7976
8114
|
process.stderr.write(msg + "\n");
|
|
7977
8115
|
logDaemonHealth({ event: "event_loop_blocked", pid: process.pid, message: msg, data: { lagMs: lag } });
|
|
7978
|
-
void import("../orchestration-events-
|
|
8116
|
+
void import("../orchestration-events-HAFDPTLV.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
|
|
7979
8117
|
recordOE({ eventType: "daemon.event_loop_blocked", source: "exe-daemon.lagDetector", severity: "error", durationMs: lag });
|
|
7980
8118
|
}).catch(() => {
|
|
7981
8119
|
});
|
|
@@ -8169,7 +8307,7 @@ function startTaskFileResync() {
|
|
|
8169
8307
|
});
|
|
8170
8308
|
if (Number(res.rowsAffected ?? 0) > 0) {
|
|
8171
8309
|
synced++;
|
|
8172
|
-
void import("../orchestration-events-
|
|
8310
|
+
void import("../orchestration-events-HAFDPTLV.js").then(({ recordOrchestrationEventBestEffort: recordOE }) => {
|
|
8173
8311
|
recordOE({
|
|
8174
8312
|
eventType: "task_file.resynced",
|
|
8175
8313
|
source: "exe-daemon.taskFileResync",
|
|
@@ -8203,7 +8341,7 @@ function startTaskGroupBarriers() {
|
|
|
8203
8341
|
fired("task_group_barriers");
|
|
8204
8342
|
if (!await ensureStoreForPolling()) return;
|
|
8205
8343
|
try {
|
|
8206
|
-
const { pollTaskGroupBarriers } = await import("../daemon-orchestration-
|
|
8344
|
+
const { pollTaskGroupBarriers } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
8207
8345
|
const firedCount = await pollTaskGroupBarriers();
|
|
8208
8346
|
if (firedCount > 0) {
|
|
8209
8347
|
acted("task_group_barriers");
|
|
@@ -8225,7 +8363,7 @@ function startCheckpointGc() {
|
|
|
8225
8363
|
fired("checkpoint_gc");
|
|
8226
8364
|
if (!await ensureStoreForPolling()) return;
|
|
8227
8365
|
try {
|
|
8228
|
-
const { gcStaleCheckpoints } = await import("../daemon-orchestration-
|
|
8366
|
+
const { gcStaleCheckpoints } = await import("../daemon-orchestration-JQGKEWPD.js");
|
|
8229
8367
|
const cleared = await gcStaleCheckpoints();
|
|
8230
8368
|
if (cleared > 0) {
|
|
8231
8369
|
acted("checkpoint_gc");
|
|
@@ -8265,14 +8403,14 @@ function startDispatchAckCleanup() {
|
|
|
8265
8403
|
function startProjectionWorkerDeferred() {
|
|
8266
8404
|
setTimeout(async () => {
|
|
8267
8405
|
try {
|
|
8268
|
-
const { startProjectionWorker } = await import("../projection-worker-
|
|
8406
|
+
const { startProjectionWorker } = await import("../projection-worker-SKAMSZJF.js");
|
|
8269
8407
|
startProjectionWorker();
|
|
8270
8408
|
} catch {
|
|
8271
8409
|
}
|
|
8272
8410
|
}, 2e4);
|
|
8273
8411
|
}
|
|
8274
8412
|
async function startToolTelemetry() {
|
|
8275
|
-
const { startToolTelemetryFlush } = await import("../tool-telemetry-
|
|
8413
|
+
const { startToolTelemetryFlush } = await import("../tool-telemetry-QJGJAHOC.js");
|
|
8276
8414
|
startToolTelemetryFlush();
|
|
8277
8415
|
process.stderr.write("[exed] Tool telemetry started (flush every 5m)\n");
|
|
8278
8416
|
}
|
|
@@ -8297,6 +8435,7 @@ function startServerModeTimers() {
|
|
|
8297
8435
|
startDispatchAckCleanup();
|
|
8298
8436
|
void startToolTelemetry();
|
|
8299
8437
|
startProjectionWorkerDeferred();
|
|
8438
|
+
setTimeout(startDistDriftWatch, 3e4);
|
|
8300
8439
|
}
|
|
8301
8440
|
function startLocalFirstTimers() {
|
|
8302
8441
|
startMemoryQueueDrain();
|
|
@@ -8312,6 +8451,7 @@ function startLocalFirstTimers() {
|
|
|
8312
8451
|
startApiWatchdog();
|
|
8313
8452
|
startIdleKill();
|
|
8314
8453
|
startRssWatchdog();
|
|
8454
|
+
setTimeout(startDistDriftWatch, 3e4);
|
|
8315
8455
|
startOrchestrationTimer();
|
|
8316
8456
|
setTimeout(startWalCheckpoint, 5e3);
|
|
8317
8457
|
startTaskFileResync();
|
|
@@ -8440,7 +8580,7 @@ function startLocalFirstTimers() {
|
|
|
8440
8580
|
fired("orphan_task_cleanup");
|
|
8441
8581
|
try {
|
|
8442
8582
|
if (!await ensureStoreForPolling()) return;
|
|
8443
|
-
const { cleanOrphanedTaskFiles } = await import("../tasks-crud-
|
|
8583
|
+
const { cleanOrphanedTaskFiles } = await import("../tasks-crud-TLELWWUL.js");
|
|
8444
8584
|
const count = await cleanOrphanedTaskFiles();
|
|
8445
8585
|
if (count > 0) {
|
|
8446
8586
|
acted("orphan_task_cleanup");
|
|
@@ -8456,7 +8596,7 @@ function startLocalFirstTimers() {
|
|
|
8456
8596
|
fired("task_file_consistency");
|
|
8457
8597
|
try {
|
|
8458
8598
|
if (!await ensureStoreForPolling()) return;
|
|
8459
|
-
const { checkTaskFileConsistency } = await import("../tasks-crud-
|
|
8599
|
+
const { checkTaskFileConsistency } = await import("../tasks-crud-TLELWWUL.js");
|
|
8460
8600
|
const mismatches = await checkTaskFileConsistency();
|
|
8461
8601
|
if (mismatches > 0) {
|
|
8462
8602
|
acted("task_file_consistency");
|
|
@@ -8475,7 +8615,7 @@ function startLocalFirstTimers() {
|
|
|
8475
8615
|
const TELEMETRY_DAILY_MS = 24 * 60 * 60 * 1e3;
|
|
8476
8616
|
const telemetryDaily = async () => {
|
|
8477
8617
|
try {
|
|
8478
|
-
const { sendTelemetry, isTelemetryEnabled } = await import("../telemetry-upload-
|
|
8618
|
+
const { sendTelemetry, isTelemetryEnabled } = await import("../telemetry-upload-LTL5SW24.js");
|
|
8479
8619
|
if (!isTelemetryEnabled()) return;
|
|
8480
8620
|
const { upstream } = await sendTelemetry(24);
|
|
8481
8621
|
if (upstream.startsWith("sent")) {
|