@askexenow/exe-os 0.9.299 → 0.9.301
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 +1 -1
- package/deploy/compose/.env.example +1 -1
- package/deploy/compose/docker-compose.yml +31 -5
- package/deploy/compose/erp-nginx/nginx.conf +6 -3
- package/deploy/compose/generate-env.ts +1 -1
- package/deploy/compose/observability/otel-collector-config.yaml +10 -1
- package/deploy/compose/setup.sh +1 -1
- package/dist/active-agent-56J56WW5.js +27 -0
- package/dist/active-agent-UNJO6AJ2.js +27 -0
- package/dist/active-agent-VDWK7TES.js +28 -0
- package/dist/active-agent-Y5LSIMVC.js +28 -0
- package/dist/agentic-ontology-MZ4WHFDE.js +25 -0
- package/dist/agentic-ontology-QEV7GI3T.js +25 -0
- package/dist/assets/com.askexe.exed.plist +6 -5
- package/dist/backfill-metadata-IHKI5GXV.js +600 -0
- package/dist/backfill-metadata-RQZ4BN7G.js +600 -0
- package/dist/backfill-metadata-ZU3SZNBD.js +600 -0
- package/dist/behaviors-A3L5CWMK.js +46 -0
- package/dist/behaviors-G4KWGS24.js +46 -0
- package/dist/behaviors-WO67R6C4.js +46 -0
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +6 -6
- package/dist/bin/backfill-responses.js +6 -6
- package/dist/bin/backfill-vectors.js +8 -8
- package/dist/bin/bulk-sync-postgres.js +13 -7
- package/dist/bin/cc-doctor.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +10 -10
- package/dist/bin/cli.js +16 -16
- package/dist/bin/deferred-daemon-restart.js +1 -1
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +10 -10
- package/dist/bin/exe-assign.js +8 -8
- package/dist/bin/exe-boot.js +36 -21
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +13 -7
- package/dist/bin/exe-dispatch.js +10 -10
- package/dist/bin/exe-doctor.js +2 -2
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +5 -5
- package/dist/bin/exe-heartbeat.js +10 -10
- package/dist/bin/exe-kill.js +13 -13
- package/dist/bin/exe-launch-agent.js +29 -19
- package/dist/bin/exe-new-employee.js +6 -6
- package/dist/bin/exe-pending-messages.js +11 -11
- package/dist/bin/exe-pending-notifications.js +10 -10
- package/dist/bin/exe-pending-reviews.js +10 -10
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +12 -12
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +15 -15
- package/dist/bin/exe-settings.js +13 -7
- package/dist/bin/exe-start-codex.js +11 -11
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +11 -11
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/exe-watchdog.js +3 -3
- package/dist/bin/git-sweep.js +11 -11
- package/dist/bin/graph-backfill.js +6 -6
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +9 -9
- package/dist/bin/install-launchd.js +7 -3
- package/dist/bin/install.js +19 -15
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/pre-publish.js +24 -1
- package/dist/bin/scan-tasks.js +10 -10
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +123 -3
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/capability-cards-VTGDTOZ4.js +89 -0
- package/dist/capability-cards-XAQSL26B.js +89 -0
- package/dist/capacity-monitor-6MQLFFQT.js +51 -0
- package/dist/capacity-monitor-BB3LKJLE.js +51 -0
- package/dist/capacity-monitor-G2MAJPRP.js +51 -0
- package/dist/catchup-brief-BQSL5M5S.js +175 -0
- package/dist/catchup-brief-COALBX6L.js +175 -0
- package/dist/catchup-brief-VBGEJQRS.js +175 -0
- package/dist/cc-binary-detect-B5JDCJ5J.js +19 -0
- package/dist/chunk-22LDUTY7.js +14597 -0
- package/dist/chunk-24JVDLQJ.js +345 -0
- package/dist/chunk-24M4AJPG.js +128 -0
- package/dist/chunk-2B7RCTPT.js +85 -0
- package/dist/chunk-2QBA6YE6.js +127 -0
- package/dist/chunk-2RGDEBZC.js +731 -0
- package/dist/chunk-2T3OYZMR.js +1158 -0
- package/dist/chunk-32DBQWR5.js +333 -0
- package/dist/chunk-3ABY3QDX.js +199 -0
- package/dist/chunk-3EOPMTG2.js +128 -0
- package/dist/chunk-3G3ECFB5.js +668 -0
- package/dist/chunk-3LHOFGHT.js +280 -0
- package/dist/chunk-3NS4V4JW.js +382 -0
- package/dist/chunk-3NYY2NZ3.js +836 -0
- package/dist/chunk-3RA62PNQ.js +58 -0
- package/dist/chunk-3ROUD5WA.js +97 -0
- package/dist/chunk-3RY2ARDN.js +129 -0
- package/dist/chunk-3XRS5AVV.js +567 -0
- package/dist/chunk-3Y5IRIRU.js +290 -0
- package/dist/chunk-3YK7X5FD.js +1186 -0
- package/dist/chunk-3ZWWUKBI.js +210 -0
- package/dist/chunk-463G3VAH.js +122 -0
- package/dist/chunk-4L6PVYFE.js +54 -0
- package/dist/chunk-4LC7BFI2.js +76 -0
- package/dist/chunk-4O67LBMK.js +377 -0
- package/dist/chunk-4OIU3N6U.js +167 -0
- package/dist/chunk-4Z3FWLOE.js +836 -0
- package/dist/chunk-5BAU4T5G.js +208 -0
- package/dist/chunk-5FP7YHCG.js +1158 -0
- package/dist/chunk-5SYYMNPE.js +30 -0
- package/dist/chunk-5TO5PH7O.js +304 -0
- package/dist/chunk-5U3JZP62.js +1352 -0
- package/dist/chunk-5VNFXIGF.js +85 -0
- package/dist/chunk-5XD2Y463.js +402 -0
- package/dist/chunk-63AENHJC.js +123 -0
- package/dist/chunk-673IFJYB.js +731 -0
- package/dist/chunk-6UVUJNLY.js +1186 -0
- package/dist/chunk-7AWH47AR.js +448 -0
- package/dist/chunk-7KPWYWYL.js +290 -0
- package/dist/chunk-7P4B6AEP.js +227 -0
- package/dist/chunk-7URNGDEY.js +2145 -0
- package/dist/chunk-7VHOALNC.js +244 -0
- package/dist/chunk-ADZQBZOX.js +122 -0
- package/dist/chunk-APSZAEDO.js +1186 -0
- package/dist/chunk-ASHF6VO4.js +2265 -0
- package/dist/chunk-ASJHCAVL.js +38 -0
- package/dist/chunk-BT2LEHIW.js +448 -0
- package/dist/chunk-BTS5QUWB.js +50 -0
- package/dist/chunk-BWJDJ3BS.js +604 -0
- package/dist/chunk-CME46VWP.js +150 -0
- package/dist/chunk-D3ICCKXY.js +54 -0
- package/dist/chunk-D3IOU3NO.js +377 -0
- package/dist/chunk-DFGXRKI2.js +221 -0
- package/dist/chunk-DICIFTCS.js +150 -0
- package/dist/chunk-DIFI5JDC.js +76 -0
- package/dist/chunk-DO65VHQZ.js +128 -0
- package/dist/chunk-DPOIJ5SM.js +284 -0
- package/dist/chunk-E2OMUBXQ.js +567 -0
- package/dist/chunk-ECMXIV6N.js +97 -0
- package/dist/chunk-EDMVA3PT.js +727 -0
- package/dist/chunk-F5OSXH4A.js +4388 -0
- package/dist/chunk-F5OWHPRG.js +236 -0
- package/dist/chunk-F7MZA3QP.js +199 -0
- package/dist/chunk-FAZNXNA5.js +33 -0
- package/dist/chunk-FCHG5RC4.js +197 -0
- package/dist/chunk-FFKSPZO2.js +157 -0
- package/dist/chunk-FNHYH5U6.js +331 -0
- package/dist/chunk-FRNXQSB4.js +134 -0
- package/dist/chunk-FTAASABV.js +362 -0
- package/dist/chunk-FWPDAQ6Q.js +1350 -0
- package/dist/chunk-FZB73QOI.js +210 -0
- package/dist/chunk-GBL5QSTM.js +197 -0
- package/dist/chunk-GJBR6QLD.js +630 -0
- package/dist/chunk-GRSYAHKI.js +535 -0
- package/dist/chunk-GRXWINOW.js +244 -0
- package/dist/chunk-GUPNVUG5.js +348 -0
- package/dist/chunk-GY66UPMX.js +167 -0
- package/dist/chunk-HCCG67BY.js +43 -0
- package/dist/chunk-HCSZZXZZ.js +197 -0
- package/dist/chunk-HNGNZU62.js +240 -0
- package/dist/chunk-HP2D5LIE.js +214 -0
- package/dist/chunk-HUABQHDC.js +1352 -0
- package/dist/chunk-HYKO2LNW.js +157 -0
- package/dist/chunk-IFL6DG2K.js +181 -0
- package/dist/chunk-IKPQRHVQ.js +304 -0
- package/dist/chunk-J5HFRVNW.js +362 -0
- package/dist/chunk-J6SD7LT2.js +171 -0
- package/dist/chunk-JCWA3X6A.js +402 -0
- package/dist/chunk-JHPK33IP.js +2162 -0
- package/dist/chunk-JURL2S27.js +128 -0
- package/dist/chunk-JWGDH5I2.js +127 -0
- package/dist/chunk-KBXQFXYM.js +567 -0
- package/dist/chunk-KGY5QIOJ.js +1350 -0
- package/dist/chunk-KLES22FB.js +1094 -0
- package/dist/chunk-KPUYYOFS.js +122 -0
- package/dist/chunk-KY43UELJ.js +331 -0
- package/dist/chunk-L32V4O5Z.js +58 -0
- package/dist/chunk-LAFARYU5.js +456 -0
- package/dist/chunk-LC7ETNTJ.js +1350 -0
- package/dist/chunk-LEJ5FKIK.js +55 -0
- package/dist/chunk-LNLLCAI4.js +377 -0
- package/dist/chunk-LQWZYMNU.js +448 -0
- package/dist/chunk-LSDXEHKL.js +381 -0
- package/dist/chunk-LY3SOO73.js +76 -0
- package/dist/chunk-M6CIHXXB.js +159 -0
- package/dist/chunk-MJOQ35DX.js +427 -0
- package/dist/chunk-MO5HER5Y.js +345 -0
- package/dist/chunk-MS2EOZJQ.js +290 -0
- package/dist/chunk-MUIMJGSQ.js +128 -0
- package/dist/chunk-MY4TGLT6.js +284 -0
- package/dist/chunk-N3ARGCVG.js +345 -0
- package/dist/chunk-N4XG2M2U.js +735 -0
- package/dist/chunk-N72JNFJ4.js +535 -0
- package/dist/chunk-NJMPNYBS.js +427 -0
- package/dist/chunk-NM3AUMFE.js +2145 -0
- package/dist/chunk-NPPQ3TR4.js +735 -0
- package/dist/chunk-NTWF4DAF.js +581 -0
- package/dist/chunk-NXL3VKXM.js +331 -0
- package/dist/chunk-OJACH2JF.js +128 -0
- package/dist/chunk-OMSLHEEF.js +456 -0
- package/dist/chunk-OO4IFABD.js +382 -0
- package/dist/chunk-OYIP3QVN.js +167 -0
- package/dist/chunk-P2IOW54H.js +668 -0
- package/dist/chunk-P5KXQ3RN.js +731 -0
- package/dist/chunk-P5UXP53T.js +81 -0
- package/dist/chunk-PH6VRRFR.js +395 -0
- package/dist/chunk-Q3GKOF7Z.js +85 -0
- package/dist/chunk-Q65NCNL4.js +1352 -0
- package/dist/chunk-QIGS2LRT.js +735 -0
- package/dist/chunk-QKBN3CY2.js +381 -0
- package/dist/chunk-QNNAVMQH.js +1094 -0
- package/dist/chunk-QODDW4YI.js +171 -0
- package/dist/chunk-QPAYPTSH.js +2162 -0
- package/dist/chunk-QRWDJ5RI.js +381 -0
- package/dist/chunk-RBFZCHVB.js +105 -0
- package/dist/chunk-RCEULTPF.js +185 -0
- package/dist/chunk-RCGHXBCX.js +630 -0
- package/dist/chunk-ROSCLRTH.js +204 -0
- package/dist/chunk-RYAOSGUW.js +227 -0
- package/dist/chunk-S2SPGHPY.js +38 -0
- package/dist/chunk-S73ZAJ2S.js +262 -0
- package/dist/chunk-SBPEWD7Z.js +171 -0
- package/dist/chunk-SDPUWZP5.js +333 -0
- package/dist/chunk-SJ4UF7YK.js +1094 -0
- package/dist/chunk-SOZ7D77I.js +204 -0
- package/dist/chunk-SVLSHDNL.js +54 -0
- package/dist/chunk-SVUYBT5N.js +262 -0
- package/dist/chunk-T7PTLVJV.js +284 -0
- package/dist/chunk-TDX2LK2M.js +240 -0
- package/dist/chunk-TGUSLO4B.js +50 -0
- package/dist/chunk-TPJH6PE6.js +1158 -0
- package/dist/chunk-TVW7EDOJ.js +382 -0
- package/dist/chunk-TYRUIE6P.js +58 -0
- package/dist/chunk-U5RKGLV6.js +50 -0
- package/dist/chunk-UFGTHBHP.js +127 -0
- package/dist/chunk-ULCYWCPI.js +1079 -0
- package/dist/chunk-UN5EPVBN.js +14597 -0
- package/dist/chunk-URLH7ZVR.js +70 -0
- package/dist/chunk-USYRTGR7.js +402 -0
- package/dist/chunk-V4ABCEHM.js +30 -0
- package/dist/chunk-V6LOEOXG.js +3372 -0
- package/dist/chunk-VAZOVAW4.js +2162 -0
- package/dist/chunk-VEUQVKKT.js +185 -0
- package/dist/chunk-VIDDJ5RF.js +214 -0
- package/dist/chunk-VKCNXOQ6.js +214 -0
- package/dist/chunk-VNB4ROYG.js +348 -0
- package/dist/chunk-VWUQFZFB.js +395 -0
- package/dist/chunk-W77GRCNA.js +85 -0
- package/dist/chunk-WB2B25UM.js +230 -0
- package/dist/chunk-WCUZX7F7.js +204 -0
- package/dist/chunk-WL5RMOZQ.js +362 -0
- package/dist/chunk-WPAXAOHD.js +1079 -0
- package/dist/chunk-WVMG4ZRH.js +14597 -0
- package/dist/chunk-WYVOTRRZ.js +129 -0
- package/dist/chunk-XABJRAUW.js +3346 -0
- package/dist/chunk-XQQ7D4I4.js +85 -0
- package/dist/chunk-YDFY6YCH.js +280 -0
- package/dist/chunk-YGUMRYCN.js +33 -0
- package/dist/chunk-YHJPTIPR.js +836 -0
- package/dist/chunk-YJSP5PPG.js +128 -0
- package/dist/chunk-YLKS7KKC.js +2145 -0
- package/dist/chunk-YOMETWOJ.js +4388 -0
- package/dist/chunk-YU3KEVCO.js +333 -0
- package/dist/chunk-Z4FVFSE3.js +81 -0
- package/dist/chunk-Z4TLSNUW.js +244 -0
- package/dist/chunk-ZDPU3JTF.js +221 -0
- package/dist/chunk-ZDY4LYAJ.js +81 -0
- package/dist/chunk-ZG33AACD.js +70 -0
- package/dist/chunk-ZKHPZ6KN.js +181 -0
- package/dist/chunk-ZO2TM5N5.js +97 -0
- package/dist/chunk-ZP6T5K6I.js +535 -0
- package/dist/chunk-ZR6ZJT32.js +123 -0
- package/dist/chunk-ZSUACDQC.js +4388 -0
- package/dist/co-activation-JGF5YIDU.js +74 -0
- package/dist/co-activation-XM25BLZM.js +74 -0
- package/dist/co-occurrence-CKEMDPWO.js +95 -0
- package/dist/co-occurrence-HLLC6GT2.js +95 -0
- package/dist/co-occurrence-W2LIAPHI.js +95 -0
- package/dist/code-context-index-FCL47WKE.js +30 -0
- package/dist/conversation-entity-extractor-WC2RU6RS.js +114 -0
- package/dist/core-memory-CRSR2PSL.js +110 -0
- package/dist/core-memory-VSKFRMEV.js +110 -0
- package/dist/core-memory-ZDA76EU3.js +110 -0
- package/dist/crdt-sync-6VH2YDVY.js +33 -0
- package/dist/crdt-sync-BJKZB6T6.js +33 -0
- package/dist/crm-webhook-E5PAFAUN.js +10 -0
- package/dist/crm-webhook-RXFPZJXP.js +10 -0
- package/dist/crm-webhook-Z26LEFKG.js +10 -0
- package/dist/cto-delegation-gate-45IBLPTK.js +280 -0
- package/dist/cto-delegation-gate-EMY6ZZ2F.js +280 -0
- package/dist/cto-delegation-gate-SF4EUB2Q.js +280 -0
- package/dist/daemon-orchestration-VB3BLYIT.js +143 -0
- package/dist/daemon-orchestration-W66UYGUD.js +143 -0
- package/dist/daemon-orchestration-Y5Y6YNE3.js +143 -0
- package/dist/db-backup-HFJ53IBU.js +43 -0
- package/dist/db-backup-NVUTS7L5.js +43 -0
- package/dist/doc-graph-extractor-ID45AQ2P.js +133 -0
- package/dist/doc-graph-extractor-MLYQYT4B.js +133 -0
- package/dist/doc-graph-extractor-SVFSXKL6.js +133 -0
- package/dist/dreaming-AZYRAGKA.js +34 -0
- package/dist/dreaming-N6B7KBIE.js +34 -0
- package/dist/dreaming-WG5CDUHX.js +34 -0
- package/dist/entity-boost-XAFCDDB6.js +375 -0
- package/dist/exe-drift-3SGA53CL.js +70 -0
- package/dist/exe-drift-CPUEAPIU.js +70 -0
- package/dist/exe-export-4RTGDV53.js +77 -0
- package/dist/exe-export-APUNLKWF.js +77 -0
- package/dist/exe-export-NM4SXB3P.js +77 -0
- package/dist/exe-import-6GLNCP62.js +80 -0
- package/dist/exe-import-AZMIF34Z.js +80 -0
- package/dist/exe-import-U4H4ES3Z.js +80 -0
- package/dist/exe-key-FIPXUTMF.js +673 -0
- package/dist/exe-key-LJV23AJI.js +673 -0
- package/dist/exe-key-WTLCMOYJ.js +673 -0
- package/dist/exe-snapshot-ILO3WSEC.js +338 -0
- package/dist/exe-snapshot-IODRQLBX.js +338 -0
- package/dist/exe-snapshot-ZOZBW7V6.js +338 -0
- package/dist/fast-db-init-7LYYUCSJ.js +7 -0
- package/dist/fast-db-init-ATRZGHOL.js +7 -0
- package/dist/fast-db-init-IU7GYFWB.js +7 -0
- package/dist/gateway/index.js +11 -11
- package/dist/git-staleness-GGCFPHQ5.js +112 -0
- package/dist/git-staleness-XNOKI4D3.js +112 -0
- package/dist/git-task-sweep-3MO4OVND.js +42 -0
- package/dist/git-task-sweep-M3SWXFKJ.js +42 -0
- package/dist/git-task-sweep-Y6KNWB67.js +42 -0
- package/dist/global-procedures-626WAU3I.js +22 -0
- package/dist/global-procedures-EBAPPWGZ.js +22 -0
- package/dist/graph-auto-extract-TKHQ4OR3.js +183 -0
- package/dist/graph-auto-extract-VGFEWFZX.js +183 -0
- package/dist/graph-auto-extract-VJOUQBPK.js +183 -0
- package/dist/graph-rag-KECA5TE4.js +35 -0
- package/dist/hooks/bug-report-worker.js +12 -12
- package/dist/hooks/codex-stop-task-finalizer.js +12 -12
- package/dist/hooks/commit-complete.js +12 -12
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +12 -12
- package/dist/hooks/post-tool-combined.js +6 -6
- package/dist/hooks/pre-compact.js +16 -16
- package/dist/hooks/pre-tool-use.js +15 -15
- package/dist/hooks/prompt-submit.js +28 -26
- package/dist/hooks/session-end.js +20 -20
- package/dist/hooks/session-start.js +12 -12
- package/dist/hooks/stop.js +18 -18
- package/dist/hooks/subagent-stop.js +11 -11
- package/dist/hooks/summary-worker.js +18 -18
- package/dist/index.js +20 -20
- package/dist/installer-37KFNAWE.js +344 -0
- package/dist/installer-3FB5EMPB.js +40 -0
- package/dist/installer-BRQ42CPB.js +344 -0
- package/dist/installer-F55NR4E2.js +298 -0
- package/dist/installer-KOYBUS4J.js +40 -0
- package/dist/installer-PXZJG256.js +298 -0
- package/dist/lib/cloud-sync.js +13 -7
- package/dist/lib/consolidation.js +7 -7
- package/dist/lib/database.js +6 -4
- package/dist/lib/db-daemon-client.js +11 -202
- package/dist/lib/db.js +6 -4
- package/dist/lib/embedder.js +3 -3
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +2 -2
- package/dist/lib/exe-daemon.js +53 -51
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/messaging.js +10 -10
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +11 -11
- package/dist/lib/tmux-routing.js +9 -9
- package/dist/lib/token-spend.js +3 -3
- package/dist/mcp/register-tools.js +65 -63
- package/dist/mcp/server.js +66 -64
- package/dist/mcp/tools/complete-reminder.js +4 -4
- package/dist/mcp/tools/create-reminder.js +4 -4
- package/dist/mcp/tools/create-task.js +13 -13
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +13 -13
- package/dist/mcp/tools/send-message.js +12 -12
- package/dist/mcp/tools/update-task.js +12 -12
- package/dist/mcp-http-config-7KJZI7UD.js +31 -0
- package/dist/mcp-http-config-OF3MB7M5.js +31 -0
- package/dist/memory-cards-CPIZVXWI.js +180 -0
- package/dist/memory-cards-ZIT7ZKL5.js +180 -0
- package/dist/memory-graph-extractor-JIYWLBFF.js +22 -0
- package/dist/memory-graph-extractor-LY2VORZT.js +22 -0
- package/dist/memory-graph-extractor-MDPSLZDM.js +22 -0
- package/dist/memory-poisoning-defense-5UZT3WWA.js +224 -0
- package/dist/memory-poisoning-defense-SEM25TY5.js +224 -0
- package/dist/memory-queue-client-WKWRFERJ.js +16 -0
- package/dist/memory-reflection-J2W7CJ7C.js +244 -0
- package/dist/memory-reflection-TA2VQYPH.js +244 -0
- package/dist/message-queue-client-IFQQ2HI7.js +92 -0
- package/dist/notifications-CZBQ3H5T.js +47 -0
- package/dist/notifications-EIIL2EQV.js +47 -0
- package/dist/notifications-RLMSI4YE.js +47 -0
- package/dist/orchestration-events-TGQYA72K.js +27 -0
- package/dist/orchestration-events-VUYR6MXE.js +27 -0
- package/dist/orchestrator-JQD5G3CW.js +35 -0
- package/dist/orchestrator-MAMR4C37.js +35 -0
- package/dist/orchestrator-VE5WHEJH.js +35 -0
- package/dist/pipeline-router-3Q3YBYSM.js +15 -0
- package/dist/pipeline-router-DKXD6DJO.js +15 -0
- package/dist/pipeline-router-YNW63BY5.js +15 -0
- package/dist/plan-limits-YGXTYCW4.js +28 -0
- package/dist/plan-limits-ZM4MNZKY.js +28 -0
- package/dist/project-boot-E2TWYTAC.js +299 -0
- package/dist/project-boot-TDOZKKDR.js +299 -0
- package/dist/projection-worker-TMKUSVGD.js +1084 -0
- package/dist/projection-worker-WFPRM4AI.js +1084 -0
- package/dist/projection-worker-YKV3PFCV.js +1084 -0
- package/dist/prospective-memory-CNJDBNWF.js +232 -0
- package/dist/prospective-memory-OAFZUODU.js +232 -0
- package/dist/reranker-AFU75HEX.js +19 -0
- package/dist/reranker-RYNSJNDF.js +19 -0
- package/dist/reranker-YQIRNGDM.js +19 -0
- package/dist/retrieval-health-M5BVB7EV.js +12 -0
- package/dist/retrieval-health-RSQEIYIB.js +12 -0
- package/dist/review-polling-LGX7DUNT.js +126 -0
- package/dist/review-polling-MJBCYV4I.js +126 -0
- package/dist/review-polling-ZMB3OBPC.js +126 -0
- package/dist/runtime/index.js +16 -16
- package/dist/services/codex-reviewd/index.js +855 -0
- package/dist/session-events-5N47BRFK.js +38 -0
- package/dist/session-events-PT6SVS2P.js +38 -0
- package/dist/session-events-UTMCKDIN.js +38 -0
- package/dist/session-kill-telemetry-FRQA5MVD.js +31 -0
- package/dist/session-kill-telemetry-HKL2NQMR.js +31 -0
- package/dist/session-scope-2BD6QLNI.js +88 -0
- package/dist/session-scope-GQNCM6UQ.js +88 -0
- package/dist/session-scope-MMGM232A.js +88 -0
- package/dist/setup-wizard-SELXXVLD.js +12 -0
- package/dist/setup-wizard-W64I6SHC.js +12 -0
- package/dist/setup-wizard-X7YSRDNQ.js +12 -0
- package/dist/skill-refinement-CCP4ULZ3.js +159 -0
- package/dist/skill-refinement-FXCXTUS2.js +159 -0
- package/dist/skill-refinement-WCPDNHZ5.js +159 -0
- package/dist/stack-update-5VSGG36W.js +84 -0
- package/dist/steward-gate-JDR3SLH3.js +15 -0
- package/dist/steward-gate-PIXNK4BK.js +15 -0
- package/dist/task-enforcement-LEBWCYZT.js +506 -0
- package/dist/task-enforcement-VOSQRAQB.js +506 -0
- package/dist/task-enforcement-WCEA4FZI.js +506 -0
- package/dist/task-scope-CQZ33PRU.js +37 -0
- package/dist/task-scope-JTTEZKDU.js +37 -0
- package/dist/task-scope-L5GDL2AV.js +37 -0
- package/dist/tasks-crud-DC4GCXQQ.js +79 -0
- package/dist/tasks-crud-S36AFYYM.js +79 -0
- package/dist/tasks-crud-T32IRPXF.js +79 -0
- package/dist/tasks-notify-OBFVHJDP.js +40 -0
- package/dist/tasks-notify-OUQWUM6W.js +40 -0
- package/dist/tasks-notify-W2W2BJRB.js +40 -0
- package/dist/tasks-review-34WV7BX2.js +49 -0
- package/dist/tasks-review-N33MTHWJ.js +49 -0
- package/dist/tasks-review-OSBG2YN2.js +49 -0
- package/dist/telemetry-upload-3CSVO3J7.js +741 -0
- package/dist/telemetry-upload-EYHEWTKG.js +741 -0
- package/dist/telemetry-upload-XLBW4DRP.js +741 -0
- package/dist/token-budget-I6FMMDFX.js +86 -0
- package/dist/token-budget-ZG2MQ5GD.js +86 -0
- package/dist/tool-capability-index-IWQBQKM7.js +10 -0
- package/dist/tool-telemetry-2E3Z7CRV.js +17 -0
- package/dist/tool-telemetry-ODL4F2CW.js +17 -0
- package/dist/tui/App.js +17 -17
- package/dist/tui-data-VWT4Q5UT.js +260 -0
- package/dist/tui-data-XFBFBSBE.js +260 -0
- package/dist/tui-data-Z5UF7KEI.js +260 -0
- package/dist/wiki-acl-EUOPNUIQ.js +111 -0
- package/dist/wiki-acl-SZFHCEC4.js +111 -0
- package/dist/worker-gate-OOO6BWZ6.js +21 -0
- package/dist/worker-gate-OQMKAMP7.js +21 -0
- package/dist/worker-gate-ZPP3SZK6.js +21 -0
- package/dist/workflow-engine-P7WYJP2B.js +28 -0
- package/dist/workflow-engine-QY3IFFR2.js +28 -0
- package/dist/workflow-engine-UYNB5RTB.js +28 -0
- package/dist/worktree-CNOQZBNT.js +28 -0
- package/dist/worktree-H5C4LMQR.js +28 -0
- package/dist/worktree-sweep-KFWF3XZD.js +21 -0
- package/dist/worktree-sweep-SE7ITXC4.js +21 -0
- package/package.json +1 -1
- package/release-notes.json +117 -191
- package/src/commands/exe.md +18 -1
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolvePackageRoot
|
|
3
|
+
} from "./chunk-WPAXAOHD.js";
|
|
4
|
+
import "./chunk-GNHN5HRQ.js";
|
|
5
|
+
import {
|
|
6
|
+
EXE_HOOK_FILES,
|
|
7
|
+
textHasLegacySplitPostToolHook
|
|
8
|
+
} from "./chunk-L3TB7CC3.js";
|
|
9
|
+
import {
|
|
10
|
+
buildMcpHttpHeaders,
|
|
11
|
+
mcpHttpUrl
|
|
12
|
+
} from "./chunk-YJSP5PPG.js";
|
|
13
|
+
import "./chunk-URLH7ZVR.js";
|
|
14
|
+
import "./chunk-HYZV25LY.js";
|
|
15
|
+
import "./chunk-XABJRAUW.js";
|
|
16
|
+
import "./chunk-2I23RPSI.js";
|
|
17
|
+
import "./chunk-PH6VRRFR.js";
|
|
18
|
+
import "./chunk-PNQDP3OA.js";
|
|
19
|
+
import "./chunk-7HLWBYH7.js";
|
|
20
|
+
import "./chunk-FXU7JOXK.js";
|
|
21
|
+
import "./chunk-R36FAN53.js";
|
|
22
|
+
import "./chunk-LYH5HE24.js";
|
|
23
|
+
import "./chunk-MLKGABMK.js";
|
|
24
|
+
|
|
25
|
+
// src/adapters/opencode/installer.ts
|
|
26
|
+
import { readFile, writeFile, mkdir } from "fs/promises";
|
|
27
|
+
import { existsSync, readFileSync } from "fs";
|
|
28
|
+
import path from "path";
|
|
29
|
+
import os from "os";
|
|
30
|
+
|
|
31
|
+
// src/adapters/opencode/plugin-template.ts
|
|
32
|
+
var PLUGIN_TEMPLATE = `
|
|
33
|
+
import { spawn } from "node:child_process";
|
|
34
|
+
import { randomUUID } from "node:crypto";
|
|
35
|
+
import path from "node:path";
|
|
36
|
+
|
|
37
|
+
const PACKAGE_ROOT = "__PACKAGE_ROOT__";
|
|
38
|
+
const HOOKS_DIR = path.join(PACKAGE_ROOT, "dist", "hooks");
|
|
39
|
+
|
|
40
|
+
function hookPath(name) {
|
|
41
|
+
return path.join(HOOKS_DIR, name);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function getAgentEnv() {
|
|
45
|
+
return {
|
|
46
|
+
AGENT_ID: process.env.AGENT_ID || process.env.EXE_AGENT_ID || "default",
|
|
47
|
+
AGENT_ROLE: process.env.AGENT_ROLE || process.env.EXE_AGENT_ROLE || "employee",
|
|
48
|
+
EXE_OS_DIR: process.env.EXE_OS_DIR || path.join(process.env.HOME || "", ".exe-os"),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Spawn a hook script with JSON on stdin, return parsed stdout.
|
|
54
|
+
* Times out after the given ms. Returns null on failure.
|
|
55
|
+
*/
|
|
56
|
+
function runHook(scriptName, payload, timeoutMs = 10000) {
|
|
57
|
+
return new Promise((resolve) => {
|
|
58
|
+
try {
|
|
59
|
+
const child = spawn("node", [hookPath(scriptName)], {
|
|
60
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
61
|
+
env: { ...process.env, ...getAgentEnv() },
|
|
62
|
+
timeout: timeoutMs,
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
let stdout = "";
|
|
66
|
+
child.stdout.on("data", (chunk) => { stdout += chunk; });
|
|
67
|
+
child.on("close", () => {
|
|
68
|
+
try {
|
|
69
|
+
resolve(stdout.trim() ? JSON.parse(stdout) : null);
|
|
70
|
+
} catch {
|
|
71
|
+
resolve(null);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
child.on("error", () => resolve(null));
|
|
75
|
+
|
|
76
|
+
child.stdin.write(JSON.stringify(payload));
|
|
77
|
+
child.stdin.end();
|
|
78
|
+
} catch {
|
|
79
|
+
resolve(null);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Spawn a hook script fire-and-forget (detached, no stdout capture).
|
|
86
|
+
* Used for ingestion workers that do background DB writes.
|
|
87
|
+
*/
|
|
88
|
+
function fireHook(scriptName, payload) {
|
|
89
|
+
try {
|
|
90
|
+
const child = spawn("node", [hookPath(scriptName)], {
|
|
91
|
+
detached: true,
|
|
92
|
+
stdio: ["pipe", "ignore", "ignore"],
|
|
93
|
+
env: { ...process.env, ...getAgentEnv() },
|
|
94
|
+
});
|
|
95
|
+
child.stdin.write(JSON.stringify(payload));
|
|
96
|
+
child.stdin.end();
|
|
97
|
+
child.unref();
|
|
98
|
+
} catch {
|
|
99
|
+
// Silent \u2014 hooks must never crash the host
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export const ExeOsPlugin = async ({ project, directory }) => {
|
|
104
|
+
const cwd = directory || process.cwd();
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
// --- Session start: inject memory brief ---
|
|
108
|
+
"session.created": async (input) => {
|
|
109
|
+
const payload = {
|
|
110
|
+
session_id: input?.sessionId || randomUUID(),
|
|
111
|
+
cwd,
|
|
112
|
+
hook_event_name: "SessionStart",
|
|
113
|
+
source: "startup",
|
|
114
|
+
model: input?.model || "unknown",
|
|
115
|
+
};
|
|
116
|
+
const result = await runHook("session-start.js", payload, 10000);
|
|
117
|
+
if (result?.hookSpecificOutput?.additionalContext) {
|
|
118
|
+
// Return context to be injected as system message
|
|
119
|
+
return result.hookSpecificOutput.additionalContext;
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
// --- Pre tool use: safety checks ---
|
|
124
|
+
"tool.execute.before": async (input, output) => {
|
|
125
|
+
const toolName = input?.metadata?.name || input?.tool || "unknown";
|
|
126
|
+
const payload = {
|
|
127
|
+
session_id: input?.sessionId || "opencode",
|
|
128
|
+
cwd,
|
|
129
|
+
hook_event_name: "PreToolUse",
|
|
130
|
+
tool_name: toolName,
|
|
131
|
+
tool_input: output?.args || input?.args || {},
|
|
132
|
+
tool_use_id: input?.toolUseId || randomUUID(),
|
|
133
|
+
transcript_path: "",
|
|
134
|
+
permission_mode: "dangerously-skip-permissions",
|
|
135
|
+
};
|
|
136
|
+
const result = await runHook("pre-tool-use.js", payload, 5000);
|
|
137
|
+
if (result?.hookSpecificOutput?.permissionDecision === "deny") {
|
|
138
|
+
// Block the tool call
|
|
139
|
+
output.denied = true;
|
|
140
|
+
output.reason = result.hookSpecificOutput.permissionDecisionReason || "Blocked by exe-os";
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
// --- Post tool use: memory ingestion + error recall ---
|
|
145
|
+
"tool.execute.after": async (input) => {
|
|
146
|
+
const toolName = input?.metadata?.name || input?.tool || "unknown";
|
|
147
|
+
const payload = {
|
|
148
|
+
session_id: input?.sessionId || "opencode",
|
|
149
|
+
cwd,
|
|
150
|
+
hook_event_name: "PostToolUse",
|
|
151
|
+
tool_name: toolName,
|
|
152
|
+
tool_input: input?.args || {},
|
|
153
|
+
tool_response: input?.result || {},
|
|
154
|
+
tool_use_id: input?.toolUseId || randomUUID(),
|
|
155
|
+
transcript_path: "",
|
|
156
|
+
permission_mode: "dangerously-skip-permissions",
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// Combined hook: runs memory ingestion + error recall in the same
|
|
160
|
+
// orchestrator used by Claude Code and Codex. This prevents duplicate
|
|
161
|
+
// PostToolUse pipelines and keeps error-recall output formatting in one
|
|
162
|
+
// place.
|
|
163
|
+
const result = await runHook("post-tool-combined.js", payload, 10000);
|
|
164
|
+
if (result?.hookSpecificOutput?.additionalContext) {
|
|
165
|
+
return result.hookSpecificOutput.additionalContext;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
// --- Message updated: entity boost ---
|
|
170
|
+
"message.updated": async (input) => {
|
|
171
|
+
// Only fire for user messages (prompts), not assistant responses
|
|
172
|
+
const role = input?.message?.role || input?.role;
|
|
173
|
+
if (role !== "user") return;
|
|
174
|
+
|
|
175
|
+
const prompt = input?.message?.content || input?.content || "";
|
|
176
|
+
if (typeof prompt !== "string" || prompt.length < 10) return;
|
|
177
|
+
|
|
178
|
+
const payload = {
|
|
179
|
+
session_id: input?.sessionId || "opencode",
|
|
180
|
+
cwd,
|
|
181
|
+
hook_event_name: "UserPromptSubmit",
|
|
182
|
+
prompt,
|
|
183
|
+
};
|
|
184
|
+
const result = await runHook("prompt-submit.js", payload, 5000);
|
|
185
|
+
if (result?.hookSpecificOutput?.additionalContext) {
|
|
186
|
+
return result.hookSpecificOutput.additionalContext;
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
// --- Session idle: capture response ---
|
|
191
|
+
"session.idle": async (input) => {
|
|
192
|
+
const lastMessage = input?.lastMessage || input?.message || "";
|
|
193
|
+
if (typeof lastMessage !== "string" || lastMessage.length < 100) return;
|
|
194
|
+
|
|
195
|
+
const payload = {
|
|
196
|
+
session_id: input?.sessionId || "opencode",
|
|
197
|
+
cwd,
|
|
198
|
+
hook_event_name: "Stop",
|
|
199
|
+
last_assistant_message: lastMessage,
|
|
200
|
+
stop_hook_active: true,
|
|
201
|
+
transcript_path: "",
|
|
202
|
+
};
|
|
203
|
+
fireHook("stop.js", payload);
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
`;
|
|
208
|
+
|
|
209
|
+
// src/adapters/opencode/installer.ts
|
|
210
|
+
async function registerOpenCodeMcp(packageRoot, homeDir = os.homedir()) {
|
|
211
|
+
void packageRoot;
|
|
212
|
+
const configDir = path.join(homeDir, ".config", "opencode");
|
|
213
|
+
const configPath = path.join(configDir, "opencode.json");
|
|
214
|
+
await mkdir(configDir, { recursive: true });
|
|
215
|
+
let config = {};
|
|
216
|
+
if (existsSync(configPath)) {
|
|
217
|
+
try {
|
|
218
|
+
config = JSON.parse(await readFile(configPath, "utf-8"));
|
|
219
|
+
} catch {
|
|
220
|
+
config = {};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (!config.mcp) {
|
|
224
|
+
config.mcp = {};
|
|
225
|
+
}
|
|
226
|
+
const newEntry = {
|
|
227
|
+
type: "remote",
|
|
228
|
+
url: mcpHttpUrl(),
|
|
229
|
+
headers: buildMcpHttpHeaders(homeDir),
|
|
230
|
+
enabled: true
|
|
231
|
+
};
|
|
232
|
+
const current = config.mcp["exe-os"];
|
|
233
|
+
if (current && JSON.stringify(current) === JSON.stringify(newEntry)) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
config.mcp["exe-os"] = newEntry;
|
|
237
|
+
if (!config.$schema) {
|
|
238
|
+
config.$schema = "https://opencode.ai/config.json";
|
|
239
|
+
}
|
|
240
|
+
await writeFile(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
async function installOpenCodePlugin(packageRoot, homeDir = os.homedir()) {
|
|
244
|
+
const pluginDir = path.join(homeDir, ".config", "opencode", "plugins");
|
|
245
|
+
const pluginPath = path.join(pluginDir, "exe-os.mjs");
|
|
246
|
+
await mkdir(pluginDir, { recursive: true });
|
|
247
|
+
const pluginContent = PLUGIN_TEMPLATE.replace(
|
|
248
|
+
/__PACKAGE_ROOT__/g,
|
|
249
|
+
packageRoot.replace(/\\/g, "\\\\")
|
|
250
|
+
);
|
|
251
|
+
if (existsSync(pluginPath)) {
|
|
252
|
+
const existing = await readFile(pluginPath, "utf-8");
|
|
253
|
+
if (existing === pluginContent) {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
await writeFile(pluginPath, pluginContent);
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
function verifyOpenCodeHooks(homeDir = os.homedir()) {
|
|
261
|
+
const configPath = path.join(homeDir, ".config", "opencode", "opencode.json");
|
|
262
|
+
const pluginPath = path.join(homeDir, ".config", "opencode", "plugins", "exe-os.mjs");
|
|
263
|
+
if (!existsSync(configPath)) return false;
|
|
264
|
+
try {
|
|
265
|
+
const config = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
266
|
+
if (!config.mcp?.["exe-os"]?.enabled) return false;
|
|
267
|
+
} catch {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
if (!existsSync(pluginPath)) return false;
|
|
271
|
+
try {
|
|
272
|
+
const plugin = readFileSync(pluginPath, "utf-8");
|
|
273
|
+
if (!plugin.includes(EXE_HOOK_FILES.postToolCombined)) return false;
|
|
274
|
+
if (textHasLegacySplitPostToolHook(plugin)) return false;
|
|
275
|
+
} catch {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
return true;
|
|
279
|
+
}
|
|
280
|
+
async function runOpenCodeInstaller(homeDir) {
|
|
281
|
+
const packageRoot = resolvePackageRoot();
|
|
282
|
+
const mcpChanged = await registerOpenCodeMcp(packageRoot, homeDir);
|
|
283
|
+
process.stderr.write(
|
|
284
|
+
`[exe-os] OpenCode MCP: ${mcpChanged ? "registered" : "already registered"}
|
|
285
|
+
`
|
|
286
|
+
);
|
|
287
|
+
const pluginChanged = await installOpenCodePlugin(packageRoot, homeDir);
|
|
288
|
+
process.stderr.write(
|
|
289
|
+
`[exe-os] OpenCode plugin: ${pluginChanged ? "installed" : "already installed"}
|
|
290
|
+
`
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
export {
|
|
294
|
+
installOpenCodePlugin,
|
|
295
|
+
registerOpenCodeMcp,
|
|
296
|
+
runOpenCodeInstaller,
|
|
297
|
+
verifyOpenCodeHooks
|
|
298
|
+
};
|
package/dist/lib/cloud-sync.js
CHANGED
|
@@ -47,19 +47,25 @@ import {
|
|
|
47
47
|
pushToPostgres,
|
|
48
48
|
recordRosterDeletion,
|
|
49
49
|
shouldUseCrdtMergeForCloudSync
|
|
50
|
-
} from "../chunk-
|
|
51
|
-
import "../chunk-
|
|
52
|
-
import "../chunk-
|
|
50
|
+
} from "../chunk-YLKS7KKC.js";
|
|
51
|
+
import "../chunk-ZDPU3JTF.js";
|
|
52
|
+
import "../chunk-FNHYH5U6.js";
|
|
53
53
|
import "../chunk-LO6L5ADL.js";
|
|
54
|
-
import "../chunk-
|
|
54
|
+
import "../chunk-F5OWHPRG.js";
|
|
55
|
+
import "../chunk-QGGH7LOU.js";
|
|
56
|
+
import "../chunk-NTWF4DAF.js";
|
|
57
|
+
import "../chunk-QOZQ2MYZ.js";
|
|
58
|
+
import "../chunk-YHJPTIPR.js";
|
|
55
59
|
import "../chunk-CHCA3ZM2.js";
|
|
56
60
|
import "../chunk-OTVEIJUQ.js";
|
|
57
|
-
import "../chunk-
|
|
61
|
+
import "../chunk-FZB73QOI.js";
|
|
58
62
|
import "../chunk-Y25OJWOQ.js";
|
|
59
63
|
import "../chunk-MP2AFCGL.js";
|
|
60
|
-
import "../chunk-
|
|
64
|
+
import "../chunk-HCCG67BY.js";
|
|
65
|
+
import "../chunk-7L2EV3XX.js";
|
|
66
|
+
import "../chunk-V6LOEOXG.js";
|
|
61
67
|
import "../chunk-2I23RPSI.js";
|
|
62
|
-
import "../chunk-
|
|
68
|
+
import "../chunk-VWUQFZFB.js";
|
|
63
69
|
import "../chunk-PNQDP3OA.js";
|
|
64
70
|
import "../chunk-7HLWBYH7.js";
|
|
65
71
|
import "../chunk-FXU7JOXK.js";
|
|
@@ -11,20 +11,20 @@ import {
|
|
|
11
11
|
selectUnconsolidated,
|
|
12
12
|
storeConsolidation,
|
|
13
13
|
sweepExpiredTraces
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-GUMRIUI5.js";
|
|
14
|
+
} from "../chunk-GRSYAHKI.js";
|
|
15
|
+
import "../chunk-EDMVA3PT.js";
|
|
17
16
|
import "../chunk-I7AW4237.js";
|
|
17
|
+
import "../chunk-GUMRIUI5.js";
|
|
18
18
|
import "../chunk-EJIF4FNT.js";
|
|
19
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-YHJPTIPR.js";
|
|
20
20
|
import "../chunk-CHCA3ZM2.js";
|
|
21
21
|
import "../chunk-OTVEIJUQ.js";
|
|
22
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-FZB73QOI.js";
|
|
23
23
|
import "../chunk-Y25OJWOQ.js";
|
|
24
24
|
import "../chunk-MP2AFCGL.js";
|
|
25
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-V6LOEOXG.js";
|
|
26
26
|
import "../chunk-2I23RPSI.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-VWUQFZFB.js";
|
|
28
28
|
import "../chunk-PNQDP3OA.js";
|
|
29
29
|
import "../chunk-7HLWBYH7.js";
|
|
30
30
|
import "../chunk-FXU7JOXK.js";
|
package/dist/lib/database.js
CHANGED
|
@@ -12,10 +12,11 @@ import {
|
|
|
12
12
|
initTurso,
|
|
13
13
|
isInitialized,
|
|
14
14
|
offloadReadQuery,
|
|
15
|
-
setExternalClient
|
|
16
|
-
|
|
15
|
+
setExternalClient,
|
|
16
|
+
tryGetRawClient
|
|
17
|
+
} from "../chunk-V6LOEOXG.js";
|
|
17
18
|
import "../chunk-2I23RPSI.js";
|
|
18
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-VWUQFZFB.js";
|
|
19
20
|
import "../chunk-PNQDP3OA.js";
|
|
20
21
|
import "../chunk-7HLWBYH7.js";
|
|
21
22
|
import "../chunk-FXU7JOXK.js";
|
|
@@ -36,5 +37,6 @@ export {
|
|
|
36
37
|
initTurso,
|
|
37
38
|
isInitialized,
|
|
38
39
|
offloadReadQuery,
|
|
39
|
-
setExternalClient
|
|
40
|
+
setExternalClient,
|
|
41
|
+
tryGetRawClient
|
|
40
42
|
};
|
|
@@ -1,211 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} from "../chunk-W3EQ362K.js";
|
|
2
|
+
createDaemonDbClient,
|
|
3
|
+
initDaemonDbClient,
|
|
4
|
+
isTransientDaemonTransportError,
|
|
5
|
+
retryOnDaemonTransportError
|
|
6
|
+
} from "../chunk-F5OWHPRG.js";
|
|
7
|
+
import "../chunk-QGGH7LOU.js";
|
|
8
|
+
import "../chunk-NTWF4DAF.js";
|
|
10
9
|
import "../chunk-QOZQ2MYZ.js";
|
|
11
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-HCCG67BY.js";
|
|
12
11
|
import "../chunk-7L2EV3XX.js";
|
|
13
12
|
import "../chunk-R36FAN53.js";
|
|
14
13
|
import "../chunk-LYH5HE24.js";
|
|
15
14
|
import "../chunk-MLKGABMK.js";
|
|
16
|
-
|
|
17
|
-
// src/lib/db-daemon-client.ts
|
|
18
|
-
function normalizeStatement(stmt) {
|
|
19
|
-
if (typeof stmt === "string") {
|
|
20
|
-
return { sql: stmt, args: [] };
|
|
21
|
-
}
|
|
22
|
-
const sql = stmt.sql;
|
|
23
|
-
let args = [];
|
|
24
|
-
if (Array.isArray(stmt.args)) {
|
|
25
|
-
args = stmt.args.map((v) => serializeValue(v));
|
|
26
|
-
} else if (stmt.args && typeof stmt.args === "object") {
|
|
27
|
-
const named = {};
|
|
28
|
-
for (const [key, val] of Object.entries(stmt.args)) {
|
|
29
|
-
named[key] = serializeValue(val);
|
|
30
|
-
}
|
|
31
|
-
return { sql, args: named };
|
|
32
|
-
}
|
|
33
|
-
return { sql, args };
|
|
34
|
-
}
|
|
35
|
-
function isReadOnlySql(sql) {
|
|
36
|
-
const normalized = sql.replace(/^\s*--.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "").trim().toLowerCase();
|
|
37
|
-
return /^(select|pragma\s+(?!wal_checkpoint|journal_mode|synchronous|user_version)|with\b.*\bselect\b)/s.test(normalized);
|
|
38
|
-
}
|
|
39
|
-
function createDaemonDbClient(fallbackClient) {
|
|
40
|
-
let _useDaemon = false;
|
|
41
|
-
const isMcpProcess = () => process.env.EXE_MCP_MODE === "1";
|
|
42
|
-
const isTransportError = (errMsg) => errMsg === "Not connected" || errMsg === "Request timeout" || errMsg === "Write failed" || errMsg === "DB not initialized" || errMsg === "Connection closed" || errMsg === "Server shutting down";
|
|
43
|
-
async function ensureDaemonRoute() {
|
|
44
|
-
if (_useDaemon && isClientConnected()) return true;
|
|
45
|
-
const connected = await connectEmbedDaemon().catch(() => false);
|
|
46
|
-
if (connected) {
|
|
47
|
-
_useDaemon = true;
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
function unavailableForMcp(errMsg) {
|
|
53
|
-
const suffix = errMsg ? ` Last transport error: ${errMsg}.` : "";
|
|
54
|
-
return new Error(
|
|
55
|
-
"Daemon unavailable for MCP DB operation. Refusing direct SQLite fallback from MCP process to preserve the single-writer gate and prevent FTS5 corruption." + suffix
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
const client = {
|
|
59
|
-
// Daemon-routed clients cannot span a transaction across requests —
|
|
60
|
-
// BEGIN/COMMIT via execute() is rejected by the daemon SQL guard.
|
|
61
|
-
// Callers that need atomic multi-statement writes must use batch()
|
|
62
|
-
// (executed atomically daemon-side). See store.ts flushBatch.
|
|
63
|
-
// @ts-expect-error -- capability marker consumed by flushBatch
|
|
64
|
-
interactiveTransactions: false,
|
|
65
|
-
async execute(stmt) {
|
|
66
|
-
const daemonReady = await ensureDaemonRoute();
|
|
67
|
-
if (!daemonReady) {
|
|
68
|
-
if (isMcpProcess()) throw unavailableForMcp();
|
|
69
|
-
return fallbackClient.execute(stmt);
|
|
70
|
-
}
|
|
71
|
-
const { sql, args } = normalizeStatement(stmt);
|
|
72
|
-
let response = await sendDaemonRequest({
|
|
73
|
-
type: "db-execute",
|
|
74
|
-
sql,
|
|
75
|
-
args
|
|
76
|
-
});
|
|
77
|
-
if (response.error) {
|
|
78
|
-
const errMsg = String(response.error);
|
|
79
|
-
if (isTransportError(errMsg) && isReadOnlySql(sql)) {
|
|
80
|
-
_useDaemon = false;
|
|
81
|
-
if (await ensureDaemonRoute()) {
|
|
82
|
-
response = await sendDaemonRequest({ type: "db-execute", sql, args });
|
|
83
|
-
if (!response.error && response.db) {
|
|
84
|
-
return deserializeResultSet(response.db);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (isMcpProcess()) throw unavailableForMcp(errMsg);
|
|
88
|
-
process.stderr.write(`[db-daemon] Transport error (${errMsg}), falling back to direct
|
|
89
|
-
`);
|
|
90
|
-
return fallbackClient.execute(stmt);
|
|
91
|
-
}
|
|
92
|
-
if (isTransportError(errMsg)) {
|
|
93
|
-
_useDaemon = false;
|
|
94
|
-
throw new Error(`Daemon transport error after write request; refusing unsafe retry: ${errMsg}`);
|
|
95
|
-
}
|
|
96
|
-
throw new Error(errMsg);
|
|
97
|
-
}
|
|
98
|
-
if (response.db) {
|
|
99
|
-
return deserializeResultSet(response.db);
|
|
100
|
-
}
|
|
101
|
-
if (isMcpProcess()) throw unavailableForMcp("Unexpected daemon response shape");
|
|
102
|
-
if (!isReadOnlySql(sql)) {
|
|
103
|
-
throw new Error("Unexpected daemon response after write request; refusing unsafe direct fallback");
|
|
104
|
-
}
|
|
105
|
-
process.stderr.write("[db-daemon] Unexpected response shape, falling back to direct\n");
|
|
106
|
-
return fallbackClient.execute(stmt);
|
|
107
|
-
},
|
|
108
|
-
async batch(stmts, mode) {
|
|
109
|
-
const daemonReady = await ensureDaemonRoute();
|
|
110
|
-
if (!daemonReady) {
|
|
111
|
-
if (isMcpProcess()) throw unavailableForMcp();
|
|
112
|
-
return fallbackClient.batch(stmts, mode);
|
|
113
|
-
}
|
|
114
|
-
const statements = stmts.map(normalizeStatement);
|
|
115
|
-
let response = await sendDaemonRequest({
|
|
116
|
-
type: "db-batch",
|
|
117
|
-
statements,
|
|
118
|
-
mode: mode ?? "deferred"
|
|
119
|
-
});
|
|
120
|
-
if (response.error) {
|
|
121
|
-
const errMsg = String(response.error);
|
|
122
|
-
const readOnlyBatch = statements.every((s) => isReadOnlySql(s.sql));
|
|
123
|
-
if (isTransportError(errMsg) && readOnlyBatch) {
|
|
124
|
-
_useDaemon = false;
|
|
125
|
-
if (await ensureDaemonRoute()) {
|
|
126
|
-
response = await sendDaemonRequest({
|
|
127
|
-
type: "db-batch",
|
|
128
|
-
statements,
|
|
129
|
-
mode: mode ?? "deferred"
|
|
130
|
-
});
|
|
131
|
-
const retriedResults = response["db-batch"];
|
|
132
|
-
if (!response.error && retriedResults) {
|
|
133
|
-
return retriedResults.map(deserializeResultSet);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
if (isMcpProcess()) throw unavailableForMcp(errMsg);
|
|
137
|
-
process.stderr.write(`[db-daemon] Batch transport error (${errMsg}), falling back to direct
|
|
138
|
-
`);
|
|
139
|
-
return fallbackClient.batch(stmts, mode);
|
|
140
|
-
}
|
|
141
|
-
if (isTransportError(errMsg)) {
|
|
142
|
-
_useDaemon = false;
|
|
143
|
-
throw new Error(`Daemon transport error after write batch; refusing unsafe retry: ${errMsg}`);
|
|
144
|
-
}
|
|
145
|
-
throw new Error(errMsg);
|
|
146
|
-
}
|
|
147
|
-
const batchResults = response["db-batch"];
|
|
148
|
-
if (batchResults) {
|
|
149
|
-
return batchResults.map(deserializeResultSet);
|
|
150
|
-
}
|
|
151
|
-
if (isMcpProcess()) throw unavailableForMcp("Unexpected daemon batch response shape");
|
|
152
|
-
if (!statements.every((s) => isReadOnlySql(s.sql))) {
|
|
153
|
-
throw new Error("Unexpected daemon response after write batch; refusing unsafe direct fallback");
|
|
154
|
-
}
|
|
155
|
-
process.stderr.write("[db-daemon] Unexpected batch response shape, falling back to direct\n");
|
|
156
|
-
return fallbackClient.batch(stmts, mode);
|
|
157
|
-
},
|
|
158
|
-
// Transaction support — delegate to fallback (transactions need direct connection)
|
|
159
|
-
async transaction(mode) {
|
|
160
|
-
return fallbackClient.transaction(mode);
|
|
161
|
-
},
|
|
162
|
-
// executeMultiple — delegate to fallback (used only for schema migrations)
|
|
163
|
-
async executeMultiple(sql) {
|
|
164
|
-
return fallbackClient.executeMultiple(sql);
|
|
165
|
-
},
|
|
166
|
-
// migrate — delegate to fallback
|
|
167
|
-
async migrate(stmts) {
|
|
168
|
-
return fallbackClient.migrate(stmts);
|
|
169
|
-
},
|
|
170
|
-
// Sync mode — delegate to fallback
|
|
171
|
-
sync() {
|
|
172
|
-
return fallbackClient.sync();
|
|
173
|
-
},
|
|
174
|
-
close() {
|
|
175
|
-
_useDaemon = false;
|
|
176
|
-
},
|
|
177
|
-
get closed() {
|
|
178
|
-
return fallbackClient.closed;
|
|
179
|
-
},
|
|
180
|
-
get protocol() {
|
|
181
|
-
return fallbackClient.protocol;
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
return {
|
|
185
|
-
...client,
|
|
186
|
-
/** Enable daemon routing (call after confirming daemon is connected) */
|
|
187
|
-
_enableDaemon() {
|
|
188
|
-
_useDaemon = true;
|
|
189
|
-
},
|
|
190
|
-
/** Check if daemon routing is active */
|
|
191
|
-
_isDaemonActive() {
|
|
192
|
-
return _useDaemon && isClientConnected();
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
async function initDaemonDbClient(fallbackClient) {
|
|
197
|
-
if (process.env.EXE_IS_DAEMON === "1") return null;
|
|
198
|
-
const connected = await connectEmbedDaemon();
|
|
199
|
-
const client = createDaemonDbClient(fallbackClient);
|
|
200
|
-
if (connected) {
|
|
201
|
-
client._enableDaemon();
|
|
202
|
-
process.stderr.write("[db-daemon] DB routing through daemon (single-writer)\n");
|
|
203
|
-
} else {
|
|
204
|
-
process.stderr.write("[db-daemon] Daemon unavailable at init \u2014 will retry lazily\n");
|
|
205
|
-
}
|
|
206
|
-
return client;
|
|
207
|
-
}
|
|
208
15
|
export {
|
|
209
16
|
createDaemonDbClient,
|
|
210
|
-
initDaemonDbClient
|
|
17
|
+
initDaemonDbClient,
|
|
18
|
+
isTransientDaemonTransportError,
|
|
19
|
+
retryOnDaemonTransportError
|
|
211
20
|
};
|
package/dist/lib/db.js
CHANGED
|
@@ -12,10 +12,11 @@ import {
|
|
|
12
12
|
initTurso,
|
|
13
13
|
isInitialized,
|
|
14
14
|
offloadReadQuery,
|
|
15
|
-
setExternalClient
|
|
16
|
-
|
|
15
|
+
setExternalClient,
|
|
16
|
+
tryGetRawClient
|
|
17
|
+
} from "../chunk-V6LOEOXG.js";
|
|
17
18
|
import "../chunk-2I23RPSI.js";
|
|
18
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-VWUQFZFB.js";
|
|
19
20
|
import "../chunk-PNQDP3OA.js";
|
|
20
21
|
import "../chunk-7HLWBYH7.js";
|
|
21
22
|
import "../chunk-FXU7JOXK.js";
|
|
@@ -36,5 +37,6 @@ export {
|
|
|
36
37
|
initTurso,
|
|
37
38
|
isInitialized,
|
|
38
39
|
offloadReadQuery,
|
|
39
|
-
setExternalClient
|
|
40
|
+
setExternalClient,
|
|
41
|
+
tryGetRawClient
|
|
40
42
|
};
|
package/dist/lib/embedder.js
CHANGED
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
embedDirect,
|
|
7
7
|
getEmbedder,
|
|
8
8
|
prepareEmbeddingText
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-RBFZCHVB.js";
|
|
10
|
+
import "../chunk-NTWF4DAF.js";
|
|
11
11
|
import "../chunk-QOZQ2MYZ.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-HCCG67BY.js";
|
|
13
13
|
import "../chunk-7L2EV3XX.js";
|
|
14
14
|
import "../chunk-FXU7JOXK.js";
|
|
15
15
|
import "../chunk-R36FAN53.js";
|
|
@@ -10,12 +10,12 @@ import {
|
|
|
10
10
|
getTemplateByRole,
|
|
11
11
|
personalizePrompt,
|
|
12
12
|
renderClientCOOTemplate
|
|
13
|
-
} from "../chunk-
|
|
14
|
-
import "../chunk-
|
|
13
|
+
} from "../chunk-3G3ECFB5.js";
|
|
14
|
+
import "../chunk-W77GRCNA.js";
|
|
15
15
|
import "../chunk-VUH67PT4.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-V6LOEOXG.js";
|
|
17
17
|
import "../chunk-2I23RPSI.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-VWUQFZFB.js";
|
|
19
19
|
import "../chunk-PNQDP3OA.js";
|
|
20
20
|
import "../chunk-7HLWBYH7.js";
|
|
21
21
|
import "../chunk-FXU7JOXK.js";
|
package/dist/lib/employees.js
CHANGED
|
@@ -28,9 +28,9 @@ import {
|
|
|
28
28
|
saveEmployees,
|
|
29
29
|
shouldAutoInstance,
|
|
30
30
|
validateEmployeeName
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-V6LOEOXG.js";
|
|
32
32
|
import "../chunk-2I23RPSI.js";
|
|
33
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-VWUQFZFB.js";
|
|
34
34
|
import "../chunk-PNQDP3OA.js";
|
|
35
35
|
import "../chunk-7HLWBYH7.js";
|
|
36
36
|
import "../chunk-FXU7JOXK.js";
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
pingDaemon,
|
|
9
9
|
sendDaemonRequest,
|
|
10
10
|
sendIngestRequest
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-NTWF4DAF.js";
|
|
12
12
|
import "../chunk-QOZQ2MYZ.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-HCCG67BY.js";
|
|
14
14
|
import "../chunk-7L2EV3XX.js";
|
|
15
15
|
import "../chunk-R36FAN53.js";
|
|
16
16
|
import "../chunk-LYH5HE24.js";
|