@askexenow/exe-os 0.9.239 → 0.9.244
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/.env.customer.example +12 -0
- package/deploy/compose/.env.example +13 -1
- package/deploy/compose/cloudflared/config.yml.example +29 -5
- package/deploy/compose/docker-compose.yml +27 -7
- package/deploy/compose/generate-env.ts +49 -1
- package/deploy/compose/init-db.sql +10 -2
- package/deploy/stack-manifests/v0.9.json +113 -9
- package/dist/{active-agent-7MIVNARP.js → active-agent-KO4ZWDXE.js} +4 -4
- package/dist/{active-agent-55C5Y3XL.js → active-agent-KP2O52HA.js} +4 -4
- package/dist/{agentic-ontology-NCAQIQQI.js → agentic-ontology-DXE5J6I5.js} +1 -1
- package/dist/{backfill-metadata-3JP7EZ2U.js → backfill-metadata-DFTIGPXP.js} +7 -7
- package/dist/{background-jobs-RWL46VRD.js → background-jobs-CRXY7T4Y.js} +2 -2
- package/dist/{behaviors-6BGALYGW.js → behaviors-BL3QCHBT.js} +4 -4
- package/dist/bin/age-ontology-load.js +2 -2
- package/dist/bin/agentic-ontology-backfill.js +9 -9
- package/dist/bin/agentic-reflection-backfill.js +10 -10
- package/dist/bin/agentic-semantic-label.js +9 -9
- package/dist/bin/backfill-conversations.js +9 -9
- package/dist/bin/backfill-responses.js +9 -9
- package/dist/bin/backfill-vectors.js +11 -11
- package/dist/bin/bulk-sync-postgres.js +10 -10
- package/dist/bin/cc-doctor.js +3 -3
- package/dist/bin/cleanup-stale-review-tasks.js +13 -13
- package/dist/bin/cli.js +27 -22
- package/dist/bin/exe-agent-config.js +4 -4
- package/dist/bin/exe-agent.js +8 -8
- package/dist/bin/exe-assign.js +11 -11
- package/dist/bin/exe-boot.js +22 -22
- package/dist/bin/exe-call.js +5 -5
- package/dist/bin/exe-cloud.js +8 -8
- package/dist/bin/exe-dispatch.js +13 -13
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +10 -10
- package/dist/bin/exe-forget.js +9 -9
- package/dist/bin/exe-gateway.js +8 -8
- package/dist/bin/exe-healthcheck.js +3 -3
- package/dist/bin/exe-heartbeat.js +13 -13
- package/dist/bin/exe-kill.js +18 -18
- 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 +14 -14
- package/dist/bin/exe-pending-notifications.js +13 -13
- package/dist/bin/exe-pending-reviews.js +13 -13
- package/dist/bin/exe-rename.js +5 -5
- package/dist/bin/exe-review.js +17 -17
- package/dist/bin/exe-search.js +8 -8
- package/dist/bin/exe-session-cleanup.js +20 -20
- package/dist/bin/exe-settings.js +7 -7
- package/dist/bin/exe-start-codex.js +14 -14
- package/dist/bin/exe-start-opencode.js +11 -11
- package/dist/bin/exe-status.js +14 -14
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +4 -4
- package/dist/bin/git-sweep.js +13 -13
- package/dist/bin/graph-backfill.js +8 -8
- package/dist/bin/graph-export.js +8 -8
- package/dist/bin/import-history.js +10 -10
- package/dist/bin/install.js +7 -7
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +5 -5
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +13 -13
- package/dist/bin/setup.js +3 -3
- package/dist/bin/shard-migrate.js +8 -8
- package/dist/bin/stack-update.js +348 -20
- package/dist/bin/verify-stack.js +3 -383
- package/dist/bin/vps-backup.js +8 -160
- package/dist/bin/vps-health-gate.js +10 -220
- package/dist/{branding-I7YYX4FM.js → branding-XWMO5EDR.js} +1 -1
- package/dist/{capacity-monitor-IFCZKRPG.js → capacity-monitor-4CSBC7AP.js} +14 -14
- package/dist/{catchup-brief-PIDRWXOW.js → catchup-brief-LF5Z6Q6E.js} +17 -17
- package/dist/{chunk-FGJUGDNM.js → chunk-222SI7QC.js} +14 -14
- package/dist/{chunk-JZMVLAZ2.js → chunk-2WBBVEIB.js} +1 -1
- package/dist/{chunk-JDOE33C2.js → chunk-3V53HH5T.js} +4 -4
- package/dist/{chunk-2KZSKURT.js → chunk-57SULZJ2.js} +3 -3
- package/dist/{chunk-QI4IXJN7.js → chunk-5CHYEKMH.js} +7 -4
- package/dist/chunk-5DMAMQNU.js +168 -0
- package/dist/{chunk-PLQAFB3Z.js → chunk-5JIG2FP2.js} +1 -1
- package/dist/{chunk-UWQ3XCDG.js → chunk-5WK7X5CF.js} +2 -2
- package/dist/{chunk-DDPAQ4LT.js → chunk-6JAGJN77.js} +2 -2
- package/dist/{chunk-7F37NMKB.js → chunk-73UE2PHT.js} +1 -1
- package/dist/{chunk-JL3K5OTS.js → chunk-7IZWLMTP.js} +1 -1
- package/dist/{chunk-ELRRL2NC.js → chunk-A4K2ZT6N.js} +4 -4
- package/dist/{chunk-GWYADLIW.js → chunk-AHXEU5XB.js} +1 -1
- package/dist/{chunk-WSHMBME6.js → chunk-AWRL5FGM.js} +19 -78
- package/dist/{chunk-OMPCFLWA.js → chunk-BSPOEYAO.js} +1 -1
- package/dist/{chunk-F4TCKCKK.js → chunk-BYCNUKII.js} +47 -12
- package/dist/{chunk-DHVC4RN7.js → chunk-CBDPEJOR.js} +5 -5
- package/dist/{chunk-2H55BIV2.js → chunk-CEJO7244.js} +2 -2
- package/dist/{chunk-FKWZVO2T.js → chunk-CPXGLSIL.js} +3 -3
- package/dist/{chunk-HX5G4AS4.js → chunk-CWITU7DW.js} +2 -2
- package/dist/{chunk-5GG7MTRJ.js → chunk-DGBGIXCC.js} +4 -4
- package/dist/{chunk-IQXPMK46.js → chunk-DLZYAYVM.js} +60 -14
- package/dist/{chunk-PPYWQV2M.js → chunk-DR5BGWFR.js} +2 -2
- package/dist/{chunk-BZWKTFEB.js → chunk-ENVRFBTB.js} +2 -2
- package/dist/{chunk-DUVO2PUJ.js → chunk-F3GM6OOP.js} +4 -4
- package/dist/{chunk-HNLPLLE6.js → chunk-F7JLZXHC.js} +60 -26
- package/dist/{chunk-AL4DRC5H.js → chunk-FFLILAG6.js} +1 -1
- package/dist/{chunk-BZNI4OK5.js → chunk-GHEWRYMY.js} +18 -2
- package/dist/{chunk-C7SFJO5F.js → chunk-GHT4REOS.js} +5 -5
- package/dist/{chunk-FBWUJEXS.js → chunk-HANG6NLF.js} +4 -6
- package/dist/{chunk-5NJ4A4ZA.js → chunk-HCBMPZDT.js} +1 -1
- package/dist/chunk-HOGTZLVU.js +244 -0
- package/dist/{chunk-IQSCZDBQ.js → chunk-I5PIBL56.js} +3 -3
- package/dist/chunk-IRHNV4GY.js +388 -0
- package/dist/{chunk-4HROS3GJ.js → chunk-IZVKWBIP.js} +1 -1
- package/dist/{chunk-DKI5BTBC.js → chunk-J7V7LPPX.js} +2 -2
- package/dist/{chunk-TOZ5NN5V.js → chunk-JLKUVK5J.js} +1 -1
- package/dist/{chunk-4SC65UBG.js → chunk-JLNXKG3K.js} +1 -1
- package/dist/{chunk-KVSQOG3W.js → chunk-K2BDE2B5.js} +4 -4
- package/dist/{chunk-KDJRFJDL.js → chunk-K333WOW4.js} +30 -2
- package/dist/{chunk-6LBCUA2A.js → chunk-KEZXW3RP.js} +1 -1
- package/dist/{chunk-W7G3GY4I.js → chunk-KLQI7QY4.js} +3 -3
- package/dist/{chunk-UODVZGBQ.js → chunk-KN7LPTIB.js} +1 -1
- package/dist/{chunk-ESKBZN4Q.js → chunk-L4WRH3DL.js} +1 -1
- package/dist/{chunk-VFQKKMKE.js → chunk-LAOB5BKV.js} +2 -2
- package/dist/{chunk-MAN5LZQ4.js → chunk-LQSFP2BV.js} +1 -1
- package/dist/{chunk-EJ7LOTV2.js → chunk-LSFHEMVI.js} +9 -9
- package/dist/{chunk-RA2RO27E.js → chunk-MCESA5UW.js} +2 -2
- package/dist/{chunk-UPMHG7ET.js → chunk-MEIHREPM.js} +1 -1
- package/dist/{chunk-D5C56WO3.js → chunk-MOZ2YQ54.js} +1 -1
- package/dist/{chunk-CLGB3FGL.js → chunk-MPX3TRMQ.js} +2 -2
- package/dist/{chunk-5R75ODPS.js → chunk-NBY6R37W.js} +61 -232
- package/dist/{chunk-RWFGXC35.js → chunk-NEYQAEYU.js} +7 -7
- package/dist/{chunk-MBHZDXGN.js → chunk-NL35XNLI.js} +1 -1
- package/dist/{chunk-TPQVLYSV.js → chunk-NLGMHPEN.js} +1 -1
- package/dist/{chunk-5LMH4YHG.js → chunk-NRVV4Y5V.js} +4 -4
- package/dist/{chunk-GN5VHPPR.js → chunk-NVZR7T4E.js} +1 -1
- package/dist/{chunk-Y2L7RMGH.js → chunk-NWBHL5PI.js} +1 -1
- package/dist/{chunk-YPYDLW75.js → chunk-OEMX65EA.js} +1 -1
- package/dist/{chunk-UAFUGPKO.js → chunk-ONAQAL3O.js} +1 -1
- package/dist/{chunk-AVM7XZE4.js → chunk-OWQ3CCYJ.js} +7 -6
- package/dist/{chunk-K525WLL7.js → chunk-PI6V23GF.js} +5 -4
- package/dist/{chunk-AURM7FOT.js → chunk-Q2OAQPWY.js} +1 -1
- package/dist/{chunk-FB5VRO5S.js → chunk-QLDWASTX.js} +28 -32
- package/dist/{chunk-EPWDTS2Q.js → chunk-QMTGMCWB.js} +1 -1
- package/dist/{chunk-VI2FJY2M.js → chunk-QP4FHME2.js} +2 -2
- package/dist/{chunk-NJWK6J4N.js → chunk-QUNKPR6Y.js} +5 -5
- package/dist/{chunk-O6DAF2TY.js → chunk-QUZVAHO7.js} +2 -2
- package/dist/{chunk-VHKL4S4T.js → chunk-RRHSONV5.js} +2 -2
- package/dist/{chunk-GPF6X6HE.js → chunk-RYDHEWYY.js} +2 -2
- package/dist/{chunk-SVXDCELZ.js → chunk-SHN5O73O.js} +32 -4
- package/dist/chunk-TD5CADZ5.js +230 -0
- package/dist/{chunk-C2YS2AA6.js → chunk-U7WOVXBB.js} +2 -2
- package/dist/{chunk-FE45RXGC.js → chunk-V2GZMY6O.js} +1 -1
- package/dist/{chunk-PATCHPNY.js → chunk-VHALWCUO.js} +1 -1
- package/dist/{chunk-HLZSC5WK.js → chunk-VQAP35DA.js} +20 -18
- package/dist/{chunk-452XB7OZ.js → chunk-VRIMTCX2.js} +1 -1
- package/dist/{chunk-SUNYJ6YE.js → chunk-VT2B5BHM.js} +1 -1
- package/dist/{chunk-UZIJDYDA.js → chunk-VWVJVQDH.js} +2 -2
- package/dist/{chunk-TRZ5KA2R.js → chunk-VXIMSRTO.js} +2 -2
- package/dist/{chunk-DAZIV4QZ.js → chunk-WCXZF42W.js} +1 -1
- package/dist/{chunk-6OJJF4WP.js → chunk-XJUUWHVN.js} +1 -1
- package/dist/{chunk-F7LU65PQ.js → chunk-Y25OJWOQ.js} +14 -2
- package/dist/{chunk-2ORPA23Y.js → chunk-YMXXD2GW.js} +36 -8
- package/dist/{chunk-5WLMF6PL.js → chunk-YMZHTTOQ.js} +1 -1
- package/dist/{chunk-7DIDOQCX.js → chunk-YRVW57UW.js} +139 -125
- package/dist/{chunk-BRFH5X7G.js → chunk-Z7VDUS6L.js} +1 -1
- package/dist/{chunk-YFE6W75D.js → chunk-ZKFPHJIJ.js} +1 -1
- package/dist/{chunk-5WUTKDH6.js → chunk-ZVXJSQOR.js} +1 -1
- package/dist/{co-activation-VB4CJQZB.js → co-activation-L6I2LSJO.js} +3 -3
- package/dist/{co-occurrence-XZQJJIBM.js → co-occurrence-QARWYUAY.js} +3 -3
- package/dist/{code-context-index-FCQOPUEA.js → code-context-index-UIYQRDHD.js} +4 -4
- package/dist/{content-extractor-SPSH5X33.js → content-extractor-EYRVGD6O.js} +2 -2
- package/dist/{conversation-wiki-populator-YU35LNRK.js → conversation-wiki-populator-L7O6F3BB.js} +1 -1
- package/dist/{crdt-sync-KXETGV45.js → crdt-sync-R6YROKDH.js} +1 -1
- package/dist/{crm-webhook-JMOAHTJ6.js → crm-webhook-WK3PYJJK.js} +2 -2
- package/dist/{cto-delegation-gate-IJ3KQIKF.js → cto-delegation-gate-5JZORQIT.js} +12 -12
- package/dist/{daemon-auth-2IZACWSG.js → daemon-auth-2HEOL6VG.js} +2 -2
- package/dist/{daemon-orchestration-ZCY4GEI3.js → daemon-orchestration-BJ3T5MMF.js} +16 -15
- package/dist/{db-backup-HLX5OLIV.js → db-backup-EWS52P2W.js} +2 -2
- package/dist/{dreaming-2CJML3TU.js → dreaming-BOSBDRI3.js} +13 -13
- package/dist/{entity-boost-T5IYWWDZ.js → entity-boost-6ZVX7DFB.js} +26 -2
- package/dist/{exe-drift-P5OIRNSH.js → exe-drift-WRE6RADZ.js} +4 -4
- package/dist/{exe-export-QQL2H322.js → exe-export-7N5PBCMK.js} +8 -8
- package/dist/{exe-import-V4RJCUEP.js → exe-import-YOOE7S3H.js} +8 -8
- package/dist/{exe-key-MENJGDD7.js → exe-key-GXJSTCX2.js} +4 -4
- package/dist/{exe-org-3FNET2J7.js → exe-org-42YMQL75.js} +2 -2
- package/dist/{exe-snapshot-YRARQE7F.js → exe-snapshot-ODUCFW7G.js} +18 -18
- package/dist/{fast-db-init-HIJWWKAO.js → fast-db-init-YSR7RMVZ.js} +1 -1
- package/dist/{founder-context-BQ5NBDUV.js → founder-context-Q2HUCZX4.js} +2 -2
- package/dist/gateway/index.js +9 -9
- package/dist/{gateway-client-YGSA5QMC.js → gateway-client-4QXHKN5C.js} +1 -1
- package/dist/{git-staleness-IHTKCUMN.js → git-staleness-BJDTCDPC.js} +3 -3
- package/dist/{git-task-sweep-5ZPNQS7Y.js → git-task-sweep-L3U3T5HM.js} +13 -13
- package/dist/{global-procedures-XHDIZRJU.js → global-procedures-HCHEHKY2.js} +4 -4
- package/dist/{graph-auto-extract-5TPT67GP.js → graph-auto-extract-FP5C76LS.js} +3 -3
- package/dist/{hook-integrity-SB53Y7UK.js → hook-integrity-2OU3T6UC.js} +1 -1
- package/dist/hooks/bug-report-worker.js +15 -14
- package/dist/hooks/codex-stop-task-finalizer.js +15 -14
- package/dist/hooks/commit-complete.js +16 -16
- package/dist/hooks/error-recall.js +10 -10
- package/dist/hooks/exe-heartbeat-hook.js +5 -5
- package/dist/hooks/ingest-worker.js +8 -8
- package/dist/hooks/ingest.js +13 -13
- package/dist/hooks/instructions-loaded.js +7 -7
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +6 -6
- package/dist/hooks/post-compact.js +15 -15
- package/dist/hooks/post-tool-combined.js +7 -7
- package/dist/hooks/pre-compact.js +20 -20
- package/dist/hooks/pre-tool-use.js +28 -25
- package/dist/hooks/prompt-submit.js +62 -31
- package/dist/hooks/session-end.js +26 -26
- package/dist/hooks/session-start.js +39 -15
- package/dist/hooks/stop.js +22 -22
- package/dist/hooks/subagent-stop.js +15 -15
- package/dist/hooks/summary-worker.js +32 -27
- package/dist/index.js +21 -21
- package/dist/{installer-AMZM4MLS.js → installer-AWMUCRN4.js} +7 -7
- package/dist/{installer-KT5FW4CN.js → installer-HB3NH6FG.js} +9 -9
- package/dist/{installer-HW74W3IT.js → installer-RU6EVOBL.js} +6 -6
- package/dist/{intercom-queue-RNM6EPGA.js → intercom-queue-A6UJEFIF.js} +1 -1
- package/dist/{key-backup-status-OZ2CXUDW.js → key-backup-status-4YKCV4ZV.js} +1 -1
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +10 -8
- package/dist/lib/config.js +1 -1
- package/dist/lib/consolidation.js +8 -8
- 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 +105 -74
- package/dist/lib/hybrid-search.js +8 -8
- package/dist/lib/identity.js +3 -3
- package/dist/lib/keychain.js +1 -1
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +13 -13
- package/dist/lib/post-tool-memory.js +3 -3
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +4 -4
- package/dist/lib/schedules.js +8 -8
- package/dist/lib/session-registry.js +5 -5
- package/dist/lib/skill-learning.js +5 -5
- package/dist/lib/store.js +7 -7
- package/dist/lib/task-router.js +4 -4
- package/dist/lib/tasks.js +14 -13
- package/dist/lib/tmux-routing.js +12 -12
- package/dist/lib/token-spend.js +4 -4
- package/dist/lib/ws-client.js +1 -1
- package/dist/{license-gate-XJDIL6OZ.js → license-gate-6JQQFBHS.js} +3 -3
- package/dist/mcp/register-tools.js +68 -67
- package/dist/mcp/server.js +70 -69
- 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 +16 -15
- 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 +16 -15
- package/dist/mcp/tools/send-message.js +15 -15
- package/dist/mcp/tools/update-task.js +15 -14
- package/dist/{mcp-http-config-BXX3RZPR.js → mcp-http-config-XIJR5P2Z.js} +4 -4
- package/dist/{memory-cards-KRTP5GFM.js → memory-cards-H4BJJ5OK.js} +3 -3
- package/dist/{memory-graph-extractor-G532PUHC.js → memory-graph-extractor-SDGM3GVR.js} +4 -4
- package/dist/{memory-poisoning-defense-HJM3FQA3.js → memory-poisoning-defense-UVU67DGJ.js} +3 -3
- package/dist/{memory-queue-FTNBWLS4.js → memory-queue-FNT5WHXP.js} +2 -2
- package/dist/{memory-queue-client-DHSHEIHQ.js → memory-queue-client-JZCFYTWQ.js} +5 -5
- package/dist/{memory-reflection-RANRFUQL.js → memory-reflection-GGB5K35L.js} +3 -3
- package/dist/{notifications-4P2PVEOT.js → notifications-P3XQZDTH.js} +12 -12
- package/dist/{orchestration-events-IYTASMSN.js → orchestration-events-25WEKUKH.js} +4 -4
- package/dist/{orchestration-phase-SGA7PJ5G.js → orchestration-phase-C26XVKLZ.js} +2 -2
- package/dist/{orchestrator-VKVHZ4MV.js → orchestrator-VIXTY4E4.js} +14 -14
- package/dist/{pipeline-router-E4L5BDXN.js → pipeline-router-S5PE5U6B.js} +4 -4
- package/dist/{plan-limits-5O5QG55H.js → plan-limits-DGIVM42H.js} +5 -5
- package/dist/{prediction-log-OMWHW7FL.js → prediction-log-DOEOHDHS.js} +1 -1
- package/dist/{project-boot-WMI6CWRX.js → project-boot-4ZL2W7DN.js} +12 -2
- package/dist/{projection-worker-54KRNQSO.js → projection-worker-GG2W5OM3.js} +3 -3
- package/dist/{push-notifications-E2XXEWJZ.js → push-notifications-AMHVR6DF.js} +2 -2
- package/dist/{reranker-4NTUFNYT.js → reranker-UCPLQZE2.js} +2 -2
- package/dist/{review-polling-BFRJDLUA.js → review-polling-P2MWEXLR.js} +13 -13
- package/dist/runtime/index.js +15 -15
- package/dist/{session-events-KCZCWGE4.js → session-events-5CD66R6U.js} +13 -13
- package/dist/{session-kill-telemetry-TMNIDYWY.js → session-kill-telemetry-7FBHTEDN.js} +4 -4
- package/dist/{session-scope-DRZBQ32Y.js → session-scope-VMIPAZU7.js} +12 -12
- package/dist/{setup-wizard-TQKGDAHO.js → setup-wizard-BNR47URR.js} +3 -3
- package/dist/{shard-manager-G6MHCO7X.js → shard-manager-VGA2TYHM.js} +2 -2
- package/dist/{skill-refinement-Z5SWD3AM.js → skill-refinement-NRG4WWRW.js} +3 -3
- package/dist/stack-release-PFZI22WC.js +521 -0
- package/dist/{stack-update-NO5MNARG.js → stack-update-7F2E2MBJ.js} +3 -3
- package/dist/{steward-gate-7DWYS5AT.js → steward-gate-L7DJMF4C.js} +4 -4
- package/dist/{task-enforcement-2VL5J6JJ.js → task-enforcement-XQL77PZH.js} +52 -12
- package/dist/{task-scope-YHALISIB.js → task-scope-R3XKBIHL.js} +12 -12
- package/dist/{tasks-crud-JXZEBZFR.js → tasks-crud-DQOG2NPG.js} +12 -12
- package/dist/tasks-notify-4EQYG52H.js +37 -0
- package/dist/{tasks-review-PGPYJQF5.js → tasks-review-XPFJ4DSJ.js} +12 -12
- package/dist/{telemetry-upload-H7OJNBIF.js → telemetry-upload-OT5B5HUY.js} +7 -7
- package/dist/{token-budget-JJ7JQIA2.js → token-budget-D2LQKCAV.js} +3 -3
- package/dist/{tool-capability-index-WIV4K3FB.js → tool-capability-index-FAJ5ZHDF.js} +1 -1
- package/dist/{tool-telemetry-W4LFCHFT.js → tool-telemetry-QIF5BCLF.js} +1 -1
- package/dist/tui/App.js +26 -26
- package/dist/{tui-data-72U6N2DC.js → tui-data-UEV2QOR3.js} +108 -12
- package/dist/{whatsapp-config-W63RQ3AU.js → whatsapp-config-GOSELKTE.js} +7 -0
- package/dist/{worker-gate-SCSN6IHI.js → worker-gate-PRCKA23W.js} +2 -2
- package/dist/{workflow-engine-OICYBE4F.js → workflow-engine-7X6LLH3M.js} +2 -2
- package/dist/{worktree-JXN4RCWC.js → worktree-RICSCT2S.js} +5 -5
- package/package.json +1 -1
- package/release-notes.json +210 -298
- package/stack.release.json +4 -3
- package/dist/preflight-EAH2MI76.js +0 -287
- /package/dist/{chunk-H42LEGLB.js → chunk-AQBEG33D.js} +0 -0
- /package/dist/{chunk-AU5426YP.js → chunk-B7JGEDVE.js} +0 -0
- /package/dist/{chunk-YFDDTHNM.js → chunk-JXI4XUTV.js} +0 -0
- /package/dist/{chunk-SNYDRHV3.js → chunk-U3DUFHOT.js} +0 -0
- /package/dist/{chunk-N2XUH2HQ.js → chunk-VBPC7IC7.js} +0 -0
- /package/dist/{chunk-HTUJBTBM.js → chunk-VUS6WXQ3.js} +0 -0
- /package/dist/{chunk-NOLIN2YI.js → chunk-XAYRZHLV.js} +0 -0
- /package/dist/{core-memory-VOBGGB2Q.js → core-memory-4KAIKQRQ.js} +0 -0
- /package/dist/{message-queue-client-KAJN6TIJ.js → message-queue-client-S6W5VMJV.js} +0 -0
- /package/dist/{oauth-server-QEXRSXEP.js → oauth-server-2ESBZB7F.js} +0 -0
- /package/dist/{webhook-pipe-LY4XEDL7.js → webhook-pipe-ZRUVOG5H.js} +0 -0
- /package/dist/{wiki-acl-M3OR547L.js → wiki-acl-MFLSS6DE.js} +0 -0
- /package/dist/{wiki-client-MAFYBXCQ.js → wiki-client-GBPR45BQ.js} +0 -0
|
@@ -4,17 +4,17 @@ import {
|
|
|
4
4
|
resolveExeSession,
|
|
5
5
|
sendIntercom,
|
|
6
6
|
strictSessionScopeFilter
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-F7JLZXHC.js";
|
|
8
8
|
import {
|
|
9
9
|
parseMessage,
|
|
10
10
|
serializeMessage
|
|
11
11
|
} from "./chunk-4JERP7NT.js";
|
|
12
12
|
import {
|
|
13
13
|
recordOrchestrationEventBestEffort
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-HCBMPZDT.js";
|
|
15
15
|
import {
|
|
16
16
|
getClient
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-CEJO7244.js";
|
|
18
18
|
|
|
19
19
|
// src/lib/messaging.ts
|
|
20
20
|
import crypto from "crypto";
|
|
@@ -153,7 +153,7 @@ async function deliverLocalMessage(messageId) {
|
|
|
153
153
|
if (!isCOO && !isEmployeeAlive(sessionName)) {
|
|
154
154
|
throw new Error("Session not running \u2014 message stays queued");
|
|
155
155
|
}
|
|
156
|
-
const intercomResult = sendIntercom(sessionName, { force: true });
|
|
156
|
+
const intercomResult = sendIntercom(sessionName, { force: true, reason: "message" });
|
|
157
157
|
process.stderr.write(`[messaging] intercom result for ${sessionName}: ${intercomResult}
|
|
158
158
|
`);
|
|
159
159
|
await client.execute({
|
|
@@ -3,13 +3,45 @@ import {
|
|
|
3
3
|
buildRawVisibilityFilter,
|
|
4
4
|
buildWikiScopeFilter,
|
|
5
5
|
searchMemories
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-222SI7QC.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CEJO7244.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/hybrid-search.ts
|
|
12
12
|
var RRF_K = 60;
|
|
13
|
+
var DAEMON_SAFE_FTS_TERM_THRESHOLD = 3;
|
|
14
|
+
var DAEMON_SAFE_FTS_MAX_TERMS = 5;
|
|
15
|
+
var _daemonBroadFtsSkipLogged = false;
|
|
16
|
+
var _daemonGraphFtsSkipLogged = false;
|
|
17
|
+
function isDaemonProcess() {
|
|
18
|
+
return process.env.EXE_IS_DAEMON === "1";
|
|
19
|
+
}
|
|
20
|
+
function daemonSafeFtsTerms(terms) {
|
|
21
|
+
return isDaemonProcess() ? terms.slice(0, DAEMON_SAFE_FTS_MAX_TERMS) : terms;
|
|
22
|
+
}
|
|
23
|
+
function shouldUseFtsPrefix(terms) {
|
|
24
|
+
return !(isDaemonProcess() && terms.length >= DAEMON_SAFE_FTS_TERM_THRESHOLD);
|
|
25
|
+
}
|
|
26
|
+
function ftsTerm(term, usePrefix) {
|
|
27
|
+
return usePrefix ? `${term}*` : term;
|
|
28
|
+
}
|
|
29
|
+
function logDaemonBroadFtsSkipOnce(terms) {
|
|
30
|
+
if (_daemonBroadFtsSkipLogged || process.env.VITEST) return;
|
|
31
|
+
_daemonBroadFtsSkipLogged = true;
|
|
32
|
+
process.stderr.write(
|
|
33
|
+
`[hybrid-search] Daemon-safe FTS: skipped broad OR fallback for ${terms.length} terms to keep MCP responsive.
|
|
34
|
+
`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
function logDaemonGraphFtsSkipOnce(terms) {
|
|
38
|
+
if (_daemonGraphFtsSkipLogged || process.env.VITEST) return;
|
|
39
|
+
_daemonGraphFtsSkipLogged = true;
|
|
40
|
+
process.stderr.write(
|
|
41
|
+
`[hybrid-search] Daemon-safe FTS: skipped graph/entity FTS for ${terms.length} terms to keep MCP responsive.
|
|
42
|
+
`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
13
45
|
var _cardinalityCache = /* @__PURE__ */ new Map();
|
|
14
46
|
var CARDINALITY_TTL_MS = 6e4;
|
|
15
47
|
setInterval(() => {
|
|
@@ -19,6 +51,10 @@ setInterval(() => {
|
|
|
19
51
|
}
|
|
20
52
|
}, 5 * 60 * 1e3).unref();
|
|
21
53
|
async function getCachedCardinality(agentId) {
|
|
54
|
+
if (process.env.VITEST === "true" || process.env.NODE_ENV === "test") {
|
|
55
|
+
const { getMemoryCardinality: getMemoryCardinality2 } = await import("./lib/store.js");
|
|
56
|
+
return getMemoryCardinality2(agentId);
|
|
57
|
+
}
|
|
22
58
|
const cached = _cardinalityCache.get(agentId);
|
|
23
59
|
if (cached && Date.now() < cached.expires) return cached.count;
|
|
24
60
|
const { getMemoryCardinality } = await import("./lib/store.js");
|
|
@@ -58,9 +94,15 @@ async function graphSearch(query, agentId, _options, limit) {
|
|
|
58
94
|
const client = getClient();
|
|
59
95
|
const queryWords = query.toLowerCase().split(/\s+/).filter((w) => w.length >= 3).map((w) => w.replace(/[^a-z0-9_-]/g, "")).filter((w) => w.length >= 3);
|
|
60
96
|
if (queryWords.length === 0) return [];
|
|
97
|
+
if (isDaemonProcess() && queryWords.length >= DAEMON_SAFE_FTS_TERM_THRESHOLD) {
|
|
98
|
+
logDaemonGraphFtsSkipOnce(queryWords);
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
61
101
|
let entityIds = [];
|
|
62
102
|
try {
|
|
63
|
-
const
|
|
103
|
+
const safeWords = daemonSafeFtsTerms(queryWords);
|
|
104
|
+
const usePrefix = shouldUseFtsPrefix(safeWords);
|
|
105
|
+
const matchExpr = safeWords.map((w) => ftsTerm(w, usePrefix)).join(" OR ");
|
|
64
106
|
const ftsResult = await client.execute({
|
|
65
107
|
sql: `SELECT e.id FROM entities e
|
|
66
108
|
JOIN entities_fts fts ON e.rowid = fts.rowid
|
|
@@ -246,7 +288,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
246
288
|
let rerankerAvailable = false;
|
|
247
289
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
248
290
|
try {
|
|
249
|
-
const { isRerankerAvailable } = await import("./reranker-
|
|
291
|
+
const { isRerankerAvailable } = await import("./reranker-UCPLQZE2.js");
|
|
250
292
|
rerankerAvailable = isRerankerAvailable();
|
|
251
293
|
} catch {
|
|
252
294
|
}
|
|
@@ -301,7 +343,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
301
343
|
]).catch(() => []),
|
|
302
344
|
includeStructuredCards ? (async () => {
|
|
303
345
|
try {
|
|
304
|
-
const { searchMemoryCards } = await import("./memory-cards-
|
|
346
|
+
const { searchMemoryCards } = await import("./memory-cards-H4BJJ5OK.js");
|
|
305
347
|
return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
|
|
306
348
|
} catch {
|
|
307
349
|
return [];
|
|
@@ -310,7 +352,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
310
352
|
// Reflection insights: patterns, contradictions, summaries across sessions
|
|
311
353
|
includeStructuredCards ? (async () => {
|
|
312
354
|
try {
|
|
313
|
-
const { searchReflections } = await import("./memory-reflection-
|
|
355
|
+
const { searchReflections } = await import("./memory-reflection-GGB5K35L.js");
|
|
314
356
|
const insights = await searchReflections(effectiveQuery, agentId, 5);
|
|
315
357
|
return insights.map((ins) => ({
|
|
316
358
|
id: ins.id,
|
|
@@ -386,7 +428,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
386
428
|
let entityBoostRan = false;
|
|
387
429
|
if (merged.length > 0) {
|
|
388
430
|
try {
|
|
389
|
-
const { applyEntityBoost } = await import("./entity-boost-
|
|
431
|
+
const { applyEntityBoost } = await import("./entity-boost-6ZVX7DFB.js");
|
|
390
432
|
const boosted = await applyEntityBoost(merged, effectiveQuery, getClient());
|
|
391
433
|
merged = boosted.results;
|
|
392
434
|
graphContextMap = boosted.graphContext;
|
|
@@ -410,7 +452,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
410
452
|
try {
|
|
411
453
|
let rerankedRecords;
|
|
412
454
|
if (graphContextMap.size > 0) {
|
|
413
|
-
const { rerankWithContext } = await import("./reranker-
|
|
455
|
+
const { rerankWithContext } = await import("./reranker-UCPLQZE2.js");
|
|
414
456
|
const candidates = merged.map((m) => ({
|
|
415
457
|
text: m.raw_text,
|
|
416
458
|
context: graphContextMap.get(m.id)
|
|
@@ -418,7 +460,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
418
460
|
const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
|
|
419
461
|
rerankedRecords = scored.map((s) => merged[s.index]);
|
|
420
462
|
} else {
|
|
421
|
-
const { rerank } = await import("./reranker-
|
|
463
|
+
const { rerank } = await import("./reranker-UCPLQZE2.js");
|
|
422
464
|
rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
|
|
423
465
|
}
|
|
424
466
|
if (rerankedRecords.length > 0) {
|
|
@@ -714,16 +756,18 @@ async function lightweightSearch(queryText, agentId, options) {
|
|
|
714
756
|
}
|
|
715
757
|
const allTerms = queryText.toLowerCase().split(/\s+/).filter((t) => t.length >= 3).map((t) => t.replace(/[^a-z0-9_]/g, "")).filter((t) => t.length >= 3 && !FTS_STOP_WORDS.has(t));
|
|
716
758
|
const contentTerms = allTerms.filter((t) => !nameTermsSet.has(t));
|
|
717
|
-
const terms = contentTerms.length > 0 ? contentTerms : allTerms;
|
|
759
|
+
const terms = daemonSafeFtsTerms(contentTerms.length > 0 ? contentTerms : allTerms);
|
|
718
760
|
if (terms.length === 0) {
|
|
719
761
|
return recentRecords(agentId, options, limit);
|
|
720
762
|
}
|
|
721
|
-
const
|
|
763
|
+
const usePrefixTerms = shouldUseFtsPrefix(terms);
|
|
764
|
+
const prefixTerms = terms.map((t) => ftsTerm(t, usePrefixTerms));
|
|
722
765
|
const useAnd = terms.length >= 3;
|
|
723
766
|
const innerExpr = useAnd ? prefixTerms.join(" AND ") : prefixTerms.join(" OR ");
|
|
724
767
|
const matchExpr = `{raw_text keywords}: ${innerExpr}`;
|
|
725
768
|
const results = await ftsQuery(client, matchExpr, agentId, options, limit);
|
|
726
|
-
|
|
769
|
+
const broadOrFallbackIsSafe = !isDaemonProcess() || terms.length < DAEMON_SAFE_FTS_TERM_THRESHOLD;
|
|
770
|
+
if (useAnd && results.length < limit && broadOrFallbackIsSafe) {
|
|
727
771
|
const orExpr = `{raw_text keywords}: ${prefixTerms.join(" OR ")}`;
|
|
728
772
|
const orResults = await ftsQuery(client, orExpr, agentId, options, limit);
|
|
729
773
|
const seen = new Set(results.map((r) => r.id));
|
|
@@ -733,13 +777,15 @@ async function lightweightSearch(queryText, agentId, options) {
|
|
|
733
777
|
seen.add(r.id);
|
|
734
778
|
}
|
|
735
779
|
}
|
|
780
|
+
} else if (useAnd && results.length < limit && !broadOrFallbackIsSafe) {
|
|
781
|
+
logDaemonBroadFtsSkipOnce(terms);
|
|
736
782
|
}
|
|
737
783
|
if (options?.includeSource && results.length > 0) {
|
|
738
784
|
await attachDocumentMetadata(results);
|
|
739
785
|
}
|
|
740
786
|
if (results.length >= 2) {
|
|
741
787
|
try {
|
|
742
|
-
const { recordCoActivations } = await import("./co-activation-
|
|
788
|
+
const { recordCoActivations } = await import("./co-activation-L6I2LSJO.js");
|
|
743
789
|
const ids = results.slice(0, 10).map((r) => r.id);
|
|
744
790
|
void recordCoActivations(ids);
|
|
745
791
|
} catch {
|
|
@@ -747,7 +793,7 @@ async function lightweightSearch(queryText, agentId, options) {
|
|
|
747
793
|
}
|
|
748
794
|
if (options?.includeStructuredCards !== true) return results;
|
|
749
795
|
try {
|
|
750
|
-
const { searchMemoryCards } = await import("./memory-cards-
|
|
796
|
+
const { searchMemoryCards } = await import("./memory-cards-H4BJJ5OK.js");
|
|
751
797
|
const cardResults = await searchMemoryCards(queryText, agentId, options);
|
|
752
798
|
if (cardResults.length > 0) {
|
|
753
799
|
return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
enqueueMemory
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MEIHREPM.js";
|
|
4
4
|
import {
|
|
5
5
|
isClientConnected,
|
|
6
6
|
sendDaemonRequest
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RRHSONV5.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/memory-queue-client.ts
|
|
10
10
|
async function writeMemoryViaDaemon(entry) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildClaudeHttpMcpEntry
|
|
3
|
-
} from "./chunk-5WUTKDH6.js";
|
|
4
1
|
import {
|
|
5
2
|
loadPreferences
|
|
6
3
|
} from "./chunk-GNHN5HRQ.js";
|
|
4
|
+
import {
|
|
5
|
+
buildClaudeHttpMcpEntry
|
|
6
|
+
} from "./chunk-ZVXJSQOR.js";
|
|
7
7
|
import {
|
|
8
8
|
EXE_HOOKS,
|
|
9
9
|
isLegacyHomeDirHookCommand,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-L3TB7CC3.js";
|
|
12
12
|
import {
|
|
13
13
|
ensureAllAgentSymlinks
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-JLNXKG3K.js";
|
|
15
15
|
import {
|
|
16
16
|
MCP_LEGACY_KEY,
|
|
17
17
|
MCP_PRIMARY_KEY
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ensureWorktree
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZKFPHJIJ.js";
|
|
4
4
|
import {
|
|
5
5
|
queueIntercom
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5CHYEKMH.js";
|
|
7
7
|
import {
|
|
8
8
|
buildTaskResult,
|
|
9
9
|
serializeMessage
|
|
10
10
|
} from "./chunk-4JERP7NT.js";
|
|
11
11
|
import {
|
|
12
12
|
registerSession
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GHEWRYMY.js";
|
|
14
14
|
import {
|
|
15
15
|
getTransport
|
|
16
16
|
} from "./chunk-MVW62NIZ.js";
|
|
@@ -19,18 +19,18 @@ import {
|
|
|
19
19
|
} from "./chunk-CX6GL3ZJ.js";
|
|
20
20
|
import {
|
|
21
21
|
recordOrchestrationEventBestEffort
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-HCBMPZDT.js";
|
|
23
23
|
import {
|
|
24
24
|
getAgentRuntime,
|
|
25
25
|
normalizeCcModelName
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-XJUUWHVN.js";
|
|
27
27
|
import {
|
|
28
28
|
RUNTIME_TABLE
|
|
29
29
|
} from "./chunk-NGP6LSV2.js";
|
|
30
30
|
import {
|
|
31
31
|
PlanLimitError,
|
|
32
32
|
assertEmployeeLimitSync
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-I5PIBL56.js";
|
|
34
34
|
import {
|
|
35
35
|
getSessionKey
|
|
36
36
|
} from "./chunk-CVYC6DUW.js";
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
} from "./chunk-MP2AFCGL.js";
|
|
46
46
|
import {
|
|
47
47
|
ensureAgentSymlink
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-JLNXKG3K.js";
|
|
49
49
|
import {
|
|
50
50
|
expandDualPrefixTools
|
|
51
51
|
} from "./chunk-HYZV25LY.js";
|
|
@@ -57,13 +57,13 @@ import {
|
|
|
57
57
|
isCoordinatorName,
|
|
58
58
|
loadEmployees,
|
|
59
59
|
loadEmployeesSync
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-CEJO7244.js";
|
|
61
61
|
import {
|
|
62
62
|
loadDeviceId
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-MOZ2YQ54.js";
|
|
64
64
|
import {
|
|
65
65
|
EXE_AI_DIR
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-VXIMSRTO.js";
|
|
67
67
|
import {
|
|
68
68
|
atomicWriteJsonSync,
|
|
69
69
|
atomicWriteSync
|
|
@@ -527,7 +527,7 @@ async function createTaskCore(input) {
|
|
|
527
527
|
if (isCoordinatorSession) {
|
|
528
528
|
earlySessionScope = resolved;
|
|
529
529
|
} else {
|
|
530
|
-
const { getSessionProject } = await import("./session-scope-
|
|
530
|
+
const { getSessionProject } = await import("./session-scope-VMIPAZU7.js");
|
|
531
531
|
const sessionProject = getSessionProject(resolved);
|
|
532
532
|
if (sessionProject && sessionProject !== input.projectName) {
|
|
533
533
|
scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
|
|
@@ -549,7 +549,7 @@ async function createTaskCore(input) {
|
|
|
549
549
|
let blockedById = null;
|
|
550
550
|
const initialStatus = input.blockedBy ? "blocked" : "open";
|
|
551
551
|
if (input.blockedBy) {
|
|
552
|
-
const blocker = await resolveTask(client, input.blockedBy);
|
|
552
|
+
const blocker = await resolveTask(client, input.blockedBy, earlySessionScope);
|
|
553
553
|
blockedById = String(blocker.id);
|
|
554
554
|
}
|
|
555
555
|
let parentTaskId = null;
|
|
@@ -565,7 +565,7 @@ async function createTaskCore(input) {
|
|
|
565
565
|
}
|
|
566
566
|
if (parentRef) {
|
|
567
567
|
try {
|
|
568
|
-
const parent = await resolveTask(client, parentRef);
|
|
568
|
+
const parent = await resolveTask(client, parentRef, earlySessionScope);
|
|
569
569
|
parentTaskId = String(parent.id);
|
|
570
570
|
} catch (err) {
|
|
571
571
|
if (!input.parentTaskId) {
|
|
@@ -776,7 +776,7 @@ async function queryTaskRows(opts) {
|
|
|
776
776
|
}
|
|
777
777
|
if (opts.founderId !== null) {
|
|
778
778
|
try {
|
|
779
|
-
const { founderScopeFilter } = await import("./founder-context-
|
|
779
|
+
const { founderScopeFilter } = await import("./founder-context-Q2HUCZX4.js");
|
|
780
780
|
const founderFilter = founderScopeFilter(opts.founderId);
|
|
781
781
|
const cleaned = founderFilter.sql.replace(/^\s*AND\s+/, "");
|
|
782
782
|
conditions.push(cleaned);
|
|
@@ -811,7 +811,16 @@ async function listTasks(input) {
|
|
|
811
811
|
const queryOpts = {
|
|
812
812
|
assignedTo: input.assignedTo,
|
|
813
813
|
status: input.status || void 0,
|
|
814
|
-
|
|
814
|
+
// Public listTasks() must not silently scope to process.cwd().
|
|
815
|
+
// MCP/tool callers resolve project scope explicitly before calling here.
|
|
816
|
+
// Auto-detecting from this library made isolated test DB rows invisible
|
|
817
|
+
// (fixtures use arbitrary project names) and, in the daemon, could hide
|
|
818
|
+
// real cross-project tasks because the shared daemon cwd is exe-os.
|
|
819
|
+
//
|
|
820
|
+
// Lower-level queryTaskRows() keeps its historical auto-detect behavior for
|
|
821
|
+
// daemon/hook callers that deliberately omit projectName. listTasks()
|
|
822
|
+
// defaults to project-unscoped unless the caller provides a project.
|
|
823
|
+
projectName: input.projectName === void 0 ? null : input.projectName || null,
|
|
815
824
|
// Skip session scope when querying your own tasks — agents must ALWAYS see
|
|
816
825
|
// their own work regardless of which coordinator session created the task.
|
|
817
826
|
// Bug: bob-exe1 couldn't see tasks created by exe1 because session_scope='exe1'
|
|
@@ -985,7 +994,7 @@ async function updateTaskStatus(input) {
|
|
|
985
994
|
} catch {
|
|
986
995
|
}
|
|
987
996
|
try {
|
|
988
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
997
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-P3XQZDTH.js");
|
|
989
998
|
await writeNotification2({
|
|
990
999
|
agentId: reviewer,
|
|
991
1000
|
agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
|
|
@@ -1400,7 +1409,7 @@ ${input.result ?? ""}`;
|
|
|
1400
1409
|
}
|
|
1401
1410
|
if (shouldWriteCompletionMemory && input.result) {
|
|
1402
1411
|
try {
|
|
1403
|
-
const { writeMemoryViaDaemon } = await import("./memory-queue-client-
|
|
1412
|
+
const { writeMemoryViaDaemon } = await import("./memory-queue-client-JZCFYTWQ.js");
|
|
1404
1413
|
await writeMemoryViaDaemon({
|
|
1405
1414
|
raw_text: input.result,
|
|
1406
1415
|
agent_id: String(row.assigned_to),
|
|
@@ -1503,7 +1512,7 @@ ${input.result ?? ""}`;
|
|
|
1503
1512
|
}
|
|
1504
1513
|
if (input.status === "done" || input.status === "needs_review") {
|
|
1505
1514
|
try {
|
|
1506
|
-
const { incrementSkillSuccess } = await import("./skill-refinement-
|
|
1515
|
+
const { incrementSkillSuccess } = await import("./skill-refinement-NRG4WWRW.js");
|
|
1507
1516
|
await incrementSkillSuccess(
|
|
1508
1517
|
String(row.assigned_to),
|
|
1509
1518
|
row.project_name ? String(row.project_name) : null
|
|
@@ -1513,7 +1522,7 @@ ${input.result ?? ""}`;
|
|
|
1513
1522
|
}
|
|
1514
1523
|
if (input.status === "done" || input.status === "needs_review" || input.status === "cancelled" || input.status === "closed") {
|
|
1515
1524
|
try {
|
|
1516
|
-
const { clearQueueForAgent } = await import("./intercom-queue-
|
|
1525
|
+
const { clearQueueForAgent } = await import("./intercom-queue-A6UJEFIF.js");
|
|
1517
1526
|
clearQueueForAgent(String(row.assigned_to));
|
|
1518
1527
|
} catch {
|
|
1519
1528
|
}
|
|
@@ -2138,9 +2147,9 @@ async function markDoneTaskNotificationsAsRead(sessionScope) {
|
|
|
2138
2147
|
AND task_file IS NOT NULL
|
|
2139
2148
|
${scope.sql}
|
|
2140
2149
|
AND task_file IN (
|
|
2141
|
-
SELECT task_file FROM tasks WHERE status
|
|
2150
|
+
SELECT task_file FROM tasks WHERE status IN ('done', 'closed', 'cancelled')
|
|
2142
2151
|
)`,
|
|
2143
|
-
args: [...scope.args
|
|
2152
|
+
args: [...scope.args]
|
|
2144
2153
|
});
|
|
2145
2154
|
return result.rowsAffected;
|
|
2146
2155
|
} catch {
|
|
@@ -2461,7 +2470,8 @@ async function createReviewForCompletedTask(row, result, _baseDir, now) {
|
|
|
2461
2470
|
event: "task_complete",
|
|
2462
2471
|
project: String(row.project_name),
|
|
2463
2472
|
summary: `completed "${taskTitle}" \u2014 ready for review`,
|
|
2464
|
-
taskFile
|
|
2473
|
+
taskFile,
|
|
2474
|
+
sessionScope: row.session_scope ? String(row.session_scope) : void 0
|
|
2465
2475
|
});
|
|
2466
2476
|
const autoApprove = false;
|
|
2467
2477
|
if (!autoApprove) {
|
|
@@ -2560,6 +2570,22 @@ async function cleanupReviewFile(row, taskFile, _baseDir) {
|
|
|
2560
2570
|
}
|
|
2561
2571
|
}
|
|
2562
2572
|
|
|
2573
|
+
// src/lib/intercom-prompts.ts
|
|
2574
|
+
function formatIntercomPrompt(reason = "nudge") {
|
|
2575
|
+
switch (reason) {
|
|
2576
|
+
case "completion":
|
|
2577
|
+
return "An employee completed work. Run task(action='list', status='needs_review') to review it.";
|
|
2578
|
+
case "message":
|
|
2579
|
+
return "You have a new message. Run message(action='acknowledge') after reading it, and check task(action='list') only if the message references work.";
|
|
2580
|
+
case "notification":
|
|
2581
|
+
return "You have pending notifications. Run task(action='list', status='needs_review') and task(action='list', status='open') to check actionable work.";
|
|
2582
|
+
case "signal":
|
|
2583
|
+
case "nudge":
|
|
2584
|
+
default:
|
|
2585
|
+
return "P0: You have a new task dispatched. Run task(action='list', status='open') to find it. Start immediately.";
|
|
2586
|
+
}
|
|
2587
|
+
}
|
|
2588
|
+
|
|
2563
2589
|
// src/lib/tmux-routing.ts
|
|
2564
2590
|
var SPAWN_LOCK_DIR = path5.join(os4.homedir(), ".exe-os", "spawn-locks");
|
|
2565
2591
|
function spawnLockPath(sessionName) {
|
|
@@ -2971,7 +2997,7 @@ async function verifyPaneAtCapacity(sessionName) {
|
|
|
2971
2997
|
reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
|
|
2972
2998
|
};
|
|
2973
2999
|
}
|
|
2974
|
-
const { isAtCapacity } = await import("./capacity-monitor-
|
|
3000
|
+
const { isAtCapacity } = await import("./capacity-monitor-4CSBC7AP.js");
|
|
2975
3001
|
if (!isAtCapacity(pane)) {
|
|
2976
3002
|
return {
|
|
2977
3003
|
atCapacity: false,
|
|
@@ -3116,6 +3142,13 @@ function sendIntercom(targetSession, opts) {
|
|
|
3116
3142
|
tmuxSession: targetSession,
|
|
3117
3143
|
payload: { reason, force: Boolean(opts?.force) }
|
|
3118
3144
|
});
|
|
3145
|
+
const isVitest = process.env.VITEST === "true" || process.env.NODE_ENV === "test";
|
|
3146
|
+
const transportName = transport.constructor?.name ?? "";
|
|
3147
|
+
if (isVitest && transportName === "TmuxTransport" && process.env.EXE_TEST_ALLOW_REAL_INTERCOM !== "1") {
|
|
3148
|
+
logIntercom(`SUPPRESSED_TEST \u2192 ${targetSession} (real tmux intercom disabled under Vitest)`);
|
|
3149
|
+
recordResult("debounced", "test_real_tmux_suppressed");
|
|
3150
|
+
return "debounced";
|
|
3151
|
+
}
|
|
3119
3152
|
try {
|
|
3120
3153
|
const callerScope = resolveExeSession();
|
|
3121
3154
|
if (callerScope && isExeSession(callerScope) && targetSession.includes("-")) {
|
|
@@ -3156,14 +3189,14 @@ function sendIntercom(targetSession, opts) {
|
|
|
3156
3189
|
}
|
|
3157
3190
|
const sessionState = getSessionState(targetSession);
|
|
3158
3191
|
if (sessionState === "no_claude") {
|
|
3159
|
-
queueIntercom(targetSession, "claude not running in session");
|
|
3192
|
+
queueIntercom(targetSession, "claude not running in session", reason);
|
|
3160
3193
|
const batched2 = recordDebounce(targetSession);
|
|
3161
3194
|
logIntercom(`QUEUED \u2192 ${targetSession} (no claude process)${batched2 > 0 ? ` [${batched2} batched]` : ""}`);
|
|
3162
3195
|
recordResult("queued", "no_claude");
|
|
3163
3196
|
return "queued";
|
|
3164
3197
|
}
|
|
3165
3198
|
if (!opts?.force && (sessionState === "thinking" || sessionState === "tool")) {
|
|
3166
|
-
queueIntercom(targetSession, "session busy at send time");
|
|
3199
|
+
queueIntercom(targetSession, "session busy at send time", reason);
|
|
3167
3200
|
const batched2 = recordDebounce(targetSession);
|
|
3168
3201
|
logIntercom(`QUEUED \u2192 ${targetSession} (session busy)${batched2 > 0 ? ` [${batched2} batched]` : ""}`);
|
|
3169
3202
|
recordResult("queued", "session_busy");
|
|
@@ -3186,7 +3219,7 @@ function sendIntercom(targetSession, opts) {
|
|
|
3186
3219
|
logIntercom(`COPY_MODE \u2192 ${targetSession} (exiting copy mode first)`);
|
|
3187
3220
|
transport.sendKeys(targetSession, "q");
|
|
3188
3221
|
}
|
|
3189
|
-
const msg = reason
|
|
3222
|
+
const msg = formatIntercomPrompt(reason);
|
|
3190
3223
|
transport.sendKeysLiteral(targetSession, msg);
|
|
3191
3224
|
const batched = recordDebounce(targetSession);
|
|
3192
3225
|
logIntercom(`DELIVERED \u2192 ${targetSession}${batched > 0 ? ` [${batched} nudges batched during debounce]` : ""} (fire-and-forget)`);
|
|
@@ -3787,6 +3820,7 @@ export {
|
|
|
3787
3820
|
getReviewChecklist,
|
|
3788
3821
|
createReviewForCompletedTask,
|
|
3789
3822
|
cleanupReviewFile,
|
|
3823
|
+
formatIntercomPrompt,
|
|
3790
3824
|
acquireSpawnLock,
|
|
3791
3825
|
releaseSpawnLock,
|
|
3792
3826
|
getMySession,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordOrchestrationEventBestEffort
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HCBMPZDT.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-registry.ts
|
|
6
6
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
@@ -135,7 +135,23 @@ function checkSessionRegistryConsistency(liveSessionsOverride) {
|
|
|
135
135
|
return result;
|
|
136
136
|
}
|
|
137
137
|
function looksLikeExeOsSession(sessionName) {
|
|
138
|
-
|
|
138
|
+
const coordName = getCoordinatorNameCached();
|
|
139
|
+
const escaped = coordName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
140
|
+
const coordPattern = new RegExp(`^${escaped}\\d*$`);
|
|
141
|
+
const employeePattern = new RegExp(`-${escaped}\\d*$`);
|
|
142
|
+
return coordPattern.test(sessionName) || employeePattern.test(sessionName);
|
|
143
|
+
}
|
|
144
|
+
function getCoordinatorNameCached() {
|
|
145
|
+
try {
|
|
146
|
+
const rosterPath = path.join(os.homedir(), ".exe-os", "exe-employees.json");
|
|
147
|
+
if (existsSync(rosterPath)) {
|
|
148
|
+
const roster = JSON.parse(readFileSync(rosterPath, "utf8"));
|
|
149
|
+
const coo = roster.find((e) => (e.role ?? "").toUpperCase() === "COO");
|
|
150
|
+
if (coo?.name) return coo.name;
|
|
151
|
+
}
|
|
152
|
+
} catch {
|
|
153
|
+
}
|
|
154
|
+
return "exe";
|
|
139
155
|
}
|
|
140
156
|
|
|
141
157
|
export {
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordSessionKill
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VRIMTCX2.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter,
|
|
6
6
|
verifyPaneAtCapacity,
|
|
7
7
|
writeNotification
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-F7JLZXHC.js";
|
|
9
9
|
import {
|
|
10
10
|
listSessions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GHEWRYMY.js";
|
|
12
12
|
import {
|
|
13
13
|
getTransport
|
|
14
14
|
} from "./chunk-MVW62NIZ.js";
|
|
15
15
|
import {
|
|
16
16
|
recordOrchestrationEventBestEffort
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HCBMPZDT.js";
|
|
18
18
|
import {
|
|
19
19
|
getClient,
|
|
20
20
|
isCoordinatorName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-CEJO7244.js";
|
|
22
22
|
|
|
23
23
|
// src/lib/capacity-monitor.ts
|
|
24
24
|
var CAPACITY_PATTERNS = [
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getActiveAgent
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MCESA5UW.js";
|
|
4
4
|
import {
|
|
5
5
|
listTasks
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-F7JLZXHC.js";
|
|
7
7
|
|
|
8
8
|
// src/mcp/tools/list-tasks.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -23,12 +23,10 @@ function registerListTasks(server) {
|
|
|
23
23
|
},
|
|
24
24
|
async ({ assigned_to, status, project_name, priority, cross_session }) => {
|
|
25
25
|
try {
|
|
26
|
-
const { agentId
|
|
26
|
+
const { agentId } = getActiveAgent();
|
|
27
27
|
const isOwnQuery = assigned_to && assigned_to === agentId;
|
|
28
28
|
const resolvedProject = project_name && project_name !== "all" ? project_name : null;
|
|
29
|
-
const
|
|
30
|
-
const isCoord = canCoord(agentId, agentRole);
|
|
31
|
-
const effectiveCrossSession = isCoord ? cross_session ?? true : false;
|
|
29
|
+
const effectiveCrossSession = cross_session === true;
|
|
32
30
|
const tasks = await listTasks({
|
|
33
31
|
assignedTo: assigned_to,
|
|
34
32
|
status,
|