@askexenow/exe-os 0.9.346 → 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-Y7B6SUEV.js → active-agent-PX6KAEEQ.js} +4 -3
- package/dist/{active-agent-JXJFAZMM.js → active-agent-QVLZKWR2.js} +4 -3
- package/dist/{agentic-ontology-AUJAVTHS.js → agentic-ontology-6MEXY5L7.js} +1 -1
- package/dist/{backfill-metadata-3LUJK7D4.js → backfill-metadata-MCFBGWKX.js} +6 -5
- package/dist/{backup-verify-6UAZ5ETR.js → backup-verify-RGB3KKD4.js} +2 -1
- package/dist/{behaviors-BVOBYS73.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 +16 -15
- package/dist/bin/cli.js +16 -16
- package/dist/bin/deferred-daemon-restart.js +107 -94
- package/dist/bin/exe-agent-config.js +5 -4
- package/dist/bin/exe-agent.js +6 -5
- package/dist/bin/exe-assign.js +7 -6
- package/dist/bin/exe-boot.js +31 -30
- package/dist/bin/exe-call.js +6 -5
- package/dist/bin/exe-cloud.js +26 -15
- package/dist/bin/exe-config-dump.js +5 -4
- package/dist/bin/exe-dispatch.js +16 -15
- 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 +18 -17
- package/dist/bin/exe-kill.js +20 -19
- package/dist/bin/exe-launch-agent.js +26 -25
- 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 +17 -16
- package/dist/bin/exe-pending-notifications.js +16 -15
- package/dist/bin/exe-pending-reviews.js +16 -15
- package/dist/bin/exe-rename.js +6 -5
- package/dist/bin/exe-review.js +19 -18
- package/dist/bin/exe-search.js +7 -6
- package/dist/bin/exe-session-cleanup.js +20 -19
- package/dist/bin/exe-settings.js +13 -12
- package/dist/bin/exe-start-codex.js +102 -21
- package/dist/bin/exe-start-opencode.js +11 -10
- package/dist/bin/exe-status.js +17 -16
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +4 -3
- package/dist/bin/git-sweep.js +17 -16
- 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 +73 -73
- 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 +16 -15
- package/dist/bin/setup.js +2 -2
- 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-IF4J6UEJ.js → boot-generation-FB2J53IG.js} +4 -3
- package/dist/{boot-review-sections-WEEFCSBX.js → boot-review-sections-QF5MZGJI.js} +15 -14
- package/dist/{capability-cards-C65NRVTL.js → capability-cards-YADEM2KN.js} +3 -2
- package/dist/{capacity-monitor-PGYDR35M.js → capacity-monitor-CG2IGONS.js} +17 -16
- package/dist/{catchup-brief-QB7M3OY7.js → catchup-brief-QFVNMTU5.js} +20 -19
- package/dist/{chunk-H5RS3XRJ.js → chunk-23O6LHII.js} +1 -1
- package/dist/{chunk-RLULWMUL.js → chunk-27REQ7KR.js} +1 -1
- package/dist/{chunk-GGPLVRYZ.js → chunk-2AD2GAPC.js} +1 -1
- package/dist/{chunk-25CXLXZQ.js → chunk-2WJYLXPF.js} +1 -1
- package/dist/{chunk-CFA4T2HP.js → chunk-43RTUMUT.js} +1 -1
- package/dist/{chunk-RYTY7KNZ.js → chunk-5C46Y4AK.js} +1 -1
- package/dist/{chunk-X7NSCRCD.js → chunk-5KCC26FB.js} +2 -2
- package/dist/{chunk-44ZGOBMU.js → chunk-5RPCWLXE.js} +1 -1
- package/dist/{chunk-ZASZQDAI.js → chunk-6GSYN262.js} +1 -1
- package/dist/{chunk-QS6KVXUN.js → chunk-6JQTSKDR.js} +263 -111
- package/dist/{chunk-QCM3YWL7.js → chunk-6QRS3IZF.js} +1 -1
- package/dist/{chunk-X2PLFBVG.js → chunk-6WFXNQDJ.js} +1 -1
- package/dist/{chunk-LUQ57SRM.js → chunk-7QRMFYOV.js} +23 -9
- package/dist/{chunk-HBJAMWHT.js → chunk-7WQ3WHPW.js} +195 -153
- package/dist/{chunk-OIF65HXR.js → chunk-A3YHWWE6.js} +10 -6
- package/dist/{chunk-OZLNCLS3.js → chunk-A42356G7.js} +1 -1
- package/dist/{chunk-24BHZNOP.js → chunk-A43SIGAO.js} +3 -3
- package/dist/{chunk-LSTIMHL4.js → chunk-AFY4V4N3.js} +1 -1
- package/dist/{chunk-Y7GJ6HXA.js → chunk-AJIXH5JF.js} +79 -25
- package/dist/{chunk-EU2GUT67.js → chunk-AMC2OPYP.js} +1 -1
- package/dist/{chunk-N4XVAP7Z.js → chunk-AQ24P2O7.js} +4 -4
- package/dist/{chunk-KQ3HRA6Q.js → chunk-AUILJKSM.js} +2 -2
- package/dist/{chunk-OQB5SKO4.js → chunk-AXNUMBLO.js} +3 -3
- package/dist/{chunk-SQIH3TDK.js → chunk-BOQUXG7N.js} +4 -4
- package/dist/{chunk-4A6RX2N6.js → chunk-BTP7BORU.js} +1 -1
- package/dist/{chunk-LYNELMA2.js → chunk-BUUGFQHL.js} +2 -2
- package/dist/{chunk-6OEMGMOV.js → chunk-CCOKYSJA.js} +3 -3
- package/dist/{chunk-6F3OMSZJ.js → chunk-DAODOSH4.js} +1 -1
- package/dist/{chunk-MWXXVXJL.js → chunk-DJYJDK53.js} +7 -7
- package/dist/{chunk-ZK6I3PUX.js → chunk-DXMTJJP3.js} +4 -4
- package/dist/{chunk-CMTS2MLG.js → chunk-E3BNUQHW.js} +2 -2
- package/dist/{chunk-YKIQF6EY.js → chunk-EFHGK6JP.js} +1 -1
- package/dist/{chunk-Q6ZQIX7L.js → chunk-FE6WBI2M.js} +5 -1
- package/dist/{chunk-6YABSGAW.js → chunk-FENYNW52.js} +1 -1
- package/dist/{chunk-4KLQ4GH5.js → chunk-FFCPSPNK.js} +1 -1
- package/dist/{chunk-FEIACXDV.js → chunk-FPK753IZ.js} +16 -16
- package/dist/{chunk-NCMFMJMZ.js → chunk-GA655CUD.js} +2 -2
- package/dist/{chunk-BDFRAQG5.js → chunk-GJ6KIHOM.js} +4 -4
- package/dist/{chunk-CR7XPLLC.js → chunk-GKNWKQFY.js} +1 -1
- package/dist/{chunk-VQLGFSML.js → chunk-GLOWJP5H.js} +2 -2
- package/dist/{chunk-XTGZDP2L.js → chunk-H3TA23PH.js} +4 -4
- package/dist/{chunk-GGHH54QD.js → chunk-H5QNVWU4.js} +18 -10
- package/dist/{chunk-WKUX5PFV.js → chunk-HL24OHHS.js} +9 -9
- package/dist/{chunk-3WELJGZN.js → chunk-HYZE3MNS.js} +1 -1
- package/dist/{chunk-HVZKJMJX.js → chunk-JORPYG4O.js} +1 -1
- package/dist/{chunk-JNEVNS5R.js → chunk-JW5XS35A.js} +9 -9
- package/dist/{chunk-OM2XM5HU.js → chunk-KIMAQNSM.js} +3 -3
- package/dist/{chunk-TIZE727O.js → chunk-KZUU6MNF.js} +1 -1
- package/dist/{chunk-OELDRRCZ.js → chunk-L36RX54F.js} +104 -11
- package/dist/{chunk-ZZQ4AEYB.js → chunk-M7PBRIRH.js} +1 -1
- package/dist/{chunk-4JDRUXQV.js → chunk-MGMXYI7Y.js} +2 -2
- package/dist/{chunk-4BQYN4IJ.js → chunk-MH5HWMVH.js} +1 -1
- package/dist/{chunk-BUDVHNV2.js → chunk-MMOONM6D.js} +1 -1
- package/dist/{chunk-CQN4IKRB.js → chunk-MMXIE6HV.js} +1 -1
- package/dist/{chunk-LNMTCTSH.js → chunk-MOZY4IQO.js} +1 -1
- package/dist/{chunk-EYGMCOTV.js → chunk-MVZLF27P.js} +2 -2
- package/dist/{chunk-HMVGXC4I.js → chunk-NY6DU5RB.js} +1 -1
- package/dist/{chunk-WMJK4GBF.js → chunk-O522M4YZ.js} +1 -1
- package/dist/{chunk-EDC57TDH.js → chunk-OBWIVRD6.js} +1 -1
- package/dist/{chunk-Q7UHMUCE.js → chunk-PAXAF2UY.js} +35 -15
- package/dist/{chunk-YLLUGK6J.js → chunk-PBLDPW4U.js} +2 -2
- package/dist/{chunk-D74XYSA3.js → chunk-QCQT5RXR.js} +5 -1
- package/dist/{chunk-3QYE5U6D.js → chunk-QNKR7WEL.js} +20 -6
- package/dist/{chunk-E6TLQG2T.js → chunk-RBRGSOK5.js} +1 -1
- package/dist/{chunk-6I6OMBYY.js → chunk-RFRUDXOI.js} +2 -2
- package/dist/{chunk-MHZAUM7G.js → chunk-SLH2743O.js} +3 -3
- package/dist/{chunk-LP6EJVVN.js → chunk-SMQ642D3.js} +4 -4
- package/dist/{chunk-BCFWDNH7.js → chunk-SQ4WACH4.js} +1 -1
- package/dist/{chunk-6LLDY7AL.js → chunk-TF5E6O5Q.js} +1 -1
- package/dist/{chunk-IXIQSWHV.js → chunk-TLWYOMSS.js} +3 -3
- package/dist/{chunk-2LC2ASCN.js → chunk-UAKGNQWE.js} +1 -1
- package/dist/{chunk-2WEUQWFQ.js → chunk-UTQWVRU6.js} +5 -5
- package/dist/{chunk-VPY4CMD6.js → chunk-WL3IQJKN.js} +3 -3
- package/dist/{chunk-NGP6LSV2.js → chunk-WNBZJSQT.js} +10 -1
- package/dist/{chunk-MCZWZEVE.js → chunk-WUMWXU6B.js} +1 -1
- package/dist/{chunk-R6C6UGVG.js → chunk-WWT3E7DO.js} +3 -3
- package/dist/{chunk-ACYZER3P.js → chunk-WZJ3VYRJ.js} +3 -3
- package/dist/{chunk-2KOQKLDF.js → chunk-X6VEQ7MC.js} +1 -1
- package/dist/{chunk-HXIBVZC3.js → chunk-Y3JXLIZV.js} +3 -3
- package/dist/{chunk-2UA263BM.js → chunk-YAIFZXOM.js} +5 -5
- package/dist/{chunk-YGTKGAWM.js → chunk-YM6GJM2F.js} +4 -4
- package/dist/chunk-YMUZWC33.js +8 -0
- package/dist/{chunk-DKKMBEU6.js → chunk-YTPCJLEL.js} +1 -1
- package/dist/{chunk-RPAMFCPP.js → chunk-Z52QQB4Z.js} +2 -2
- package/dist/{chunk-PJOHJ7Q4.js → chunk-ZXSFUR77.js} +172 -35
- package/dist/{cleanup-graph-garbage-INHZJESS.js → cleanup-graph-garbage-XTSBQXD6.js} +8 -7
- package/dist/{cloud-sync-shutdown-HNQ7T3LA.js → cloud-sync-shutdown-A2QB74YM.js} +3 -2
- package/dist/{co-activation-IMZM3IXG.js → co-activation-S2FVGMQP.js} +3 -2
- package/dist/{co-occurrence-PZAEUDAP.js → co-occurrence-VQB6U5ME.js} +6 -5
- package/dist/{conversation-entity-extractor-AU55E6YT.js → conversation-entity-extractor-YF3ZLTEJ.js} +3 -3
- package/dist/{crdt-sync-LI6FL3DG.js → crdt-sync-2SGCDWC3.js} +1 -1
- package/dist/{crm-webhook-NOLMWTAP.js → crm-webhook-P64SXEHD.js} +2 -2
- package/dist/{cto-delegation-gate-SZCLR4PI.js → cto-delegation-gate-6KLGT2LB.js} +15 -14
- package/dist/{daemon-orchestration-R5HT252K.js → daemon-orchestration-JQGKEWPD.js} +20 -20
- package/dist/{dispatch-ack-VUGMAGNL.js → dispatch-ack-AZL3WKCK.js} +1 -2
- package/dist/{doc-graph-extractor-E5SXO6NZ.js → doc-graph-extractor-DCJMATVZ.js} +6 -5
- package/dist/{documents-PYKWTZBA.js → documents-7EPH3VPE.js} +7 -6
- package/dist/{dreaming-JAHOTVRJ.js → dreaming-O4P2W5E5.js} +19 -18
- package/dist/{exe-drift-DGIY5YBT.js → exe-drift-ED7FBS2C.js} +4 -3
- package/dist/{exe-export-A6MC7LZ7.js → exe-export-YJI4USGZ.js} +9 -8
- package/dist/{exe-import-HKA6LKHC.js → exe-import-SUTAYKUW.js} +9 -8
- package/dist/{exe-key-6QXOAVR4.js → exe-key-CRSDAOZD.js} +71 -71
- package/dist/{exe-snapshot-BUPXYKMH.js → exe-snapshot-KB4YYDCA.js} +20 -19
- package/dist/{fast-db-init-BXLBA6II.js → fast-db-init-3K2PV6GJ.js} +1 -1
- package/dist/{founder-context-5KQR3ER3.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-OTIXXNBN.js → git-staleness-YPHGWE3B.js} +3 -2
- package/dist/{global-procedures-ACYUMLIG.js → global-procedures-PEWDBSPJ.js} +5 -4
- package/dist/{graph-auto-extract-QWVENG4K.js → graph-auto-extract-7OJYYV4G.js} +6 -5
- package/dist/{graph-rag-2I24BQC2.js → graph-rag-YFITUAVO.js} +3 -3
- package/dist/{hook-prefetch-22IJRGX4.js → hook-prefetch-O6ZCZCTX.js} +16 -15
- package/dist/hooks/bug-report-worker.js +18 -18
- package/dist/hooks/codex-stop-task-finalizer.js +19 -19
- package/dist/hooks/commit-complete.js +18 -17
- 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 +17 -16
- package/dist/hooks/post-tool-combined.js +9 -9
- package/dist/hooks/pre-compact.js +18 -17
- package/dist/hooks/pre-tool-use.js +38 -40
- package/dist/hooks/prompt-submit.js +31 -30
- package/dist/hooks/session-end.js +22 -21
- package/dist/hooks/session-start.js +13 -13
- package/dist/hooks/stop.js +21 -20
- package/dist/hooks/subagent-stop.js +19 -18
- package/dist/hooks/summary-worker.js +22 -21
- package/dist/index.js +25 -24
- package/dist/{installer-QYXL3HBG.js → installer-3ONNP5JV.js} +6 -5
- package/dist/{installer-RWPVEBMJ.js → installer-CY5PN7TN.js} +6 -5
- package/dist/{installer-NZ76KPYJ.js → installer-N4QXGINR.js} +6 -5
- package/dist/{intercom-queue-TAARE4O7.js → intercom-queue-A52WQOCD.js} +15 -14
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +15 -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 +344 -179
- 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 +16 -15
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +4 -3
- package/dist/lib/runtime-table.js +9 -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 +17 -17
- package/dist/lib/tmux-routing.js +15 -14
- package/dist/lib/token-spend.js +4 -3
- package/dist/{license-gate-CVHDQZJV.js → license-gate-ZRORTAQ2.js} +3 -3
- package/dist/{license-sync-72S7BWQY.js → license-sync-CQHBDUQE.js} +2 -2
- package/dist/mcp/register-tools.js +70 -70
- package/dist/mcp/server.js +71 -71
- 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 +19 -19
- 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 +19 -19
- package/dist/mcp/tools/send-message.js +18 -17
- package/dist/mcp/tools/update-task.js +18 -18
- package/dist/{mcp-http-config-JP3XSY2X.js → mcp-http-config-2A6HKQP5.js} +4 -3
- package/dist/{mcp-session-identity-DDAM464U.js → mcp-session-identity-OPRX32H5.js} +15 -14
- package/dist/{memory-cards-XJ2JMF3V.js → memory-cards-GFO2CSPV.js} +6 -5
- package/dist/{memory-graph-extractor-FJVF7RTG.js → memory-graph-extractor-2Z72HN5P.js} +7 -6
- package/dist/{memory-poisoning-defense-GM3GQPRI.js → memory-poisoning-defense-WZJ52KXT.js} +3 -2
- package/dist/{memory-pressure-watchdog-HB572OZG.js → memory-pressure-watchdog-IG7VRFIX.js} +16 -15
- package/dist/{memory-reflection-WIMMTW7M.js → memory-reflection-LTRHDGUL.js} +3 -2
- package/dist/{notification-ledger-5TQXBYY2.js → notification-ledger-KSCPGLQG.js} +16 -15
- package/dist/{notifications-LA3X57YT.js → notifications-YKHZPCXU.js} +15 -14
- package/dist/{orchestration-events-KFZMGU3D.js → orchestration-events-HAFDPTLV.js} +4 -3
- package/dist/{orchestrator-MOJEAZ3K.js → orchestrator-4MZEQULR.js} +17 -16
- package/dist/{pipeline-router-2V5NFQ2O.js → pipeline-router-RSRJPZNI.js} +4 -3
- package/dist/{plan-limits-2LHFEYOT.js → plan-limits-5QYYPIPT.js} +6 -5
- package/dist/{platform-procedures-G44IYUM2.js → platform-procedures-DZ6YABEK.js} +1 -1
- package/dist/{projection-worker-ZMHVILPW.js → projection-worker-SKAMSZJF.js} +2 -2
- package/dist/{prospective-memory-JEWS5GFU.js → prospective-memory-V7LFCPU4.js} +3 -2
- package/dist/{reranker-TBQV76K4.js → reranker-HXMJ7SKW.js} +1 -1
- package/dist/{retrieval-health-HYXDUNFE.js → retrieval-health-4NCBHUUS.js} +1 -1
- package/dist/{review-polling-OFGP5Q7M.js → review-polling-KQUALBEU.js} +16 -15
- package/dist/runtime/index.js +19 -18
- package/dist/{session-events-ABAI2KE3.js → session-events-3KL735DZ.js} +16 -15
- package/dist/{session-kill-telemetry-2MHLK4Z4.js → session-kill-telemetry-KVRGLYVI.js} +16 -15
- package/dist/{session-scope-MRIE7ZKS.js → session-scope-LBG6DT5O.js} +15 -14
- package/dist/{setup-wizard-UQ3B2E6D.js → setup-wizard-UL3AKI6E.js} +2 -2
- package/dist/{skill-refinement-46QDGAGE.js → skill-refinement-6HPISXQC.js} +4 -3
- package/dist/{stack-update-5BPENFJK.js → stack-update-WBDTJJEF.js} +7 -3
- package/dist/{steward-gate-GXINMHNV.js → steward-gate-CWPD4HEK.js} +4 -3
- package/dist/{support-inbox-TCOASPLK.js → support-inbox-HRIHHKPU.js} +3 -3
- package/dist/{task-enforcement-OJAG2BGJ.js → task-enforcement-OAOL7XFL.js} +16 -15
- package/dist/{task-scope-5GKJTQL2.js → task-scope-PSVAE3EM.js} +15 -14
- package/dist/{tasks-crud-ZWKPTGPU.js → tasks-crud-TLELWWUL.js} +17 -14
- package/dist/{tasks-notify-IUDI6SYJ.js → tasks-notify-7Q2XTDZ7.js} +16 -16
- package/dist/{tasks-review-INJKVN63.js → tasks-review-S6QB5KGS.js} +15 -14
- package/dist/{telemetry-upload-LIC7M7AY.js → telemetry-upload-LTL5SW24.js} +8 -7
- package/dist/{token-budget-PABF5ZBO.js → token-budget-SK32GKFZ.js} +4 -3
- package/dist/{tool-telemetry-PDHE36YD.js → tool-telemetry-QJGJAHOC.js} +1 -1
- package/dist/tui/App.js +24 -23
- package/dist/{tui-data-Y6X7A4U4.js → tui-data-3JSV56ME.js} +15 -14
- package/dist/{update-support-COJYGU2V.js → update-support-LMPGWJVG.js} +10 -9
- package/dist/{work-state-heartbeat-YV3MAIQY.js → work-state-heartbeat-MQQOCU54.js} +1 -1
- package/dist/{worker-gate-BLJENHMV.js → worker-gate-P2O64XMH.js} +1 -1
- package/dist/{workflow-engine-AAPPPMFS.js → workflow-engine-BLLQKA3O.js} +2 -2
- package/dist/{worktree-MGYTWKCA.js → worktree-FJZXHDCJ.js} +5 -4
- package/dist/{worktree-sweep-HNNHNAXN.js → worktree-sweep-SW4AG6JR.js} +6 -5
- package/package.json +1 -1
- package/release-notes.json +56 -104
- package/dist/chunk-GSIJL4YA.js +0 -58
- /package/dist/{chunk-GH5YKFE7.js → chunk-AQ6ECPUP.js} +0 -0
- /package/dist/{chunk-O3XAKSKI.js → chunk-DRHXISWL.js} +0 -0
- /package/dist/{chunk-A3MGVYSP.js → chunk-E42D2E5F.js} +0 -0
- /package/dist/{chunk-PDN25UJU.js → chunk-FXZRJT3H.js} +0 -0
- /package/dist/{chunk-CHDPANT4.js → chunk-GFIWADEH.js} +0 -0
- /package/dist/{chunk-W7JPRQM2.js → chunk-GPZQZTJB.js} +0 -0
- /package/dist/{chunk-WPQ5LWMW.js → chunk-H4JKOLXU.js} +0 -0
- /package/dist/{chunk-RYWVPACG.js → chunk-HTJKAAHD.js} +0 -0
- /package/dist/{chunk-PDWIUSQH.js → chunk-PIUDQ7P2.js} +0 -0
- /package/dist/{chunk-HIN6X5QB.js → chunk-QUOMJKVF.js} +0 -0
- /package/dist/{chunk-DY7WDHMC.js → chunk-XF2D4CDA.js} +0 -0
- /package/dist/{core-memory-TBLZ2YQQ.js → core-memory-Z7LPR3RX.js} +0 -0
- /package/dist/{oauth-server-IB7OWY4H.js → oauth-server-FSKABATB.js} +0 -0
- /package/dist/{project-boot-TI3PUQNN.js → project-boot-FVSC4VQC.js} +0 -0
- /package/dist/{wiki-acl-V5IRECJ3.js → wiki-acl-CW2UALTJ.js} +0 -0
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
} from "./chunk-UEXJYSJX.js";
|
|
7
7
|
import {
|
|
8
8
|
isCrdtSyncEnabled
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GFIWADEH.js";
|
|
10
10
|
import {
|
|
11
11
|
retryOnDaemonTransportError
|
|
12
12
|
} from "./chunk-Z4UKLRML.js";
|
|
13
13
|
import {
|
|
14
14
|
GHOST_BEHAVIOR_SQL,
|
|
15
15
|
isGhostBehaviorRow
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-MGMXYI7Y.js";
|
|
17
17
|
import {
|
|
18
18
|
decryptSyncBlob,
|
|
19
19
|
encryptSyncBlob,
|
|
@@ -26,10 +26,10 @@ import {
|
|
|
26
26
|
loadEmployees,
|
|
27
27
|
registerBinSymlinks,
|
|
28
28
|
saveEmployees
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-QNKR7WEL.js";
|
|
30
30
|
import {
|
|
31
31
|
loadDeviceId
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-MMOONM6D.js";
|
|
33
33
|
import {
|
|
34
34
|
EXE_AI_DIR
|
|
35
35
|
} from "./chunk-BCZF3AGJ.js";
|
|
@@ -191,6 +191,21 @@ function zeroCloudSyncResult() {
|
|
|
191
191
|
elapsedMs: 0
|
|
192
192
|
};
|
|
193
193
|
}
|
|
194
|
+
function partialCloudSyncResult(values) {
|
|
195
|
+
const base = zeroCloudSyncResult();
|
|
196
|
+
return {
|
|
197
|
+
...base,
|
|
198
|
+
...values,
|
|
199
|
+
behaviors: values.behaviors ?? base.behaviors,
|
|
200
|
+
graphrag: values.graphrag ?? base.graphrag,
|
|
201
|
+
tasks: values.tasks ?? base.tasks,
|
|
202
|
+
conversations: values.conversations ?? base.conversations,
|
|
203
|
+
documents: values.documents ?? base.documents,
|
|
204
|
+
coreMemory: values.coreMemory ?? base.coreMemory,
|
|
205
|
+
roster: values.roster ?? base.roster,
|
|
206
|
+
codeContext: values.codeContext ?? base.codeContext
|
|
207
|
+
};
|
|
208
|
+
}
|
|
194
209
|
async function logResumeClearFailure(err) {
|
|
195
210
|
const msg = err instanceof Error ? err.message : String(err);
|
|
196
211
|
logError(`[cloud-sync] resume cursor clear failed: ${msg}`);
|
|
@@ -208,6 +223,9 @@ async function logResumeClearFailure(err) {
|
|
|
208
223
|
var LOCALHOST_PATTERNS = /^(localhost|127\.0\.0\.1|\[::1\])$/i;
|
|
209
224
|
var FETCH_TIMEOUT_MS = 3e4;
|
|
210
225
|
var PUSH_BATCH_SIZE = 5e3;
|
|
226
|
+
var CLOUD_MEMORY_PUSH_BACKGROUND_BATCH_SIZE = 250;
|
|
227
|
+
var CLOUD_MEMORY_PUSH_BACKGROUND_TICK_BUDGET_MS = 250;
|
|
228
|
+
var CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY = "cloud_memory_push_scan_cursor";
|
|
211
229
|
var ROSTER_LOCK_PATH = path.join(EXE_AI_DIR, "roster-merge.lock");
|
|
212
230
|
var LOCK_STALE_MS = 3e4;
|
|
213
231
|
var SYNC_PAGE_SIZE = 5e3;
|
|
@@ -665,12 +683,64 @@ async function writeLastCloudPushVersion(client, version) {
|
|
|
665
683
|
args: [String(Math.max(0, version))]
|
|
666
684
|
});
|
|
667
685
|
}
|
|
686
|
+
function cloudMemoryPushBatchSize(options) {
|
|
687
|
+
const explicit = Number(options.batchSize);
|
|
688
|
+
if (Number.isFinite(explicit) && explicit > 0) return Math.floor(explicit);
|
|
689
|
+
const env = Number(process.env.EXE_CLOUD_SYNC_MEMORY_PUSH_BATCH_SIZE);
|
|
690
|
+
if (Number.isFinite(env) && env > 0) return Math.floor(env);
|
|
691
|
+
return process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" ? CLOUD_MEMORY_PUSH_BACKGROUND_BATCH_SIZE : PUSH_BATCH_SIZE;
|
|
692
|
+
}
|
|
693
|
+
function cloudMemoryPushWallClockBudgetMs(options) {
|
|
694
|
+
const explicit = Number(options.wallClockBudgetMs);
|
|
695
|
+
if (Number.isFinite(explicit) && explicit >= 0) return explicit;
|
|
696
|
+
const env = Number(process.env.EXE_CLOUD_SYNC_MEMORY_PUSH_TICK_BUDGET_MS);
|
|
697
|
+
if (Number.isFinite(env) && env >= 0) return env;
|
|
698
|
+
return process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" ? CLOUD_MEMORY_PUSH_BACKGROUND_TICK_BUDGET_MS : 0;
|
|
699
|
+
}
|
|
700
|
+
async function readMemoryPushScanCursor(client, safeCursor) {
|
|
701
|
+
try {
|
|
702
|
+
const res = await client.execute({
|
|
703
|
+
sql: "SELECT value FROM sync_meta WHERE key = ?",
|
|
704
|
+
args: [CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY]
|
|
705
|
+
});
|
|
706
|
+
if (res.rows.length === 0) return null;
|
|
707
|
+
const parsed = JSON.parse(String(res.rows[0].value));
|
|
708
|
+
const cursor = {
|
|
709
|
+
safeCursor: finiteVersion(parsed.safeCursor, -1),
|
|
710
|
+
scanVersion: finiteVersion(parsed.scanVersion, -1),
|
|
711
|
+
scanRowid: finiteVersion(parsed.scanRowid, -1)
|
|
712
|
+
};
|
|
713
|
+
if (cursor.safeCursor === safeCursor && cursor.scanVersion >= safeCursor && cursor.scanRowid >= 0) {
|
|
714
|
+
return cursor;
|
|
715
|
+
}
|
|
716
|
+
} catch (err) {
|
|
717
|
+
logError(`[cloud-sync] memory push scan cursor ignored: ${err instanceof Error ? err.message : String(err)}`);
|
|
718
|
+
}
|
|
719
|
+
return null;
|
|
720
|
+
}
|
|
721
|
+
async function writeMemoryPushScanCursor(client, cursor) {
|
|
722
|
+
await client.execute({
|
|
723
|
+
sql: "INSERT INTO sync_meta (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
|
|
724
|
+
args: [CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY, JSON.stringify(cursor)]
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
async function clearMemoryPushScanCursor(client) {
|
|
728
|
+
await client.execute({
|
|
729
|
+
sql: "DELETE FROM sync_meta WHERE key = ?",
|
|
730
|
+
args: [CLOUD_MEMORY_PUSH_SCAN_CURSOR_KEY]
|
|
731
|
+
});
|
|
732
|
+
}
|
|
668
733
|
async function cloudPushPendingMemories(client, config, options) {
|
|
669
734
|
let pushed = 0;
|
|
670
735
|
let errors = 0;
|
|
736
|
+
let deferred = false;
|
|
671
737
|
let safeCursor = Math.max(0, finiteVersion(options.lastPushVersion, 0));
|
|
672
738
|
let scanVersion = safeCursor;
|
|
673
739
|
let scanRowid = Number.MAX_SAFE_INTEGER;
|
|
740
|
+
const batchSize = cloudMemoryPushBatchSize(options);
|
|
741
|
+
const budgetMs = cloudMemoryPushWallClockBudgetMs(options);
|
|
742
|
+
const now = options.now ?? Date.now;
|
|
743
|
+
const tickStartMs = now();
|
|
674
744
|
try {
|
|
675
745
|
const maxRes = await client.execute(
|
|
676
746
|
"SELECT MAX(version) AS v FROM memories WHERE (scope IS NULL OR scope != 'personal')"
|
|
@@ -681,6 +751,7 @@ async function cloudPushPendingMemories(client, config, options) {
|
|
|
681
751
|
`[cloud-sync] last_cloud_push_version (${safeCursor}) is ahead of local max memory version (${localMaxVersion}); resetting memory push cursor to 0. This can happen after DB restore.`
|
|
682
752
|
);
|
|
683
753
|
await writeLastCloudPushVersion(client, 0);
|
|
754
|
+
await clearMemoryPushScanCursor(client);
|
|
684
755
|
safeCursor = 0;
|
|
685
756
|
scanVersion = 0;
|
|
686
757
|
scanRowid = Number.MAX_SAFE_INTEGER;
|
|
@@ -692,7 +763,12 @@ async function cloudPushPendingMemories(client, config, options) {
|
|
|
692
763
|
const nowMs = Date.now();
|
|
693
764
|
const pushCooldownActive = safeCursor > 0 && safeCursor === _lastSyncPushVersion && nowMs - _lastSyncPushTimestamp < SYNC_COOLDOWN_MS;
|
|
694
765
|
if (pushCooldownActive) {
|
|
695
|
-
return { pushed: 0, errors: 0, finalCursor: safeCursor };
|
|
766
|
+
return { pushed: 0, errors: 0, finalCursor: safeCursor, deferred: false };
|
|
767
|
+
}
|
|
768
|
+
const durableScanCursor = await readMemoryPushScanCursor(client, safeCursor);
|
|
769
|
+
if (durableScanCursor) {
|
|
770
|
+
scanVersion = durableScanCursor.scanVersion;
|
|
771
|
+
scanRowid = durableScanCursor.scanRowid;
|
|
696
772
|
}
|
|
697
773
|
for (; ; ) {
|
|
698
774
|
const recordsResult = await client.execute({
|
|
@@ -704,7 +780,7 @@ async function cloudPushPendingMemories(client, config, options) {
|
|
|
704
780
|
AND (scope IS NULL OR scope != 'personal')
|
|
705
781
|
ORDER BY version ASC, rowid ASC
|
|
706
782
|
LIMIT ?`,
|
|
707
|
-
args: [scanVersion, scanVersion, scanRowid,
|
|
783
|
+
args: [scanVersion, scanVersion, scanRowid, batchSize + 1]
|
|
708
784
|
});
|
|
709
785
|
if (recordsResult.rows.length === 0) {
|
|
710
786
|
process.stderr.write(
|
|
@@ -714,9 +790,9 @@ async function cloudPushPendingMemories(client, config, options) {
|
|
|
714
790
|
break;
|
|
715
791
|
}
|
|
716
792
|
const pageRows = recordsResult.rows;
|
|
717
|
-
const hasExtra = pageRows.length >
|
|
718
|
-
const rowsToPush = hasExtra ? pageRows.slice(0,
|
|
719
|
-
const extraRow = hasExtra ? pageRows[
|
|
793
|
+
const hasExtra = pageRows.length > batchSize;
|
|
794
|
+
const rowsToPush = hasExtra ? pageRows.slice(0, batchSize) : pageRows;
|
|
795
|
+
const extraRow = hasExtra ? pageRows[batchSize] : void 0;
|
|
720
796
|
const records = rowsToPush.map((row) => ({
|
|
721
797
|
id: row.id,
|
|
722
798
|
agent_id: row.agent_id,
|
|
@@ -762,17 +838,24 @@ async function cloudPushPendingMemories(client, config, options) {
|
|
|
762
838
|
}
|
|
763
839
|
if (nextSafeCursor > safeCursor) {
|
|
764
840
|
await writeLastCloudPushVersion(client, nextSafeCursor);
|
|
841
|
+
await clearMemoryPushScanCursor(client);
|
|
765
842
|
safeCursor = nextSafeCursor;
|
|
766
843
|
_lastSyncPushVersion = nextSafeCursor;
|
|
767
844
|
_lastSyncPushTimestamp = Date.now();
|
|
845
|
+
} else {
|
|
846
|
+
await writeMemoryPushScanCursor(client, { safeCursor, scanVersion, scanRowid });
|
|
768
847
|
}
|
|
769
848
|
if (!hasExtra) break;
|
|
849
|
+
if (budgetMs > 0 && now() - tickStartMs >= budgetMs) {
|
|
850
|
+
deferred = true;
|
|
851
|
+
break;
|
|
852
|
+
}
|
|
770
853
|
await new Promise((resolve) => setImmediate(resolve));
|
|
771
854
|
}
|
|
772
855
|
if (pushed > 0 && errors > 0) {
|
|
773
856
|
logError(`[cloud-sync] memory push completed partially: pushed=${pushed}, errors=${errors}, cursor=${safeCursor}`);
|
|
774
857
|
}
|
|
775
|
-
return { pushed, errors, finalCursor: safeCursor };
|
|
858
|
+
return { pushed, errors, finalCursor: safeCursor, deferred };
|
|
776
859
|
}
|
|
777
860
|
async function cloudSync(config, options) {
|
|
778
861
|
const onProgress = options?.onProgress ?? defaultOnProgress;
|
|
@@ -864,7 +947,7 @@ async function cloudSync(config, options) {
|
|
|
864
947
|
pullResult = await cloudPull(lastPullVersion, config);
|
|
865
948
|
if (pullResult.records.length > 0) {
|
|
866
949
|
if (shouldUseCrdtMergeForCloudSync()) {
|
|
867
|
-
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-
|
|
950
|
+
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-2SGCDWC3.js");
|
|
868
951
|
initCrdtDoc();
|
|
869
952
|
importExistingMemories(
|
|
870
953
|
pullResult.records.map((rec) => ({
|
|
@@ -1087,6 +1170,14 @@ async function cloudSync(config, options) {
|
|
|
1087
1170
|
lastPullVersion
|
|
1088
1171
|
});
|
|
1089
1172
|
pushed = memoryPush.pushed;
|
|
1173
|
+
if (memoryPush.deferred) {
|
|
1174
|
+
const elapsedMs = Date.now() - syncStartTime;
|
|
1175
|
+
onProgress(
|
|
1176
|
+
"Cloud sync",
|
|
1177
|
+
`memory push deferred after bounded slice (pushed ${pushed}, cursor ${memoryPush.finalCursor}, elapsed ${(elapsedMs / 1e3).toFixed(1)}s)`
|
|
1178
|
+
);
|
|
1179
|
+
return partialCloudSyncResult({ pushed, pulled, elapsedMs });
|
|
1180
|
+
}
|
|
1090
1181
|
await stageDone("memories");
|
|
1091
1182
|
}
|
|
1092
1183
|
const rosterSkipped = shouldSkip("roster");
|
|
@@ -2805,6 +2896,8 @@ async function cloudPullCoreMemory(config) {
|
|
|
2805
2896
|
export {
|
|
2806
2897
|
CLOUD_PULL_WRITE_BATCH_SIZE,
|
|
2807
2898
|
batchWriteYielding,
|
|
2899
|
+
CLOUD_MEMORY_PUSH_BACKGROUND_BATCH_SIZE,
|
|
2900
|
+
CLOUD_MEMORY_PUSH_BACKGROUND_TICK_BUDGET_MS,
|
|
2808
2901
|
shouldUseCrdtMergeForCloudSync,
|
|
2809
2902
|
loadPgClient,
|
|
2810
2903
|
disposeCloudSync,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
vectorToSqlLiteral
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-H5QNVWU4.js";
|
|
4
4
|
import {
|
|
5
5
|
blobToVector
|
|
6
6
|
} from "./chunk-OTVEIJUQ.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QNKR7WEL.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/behaviors.ts
|
|
12
12
|
import crypto from "crypto";
|
|
@@ -23,7 +23,7 @@ var PLATFORM_PROCEDURES = [
|
|
|
23
23
|
title: "Runtime settings \u2014 COO can view and change tools per agent",
|
|
24
24
|
domain: "workflow",
|
|
25
25
|
priority: "p1",
|
|
26
|
-
content: "exe-os supports three tools: Claude Code (Anthropic), Codex (OpenAI), OpenCode (open source, 75+ providers). Each agent can use a different tool and model. COO uses set_agent_config MCP tool to view/change settings. No args = show all agents. agent_id + runtime + model = change. Claude models: claude-sonnet-4.6, claude-opus-4.6, claude-sonnet-4.8, claude-opus-4.8,
|
|
26
|
+
content: "exe-os supports three tools: Claude Code (Anthropic), Codex (OpenAI), OpenCode (open source, 75+ providers). Each agent can use a different tool and model. COO uses set_agent_config MCP tool to view/change settings. No args = show all agents. agent_id + runtime + model = change. Claude models: claude-sonnet-4.6, claude-opus-4.6, claude-sonnet-4.8, claude-opus-4.8, fable (claude-fable-5). Interactive selection: `exe-os settings` from terminal."
|
|
27
27
|
},
|
|
28
28
|
// --- Reference pointer (boot-perf audit 2026-07-06 §P1) ---
|
|
29
29
|
// The heavy reference sections (update lifecycle, first-install wizard, full
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
} from "./chunk-GUMRIUI5.js";
|
|
8
8
|
import {
|
|
9
9
|
WORK_STATE_HEARTBEAT_TOOL
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-H4JKOLXU.js";
|
|
11
11
|
import {
|
|
12
12
|
hashMemoryContent
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GPZQZTJB.js";
|
|
14
14
|
|
|
15
15
|
// src/lib/graph-rag.ts
|
|
16
16
|
import crypto from "crypto";
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createTask
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
releaseDispatchClaim,
|
|
6
|
-
tryAcquireDispatchClaim,
|
|
7
|
-
writeDispatchFailed,
|
|
8
|
-
writeDispatchPending
|
|
9
|
-
} from "./chunk-Y7GJ6HXA.js";
|
|
3
|
+
} from "./chunk-DJYJDK53.js";
|
|
10
4
|
import {
|
|
11
5
|
getActiveAgent
|
|
12
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TF5E6O5Q.js";
|
|
13
7
|
import {
|
|
14
8
|
ensureEmployeeAsync,
|
|
15
9
|
isValidSessionScope,
|
|
16
10
|
logTaskDispatch,
|
|
17
11
|
resolveExeSession
|
|
18
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ZXSFUR77.js";
|
|
19
13
|
import {
|
|
20
14
|
recordOrchestrationEventBestEffort
|
|
21
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-AMC2OPYP.js";
|
|
16
|
+
import {
|
|
17
|
+
releaseDispatchClaim,
|
|
18
|
+
tryAcquireDispatchClaim,
|
|
19
|
+
writeDispatchFailed,
|
|
20
|
+
writeDispatchPending
|
|
21
|
+
} from "./chunk-AJIXH5JF.js";
|
|
22
22
|
import {
|
|
23
23
|
getAgentRuntime,
|
|
24
24
|
validateRuntimeModel
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-A3YHWWE6.js";
|
|
26
26
|
import {
|
|
27
27
|
getLicenseSync
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-RFRUDXOI.js";
|
|
29
29
|
import {
|
|
30
30
|
getAgentContext
|
|
31
31
|
} from "./chunk-GJV3WDWM.js";
|
|
32
32
|
import {
|
|
33
33
|
isCoordinatorName
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-QNKR7WEL.js";
|
|
35
35
|
|
|
36
36
|
// src/mcp/tools/create-task.ts
|
|
37
37
|
import { z } from "zod";
|
|
@@ -206,6 +206,9 @@ async function inferCoordinatorRootForProject(projectName) {
|
|
|
206
206
|
return "";
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
+
function sessionBelongsToCoordinator(session, coordName, callerSession) {
|
|
210
|
+
return session.windowName === coordName || session.windowName === callerSession || session.parentExe === coordName || rootFromSessionName(session.windowName) === coordName;
|
|
211
|
+
}
|
|
209
212
|
var DISPATCH_JOURNAL_ORPHAN_AGE_MS = 6e4;
|
|
210
213
|
function dispatchJournalDir() {
|
|
211
214
|
const base = process.env.EXE_OS_DIR || process.env.EXE_MEM_DIR || join(homedir(), ".exe-os");
|
|
@@ -296,6 +299,23 @@ async function resolveProjectDir(projectName, callerSession) {
|
|
|
296
299
|
if (projectDirMatches(coordDir, projectName)) {
|
|
297
300
|
return coordDir;
|
|
298
301
|
}
|
|
302
|
+
const sameScopeCandidates = /* @__PURE__ */ new Set();
|
|
303
|
+
for (const session of sessions) {
|
|
304
|
+
if (!sessionBelongsToCoordinator(session, coordName, callerSession)) continue;
|
|
305
|
+
if (!session.projectDir || !existsSync(session.projectDir)) continue;
|
|
306
|
+
if (registeredProjectDirMatches(session.projectDir, projectName)) {
|
|
307
|
+
sameScopeCandidates.add(session.projectDir);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const sortedSameScope = [...sameScopeCandidates].sort();
|
|
311
|
+
if (sortedSameScope.length === 1) return sortedSameScope[0];
|
|
312
|
+
if (sortedSameScope.length > 1) {
|
|
313
|
+
process.stderr.write(
|
|
314
|
+
`[create-task] ambiguous same-session project resolution for "${projectName}" in caller scope "${callerSession}": ${sortedSameScope.join(", ")}. Returning null.
|
|
315
|
+
`
|
|
316
|
+
);
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
299
319
|
const childUnderCoord = findProjectChildDir(coordDir, projectName);
|
|
300
320
|
if (childUnderCoord) return childUnderCoord;
|
|
301
321
|
const workspaceRoot = dirname(coordDir);
|
|
@@ -682,7 +702,7 @@ function registerCreateTask(server) {
|
|
|
682
702
|
session_scope: sessionScope,
|
|
683
703
|
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
684
704
|
}), "utf-8");
|
|
685
|
-
const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-
|
|
705
|
+
const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-HAFDPTLV.js");
|
|
686
706
|
recordOE({
|
|
687
707
|
eventType: "signal.created",
|
|
688
708
|
source: "create-task.mcp",
|
|
@@ -714,7 +734,7 @@ function registerCreateTask(server) {
|
|
|
714
734
|
let projectConflictOpts = {};
|
|
715
735
|
try {
|
|
716
736
|
const { getClient } = await import("./lib/database.js");
|
|
717
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
737
|
+
const { sessionScopeFilter } = await import("./task-scope-PSVAE3EM.js");
|
|
718
738
|
const client = getClient();
|
|
719
739
|
const scope = sessionScopeFilter(task.sessionScope || callerRoot || exeSession || null);
|
|
720
740
|
const existing = await client.execute({
|
|
@@ -186,7 +186,11 @@ function hasDestructiveVerbTokens(tokens) {
|
|
|
186
186
|
if (has("branch") && tokensFromVerb(tokens, "branch").some(
|
|
187
187
|
(t) => t === "-f" || t === "--force" || t === "-D" || t === "-M" || t === "--move" || t === "--copy" || t === "--delete" || t === "-C" || t === "-m" || t === "-c" || t === "-d"
|
|
188
188
|
)) return true;
|
|
189
|
-
if (has("worktree") && has("add")
|
|
189
|
+
if (has("worktree") && has("add")) {
|
|
190
|
+
const worktreeArgs = tokensFromVerb(tokens, "worktree");
|
|
191
|
+
const addIdx = worktreeArgs.indexOf("add");
|
|
192
|
+
if (addIdx !== -1 && worktreeArgs.slice(addIdx + 1).some((t) => /^-B/.test(t))) return true;
|
|
193
|
+
}
|
|
190
194
|
if (has("update-ref")) return true;
|
|
191
195
|
if (has("rebase")) return true;
|
|
192
196
|
if (has("filter-branch") || has("filter-repo")) return true;
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-2I23RPSI.js";
|
|
4
4
|
import {
|
|
5
5
|
listBackups
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FE6WBI2M.js";
|
|
7
7
|
import {
|
|
8
8
|
getEmotionalBaseline,
|
|
9
9
|
renderEmotionalBaselineSection
|
|
@@ -14,6 +14,9 @@ import {
|
|
|
14
14
|
import {
|
|
15
15
|
logDaemonHealth
|
|
16
16
|
} from "./chunk-BBMTVAE3.js";
|
|
17
|
+
import {
|
|
18
|
+
isPostgresBackendEnabled
|
|
19
|
+
} from "./chunk-YMUZWC33.js";
|
|
17
20
|
import {
|
|
18
21
|
EMBEDDING_DIM
|
|
19
22
|
} from "./chunk-FXU7JOXK.js";
|
|
@@ -771,6 +774,9 @@ function rewriteSql(sql) {
|
|
|
771
774
|
let out = sql;
|
|
772
775
|
out = out.replace(/\bdatetime\(\s*['"]now['"]\s*\)/giu, "CURRENT_TIMESTAMP");
|
|
773
776
|
out = out.replace(/\bvector32\s*\(\s*\?\s*\)/giu, "?");
|
|
777
|
+
out = out.replace(/\+\s*agent_id\b/giu, "agent_id");
|
|
778
|
+
out = out.replace(/\bMAX\s*\(\s*COALESCE\(([^()]+),\s*([^)]+)\)\s*,\s*([^)]+)\)/giu, "GREATEST(COALESCE($1, $2), $3)");
|
|
779
|
+
out = out.replace(/\bMAX\s*\(\s*([A-Za-z_][A-Za-z0-9_.]*)\s*,\s*([^)]+)\)/giu, "GREATEST($1, $2)");
|
|
774
780
|
out = rewriteBooleanLiterals(out);
|
|
775
781
|
out = rewriteInsertOrReplace(out);
|
|
776
782
|
out = rewriteInsertOrIgnore(out);
|
|
@@ -1323,7 +1329,7 @@ async function migrateReflectionDedup(client) {
|
|
|
1323
1329
|
"ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
|
|
1324
1330
|
"migration add memory_reflections.dedup_key"
|
|
1325
1331
|
);
|
|
1326
|
-
const { reflectionDedupKey } = await import("./memory-reflection-
|
|
1332
|
+
const { reflectionDedupKey } = await import("./memory-reflection-LTRHDGUL.js");
|
|
1327
1333
|
const keyForRow = (row) => {
|
|
1328
1334
|
let sources = [];
|
|
1329
1335
|
try {
|
|
@@ -2036,7 +2042,7 @@ async function initDatabase(config) {
|
|
|
2036
2042
|
} else {
|
|
2037
2043
|
_walCheckpointTimer = null;
|
|
2038
2044
|
}
|
|
2039
|
-
if (
|
|
2045
|
+
if (isPostgresBackendEnabled()) {
|
|
2040
2046
|
_adapterClient = await createPrismaDbAdapter(_resilientClient);
|
|
2041
2047
|
}
|
|
2042
2048
|
try {
|
|
@@ -2061,6 +2067,13 @@ function isInitialized() {
|
|
|
2061
2067
|
function setExternalClient(client) {
|
|
2062
2068
|
_adapterClient = client;
|
|
2063
2069
|
}
|
|
2070
|
+
async function initPostgresOnlyDatabase() {
|
|
2071
|
+
if (!isPostgresBackendEnabled()) {
|
|
2072
|
+
throw new Error("PostgreSQL backend is not enabled. Set DATABASE_URL and EXE_USE_POSTGRES=1.");
|
|
2073
|
+
}
|
|
2074
|
+
if (_adapterClient) return;
|
|
2075
|
+
_adapterClient = await createPrismaDbAdapter(null);
|
|
2076
|
+
}
|
|
2064
2077
|
async function offloadReadQuery(sql, args = []) {
|
|
2065
2078
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
2066
2079
|
try {
|
|
@@ -2096,7 +2109,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
|
|
|
2096
2109
|
const purgeArchived = archDays !== void 0;
|
|
2097
2110
|
const BATCH_SIZE = 2e3;
|
|
2098
2111
|
const MAX_BATCHES = 500;
|
|
2099
|
-
const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-
|
|
2112
|
+
const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-YFITUAVO.js");
|
|
2100
2113
|
const softCutoff = `-${softDays} days`;
|
|
2101
2114
|
const selectArgsBase = [softCutoff];
|
|
2102
2115
|
let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
|
|
@@ -2143,7 +2156,7 @@ function getClient() {
|
|
|
2143
2156
|
if (!_adapterClient) {
|
|
2144
2157
|
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
2145
2158
|
}
|
|
2146
|
-
if (
|
|
2159
|
+
if (isPostgresBackendEnabled()) {
|
|
2147
2160
|
return _adapterClient;
|
|
2148
2161
|
}
|
|
2149
2162
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
@@ -2195,7 +2208,7 @@ function getCurrentDatabaseConfig() {
|
|
|
2195
2208
|
return _currentConfig ? { ..._currentConfig } : null;
|
|
2196
2209
|
}
|
|
2197
2210
|
async function initDaemonClient() {
|
|
2198
|
-
if (
|
|
2211
|
+
if (isPostgresBackendEnabled()) return;
|
|
2199
2212
|
if (process.env.EXE_IS_DAEMON === "1") return;
|
|
2200
2213
|
if (process.env.EXE_DB_READONLY === "1" || process.env.EXE_DB_DIRECT === "1" || process.env.EXE_SKIP_DAEMON === "1") return;
|
|
2201
2214
|
if (process.env.VITEST) return;
|
|
@@ -4248,6 +4261,7 @@ export {
|
|
|
4248
4261
|
initDatabase,
|
|
4249
4262
|
isInitialized,
|
|
4250
4263
|
setExternalClient,
|
|
4264
|
+
initPostgresOnlyDatabase,
|
|
4251
4265
|
offloadReadQuery,
|
|
4252
4266
|
offloadReadIfMain,
|
|
4253
4267
|
SOFT_DELETE_RETENTION_DAYS,
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
getClient,
|
|
4
4
|
isInitialized,
|
|
5
5
|
loadEmployees
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QNKR7WEL.js";
|
|
7
7
|
import {
|
|
8
8
|
PLAN_LIMITS,
|
|
9
9
|
checkLicense,
|
|
10
10
|
isFeatureAllowed
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MMOONM6D.js";
|
|
12
12
|
import {
|
|
13
13
|
EXE_AI_DIR
|
|
14
14
|
} from "./chunk-BCZF3AGJ.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QNKR7WEL.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/pipeline-router.ts
|
|
6
6
|
import crypto from "crypto";
|
|
@@ -140,8 +140,8 @@ Agent response: ${agentResponse}` : ""
|
|
|
140
140
|
}
|
|
141
141
|
async function sinkEntityExtraction(msg, agentResponse, agentName) {
|
|
142
142
|
try {
|
|
143
|
-
const { extractFromConversation } = await import("./conversation-entity-extractor-
|
|
144
|
-
const { storeExtraction } = await import("./graph-rag-
|
|
143
|
+
const { extractFromConversation } = await import("./conversation-entity-extractor-YF3ZLTEJ.js");
|
|
144
|
+
const { storeExtraction } = await import("./graph-rag-YFITUAVO.js");
|
|
145
145
|
if ((msg.text?.length ?? 0) < 20) return false;
|
|
146
146
|
if (msg.isHistorical) return false;
|
|
147
147
|
const extraction = await extractFromConversation(msg, agentResponse, agentName);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sendIntercom,
|
|
3
3
|
updateTaskStatus
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZXSFUR77.js";
|
|
5
5
|
import {
|
|
6
6
|
recordOrchestrationEventBestEffort
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-AMC2OPYP.js";
|
|
8
8
|
import {
|
|
9
9
|
BUSY_PATTERN
|
|
10
10
|
} from "./chunk-OSKWCKUC.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
baseAgentName,
|
|
13
13
|
getCoordinatorName,
|
|
14
14
|
isCoordinatorName
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-QNKR7WEL.js";
|
|
16
16
|
|
|
17
17
|
// src/lib/play-mode.ts
|
|
18
18
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
@@ -305,7 +305,7 @@ async function surfaceStaleDispatchPendingSignals(scopeList, now, thresholdMs =
|
|
|
305
305
|
const sessionScope = signalScope ?? (scopeList.length === 1 ? scopeList[0] : null);
|
|
306
306
|
if (allowedScopes.size > 0 && sessionScope && !allowedScopes.has(sessionScope)) continue;
|
|
307
307
|
try {
|
|
308
|
-
const { writeNotification } = await import("./notifications-
|
|
308
|
+
const { writeNotification } = await import("./notifications-YKHZPCXU.js");
|
|
309
309
|
await writeNotification({
|
|
310
310
|
agentId: getCoordinatorName(),
|
|
311
311
|
agentRole: "COO",
|