@askexenow/exe-os 0.9.239 → 0.9.243
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 +23 -4
- 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/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 +324 -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-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-F4TCKCKK.js → chunk-ITZVPCBQ.js} +33 -12
- 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-C2YS2AA6.js → chunk-U7WOVXBB.js} +2 -2
- package/dist/chunk-UIRWDGMB.js +230 -0
- 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/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-JIWJGGLX.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 +137 -297
- 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
|
@@ -1,42 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
dispatchTaskToEmployee,
|
|
3
|
+
markTaskNotificationsRead,
|
|
4
|
+
notifyTaskDone
|
|
5
|
+
} from "./chunk-HOGTZLVU.js";
|
|
1
6
|
import {
|
|
2
7
|
cleanupReviewFile,
|
|
3
8
|
createTaskCore,
|
|
4
9
|
deleteTaskCore,
|
|
5
|
-
employeeSessionName,
|
|
6
|
-
ensureEmployee,
|
|
7
10
|
markAsReadByTaskFile,
|
|
8
|
-
notifyParentExe,
|
|
9
|
-
resolveExeSession,
|
|
10
|
-
sendIntercom,
|
|
11
11
|
sessionScopeFilter,
|
|
12
12
|
updateTaskStatus,
|
|
13
13
|
writeNotification
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
getTransport
|
|
17
|
-
} from "./chunk-MVW62NIZ.js";
|
|
18
|
-
import {
|
|
19
|
-
recordOrchestrationEventBestEffort
|
|
20
|
-
} from "./chunk-5NJ4A4ZA.js";
|
|
21
|
-
import {
|
|
22
|
-
getAgentRuntime
|
|
23
|
-
} from "./chunk-6OJJF4WP.js";
|
|
24
|
-
import {
|
|
25
|
-
getSessionKey
|
|
26
|
-
} from "./chunk-CVYC6DUW.js";
|
|
14
|
+
} from "./chunk-F7JLZXHC.js";
|
|
27
15
|
import {
|
|
28
16
|
orgBus
|
|
29
17
|
} from "./chunk-MP2AFCGL.js";
|
|
30
18
|
import {
|
|
31
19
|
getClient,
|
|
32
20
|
getCoordinatorName,
|
|
33
|
-
isCoordinatorName
|
|
34
|
-
|
|
35
|
-
shouldAutoInstance
|
|
36
|
-
} from "./chunk-2H55BIV2.js";
|
|
21
|
+
isCoordinatorName
|
|
22
|
+
} from "./chunk-CEJO7244.js";
|
|
37
23
|
import {
|
|
38
24
|
EXE_AI_DIR
|
|
39
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-VXIMSRTO.js";
|
|
40
26
|
|
|
41
27
|
// src/lib/tasks.ts
|
|
42
28
|
import path2 from "path";
|
|
@@ -49,7 +35,7 @@ async function cascadeUnblock(taskId, baseDir, now) {
|
|
|
49
35
|
const client = getClient();
|
|
50
36
|
const ubScope = sessionScopeFilter();
|
|
51
37
|
const blockedRows = await client.execute({
|
|
52
|
-
sql: `SELECT id, title, assigned_to, priority, task_file FROM tasks WHERE blocked_by = ? AND status = 'blocked'${ubScope.sql}`,
|
|
38
|
+
sql: `SELECT id, title, assigned_to, priority, task_file, project_name FROM tasks WHERE blocked_by = ? AND status = 'blocked'${ubScope.sql}`,
|
|
53
39
|
args: [taskId, ...ubScope.args]
|
|
54
40
|
});
|
|
55
41
|
if (blockedRows.rows.length === 0) return;
|
|
@@ -75,15 +61,41 @@ async function cascadeUnblock(taskId, baseDir, now) {
|
|
|
75
61
|
}
|
|
76
62
|
if (unblockedRows.rows.length > 0 && !process.env.VITEST) {
|
|
77
63
|
try {
|
|
78
|
-
const {
|
|
64
|
+
const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-4EQYG52H.js");
|
|
79
65
|
const dispatched = /* @__PURE__ */ new Set();
|
|
80
66
|
for (const ur of unblockedRows.rows) {
|
|
81
67
|
const assignee = String(ur.assigned_to);
|
|
82
68
|
if (dispatched.has(assignee)) continue;
|
|
83
69
|
dispatched.add(assignee);
|
|
84
|
-
|
|
70
|
+
const unblockedId = String(ur.id);
|
|
71
|
+
const title = String(ur.title);
|
|
72
|
+
const priority = String(ur.priority ?? "P2");
|
|
73
|
+
const taskFile = String(ur.task_file ?? "");
|
|
74
|
+
const projectName = ur.project_name != null ? String(ur.project_name) : void 0;
|
|
75
|
+
dispatchTaskToEmployee2({
|
|
76
|
+
assignedTo: assignee,
|
|
77
|
+
taskId: unblockedId,
|
|
78
|
+
title,
|
|
79
|
+
priority,
|
|
80
|
+
taskFile,
|
|
81
|
+
initialStatus: "open",
|
|
82
|
+
projectDir: baseDir,
|
|
83
|
+
projectName
|
|
84
|
+
}).catch(() => {
|
|
85
|
+
});
|
|
85
86
|
}
|
|
86
87
|
} catch {
|
|
88
|
+
try {
|
|
89
|
+
const { queueIntercom } = await import("./intercom-queue-A6UJEFIF.js");
|
|
90
|
+
const dispatched = /* @__PURE__ */ new Set();
|
|
91
|
+
for (const ur of unblockedRows.rows) {
|
|
92
|
+
const assignee = String(ur.assigned_to);
|
|
93
|
+
if (dispatched.has(assignee)) continue;
|
|
94
|
+
dispatched.add(assignee);
|
|
95
|
+
queueIntercom(`${assignee}`, `unblocked: "${String(ur.title)}" is now ready`);
|
|
96
|
+
}
|
|
97
|
+
} catch {
|
|
98
|
+
}
|
|
87
99
|
}
|
|
88
100
|
}
|
|
89
101
|
}
|
|
@@ -112,13 +124,13 @@ async function checkSubtaskCompletion(parentTaskId, projectName) {
|
|
|
112
124
|
const scScope = sessionScopeFilter();
|
|
113
125
|
const remaining = await client.execute({
|
|
114
126
|
sql: `SELECT COUNT(*) as cnt FROM tasks
|
|
115
|
-
WHERE parent_task_id = ? AND status NOT IN ('done', 'cancelled', 'closed')${scScope.sql}`,
|
|
127
|
+
WHERE parent_task_id = ? AND status NOT IN ('done', 'needs_review', 'cancelled', 'closed')${scScope.sql}`,
|
|
116
128
|
args: [parentTaskId, ...scScope.args]
|
|
117
129
|
});
|
|
118
130
|
const cnt = Number(remaining.rows[0]?.cnt ?? 1);
|
|
119
131
|
if (cnt === 0) {
|
|
120
132
|
const parentRow = await client.execute({
|
|
121
|
-
sql: `SELECT assigned_to, title, task_file, project_name FROM tasks WHERE id = ?`,
|
|
133
|
+
sql: `SELECT assigned_to, title, task_file, project_name, session_scope FROM tasks WHERE id = ?`,
|
|
122
134
|
args: [parentTaskId]
|
|
123
135
|
});
|
|
124
136
|
if (parentRow.rows.length === 1) {
|
|
@@ -130,200 +142,12 @@ async function checkSubtaskCompletion(parentTaskId, projectName) {
|
|
|
130
142
|
event: "subtasks_complete",
|
|
131
143
|
project: parentProject,
|
|
132
144
|
summary: `All subtasks complete for "${String(pr.title)}" \u2014 ready for rollup review`,
|
|
133
|
-
taskFile: String(pr.task_file)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// src/lib/tasks-notify.ts
|
|
140
|
-
function resolveDispatchRuntime(agentId, override) {
|
|
141
|
-
if (override) return override;
|
|
142
|
-
try {
|
|
143
|
-
return getAgentRuntime(agentId).runtime ?? null;
|
|
144
|
-
} catch {
|
|
145
|
-
return null;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
async function dispatchTaskToEmployee(input) {
|
|
149
|
-
if (isCoordinatorName(input.assignedTo)) return { dispatched: "skipped" };
|
|
150
|
-
const dispatchRuntime = resolveDispatchRuntime(input.assignedTo, input.spawnRuntime);
|
|
151
|
-
recordOrchestrationEventBestEffort({
|
|
152
|
-
eventType: "dispatch.attempted",
|
|
153
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
154
|
-
taskId: input.taskId ?? null,
|
|
155
|
-
agentId: input.assignedTo,
|
|
156
|
-
runtime: dispatchRuntime,
|
|
157
|
-
payload: { priority: input.priority, projectName: input.projectName }
|
|
158
|
-
});
|
|
159
|
-
let crossProject = false;
|
|
160
|
-
if (input.projectName) {
|
|
161
|
-
try {
|
|
162
|
-
const { assertSessionScope } = await import("./session-scope-DRZBQ32Y.js");
|
|
163
|
-
const check = assertSessionScope("dispatch_task", input.projectName);
|
|
164
|
-
if (check.reason === "cross_session_denied") {
|
|
165
|
-
crossProject = true;
|
|
166
|
-
recordOrchestrationEventBestEffort({
|
|
167
|
-
eventType: "dispatch.failed",
|
|
168
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
169
|
-
taskId: input.taskId ?? null,
|
|
170
|
-
agentId: input.assignedTo,
|
|
171
|
-
runtime: dispatchRuntime,
|
|
172
|
-
errorCode: "cross_session_denied",
|
|
173
|
-
payload: { projectName: input.projectName }
|
|
174
|
-
});
|
|
175
|
-
return { dispatched: "skipped", crossProject: true };
|
|
176
|
-
}
|
|
177
|
-
} catch {
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
try {
|
|
181
|
-
const transport = getTransport();
|
|
182
|
-
const exeSession = resolveExeSession();
|
|
183
|
-
if (!exeSession) {
|
|
184
|
-
recordOrchestrationEventBestEffort({
|
|
185
|
-
eventType: "dispatch.failed",
|
|
186
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
187
|
-
taskId: input.taskId ?? null,
|
|
188
|
-
agentId: input.assignedTo,
|
|
189
|
-
runtime: dispatchRuntime,
|
|
190
|
-
errorCode: "no_exe_session"
|
|
145
|
+
taskFile: String(pr.task_file),
|
|
146
|
+
// Scope the notification to the parent task's coordinator session —
|
|
147
|
+
// prevents subtask-complete notifications from leaking to other coordinator lanes.
|
|
148
|
+
sessionScope: pr.session_scope ? String(pr.session_scope) : void 0
|
|
191
149
|
});
|
|
192
|
-
return { dispatched: "session_missing" };
|
|
193
150
|
}
|
|
194
|
-
const multiInstance = isMultiInstance(input.assignedTo);
|
|
195
|
-
if (multiInstance) {
|
|
196
|
-
const projectDir = input.projectDir ?? process.cwd();
|
|
197
|
-
const autoOpts = shouldAutoInstance(input.assignedTo);
|
|
198
|
-
const result = ensureEmployee(input.assignedTo, exeSession, projectDir, {
|
|
199
|
-
...autoOpts,
|
|
200
|
-
runtimeOverride: input.spawnRuntime,
|
|
201
|
-
modelOverride: input.spawnModel
|
|
202
|
-
});
|
|
203
|
-
if (result.status === "failed") {
|
|
204
|
-
process.stderr.write(
|
|
205
|
-
`[dispatch-audit] SPAWN FAILED \u2192 ${input.assignedTo} | task="${input.title}" [${input.priority}] | error=${result.error}
|
|
206
|
-
`
|
|
207
|
-
);
|
|
208
|
-
recordOrchestrationEventBestEffort({
|
|
209
|
-
eventType: "dispatch.failed",
|
|
210
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
211
|
-
taskId: input.taskId ?? null,
|
|
212
|
-
agentId: input.assignedTo,
|
|
213
|
-
sessionScope: exeSession,
|
|
214
|
-
runtime: dispatchRuntime,
|
|
215
|
-
errorCode: "spawn_failed",
|
|
216
|
-
payload: { path: "multi_instance", error: result.error }
|
|
217
|
-
});
|
|
218
|
-
return { dispatched: "session_missing" };
|
|
219
|
-
}
|
|
220
|
-
const dispatched = result.status === "intercom_sent" || result.status === "intercom_unprocessed" ? "sent_unverified" : "spawned";
|
|
221
|
-
process.stderr.write(
|
|
222
|
-
`[dispatch-audit] ${dispatched === "spawned" ? "SPAWNED" : "INTERCOM"} \u2192 ${result.sessionName} | task="${input.title}" [${input.priority}]
|
|
223
|
-
`
|
|
224
|
-
);
|
|
225
|
-
recordOrchestrationEventBestEffort({
|
|
226
|
-
eventType: "dispatch.completed",
|
|
227
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
228
|
-
taskId: input.taskId ?? null,
|
|
229
|
-
agentId: input.assignedTo,
|
|
230
|
-
sessionScope: exeSession,
|
|
231
|
-
tmuxSession: result.sessionName,
|
|
232
|
-
runtime: dispatchRuntime,
|
|
233
|
-
result: dispatched,
|
|
234
|
-
payload: { path: "multi_instance", priority: input.priority }
|
|
235
|
-
});
|
|
236
|
-
return { dispatched, session: result.sessionName, crossProject };
|
|
237
|
-
}
|
|
238
|
-
const sessionName = employeeSessionName(input.assignedTo, exeSession);
|
|
239
|
-
if (transport.isAlive(sessionName)) {
|
|
240
|
-
const result = sendIntercom(sessionName, { force: true });
|
|
241
|
-
const dispatched = result === "acknowledged" || result === "debounced" || result === "queued" ? "verified" : result === "delivered" ? "sent_unverified" : "session_dead";
|
|
242
|
-
process.stderr.write(
|
|
243
|
-
`[dispatch-audit] intercom \u2192 ${sessionName} | task="${input.title}" [${input.priority}] | result=${dispatched} (sendIntercom=${result})
|
|
244
|
-
`
|
|
245
|
-
);
|
|
246
|
-
recordOrchestrationEventBestEffort({
|
|
247
|
-
eventType: "dispatch.completed",
|
|
248
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
249
|
-
taskId: input.taskId ?? null,
|
|
250
|
-
agentId: input.assignedTo,
|
|
251
|
-
sessionScope: exeSession,
|
|
252
|
-
tmuxSession: sessionName,
|
|
253
|
-
runtime: dispatchRuntime,
|
|
254
|
-
result: dispatched,
|
|
255
|
-
payload: { path: "single_instance_intercom", priority: input.priority }
|
|
256
|
-
});
|
|
257
|
-
return { dispatched, session: sessionName, crossProject };
|
|
258
|
-
} else {
|
|
259
|
-
const projectDir = input.projectDir ?? process.cwd();
|
|
260
|
-
const result = ensureEmployee(input.assignedTo, exeSession, projectDir, {
|
|
261
|
-
runtimeOverride: input.spawnRuntime,
|
|
262
|
-
modelOverride: input.spawnModel
|
|
263
|
-
});
|
|
264
|
-
if (result.status === "failed") {
|
|
265
|
-
process.stderr.write(
|
|
266
|
-
`[dispatch-audit] SPAWN FAILED \u2192 ${input.assignedTo} | task="${input.title}" [${input.priority}] | error=${result.error}
|
|
267
|
-
`
|
|
268
|
-
);
|
|
269
|
-
recordOrchestrationEventBestEffort({
|
|
270
|
-
eventType: "dispatch.failed",
|
|
271
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
272
|
-
taskId: input.taskId ?? null,
|
|
273
|
-
agentId: input.assignedTo,
|
|
274
|
-
sessionScope: exeSession,
|
|
275
|
-
runtime: dispatchRuntime,
|
|
276
|
-
errorCode: "spawn_failed",
|
|
277
|
-
payload: { path: "single_instance_spawn", error: result.error }
|
|
278
|
-
});
|
|
279
|
-
return { dispatched: "session_missing" };
|
|
280
|
-
}
|
|
281
|
-
process.stderr.write(
|
|
282
|
-
`[dispatch-audit] SPAWNED \u2192 ${result.sessionName} | task="${input.title}" [${input.priority}]
|
|
283
|
-
`
|
|
284
|
-
);
|
|
285
|
-
recordOrchestrationEventBestEffort({
|
|
286
|
-
eventType: "dispatch.completed",
|
|
287
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
288
|
-
taskId: input.taskId ?? null,
|
|
289
|
-
agentId: input.assignedTo,
|
|
290
|
-
sessionScope: exeSession,
|
|
291
|
-
tmuxSession: result.sessionName,
|
|
292
|
-
runtime: dispatchRuntime,
|
|
293
|
-
result: "spawned",
|
|
294
|
-
payload: { path: "single_instance_spawn", priority: input.priority }
|
|
295
|
-
});
|
|
296
|
-
return { dispatched: "spawned", session: result.sessionName, crossProject };
|
|
297
|
-
}
|
|
298
|
-
} catch {
|
|
299
|
-
recordOrchestrationEventBestEffort({
|
|
300
|
-
eventType: "dispatch.failed",
|
|
301
|
-
source: "tasks-notify.dispatchTaskToEmployee",
|
|
302
|
-
taskId: input.taskId ?? null,
|
|
303
|
-
agentId: input.assignedTo,
|
|
304
|
-
runtime: dispatchRuntime,
|
|
305
|
-
errorCode: "exception"
|
|
306
|
-
});
|
|
307
|
-
return { dispatched: "session_missing" };
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
function notifyTaskDone() {
|
|
311
|
-
try {
|
|
312
|
-
const key = getSessionKey();
|
|
313
|
-
if (key && !process.env.VITEST) {
|
|
314
|
-
notifyParentExe(key);
|
|
315
|
-
process.stderr.write(
|
|
316
|
-
`[dispatch-audit] notifyTaskDone \u2192 parent coordinator (session=${key})
|
|
317
|
-
`
|
|
318
|
-
);
|
|
319
|
-
}
|
|
320
|
-
} catch {
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
async function markTaskNotificationsRead(taskFile) {
|
|
324
|
-
try {
|
|
325
|
-
await markAsReadByTaskFile(taskFile);
|
|
326
|
-
} catch {
|
|
327
151
|
}
|
|
328
152
|
}
|
|
329
153
|
|
|
@@ -434,17 +258,17 @@ async function updateTask(input) {
|
|
|
434
258
|
const taskTitle = String(row.title);
|
|
435
259
|
let delivered = false;
|
|
436
260
|
try {
|
|
437
|
-
const { sendIntercom
|
|
438
|
-
const exeSession = row.session_scope ? String(row.session_scope) :
|
|
261
|
+
const { sendIntercom, resolveExeSession } = await import("./lib/tmux-routing.js");
|
|
262
|
+
const exeSession = row.session_scope ? String(row.session_scope) : resolveExeSession();
|
|
439
263
|
if (exeSession) {
|
|
440
264
|
const reviewerSession = `${reviewer}-${exeSession}`;
|
|
441
|
-
const result =
|
|
265
|
+
const result = sendIntercom(reviewerSession, { reason: "completion" });
|
|
442
266
|
if (result !== "failed") {
|
|
443
267
|
delivered = true;
|
|
444
268
|
process.stderr.write(`[tasks] EVENT: notified reviewer "${reviewer}" via tmux for "${taskTitle}"
|
|
445
269
|
`);
|
|
446
270
|
} else if (isCoordinatorName(reviewer)) {
|
|
447
|
-
const cooResult =
|
|
271
|
+
const cooResult = sendIntercom(exeSession, { reason: "completion" });
|
|
448
272
|
if (cooResult !== "failed") {
|
|
449
273
|
delivered = true;
|
|
450
274
|
process.stderr.write(`[tasks] EVENT: notified coordinator "${reviewer}" for "${taskTitle}"
|
|
@@ -460,12 +284,16 @@ async function updateTask(input) {
|
|
|
460
284
|
try {
|
|
461
285
|
process.stderr.write(`[tasks] EVENT: tmux delivery failed for reviewer="${reviewer}". Queueing for daemon delivery.
|
|
462
286
|
`);
|
|
463
|
-
const { queueIntercom } = await import("./intercom-queue-
|
|
464
|
-
const { resolveExeSession
|
|
465
|
-
const exeSession = row.session_scope ? String(row.session_scope) :
|
|
287
|
+
const { queueIntercom } = await import("./intercom-queue-A6UJEFIF.js");
|
|
288
|
+
const { resolveExeSession } = await import("./lib/tmux-routing.js");
|
|
289
|
+
const exeSession = row.session_scope ? String(row.session_scope) : resolveExeSession();
|
|
466
290
|
if (exeSession) {
|
|
467
291
|
const reviewerSession = isCoordinatorName(reviewer) ? exeSession : `${reviewer}-${exeSession}`;
|
|
468
|
-
queueIntercom(
|
|
292
|
+
queueIntercom(
|
|
293
|
+
reviewerSession,
|
|
294
|
+
`Review ready: "${taskTitle}" by ${String(row.assigned_to)}. Run /exe-review.`,
|
|
295
|
+
"completion"
|
|
296
|
+
);
|
|
469
297
|
}
|
|
470
298
|
} catch (e) {
|
|
471
299
|
process.stderr.write(`[tasks] EVENT: intercom queue failed: ${e instanceof Error ? e.message : String(e)}
|
|
@@ -473,7 +301,7 @@ async function updateTask(input) {
|
|
|
473
301
|
}
|
|
474
302
|
}
|
|
475
303
|
try {
|
|
476
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
304
|
+
const { pushNotifyAsync } = await import("./push-notifications-AMHVR6DF.js");
|
|
477
305
|
pushNotifyAsync({
|
|
478
306
|
event: "review_ready",
|
|
479
307
|
title: `Review ready: ${taskTitle.slice(0, 50)}`,
|
|
@@ -485,7 +313,7 @@ async function updateTask(input) {
|
|
|
485
313
|
}
|
|
486
314
|
if (!isCoordinator) {
|
|
487
315
|
try {
|
|
488
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
316
|
+
const { pushNotifyAsync } = await import("./push-notifications-AMHVR6DF.js");
|
|
489
317
|
const event = input.status === "needs_review" ? "review_ready" : "task_complete";
|
|
490
318
|
pushNotifyAsync({
|
|
491
319
|
event,
|
|
@@ -500,14 +328,15 @@ async function updateTask(input) {
|
|
|
500
328
|
await markTaskNotificationsRead(taskFile);
|
|
501
329
|
if (input.status === "needs_review" && !isCoordinator) {
|
|
502
330
|
try {
|
|
503
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
331
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-P3XQZDTH.js");
|
|
504
332
|
await writeNotification2({
|
|
505
333
|
agentId: String(row.assigned_to),
|
|
506
334
|
agentRole: String(row.assigned_to),
|
|
507
335
|
event: "task_complete",
|
|
508
336
|
project: String(row.project_name),
|
|
509
337
|
summary: `"${String(row.title)}" is ready for review`,
|
|
510
|
-
taskFile
|
|
338
|
+
taskFile,
|
|
339
|
+
sessionScope: row.session_scope ? String(row.session_scope) : void 0
|
|
511
340
|
});
|
|
512
341
|
} catch (e) {
|
|
513
342
|
process.stderr.write(`[tasks] needs_review notification failed: ${e instanceof Error ? e.message : String(e)}
|
|
@@ -589,7 +589,7 @@ function auditHookOwnership() {
|
|
|
589
589
|
}
|
|
590
590
|
async function auditShards() {
|
|
591
591
|
try {
|
|
592
|
-
const { auditShardHealth } = await import("./shard-manager-
|
|
592
|
+
const { auditShardHealth } = await import("./shard-manager-VGA2TYHM.js");
|
|
593
593
|
const report = await auditShardHealth();
|
|
594
594
|
return {
|
|
595
595
|
total: report.total,
|
|
@@ -607,7 +607,7 @@ async function auditShards() {
|
|
|
607
607
|
async function auditKeyHealth() {
|
|
608
608
|
try {
|
|
609
609
|
const { getMasterKey } = await import("./lib/keychain.js");
|
|
610
|
-
const { getKeyBackupStatus } = await import("./key-backup-status-
|
|
610
|
+
const { getKeyBackupStatus } = await import("./key-backup-status-4YKCV4ZV.js");
|
|
611
611
|
const key = await getMasterKey();
|
|
612
612
|
const backup = getKeyBackupStatus();
|
|
613
613
|
return {
|
|
@@ -859,7 +859,7 @@ function formatReport(report, flags) {
|
|
|
859
859
|
return lines.join("\n");
|
|
860
860
|
}
|
|
861
861
|
async function fixNullVectors() {
|
|
862
|
-
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-
|
|
862
|
+
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-PRCKA23W.js");
|
|
863
863
|
if (!tryAcquireWorkerSlot()) {
|
|
864
864
|
process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
|
|
865
865
|
await new Promise((r) => setTimeout(r, 5e3));
|
|
@@ -943,7 +943,7 @@ async function fixBloated(client, bloated, dryRun) {
|
|
|
943
943
|
return chunksCreated;
|
|
944
944
|
}
|
|
945
945
|
async function fixShards(dryRun) {
|
|
946
|
-
const { auditShardHealth } = await import("./shard-manager-
|
|
946
|
+
const { auditShardHealth } = await import("./shard-manager-VGA2TYHM.js");
|
|
947
947
|
const report = await auditShardHealth({ repair: true, dryRun });
|
|
948
948
|
return {
|
|
949
949
|
total: report.total,
|
|
@@ -982,7 +982,7 @@ function splitAtSentences(text, maxChunkSize) {
|
|
|
982
982
|
}
|
|
983
983
|
async function main(argv = process.argv.slice(2)) {
|
|
984
984
|
const flags = parseFlags(argv);
|
|
985
|
-
const { fastDbInit } = await import("./fast-db-init-
|
|
985
|
+
const { fastDbInit } = await import("./fast-db-init-YSR7RMVZ.js");
|
|
986
986
|
const client = await fastDbInit();
|
|
987
987
|
const report = await runAudit(client, flags);
|
|
988
988
|
console.log(formatReport(report, flags));
|
|
@@ -993,8 +993,8 @@ ${mode} Applying repairs...
|
|
|
993
993
|
`);
|
|
994
994
|
if (!flags.dryRun) {
|
|
995
995
|
try {
|
|
996
|
-
const { createBackup } = await import("./db-backup-
|
|
997
|
-
const backupPath = createBackup("pre-fix");
|
|
996
|
+
const { createBackup } = await import("./db-backup-EWS52P2W.js");
|
|
997
|
+
const backupPath = await createBackup("pre-fix");
|
|
998
998
|
if (backupPath) {
|
|
999
999
|
console.log(` Backup created: ${backupPath.split("/").pop()}`);
|
|
1000
1000
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ingest
|
|
3
|
-
} from "./chunk-ELRRL2NC.js";
|
|
4
1
|
import {
|
|
5
2
|
listWorkflowDefinitions,
|
|
6
3
|
runWorkflow,
|
|
7
4
|
startWorkflow
|
|
8
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-V2GZMY6O.js";
|
|
6
|
+
import {
|
|
7
|
+
ingest
|
|
8
|
+
} from "./chunk-A4K2ZT6N.js";
|
|
9
9
|
import {
|
|
10
10
|
initCRMBridge
|
|
11
11
|
} from "./chunk-ONKIWA3R.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionScopeFilter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-F7JLZXHC.js";
|
|
4
4
|
import {
|
|
5
5
|
getClient,
|
|
6
6
|
getIdentity
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CEJO7244.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/dreaming.ts
|
|
10
10
|
var DreamingEngine = class {
|
|
@@ -131,6 +131,7 @@ var DreamingEngine = class {
|
|
|
131
131
|
*/
|
|
132
132
|
identifyPatterns(review) {
|
|
133
133
|
const patterns = [];
|
|
134
|
+
const investigations = review.investigations ?? [];
|
|
134
135
|
const errorTasks = review.tasks.filter(
|
|
135
136
|
(t) => /\b(fix|bug|error|fail|broken|crash|revert)\b/i.test(t.title) || t.result && /\b(error|failed|broken|crash)\b/i.test(t.result)
|
|
136
137
|
);
|
|
@@ -188,12 +189,12 @@ var DreamingEngine = class {
|
|
|
188
189
|
confidence: 0.7
|
|
189
190
|
});
|
|
190
191
|
}
|
|
191
|
-
if (
|
|
192
|
+
if (investigations.length > 0) {
|
|
192
193
|
const catTotals = /* @__PURE__ */ new Map();
|
|
193
194
|
let totalFailed = 0;
|
|
194
195
|
let totalAttempts = 0;
|
|
195
196
|
let totalWastedMs = 0;
|
|
196
|
-
for (const inv of
|
|
197
|
+
for (const inv of investigations) {
|
|
197
198
|
totalAttempts += inv.totalAttempts;
|
|
198
199
|
totalFailed += inv.failedAttempts;
|
|
199
200
|
totalWastedMs += inv.wastedMs;
|
|
@@ -203,7 +204,7 @@ var DreamingEngine = class {
|
|
|
203
204
|
patterns.push({
|
|
204
205
|
type: "mistake",
|
|
205
206
|
description: `Investigation failure rate: ${Math.round(totalFailed / totalAttempts * 100)}% of ${totalAttempts} attempts failed (${Math.round(totalWastedMs / 6e4)}min wasted)`,
|
|
206
|
-
evidence:
|
|
207
|
+
evidence: investigations.map((i) => `${i.investigationKey}: ${i.failedAttempts}/${i.totalAttempts} failed (${i.topFailureCategory})`),
|
|
207
208
|
frequency: totalFailed,
|
|
208
209
|
confidence: Math.min(0.6 + totalFailed * 0.05, 0.95)
|
|
209
210
|
});
|
|
@@ -214,7 +215,7 @@ var DreamingEngine = class {
|
|
|
214
215
|
patterns.push({
|
|
215
216
|
type: "inefficiency",
|
|
216
217
|
description: `Top debugging failure: "${topCat}" (${topCount} times). ${topCat === "lack_of_context" ? "Agent didn't have enough code context before editing" : topCat === "lack_of_tools" ? "Agent couldn't verify the fix (missing tools)" : topCat === "lack_of_reasoning" ? "Agent had the info but drew wrong conclusion" : topCat === "lack_of_measurement" ? "Agent tested the wrong thing (API vs browser)" : topCat === "wrong_diagnosis" ? "Agent misidentified the root cause" : "Recurring failure pattern"}`,
|
|
217
|
-
evidence:
|
|
218
|
+
evidence: investigations.filter((i) => i.topFailureCategory === topCat).map((i) => `${i.investigationKey}: ${i.failedAttempts} failed attempts`),
|
|
218
219
|
frequency: topCount,
|
|
219
220
|
confidence: Math.min(0.7 + topCount * 0.05, 0.95)
|
|
220
221
|
});
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
extractMemoryGraph
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QUZVAHO7.js";
|
|
4
4
|
import {
|
|
5
5
|
flushBatch,
|
|
6
6
|
writeMemory
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-222SI7QC.js";
|
|
8
8
|
import {
|
|
9
9
|
extractKeywords
|
|
10
10
|
} from "./chunk-CHCA3ZM2.js";
|
|
11
11
|
import {
|
|
12
12
|
getActiveAgent
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-MCESA5UW.js";
|
|
14
14
|
|
|
15
15
|
// src/mcp/tools/import-conversations.ts
|
|
16
16
|
import { z } from "zod";
|
|
@@ -350,7 +350,8 @@ function registerImportConversations(server) {
|
|
|
350
350
|
await flushBatch();
|
|
351
351
|
await new Promise((r) => setTimeout(r, 0));
|
|
352
352
|
if ((i + 1) % (YIELD_INTERVAL * 10) === 0) {
|
|
353
|
-
|
|
353
|
+
process.stderr.write(`[import] ${i + 1}/${allMemories.length} memories processed, ${stored} stored
|
|
354
|
+
`);
|
|
354
355
|
}
|
|
355
356
|
}
|
|
356
357
|
}
|