@askexenow/exe-os 0.9.201 → 0.9.203
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-MTJPQ57G.js → active-agent-EFWC3HGP.js} +4 -4
- package/dist/{active-agent-3MLX4YOU.js → active-agent-NXX5Z3LX.js} +4 -4
- package/dist/{agentic-ontology-HPFKQFA2.js → agentic-ontology-JS6DPKQB.js} +1 -1
- package/dist/{backfill-metadata-5INYRXJX.js → backfill-metadata-PTACRLYK.js} +5 -5
- package/dist/{background-jobs-XYVQT4HN.js → background-jobs-Q4S27FCN.js} +2 -2
- package/dist/{behaviors-TIOFWD4T.js → behaviors-WDIKLZA3.js} +4 -4
- package/dist/bin/age-ontology-load.js +2 -2
- package/dist/bin/agentic-ontology-backfill.js +7 -7
- package/dist/bin/agentic-reflection-backfill.js +8 -8
- package/dist/bin/agentic-semantic-label.js +7 -7
- package/dist/bin/backfill-conversations.js +7 -7
- package/dist/bin/backfill-responses.js +7 -7
- package/dist/bin/backfill-vectors.js +9 -9
- package/dist/bin/bulk-sync-postgres.js +8 -8
- package/dist/bin/cc-doctor.js +3 -3
- package/dist/bin/cleanup-stale-review-tasks.js +12 -12
- package/dist/bin/cli.js +18 -18
- package/dist/bin/exe-agent-config.js +4 -4
- package/dist/bin/exe-agent.js +5 -5
- package/dist/bin/exe-assign.js +9 -9
- package/dist/bin/exe-boot.js +19 -19
- package/dist/bin/exe-call.js +5 -5
- package/dist/bin/exe-cloud.js +7 -7
- package/dist/bin/exe-dispatch.js +12 -12
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +8 -8
- package/dist/bin/exe-forget.js +7 -7
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +3 -3
- package/dist/bin/exe-heartbeat.js +12 -12
- package/dist/bin/exe-kill.js +15 -15
- package/dist/bin/exe-launch-agent.js +12 -12
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-pending-messages.js +13 -13
- package/dist/bin/exe-pending-notifications.js +12 -12
- package/dist/bin/exe-pending-reviews.js +12 -12
- package/dist/bin/exe-rename.js +5 -5
- package/dist/bin/exe-review.js +14 -14
- package/dist/bin/exe-search.js +6 -6
- package/dist/bin/exe-session-cleanup.js +16 -16
- package/dist/bin/exe-settings.js +7 -7
- package/dist/bin/exe-start-codex.js +12 -12
- package/dist/bin/exe-start-opencode.js +9 -9
- package/dist/bin/exe-status.js +13 -13
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +4 -4
- package/dist/bin/git-sweep.js +12 -12
- package/dist/bin/graph-backfill.js +6 -6
- package/dist/bin/graph-export.js +6 -6
- package/dist/bin/import-history.js +6 -6
- package/dist/bin/install.js +7 -7
- package/dist/bin/intercom-check.js +5 -7
- package/dist/bin/orchestration-metrics.js +24 -11
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
- package/dist/bin/scan-tasks.js +12 -12
- package/dist/bin/setup.js +2 -2
- package/dist/bin/shard-migrate.js +6 -6
- package/dist/bin/stack-update.js +3 -3
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{branding-YUEILP4B.js → branding-23ZRRPCE.js} +1 -1
- package/dist/{capacity-monitor-4VPGKKQH.js → capacity-monitor-TGSIL7W4.js} +13 -13
- package/dist/{catchup-brief-K2A2NCMS.js → catchup-brief-ABL4NSAE.js} +14 -14
- package/dist/{chunk-OOTPPSOX.js → chunk-25K6KNZ5.js} +7 -7
- package/dist/{chunk-XZCSY5ID.js → chunk-3GFR2TX6.js} +1 -1
- package/dist/{chunk-B5N4DMXM.js → chunk-3K2BCD5Y.js} +4 -4
- package/dist/{chunk-UCDMLKE5.js → chunk-3WMXVABU.js} +1 -1
- package/dist/{chunk-CTOQYEKJ.js → chunk-54GARVEX.js} +1 -1
- package/dist/{chunk-AVHQPIJS.js → chunk-5EW4GKGZ.js} +1 -1
- package/dist/{chunk-AIOJFN5D.js → chunk-5POKNLFV.js} +2 -2
- package/dist/{chunk-TXWQPL2U.js → chunk-5YDHBZCO.js} +1 -1
- package/dist/{chunk-MBFVJSSH.js → chunk-6FJ2TJYB.js} +2 -2
- package/dist/{chunk-A4NG62X6.js → chunk-6H6Q4MJC.js} +1 -1
- package/dist/{chunk-H2CFBUGF.js → chunk-6RX2XEET.js} +1 -1
- package/dist/{chunk-MVMMULOJ.js → chunk-72DJ42IE.js} +1 -1
- package/dist/{chunk-YLBBPZO3.js → chunk-7SY5JOLR.js} +4 -4
- package/dist/{chunk-66LJM3KL.js → chunk-AH6MV6CC.js} +3 -3
- package/dist/{chunk-HF7Y4UZO.js → chunk-AUPGTF7I.js} +2 -2
- package/dist/{chunk-MYVI6V7L.js → chunk-BGOQFJ2H.js} +3 -3
- package/dist/{chunk-XASY3SCH.js → chunk-BQ4U2SYC.js} +1 -1
- package/dist/{chunk-B4K4EJH7.js → chunk-BV3L2S54.js} +1 -1
- package/dist/{chunk-NC3NOZHH.js → chunk-BYHFW5CT.js} +1 -1
- package/dist/{chunk-7BNZUXFJ.js → chunk-CAHJ72CQ.js} +1 -1
- package/dist/{chunk-LT26OOIB.js → chunk-CGM6BIK3.js} +1 -1
- package/dist/{chunk-DXFNVS44.js → chunk-D4B6SVEC.js} +1 -1
- package/dist/{chunk-EDFYSZ4U.js → chunk-DAFEIA2M.js} +72 -72
- package/dist/{chunk-3V7D5SCM.js → chunk-DEGQESR7.js} +3 -3
- package/dist/{chunk-T4EQ5SKI.js → chunk-E66FQ7IN.js} +1 -1
- package/dist/{chunk-Y35YW6EL.js → chunk-EF4PA3TY.js} +2 -2
- package/dist/{chunk-C2YR6BZY.js → chunk-ETHQJXO3.js} +1 -1
- package/dist/{chunk-I5IWVRZY.js → chunk-FFECDA24.js} +2 -2
- package/dist/{chunk-D42R5MZU.js → chunk-FLLCEGSL.js} +2 -2
- package/dist/{chunk-TRQJQYG5.js → chunk-FMI7SCZJ.js} +1 -1
- package/dist/{chunk-CSTJQDOE.js → chunk-G4QFC45N.js} +1 -1
- package/dist/{chunk-PLNYW6PA.js → chunk-GCMXBQ7Y.js} +1 -1
- package/dist/{chunk-T5YT64SZ.js → chunk-GD4VXNXO.js} +1 -1
- package/dist/{chunk-POS4PUM7.js → chunk-GPK2WJXA.js} +1 -1
- package/dist/{chunk-SXTHSDJQ.js → chunk-GPNUPCTZ.js} +6 -6
- package/dist/{chunk-LPPCJZVI.js → chunk-GQYIMXUW.js} +2 -2
- package/dist/{chunk-GKKMANTG.js → chunk-GZLGB72W.js} +2 -2
- package/dist/{chunk-RVSGXGWG.js → chunk-HHECGHFW.js} +1 -1
- package/dist/{chunk-MLQFGVFJ.js → chunk-HXNTQP4B.js} +1 -1
- package/dist/{chunk-WI6BQ4T3.js → chunk-HXYL4QX6.js} +2 -2
- package/dist/{chunk-VBKEAVEU.js → chunk-IGRQE5Y5.js} +2 -2
- package/dist/{chunk-MSUJ3UBS.js → chunk-IXFE5R6T.js} +5 -5
- package/dist/{chunk-QR7CQJVJ.js → chunk-JUTI2DXY.js} +1 -1
- package/dist/{chunk-YCEJCFU5.js → chunk-K3O4MWMS.js} +26 -2
- package/dist/{chunk-GSV24ZVZ.js → chunk-K62M5FIM.js} +4 -4
- package/dist/{chunk-KGSFR6V3.js → chunk-KCWIOR55.js} +1 -1
- package/dist/{chunk-BCTU72UR.js → chunk-LIHR5DQF.js} +1 -1
- package/dist/{chunk-CMFLJNP6.js → chunk-LMSRF47U.js} +1 -1
- package/dist/{chunk-ZE36U2GK.js → chunk-MJNI3S5H.js} +2 -2
- package/dist/{chunk-6NLHVC6U.js → chunk-O5RJH6GU.js} +1 -1
- package/dist/{chunk-CBAW3YFB.js → chunk-OUHHUKPC.js} +1 -1
- package/dist/{chunk-IAPOGI6M.js → chunk-P4JQGT4Q.js} +2 -2
- package/dist/{chunk-RC35BWOO.js → chunk-PVVA5SY5.js} +12 -2
- package/dist/{chunk-MXLB2M2O.js → chunk-QLKRYO7O.js} +21 -11
- package/dist/{chunk-J73N5EJ6.js → chunk-RAV23DU2.js} +2 -2
- package/dist/{chunk-J2TSYNVM.js → chunk-RJCZY4BY.js} +86 -21
- package/dist/{chunk-CCYOB56Q.js → chunk-SN6Z3CBF.js} +3 -3
- package/dist/{chunk-P7QVZZBS.js → chunk-SPMVTZ7Z.js} +3 -3
- package/dist/{chunk-DFQY6G4L.js → chunk-SZDSQ3AW.js} +6 -6
- package/dist/{chunk-4WQIB264.js → chunk-USQF2GGF.js} +8 -7
- package/dist/{chunk-7VU6CZCK.js → chunk-UXD5KOND.js} +3 -3
- package/dist/{chunk-Q3FTA4GX.js → chunk-UY6RQK5F.js} +2 -2
- package/dist/{chunk-J6CSL7AY.js → chunk-WGMHQVGX.js} +35 -8
- package/dist/{chunk-K7XLE7UI.js → chunk-WILNSHND.js} +82 -7
- package/dist/{chunk-46Q3LLXC.js → chunk-WSZS2KVV.js} +2 -2
- package/dist/{chunk-4GXRETYL.js → chunk-WXW3XGWX.js} +4 -0
- package/dist/{chunk-GUCKE3GK.js → chunk-X4QO5DXP.js} +1 -1
- package/dist/{chunk-DH65L4XI.js → chunk-XHTOAJYD.js} +1 -1
- package/dist/{chunk-M6S7HVFP.js → chunk-XWM23YJO.js} +5 -5
- package/dist/{chunk-AJN3W6XB.js → chunk-XXHDXAZV.js} +1 -1
- package/dist/{chunk-7LC5HGA3.js → chunk-Y2W54BET.js} +9 -9
- package/dist/{chunk-7ZIRLFIF.js → chunk-ZGQH3V2F.js} +39 -6
- package/dist/{chunk-F7ITFLVR.js → chunk-ZGUSJ6BG.js} +1 -1
- package/dist/{chunk-EJM2YUF4.js → chunk-ZQMOF6E7.js} +1 -1
- package/dist/{co-occurrence-J5WOOCWD.js → co-occurrence-A2SJL5AH.js} +3 -3
- package/dist/{code-context-index-JPQDRTTX.js → code-context-index-DOKQN2Q5.js} +4 -4
- package/dist/{conversation-wiki-populator-YMNIDI4F.js → conversation-wiki-populator-LW3EF62R.js} +1 -1
- package/dist/{crdt-sync-NGSP5WQE.js → crdt-sync-SGAW6DJQ.js} +1 -1
- package/dist/{crm-webhook-ZQUDBLHY.js → crm-webhook-FBENY6FW.js} +2 -2
- package/dist/{cto-delegation-gate-A77BCIAB.js → cto-delegation-gate-A53RLTJZ.js} +11 -11
- package/dist/{daemon-auth-H4EJ7KAQ.js → daemon-auth-PQFXH3J2.js} +2 -2
- package/dist/{daemon-orchestration-AVB5PPC5.js → daemon-orchestration-3U3XXFG7.js} +14 -14
- package/dist/{db-backup-7UOCAPHO.js → db-backup-6IUVHX7Y.js} +2 -2
- package/dist/{exe-drift-BUVZV7DK.js → exe-drift-3OUOHWAI.js} +4 -4
- package/dist/{exe-export-QJEIYCKB.js → exe-export-AFXTJ63F.js} +6 -6
- package/dist/{exe-import-SGSX3QML.js → exe-import-QRZBTBBG.js} +6 -6
- package/dist/{exe-key-Y7DAEMSK.js → exe-key-BXN7WPOX.js} +3 -3
- package/dist/{exe-org-FEX66BTG.js → exe-org-G7IUSBCY.js} +2 -2
- package/dist/{fast-db-init-UTA7SHEE.js → fast-db-init-YVJD4JT2.js} +1 -1
- package/dist/gateway/index.js +11 -11
- package/dist/{git-staleness-WTDE4H4D.js → git-staleness-DBFCOX65.js} +3 -3
- package/dist/{git-task-sweep-SHTK3F7G.js → git-task-sweep-O5CH3MKA.js} +12 -12
- package/dist/{global-procedures-K3B3GTHA.js → global-procedures-SL2TTCED.js} +4 -4
- package/dist/{graph-auto-extract-ZCVUFK6M.js → graph-auto-extract-JGNJ3BB7.js} +3 -3
- package/dist/{hook-integrity-P3Z3HKMR.js → hook-integrity-MCY73ZZL.js} +1 -1
- package/dist/hooks/bug-report-worker.js +13 -13
- package/dist/hooks/codex-stop-task-finalizer.js +13 -13
- package/dist/hooks/commit-complete.js +14 -14
- package/dist/hooks/error-recall.js +7 -7
- package/dist/hooks/exe-heartbeat-hook.js +4 -4
- package/dist/hooks/ingest-worker.js +5 -5
- package/dist/hooks/ingest.js +12 -12
- package/dist/hooks/instructions-loaded.js +5 -5
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +5 -5
- package/dist/hooks/post-compact.js +13 -13
- package/dist/hooks/post-tool-combined.js +5 -5
- package/dist/hooks/pre-compact.js +18 -18
- package/dist/hooks/pre-tool-use.js +17 -17
- package/dist/hooks/prompt-submit.js +23 -23
- package/dist/hooks/session-end.js +35 -21
- package/dist/hooks/session-start.js +9 -9
- package/dist/hooks/stop.js +20 -20
- package/dist/hooks/subagent-stop.js +13 -13
- package/dist/hooks/summary-worker.js +21 -21
- package/dist/index.js +20 -20
- package/dist/{installer-D47RNEJB.js → installer-5FI6CX62.js} +6 -6
- package/dist/{installer-WVQDUS7O.js → installer-HNOVAUW6.js} +6 -6
- package/dist/{installer-YBYJZLUT.js → installer-TAPAEWRV.js} +6 -6
- package/dist/{key-backup-status-KQUGSNVJ.js → key-backup-status-JTPVS5K2.js} +1 -1
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +6 -6
- package/dist/lib/config.js +3 -1
- package/dist/lib/consolidation.js +6 -6
- package/dist/lib/database.js +3 -3
- package/dist/lib/db-daemon-client.js +3 -3
- package/dist/lib/db.js +3 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +4 -4
- package/dist/lib/employee-templates.js +5 -5
- package/dist/lib/employees.js +3 -3
- package/dist/lib/exe-daemon-client.js +3 -3
- package/dist/lib/exe-daemon.js +55 -39
- package/dist/lib/hybrid-search.js +6 -6
- package/dist/lib/identity.js +3 -3
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +12 -12
- package/dist/lib/reminders.js +4 -4
- package/dist/lib/schedules.js +6 -6
- package/dist/lib/skill-learning.js +5 -5
- package/dist/lib/store.js +5 -5
- package/dist/lib/task-router.js +4 -4
- package/dist/lib/tasks.js +12 -12
- package/dist/lib/tmux-routing.js +11 -11
- package/dist/lib/tmux-transport.js +1 -1
- package/dist/lib/token-spend.js +4 -4
- package/dist/lib/transport.js +2 -2
- package/dist/{license-gate-R5IDWABY.js → license-gate-GJYKYTFK.js} +3 -3
- package/dist/mcp/register-tools.js +60 -60
- package/dist/mcp/server.js +62 -62
- package/dist/mcp/tools/complete-reminder.js +5 -5
- package/dist/mcp/tools/create-reminder.js +5 -5
- package/dist/mcp/tools/create-task.js +14 -14
- package/dist/mcp/tools/deactivate-behavior.js +6 -6
- package/dist/mcp/tools/list-reminders.js +5 -5
- package/dist/mcp/tools/list-tasks.js +14 -14
- package/dist/mcp/tools/send-message.js +14 -14
- package/dist/mcp/tools/update-task.js +13 -13
- package/dist/{mcp-http-config-DWN2POKM.js → mcp-http-config-6UAI2FAV.js} +4 -4
- package/dist/{memory-cards-VIKEUPGO.js → memory-cards-PVPUQ7MX.js} +3 -3
- package/dist/{memory-graph-extractor-OP2BSF43.js → memory-graph-extractor-RP7ZXDTE.js} +4 -4
- package/dist/{memory-poisoning-defense-EKMAAXMH.js → memory-poisoning-defense-DDBUHHGB.js} +3 -3
- package/dist/{memory-queue-2SHTE6GU.js → memory-queue-WM4BXLSR.js} +2 -2
- package/dist/{memory-queue-client-XCBQIT3T.js → memory-queue-client-BKEAVZHZ.js} +5 -5
- package/dist/{memory-reflection-AAST2U2M.js → memory-reflection-HLR26FXG.js} +3 -3
- package/dist/{notifications-SWILJ3AV.js → notifications-GHNYYITD.js} +11 -11
- package/dist/orchestration-events-2SVPXMK2.js +20 -0
- package/dist/{orchestration-phase-D3PNCSUY.js → orchestration-phase-VFGBKPDJ.js} +2 -2
- package/dist/{orchestrator-L6OFTLK5.js → orchestrator-3BDZ6OUC.js} +13 -13
- package/dist/{plan-limits-J2BJEBN6.js → plan-limits-QBNFIU45.js} +5 -5
- package/dist/{projection-worker-QPE2JIKS.js → projection-worker-B7HHFYEG.js} +3 -3
- package/dist/{push-notifications-VJZFCUFZ.js → push-notifications-ONUX3NPQ.js} +2 -2
- package/dist/{reranker-342RISOC.js → reranker-B3BOGR3A.js} +2 -2
- package/dist/{review-polling-TKQXLTIA.js → review-polling-RUXU45AK.js} +12 -12
- package/dist/runtime/index.js +14 -14
- package/dist/{session-events-OPOXDEPH.js → session-events-ICZPUGJN.js} +12 -12
- package/dist/{session-kill-telemetry-GBNUQABY.js → session-kill-telemetry-OGFLFTYX.js} +4 -4
- package/dist/{session-scope-J2ODEL37.js → session-scope-UJI35BLD.js} +11 -11
- package/dist/{setup-wizard-FQBIZQWP.js → setup-wizard-M6ZZ2VNM.js} +2 -2
- package/dist/{shard-manager-GWMFNY2I.js → shard-manager-4MU4SQ2F.js} +2 -2
- package/dist/{skill-refinement-GYK7FZCH.js → skill-refinement-WZL35CMY.js} +3 -3
- package/dist/{stack-update-Q2WQOJTS.js → stack-update-JASS27LK.js} +3 -3
- package/dist/{task-enforcement-IPXSAJA5.js → task-enforcement-AYHKGR45.js} +11 -11
- package/dist/{task-scope-JREB33TH.js → task-scope-EYAOY6YX.js} +11 -11
- package/dist/{tasks-crud-V3IQ5GLV.js → tasks-crud-K3UGPCPT.js} +11 -11
- package/dist/{tasks-review-PEEMO6RY.js → tasks-review-J6LTVVO5.js} +11 -11
- package/dist/{token-budget-ES3IEZPJ.js → token-budget-XU2QZEWX.js} +3 -3
- package/dist/{tool-capability-index-6ICPKH5O.js → tool-capability-index-YRJJEBIK.js} +1 -1
- package/dist/{tool-telemetry-JVQX5FJV.js → tool-telemetry-OE57ERK7.js} +1 -1
- package/dist/tui/App.js +24 -24
- package/dist/{tui-data-NJUK2RNW.js → tui-data-32OEC3DH.js} +11 -11
- package/dist/{worker-gate-4KF5ZRWT.js → worker-gate-UIGQCEUE.js} +2 -2
- package/dist/{workflow-engine-DHMTGUAO.js → workflow-engine-IY7KO7DU.js} +2 -2
- package/package.json +1 -1
- package/release-notes.json +77 -77
- /package/dist/{chunk-XJTHRKML.js → chunk-IENYOYZ6.js} +0 -0
- /package/dist/{chunk-ZOX6DPP3.js → chunk-L63IOJ5N.js} +0 -0
- /package/dist/{chunk-5QVJ5TBF.js → chunk-LJA6RQ3L.js} +0 -0
- /package/dist/{chunk-TFV7MDCX.js → chunk-Q3MRTJLA.js} +0 -0
- /package/dist/{chunk-MYESASW3.js → chunk-QQN7MHQG.js} +0 -0
- /package/dist/{chunk-HGU4YCR3.js → chunk-RH5NYRQH.js} +0 -0
- /package/dist/{chunk-HIECEYMN.js → chunk-X2BTDYHZ.js} +0 -0
- /package/dist/{core-memory-B7VPSYUP.js → core-memory-VZ4YJVMA.js} +0 -0
- /package/dist/{entity-boost-QXR3LCYV.js → entity-boost-TM7ETI64.js} +0 -0
- /package/dist/{message-queue-client-CUCAQME6.js → message-queue-client-TFMDQXJ7.js} +0 -0
- /package/dist/{oauth-server-4A37UP5W.js → oauth-server-ZD2RNARD.js} +0 -0
- /package/dist/{webhook-pipe-VSLEA26V.js → webhook-pipe-TSOX5K7U.js} +0 -0
- /package/dist/{wiki-acl-UOSBRX3O.js → wiki-acl-NUUPHYWC.js} +0 -0
- /package/dist/{wiki-client-S6JKY7GG.js → wiki-client-2JLYCEWY.js} +0 -0
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
} from "./chunk-64WZEXXA.js";
|
|
10
10
|
import {
|
|
11
11
|
getTransport
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5YDHBZCO.js";
|
|
13
13
|
import {
|
|
14
14
|
listTmuxSessions
|
|
15
15
|
} from "./chunk-GZIAQYGI.js";
|
|
16
16
|
import {
|
|
17
17
|
recordOrchestrationEventBestEffort
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ZGQH3V2F.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_PROVIDER,
|
|
21
21
|
PROVIDER_TABLE,
|
|
@@ -26,14 +26,14 @@ import {
|
|
|
26
26
|
import {
|
|
27
27
|
getAgentRuntime,
|
|
28
28
|
normalizeCcModelName
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-6RX2XEET.js";
|
|
30
30
|
import {
|
|
31
31
|
RUNTIME_TABLE
|
|
32
32
|
} from "./chunk-NGP6LSV2.js";
|
|
33
33
|
import {
|
|
34
34
|
PlanLimitError,
|
|
35
35
|
assertEmployeeLimitSync
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-SN6Z3CBF.js";
|
|
37
37
|
import {
|
|
38
38
|
getSessionKey
|
|
39
39
|
} from "./chunk-CVYC6DUW.js";
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
} from "./chunk-MP2AFCGL.js";
|
|
49
49
|
import {
|
|
50
50
|
ensureAgentSymlink
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-HXNTQP4B.js";
|
|
52
52
|
import {
|
|
53
53
|
expandDualPrefixTools
|
|
54
54
|
} from "./chunk-HYZV25LY.js";
|
|
@@ -60,13 +60,13 @@ import {
|
|
|
60
60
|
isCoordinatorName,
|
|
61
61
|
loadEmployees,
|
|
62
62
|
loadEmployeesSync
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-K3O4MWMS.js";
|
|
64
64
|
import {
|
|
65
65
|
loadDeviceId
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-72DJ42IE.js";
|
|
67
67
|
import {
|
|
68
68
|
EXE_AI_DIR
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-WXW3XGWX.js";
|
|
70
70
|
import {
|
|
71
71
|
atomicWriteJsonSync,
|
|
72
72
|
atomicWriteSync
|
|
@@ -199,8 +199,10 @@ async function writeCheckpoint(input) {
|
|
|
199
199
|
last_checkpoint_at: now
|
|
200
200
|
};
|
|
201
201
|
const result = await client.execute({
|
|
202
|
-
sql: `UPDATE tasks SET checkpoint = ?, checkpoint_count = checkpoint_count + 1, updated_at =
|
|
203
|
-
|
|
202
|
+
sql: `UPDATE tasks SET checkpoint = ?, checkpoint_count = checkpoint_count + 1, updated_at = ?,
|
|
203
|
+
last_heartbeat_at = ?, lease_expires_at = datetime(?, '+30 minutes')
|
|
204
|
+
WHERE id = ?`,
|
|
205
|
+
args: [JSON.stringify(checkpoint), now, now, now, taskId]
|
|
204
206
|
});
|
|
205
207
|
if (result.rowsAffected === 0) {
|
|
206
208
|
throw new Error(`Checkpoint write failed: task ${taskId} not found`);
|
|
@@ -210,6 +212,15 @@ async function writeCheckpoint(input) {
|
|
|
210
212
|
args: [taskId]
|
|
211
213
|
});
|
|
212
214
|
const checkpointCount = Number(countResult.rows[0]?.checkpoint_count ?? 1);
|
|
215
|
+
recordOrchestrationEventBestEffort({
|
|
216
|
+
eventType: "task.checkpoint",
|
|
217
|
+
source: "tasks-crud.writeCheckpoint",
|
|
218
|
+
taskId,
|
|
219
|
+
agentId: String(row.assigned_to ?? "unknown"),
|
|
220
|
+
sessionScope: row.session_scope ? String(row.session_scope) : null,
|
|
221
|
+
projectName: row.project_name ? String(row.project_name) : null,
|
|
222
|
+
payload: { step: input.step, checkpointCount }
|
|
223
|
+
});
|
|
213
224
|
return { checkpointCount };
|
|
214
225
|
}
|
|
215
226
|
function extractParentFromContext(contextBody) {
|
|
@@ -363,7 +374,7 @@ async function createTaskCore(input) {
|
|
|
363
374
|
if (isCoordinatorSession) {
|
|
364
375
|
earlySessionScope = resolved;
|
|
365
376
|
} else {
|
|
366
|
-
const { getSessionProject } = await import("./session-scope-
|
|
377
|
+
const { getSessionProject } = await import("./session-scope-UJI35BLD.js");
|
|
367
378
|
const sessionProject = getSessionProject(resolved);
|
|
368
379
|
if (sessionProject && sessionProject !== input.projectName) {
|
|
369
380
|
scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
|
|
@@ -812,7 +823,7 @@ async function updateTaskStatus(input) {
|
|
|
812
823
|
} catch {
|
|
813
824
|
}
|
|
814
825
|
try {
|
|
815
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
826
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-GHNYYITD.js");
|
|
816
827
|
await writeNotification2({
|
|
817
828
|
agentId: reviewer,
|
|
818
829
|
agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
|
|
@@ -898,11 +909,16 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
898
909
|
}
|
|
899
910
|
if (input.status === "in_progress") {
|
|
900
911
|
const tmuxSession = process.env.TMUX_PANE ?? process.env.MY_TMUX_SESSION ?? "unknown";
|
|
912
|
+
const claimAgent = process.env.AGENT_ID ?? String(row.assigned_to ?? "unknown");
|
|
913
|
+
const leaseMinutes = 30;
|
|
901
914
|
const claim = await client.execute({
|
|
902
915
|
sql: `UPDATE tasks
|
|
903
|
-
SET status = 'in_progress', assigned_tmux = ?, updated_at =
|
|
916
|
+
SET status = 'in_progress', assigned_tmux = ?, updated_at = ?,
|
|
917
|
+
claimed_by = ?, claimed_at = ?, last_heartbeat_at = ?,
|
|
918
|
+
lease_expires_at = datetime(?, '+${leaseMinutes} minutes'),
|
|
919
|
+
claim_count = COALESCE(claim_count, 0) + 1
|
|
904
920
|
WHERE id = ? AND status = 'open'`,
|
|
905
|
-
args: [tmuxSession, now, taskId]
|
|
921
|
+
args: [tmuxSession, now, claimAgent, now, now, now, taskId]
|
|
906
922
|
});
|
|
907
923
|
if (claim.rowsAffected === 0) {
|
|
908
924
|
const current = await client.execute({
|
|
@@ -919,12 +935,16 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
919
935
|
`
|
|
920
936
|
);
|
|
921
937
|
await client.execute({
|
|
922
|
-
sql: "UPDATE tasks SET status = 'open', assigned_tmux = NULL, updated_at = ? WHERE id = ?",
|
|
938
|
+
sql: "UPDATE tasks SET status = 'open', assigned_tmux = NULL, claimed_by = NULL, claimed_at = NULL, last_heartbeat_at = NULL, lease_expires_at = NULL, updated_at = ? WHERE id = ?",
|
|
923
939
|
args: [now, taskId]
|
|
924
940
|
});
|
|
925
941
|
const retried = await client.execute({
|
|
926
|
-
sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at =
|
|
927
|
-
|
|
942
|
+
sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at = ?,
|
|
943
|
+
claimed_by = ?, claimed_at = ?, last_heartbeat_at = ?,
|
|
944
|
+
lease_expires_at = datetime(?, '+${leaseMinutes} minutes'),
|
|
945
|
+
claim_count = COALESCE(claim_count, 0) + 1
|
|
946
|
+
WHERE id = ? AND status = 'open'`,
|
|
947
|
+
args: [tmuxSession, now, claimAgent, now, now, now, taskId]
|
|
928
948
|
});
|
|
929
949
|
if (retried.rowsAffected > 0) {
|
|
930
950
|
try {
|
|
@@ -964,8 +984,12 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
964
984
|
`
|
|
965
985
|
);
|
|
966
986
|
await client.execute({
|
|
967
|
-
sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at =
|
|
968
|
-
|
|
987
|
+
sql: `UPDATE tasks SET status = 'in_progress', assigned_tmux = ?, updated_at = ?,
|
|
988
|
+
claimed_by = ?, claimed_at = ?, last_heartbeat_at = ?,
|
|
989
|
+
lease_expires_at = datetime(?, '+${leaseMinutes} minutes'),
|
|
990
|
+
claim_count = COALESCE(claim_count, 0) + 1
|
|
991
|
+
WHERE id = ?`,
|
|
992
|
+
args: [tmuxSession, now, claimAgent, now, now, now, taskId]
|
|
969
993
|
});
|
|
970
994
|
try {
|
|
971
995
|
await writeCheckpoint({
|
|
@@ -1090,13 +1114,45 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
1090
1114
|
result: "closed"
|
|
1091
1115
|
});
|
|
1092
1116
|
}
|
|
1117
|
+
if (input.status === "blocked" && previousStatus !== "blocked") {
|
|
1118
|
+
recordOrchestrationEventBestEffort({
|
|
1119
|
+
eventType: "task.blocked",
|
|
1120
|
+
source: "tasks-crud.updateTaskStatus",
|
|
1121
|
+
taskId,
|
|
1122
|
+
agentId: eventAgentId,
|
|
1123
|
+
sessionScope: eventSessionScope,
|
|
1124
|
+
projectName: eventProjectName,
|
|
1125
|
+
payload: { blockedBy: row.blocked_by ? String(row.blocked_by) : null }
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
if (previousStatus === "blocked" && input.status !== "blocked") {
|
|
1129
|
+
recordOrchestrationEventBestEffort({
|
|
1130
|
+
eventType: "task.unblocked",
|
|
1131
|
+
source: "tasks-crud.updateTaskStatus",
|
|
1132
|
+
taskId,
|
|
1133
|
+
agentId: eventAgentId,
|
|
1134
|
+
sessionScope: eventSessionScope,
|
|
1135
|
+
projectName: eventProjectName,
|
|
1136
|
+
result: input.status
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
if (input.status === "cancelled") {
|
|
1140
|
+
recordOrchestrationEventBestEffort({
|
|
1141
|
+
eventType: "task.cancelled",
|
|
1142
|
+
source: "tasks-crud.updateTaskStatus",
|
|
1143
|
+
taskId,
|
|
1144
|
+
agentId: eventAgentId,
|
|
1145
|
+
sessionScope: eventSessionScope,
|
|
1146
|
+
projectName: eventProjectName
|
|
1147
|
+
});
|
|
1148
|
+
}
|
|
1093
1149
|
try {
|
|
1094
1150
|
await client.execute("PRAGMA wal_checkpoint(PASSIVE)");
|
|
1095
1151
|
} catch {
|
|
1096
1152
|
}
|
|
1097
1153
|
if (input.status === "done" || input.status === "needs_review") {
|
|
1098
1154
|
try {
|
|
1099
|
-
const { incrementSkillSuccess } = await import("./skill-refinement-
|
|
1155
|
+
const { incrementSkillSuccess } = await import("./skill-refinement-WZL35CMY.js");
|
|
1100
1156
|
await incrementSkillSuccess(
|
|
1101
1157
|
String(row.assigned_to),
|
|
1102
1158
|
row.project_name ? String(row.project_name) : null
|
|
@@ -1658,6 +1714,15 @@ async function createReviewForCompletedTask(row, result, _baseDir, now) {
|
|
|
1658
1714
|
reviewer,
|
|
1659
1715
|
timestamp: now
|
|
1660
1716
|
});
|
|
1717
|
+
recordOrchestrationEventBestEffort({
|
|
1718
|
+
eventType: "review.created",
|
|
1719
|
+
source: "tasks-review.annotateForReview",
|
|
1720
|
+
taskId: originalTaskId,
|
|
1721
|
+
agentId: agent,
|
|
1722
|
+
reviewer,
|
|
1723
|
+
sessionScope: row.session_scope ? String(row.session_scope) : null,
|
|
1724
|
+
projectName: row.project_name ? String(row.project_name) : null
|
|
1725
|
+
});
|
|
1661
1726
|
await writeNotification({
|
|
1662
1727
|
agentId: agent,
|
|
1663
1728
|
agentRole: String(row.assigned_to),
|
|
@@ -2174,7 +2239,7 @@ async function verifyPaneAtCapacity(sessionName) {
|
|
|
2174
2239
|
reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
|
|
2175
2240
|
};
|
|
2176
2241
|
}
|
|
2177
|
-
const { isAtCapacity } = await import("./capacity-monitor-
|
|
2242
|
+
const { isAtCapacity } = await import("./capacity-monitor-TGSIL7W4.js");
|
|
2178
2243
|
if (!isAtCapacity(pane)) {
|
|
2179
2244
|
return {
|
|
2180
2245
|
atCapacity: false,
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
getClient,
|
|
4
4
|
isInitialized,
|
|
5
5
|
loadEmployees
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-K3O4MWMS.js";
|
|
7
7
|
import {
|
|
8
8
|
PLAN_LIMITS,
|
|
9
9
|
checkLicense,
|
|
10
10
|
isFeatureAllowed
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-72DJ42IE.js";
|
|
12
12
|
import {
|
|
13
13
|
EXE_AI_DIR
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-WXW3XGWX.js";
|
|
15
15
|
|
|
16
16
|
// src/lib/plan-limits.ts
|
|
17
17
|
import { readFileSync, existsSync } from "fs";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
deactivateBehavior
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LIHR5DQF.js";
|
|
4
4
|
import {
|
|
5
5
|
getActiveAgent
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UY6RQK5F.js";
|
|
7
7
|
import {
|
|
8
8
|
canCoordinate,
|
|
9
9
|
getClient
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-K3O4MWMS.js";
|
|
11
11
|
|
|
12
12
|
// src/mcp/tools/deactivate-behavior.ts
|
|
13
13
|
import { z } from "zod";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isCrdtSyncEnabled
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LJA6RQ3L.js";
|
|
4
4
|
import {
|
|
5
5
|
decryptSyncBlob,
|
|
6
6
|
encryptSyncBlob,
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
loadEmployees,
|
|
13
13
|
registerBinSymlinks,
|
|
14
14
|
saveEmployees
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-K3O4MWMS.js";
|
|
16
16
|
import {
|
|
17
17
|
loadDeviceId
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-72DJ42IE.js";
|
|
19
19
|
import {
|
|
20
20
|
EXE_AI_DIR
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-WXW3XGWX.js";
|
|
22
22
|
import {
|
|
23
23
|
atomicWriteJsonSync,
|
|
24
24
|
atomicWriteSync,
|
|
@@ -489,7 +489,7 @@ async function cloudSync(config) {
|
|
|
489
489
|
let pulled = 0;
|
|
490
490
|
if (pullResult.records.length > 0) {
|
|
491
491
|
if (isCrdtSyncEnabled()) {
|
|
492
|
-
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-
|
|
492
|
+
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-SGAW6DJQ.js");
|
|
493
493
|
initCrdtDoc();
|
|
494
494
|
importExistingMemories(
|
|
495
495
|
pullResult.records.map((rec) => ({
|
|
@@ -910,7 +910,7 @@ async function cloudSync(config) {
|
|
|
910
910
|
}
|
|
911
911
|
const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
|
|
912
912
|
try {
|
|
913
|
-
const { getLatestBackup } = await import("./db-backup-
|
|
913
|
+
const { getLatestBackup } = await import("./db-backup-6IUVHX7Y.js");
|
|
914
914
|
const latestBackup = getLatestBackup();
|
|
915
915
|
if (latestBackup) {
|
|
916
916
|
const backupSize = statSync(latestBackup).size;
|
|
@@ -3,24 +3,24 @@ import {
|
|
|
3
3
|
} from "./chunk-MLXJ5EZG.js";
|
|
4
4
|
import {
|
|
5
5
|
createTask
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-WGMHQVGX.js";
|
|
7
7
|
import {
|
|
8
8
|
getActiveAgent
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UY6RQK5F.js";
|
|
10
10
|
import {
|
|
11
11
|
ensureEmployee,
|
|
12
12
|
logTaskDispatch,
|
|
13
13
|
resolveExeSession
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RJCZY4BY.js";
|
|
15
15
|
import {
|
|
16
16
|
getLicenseSync
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-SN6Z3CBF.js";
|
|
18
18
|
import {
|
|
19
19
|
getAgentContext
|
|
20
20
|
} from "./chunk-GJV3WDWM.js";
|
|
21
21
|
import {
|
|
22
22
|
isCoordinatorName
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-K3O4MWMS.js";
|
|
24
24
|
|
|
25
25
|
// src/mcp/tools/create-task.ts
|
|
26
26
|
import { z } from "zod";
|
|
@@ -33,7 +33,8 @@ async function resolveProjectDir(projectName, callerSession) {
|
|
|
33
33
|
try {
|
|
34
34
|
const { listSessions } = await import("./lib/session-registry.js");
|
|
35
35
|
const sessions = listSessions();
|
|
36
|
-
const
|
|
36
|
+
const coordName = callerSession.includes("-") ? callerSession.slice(callerSession.indexOf("-") + 1) : callerSession;
|
|
37
|
+
const coordSession = sessions.find((s) => s.windowName === coordName) ?? sessions.find((s) => s.windowName === callerSession);
|
|
37
38
|
if (coordSession?.projectDir && existsSync(coordSession.projectDir)) {
|
|
38
39
|
const dirBasename = (await import("path")).basename(coordSession.projectDir).toLowerCase();
|
|
39
40
|
const normalizedProject = projectName.toLowerCase();
|
|
@@ -208,7 +209,7 @@ function registerCreateTask(server) {
|
|
|
208
209
|
let projectConflictOpts = {};
|
|
209
210
|
try {
|
|
210
211
|
const { getClient } = await import("./lib/database.js");
|
|
211
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
212
|
+
const { sessionScopeFilter } = await import("./task-scope-EYAOY6YX.js");
|
|
212
213
|
const client = getClient();
|
|
213
214
|
const scope = sessionScopeFilter();
|
|
214
215
|
const existing = await client.execute({
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
storeBehavior
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LIHR5DQF.js";
|
|
4
4
|
import {
|
|
5
5
|
getClient
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-K3O4MWMS.js";
|
|
7
7
|
import {
|
|
8
8
|
loadConfig
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WXW3XGWX.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/skill-learning.ts
|
|
12
12
|
import crypto from "crypto";
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
getCoordinatorEmployee,
|
|
10
10
|
getEmployee,
|
|
11
11
|
loadEmployeesSync
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-K3O4MWMS.js";
|
|
13
13
|
import {
|
|
14
14
|
EXE_AI_DIR
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-WXW3XGWX.js";
|
|
16
16
|
|
|
17
17
|
// src/lib/active-agent.ts
|
|
18
18
|
import { readFileSync, writeFileSync, mkdirSync, unlinkSync, readdirSync } from "fs";
|
|
@@ -11,10 +11,13 @@ import {
|
|
|
11
11
|
sessionScopeFilter,
|
|
12
12
|
updateTaskStatus,
|
|
13
13
|
writeNotification
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RJCZY4BY.js";
|
|
15
15
|
import {
|
|
16
16
|
getTransport
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-5YDHBZCO.js";
|
|
18
|
+
import {
|
|
19
|
+
recordOrchestrationEventBestEffort
|
|
20
|
+
} from "./chunk-ZGQH3V2F.js";
|
|
18
21
|
import {
|
|
19
22
|
getSessionKey
|
|
20
23
|
} from "./chunk-CVYC6DUW.js";
|
|
@@ -27,10 +30,10 @@ import {
|
|
|
27
30
|
isCoordinatorName,
|
|
28
31
|
isMultiInstance,
|
|
29
32
|
shouldAutoInstance
|
|
30
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-K3O4MWMS.js";
|
|
31
34
|
import {
|
|
32
35
|
EXE_AI_DIR
|
|
33
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-WXW3XGWX.js";
|
|
34
37
|
|
|
35
38
|
// src/lib/tasks.ts
|
|
36
39
|
import path2 from "path";
|
|
@@ -136,7 +139,7 @@ async function dispatchTaskToEmployee(input) {
|
|
|
136
139
|
let crossProject = false;
|
|
137
140
|
if (input.projectName) {
|
|
138
141
|
try {
|
|
139
|
-
const { assertSessionScope } = await import("./session-scope-
|
|
142
|
+
const { assertSessionScope } = await import("./session-scope-UJI35BLD.js");
|
|
140
143
|
const check = assertSessionScope("dispatch_task", input.projectName);
|
|
141
144
|
if (check.reason === "cross_session_denied") {
|
|
142
145
|
crossProject = true;
|
|
@@ -170,6 +173,14 @@ async function dispatchTaskToEmployee(input) {
|
|
|
170
173
|
`[dispatch-audit] ${dispatched === "spawned" ? "SPAWNED" : "INTERCOM"} \u2192 ${result.sessionName} | task="${input.title}" [${input.priority}]
|
|
171
174
|
`
|
|
172
175
|
);
|
|
176
|
+
recordOrchestrationEventBestEffort({
|
|
177
|
+
eventType: "dispatch.completed",
|
|
178
|
+
source: "tasks-notify.dispatchTaskToEmployee",
|
|
179
|
+
agentId: input.assignedTo,
|
|
180
|
+
tmuxSession: result.sessionName,
|
|
181
|
+
result: dispatched,
|
|
182
|
+
payload: { path: "multi_instance", priority: input.priority }
|
|
183
|
+
});
|
|
173
184
|
return { dispatched, session: result.sessionName, crossProject };
|
|
174
185
|
}
|
|
175
186
|
const sessionName = employeeSessionName(input.assignedTo, exeSession);
|
|
@@ -180,6 +191,14 @@ async function dispatchTaskToEmployee(input) {
|
|
|
180
191
|
`[dispatch-audit] intercom \u2192 ${sessionName} | task="${input.title}" [${input.priority}] | result=${dispatched} (sendIntercom=${result})
|
|
181
192
|
`
|
|
182
193
|
);
|
|
194
|
+
recordOrchestrationEventBestEffort({
|
|
195
|
+
eventType: "dispatch.completed",
|
|
196
|
+
source: "tasks-notify.dispatchTaskToEmployee",
|
|
197
|
+
agentId: input.assignedTo,
|
|
198
|
+
tmuxSession: sessionName,
|
|
199
|
+
result: dispatched,
|
|
200
|
+
payload: { path: "single_instance_intercom", priority: input.priority }
|
|
201
|
+
});
|
|
183
202
|
return { dispatched, session: sessionName, crossProject };
|
|
184
203
|
} else {
|
|
185
204
|
const projectDir = input.projectDir ?? process.cwd();
|
|
@@ -198,6 +217,14 @@ async function dispatchTaskToEmployee(input) {
|
|
|
198
217
|
`[dispatch-audit] SPAWNED \u2192 ${result.sessionName} | task="${input.title}" [${input.priority}]
|
|
199
218
|
`
|
|
200
219
|
);
|
|
220
|
+
recordOrchestrationEventBestEffort({
|
|
221
|
+
eventType: "dispatch.completed",
|
|
222
|
+
source: "tasks-notify.dispatchTaskToEmployee",
|
|
223
|
+
agentId: input.assignedTo,
|
|
224
|
+
tmuxSession: result.sessionName,
|
|
225
|
+
result: "spawned",
|
|
226
|
+
payload: { path: "single_instance_spawn", priority: input.priority }
|
|
227
|
+
});
|
|
201
228
|
return { dispatched: "spawned", session: result.sessionName, crossProject };
|
|
202
229
|
}
|
|
203
230
|
} catch {
|
|
@@ -369,7 +396,7 @@ async function updateTask(input) {
|
|
|
369
396
|
}
|
|
370
397
|
}
|
|
371
398
|
try {
|
|
372
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
399
|
+
const { pushNotifyAsync } = await import("./push-notifications-ONUX3NPQ.js");
|
|
373
400
|
pushNotifyAsync({
|
|
374
401
|
event: "review_ready",
|
|
375
402
|
title: `Review ready: ${taskTitle.slice(0, 50)}`,
|
|
@@ -381,7 +408,7 @@ async function updateTask(input) {
|
|
|
381
408
|
}
|
|
382
409
|
if (!isCoordinator) {
|
|
383
410
|
try {
|
|
384
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
411
|
+
const { pushNotifyAsync } = await import("./push-notifications-ONUX3NPQ.js");
|
|
385
412
|
const event = input.status === "needs_review" ? "review_ready" : "task_complete";
|
|
386
413
|
pushNotifyAsync({
|
|
387
414
|
event,
|
|
@@ -396,7 +423,7 @@ async function updateTask(input) {
|
|
|
396
423
|
await markTaskNotificationsRead(taskFile);
|
|
397
424
|
if (input.status === "needs_review" && !isCoordinator) {
|
|
398
425
|
try {
|
|
399
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
426
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-GHNYYITD.js");
|
|
400
427
|
await writeNotification2({
|
|
401
428
|
agentId: String(row.assigned_to),
|
|
402
429
|
agentRole: String(row.assigned_to),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EXE_AI_DIR
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WXW3XGWX.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/shard-manager.ts
|
|
6
6
|
import path from "path";
|
|
@@ -196,24 +196,50 @@ async function ensureShardSchema(client) {
|
|
|
196
196
|
CREATE INDEX IF NOT EXISTS idx_memories_agent_project ON memories(agent_id, project_name);
|
|
197
197
|
CREATE INDEX IF NOT EXISTS idx_memories_version ON memories(version);
|
|
198
198
|
`);
|
|
199
|
+
let needsFtsMigration = false;
|
|
200
|
+
try {
|
|
201
|
+
await client.execute("SELECT keywords FROM memories_fts LIMIT 0");
|
|
202
|
+
} catch {
|
|
203
|
+
needsFtsMigration = true;
|
|
204
|
+
}
|
|
205
|
+
if (needsFtsMigration) {
|
|
206
|
+
for (const drop of [
|
|
207
|
+
"DROP TRIGGER IF EXISTS memories_fts_ai",
|
|
208
|
+
"DROP TRIGGER IF EXISTS memories_fts_ad",
|
|
209
|
+
"DROP TRIGGER IF EXISTS memories_fts_au",
|
|
210
|
+
"DROP TRIGGER IF EXISTS memories_fts_soft_delete",
|
|
211
|
+
"DROP TABLE IF EXISTS memories_fts"
|
|
212
|
+
]) {
|
|
213
|
+
try {
|
|
214
|
+
await client.execute(drop);
|
|
215
|
+
} catch {
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
199
219
|
await client.executeMultiple(`
|
|
200
220
|
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
201
221
|
raw_text,
|
|
222
|
+
keywords,
|
|
202
223
|
content='memories',
|
|
203
224
|
content_rowid='rowid'
|
|
204
225
|
);
|
|
205
226
|
|
|
206
227
|
CREATE TRIGGER IF NOT EXISTS memories_fts_ai AFTER INSERT ON memories BEGIN
|
|
207
|
-
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
228
|
+
INSERT INTO memories_fts(rowid, raw_text, keywords) VALUES (new.rowid, new.raw_text, COALESCE(new.keywords, ''));
|
|
208
229
|
END;
|
|
209
230
|
|
|
210
231
|
CREATE TRIGGER IF NOT EXISTS memories_fts_ad AFTER DELETE ON memories BEGIN
|
|
211
|
-
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
232
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text, keywords) VALUES('delete', old.rowid, old.raw_text, COALESCE(old.keywords, ''));
|
|
212
233
|
END;
|
|
213
234
|
|
|
214
235
|
CREATE TRIGGER IF NOT EXISTS memories_fts_au AFTER UPDATE ON memories BEGIN
|
|
215
|
-
INSERT INTO memories_fts(memories_fts, rowid, raw_text) VALUES('delete', old.rowid, old.raw_text);
|
|
216
|
-
INSERT INTO memories_fts(rowid, raw_text) VALUES (new.rowid, new.raw_text);
|
|
236
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text, keywords) VALUES('delete', old.rowid, old.raw_text, COALESCE(old.keywords, ''));
|
|
237
|
+
INSERT INTO memories_fts(rowid, raw_text, keywords) VALUES (new.rowid, new.raw_text, COALESCE(new.keywords, ''));
|
|
238
|
+
END;
|
|
239
|
+
|
|
240
|
+
CREATE TRIGGER IF NOT EXISTS memories_fts_soft_delete AFTER UPDATE OF status ON memories
|
|
241
|
+
WHEN new.status = 'deleted' AND (old.status IS NULL OR old.status != 'deleted') BEGIN
|
|
242
|
+
INSERT INTO memories_fts(memories_fts, rowid, raw_text, keywords) VALUES('delete', old.rowid, old.raw_text, COALESCE(old.keywords, ''));
|
|
217
243
|
END;
|
|
218
244
|
`);
|
|
219
245
|
for (const col of [
|
|
@@ -271,7 +297,7 @@ async function ensureShardSchema(client) {
|
|
|
271
297
|
// Memory strength scoring — Ebbinghaus decay (must match database.ts)
|
|
272
298
|
"ALTER TABLE memories ADD COLUMN strength REAL DEFAULT 1.0",
|
|
273
299
|
// Source trust level (must match database.ts)
|
|
274
|
-
"ALTER TABLE memories ADD COLUMN source_trust_level TEXT",
|
|
300
|
+
"ALTER TABLE memories ADD COLUMN source_trust_level TEXT DEFAULT 'unknown'",
|
|
275
301
|
// Poisoning defense (must match database.ts)
|
|
276
302
|
"ALTER TABLE memories ADD COLUMN quarantined INTEGER DEFAULT 0",
|
|
277
303
|
"ALTER TABLE memories ADD COLUMN quarantine_reason TEXT",
|
|
@@ -369,13 +395,62 @@ async function ensureShardSchema(client) {
|
|
|
369
395
|
`);
|
|
370
396
|
for (const col of [
|
|
371
397
|
"ALTER TABLE relationships ADD COLUMN confidence REAL DEFAULT 1.0",
|
|
372
|
-
"ALTER TABLE relationships ADD COLUMN confidence_label TEXT DEFAULT 'extracted'"
|
|
398
|
+
"ALTER TABLE relationships ADD COLUMN confidence_label TEXT DEFAULT 'extracted'",
|
|
399
|
+
// Temporal validity (must match database.ts)
|
|
400
|
+
"ALTER TABLE relationships ADD COLUMN valid_from TEXT",
|
|
401
|
+
"ALTER TABLE relationships ADD COLUMN valid_until TEXT"
|
|
373
402
|
]) {
|
|
374
403
|
try {
|
|
375
404
|
await client.execute(col);
|
|
376
405
|
} catch {
|
|
377
406
|
}
|
|
378
407
|
}
|
|
408
|
+
try {
|
|
409
|
+
await client.execute("ALTER TABLE entities ADD COLUMN parent_type TEXT");
|
|
410
|
+
} catch {
|
|
411
|
+
}
|
|
412
|
+
for (const idx of [
|
|
413
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_session ON memories(session_id)",
|
|
414
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_project ON memories(project_name)",
|
|
415
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_tool ON memories(tool_name)",
|
|
416
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_content_hash ON memories(content_hash, agent_id)",
|
|
417
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_quarantined ON memories(quarantined) WHERE quarantined = 1",
|
|
418
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_draft ON memories(draft) WHERE draft = 1",
|
|
419
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(memory_type)",
|
|
420
|
+
"CREATE INDEX IF NOT EXISTS idx_memories_agent_scope_project ON memories(agent_id, session_scope, project_name)",
|
|
421
|
+
// UNIQUE dedup index — prevents duplicate memories at DB level
|
|
422
|
+
"CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_unique_scoped_hash ON memories(content_hash, agent_id, project_name, memory_type) WHERE content_hash IS NOT NULL AND COALESCE(status, 'active') != 'deleted'",
|
|
423
|
+
// Entity indexes
|
|
424
|
+
"CREATE INDEX IF NOT EXISTS idx_entities_type_name ON entities(type, name)",
|
|
425
|
+
// Relationship temporal indexes
|
|
426
|
+
"CREATE INDEX IF NOT EXISTS idx_relationships_valid_from ON relationships(valid_from)",
|
|
427
|
+
"CREATE INDEX IF NOT EXISTS idx_relationships_valid_until ON relationships(valid_until)"
|
|
428
|
+
]) {
|
|
429
|
+
try {
|
|
430
|
+
await client.execute(idx);
|
|
431
|
+
} catch {
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
await client.executeMultiple(`
|
|
435
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
|
|
436
|
+
name,
|
|
437
|
+
content='entities',
|
|
438
|
+
content_rowid='rowid'
|
|
439
|
+
);
|
|
440
|
+
|
|
441
|
+
CREATE TRIGGER IF NOT EXISTS entities_fts_ai AFTER INSERT ON entities BEGIN
|
|
442
|
+
INSERT INTO entities_fts(rowid, name) VALUES (new.rowid, new.name);
|
|
443
|
+
END;
|
|
444
|
+
|
|
445
|
+
CREATE TRIGGER IF NOT EXISTS entities_fts_ad AFTER DELETE ON entities BEGIN
|
|
446
|
+
INSERT INTO entities_fts(entities_fts, rowid, name) VALUES('delete', old.rowid, old.name);
|
|
447
|
+
END;
|
|
448
|
+
|
|
449
|
+
CREATE TRIGGER IF NOT EXISTS entities_fts_au AFTER UPDATE ON entities BEGIN
|
|
450
|
+
INSERT INTO entities_fts(entities_fts, rowid, name) VALUES('delete', old.rowid, old.name);
|
|
451
|
+
INSERT INTO entities_fts(rowid, name) VALUES (new.rowid, new.name);
|
|
452
|
+
END;
|
|
453
|
+
`);
|
|
379
454
|
}
|
|
380
455
|
async function getReadyShardClient(projectName) {
|
|
381
456
|
if (!_keyValidated) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadLicense,
|
|
3
3
|
readCachedLicenseToken
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-72DJ42IE.js";
|
|
5
5
|
import {
|
|
6
6
|
EXE_AI_DIR,
|
|
7
7
|
loadConfig
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WXW3XGWX.js";
|
|
9
9
|
|
|
10
10
|
// src/bin/exe-support.ts
|
|
11
11
|
import { mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
|
@@ -28,6 +28,9 @@ var EXE_AI_DIR = resolveDataDir();
|
|
|
28
28
|
var DB_PATH = path.join(EXE_AI_DIR, "memories.db");
|
|
29
29
|
var MODELS_DIR = path.join(EXE_AI_DIR, "models");
|
|
30
30
|
var CONFIG_PATH = path.join(EXE_AI_DIR, "config.json");
|
|
31
|
+
function isDbAuthorityEnabled() {
|
|
32
|
+
return process.env.EXE_DB_AUTHORITY === "1";
|
|
33
|
+
}
|
|
31
34
|
var LEGACY_LANCE_PATH = path.join(EXE_AI_DIR, "local.lance");
|
|
32
35
|
var CURRENT_CONFIG_VERSION = 1;
|
|
33
36
|
var DEFAULT_CONFIG = {
|
|
@@ -317,6 +320,7 @@ export {
|
|
|
317
320
|
DB_PATH,
|
|
318
321
|
MODELS_DIR,
|
|
319
322
|
CONFIG_PATH,
|
|
323
|
+
isDbAuthorityEnabled,
|
|
320
324
|
LEGACY_LANCE_PATH,
|
|
321
325
|
CURRENT_CONFIG_VERSION,
|
|
322
326
|
CONFIG_MIGRATIONS,
|