@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,232 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getClient
|
|
3
|
+
} from "./chunk-V6LOEOXG.js";
|
|
4
|
+
import "./chunk-2I23RPSI.js";
|
|
5
|
+
import "./chunk-VWUQFZFB.js";
|
|
6
|
+
import "./chunk-PNQDP3OA.js";
|
|
7
|
+
import "./chunk-7HLWBYH7.js";
|
|
8
|
+
import "./chunk-FXU7JOXK.js";
|
|
9
|
+
import "./chunk-R36FAN53.js";
|
|
10
|
+
import "./chunk-LYH5HE24.js";
|
|
11
|
+
import "./chunk-MLKGABMK.js";
|
|
12
|
+
|
|
13
|
+
// src/lib/prospective-memory.ts
|
|
14
|
+
import crypto from "crypto";
|
|
15
|
+
var PROSPECTIVE_RECURRENCES = [
|
|
16
|
+
"daily",
|
|
17
|
+
"weekly",
|
|
18
|
+
"monthly",
|
|
19
|
+
"once"
|
|
20
|
+
];
|
|
21
|
+
var PROSPECTIVE_STATUSES = [
|
|
22
|
+
"pending",
|
|
23
|
+
"completed",
|
|
24
|
+
"deferred"
|
|
25
|
+
];
|
|
26
|
+
function normalizeRecurrence(value) {
|
|
27
|
+
return PROSPECTIVE_RECURRENCES.includes(value) ? value : "once";
|
|
28
|
+
}
|
|
29
|
+
function clampPriority(value) {
|
|
30
|
+
const n = Number(value);
|
|
31
|
+
if (!Number.isFinite(n)) return 5;
|
|
32
|
+
return Math.min(10, Math.max(1, Math.round(n)));
|
|
33
|
+
}
|
|
34
|
+
function rowToProspective(row) {
|
|
35
|
+
return {
|
|
36
|
+
id: String(row.id),
|
|
37
|
+
agentId: String(row.agent_id),
|
|
38
|
+
content: String(row.content ?? ""),
|
|
39
|
+
dueDate: row.due_date != null ? String(row.due_date) : null,
|
|
40
|
+
recurrence: normalizeRecurrence(row.recurrence),
|
|
41
|
+
priority: clampPriority(row.priority),
|
|
42
|
+
status: PROSPECTIVE_STATUSES.includes(String(row.status)) ? String(row.status) : "pending",
|
|
43
|
+
lastSurfaced: row.last_surfaced != null ? String(row.last_surfaced) : null,
|
|
44
|
+
projectName: row.project_name != null ? String(row.project_name) : null,
|
|
45
|
+
sessionScope: row.session_scope != null ? String(row.session_scope) : null,
|
|
46
|
+
createdAt: String(row.created_at),
|
|
47
|
+
updatedAt: String(row.updated_at)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function nextDueDate(current, recurrence) {
|
|
51
|
+
if (recurrence === "once") return null;
|
|
52
|
+
const base = current ? new Date(current) : /* @__PURE__ */ new Date();
|
|
53
|
+
if (Number.isNaN(base.getTime())) return null;
|
|
54
|
+
const next = new Date(base.getTime());
|
|
55
|
+
switch (recurrence) {
|
|
56
|
+
case "daily":
|
|
57
|
+
next.setUTCDate(next.getUTCDate() + 1);
|
|
58
|
+
break;
|
|
59
|
+
case "weekly":
|
|
60
|
+
next.setUTCDate(next.getUTCDate() + 7);
|
|
61
|
+
break;
|
|
62
|
+
case "monthly":
|
|
63
|
+
next.setUTCMonth(next.getUTCMonth() + 1);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
return next.toISOString();
|
|
67
|
+
}
|
|
68
|
+
async function createProspectiveMemory(input) {
|
|
69
|
+
const id = crypto.randomUUID();
|
|
70
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
71
|
+
const record = {
|
|
72
|
+
id,
|
|
73
|
+
agentId: input.agentId.toLowerCase(),
|
|
74
|
+
content: input.content,
|
|
75
|
+
dueDate: input.dueDate ?? null,
|
|
76
|
+
recurrence: normalizeRecurrence(input.recurrence ?? "once"),
|
|
77
|
+
priority: clampPriority(input.priority ?? 5),
|
|
78
|
+
status: "pending",
|
|
79
|
+
lastSurfaced: null,
|
|
80
|
+
projectName: input.projectName ?? null,
|
|
81
|
+
sessionScope: input.sessionScope ?? null,
|
|
82
|
+
createdAt: now,
|
|
83
|
+
updatedAt: now
|
|
84
|
+
};
|
|
85
|
+
const client = getClient();
|
|
86
|
+
await client.execute({
|
|
87
|
+
sql: `INSERT INTO prospective_memories
|
|
88
|
+
(id, agent_id, content, due_date, recurrence, priority, status,
|
|
89
|
+
last_surfaced, project_name, session_scope, created_at, updated_at)
|
|
90
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
91
|
+
args: [
|
|
92
|
+
record.id,
|
|
93
|
+
record.agentId,
|
|
94
|
+
record.content,
|
|
95
|
+
record.dueDate,
|
|
96
|
+
record.recurrence,
|
|
97
|
+
record.priority,
|
|
98
|
+
record.status,
|
|
99
|
+
record.lastSurfaced,
|
|
100
|
+
record.projectName,
|
|
101
|
+
record.sessionScope,
|
|
102
|
+
record.createdAt,
|
|
103
|
+
record.updatedAt
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
return record;
|
|
107
|
+
}
|
|
108
|
+
async function getPendingProspective(agentId, options = {}) {
|
|
109
|
+
const client = getClient();
|
|
110
|
+
const cutoff = options.dueBefore ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
111
|
+
const limit = options.limit ?? 10;
|
|
112
|
+
const args = [agentId.toLowerCase(), cutoff];
|
|
113
|
+
let projectClause = "";
|
|
114
|
+
if (options.projectName) {
|
|
115
|
+
projectClause = " AND (project_name IS NULL OR project_name = ?)";
|
|
116
|
+
args.push(options.projectName);
|
|
117
|
+
}
|
|
118
|
+
args.push(limit);
|
|
119
|
+
const result = await client.execute({
|
|
120
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
121
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
122
|
+
FROM prospective_memories
|
|
123
|
+
WHERE agent_id = ?
|
|
124
|
+
AND status = 'pending'
|
|
125
|
+
AND (due_date IS NULL OR due_date <= ?)${projectClause}
|
|
126
|
+
ORDER BY (due_date IS NULL) ASC, due_date ASC, priority ASC, created_at ASC
|
|
127
|
+
LIMIT ?`,
|
|
128
|
+
args
|
|
129
|
+
});
|
|
130
|
+
return result.rows.map((r) => rowToProspective(r));
|
|
131
|
+
}
|
|
132
|
+
async function markSurfaced(ids) {
|
|
133
|
+
if (ids.length === 0) return;
|
|
134
|
+
const client = getClient();
|
|
135
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
136
|
+
const placeholders = ids.map(() => "?").join(",");
|
|
137
|
+
await client.execute({
|
|
138
|
+
sql: `UPDATE prospective_memories SET last_surfaced = ?, updated_at = ?
|
|
139
|
+
WHERE id IN (${placeholders})`,
|
|
140
|
+
args: [now, now, ...ids]
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async function getOverdueProspective(agentId, asOf) {
|
|
144
|
+
const client = getClient();
|
|
145
|
+
const cutoff = asOf ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
146
|
+
const result = await client.execute({
|
|
147
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
148
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
149
|
+
FROM prospective_memories
|
|
150
|
+
WHERE agent_id = ?
|
|
151
|
+
AND status = 'pending'
|
|
152
|
+
AND due_date IS NOT NULL
|
|
153
|
+
AND due_date < ?
|
|
154
|
+
ORDER BY due_date ASC, priority ASC`,
|
|
155
|
+
args: [agentId.toLowerCase(), cutoff]
|
|
156
|
+
});
|
|
157
|
+
return result.rows.map((r) => rowToProspective(r));
|
|
158
|
+
}
|
|
159
|
+
async function completeProspective(id) {
|
|
160
|
+
const client = getClient();
|
|
161
|
+
const existing = await client.execute({
|
|
162
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
163
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
164
|
+
FROM prospective_memories WHERE id = ?`,
|
|
165
|
+
args: [id]
|
|
166
|
+
});
|
|
167
|
+
if (existing.rows.length === 0) return null;
|
|
168
|
+
const record = rowToProspective(existing.rows[0]);
|
|
169
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
170
|
+
if (record.recurrence === "once") {
|
|
171
|
+
await client.execute({
|
|
172
|
+
sql: `UPDATE prospective_memories SET status = 'completed', updated_at = ? WHERE id = ?`,
|
|
173
|
+
args: [now, id]
|
|
174
|
+
});
|
|
175
|
+
return { ...record, status: "completed", updatedAt: now };
|
|
176
|
+
}
|
|
177
|
+
const advanced = nextDueDate(record.dueDate, record.recurrence);
|
|
178
|
+
await client.execute({
|
|
179
|
+
sql: `UPDATE prospective_memories SET due_date = ?, updated_at = ? WHERE id = ?`,
|
|
180
|
+
args: [advanced, now, id]
|
|
181
|
+
});
|
|
182
|
+
return { ...record, dueDate: advanced, updatedAt: now };
|
|
183
|
+
}
|
|
184
|
+
async function deferProspective(id, newDueDate) {
|
|
185
|
+
const client = getClient();
|
|
186
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
187
|
+
const existing = await client.execute({
|
|
188
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
189
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
190
|
+
FROM prospective_memories WHERE id = ?`,
|
|
191
|
+
args: [id]
|
|
192
|
+
});
|
|
193
|
+
if (existing.rows.length === 0) return null;
|
|
194
|
+
await client.execute({
|
|
195
|
+
sql: `UPDATE prospective_memories SET due_date = ?, status = 'deferred', updated_at = ? WHERE id = ?`,
|
|
196
|
+
args: [newDueDate, now, id]
|
|
197
|
+
});
|
|
198
|
+
const record = rowToProspective(existing.rows[0]);
|
|
199
|
+
return { ...record, dueDate: newDueDate, status: "deferred", updatedAt: now };
|
|
200
|
+
}
|
|
201
|
+
async function listProspective(agentId, options = {}) {
|
|
202
|
+
const client = getClient();
|
|
203
|
+
const args = [agentId.toLowerCase()];
|
|
204
|
+
let statusClause = "";
|
|
205
|
+
if (options.status) {
|
|
206
|
+
statusClause = " AND status = ?";
|
|
207
|
+
args.push(options.status);
|
|
208
|
+
}
|
|
209
|
+
args.push(options.limit ?? 50);
|
|
210
|
+
const result = await client.execute({
|
|
211
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
212
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
213
|
+
FROM prospective_memories
|
|
214
|
+
WHERE agent_id = ?${statusClause}
|
|
215
|
+
ORDER BY (due_date IS NULL) ASC, due_date ASC, priority ASC
|
|
216
|
+
LIMIT ?`,
|
|
217
|
+
args
|
|
218
|
+
});
|
|
219
|
+
return result.rows.map((r) => rowToProspective(r));
|
|
220
|
+
}
|
|
221
|
+
export {
|
|
222
|
+
PROSPECTIVE_RECURRENCES,
|
|
223
|
+
PROSPECTIVE_STATUSES,
|
|
224
|
+
completeProspective,
|
|
225
|
+
createProspectiveMemory,
|
|
226
|
+
deferProspective,
|
|
227
|
+
getOverdueProspective,
|
|
228
|
+
getPendingProspective,
|
|
229
|
+
listProspective,
|
|
230
|
+
markSurfaced,
|
|
231
|
+
nextDueDate
|
|
232
|
+
};
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getClient
|
|
3
|
+
} from "./chunk-XABJRAUW.js";
|
|
4
|
+
import "./chunk-2I23RPSI.js";
|
|
5
|
+
import "./chunk-PH6VRRFR.js";
|
|
6
|
+
import "./chunk-PNQDP3OA.js";
|
|
7
|
+
import "./chunk-7HLWBYH7.js";
|
|
8
|
+
import "./chunk-FXU7JOXK.js";
|
|
9
|
+
import "./chunk-R36FAN53.js";
|
|
10
|
+
import "./chunk-LYH5HE24.js";
|
|
11
|
+
import "./chunk-MLKGABMK.js";
|
|
12
|
+
|
|
13
|
+
// src/lib/prospective-memory.ts
|
|
14
|
+
import crypto from "crypto";
|
|
15
|
+
var PROSPECTIVE_RECURRENCES = [
|
|
16
|
+
"daily",
|
|
17
|
+
"weekly",
|
|
18
|
+
"monthly",
|
|
19
|
+
"once"
|
|
20
|
+
];
|
|
21
|
+
var PROSPECTIVE_STATUSES = [
|
|
22
|
+
"pending",
|
|
23
|
+
"completed",
|
|
24
|
+
"deferred"
|
|
25
|
+
];
|
|
26
|
+
function normalizeRecurrence(value) {
|
|
27
|
+
return PROSPECTIVE_RECURRENCES.includes(value) ? value : "once";
|
|
28
|
+
}
|
|
29
|
+
function clampPriority(value) {
|
|
30
|
+
const n = Number(value);
|
|
31
|
+
if (!Number.isFinite(n)) return 5;
|
|
32
|
+
return Math.min(10, Math.max(1, Math.round(n)));
|
|
33
|
+
}
|
|
34
|
+
function rowToProspective(row) {
|
|
35
|
+
return {
|
|
36
|
+
id: String(row.id),
|
|
37
|
+
agentId: String(row.agent_id),
|
|
38
|
+
content: String(row.content ?? ""),
|
|
39
|
+
dueDate: row.due_date != null ? String(row.due_date) : null,
|
|
40
|
+
recurrence: normalizeRecurrence(row.recurrence),
|
|
41
|
+
priority: clampPriority(row.priority),
|
|
42
|
+
status: PROSPECTIVE_STATUSES.includes(String(row.status)) ? String(row.status) : "pending",
|
|
43
|
+
lastSurfaced: row.last_surfaced != null ? String(row.last_surfaced) : null,
|
|
44
|
+
projectName: row.project_name != null ? String(row.project_name) : null,
|
|
45
|
+
sessionScope: row.session_scope != null ? String(row.session_scope) : null,
|
|
46
|
+
createdAt: String(row.created_at),
|
|
47
|
+
updatedAt: String(row.updated_at)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function nextDueDate(current, recurrence) {
|
|
51
|
+
if (recurrence === "once") return null;
|
|
52
|
+
const base = current ? new Date(current) : /* @__PURE__ */ new Date();
|
|
53
|
+
if (Number.isNaN(base.getTime())) return null;
|
|
54
|
+
const next = new Date(base.getTime());
|
|
55
|
+
switch (recurrence) {
|
|
56
|
+
case "daily":
|
|
57
|
+
next.setUTCDate(next.getUTCDate() + 1);
|
|
58
|
+
break;
|
|
59
|
+
case "weekly":
|
|
60
|
+
next.setUTCDate(next.getUTCDate() + 7);
|
|
61
|
+
break;
|
|
62
|
+
case "monthly":
|
|
63
|
+
next.setUTCMonth(next.getUTCMonth() + 1);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
return next.toISOString();
|
|
67
|
+
}
|
|
68
|
+
async function createProspectiveMemory(input) {
|
|
69
|
+
const id = crypto.randomUUID();
|
|
70
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
71
|
+
const record = {
|
|
72
|
+
id,
|
|
73
|
+
agentId: input.agentId.toLowerCase(),
|
|
74
|
+
content: input.content,
|
|
75
|
+
dueDate: input.dueDate ?? null,
|
|
76
|
+
recurrence: normalizeRecurrence(input.recurrence ?? "once"),
|
|
77
|
+
priority: clampPriority(input.priority ?? 5),
|
|
78
|
+
status: "pending",
|
|
79
|
+
lastSurfaced: null,
|
|
80
|
+
projectName: input.projectName ?? null,
|
|
81
|
+
sessionScope: input.sessionScope ?? null,
|
|
82
|
+
createdAt: now,
|
|
83
|
+
updatedAt: now
|
|
84
|
+
};
|
|
85
|
+
const client = getClient();
|
|
86
|
+
await client.execute({
|
|
87
|
+
sql: `INSERT INTO prospective_memories
|
|
88
|
+
(id, agent_id, content, due_date, recurrence, priority, status,
|
|
89
|
+
last_surfaced, project_name, session_scope, created_at, updated_at)
|
|
90
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
91
|
+
args: [
|
|
92
|
+
record.id,
|
|
93
|
+
record.agentId,
|
|
94
|
+
record.content,
|
|
95
|
+
record.dueDate,
|
|
96
|
+
record.recurrence,
|
|
97
|
+
record.priority,
|
|
98
|
+
record.status,
|
|
99
|
+
record.lastSurfaced,
|
|
100
|
+
record.projectName,
|
|
101
|
+
record.sessionScope,
|
|
102
|
+
record.createdAt,
|
|
103
|
+
record.updatedAt
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
return record;
|
|
107
|
+
}
|
|
108
|
+
async function getPendingProspective(agentId, options = {}) {
|
|
109
|
+
const client = getClient();
|
|
110
|
+
const cutoff = options.dueBefore ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
111
|
+
const limit = options.limit ?? 10;
|
|
112
|
+
const args = [agentId.toLowerCase(), cutoff];
|
|
113
|
+
let projectClause = "";
|
|
114
|
+
if (options.projectName) {
|
|
115
|
+
projectClause = " AND (project_name IS NULL OR project_name = ?)";
|
|
116
|
+
args.push(options.projectName);
|
|
117
|
+
}
|
|
118
|
+
args.push(limit);
|
|
119
|
+
const result = await client.execute({
|
|
120
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
121
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
122
|
+
FROM prospective_memories
|
|
123
|
+
WHERE agent_id = ?
|
|
124
|
+
AND status = 'pending'
|
|
125
|
+
AND (due_date IS NULL OR due_date <= ?)${projectClause}
|
|
126
|
+
ORDER BY (due_date IS NULL) ASC, due_date ASC, priority ASC, created_at ASC
|
|
127
|
+
LIMIT ?`,
|
|
128
|
+
args
|
|
129
|
+
});
|
|
130
|
+
return result.rows.map((r) => rowToProspective(r));
|
|
131
|
+
}
|
|
132
|
+
async function markSurfaced(ids) {
|
|
133
|
+
if (ids.length === 0) return;
|
|
134
|
+
const client = getClient();
|
|
135
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
136
|
+
const placeholders = ids.map(() => "?").join(",");
|
|
137
|
+
await client.execute({
|
|
138
|
+
sql: `UPDATE prospective_memories SET last_surfaced = ?, updated_at = ?
|
|
139
|
+
WHERE id IN (${placeholders})`,
|
|
140
|
+
args: [now, now, ...ids]
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async function getOverdueProspective(agentId, asOf) {
|
|
144
|
+
const client = getClient();
|
|
145
|
+
const cutoff = asOf ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
146
|
+
const result = await client.execute({
|
|
147
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
148
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
149
|
+
FROM prospective_memories
|
|
150
|
+
WHERE agent_id = ?
|
|
151
|
+
AND status = 'pending'
|
|
152
|
+
AND due_date IS NOT NULL
|
|
153
|
+
AND due_date < ?
|
|
154
|
+
ORDER BY due_date ASC, priority ASC`,
|
|
155
|
+
args: [agentId.toLowerCase(), cutoff]
|
|
156
|
+
});
|
|
157
|
+
return result.rows.map((r) => rowToProspective(r));
|
|
158
|
+
}
|
|
159
|
+
async function completeProspective(id) {
|
|
160
|
+
const client = getClient();
|
|
161
|
+
const existing = await client.execute({
|
|
162
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
163
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
164
|
+
FROM prospective_memories WHERE id = ?`,
|
|
165
|
+
args: [id]
|
|
166
|
+
});
|
|
167
|
+
if (existing.rows.length === 0) return null;
|
|
168
|
+
const record = rowToProspective(existing.rows[0]);
|
|
169
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
170
|
+
if (record.recurrence === "once") {
|
|
171
|
+
await client.execute({
|
|
172
|
+
sql: `UPDATE prospective_memories SET status = 'completed', updated_at = ? WHERE id = ?`,
|
|
173
|
+
args: [now, id]
|
|
174
|
+
});
|
|
175
|
+
return { ...record, status: "completed", updatedAt: now };
|
|
176
|
+
}
|
|
177
|
+
const advanced = nextDueDate(record.dueDate, record.recurrence);
|
|
178
|
+
await client.execute({
|
|
179
|
+
sql: `UPDATE prospective_memories SET due_date = ?, updated_at = ? WHERE id = ?`,
|
|
180
|
+
args: [advanced, now, id]
|
|
181
|
+
});
|
|
182
|
+
return { ...record, dueDate: advanced, updatedAt: now };
|
|
183
|
+
}
|
|
184
|
+
async function deferProspective(id, newDueDate) {
|
|
185
|
+
const client = getClient();
|
|
186
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
187
|
+
const existing = await client.execute({
|
|
188
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
189
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
190
|
+
FROM prospective_memories WHERE id = ?`,
|
|
191
|
+
args: [id]
|
|
192
|
+
});
|
|
193
|
+
if (existing.rows.length === 0) return null;
|
|
194
|
+
await client.execute({
|
|
195
|
+
sql: `UPDATE prospective_memories SET due_date = ?, status = 'deferred', updated_at = ? WHERE id = ?`,
|
|
196
|
+
args: [newDueDate, now, id]
|
|
197
|
+
});
|
|
198
|
+
const record = rowToProspective(existing.rows[0]);
|
|
199
|
+
return { ...record, dueDate: newDueDate, status: "deferred", updatedAt: now };
|
|
200
|
+
}
|
|
201
|
+
async function listProspective(agentId, options = {}) {
|
|
202
|
+
const client = getClient();
|
|
203
|
+
const args = [agentId.toLowerCase()];
|
|
204
|
+
let statusClause = "";
|
|
205
|
+
if (options.status) {
|
|
206
|
+
statusClause = " AND status = ?";
|
|
207
|
+
args.push(options.status);
|
|
208
|
+
}
|
|
209
|
+
args.push(options.limit ?? 50);
|
|
210
|
+
const result = await client.execute({
|
|
211
|
+
sql: `SELECT id, agent_id, content, due_date, recurrence, priority, status,
|
|
212
|
+
last_surfaced, project_name, session_scope, created_at, updated_at
|
|
213
|
+
FROM prospective_memories
|
|
214
|
+
WHERE agent_id = ?${statusClause}
|
|
215
|
+
ORDER BY (due_date IS NULL) ASC, due_date ASC, priority ASC
|
|
216
|
+
LIMIT ?`,
|
|
217
|
+
args
|
|
218
|
+
});
|
|
219
|
+
return result.rows.map((r) => rowToProspective(r));
|
|
220
|
+
}
|
|
221
|
+
export {
|
|
222
|
+
PROSPECTIVE_RECURRENCES,
|
|
223
|
+
PROSPECTIVE_STATUSES,
|
|
224
|
+
completeProspective,
|
|
225
|
+
createProspectiveMemory,
|
|
226
|
+
deferProspective,
|
|
227
|
+
getOverdueProspective,
|
|
228
|
+
getPendingProspective,
|
|
229
|
+
listProspective,
|
|
230
|
+
markSurfaced,
|
|
231
|
+
nextDueDate
|
|
232
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
disposeReranker,
|
|
3
|
+
getRerankerModelPath,
|
|
4
|
+
isRerankerAvailable,
|
|
5
|
+
rerank,
|
|
6
|
+
rerankWithContext,
|
|
7
|
+
rerankWithScores
|
|
8
|
+
} from "./chunk-TYRUIE6P.js";
|
|
9
|
+
import "./chunk-R36FAN53.js";
|
|
10
|
+
import "./chunk-LYH5HE24.js";
|
|
11
|
+
import "./chunk-MLKGABMK.js";
|
|
12
|
+
export {
|
|
13
|
+
disposeReranker,
|
|
14
|
+
getRerankerModelPath,
|
|
15
|
+
isRerankerAvailable,
|
|
16
|
+
rerank,
|
|
17
|
+
rerankWithContext,
|
|
18
|
+
rerankWithScores
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
disposeReranker,
|
|
3
|
+
getRerankerModelPath,
|
|
4
|
+
isRerankerAvailable,
|
|
5
|
+
rerank,
|
|
6
|
+
rerankWithContext,
|
|
7
|
+
rerankWithScores
|
|
8
|
+
} from "./chunk-L32V4O5Z.js";
|
|
9
|
+
import "./chunk-R36FAN53.js";
|
|
10
|
+
import "./chunk-LYH5HE24.js";
|
|
11
|
+
import "./chunk-MLKGABMK.js";
|
|
12
|
+
export {
|
|
13
|
+
disposeReranker,
|
|
14
|
+
getRerankerModelPath,
|
|
15
|
+
isRerankerAvailable,
|
|
16
|
+
rerank,
|
|
17
|
+
rerankWithContext,
|
|
18
|
+
rerankWithScores
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
disposeReranker,
|
|
3
|
+
getRerankerModelPath,
|
|
4
|
+
isRerankerAvailable,
|
|
5
|
+
rerank,
|
|
6
|
+
rerankWithContext,
|
|
7
|
+
rerankWithScores
|
|
8
|
+
} from "./chunk-3RA62PNQ.js";
|
|
9
|
+
import "./chunk-R36FAN53.js";
|
|
10
|
+
import "./chunk-LYH5HE24.js";
|
|
11
|
+
import "./chunk-MLKGABMK.js";
|
|
12
|
+
export {
|
|
13
|
+
disposeReranker,
|
|
14
|
+
getRerankerModelPath,
|
|
15
|
+
isRerankerAvailable,
|
|
16
|
+
rerank,
|
|
17
|
+
rerankWithContext,
|
|
18
|
+
rerankWithScores
|
|
19
|
+
};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isExeSession,
|
|
3
|
+
strictSessionScopeFilter
|
|
4
|
+
} from "./chunk-YOMETWOJ.js";
|
|
5
|
+
import "./chunk-YDFY6YCH.js";
|
|
6
|
+
import "./chunk-4JERP7NT.js";
|
|
7
|
+
import "./chunk-4FVVJ7ME.js";
|
|
8
|
+
import "./chunk-IKPQRHVQ.js";
|
|
9
|
+
import "./chunk-KOO3J5PV.js";
|
|
10
|
+
import "./chunk-22TVSRQQ.js";
|
|
11
|
+
import "./chunk-SSTLTIF3.js";
|
|
12
|
+
import "./chunk-RCGHXBCX.js";
|
|
13
|
+
import "./chunk-QRTJNSKU.js";
|
|
14
|
+
import "./chunk-NGP6LSV2.js";
|
|
15
|
+
import "./chunk-3RY2ARDN.js";
|
|
16
|
+
import "./chunk-CVYC6DUW.js";
|
|
17
|
+
import "./chunk-OPU3NYOO.js";
|
|
18
|
+
import "./chunk-GJV3WDWM.js";
|
|
19
|
+
import "./chunk-MP2AFCGL.js";
|
|
20
|
+
import "./chunk-URLH7ZVR.js";
|
|
21
|
+
import "./chunk-HYZV25LY.js";
|
|
22
|
+
import {
|
|
23
|
+
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
24
|
+
getCoordinatorName
|
|
25
|
+
} from "./chunk-XABJRAUW.js";
|
|
26
|
+
import "./chunk-2I23RPSI.js";
|
|
27
|
+
import "./chunk-PH6VRRFR.js";
|
|
28
|
+
import "./chunk-PNQDP3OA.js";
|
|
29
|
+
import "./chunk-7HLWBYH7.js";
|
|
30
|
+
import "./chunk-FXU7JOXK.js";
|
|
31
|
+
import "./chunk-YTKVJJSU.js";
|
|
32
|
+
import "./chunk-R36FAN53.js";
|
|
33
|
+
import "./chunk-LYH5HE24.js";
|
|
34
|
+
import "./chunk-MLKGABMK.js";
|
|
35
|
+
|
|
36
|
+
// src/lib/review-polling.ts
|
|
37
|
+
import { execSync } from "child_process";
|
|
38
|
+
async function pollPendingReviews(deps, _state) {
|
|
39
|
+
let sessions;
|
|
40
|
+
try {
|
|
41
|
+
sessions = deps.listTmuxSessions().filter((s) => isExeSession(s));
|
|
42
|
+
} catch (err) {
|
|
43
|
+
process.stderr.write(
|
|
44
|
+
`[review-polling] tmux session listing failed: ${err instanceof Error ? err.message : String(err)}
|
|
45
|
+
`
|
|
46
|
+
);
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
if (sessions.length === 0) return [];
|
|
50
|
+
const sent = [];
|
|
51
|
+
for (const exeSession of sessions) {
|
|
52
|
+
try {
|
|
53
|
+
const orphans = await deps.findOrphanedDoneTasks(exeSession);
|
|
54
|
+
for (const orphan of orphans) {
|
|
55
|
+
try {
|
|
56
|
+
await deps.createReviewForOrphan(orphan);
|
|
57
|
+
} catch {
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
} catch {
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return sent;
|
|
64
|
+
}
|
|
65
|
+
function createRealDeps(getClient) {
|
|
66
|
+
return {
|
|
67
|
+
listTmuxSessions: () => {
|
|
68
|
+
try {
|
|
69
|
+
return execSync("tmux list-sessions -F '#{session_name}' 2>/dev/null", {
|
|
70
|
+
encoding: "utf8",
|
|
71
|
+
timeout: 3e3
|
|
72
|
+
}).trim().split("\n").filter(Boolean);
|
|
73
|
+
} catch {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
countPendingReviews: async (sessionScope) => {
|
|
78
|
+
const client = getClient();
|
|
79
|
+
const rpScope = strictSessionScopeFilter(sessionScope);
|
|
80
|
+
const result = await client.execute({
|
|
81
|
+
sql: `SELECT COUNT(*) as count FROM tasks
|
|
82
|
+
WHERE status = 'needs_review'${rpScope.sql}`,
|
|
83
|
+
args: [...rpScope.args]
|
|
84
|
+
});
|
|
85
|
+
return Number(result.rows[0]?.count ?? 0);
|
|
86
|
+
},
|
|
87
|
+
sendIntercom: (session) => {
|
|
88
|
+
import("./lib/tmux-routing.js").then(({ sendIntercom: centralSend }) => centralSend(session)).catch(() => {
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
findOrphanedDoneTasks: async (sessionScope) => {
|
|
92
|
+
const client = getClient();
|
|
93
|
+
const coordinatorName = getCoordinatorName();
|
|
94
|
+
const odScope = strictSessionScopeFilter(sessionScope, "t");
|
|
95
|
+
const result = await client.execute({
|
|
96
|
+
sql: `SELECT t.id, t.title, t.assigned_to, t.assigned_by,
|
|
97
|
+
t.project_name, t.task_file, t.result, t.status
|
|
98
|
+
FROM tasks t
|
|
99
|
+
WHERE t.status = 'needs_review'
|
|
100
|
+
AND t.assigned_to != ?
|
|
101
|
+
AND t.assigned_to != ?${odScope.sql}
|
|
102
|
+
AND (t.result IS NULL OR t.result NOT LIKE '%## Review notes%')`,
|
|
103
|
+
args: [coordinatorName, DEFAULT_COORDINATOR_TEMPLATE_NAME, ...odScope.args]
|
|
104
|
+
});
|
|
105
|
+
return result.rows;
|
|
106
|
+
},
|
|
107
|
+
createReviewForOrphan: async (task) => {
|
|
108
|
+
const { createReviewForCompletedTask } = await import("./tasks-review-OSBG2YN2.js");
|
|
109
|
+
const cwd = process.cwd();
|
|
110
|
+
await createReviewForCompletedTask(
|
|
111
|
+
task,
|
|
112
|
+
task.result ?? void 0,
|
|
113
|
+
cwd,
|
|
114
|
+
(/* @__PURE__ */ new Date()).toISOString()
|
|
115
|
+
);
|
|
116
|
+
process.stderr.write(`[exed] Created missing review for: ${task.title} (${task.assigned_to})
|
|
117
|
+
`);
|
|
118
|
+
}
|
|
119
|
+
// findUrgentUnread and findUnstartedTasks removed (2026-05-25 consolidation).
|
|
120
|
+
// All employee nudging handled by task-enforcement → sendIntercom.
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export {
|
|
124
|
+
createRealDeps,
|
|
125
|
+
pollPendingReviews
|
|
126
|
+
};
|