@askexenow/exe-os 0.9.335 → 0.9.338
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/dist/{active-agent-AIK6FSYE.js → active-agent-EC6M7KTX.js} +3 -3
- package/dist/{active-agent-GXV65DNN.js → active-agent-WHIUCHLA.js} +3 -3
- package/dist/{agentic-ontology-V2BQY4DH.js → agentic-ontology-RNSXGXW4.js} +1 -1
- package/dist/{backfill-metadata-7JFKICS3.js → backfill-metadata-MFY6BHKE.js} +4 -4
- package/dist/{behaviors-QTG3MHDO.js → behaviors-HLZUJSMP.js} +5 -5
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +4 -4
- package/dist/bin/backfill-responses.js +4 -4
- package/dist/bin/backfill-vectors.js +5 -5
- package/dist/bin/bulk-sync-postgres.js +12 -10
- package/dist/bin/cc-doctor.js +4 -4
- package/dist/bin/cleanup-stale-review-tasks.js +14 -14
- package/dist/bin/cli.js +19 -16
- package/dist/bin/deferred-daemon-restart.js +71 -69
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +14 -14
- package/dist/bin/exe-assign.js +5 -5
- package/dist/bin/exe-boot.js +24 -24
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +12 -10
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +14 -14
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-grant.js +126 -0
- package/dist/bin/exe-healthcheck.js +4 -4
- package/dist/bin/exe-heartbeat.js +14 -14
- package/dist/bin/exe-kill.js +17 -17
- package/dist/bin/exe-launch-agent.js +22 -22
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-pending-messages.js +15 -15
- package/dist/bin/exe-pending-notifications.js +14 -14
- package/dist/bin/exe-pending-reviews.js +14 -14
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +16 -16
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +18 -18
- package/dist/bin/exe-settings.js +13 -11
- package/dist/bin/exe-start-codex.js +12 -12
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +15 -15
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +15 -15
- package/dist/bin/graph-backfill.js +6 -6
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +9 -9
- package/dist/bin/install.js +73 -71
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +14 -14
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +7 -7
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{branch-hygiene-55TKIWAZ.js → branch-hygiene-R5NVTRAY.js} +17 -15
- package/dist/{capability-cards-QKTDMIWO.js → capability-cards-YOKVMMOL.js} +2 -2
- package/dist/{capacity-monitor-4U2Y7CSW.js → capacity-monitor-S54IOWRL.js} +15 -15
- package/dist/{catchup-brief-LFSFSDBA.js → catchup-brief-S35QLMG3.js} +17 -17
- package/dist/{chunk-UDX46CNG.js → chunk-2HZY3ECT.js} +5 -5
- package/dist/{chunk-VINX2BZI.js → chunk-2SG2UGCH.js} +4 -4
- package/dist/{chunk-RGHT5J2L.js → chunk-3OBWSCJN.js} +11 -11
- package/dist/{chunk-RKBVTCPY.js → chunk-4IYSBPX3.js} +1 -1
- package/dist/{chunk-ZA7NMOTA.js → chunk-52KNOQMK.js} +3 -3
- package/dist/{chunk-U6M5C3MB.js → chunk-542EWGY3.js} +7 -7
- package/dist/{chunk-HDZF7FQF.js → chunk-65SVQELL.js} +2 -2
- package/dist/{chunk-FZALT2G7.js → chunk-6HBURYON.js} +1 -1
- package/dist/{chunk-XWH7QGCU.js → chunk-6IRVGOUL.js} +1 -1
- package/dist/{chunk-2OZMCTYQ.js → chunk-6M36JFFD.js} +3 -3
- package/dist/{chunk-SRGBHZ3H.js → chunk-6MRWJMI5.js} +1 -1
- package/dist/{chunk-VI7I6K4G.js → chunk-7EA7LYW4.js} +2 -2
- package/dist/{chunk-FXS5YIK5.js → chunk-7WDXEKUL.js} +3 -3
- package/dist/{chunk-ORU5LDIT.js → chunk-AOO77BDE.js} +1 -1
- package/dist/{chunk-67547XFJ.js → chunk-AVKXCSBI.js} +1 -1
- package/dist/{chunk-75L2YCD4.js → chunk-B2GLEEGY.js} +1 -1
- package/dist/chunk-B75BOKEI.js +193 -0
- package/dist/{chunk-UWT664G5.js → chunk-B76TSEP3.js} +1 -1
- package/dist/{chunk-E5UHM2KN.js → chunk-BPC5LZ6Y.js} +1 -1
- package/dist/{chunk-JT3I3OWU.js → chunk-BU2QQWBQ.js} +1 -1
- package/dist/{chunk-6J5FWFAI.js → chunk-DADMPMYX.js} +1 -1
- package/dist/{chunk-54X2PQBA.js → chunk-DILD54TU.js} +46 -13
- package/dist/{chunk-EOYVD5U3.js → chunk-DZ6OQM67.js} +1 -1
- package/dist/{chunk-5QJFZYDD.js → chunk-EIF2LQHZ.js} +1 -1
- package/dist/{chunk-3CHTRPOU.js → chunk-FNZR3B7U.js} +1 -1
- package/dist/{chunk-AREY6CD2.js → chunk-FUIIVSW6.js} +1 -1
- package/dist/{chunk-VST5V263.js → chunk-GN45PBWI.js} +2 -2
- package/dist/{chunk-QFNRI3PS.js → chunk-H2L4PHGH.js} +2 -2
- package/dist/{chunk-J6REQ7CV.js → chunk-H37HHX3E.js} +9 -9
- package/dist/{chunk-BIM763ML.js → chunk-HEPR6QTL.js} +4 -4
- package/dist/{chunk-UUY3USYA.js → chunk-I3XKO3KQ.js} +1 -1
- package/dist/{chunk-JEDQHPPC.js → chunk-I7Z6KTGF.js} +5 -5
- package/dist/{chunk-QYTUXYAM.js → chunk-ISD7ZD45.js} +140 -140
- package/dist/chunk-JCBKARSK.js +113 -0
- package/dist/{chunk-ESIZMMWY.js → chunk-K5WFKEXQ.js} +67 -78
- package/dist/{chunk-ROHUOHJI.js → chunk-KCC5A7YL.js} +5 -5
- package/dist/{chunk-IJTCNN5I.js → chunk-KMBEL7VB.js} +1 -1
- package/dist/{chunk-VAZHL55P.js → chunk-KTY7I7UH.js} +1 -1
- package/dist/{chunk-6UJ4CX5L.js → chunk-LMZISHSJ.js} +13 -13
- package/dist/{chunk-VAEYG5V5.js → chunk-LTVCRHHD.js} +4 -4
- package/dist/{chunk-6L4LI4VQ.js → chunk-MQRFKSLI.js} +3 -3
- package/dist/{chunk-7QFR2QUD.js → chunk-MW2GJJ53.js} +2 -2
- package/dist/{chunk-XA753DUQ.js → chunk-N5I7RL3I.js} +1 -1
- package/dist/{chunk-YYKY45TM.js → chunk-OFX5B2S7.js} +1 -1
- package/dist/{chunk-H5C4PS64.js → chunk-OJTJYEMX.js} +3 -3
- package/dist/{chunk-5EP4TCZ2.js → chunk-PAEXYFMY.js} +1 -1
- package/dist/{chunk-X3VIRILN.js → chunk-PLRIJALF.js} +160 -34
- package/dist/{chunk-WI3T3GTH.js → chunk-Q7L6G6KV.js} +2 -2
- package/dist/{chunk-SDZ654BU.js → chunk-QBTWXDFK.js} +9 -9
- package/dist/{chunk-ZHKMRKH3.js → chunk-QFPTDSY2.js} +1 -1
- package/dist/{chunk-VXSORLMJ.js → chunk-QXSBB26A.js} +1 -1
- package/dist/{chunk-XMVEGUPC.js → chunk-QZLIZAS7.js} +2 -2
- package/dist/{chunk-QLZ3HCNN.js → chunk-R44Z32O2.js} +3 -3
- package/dist/{chunk-I33GPQUB.js → chunk-RDTZTLVQ.js} +20 -11
- package/dist/{chunk-45AA4HOH.js → chunk-RLRT2BVM.js} +1 -1
- package/dist/chunk-RNAYCUNM.js +271 -0
- package/dist/{chunk-FAVEOPZD.js → chunk-RRWDYOQS.js} +1 -1
- package/dist/{chunk-D2527Q5Y.js → chunk-T4KZ2Z2N.js} +3 -3
- package/dist/{chunk-JKSK4VFX.js → chunk-TLYAEISW.js} +2 -2
- package/dist/{chunk-3HMHSTHQ.js → chunk-UIV2WPBT.js} +1 -13
- package/dist/{chunk-X5EGTW2P.js → chunk-UPWE5NOG.js} +2 -2
- package/dist/{chunk-OEEQGXCG.js → chunk-UXBD22CD.js} +1 -1
- package/dist/{chunk-5ZG2JMZH.js → chunk-VJHUVFIW.js} +3 -3
- package/dist/{chunk-AQGBOSA4.js → chunk-WYLV4S6A.js} +3 -3
- package/dist/{chunk-QVM5KATG.js → chunk-X425OEYF.js} +4 -4
- package/dist/{chunk-U7N2GEBI.js → chunk-X7H3HMFH.js} +3 -3
- package/dist/{chunk-DTFFLCFM.js → chunk-XACL67CS.js} +1 -1
- package/dist/{chunk-ZWIYJV2F.js → chunk-XCTGRD4S.js} +175 -11
- package/dist/{chunk-QQCZLNUC.js → chunk-XJI7Z6LZ.js} +1 -1
- package/dist/{chunk-SPCO7SNH.js → chunk-XUKPALWT.js} +3 -3
- package/dist/{chunk-7ODTT6WK.js → chunk-XWHE4LZK.js} +1 -1
- package/dist/{chunk-LK5RBBMQ.js → chunk-YE7NH53A.js} +1 -1
- package/dist/{chunk-P3PGU2OC.js → chunk-ZIVEA3NB.js} +1 -1
- package/dist/{cleanup-graph-garbage-OP7NAXDZ.js → cleanup-graph-garbage-KUABW6LS.js} +6 -6
- package/dist/{co-activation-EVNRLGPH.js → co-activation-XMPHKGHR.js} +2 -2
- package/dist/{co-occurrence-FEU6RXQI.js → co-occurrence-SHKSJ6CV.js} +4 -4
- package/dist/{conversation-entity-extractor-FPAMTL3C.js → conversation-entity-extractor-D3EFTLT4.js} +2 -2
- package/dist/{crdt-sync-YI5LFAUY.js → crdt-sync-UJELKSNX.js} +1 -1
- package/dist/{crm-webhook-REDANIV7.js → crm-webhook-HHNBS7LY.js} +2 -2
- package/dist/{cto-delegation-gate-HN3J76UI.js → cto-delegation-gate-DXNF5HVW.js} +13 -13
- package/dist/{daemon-orchestration-KIAYDBWN.js → daemon-orchestration-7QB6QOXT.js} +29 -17
- package/dist/{db-backup-UBKQZVEI.js → db-backup-DLD4QZBO.js} +1 -1
- package/dist/{doc-graph-extractor-BPXVTZ4L.js → doc-graph-extractor-3TRLGD7M.js} +4 -4
- package/dist/{documents-J4MQBIYZ.js → documents-FHIBU7KJ.js} +5 -5
- package/dist/{dreaming-RCAAKENX.js → dreaming-OMFUEUCQ.js} +14 -14
- package/dist/{exe-drift-PVUYHYKG.js → exe-drift-KY2KHZEL.js} +3 -3
- package/dist/{exe-export-Z626JBSJ.js → exe-export-SP6G3QF6.js} +6 -6
- package/dist/{exe-import-47MHFJUB.js → exe-import-KJU7FBVQ.js} +6 -6
- package/dist/{exe-key-RLMYYUTW.js → exe-key-RWGMIHK7.js} +71 -69
- package/dist/{exe-snapshot-VHSZP5VK.js → exe-snapshot-ZNPGUKRZ.js} +17 -17
- package/dist/{fast-db-init-KIS7XQO5.js → fast-db-init-QQB6IVWV.js} +1 -1
- package/dist/{founder-context-NSXLHXJ4.js → founder-context-PQR3BUS7.js} +2 -2
- package/dist/gateway/index.js +11 -11
- package/dist/{git-staleness-7N4H6ZE3.js → git-staleness-UGB5J3K7.js} +2 -2
- package/dist/{global-procedures-3PJSNL4Q.js → global-procedures-R7KRREEK.js} +3 -3
- package/dist/{graph-auto-extract-S5TSHNFY.js → graph-auto-extract-LKIQ57PL.js} +4 -4
- package/dist/{graph-rag-WAK2BRJH.js → graph-rag-JZZAB7PC.js} +2 -2
- package/dist/hooks/bug-report-worker.js +16 -16
- package/dist/hooks/codex-stop-task-finalizer.js +16 -16
- package/dist/hooks/commit-complete.js +16 -16
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +15 -15
- package/dist/hooks/post-tool-combined.js +7 -7
- package/dist/hooks/pre-compact.js +16 -16
- package/dist/hooks/pre-tool-use.js +19 -19
- package/dist/hooks/prompt-submit.js +30 -30
- package/dist/hooks/session-end.js +20 -20
- package/dist/hooks/session-start.js +12 -12
- package/dist/hooks/stop.js +19 -19
- package/dist/hooks/subagent-stop.js +15 -15
- package/dist/hooks/summary-worker.js +19 -19
- package/dist/index.js +25 -25
- package/dist/{installer-FQKJ6ULZ.js → installer-MNPXDLGG.js} +6 -6
- package/dist/{installer-TYK3XXK7.js → installer-MZWWBXM6.js} +9 -9
- package/dist/{installer-3X5QNMTD.js → installer-SB2N5NKH.js} +9 -9
- package/dist/{intercom-queue-XJ3RTJ2C.js → intercom-queue-VU2G6F5R.js} +15 -13
- package/dist/lib/agent-config.js +1 -1
- package/dist/lib/cloud-sync.js +12 -10
- package/dist/lib/consolidation.js +7 -7
- package/dist/lib/crypto.js +5 -1
- package/dist/lib/database.js +2 -2
- package/dist/lib/db.js +2 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon.js +330 -103
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +14 -14
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +15 -15
- package/dist/lib/tmux-routing.js +13 -13
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-B4HB3ZDR.js → license-gate-BYDMFMFT.js} +3 -3
- package/dist/{license-sync-LSKU2X6F.js → license-sync-N3RNYVP2.js} +2 -2
- package/dist/mcp/register-tools.js +70 -68
- package/dist/mcp/server.js +73 -71
- package/dist/mcp/tools/complete-reminder.js +4 -4
- package/dist/mcp/tools/create-reminder.js +4 -4
- package/dist/mcp/tools/create-task.js +17 -17
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +17 -17
- package/dist/mcp/tools/send-message.js +16 -16
- package/dist/mcp/tools/update-task.js +16 -16
- package/dist/{mcp-http-config-D4EBSK3R.js → mcp-http-config-EMAVS2JI.js} +3 -3
- package/dist/{memory-cards-E5O4IPYV.js → memory-cards-TQRLZI4D.js} +4 -4
- package/dist/{memory-graph-extractor-3NQUGAA5.js → memory-graph-extractor-IWGNVAFU.js} +5 -5
- package/dist/{memory-poisoning-defense-DPCHNN7S.js → memory-poisoning-defense-T4ITBGSG.js} +2 -2
- package/dist/{memory-pressure-watchdog-4RVYB2JC.js → memory-pressure-watchdog-RRIAXPXQ.js} +14 -14
- package/dist/{memory-reflection-EGLE4DZ5.js → memory-reflection-6N4J2FL7.js} +2 -2
- package/dist/monitor-grants-RZOVSYVO.js +27 -0
- package/dist/monitor-identity-MOXISYNG.js +34 -0
- package/dist/{notifications-LDDVXMH7.js → notifications-KONB3C62.js} +13 -13
- package/dist/{orchestration-events-2QYYCFSI.js → orchestration-events-5SIJOE4H.js} +3 -3
- package/dist/{orchestrator-UFYOUXGZ.js → orchestrator-DUUX7FQV.js} +15 -15
- package/dist/{pipeline-router-PLYAEQN7.js → pipeline-router-O6HU7DKH.js} +3 -3
- package/dist/{plan-limits-ETP2IFM4.js → plan-limits-GRNBOBB3.js} +5 -5
- package/dist/{projection-worker-N4KVTVZE.js → projection-worker-ZVOFHTXT.js} +2 -2
- package/dist/{prospective-memory-JPTTRFYJ.js → prospective-memory-W6S67LZZ.js} +2 -2
- package/dist/{reranker-267LQRRT.js → reranker-6UQSZVV2.js} +1 -1
- package/dist/{retrieval-health-GFGXNPSN.js → retrieval-health-TWHKYCRK.js} +1 -1
- package/dist/{review-polling-4IFCCPGQ.js → review-polling-PCMD5BFN.js} +14 -14
- package/dist/runtime/index.js +21 -21
- package/dist/{session-events-CVNW7DBW.js → session-events-3LCVQEL7.js} +14 -14
- package/dist/{session-kill-telemetry-56HNNXLH.js → session-kill-telemetry-CZSPN5V6.js} +14 -14
- package/dist/{session-scope-RMKL6YLU.js → session-scope-CFHVSVAQ.js} +13 -13
- package/dist/{setup-wizard-L6JMCB33.js → setup-wizard-CJZMM43G.js} +1 -1
- package/dist/{skill-refinement-FA5DM3NA.js → skill-refinement-74T6VDFM.js} +3 -3
- package/dist/{stack-release-3AF7TQ5N.js → stack-release-XXMV7SPX.js} +40 -3
- package/dist/{stack-update-2TGPFH6E.js → stack-update-E2TKHHSQ.js} +3 -3
- package/dist/{steward-gate-L2FBY7U4.js → steward-gate-WT7WXQIE.js} +3 -3
- package/dist/{task-enforcement-XO6CYQVG.js → task-enforcement-VI7L43DC.js} +14 -14
- package/dist/{task-scope-7BWIG4G3.js → task-scope-CQEG5SSJ.js} +13 -13
- package/dist/{tasks-crud-IW3ZBFHL.js → tasks-crud-UGK5A25L.js} +13 -13
- package/dist/{tasks-notify-MOSUAR3U.js → tasks-notify-SMLDFBWM.js} +14 -14
- package/dist/{tasks-review-S2IYB6AA.js → tasks-review-JKBRACII.js} +13 -13
- package/dist/{telemetry-upload-IG4AGZFK.js → telemetry-upload-7LBYGPCB.js} +7 -7
- package/dist/{token-budget-EVNOJQ7H.js → token-budget-QBRJR4M5.js} +3 -3
- package/dist/{tool-telemetry-UPADF5DF.js → tool-telemetry-ULIDUK3P.js} +1 -1
- package/dist/tui/App.js +21 -21
- package/dist/{tui-data-KCMCI6Z5.js → tui-data-NPTGKT37.js} +13 -13
- package/dist/{worker-gate-YY7OZOJH.js → worker-gate-MXUQUG4M.js} +1 -1
- package/dist/{workflow-engine-TZW4ZQV3.js → workflow-engine-EWCOLD47.js} +2 -2
- package/dist/{worktree-WF7X43XI.js → worktree-GVF2I5FP.js} +4 -4
- package/dist/{worktree-sweep-QOAXY6CT.js → worktree-sweep-ZAG3V24E.js} +5 -5
- package/package.json +4 -3
- package/release-notes.json +29 -20
- package/dist/chunk-LO6L5ADL.js +0 -76
- package/dist/{chunk-XWIVAMVX.js → chunk-5Z5NATNS.js} +0 -0
- package/dist/{chunk-7UMCQQWS.js → chunk-A4DVMPYB.js} +3 -3
- /package/dist/{chunk-INT5PHNK.js → chunk-ATOU6CYR.js} +0 -0
- /package/dist/{chunk-O4522BYB.js → chunk-D3QASX2W.js} +0 -0
- /package/dist/{chunk-66RCRDIF.js → chunk-HHIBOU3P.js} +0 -0
- /package/dist/{chunk-TXUSQZLH.js → chunk-IYB2NIW3.js} +0 -0
- /package/dist/{chunk-S4Y5YXPX.js → chunk-KTPG4XKI.js} +0 -0
- /package/dist/{chunk-OHSJOKKW.js → chunk-NQBRGXYR.js} +0 -0
- /package/dist/{chunk-JMGYZLJX.js → chunk-QLFRCA6I.js} +0 -0
- /package/dist/{chunk-6A5DGGRT.js → chunk-TNJRWUCE.js} +0 -0
- /package/dist/{chunk-OMJH4DQ7.js → chunk-UFAXZ2PY.js} +0 -0
- /package/dist/{chunk-NF2OBCEI.js → chunk-UNVHIH7N.js} +0 -0
- /package/dist/{chunk-GFWND35H.js → chunk-Z7OZP3ET.js} +0 -0
- /package/dist/{core-memory-HCJMR32C.js → core-memory-VO5ZIBKH.js} +0 -0
- /package/dist/{oauth-server-YVREFZMD.js → oauth-server-ROQFOEMM.js} +0 -0
- /package/dist/{project-boot-OZA6KYFP.js → project-boot-SD7GM24K.js} +0 -0
- /package/dist/{wiki-acl-XWSASBWZ.js → wiki-acl-JA5UCQZ4.js} +0 -0
|
@@ -119,7 +119,7 @@ function releaseBackfillLock() {
|
|
|
119
119
|
}
|
|
120
120
|
async function getTaskAwareCapacity() {
|
|
121
121
|
const { getClient } = await import("./lib/database.js");
|
|
122
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
122
|
+
const { sessionScopeFilter } = await import("./task-scope-CQEG5SSJ.js");
|
|
123
123
|
const client = getClient();
|
|
124
124
|
const scope = sessionScopeFilter();
|
|
125
125
|
const result = await client.execute({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fastDbInit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UFAXZ2PY.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PLRIJALF.js";
|
|
7
7
|
import {
|
|
8
8
|
formatStatusAll,
|
|
9
9
|
formatStatusDeep,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
getClient,
|
|
15
15
|
isCoordinatorRole,
|
|
16
16
|
loadEmployees
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HEPR6QTL.js";
|
|
18
18
|
import {
|
|
19
19
|
isMainModule
|
|
20
20
|
} from "./chunk-6Y4B3QF6.js";
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ensureAgentSymlink
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OFX5B2S7.js";
|
|
4
4
|
import {
|
|
5
5
|
ensureWorktree,
|
|
6
6
|
getGitRoot,
|
|
7
7
|
isWorktreeDirty
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-B76TSEP3.js";
|
|
9
9
|
import {
|
|
10
10
|
incrementSkillSuccess
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-RLRT2BVM.js";
|
|
12
|
+
import {
|
|
13
|
+
buildTaskResult,
|
|
14
|
+
serializeMessage
|
|
15
|
+
} from "./chunk-4JERP7NT.js";
|
|
12
16
|
import {
|
|
13
17
|
reviewSignalPath,
|
|
14
18
|
taskSignalDir
|
|
@@ -17,14 +21,10 @@ import {
|
|
|
17
21
|
LEASE_MINUTES,
|
|
18
22
|
leaseExpiryIso
|
|
19
23
|
} from "./chunk-E23LNUWJ.js";
|
|
20
|
-
import {
|
|
21
|
-
buildTaskResult,
|
|
22
|
-
serializeMessage
|
|
23
|
-
} from "./chunk-4JERP7NT.js";
|
|
24
24
|
import {
|
|
25
25
|
listSessions,
|
|
26
26
|
registerSession
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-UIV2WPBT.js";
|
|
28
28
|
import {
|
|
29
29
|
listTmuxSessions
|
|
30
30
|
} from "./chunk-SSTLTIF3.js";
|
|
@@ -33,20 +33,20 @@ import {
|
|
|
33
33
|
} from "./chunk-RMOBQ6A5.js";
|
|
34
34
|
import {
|
|
35
35
|
recordOrchestrationEventBestEffort
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-FUIIVSW6.js";
|
|
37
37
|
import {
|
|
38
38
|
assertRuntimeModelCompatible,
|
|
39
39
|
getAgentRuntime,
|
|
40
40
|
normalizeCcModelName,
|
|
41
41
|
resolveSpawnRuntimeConfig
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-65SVQELL.js";
|
|
43
43
|
import {
|
|
44
44
|
RUNTIME_TABLE
|
|
45
45
|
} from "./chunk-NGP6LSV2.js";
|
|
46
46
|
import {
|
|
47
47
|
PlanLimitError,
|
|
48
48
|
assertEmployeeLimitSync
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-MW2GJJ53.js";
|
|
50
50
|
import {
|
|
51
51
|
getSessionKey
|
|
52
52
|
} from "./chunk-CVYC6DUW.js";
|
|
@@ -74,10 +74,10 @@ import {
|
|
|
74
74
|
loadEmployees,
|
|
75
75
|
loadEmployeesSync,
|
|
76
76
|
offloadReadIfMain
|
|
77
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-HEPR6QTL.js";
|
|
78
78
|
import {
|
|
79
79
|
loadDeviceId
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-XACL67CS.js";
|
|
81
81
|
import {
|
|
82
82
|
EXE_AI_DIR
|
|
83
83
|
} from "./chunk-7Y5UDEVM.js";
|
|
@@ -555,6 +555,80 @@ function drainQueue(isSessionBusy2, sendKeys, notifyExpiry = notifyExpiredInterc
|
|
|
555
555
|
}
|
|
556
556
|
return { drained, failed };
|
|
557
557
|
}
|
|
558
|
+
async function drainQueueAsync(isSessionBusy2, sendKeys, notifyExpiry = notifyExpiredIntercom, yieldEvery = 10) {
|
|
559
|
+
if (_draining) {
|
|
560
|
+
logQueue("SKIP_DRAIN \u2014 previous drain still running (possible tmux hang)");
|
|
561
|
+
return { drained: 0, failed: 0 };
|
|
562
|
+
}
|
|
563
|
+
_draining = true;
|
|
564
|
+
const remaining = [];
|
|
565
|
+
let drained = 0;
|
|
566
|
+
let failed = 0;
|
|
567
|
+
let lockAcquired = false;
|
|
568
|
+
try {
|
|
569
|
+
lockAcquired = acquireQueueLock();
|
|
570
|
+
if (!lockAcquired) return { drained: 0, failed: 0 };
|
|
571
|
+
const queue = readQueue();
|
|
572
|
+
if (queue.length === 0) return { drained: 0, failed: 0 };
|
|
573
|
+
const snapshotTargets = new Set(queue.map((q) => q.targetSession));
|
|
574
|
+
let processed = 0;
|
|
575
|
+
for (const item of queue) {
|
|
576
|
+
if (processed > 0 && processed % yieldEvery === 0) {
|
|
577
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
578
|
+
}
|
|
579
|
+
processed++;
|
|
580
|
+
const age = Date.now() - new Date(item.queuedAt).getTime();
|
|
581
|
+
if (age > TTL_MS) {
|
|
582
|
+
logQueue(`EXPIRED \u2192 ${item.targetSession} (${Math.round(age / 6e4)}min old, reason: ${item.reason})`);
|
|
583
|
+
try {
|
|
584
|
+
notifyExpiry(item);
|
|
585
|
+
} catch (err) {
|
|
586
|
+
logQueue(`EXPIRY_NOTIFY_FAILED \u2192 ${item.targetSession}: ${err instanceof Error ? err.message : String(err)}`);
|
|
587
|
+
}
|
|
588
|
+
failed++;
|
|
589
|
+
continue;
|
|
590
|
+
}
|
|
591
|
+
try {
|
|
592
|
+
if (!await isSessionBusy2(item.targetSession)) {
|
|
593
|
+
const success = await sendKeys(item.targetSession, item);
|
|
594
|
+
if (success) {
|
|
595
|
+
logQueue(`DRAINED \u2192 ${item.targetSession} (after ${item.attempts} retries)`);
|
|
596
|
+
drained++;
|
|
597
|
+
continue;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
} catch {
|
|
601
|
+
}
|
|
602
|
+
item.attempts++;
|
|
603
|
+
if (item.attempts >= MAX_RETRIES) {
|
|
604
|
+
logQueue(`PENDING \u2192 ${item.targetSession} (${MAX_RETRIES} retries exhausted, keeping queued, reason: ${item.reason})`);
|
|
605
|
+
item.attempts = MAX_RETRIES;
|
|
606
|
+
remaining.push(item);
|
|
607
|
+
failed++;
|
|
608
|
+
continue;
|
|
609
|
+
}
|
|
610
|
+
remaining.push(item);
|
|
611
|
+
}
|
|
612
|
+
const merged = remaining;
|
|
613
|
+
const mergedTargets = new Set(merged.map((r) => r.targetSession));
|
|
614
|
+
let preserved = 0;
|
|
615
|
+
for (const item of readQueue()) {
|
|
616
|
+
if (!snapshotTargets.has(item.targetSession) && !mergedTargets.has(item.targetSession)) {
|
|
617
|
+
merged.push(item);
|
|
618
|
+
mergedTargets.add(item.targetSession);
|
|
619
|
+
preserved++;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
if (preserved > 0) {
|
|
623
|
+
logQueue(`MERGED ${preserved} intercom(s) enqueued mid-drain (preserved from clobber)`);
|
|
624
|
+
}
|
|
625
|
+
writeQueue(merged);
|
|
626
|
+
} finally {
|
|
627
|
+
if (lockAcquired) releaseQueueLock();
|
|
628
|
+
_draining = false;
|
|
629
|
+
}
|
|
630
|
+
return { drained, failed };
|
|
631
|
+
}
|
|
558
632
|
function drainForSession(targetSession, sendKeys) {
|
|
559
633
|
if (!acquireQueueLock()) return false;
|
|
560
634
|
try {
|
|
@@ -1219,7 +1293,7 @@ async function createTaskCore(input) {
|
|
|
1219
1293
|
if (isCoordinatorSession) {
|
|
1220
1294
|
earlySessionScope = resolved;
|
|
1221
1295
|
} else {
|
|
1222
|
-
const { getSessionProject } = await import("./session-scope-
|
|
1296
|
+
const { getSessionProject } = await import("./session-scope-CFHVSVAQ.js");
|
|
1223
1297
|
const sessionProject = getSessionProject(resolved);
|
|
1224
1298
|
if (sessionProject && sessionProject !== input.projectName) {
|
|
1225
1299
|
scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
|
|
@@ -1468,7 +1542,7 @@ async function queryTaskRows(opts) {
|
|
|
1468
1542
|
}
|
|
1469
1543
|
if (opts.founderId !== null) {
|
|
1470
1544
|
try {
|
|
1471
|
-
const { founderScopeFilter } = await import("./founder-context-
|
|
1545
|
+
const { founderScopeFilter } = await import("./founder-context-PQR3BUS7.js");
|
|
1472
1546
|
const founderFilter = founderScopeFilter(opts.founderId);
|
|
1473
1547
|
const cleaned = founderFilter.sql.replace(/^\s*AND\s+/, "");
|
|
1474
1548
|
conditions.push(cleaned);
|
|
@@ -1626,7 +1700,7 @@ var VALID_TASK_STATUSES = [
|
|
|
1626
1700
|
var VALID_TRANSITIONS = {
|
|
1627
1701
|
open: ["in_progress", "needs_review", "cancelled", "blocked"],
|
|
1628
1702
|
in_progress: ["in_progress", "open", "needs_review", "blocked", "cancelled"],
|
|
1629
|
-
blocked: ["open", "in_progress", "cancelled"],
|
|
1703
|
+
blocked: ["open", "in_progress", "needs_review", "cancelled"],
|
|
1630
1704
|
needs_review: ["closed", "in_progress", "open"],
|
|
1631
1705
|
closed: [],
|
|
1632
1706
|
// terminal — no transitions out
|
|
@@ -1692,7 +1766,7 @@ async function updateTaskStatus(input) {
|
|
|
1692
1766
|
`Invalid task transition: ${previousStatus} \u2192 ${input.status}. Valid transitions from "${previousStatus}": [${validNext.join(", ")}]`
|
|
1693
1767
|
);
|
|
1694
1768
|
}
|
|
1695
|
-
const isReviewTransition = input.status === "needs_review" && previousStatus !== "needs_review" && (previousStatus === "open" || previousStatus === "in_progress");
|
|
1769
|
+
const isReviewTransition = input.status === "needs_review" && previousStatus !== "needs_review" && (previousStatus === "open" || previousStatus === "in_progress" || previousStatus === "blocked");
|
|
1696
1770
|
const effectiveReviewer = row.reviewer ? String(row.reviewer) : row.assigned_by ? String(row.assigned_by) : "";
|
|
1697
1771
|
const isBlockedTransition = input.status === "blocked" && previousStatus !== "blocked";
|
|
1698
1772
|
if (input.status === "done" && String(row.assigned_by) === "system" && taskFile.includes("review-")) {
|
|
@@ -1771,7 +1845,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
1771
1845
|
started_at = COALESCE(started_at, ?),
|
|
1772
1846
|
estimated_minutes = COALESCE(?, estimated_minutes),
|
|
1773
1847
|
estimate_confidence = COALESCE(?, estimate_confidence)
|
|
1774
|
-
WHERE id = ? AND status
|
|
1848
|
+
WHERE id = ? AND status IN ('open', 'blocked')${claimGuardSql}`,
|
|
1775
1849
|
args: [tmuxSession, now, claimAgent, now, now, leaseExpiry, now, estMin, estConf, taskId, ...claimGuardArgs]
|
|
1776
1850
|
});
|
|
1777
1851
|
if (claim2.rowsAffected === 0) {
|
|
@@ -1807,7 +1881,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
1807
1881
|
started_at = COALESCE(started_at, ?),
|
|
1808
1882
|
estimated_minutes = COALESCE(?, estimated_minutes),
|
|
1809
1883
|
estimate_confidence = COALESCE(?, estimate_confidence)
|
|
1810
|
-
WHERE id = ? AND status
|
|
1884
|
+
WHERE id = ? AND status IN ('open', 'blocked')${claimGuardSql}`,
|
|
1811
1885
|
args: [tmuxSession, now, claimAgent, now, now, leaseExpiry, now, estMin, estConf, taskId, ...claimGuardArgs]
|
|
1812
1886
|
});
|
|
1813
1887
|
if (retriedOpen.rowsAffected > 0) {
|
|
@@ -3792,38 +3866,71 @@ function resolveExeSession() {
|
|
|
3792
3866
|
}
|
|
3793
3867
|
})();
|
|
3794
3868
|
const envHint = process.env.EXE_SESSION_NAME || "";
|
|
3869
|
+
const validateLiveHint = (hint, source) => {
|
|
3870
|
+
if (!hint || !isRootSession(hint)) return hint || null;
|
|
3871
|
+
try {
|
|
3872
|
+
const liveSessions = getTransport().listSessions();
|
|
3873
|
+
if (liveSessions.includes(hint)) return hint;
|
|
3874
|
+
const liveRoots = liveSessions.filter((s) => isRootSession(s));
|
|
3875
|
+
if (liveRoots.length === 1) {
|
|
3876
|
+
process.stderr.write(
|
|
3877
|
+
`[tmux-routing] WARN: ${source} hint="${hint}" is dead. Using only live coordinator "${liveRoots[0]}".
|
|
3878
|
+
`
|
|
3879
|
+
);
|
|
3880
|
+
return liveRoots[0];
|
|
3881
|
+
}
|
|
3882
|
+
if (liveRoots.length > 1) {
|
|
3883
|
+
process.stderr.write(
|
|
3884
|
+
`[tmux-routing] ERROR: ${source} hint="${hint}" is dead and ${liveRoots.length} live coordinator sessions exist; refusing to guess.
|
|
3885
|
+
`
|
|
3886
|
+
);
|
|
3887
|
+
return null;
|
|
3888
|
+
}
|
|
3889
|
+
process.stderr.write(
|
|
3890
|
+
`[tmux-routing] ERROR: ${source} hint="${hint}" is dead and no live coordinator exists; refusing stale route.
|
|
3891
|
+
`
|
|
3892
|
+
);
|
|
3893
|
+
return null;
|
|
3894
|
+
} catch {
|
|
3895
|
+
return hint;
|
|
3896
|
+
}
|
|
3897
|
+
};
|
|
3795
3898
|
const sessionHintRaw = alsHint || envHint || "";
|
|
3796
3899
|
if (sessionHintRaw) {
|
|
3797
3900
|
const fromEnv = extractRootExe(sessionHintRaw) ?? sessionHintRaw;
|
|
3798
3901
|
if (fromEnv) {
|
|
3799
3902
|
if (!mySession) {
|
|
3903
|
+
const liveHint = alsHint ? validateLiveHint(fromEnv, "ALS") : fromEnv;
|
|
3800
3904
|
logSessionResolve({
|
|
3801
3905
|
caller: "resolveExeSession",
|
|
3802
3906
|
mySession,
|
|
3803
3907
|
alsHint,
|
|
3804
3908
|
envHint,
|
|
3805
3909
|
cacheHit: null,
|
|
3806
|
-
resolved:
|
|
3807
|
-
path: alsHint ? "als_hint (no tmux)" : "env_var (no tmux)"
|
|
3910
|
+
resolved: liveHint,
|
|
3911
|
+
path: alsHint ? "als_hint (validated, no process tmux)" : "env_var (no tmux)"
|
|
3808
3912
|
});
|
|
3809
|
-
return
|
|
3913
|
+
return liveHint;
|
|
3810
3914
|
}
|
|
3811
3915
|
if (fromSessionName && fromEnv !== fromSessionName) {
|
|
3812
3916
|
if (alsHint) {
|
|
3813
|
-
|
|
3814
|
-
|
|
3917
|
+
const liveHint = validateLiveHint(fromEnv, "ALS");
|
|
3918
|
+
if (liveHint) {
|
|
3919
|
+
process.stderr.write(
|
|
3920
|
+
`[tmux-routing] INFO: ALS hint="${fromEnv}" differs from tmux="${fromSessionName}". Using validated ALS route "${liveHint}".
|
|
3815
3921
|
`
|
|
3816
|
-
|
|
3922
|
+
);
|
|
3923
|
+
}
|
|
3817
3924
|
logSessionResolve({
|
|
3818
3925
|
caller: "resolveExeSession",
|
|
3819
3926
|
mySession,
|
|
3820
3927
|
alsHint,
|
|
3821
3928
|
envHint,
|
|
3822
3929
|
cacheHit: null,
|
|
3823
|
-
resolved:
|
|
3824
|
-
path: "als_hint (daemon, tmux ignored)"
|
|
3930
|
+
resolved: liveHint,
|
|
3931
|
+
path: "als_hint (daemon, tmux ignored, liveness-validated)"
|
|
3825
3932
|
});
|
|
3826
|
-
return
|
|
3933
|
+
return liveHint;
|
|
3827
3934
|
}
|
|
3828
3935
|
process.env.EXE_SESSION_NAME = fromSessionName;
|
|
3829
3936
|
process.stderr.write(
|
|
@@ -3991,7 +4098,7 @@ async function verifyPaneAtCapacity(sessionName) {
|
|
|
3991
4098
|
reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
|
|
3992
4099
|
};
|
|
3993
4100
|
}
|
|
3994
|
-
const { isAtCapacity } = await import("./capacity-monitor-
|
|
4101
|
+
const { isAtCapacity } = await import("./capacity-monitor-S54IOWRL.js");
|
|
3995
4102
|
if (!isAtCapacity(pane)) {
|
|
3996
4103
|
return {
|
|
3997
4104
|
atCapacity: false,
|
|
@@ -4357,7 +4464,7 @@ function scheduleDeferredSpawnNudge(input) {
|
|
|
4357
4464
|
return;
|
|
4358
4465
|
}
|
|
4359
4466
|
queueIntercom(input.sessionName, `spawn nudge failed after ${attempt} attempts: ${msg}`, "signal");
|
|
4360
|
-
void import("./notifications-
|
|
4467
|
+
void import("./notifications-KONB3C62.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
|
|
4361
4468
|
agentId: getCoordinatorName(),
|
|
4362
4469
|
agentRole: "COO",
|
|
4363
4470
|
event: "error_spike",
|
|
@@ -4738,6 +4845,11 @@ function ensureEmployee(employeeName, exeSession, projectDir, opts) {
|
|
|
4738
4845
|
spawnOpts.cwd = wtPath;
|
|
4739
4846
|
process.stderr.write(`[tmux-routing] worktree isolation: ${employeeName} \u2192 ${wtPath}
|
|
4740
4847
|
`);
|
|
4848
|
+
} else {
|
|
4849
|
+
const msg = `Worktree isolation failed for code-role ${employeeName}; refusing to spawn in main checkout ${projectDir}`;
|
|
4850
|
+
process.stderr.write(`[tmux-routing] ${msg}
|
|
4851
|
+
`);
|
|
4852
|
+
return { status: "failed", sessionName, error: msg };
|
|
4741
4853
|
}
|
|
4742
4854
|
}
|
|
4743
4855
|
} catch (e) {
|
|
@@ -4818,7 +4930,16 @@ async function ensureEmployeeAsync(employeeName, exeSession, projectDir, opts) {
|
|
|
4818
4930
|
} catch {
|
|
4819
4931
|
}
|
|
4820
4932
|
const wtPath = await ensureWorktreeAsync(projectDir, employeeName, asyncOpts.instance);
|
|
4821
|
-
if (wtPath)
|
|
4933
|
+
if (wtPath) {
|
|
4934
|
+
asyncOpts.cwd = wtPath;
|
|
4935
|
+
} else {
|
|
4936
|
+
const sessionName = employeeSessionName(employeeName, exeSession, asyncOpts.instance);
|
|
4937
|
+
const msg = `Worktree isolation failed for code-role ${employeeName}; refusing to spawn in main checkout ${projectDir}`;
|
|
4938
|
+
process.stderr.write(`[ensureEmployeeAsync] ${msg}
|
|
4939
|
+
`);
|
|
4940
|
+
if (asyncOpts.spawnLockHeld) releaseSpawnLock(sessionName);
|
|
4941
|
+
return { status: "failed", sessionName, error: msg };
|
|
4942
|
+
}
|
|
4822
4943
|
}
|
|
4823
4944
|
} catch (err) {
|
|
4824
4945
|
process.stderr.write(
|
|
@@ -5440,22 +5561,26 @@ function isScopeCoordinatorDead(scope, opts) {
|
|
|
5440
5561
|
return false;
|
|
5441
5562
|
}
|
|
5442
5563
|
let registryReadable = false;
|
|
5564
|
+
let registryHasScope = false;
|
|
5443
5565
|
try {
|
|
5444
5566
|
const sessions = opts?.sessions ?? listSessions();
|
|
5445
5567
|
registryReadable = true;
|
|
5446
|
-
|
|
5568
|
+
registryHasScope = sessions.some((s) => s.windowName === scope);
|
|
5447
5569
|
} catch {
|
|
5448
5570
|
registryReadable = false;
|
|
5449
5571
|
}
|
|
5450
5572
|
let tmuxReadable = false;
|
|
5573
|
+
let tmuxHasScope = false;
|
|
5451
5574
|
try {
|
|
5452
5575
|
const live = opts && "liveTmux" in opts ? opts.liveTmux ?? [] : getTransport().listSessions();
|
|
5453
5576
|
tmuxReadable = opts && "liveTmux" in opts ? opts.liveTmux !== null : true;
|
|
5454
|
-
|
|
5577
|
+
tmuxHasScope = live.includes(scope);
|
|
5455
5578
|
} catch {
|
|
5456
5579
|
tmuxReadable = false;
|
|
5457
5580
|
}
|
|
5458
|
-
|
|
5581
|
+
if (tmuxReadable) return !tmuxHasScope;
|
|
5582
|
+
if (registryReadable) return !registryHasScope;
|
|
5583
|
+
return false;
|
|
5459
5584
|
}
|
|
5460
5585
|
function allowDeadScopeRescue(taskId, rowScope, currentScope, opts) {
|
|
5461
5586
|
if (!isScopeCoordinatorDead(rowScope, opts)) return false;
|
|
@@ -5562,6 +5687,7 @@ export {
|
|
|
5562
5687
|
readQueue,
|
|
5563
5688
|
queueIntercom,
|
|
5564
5689
|
drainQueue,
|
|
5690
|
+
drainQueueAsync,
|
|
5565
5691
|
drainForSession,
|
|
5566
5692
|
clearQueueForAgent,
|
|
5567
5693
|
_resetDrainGuard,
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
buildStatusFilter,
|
|
9
9
|
buildWikiScopeFilter,
|
|
10
10
|
searchMemories
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-H37HHX3E.js";
|
|
12
12
|
import {
|
|
13
13
|
blobToVector
|
|
14
14
|
} from "./chunk-OTVEIJUQ.js";
|
|
15
15
|
import {
|
|
16
16
|
getClient
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HEPR6QTL.js";
|
|
18
18
|
|
|
19
19
|
// src/lib/hybrid-search.ts
|
|
20
20
|
var RRF_K = 60;
|
|
@@ -359,7 +359,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
359
359
|
let rerankerAvailable = false;
|
|
360
360
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
361
361
|
try {
|
|
362
|
-
const { isRerankerAvailable } = await import("./reranker-
|
|
362
|
+
const { isRerankerAvailable } = await import("./reranker-6UQSZVV2.js");
|
|
363
363
|
rerankerAvailable = isRerankerAvailable();
|
|
364
364
|
} catch {
|
|
365
365
|
}
|
|
@@ -427,7 +427,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
427
427
|
]).catch(() => []),
|
|
428
428
|
includeStructuredCards ? (async () => {
|
|
429
429
|
try {
|
|
430
|
-
const { searchMemoryCards } = await import("./memory-cards-
|
|
430
|
+
const { searchMemoryCards } = await import("./memory-cards-TQRLZI4D.js");
|
|
431
431
|
return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
|
|
432
432
|
} catch {
|
|
433
433
|
return [];
|
|
@@ -436,7 +436,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
436
436
|
// Reflection insights: patterns, contradictions, summaries across sessions
|
|
437
437
|
includeStructuredCards ? (async () => {
|
|
438
438
|
try {
|
|
439
|
-
const { searchReflections } = await import("./memory-reflection-
|
|
439
|
+
const { searchReflections } = await import("./memory-reflection-6N4J2FL7.js");
|
|
440
440
|
const insights = await searchReflections(effectiveQuery, agentId, 5, {
|
|
441
441
|
includeArchived: options?.includeArchived
|
|
442
442
|
});
|
|
@@ -561,7 +561,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
561
561
|
try {
|
|
562
562
|
let rerankedRecords;
|
|
563
563
|
if (graphContextMap.size > 0) {
|
|
564
|
-
const { rerankWithContext } = await import("./reranker-
|
|
564
|
+
const { rerankWithContext } = await import("./reranker-6UQSZVV2.js");
|
|
565
565
|
const candidates = merged.map((m) => ({
|
|
566
566
|
text: m.raw_text,
|
|
567
567
|
context: graphContextMap.get(m.id)
|
|
@@ -569,7 +569,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
569
569
|
const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
|
|
570
570
|
rerankedRecords = scored.map((s) => merged[s.index]);
|
|
571
571
|
} else {
|
|
572
|
-
const { rerank } = await import("./reranker-
|
|
572
|
+
const { rerank } = await import("./reranker-6UQSZVV2.js");
|
|
573
573
|
rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
|
|
574
574
|
}
|
|
575
575
|
if (rerankedRecords.length > 0) {
|
|
@@ -931,7 +931,7 @@ async function lightweightSearch(queryText, agentId, options) {
|
|
|
931
931
|
}
|
|
932
932
|
if (results.length >= 2) {
|
|
933
933
|
try {
|
|
934
|
-
const { recordCoActivations } = await import("./co-activation-
|
|
934
|
+
const { recordCoActivations } = await import("./co-activation-XMPHKGHR.js");
|
|
935
935
|
const ids = results.slice(0, 10).map((r) => r.id);
|
|
936
936
|
void recordCoActivations(ids);
|
|
937
937
|
} catch {
|
|
@@ -939,7 +939,7 @@ async function lightweightSearch(queryText, agentId, options) {
|
|
|
939
939
|
}
|
|
940
940
|
if (options?.includeStructuredCards !== true) return results;
|
|
941
941
|
try {
|
|
942
|
-
const { searchMemoryCards } = await import("./memory-cards-
|
|
942
|
+
const { searchMemoryCards } = await import("./memory-cards-TQRLZI4D.js");
|
|
943
943
|
const cardResults = await searchMemoryCards(queryText, agentId, options);
|
|
944
944
|
if (cardResults.length > 0) {
|
|
945
945
|
return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
} from "./chunk-A47MXY2I.js";
|
|
4
4
|
import {
|
|
5
5
|
isGhostBehaviorRow
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TLYAEISW.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient,
|
|
9
9
|
getIdentity,
|
|
10
10
|
listIdentities,
|
|
11
11
|
updateIdentity
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-HEPR6QTL.js";
|
|
13
13
|
import {
|
|
14
14
|
atomicWriteJsonSync
|
|
15
15
|
} from "./chunk-SHIICYJW.js";
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cleanupCardsForMemories,
|
|
3
3
|
cleanupGraphLinksForMemories
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-A4DVMPYB.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveAnthropicAuth
|
|
7
7
|
} from "./chunk-VGMACSEV.js";
|
|
8
8
|
import {
|
|
9
9
|
vectorToBlob
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-H37HHX3E.js";
|
|
11
11
|
import {
|
|
12
12
|
extractKeywords,
|
|
13
13
|
keywordsToString
|
|
14
14
|
} from "./chunk-CHCA3ZM2.js";
|
|
15
15
|
import {
|
|
16
16
|
isCoordinatorName
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HEPR6QTL.js";
|
|
18
18
|
|
|
19
19
|
// src/lib/consolidation.ts
|
|
20
20
|
import { randomUUID } from "crypto";
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
activeRecipientPubKeys,
|
|
3
|
+
isGrantsMacPrimed,
|
|
4
|
+
primeGrantsMacKey,
|
|
5
|
+
warnActiveMonitoringOnce
|
|
6
|
+
} from "./chunk-B75BOKEI.js";
|
|
1
7
|
import {
|
|
2
8
|
isCrdtSyncEnabled
|
|
3
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QLFRCA6I.js";
|
|
4
10
|
import {
|
|
5
11
|
GHOST_BEHAVIOR_SQL,
|
|
6
12
|
isGhostBehaviorRow
|
|
7
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-TLYAEISW.js";
|
|
8
14
|
import {
|
|
9
15
|
decryptSyncBlob,
|
|
10
16
|
encryptSyncBlob,
|
|
11
17
|
initSyncCrypto,
|
|
12
18
|
isSyncCryptoInitialized
|
|
13
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RNAYCUNM.js";
|
|
14
20
|
import {
|
|
15
21
|
retryOnDaemonTransportError
|
|
16
22
|
} from "./chunk-UCQITDLM.js";
|
|
@@ -19,10 +25,10 @@ import {
|
|
|
19
25
|
loadEmployees,
|
|
20
26
|
registerBinSymlinks,
|
|
21
27
|
saveEmployees
|
|
22
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-HEPR6QTL.js";
|
|
23
29
|
import {
|
|
24
30
|
loadDeviceId
|
|
25
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-XACL67CS.js";
|
|
26
32
|
import {
|
|
27
33
|
EXE_AI_DIR
|
|
28
34
|
} from "./chunk-7Y5UDEVM.js";
|
|
@@ -366,7 +372,9 @@ async function cloudPush(records, maxVersion, config) {
|
|
|
366
372
|
try {
|
|
367
373
|
const json = JSON.stringify(records);
|
|
368
374
|
const compressed = compress(Buffer.from(json, "utf8"));
|
|
369
|
-
const
|
|
375
|
+
const monitoringRecipients = activeRecipientPubKeys();
|
|
376
|
+
warnActiveMonitoringOnce(monitoringRecipients);
|
|
377
|
+
const blob = encryptSyncBlob(compressed, monitoringRecipients);
|
|
370
378
|
const resp = await fetchWithRetry(`${config.endpoint}/sync/push`, {
|
|
371
379
|
method: "POST",
|
|
372
380
|
headers: {
|
|
@@ -655,13 +663,14 @@ async function cloudSync(config, options) {
|
|
|
655
663
|
try {
|
|
656
664
|
config = { ...config, endpoint: migrateEndpoint(config.endpoint) };
|
|
657
665
|
onProgress("Cloud sync", "authenticating...");
|
|
658
|
-
if (!isSyncCryptoInitialized()) {
|
|
666
|
+
if (!isSyncCryptoInitialized() || !isGrantsMacPrimed()) {
|
|
659
667
|
try {
|
|
660
668
|
const { getMasterKey } = await import("./lib/keychain.js");
|
|
661
669
|
const masterKey = await getMasterKey();
|
|
662
670
|
if (masterKey) {
|
|
663
|
-
initSyncCrypto(masterKey);
|
|
664
|
-
|
|
671
|
+
if (!isSyncCryptoInitialized()) initSyncCrypto(masterKey);
|
|
672
|
+
primeGrantsMacKey(masterKey);
|
|
673
|
+
} else if (!isSyncCryptoInitialized()) {
|
|
665
674
|
throw new Error("No master key found");
|
|
666
675
|
}
|
|
667
676
|
} catch (err) {
|
|
@@ -706,7 +715,7 @@ async function cloudSync(config, options) {
|
|
|
706
715
|
let pulled = 0;
|
|
707
716
|
if (pullResult.records.length > 0) {
|
|
708
717
|
if (shouldUseCrdtMergeForCloudSync()) {
|
|
709
|
-
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-
|
|
718
|
+
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-UJELKSNX.js");
|
|
710
719
|
initCrdtDoc();
|
|
711
720
|
importExistingMemories(
|
|
712
721
|
pullResult.records.map((rec) => ({
|
|
@@ -1092,7 +1101,7 @@ async function cloudSync(config, options) {
|
|
|
1092
1101
|
}
|
|
1093
1102
|
const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
|
|
1094
1103
|
try {
|
|
1095
|
-
const { getLatestBackup } = await import("./db-backup-
|
|
1104
|
+
const { getLatestBackup } = await import("./db-backup-DLD4QZBO.js");
|
|
1096
1105
|
const latestBackup = getLatestBackup();
|
|
1097
1106
|
if (latestBackup) {
|
|
1098
1107
|
const backupSize = statSync(latestBackup).size;
|