@askexenow/exe-os 0.9.280 → 0.9.281
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.default +2 -1
- package/deploy/compose/.env.example +1 -1
- package/deploy/compose/docker-compose.yml +74 -13
- package/deploy/compose/erp-nginx/nginx.conf +52 -0
- package/deploy/compose/generate-env.ts +1 -1
- package/deploy/compose/init-db.sql +13 -2
- package/deploy/stack-manifests/v0.9.json +11 -31
- package/dist/active-agent-6ZBHGHXF.js +26 -0
- package/dist/active-agent-E23SCYER.js +27 -0
- package/dist/active-agent-KMZT44S4.js +26 -0
- package/dist/active-agent-LFFTVROM.js +27 -0
- package/dist/agentic-ontology-PCZB5HV5.js +25 -0
- package/dist/agentic-ontology-PGGJN2ES.js +25 -0
- package/dist/assets/tmux.conf +2 -0
- package/dist/backfill-metadata-KQ4FEVUR.js +599 -0
- package/dist/backfill-metadata-Y3YWCHKJ.js +599 -0
- package/dist/behaviors-H4DZECKL.js +39 -0
- package/dist/behaviors-WIUTIJF6.js +39 -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 +4 -4
- package/dist/bin/backfill-responses.js +4 -4
- package/dist/bin/backfill-vectors.js +5 -5
- package/dist/bin/bulk-sync-postgres.js +7 -7
- package/dist/bin/cc-doctor.js +4 -4
- package/dist/bin/cleanup-stale-review-tasks.js +10 -10
- package/dist/bin/cli.js +15 -15
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +4 -4
- package/dist/bin/exe-assign.js +5 -5
- package/dist/bin/exe-boot.js +17 -17
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +5 -5
- package/dist/bin/exe-dispatch.js +10 -10
- package/dist/bin/exe-doctor.js +1 -1
- 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 +4 -4
- package/dist/bin/exe-heartbeat.js +10 -10
- package/dist/bin/exe-kill.js +13 -13
- package/dist/bin/exe-launch-agent.js +17 -17
- package/dist/bin/exe-new-employee.js +7 -7
- 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 +5 -5
- 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-support.js +2 -2
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/exe-watchdog.js +17 -2
- package/dist/bin/git-sweep.js +11 -11
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install.js +8 -7
- 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/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 +3 -3
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/capability-cards-F22XWGLB.js +88 -0
- package/dist/capability-cards-KCKITXXZ.js +88 -0
- package/dist/capacity-monitor-CHXGKVEO.js +50 -0
- package/dist/capacity-monitor-L3M5KB6T.js +50 -0
- package/dist/catchup-brief-BVZANLRZ.js +154 -0
- package/dist/catchup-brief-LDUGMC7S.js +154 -0
- package/dist/catchup-brief-NZDLL7SA.js +154 -0
- package/dist/catchup-brief-OOIXVGBA.js +154 -0
- package/dist/catchup-brief-UPXHDYTB.js +154 -0
- package/dist/chunk-2BI3FQKL.js +1876 -0
- package/dist/chunk-2CJUQGHH.js +362 -0
- package/dist/chunk-2EVYBMBJ.js +128 -0
- package/dist/chunk-2NQOZOXG.js +2113 -0
- package/dist/chunk-2QK5E3LB.js +128 -0
- package/dist/chunk-2VTCG4ZU.js +1352 -0
- package/dist/chunk-2YGI36DV.js +1119 -0
- package/dist/chunk-32BQN2QN.js +185 -0
- package/dist/chunk-33JMO4UV.js +157 -0
- package/dist/chunk-3DZAYLXY.js +377 -0
- package/dist/chunk-3MGBE7GR.js +76 -0
- package/dist/chunk-3MTV4FJL.js +271 -0
- package/dist/chunk-3NN7VQ27.js +1352 -0
- package/dist/chunk-4533HNOG.js +70 -0
- package/dist/chunk-456UW3MT.js +731 -0
- package/dist/chunk-4AU56XV2.js +58 -0
- package/dist/chunk-4MRP6EBR.js +280 -0
- package/dist/chunk-4MRWW52U.js +14219 -0
- package/dist/chunk-4WWECNAY.js +50 -0
- package/dist/chunk-4ZJDDR6L.js +171 -0
- package/dist/chunk-522EOPM6.js +382 -0
- package/dist/chunk-52UDAVZE.js +3208 -0
- package/dist/chunk-5FAMUB4X.js +204 -0
- package/dist/chunk-5PGZJQUI.js +58 -0
- package/dist/chunk-67TZJXNZ.js +262 -0
- package/dist/chunk-6FEZ7GN2.js +123 -0
- package/dist/chunk-6MOGND7S.js +14219 -0
- package/dist/chunk-6TRSVY7L.js +181 -0
- package/dist/chunk-6WCS7ZNK.js +85 -0
- package/dist/chunk-6WRYDREW.js +539 -0
- package/dist/chunk-72UA2FB3.js +181 -0
- package/dist/chunk-77DMFEOL.js +30 -0
- package/dist/chunk-7COXVQ5W.js +214 -0
- package/dist/chunk-7HLWBYH7.js +60 -0
- package/dist/chunk-ALSTZCWT.js +204 -0
- package/dist/chunk-ARUTDXZX.js +280 -0
- package/dist/chunk-AU47B4QY.js +129 -0
- package/dist/chunk-AXOREWVL.js +836 -0
- package/dist/chunk-B5MNC54V.js +127 -0
- package/dist/chunk-B74VSMKX.js +1350 -0
- package/dist/chunk-BHWLH44J.js +362 -0
- package/dist/chunk-BUPZ3HD2.js +85 -0
- package/dist/chunk-BWVLMA53.js +2113 -0
- package/dist/chunk-C5WLBKMJ.js +50 -0
- package/dist/chunk-C62T6R2A.js +97 -0
- package/dist/chunk-CV5KBAIK.js +33 -0
- package/dist/chunk-DAYSDWXA.js +1068 -0
- package/dist/chunk-DI4URIUB.js +227 -0
- package/dist/chunk-DNTCYFJ6.js +76 -0
- package/dist/chunk-DPDRRS7T.js +103 -0
- package/dist/chunk-DT3EV6CW.js +103 -0
- package/dist/chunk-DX45HDWY.js +1076 -0
- package/dist/chunk-E72BD6MG.js +284 -0
- package/dist/chunk-EAPUSVKS.js +375 -0
- package/dist/chunk-EFUANRRT.js +85 -0
- package/dist/chunk-EG2SCT5R.js +1352 -0
- package/dist/chunk-EJD2JU77.js +58 -0
- package/dist/chunk-EMXYUAVP.js +81 -0
- package/dist/chunk-ENM2TAAM.js +14219 -0
- package/dist/chunk-EPDRTPVP.js +1876 -0
- package/dist/chunk-EW6XDHID.js +221 -0
- package/dist/chunk-EYEGSAWZ.js +1094 -0
- package/dist/chunk-F6L33PAQ.js +231 -0
- package/dist/chunk-FC2SCTVE.js +38 -0
- package/dist/chunk-FSRKIZGZ.js +630 -0
- package/dist/chunk-FTG7I5CB.js +81 -0
- package/dist/chunk-GVFRLWX7.js +30 -0
- package/dist/chunk-H3XMZOWW.js +1119 -0
- package/dist/chunk-HAKXE6LN.js +123 -0
- package/dist/chunk-HLP3ZDTW.js +448 -0
- package/dist/chunk-HOYWKQAA.js +510 -0
- package/dist/chunk-HWDD64IW.js +712 -0
- package/dist/chunk-HWMCULHY.js +127 -0
- package/dist/chunk-HZZHRZPK.js +210 -0
- package/dist/chunk-ICRWTYNW.js +103 -0
- package/dist/chunk-J5MWPC33.js +167 -0
- package/dist/chunk-JBXANNNB.js +70 -0
- package/dist/chunk-JPBMIYWF.js +1352 -0
- package/dist/chunk-JY6EXBFI.js +373 -0
- package/dist/chunk-JZLIBXI7.js +14219 -0
- package/dist/chunk-JZPTKXJ6.js +668 -0
- package/dist/chunk-KEYMA4ZP.js +510 -0
- package/dist/chunk-KHGNN6GL.js +2078 -0
- package/dist/chunk-KVLB2PD6.js +97 -0
- package/dist/chunk-L3YBRBKL.js +1076 -0
- package/dist/chunk-L7VZ32NA.js +89 -0
- package/dist/chunk-LEHLADW4.js +221 -0
- package/dist/chunk-LPD4HILQ.js +262 -0
- package/dist/chunk-LSJ3ADDI.js +51 -0
- package/dist/chunk-LUMS2MAS.js +58 -0
- package/dist/chunk-LV4SEC6C.js +394 -0
- package/dist/chunk-LXXBEI4A.js +284 -0
- package/dist/chunk-M4NPCAIH.js +456 -0
- package/dist/chunk-MFJ62LQ5.js +157 -0
- package/dist/chunk-MGEZNKOD.js +836 -0
- package/dist/chunk-MJ7X5IBW.js +227 -0
- package/dist/chunk-MLGRWCY4.js +54 -0
- package/dist/chunk-MQZX57IY.js +348 -0
- package/dist/chunk-MY7MFF6J.js +103 -0
- package/dist/chunk-MYA2X5OY.js +185 -0
- package/dist/chunk-MYEABW5Z.js +630 -0
- package/dist/chunk-MZ2TDCAL.js +402 -0
- package/dist/chunk-NF3FRB7Z.js +271 -0
- package/dist/chunk-NXYIFEPV.js +539 -0
- package/dist/chunk-O2GVE5B5.js +58 -0
- package/dist/chunk-O5GUCDR2.js +456 -0
- package/dist/chunk-OBZNRECA.js +128 -0
- package/dist/chunk-OMZ2RLJG.js +214 -0
- package/dist/chunk-ORDHJRWN.js +299 -0
- package/dist/chunk-OSPIJMCD.js +210 -0
- package/dist/chunk-OUGWEH4J.js +240 -0
- package/dist/chunk-OV5MJQGC.js +1876 -0
- package/dist/chunk-PC635OAG.js +4318 -0
- package/dist/chunk-PH46R4J6.js +348 -0
- package/dist/chunk-PJP2EP7P.js +394 -0
- package/dist/chunk-PODFWH3V.js +333 -0
- package/dist/chunk-PPWH3SHR.js +1068 -0
- package/dist/chunk-PWPJK7KB.js +4318 -0
- package/dist/chunk-PXONZVG4.js +377 -0
- package/dist/chunk-QAOGJRZD.js +369 -0
- package/dist/chunk-QC3LAEI7.js +197 -0
- package/dist/chunk-QDWQDUWI.js +668 -0
- package/dist/chunk-QKJFD6BH.js +1350 -0
- package/dist/chunk-QNYVJGFM.js +345 -0
- package/dist/chunk-QQF3XGQ5.js +14219 -0
- package/dist/chunk-QRPFQNI3.js +150 -0
- package/dist/chunk-QSSU5XWD.js +731 -0
- package/dist/chunk-QXZAGVAV.js +2078 -0
- package/dist/chunk-RA54MW64.js +244 -0
- package/dist/chunk-RF7PUWXI.js +197 -0
- package/dist/chunk-S3INDYSO.js +244 -0
- package/dist/chunk-SLQVTHH5.js +369 -0
- package/dist/chunk-SY2B74KL.js +345 -0
- package/dist/chunk-T6QPXXXW.js +712 -0
- package/dist/chunk-TO5M5YCT.js +41 -0
- package/dist/chunk-TQ4VXUAF.js +129 -0
- package/dist/chunk-UAB7RQC4.js +41 -0
- package/dist/chunk-UMEIBDYW.js +97 -0
- package/dist/chunk-UXW5TB7Y.js +240 -0
- package/dist/chunk-VB2N5WOX.js +150 -0
- package/dist/chunk-VLZEMRG3.js +167 -0
- package/dist/chunk-VM3V6VK7.js +230 -0
- package/dist/chunk-VMCGKBHB.js +1352 -0
- package/dist/chunk-VNIYZAR5.js +128 -0
- package/dist/chunk-VYV4KOD2.js +85 -0
- package/dist/chunk-W4SRJBAT.js +171 -0
- package/dist/chunk-W5W3LZ3Q.js +54 -0
- package/dist/chunk-WDNZEOM3.js +38 -0
- package/dist/chunk-WUKEXVOR.js +3208 -0
- package/dist/chunk-X3Z35Q6L.js +373 -0
- package/dist/chunk-X4VOU6BQ.js +382 -0
- package/dist/chunk-X6EEVSVG.js +290 -0
- package/dist/chunk-XFHGWGNB.js +1094 -0
- package/dist/chunk-XKOLRWYA.js +33 -0
- package/dist/chunk-XMMIL3UD.js +402 -0
- package/dist/chunk-XWILC6VA.js +290 -0
- package/dist/chunk-Y4OQCX4C.js +97 -0
- package/dist/chunk-Y67VYYOA.js +231 -0
- package/dist/chunk-YGQCQTQH.js +230 -0
- package/dist/chunk-YGWFBN5A.js +299 -0
- package/dist/chunk-YMKUXZIG.js +379 -0
- package/dist/chunk-YOMLMT7E.js +230 -0
- package/dist/chunk-YPESIZOB.js +14219 -0
- package/dist/chunk-Z2CGCIU2.js +89 -0
- package/dist/chunk-ZLAWNHQR.js +448 -0
- package/dist/chunk-ZME5UQSN.js +333 -0
- package/dist/co-activation-NUEQYXE5.js +73 -0
- package/dist/co-activation-ZG5HLBCZ.js +73 -0
- package/dist/co-occurrence-7S5KWQB2.js +94 -0
- package/dist/co-occurrence-X5SWDXT2.js +94 -0
- package/dist/core-memory-GOPBRGGZ.js +110 -0
- package/dist/core-memory-XLCU6L5M.js +110 -0
- package/dist/crdt-sync-EPKHPGRZ.js +33 -0
- package/dist/crdt-sync-UIQJ5U7T.js +33 -0
- package/dist/crm-webhook-MKN23JNU.js +10 -0
- package/dist/crm-webhook-SM63BPXO.js +10 -0
- package/dist/cto-delegation-gate-PQY5TOVZ.js +279 -0
- package/dist/cto-delegation-gate-V5VVUR3G.js +279 -0
- package/dist/daemon-orchestration-C7AAS67Q.js +138 -0
- package/dist/daemon-orchestration-OBCAJB2H.js +138 -0
- package/dist/db-backup-F7VP4QRH.js +33 -0
- package/dist/db-backup-KVYC57W7.js +33 -0
- package/dist/doc-graph-extractor-H2ETEINP.js +132 -0
- package/dist/doc-graph-extractor-PCUZEYCH.js +132 -0
- package/dist/dreaming-4OZXSLE3.js +33 -0
- package/dist/dreaming-Z2RYEYNT.js +33 -0
- package/dist/exe-drift-GEWNIK7A.js +69 -0
- package/dist/exe-drift-XCGH7AFO.js +69 -0
- package/dist/exe-export-7DKAU5IP.js +75 -0
- package/dist/exe-export-BCHH6OE6.js +75 -0
- package/dist/exe-import-PDRIZVYF.js +78 -0
- package/dist/exe-import-ZCKUDFKL.js +78 -0
- package/dist/exe-key-FUWLLI3U.js +580 -0
- package/dist/exe-key-RKKNVUMP.js +580 -0
- package/dist/exe-snapshot-G4I5FQMK.js +337 -0
- package/dist/exe-snapshot-GWU7QTZK.js +337 -0
- package/dist/fast-db-init-6QG6YQNT.js +7 -0
- package/dist/fast-db-init-X2QDQUA4.js +7 -0
- package/dist/founder-context-TOMNUBGJ.js +96 -0
- package/dist/founder-context-UU3V6MAS.js +96 -0
- package/dist/gateway/index.js +8 -8
- package/dist/git-staleness-FEPFMZKF.js +111 -0
- package/dist/git-staleness-HYVYLCW3.js +111 -0
- package/dist/git-task-sweep-IRV52JIM.js +41 -0
- package/dist/git-task-sweep-T6BSM3GS.js +41 -0
- package/dist/global-procedures-3AURRMKO.js +21 -0
- package/dist/global-procedures-JPCYBZYC.js +21 -0
- package/dist/graph-auto-extract-OC3AOSMW.js +182 -0
- package/dist/graph-auto-extract-PVDYEJBY.js +182 -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.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +11 -11
- package/dist/hooks/post-tool-combined.js +5 -5
- package/dist/hooks/pre-compact.js +12 -12
- package/dist/hooks/pre-tool-use.js +15 -15
- package/dist/hooks/prompt-submit.js +22 -22
- package/dist/hooks/session-end.js +16 -16
- package/dist/hooks/session-start.js +10 -10
- package/dist/hooks/stop.js +15 -15
- package/dist/hooks/subagent-stop.js +11 -11
- package/dist/hooks/summary-worker.js +15 -15
- package/dist/index.js +18 -18
- package/dist/installer-72XXLBRP.js +39 -0
- package/dist/installer-HDXG2BZN.js +343 -0
- package/dist/installer-JALMKPCS.js +297 -0
- package/dist/installer-Q46SNNLU.js +39 -0
- package/dist/installer-W7PIPRCX.js +343 -0
- package/dist/installer-Z7WQEOS7.js +297 -0
- package/dist/lib/cloud-sync.js +5 -5
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +2 -2
- package/dist/lib/db.js +2 -2
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon.js +45 -41
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +1 -1
- 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/license-gate-7JZCHOAG.js +14 -0
- package/dist/license-gate-OP4SKL4P.js +14 -0
- package/dist/mcp/register-tools.js +58 -58
- package/dist/mcp/server.js +59 -59
- 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-health-VULNT722.js +17 -0
- package/dist/mcp-health-WDOB6XUB.js +19 -0
- package/dist/mcp-http-config-2OZ7N74D.js +28 -0
- package/dist/mcp-http-config-4VXA5K73.js +28 -0
- package/dist/memory-cards-2K6QRZU6.js +179 -0
- package/dist/memory-cards-KSJF5OH2.js +179 -0
- package/dist/memory-graph-extractor-IJD5HWYT.js +21 -0
- package/dist/memory-graph-extractor-O4GAXOK5.js +21 -0
- package/dist/memory-poisoning-defense-2JRPWT5V.js +223 -0
- package/dist/memory-poisoning-defense-DH4A25NU.js +223 -0
- package/dist/memory-reflection-ISY2BBDB.js +243 -0
- package/dist/memory-reflection-Z5AQRR6H.js +243 -0
- package/dist/notifications-2VSWK2UJ.js +46 -0
- package/dist/notifications-4S253VQM.js +46 -0
- package/dist/oauth-server-D7D4574D.js +437 -0
- package/dist/oauth-server-MACN54SJ.js +437 -0
- package/dist/orchestration-events-BGP5RYQI.js +26 -0
- package/dist/orchestration-events-MDXUEVRZ.js +26 -0
- package/dist/orchestrator-DHK7RSSH.js +34 -0
- package/dist/orchestrator-R75WHQVA.js +34 -0
- package/dist/pipeline-router-4WUKQQEC.js +14 -0
- package/dist/pipeline-router-GWB2XK2Q.js +14 -0
- package/dist/plan-limits-NNJRAESF.js +27 -0
- package/dist/plan-limits-YTQW4UR4.js +27 -0
- package/dist/project-boot-46GZJTEX.js +299 -0
- package/dist/project-boot-PPHBBGIF.js +299 -0
- package/dist/projection-worker-UPAWXI7P.js +1034 -0
- package/dist/projection-worker-ZIKDYBW5.js +1034 -0
- package/dist/reranker-5ZBP2RRN.js +19 -0
- package/dist/reranker-E2MQIMJL.js +19 -0
- package/dist/reranker-GLSDJT3V.js +19 -0
- package/dist/reranker-LBBXWNOD.js +19 -0
- package/dist/reranker-XZ2EF4OH.js +19 -0
- package/dist/retrieval-health-JYRKPSII.js +7 -0
- package/dist/retrieval-health-OUV25J6S.js +7 -0
- package/dist/retrieval-health-U73JUAZL.js +7 -0
- package/dist/retrieval-health-WSZ7TYFF.js +7 -0
- package/dist/review-polling-62JV55ZT.js +125 -0
- package/dist/review-polling-CJXLWFWK.js +125 -0
- package/dist/runtime/index.js +12 -12
- package/dist/session-events-2ADD54VI.js +37 -0
- package/dist/session-events-QIJVBSKS.js +37 -0
- package/dist/session-kill-telemetry-HS6HD2YE.js +30 -0
- package/dist/session-kill-telemetry-MRT5FVSM.js +30 -0
- package/dist/session-scope-7ICYPC33.js +87 -0
- package/dist/session-scope-KMXD6EE6.js +87 -0
- package/dist/setup-wizard-B6GIT7YC.js +12 -0
- package/dist/setup-wizard-JUIJ4UZO.js +12 -0
- package/dist/skill-refinement-HIOX4VMC.js +158 -0
- package/dist/skill-refinement-T7JXRYUW.js +158 -0
- package/dist/stack-update-5KE6BZKQ.js +74 -0
- package/dist/stack-update-OP2RHP7N.js +74 -0
- package/dist/stack-update-VGCWDJEE.js +74 -0
- package/dist/steward-gate-L22WE3SY.js +14 -0
- package/dist/steward-gate-YKD2LUWN.js +14 -0
- package/dist/task-enforcement-5AOKXTY4.js +439 -0
- package/dist/task-enforcement-VO3YEGIO.js +439 -0
- package/dist/task-scope-YV2WPKRD.js +36 -0
- package/dist/task-scope-ZSXDZBRE.js +36 -0
- package/dist/tasks-crud-C6KADACT.js +78 -0
- package/dist/tasks-crud-NV6JEWGL.js +78 -0
- package/dist/tasks-notify-E22HSN6O.js +39 -0
- package/dist/tasks-notify-RPSEQ4WV.js +39 -0
- package/dist/tasks-review-V4ZLXOAZ.js +48 -0
- package/dist/tasks-review-ZVRI73JE.js +48 -0
- package/dist/telemetry-upload-LXUH7SKI.js +740 -0
- package/dist/telemetry-upload-TCDAZTUQ.js +740 -0
- package/dist/token-budget-OFBEZJTA.js +85 -0
- package/dist/token-budget-WAN57V6S.js +85 -0
- package/dist/tool-telemetry-UA3N32PK.js +17 -0
- package/dist/tool-telemetry-XXZJ35RR.js +17 -0
- package/dist/tui/App.js +17 -17
- package/dist/tui-data-46QLCJUE.js +259 -0
- package/dist/tui-data-ZDB7BLP2.js +259 -0
- package/dist/wiki-acl-HHSIBPF3.js +111 -0
- package/dist/wiki-acl-O65GZ2ZF.js +111 -0
- package/dist/worker-gate-27I4GAEZ.js +21 -0
- package/dist/worker-gate-DXU4HEPY.js +21 -0
- package/dist/workflow-engine-63EOEJ5Q.js +28 -0
- package/dist/workflow-engine-C6F2RMPN.js +28 -0
- package/dist/worktree-SFKKOMFD.js +27 -0
- package/dist/worktree-SVCE3S7X.js +27 -0
- package/dist/worktree-sweep-S3JHJTVP.js +20 -0
- package/dist/worktree-sweep-U3TIQ7WL.js +20 -0
- package/package.json +1 -1
- package/release-notes.json +88 -26
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getClient
|
|
3
|
+
} from "./chunk-WUKEXVOR.js";
|
|
4
|
+
import "./chunk-2I23RPSI.js";
|
|
5
|
+
import "./chunk-ORDHJRWN.js";
|
|
6
|
+
import "./chunk-5DNJPRDW.js";
|
|
7
|
+
import "./chunk-FXU7JOXK.js";
|
|
8
|
+
import "./chunk-T3B5RK4H.js";
|
|
9
|
+
import "./chunk-LYH5HE24.js";
|
|
10
|
+
import "./chunk-MLKGABMK.js";
|
|
11
|
+
|
|
12
|
+
// src/lib/token-budget.ts
|
|
13
|
+
var WARN_THRESHOLD = 0.8;
|
|
14
|
+
function createTokenBudgetMiddleware(taskId) {
|
|
15
|
+
return {
|
|
16
|
+
async onTokenUsed(inputTokens, outputTokens) {
|
|
17
|
+
const client = getClient();
|
|
18
|
+
const row = await client.execute({
|
|
19
|
+
sql: `SELECT budget_tokens, budget_fallback_model, tokens_used, tokens_warned_at
|
|
20
|
+
FROM tasks WHERE id = ?`,
|
|
21
|
+
args: [taskId]
|
|
22
|
+
});
|
|
23
|
+
if (row.rows.length === 0) {
|
|
24
|
+
return { exceeded: false, warned: false, fallback: null, percentUsed: 0 };
|
|
25
|
+
}
|
|
26
|
+
const r = row.rows[0];
|
|
27
|
+
const budgetTokens = r.budget_tokens !== null ? Number(r.budget_tokens) : null;
|
|
28
|
+
const budgetFallbackModel = r.budget_fallback_model !== null ? String(r.budget_fallback_model) : null;
|
|
29
|
+
const currentUsed = Number(r.tokens_used ?? 0);
|
|
30
|
+
const tokensWarnedAt = r.tokens_warned_at !== null ? Number(r.tokens_warned_at) : null;
|
|
31
|
+
const newUsed = currentUsed + inputTokens + outputTokens;
|
|
32
|
+
await client.execute({
|
|
33
|
+
sql: `UPDATE tasks SET tokens_used = ? WHERE id = ?`,
|
|
34
|
+
args: [newUsed, taskId]
|
|
35
|
+
});
|
|
36
|
+
if (budgetTokens === null) {
|
|
37
|
+
return { exceeded: false, warned: false, fallback: null, percentUsed: 0 };
|
|
38
|
+
}
|
|
39
|
+
const percentUsed = Math.round(newUsed / budgetTokens * 100);
|
|
40
|
+
const alreadyWarned = tokensWarnedAt !== null;
|
|
41
|
+
const atWarnThreshold = newUsed >= Math.floor(budgetTokens * WARN_THRESHOLD);
|
|
42
|
+
const warned = atWarnThreshold && !alreadyWarned;
|
|
43
|
+
if (warned) {
|
|
44
|
+
await client.execute({
|
|
45
|
+
sql: `UPDATE tasks SET tokens_warned_at = ? WHERE id = ?`,
|
|
46
|
+
args: [Math.floor(Date.now() / 1e3), taskId]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const exceeded = newUsed >= budgetTokens;
|
|
50
|
+
return {
|
|
51
|
+
exceeded,
|
|
52
|
+
warned,
|
|
53
|
+
fallback: exceeded ? budgetFallbackModel ?? null : null,
|
|
54
|
+
percentUsed
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
async getBudgetStatus() {
|
|
58
|
+
const client = getClient();
|
|
59
|
+
const row = await client.execute({
|
|
60
|
+
sql: `SELECT budget_tokens, budget_fallback_model, tokens_used, tokens_warned_at
|
|
61
|
+
FROM tasks WHERE id = ?`,
|
|
62
|
+
args: [taskId]
|
|
63
|
+
});
|
|
64
|
+
if (row.rows.length === 0) return null;
|
|
65
|
+
const r = row.rows[0];
|
|
66
|
+
const budgetTokens = r.budget_tokens !== null ? Number(r.budget_tokens) : null;
|
|
67
|
+
if (budgetTokens === null) return null;
|
|
68
|
+
const budgetFallbackModel = r.budget_fallback_model !== null ? String(r.budget_fallback_model) : null;
|
|
69
|
+
const tokensUsed = Number(r.tokens_used ?? 0);
|
|
70
|
+
const tokensWarnedAt = r.tokens_warned_at !== null ? Number(r.tokens_warned_at) : null;
|
|
71
|
+
const percentUsed = Math.round(tokensUsed / budgetTokens * 100);
|
|
72
|
+
return {
|
|
73
|
+
budgetTokens,
|
|
74
|
+
budgetFallbackModel,
|
|
75
|
+
tokensUsed,
|
|
76
|
+
percentUsed,
|
|
77
|
+
warned: tokensWarnedAt !== null,
|
|
78
|
+
exceeded: tokensUsed >= budgetTokens
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export {
|
|
84
|
+
createTokenBudgetMiddleware
|
|
85
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getClient
|
|
3
|
+
} from "./chunk-52UDAVZE.js";
|
|
4
|
+
import "./chunk-2I23RPSI.js";
|
|
5
|
+
import "./chunk-YGWFBN5A.js";
|
|
6
|
+
import "./chunk-5DNJPRDW.js";
|
|
7
|
+
import "./chunk-FXU7JOXK.js";
|
|
8
|
+
import "./chunk-T3B5RK4H.js";
|
|
9
|
+
import "./chunk-LYH5HE24.js";
|
|
10
|
+
import "./chunk-MLKGABMK.js";
|
|
11
|
+
|
|
12
|
+
// src/lib/token-budget.ts
|
|
13
|
+
var WARN_THRESHOLD = 0.8;
|
|
14
|
+
function createTokenBudgetMiddleware(taskId) {
|
|
15
|
+
return {
|
|
16
|
+
async onTokenUsed(inputTokens, outputTokens) {
|
|
17
|
+
const client = getClient();
|
|
18
|
+
const row = await client.execute({
|
|
19
|
+
sql: `SELECT budget_tokens, budget_fallback_model, tokens_used, tokens_warned_at
|
|
20
|
+
FROM tasks WHERE id = ?`,
|
|
21
|
+
args: [taskId]
|
|
22
|
+
});
|
|
23
|
+
if (row.rows.length === 0) {
|
|
24
|
+
return { exceeded: false, warned: false, fallback: null, percentUsed: 0 };
|
|
25
|
+
}
|
|
26
|
+
const r = row.rows[0];
|
|
27
|
+
const budgetTokens = r.budget_tokens !== null ? Number(r.budget_tokens) : null;
|
|
28
|
+
const budgetFallbackModel = r.budget_fallback_model !== null ? String(r.budget_fallback_model) : null;
|
|
29
|
+
const currentUsed = Number(r.tokens_used ?? 0);
|
|
30
|
+
const tokensWarnedAt = r.tokens_warned_at !== null ? Number(r.tokens_warned_at) : null;
|
|
31
|
+
const newUsed = currentUsed + inputTokens + outputTokens;
|
|
32
|
+
await client.execute({
|
|
33
|
+
sql: `UPDATE tasks SET tokens_used = ? WHERE id = ?`,
|
|
34
|
+
args: [newUsed, taskId]
|
|
35
|
+
});
|
|
36
|
+
if (budgetTokens === null) {
|
|
37
|
+
return { exceeded: false, warned: false, fallback: null, percentUsed: 0 };
|
|
38
|
+
}
|
|
39
|
+
const percentUsed = Math.round(newUsed / budgetTokens * 100);
|
|
40
|
+
const alreadyWarned = tokensWarnedAt !== null;
|
|
41
|
+
const atWarnThreshold = newUsed >= Math.floor(budgetTokens * WARN_THRESHOLD);
|
|
42
|
+
const warned = atWarnThreshold && !alreadyWarned;
|
|
43
|
+
if (warned) {
|
|
44
|
+
await client.execute({
|
|
45
|
+
sql: `UPDATE tasks SET tokens_warned_at = ? WHERE id = ?`,
|
|
46
|
+
args: [Math.floor(Date.now() / 1e3), taskId]
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const exceeded = newUsed >= budgetTokens;
|
|
50
|
+
return {
|
|
51
|
+
exceeded,
|
|
52
|
+
warned,
|
|
53
|
+
fallback: exceeded ? budgetFallbackModel ?? null : null,
|
|
54
|
+
percentUsed
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
async getBudgetStatus() {
|
|
58
|
+
const client = getClient();
|
|
59
|
+
const row = await client.execute({
|
|
60
|
+
sql: `SELECT budget_tokens, budget_fallback_model, tokens_used, tokens_warned_at
|
|
61
|
+
FROM tasks WHERE id = ?`,
|
|
62
|
+
args: [taskId]
|
|
63
|
+
});
|
|
64
|
+
if (row.rows.length === 0) return null;
|
|
65
|
+
const r = row.rows[0];
|
|
66
|
+
const budgetTokens = r.budget_tokens !== null ? Number(r.budget_tokens) : null;
|
|
67
|
+
if (budgetTokens === null) return null;
|
|
68
|
+
const budgetFallbackModel = r.budget_fallback_model !== null ? String(r.budget_fallback_model) : null;
|
|
69
|
+
const tokensUsed = Number(r.tokens_used ?? 0);
|
|
70
|
+
const tokensWarnedAt = r.tokens_warned_at !== null ? Number(r.tokens_warned_at) : null;
|
|
71
|
+
const percentUsed = Math.round(tokensUsed / budgetTokens * 100);
|
|
72
|
+
return {
|
|
73
|
+
budgetTokens,
|
|
74
|
+
budgetFallbackModel,
|
|
75
|
+
tokensUsed,
|
|
76
|
+
percentUsed,
|
|
77
|
+
warned: tokensWarnedAt !== null,
|
|
78
|
+
exceeded: tokensUsed >= budgetTokens
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export {
|
|
84
|
+
createTokenBudgetMiddleware
|
|
85
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getToolUsageStats,
|
|
3
|
+
getToolUsageSummary,
|
|
4
|
+
resetToolUsageStats,
|
|
5
|
+
startToolTelemetryFlush,
|
|
6
|
+
stopToolTelemetryFlush,
|
|
7
|
+
wrapServerWithTelemetry
|
|
8
|
+
} from "./chunk-2QK5E3LB.js";
|
|
9
|
+
import "./chunk-MLKGABMK.js";
|
|
10
|
+
export {
|
|
11
|
+
getToolUsageStats,
|
|
12
|
+
getToolUsageSummary,
|
|
13
|
+
resetToolUsageStats,
|
|
14
|
+
startToolTelemetryFlush,
|
|
15
|
+
stopToolTelemetryFlush,
|
|
16
|
+
wrapServerWithTelemetry
|
|
17
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getToolUsageStats,
|
|
3
|
+
getToolUsageSummary,
|
|
4
|
+
resetToolUsageStats,
|
|
5
|
+
startToolTelemetryFlush,
|
|
6
|
+
stopToolTelemetryFlush,
|
|
7
|
+
wrapServerWithTelemetry
|
|
8
|
+
} from "./chunk-OBZNRECA.js";
|
|
9
|
+
import "./chunk-MLKGABMK.js";
|
|
10
|
+
export {
|
|
11
|
+
getToolUsageStats,
|
|
12
|
+
getToolUsageSummary,
|
|
13
|
+
resetToolUsageStats,
|
|
14
|
+
startToolTelemetryFlush,
|
|
15
|
+
stopToolTelemetryFlush,
|
|
16
|
+
wrapServerWithTelemetry
|
|
17
|
+
};
|
package/dist/tui/App.js
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getSessionPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-JZPTKXJ6.js";
|
|
5
|
+
import "../chunk-6WCS7ZNK.js";
|
|
6
6
|
import "../chunk-VUH67PT4.js";
|
|
7
7
|
import {
|
|
8
8
|
sessionScopeFilter
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-PWPJK7KB.js";
|
|
10
|
+
import "../chunk-4MRP6EBR.js";
|
|
11
11
|
import "../chunk-4FVVJ7ME.js";
|
|
12
12
|
import "../chunk-4JERP7NT.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-F6L33PAQ.js";
|
|
14
14
|
import "../chunk-MVW62NIZ.js";
|
|
15
15
|
import "../chunk-OYNKIAVW.js";
|
|
16
16
|
import "../chunk-SSTLTIF3.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-MYEABW5Z.js";
|
|
18
18
|
import "../chunk-PMVOUPTY.js";
|
|
19
19
|
import "../chunk-NGP6LSV2.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-AU47B4QY.js";
|
|
21
21
|
import "../chunk-CVYC6DUW.js";
|
|
22
22
|
import "../chunk-OPU3NYOO.js";
|
|
23
23
|
import "../chunk-GJV3WDWM.js";
|
|
24
24
|
import {
|
|
25
25
|
orgBus
|
|
26
26
|
} from "../chunk-MP2AFCGL.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-4533HNOG.js";
|
|
28
28
|
import "../chunk-HYZV25LY.js";
|
|
29
29
|
import {
|
|
30
30
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
31
31
|
isCoordinatorName
|
|
32
|
-
} from "../chunk-
|
|
32
|
+
} from "../chunk-WUKEXVOR.js";
|
|
33
33
|
import "../chunk-2I23RPSI.js";
|
|
34
|
-
import "../chunk-
|
|
34
|
+
import "../chunk-ORDHJRWN.js";
|
|
35
35
|
import "../chunk-5DNJPRDW.js";
|
|
36
36
|
import "../chunk-FXU7JOXK.js";
|
|
37
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-YMKUXZIG.js";
|
|
38
38
|
import "../chunk-T3B5RK4H.js";
|
|
39
39
|
import "../chunk-LYH5HE24.js";
|
|
40
40
|
import "../chunk-MLKGABMK.js";
|
|
@@ -7404,7 +7404,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7404
7404
|
let cancelled = false;
|
|
7405
7405
|
async function init() {
|
|
7406
7406
|
try {
|
|
7407
|
-
const { MultiAgentOrchestrator } = await import("../orchestrator-
|
|
7407
|
+
const { MultiAgentOrchestrator } = await import("../orchestrator-DHK7RSSH.js");
|
|
7408
7408
|
const { getCoordinatorName, isCoordinatorRole, loadEmployees } = await import("../lib/employees.js");
|
|
7409
7409
|
const { isExeSession } = await import("../lib/tmux-routing.js");
|
|
7410
7410
|
const { listTmuxSessions, inTmux } = await import("../lib/tmux-status.js");
|
|
@@ -7445,7 +7445,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7445
7445
|
setTotalInProgress(health.totalInProgress);
|
|
7446
7446
|
try {
|
|
7447
7447
|
const { getClient } = await import("../lib/database.js");
|
|
7448
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-
|
|
7448
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-ZSXDZBRE.js");
|
|
7449
7449
|
const client = getClient();
|
|
7450
7450
|
const uoScope = sessionScopeFilter2();
|
|
7451
7451
|
const result = await client.execute({
|
|
@@ -7477,7 +7477,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7477
7477
|
const spawnSession = useCallback5(
|
|
7478
7478
|
async (agentId) => {
|
|
7479
7479
|
try {
|
|
7480
|
-
const { createTaskCore } = await import("../tasks-crud-
|
|
7480
|
+
const { createTaskCore } = await import("../tasks-crud-NV6JEWGL.js");
|
|
7481
7481
|
const { ensureEmployee } = await import("../lib/tmux-routing.js");
|
|
7482
7482
|
const { getCoordinatorName } = await import("../lib/employees.js");
|
|
7483
7483
|
await createTaskCore({
|
|
@@ -8101,7 +8101,7 @@ function TasksView({ onBack }) {
|
|
|
8101
8101
|
const { withTrace } = await import("../telemetry-43X3GT3R.js");
|
|
8102
8102
|
return withTrace("tui.tasks.loadTasks", async () => {
|
|
8103
8103
|
try {
|
|
8104
|
-
const { loadTaskList } = await import("../tui-data-
|
|
8104
|
+
const { loadTaskList } = await import("../tui-data-ZDB7BLP2.js");
|
|
8105
8105
|
const tasks = await loadTaskList();
|
|
8106
8106
|
setAllTasks(
|
|
8107
8107
|
tasks.map((task) => ({
|
|
@@ -8934,7 +8934,7 @@ function TeamView({ onBack, onViewSessions }) {
|
|
|
8934
8934
|
let projectsByEmployee = /* @__PURE__ */ new Map();
|
|
8935
8935
|
let currentTaskByEmployee = /* @__PURE__ */ new Map();
|
|
8936
8936
|
try {
|
|
8937
|
-
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-
|
|
8937
|
+
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-ZDB7BLP2.js");
|
|
8938
8938
|
setBadgeInFlight(true);
|
|
8939
8939
|
const badgeCountsPromise = loadTeamBadgeCounts();
|
|
8940
8940
|
const detailsPromise = loadTeamDetailMetrics(roster.map((emp) => emp.name));
|
|
@@ -9300,7 +9300,7 @@ function WikiView({ onBack }) {
|
|
|
9300
9300
|
}
|
|
9301
9301
|
setSearchLoading(true);
|
|
9302
9302
|
try {
|
|
9303
|
-
const { searchWikiMemoryRows } = await import("../tui-data-
|
|
9303
|
+
const { searchWikiMemoryRows } = await import("../tui-data-ZDB7BLP2.js");
|
|
9304
9304
|
setSearchResults(await searchWikiMemoryRows(query));
|
|
9305
9305
|
} catch {
|
|
9306
9306
|
setSearchResults([]);
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import {
|
|
2
|
+
sessionScopeFilter
|
|
3
|
+
} from "./chunk-PC635OAG.js";
|
|
4
|
+
import "./chunk-ARUTDXZX.js";
|
|
5
|
+
import "./chunk-4FVVJ7ME.js";
|
|
6
|
+
import "./chunk-4JERP7NT.js";
|
|
7
|
+
import "./chunk-Y67VYYOA.js";
|
|
8
|
+
import "./chunk-MVW62NIZ.js";
|
|
9
|
+
import "./chunk-OYNKIAVW.js";
|
|
10
|
+
import "./chunk-SSTLTIF3.js";
|
|
11
|
+
import "./chunk-FSRKIZGZ.js";
|
|
12
|
+
import "./chunk-PMVOUPTY.js";
|
|
13
|
+
import "./chunk-NGP6LSV2.js";
|
|
14
|
+
import "./chunk-TQ4VXUAF.js";
|
|
15
|
+
import "./chunk-CVYC6DUW.js";
|
|
16
|
+
import "./chunk-OPU3NYOO.js";
|
|
17
|
+
import "./chunk-GJV3WDWM.js";
|
|
18
|
+
import "./chunk-MP2AFCGL.js";
|
|
19
|
+
import "./chunk-JBXANNNB.js";
|
|
20
|
+
import "./chunk-HYZV25LY.js";
|
|
21
|
+
import {
|
|
22
|
+
getClient
|
|
23
|
+
} from "./chunk-52UDAVZE.js";
|
|
24
|
+
import "./chunk-2I23RPSI.js";
|
|
25
|
+
import "./chunk-YGWFBN5A.js";
|
|
26
|
+
import "./chunk-5DNJPRDW.js";
|
|
27
|
+
import "./chunk-FXU7JOXK.js";
|
|
28
|
+
import "./chunk-EAPUSVKS.js";
|
|
29
|
+
import "./chunk-T3B5RK4H.js";
|
|
30
|
+
import "./chunk-LYH5HE24.js";
|
|
31
|
+
import "./chunk-MLKGABMK.js";
|
|
32
|
+
|
|
33
|
+
// src/lib/tui-data.ts
|
|
34
|
+
async function loadMemoryDashboard(limit) {
|
|
35
|
+
const client = getClient();
|
|
36
|
+
const [countResult, recentResult, agentResult] = await Promise.all([
|
|
37
|
+
client.execute("SELECT COUNT(*) as cnt FROM memories"),
|
|
38
|
+
client.execute({
|
|
39
|
+
sql: "SELECT agent_id, tool_name, project_name, raw_text, timestamp FROM memories ORDER BY timestamp DESC LIMIT ?",
|
|
40
|
+
args: [limit]
|
|
41
|
+
}),
|
|
42
|
+
client.execute("SELECT agent_id, COUNT(*) as cnt FROM memories GROUP BY agent_id ORDER BY cnt DESC")
|
|
43
|
+
]);
|
|
44
|
+
return {
|
|
45
|
+
total: Number(countResult.rows[0]?.cnt ?? 0),
|
|
46
|
+
recent: recentResult.rows.map((row) => ({
|
|
47
|
+
agentId: String(row.agent_id ?? "unknown"),
|
|
48
|
+
toolName: String(row.tool_name ?? ""),
|
|
49
|
+
projectName: String(row.project_name ?? ""),
|
|
50
|
+
rawText: String(row.raw_text ?? ""),
|
|
51
|
+
timestamp: String(row.timestamp ?? "")
|
|
52
|
+
})),
|
|
53
|
+
byAgent: agentResult.rows.map((row) => ({
|
|
54
|
+
agentId: String(row.agent_id ?? "unknown"),
|
|
55
|
+
count: Number(row.cnt ?? 0)
|
|
56
|
+
}))
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function loadTeamBadgeCounts() {
|
|
60
|
+
const client = getClient();
|
|
61
|
+
const memoryCounts = /* @__PURE__ */ new Map();
|
|
62
|
+
const memResult = await client.execute("SELECT agent_id, COUNT(*) as cnt FROM memories GROUP BY agent_id");
|
|
63
|
+
for (const row of memResult.rows) {
|
|
64
|
+
memoryCounts.set(String(row.agent_id), Number(row.cnt));
|
|
65
|
+
}
|
|
66
|
+
return memoryCounts;
|
|
67
|
+
}
|
|
68
|
+
async function loadTeamDetailMetrics(employeeNames) {
|
|
69
|
+
const client = getClient();
|
|
70
|
+
const projectsByEmployee = /* @__PURE__ */ new Map();
|
|
71
|
+
const currentTaskByEmployee = /* @__PURE__ */ new Map();
|
|
72
|
+
const scope = sessionScopeFilter();
|
|
73
|
+
for (const employeeName of employeeNames) {
|
|
74
|
+
const [projectResult, taskResult] = await Promise.all([
|
|
75
|
+
client.execute({
|
|
76
|
+
sql: `SELECT DISTINCT project_name,
|
|
77
|
+
MAX(CASE WHEN status = 'in_progress' THEN 1 WHEN status = 'open' THEN 2 ELSE 3 END) as urgency
|
|
78
|
+
FROM tasks
|
|
79
|
+
WHERE assigned_to = ? AND status IN ('open','in_progress','done')${scope.sql}
|
|
80
|
+
GROUP BY project_name
|
|
81
|
+
ORDER BY urgency ASC
|
|
82
|
+
LIMIT 5`,
|
|
83
|
+
args: [employeeName, ...scope.args]
|
|
84
|
+
}),
|
|
85
|
+
client.execute({
|
|
86
|
+
sql: `SELECT title FROM tasks
|
|
87
|
+
WHERE assigned_to = ? AND status = 'in_progress'${scope.sql}
|
|
88
|
+
ORDER BY updated_at DESC
|
|
89
|
+
LIMIT 1`,
|
|
90
|
+
args: [employeeName, ...scope.args]
|
|
91
|
+
})
|
|
92
|
+
]);
|
|
93
|
+
const projects = projectResult.rows.map((row) => {
|
|
94
|
+
const urgency = Number(row.urgency);
|
|
95
|
+
return {
|
|
96
|
+
name: String(row.project_name),
|
|
97
|
+
status: urgency === 1 ? "active" : urgency === 2 ? "has_tasks" : "idle"
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
if (projects.length > 0) projectsByEmployee.set(employeeName, projects);
|
|
101
|
+
if (taskResult.rows.length > 0) {
|
|
102
|
+
currentTaskByEmployee.set(employeeName, String(taskResult.rows[0].title));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { projectsByEmployee, currentTaskByEmployee };
|
|
106
|
+
}
|
|
107
|
+
async function loadTeamMetrics(employeeNames) {
|
|
108
|
+
const [memoryCounts, { projectsByEmployee, currentTaskByEmployee }] = await Promise.all([
|
|
109
|
+
loadTeamBadgeCounts(),
|
|
110
|
+
loadTeamDetailMetrics(employeeNames)
|
|
111
|
+
]);
|
|
112
|
+
return { memoryCounts, projectsByEmployee, currentTaskByEmployee };
|
|
113
|
+
}
|
|
114
|
+
async function loadTaskList() {
|
|
115
|
+
const client = getClient();
|
|
116
|
+
const scope = sessionScopeFilter();
|
|
117
|
+
const result = await client.execute({
|
|
118
|
+
sql: `SELECT id, title, priority, assigned_to, assigned_by, status, project_name, created_at, result
|
|
119
|
+
FROM tasks
|
|
120
|
+
WHERE 1=1${scope.sql}
|
|
121
|
+
ORDER BY
|
|
122
|
+
CASE status WHEN 'in_progress' THEN 0 WHEN 'open' THEN 1 WHEN 'blocked' THEN 2 WHEN 'needs_review' THEN 3 WHEN 'done' THEN 4 ELSE 5 END,
|
|
123
|
+
CASE priority WHEN 'p0' THEN 0 WHEN 'p1' THEN 1 WHEN 'p2' THEN 2 ELSE 3 END,
|
|
124
|
+
created_at DESC`,
|
|
125
|
+
args: [...scope.args]
|
|
126
|
+
});
|
|
127
|
+
return result.rows.map((row) => ({
|
|
128
|
+
id: String(row.id ?? ""),
|
|
129
|
+
title: String(row.title ?? ""),
|
|
130
|
+
priority: String(row.priority ?? "p2").toUpperCase(),
|
|
131
|
+
assignedTo: String(row.assigned_to ?? ""),
|
|
132
|
+
assignedBy: String(row.assigned_by ?? ""),
|
|
133
|
+
status: String(row.status ?? "open"),
|
|
134
|
+
projectName: String(row.project_name ?? ""),
|
|
135
|
+
createdAt: String(row.created_at ?? ""),
|
|
136
|
+
result: String(row.result ?? "")
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
async function searchWikiMemoryRows(query) {
|
|
140
|
+
const client = getClient();
|
|
141
|
+
const result = await client.execute({
|
|
142
|
+
sql: `SELECT id, agent_id, raw_text, timestamp, project_name
|
|
143
|
+
FROM memories
|
|
144
|
+
WHERE raw_text LIKE ? AND COALESCE(status, 'active') = 'active'
|
|
145
|
+
ORDER BY timestamp DESC LIMIT 20`,
|
|
146
|
+
args: [`%${query}%`]
|
|
147
|
+
});
|
|
148
|
+
return result.rows.map((row) => ({
|
|
149
|
+
id: String(row.id),
|
|
150
|
+
agentId: String(row.agent_id),
|
|
151
|
+
rawText: String(row.raw_text),
|
|
152
|
+
timestamp: String(row.timestamp),
|
|
153
|
+
projectName: String(row.project_name ?? "")
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
async function loadEntityProfile(entityName) {
|
|
157
|
+
const client = getClient();
|
|
158
|
+
const { getEntityByName, getRelationships, getEntityTimeline } = await import("./graph-query-XEDHA2PQ.js");
|
|
159
|
+
const entity = await getEntityByName(client, entityName);
|
|
160
|
+
if (!entity) return null;
|
|
161
|
+
const [relationships, timelineRaw] = await Promise.all([
|
|
162
|
+
getRelationships(client, entity.id, { direction: "both" }),
|
|
163
|
+
getEntityTimeline(client, entity.id)
|
|
164
|
+
]);
|
|
165
|
+
const neighbors = relationships.map((r) => {
|
|
166
|
+
const isOutgoing = r.sourceEntityId === entity.id;
|
|
167
|
+
return {
|
|
168
|
+
name: isOutgoing ? r.targetName : r.sourceName,
|
|
169
|
+
type: isOutgoing ? "target" : "source",
|
|
170
|
+
relType: r.type,
|
|
171
|
+
direction: isOutgoing ? "outgoing" : "incoming",
|
|
172
|
+
weight: r.weight,
|
|
173
|
+
confidence: r.confidence
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
const timeline = timelineRaw.slice(0, 20).map((t) => {
|
|
177
|
+
const isOutgoing = t.relationship.sourceEntityId === entity.id;
|
|
178
|
+
return {
|
|
179
|
+
timestamp: t.timestamp,
|
|
180
|
+
relType: t.relationship.type,
|
|
181
|
+
partnerName: isOutgoing ? t.relationship.targetName : t.relationship.sourceName,
|
|
182
|
+
direction: isOutgoing ? "outgoing" : "incoming"
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
const relationshipTypes = {};
|
|
186
|
+
for (const r of relationships) {
|
|
187
|
+
relationshipTypes[r.type] = (relationshipTypes[r.type] ?? 0) + 1;
|
|
188
|
+
}
|
|
189
|
+
return {
|
|
190
|
+
entity,
|
|
191
|
+
neighbors,
|
|
192
|
+
timeline,
|
|
193
|
+
stats: {
|
|
194
|
+
totalRelationships: relationships.length,
|
|
195
|
+
relationshipTypes
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
async function searchEntitiesList(query, limit = 20) {
|
|
200
|
+
const client = getClient();
|
|
201
|
+
const { searchEntities } = await import("./graph-query-XEDHA2PQ.js");
|
|
202
|
+
const entities = await searchEntities(client, query, limit);
|
|
203
|
+
if (entities.length === 0) return [];
|
|
204
|
+
const placeholders = entities.map(() => "?").join(",");
|
|
205
|
+
const ids = entities.map((e) => e.id);
|
|
206
|
+
const countResult = await client.execute({
|
|
207
|
+
sql: `SELECT source_entity_id as eid, COUNT(*) as cnt FROM relationships WHERE source_entity_id IN (${placeholders}) AND valid_until IS NULL GROUP BY source_entity_id
|
|
208
|
+
UNION ALL
|
|
209
|
+
SELECT target_entity_id as eid, COUNT(*) as cnt FROM relationships WHERE target_entity_id IN (${placeholders}) AND valid_until IS NULL GROUP BY target_entity_id`,
|
|
210
|
+
args: [...ids, ...ids]
|
|
211
|
+
});
|
|
212
|
+
const countMap = /* @__PURE__ */ new Map();
|
|
213
|
+
for (const row of countResult.rows) {
|
|
214
|
+
const eid = String(row.eid);
|
|
215
|
+
countMap.set(eid, (countMap.get(eid) ?? 0) + Number(row.cnt));
|
|
216
|
+
}
|
|
217
|
+
return entities.map((e) => ({
|
|
218
|
+
id: e.id,
|
|
219
|
+
name: e.name,
|
|
220
|
+
type: e.type,
|
|
221
|
+
lastSeen: e.lastSeen,
|
|
222
|
+
relationshipCount: countMap.get(e.id) ?? 0
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
async function loadHotEntities(limit = 15) {
|
|
226
|
+
const client = getClient();
|
|
227
|
+
const { getHotEntities } = await import("./graph-query-XEDHA2PQ.js");
|
|
228
|
+
const since = new Date(Date.now() - 7 * 24 * 60 * 60 * 1e3);
|
|
229
|
+
const hot = await getHotEntities(client, since, limit);
|
|
230
|
+
return hot.map((h) => ({
|
|
231
|
+
id: h.entity.id,
|
|
232
|
+
name: h.entity.name,
|
|
233
|
+
type: h.entity.type,
|
|
234
|
+
lastSeen: h.entity.lastSeen,
|
|
235
|
+
relationshipCount: h.newRelationships
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
async function loadGraphOverview() {
|
|
239
|
+
const client = getClient();
|
|
240
|
+
const { getGraphStats } = await import("./graph-query-XEDHA2PQ.js");
|
|
241
|
+
const stats = await getGraphStats(client);
|
|
242
|
+
return {
|
|
243
|
+
totalEntities: stats.entities,
|
|
244
|
+
totalRelationships: stats.relationships,
|
|
245
|
+
entityTypes: stats.types
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
export {
|
|
249
|
+
loadEntityProfile,
|
|
250
|
+
loadGraphOverview,
|
|
251
|
+
loadHotEntities,
|
|
252
|
+
loadMemoryDashboard,
|
|
253
|
+
loadTaskList,
|
|
254
|
+
loadTeamBadgeCounts,
|
|
255
|
+
loadTeamDetailMetrics,
|
|
256
|
+
loadTeamMetrics,
|
|
257
|
+
searchEntitiesList,
|
|
258
|
+
searchWikiMemoryRows
|
|
259
|
+
};
|