@askexenow/exe-os 0.9.264 → 0.9.266
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.example +4 -2
- package/deploy/compose/docker-compose.yml +6 -4
- package/deploy/compose/generate-env.ts +5 -2
- package/dist/active-agent-2XJJZFEW.js +25 -0
- package/dist/active-agent-JZ4PHIAK.js +26 -0
- package/dist/agentic-ontology-J4B525DT.js +25 -0
- package/dist/backfill-metadata-TWEC6BJD.js +597 -0
- package/dist/backfill-metadata-VGZLCJWZ.js +597 -0
- package/dist/backfill-metadata-WM46YQZL.js +597 -0
- package/dist/behaviors-BPIVFAGY.js +25 -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 +6 -6
- package/dist/bin/cc-doctor.js +6 -1
- package/dist/bin/cleanup-stale-review-tasks.js +9 -9
- 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 +16 -16
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +4 -4
- package/dist/bin/exe-dispatch.js +9 -9
- 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 +6 -1
- package/dist/bin/exe-heartbeat.js +10 -10
- package/dist/bin/exe-kill.js +12 -12
- package/dist/bin/exe-launch-agent.js +16 -16
- package/dist/bin/exe-new-employee.js +6 -6
- package/dist/bin/exe-pending-messages.js +10 -10
- package/dist/bin/exe-pending-notifications.js +9 -9
- package/dist/bin/exe-pending-reviews.js +12 -10
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +11 -11
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +14 -14
- package/dist/bin/exe-settings.js +4 -4
- package/dist/bin/exe-start-codex.js +11 -11
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +10 -10
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +10 -10
- 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 +6 -6
- package/dist/bin/intercom-check.js +6 -5
- 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 +9 -9
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/capacity-monitor-3QORC56J.js +49 -0
- package/dist/capacity-monitor-FWRBCZCZ.js +49 -0
- package/dist/capacity-monitor-FZORNXTA.js +49 -0
- package/dist/catchup-brief-242H63OP.js +151 -0
- package/dist/catchup-brief-PRKHIRWW.js +151 -0
- package/dist/catchup-brief-T7W2ARRB.js +151 -0
- package/dist/catchup-brief-VJDLXJHJ.js +151 -0
- package/dist/chunk-2FDYA3GS.js +75 -0
- package/dist/chunk-2GU3NYMB.js +813 -0
- package/dist/chunk-2V33IVZF.js +1148 -0
- package/dist/chunk-2VT7Z2E2.js +197 -0
- package/dist/chunk-2W5NQOQJ.js +333 -0
- package/dist/chunk-32QR5EHE.js +244 -0
- package/dist/chunk-3DBROKA6.js +382 -0
- package/dist/chunk-3DS2YHAT.js +204 -0
- package/dist/chunk-3L6XLN4V.js +1090 -0
- package/dist/chunk-3O2ZD7YV.js +227 -0
- package/dist/chunk-3T4PNG5O.js +447 -0
- package/dist/chunk-3W324KN7.js +13696 -0
- package/dist/chunk-43O2PZH7.js +214 -0
- package/dist/chunk-4AHL6I7X.js +284 -0
- package/dist/chunk-4IATAIAF.js +89 -0
- package/dist/chunk-5GBPXJIH.js +50 -0
- package/dist/chunk-5IXN2532.js +58 -0
- package/dist/chunk-5M4F2FVD.js +204 -0
- package/dist/chunk-5SH5TR45.js +731 -0
- package/dist/chunk-5TANMPI4.js +377 -0
- package/dist/chunk-5XGMTWKW.js +128 -0
- package/dist/chunk-67E5WIMW.js +333 -0
- package/dist/chunk-6AQAILCS.js +13696 -0
- package/dist/chunk-6NRJIARA.js +346 -0
- package/dist/chunk-6O22GTSE.js +1148 -0
- package/dist/chunk-72KQJZBH.js +382 -0
- package/dist/chunk-7B2AENJ3.js +1345 -0
- package/dist/chunk-7GKMYFVR.js +551 -0
- package/dist/chunk-7HUGVJHW.js +1021 -0
- package/dist/chunk-7HWBGXDV.js +333 -0
- package/dist/chunk-7O5CMDP6.js +1345 -0
- package/dist/chunk-7P2JKEO3.js +382 -0
- package/dist/chunk-7ROGPDW6.js +197 -0
- package/dist/chunk-7ZMLNURG.js +513 -0
- package/dist/chunk-A3G4UXNA.js +280 -0
- package/dist/chunk-A4T6U3XZ.js +371 -0
- package/dist/chunk-A4UY44T7.js +486 -0
- package/dist/chunk-ADJNRFEK.js +13696 -0
- package/dist/chunk-AVJTW67M.js +513 -0
- package/dist/chunk-AZHPQGSI.js +159 -0
- package/dist/chunk-B6RC7DAC.js +1090 -0
- package/dist/chunk-BAOJLZVC.js +244 -0
- package/dist/chunk-BCUMPA7J.js +159 -0
- package/dist/chunk-BH2ST7KK.js +183 -0
- package/dist/chunk-BQAC3GCO.js +127 -0
- package/dist/chunk-C4BIYP5C.js +129 -0
- package/dist/chunk-CBUZG6OC.js +89 -0
- package/dist/chunk-CGQRWCCP.js +81 -0
- package/dist/chunk-CIWJRYIC.js +244 -0
- package/dist/chunk-CLX4WQHT.js +214 -0
- package/dist/chunk-CZO2DGGF.js +214 -0
- package/dist/chunk-D4CQZL46.js +76 -0
- package/dist/chunk-D55SXO3N.js +3951 -0
- package/dist/chunk-DEBLYXA2.js +56 -0
- package/dist/chunk-EDNUE5L3.js +38 -0
- package/dist/chunk-EPDSRI6O.js +284 -0
- package/dist/chunk-ESNHLTLC.js +1073 -0
- package/dist/chunk-EU34R2A3.js +1073 -0
- package/dist/chunk-FICUAZEA.js +128 -0
- package/dist/chunk-FP6U5PSY.js +818 -0
- package/dist/chunk-G4KEDLSM.js +488 -0
- package/dist/chunk-G55UTKFR.js +89 -0
- package/dist/chunk-GIJUXLK5.js +330 -0
- package/dist/chunk-GVSSEGIV.js +348 -0
- package/dist/chunk-GYOOZ725.js +330 -0
- package/dist/chunk-HCULUL4D.js +447 -0
- package/dist/chunk-HDRQKH7R.js +1051 -0
- package/dist/chunk-HHBN7Y7R.js +197 -0
- package/dist/chunk-IODP4JNE.js +551 -0
- package/dist/chunk-IQBXQ7GF.js +1073 -0
- package/dist/chunk-ITF6GEJI.js +2091 -0
- package/dist/chunk-IXHVSWLM.js +58 -0
- package/dist/chunk-IZ6LCET7.js +58 -0
- package/dist/chunk-J3ZFONT4.js +1921 -0
- package/dist/chunk-JEOFG274.js +394 -0
- package/dist/chunk-JH7ISOIJ.js +33 -0
- package/dist/chunk-JVRMAVPN.js +731 -0
- package/dist/chunk-KBYRYSXT.js +3951 -0
- package/dist/chunk-KECNXWD6.js +1051 -0
- package/dist/chunk-KIYCHS35.js +128 -0
- package/dist/chunk-KUP3D6G2.js +1345 -0
- package/dist/chunk-KXS5HHDH.js +54 -0
- package/dist/chunk-LPG3U5UW.js +731 -0
- package/dist/chunk-LVZW4WQY.js +221 -0
- package/dist/chunk-LWOCCDSB.js +240 -0
- package/dist/chunk-M4HRKRSE.js +30 -0
- package/dist/chunk-MPG5DR3K.js +244 -0
- package/dist/chunk-NH6TPXZV.js +13696 -0
- package/dist/chunk-NOG2LVBA.js +159 -0
- package/dist/chunk-NP3CYOEY.js +290 -0
- package/dist/chunk-O5TZI7OZ.js +50 -0
- package/dist/chunk-OVQOKLYA.js +210 -0
- package/dist/chunk-OW26ML36.js +1148 -0
- package/dist/chunk-P2DOIWQG.js +260 -0
- package/dist/chunk-P2QTTEYP.js +3951 -0
- package/dist/chunk-P5IKFL7B.js +85 -0
- package/dist/chunk-PD2LUPHD.js +377 -0
- package/dist/chunk-PF5EFIAH.js +818 -0
- package/dist/chunk-PK3NFO76.js +551 -0
- package/dist/chunk-Q3N4KHLM.js +330 -0
- package/dist/chunk-QHQTMWYH.js +54 -0
- package/dist/chunk-QKMFMJTU.js +171 -0
- package/dist/chunk-QNYOPM2L.js +1921 -0
- package/dist/chunk-R77M74QM.js +13696 -0
- package/dist/chunk-RHZ2CRJU.js +3556 -0
- package/dist/chunk-RLR4LVO5.js +1090 -0
- package/dist/chunk-RMDDSWFH.js +495 -0
- package/dist/chunk-RPLEZ74B.js +95 -0
- package/dist/chunk-RXMVPGH2.js +346 -0
- package/dist/chunk-S2ARWNS6.js +135 -0
- package/dist/chunk-SHPIATX7.js +90 -0
- package/dist/chunk-SPOA7EOD.js +81 -0
- package/dist/chunk-SQUZ3TI2.js +668 -0
- package/dist/chunk-SUGBKORD.js +1148 -0
- package/dist/chunk-T2XD7XL2.js +346 -0
- package/dist/chunk-TAIYLROT.js +127 -0
- package/dist/chunk-TCD4XCBS.js +495 -0
- package/dist/chunk-TK23WXKB.js +128 -0
- package/dist/chunk-TOVXER6J.js +76 -0
- package/dist/chunk-TSBMSHMM.js +163 -0
- package/dist/chunk-U776PBU6.js +488 -0
- package/dist/chunk-UIPAZYP7.js +171 -0
- package/dist/chunk-UTVNIAOF.js +284 -0
- package/dist/chunk-VF6VT4MR.js +70 -0
- package/dist/chunk-VZXLYUKS.js +171 -0
- package/dist/chunk-WIAHPJDS.js +58 -0
- package/dist/chunk-WM5ELLT4.js +54 -0
- package/dist/chunk-WUUSPOCC.js +1921 -0
- package/dist/chunk-WXHAMPK4.js +81 -0
- package/dist/chunk-WXW4GF6M.js +495 -0
- package/dist/chunk-WYNZ23XH.js +262 -0
- package/dist/chunk-WZOQLU2Y.js +127 -0
- package/dist/chunk-X24GBZKR.js +157 -0
- package/dist/chunk-X5FRF5MG.js +13696 -0
- package/dist/chunk-XBPLYFBA.js +204 -0
- package/dist/chunk-XDGKFXFW.js +363 -0
- package/dist/chunk-XIT6ONPY.js +630 -0
- package/dist/{chunk-YGOUKUNX.js → chunk-XLYBSXWS.js} +2 -1
- package/dist/chunk-XNRJ5JHU.js +377 -0
- package/dist/chunk-XREWTPZM.js +123 -0
- package/dist/chunk-XURCA5VD.js +297 -0
- package/dist/chunk-Y55VFZJB.js +50 -0
- package/dist/chunk-YIH2YMWP.js +76 -0
- package/dist/chunk-YZMCCT73.js +97 -0
- package/dist/chunk-ZTP3VV23.js +447 -0
- package/dist/co-activation-JOYR73H2.js +72 -0
- package/dist/co-occurrence-G7RRJ3DB.js +74 -0
- package/dist/core-memory-6KK55Z65.js +110 -0
- package/dist/core-memory-QRS6GBXL.js +110 -0
- package/dist/core-memory-QXMQ5I7S.js +110 -0
- package/dist/crdt-sync-QWK65Z5A.js +33 -0
- package/dist/crm-webhook-BNUS3USD.js +10 -0
- package/dist/crm-webhook-CH5W633Y.js +10 -0
- package/dist/crm-webhook-ZTIRFVAH.js +10 -0
- package/dist/cto-delegation-gate-DNZJGBS7.js +206 -0
- package/dist/cto-delegation-gate-XY3NMGTE.js +206 -0
- package/dist/cto-delegation-gate-YI3LK7VY.js +206 -0
- package/dist/daemon-orchestration-7LVOHYKA.js +135 -0
- package/dist/daemon-orchestration-LS62JMTI.js +135 -0
- package/dist/daemon-orchestration-SDQNWI3K.js +135 -0
- package/dist/db-backup-5ENHDNZI.js +33 -0
- package/dist/dreaming-PGJOCGAM.js +32 -0
- package/dist/dreaming-UNHHGOU3.js +32 -0
- package/dist/dreaming-ZBKE2GFX.js +32 -0
- package/dist/exe-drift-QQJMUQXA.js +68 -0
- package/dist/exe-export-BEZZSQB4.js +73 -0
- package/dist/exe-export-JNSQRIWI.js +73 -0
- package/dist/exe-export-TQGI2VBT.js +73 -0
- package/dist/exe-import-2SR2UP3D.js +76 -0
- package/dist/exe-import-73Q4VLFK.js +76 -0
- package/dist/exe-import-AVGWQZLU.js +76 -0
- package/dist/exe-key-6JHEINOM.js +579 -0
- package/dist/exe-key-RIRPIFK6.js +579 -0
- package/dist/exe-key-WR6QEHYO.js +579 -0
- package/dist/exe-snapshot-NDMDQJOH.js +164 -0
- package/dist/exe-snapshot-PVCBPMPJ.js +164 -0
- package/dist/exe-snapshot-U6K3J6BD.js +164 -0
- package/dist/fast-db-init-22OBOPTN.js +7 -0
- package/dist/fast-db-init-M6ZYYGAL.js +7 -0
- package/dist/fast-db-init-ZHRRYI7M.js +7 -0
- package/dist/gateway/index.js +8 -8
- package/dist/git-staleness-4DGYC3RY.js +110 -0
- package/dist/git-task-sweep-64KSWRUI.js +40 -0
- package/dist/git-task-sweep-CUR7R2ZM.js +40 -0
- package/dist/git-task-sweep-YG3IVGK3.js +40 -0
- package/dist/global-procedures-TYDNKM7V.js +20 -0
- package/dist/graph-auto-extract-I6B5HWTP.js +162 -0
- package/dist/hooks/bug-report-worker.js +11 -11
- package/dist/hooks/codex-stop-task-finalizer.js +11 -11
- package/dist/hooks/commit-complete.js +11 -11
- 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 +10 -10
- package/dist/hooks/post-tool-combined.js +5 -5
- package/dist/hooks/pre-compact.js +11 -11
- package/dist/hooks/pre-tool-use.js +14 -14
- package/dist/hooks/prompt-submit.js +27 -22
- package/dist/hooks/session-end.js +15 -15
- package/dist/hooks/session-start.js +10 -10
- package/dist/hooks/stop.js +14 -14
- package/dist/hooks/subagent-stop.js +10 -10
- package/dist/hooks/summary-worker.js +14 -14
- package/dist/index.js +17 -17
- package/dist/installer-4LP73C3M.js +38 -0
- package/dist/installer-AUVLNS4D.js +296 -0
- package/dist/installer-KCRLQSQH.js +38 -0
- package/dist/installer-KGXYUOIV.js +296 -0
- package/dist/installer-UI6TNJGO.js +342 -0
- package/dist/installer-Z7NPD4PD.js +342 -0
- package/dist/lib/cloud-sync.js +4 -4
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-daemon-client.js +6 -0
- 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 +39 -38
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/messaging.js +9 -9
- 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 +4 -4
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +10 -10
- package/dist/lib/tmux-routing.js +8 -8
- package/dist/lib/token-spend.js +3 -3
- package/dist/mcp/register-tools.js +53 -52
- package/dist/mcp/server.js +54 -53
- 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 +12 -12
- package/dist/mcp/tools/deactivate-behavior.js +5 -5
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +12 -12
- package/dist/mcp/tools/send-message.js +11 -11
- package/dist/mcp/tools/update-task.js +11 -11
- package/dist/mcp-http-config-LN5ITKGS.js +27 -0
- package/dist/mcp-http-config-V43VHNEH.js +27 -0
- package/dist/memory-cards-S36DCEY4.js +174 -0
- package/dist/memory-graph-extractor-66YL4V4B.js +17 -0
- package/dist/memory-poisoning-defense-MXWE6CTY.js +225 -0
- package/dist/memory-reflection-W676LUX5.js +238 -0
- package/dist/notifications-45QSHDFA.js +45 -0
- package/dist/notifications-OFLXZTDZ.js +45 -0
- package/dist/notifications-XAV4V7T5.js +45 -0
- package/dist/orchestration-events-MJLWJ2H2.js +25 -0
- package/dist/orchestrator-7XBMFK7D.js +33 -0
- package/dist/orchestrator-AIAKV5ST.js +33 -0
- package/dist/orchestrator-VK7D6I36.js +33 -0
- package/dist/pipeline-router-DXH5QVUH.js +13 -0
- package/dist/pipeline-router-EV6C5S33.js +13 -0
- package/dist/pipeline-router-MQKRNCTR.js +13 -0
- package/dist/plan-limits-TQMLKZBG.js +26 -0
- package/dist/project-boot-4XTXHDG4.js +299 -0
- package/dist/projection-worker-NAYVNSI4.js +964 -0
- package/dist/reranker-CJW3UYE2.js +19 -0
- package/dist/reranker-KHZI7HQK.js +19 -0
- package/dist/reranker-UPMS3OX7.js +19 -0
- package/dist/reranker-ZN73HWSB.js +19 -0
- package/dist/review-polling-3UEZSPNT.js +124 -0
- package/dist/review-polling-KBDX3ILL.js +124 -0
- package/dist/review-polling-RL75XLAY.js +124 -0
- package/dist/runtime/index.js +11 -11
- package/dist/session-events-2CHOLA6D.js +36 -0
- package/dist/session-events-HM22KEHN.js +36 -0
- package/dist/session-events-ZULAN4XL.js +36 -0
- package/dist/session-kill-telemetry-LUPVYGZX.js +29 -0
- package/dist/session-scope-EPZZZHHJ.js +86 -0
- package/dist/session-scope-V2RSOTDU.js +86 -0
- package/dist/session-scope-ZGE6GHMS.js +86 -0
- package/dist/setup-wizard-KNWH54HW.js +12 -0
- package/dist/skill-refinement-BSX6Q6IN.js +157 -0
- package/dist/skill-refinement-C4GNWV4F.js +157 -0
- package/dist/skill-refinement-CAUIE4YM.js +157 -0
- package/dist/steward-gate-MZ2DV36N.js +13 -0
- package/dist/task-enforcement-6OMXG6EA.js +333 -0
- package/dist/task-enforcement-JFSF6QDD.js +333 -0
- package/dist/task-enforcement-JRTAOYZT.js +333 -0
- package/dist/task-scope-4HJSCJ7L.js +35 -0
- package/dist/task-scope-7HYE4AS6.js +35 -0
- package/dist/task-scope-GNCB2GAM.js +35 -0
- package/dist/tasks-crud-JJL6MMJF.js +77 -0
- package/dist/tasks-crud-KMIPDHBZ.js +77 -0
- package/dist/tasks-crud-MZIOYF3R.js +77 -0
- package/dist/tasks-notify-5D6LF52K.js +38 -0
- package/dist/tasks-notify-7KNZ4ULO.js +38 -0
- package/dist/tasks-notify-JNGGXFUY.js +38 -0
- package/dist/tasks-review-N6I5UC7G.js +47 -0
- package/dist/tasks-review-U5VEV4Y7.js +47 -0
- package/dist/tasks-review-USHAMO5N.js +47 -0
- package/dist/telemetry-upload-BIB5TJA4.js +739 -0
- package/dist/telemetry-upload-BV2M2NND.js +739 -0
- package/dist/telemetry-upload-Y7QPDJW4.js +739 -0
- package/dist/token-budget-2LUZOFO7.js +84 -0
- package/dist/tool-telemetry-5JT6DPVK.js +17 -0
- package/dist/tui/App.js +16 -16
- package/dist/tui-data-DMAKZMGD.js +258 -0
- package/dist/tui-data-X7NI6ZQ3.js +258 -0
- package/dist/tui-data-ZSB5DDEY.js +258 -0
- package/dist/wiki-acl-QHGGWX63.js +111 -0
- package/dist/worker-gate-4XKUOFWO.js +21 -0
- package/dist/worker-gate-TPZBOXOA.js +21 -0
- package/dist/worker-gate-TXLX33PX.js +21 -0
- package/dist/workflow-engine-3PIT3Y56.js +28 -0
- package/dist/workflow-engine-F3URLOPA.js +28 -0
- package/dist/workflow-engine-OFOL446Z.js +28 -0
- package/dist/worktree-V3NVP7MV.js +26 -0
- package/dist/worktree-sweep-2CADL43Y.js +19 -0
- package/package.json +1 -1
- package/release-notes.json +27 -25
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lightweightSearch
|
|
3
|
+
} from "./chunk-SUGBKORD.js";
|
|
4
|
+
import "./chunk-FP6U5PSY.js";
|
|
5
|
+
import "./chunk-CHCA3ZM2.js";
|
|
6
|
+
import "./chunk-OVQOKLYA.js";
|
|
7
|
+
import "./chunk-Y25OJWOQ.js";
|
|
8
|
+
import {
|
|
9
|
+
sessionScopeFilter,
|
|
10
|
+
strictSessionScopeFilter
|
|
11
|
+
} from "./chunk-KBYRYSXT.js";
|
|
12
|
+
import "./chunk-A3G4UXNA.js";
|
|
13
|
+
import "./chunk-5CHYEKMH.js";
|
|
14
|
+
import "./chunk-4JERP7NT.js";
|
|
15
|
+
import "./chunk-TSBMSHMM.js";
|
|
16
|
+
import "./chunk-MVW62NIZ.js";
|
|
17
|
+
import "./chunk-OYNKIAVW.js";
|
|
18
|
+
import "./chunk-CX6GL3ZJ.js";
|
|
19
|
+
import "./chunk-XIT6ONPY.js";
|
|
20
|
+
import "./chunk-XJUUWHVN.js";
|
|
21
|
+
import "./chunk-NGP6LSV2.js";
|
|
22
|
+
import "./chunk-C4BIYP5C.js";
|
|
23
|
+
import "./chunk-CVYC6DUW.js";
|
|
24
|
+
import "./chunk-OPU3NYOO.js";
|
|
25
|
+
import "./chunk-GJV3WDWM.js";
|
|
26
|
+
import "./chunk-MP2AFCGL.js";
|
|
27
|
+
import "./chunk-VF6VT4MR.js";
|
|
28
|
+
import "./chunk-HYZV25LY.js";
|
|
29
|
+
import {
|
|
30
|
+
getClient
|
|
31
|
+
} from "./chunk-RHZ2CRJU.js";
|
|
32
|
+
import "./chunk-2I23RPSI.js";
|
|
33
|
+
import "./chunk-P2DOIWQG.js";
|
|
34
|
+
import "./chunk-FXU7JOXK.js";
|
|
35
|
+
import "./chunk-K333WOW4.js";
|
|
36
|
+
import "./chunk-MOZ2YQ54.js";
|
|
37
|
+
import "./chunk-VXIMSRTO.js";
|
|
38
|
+
import "./chunk-LYH5HE24.js";
|
|
39
|
+
import "./chunk-MLKGABMK.js";
|
|
40
|
+
|
|
41
|
+
// src/lib/catchup-brief.ts
|
|
42
|
+
import { execSync } from "child_process";
|
|
43
|
+
var HEADER = "## Catchup Brief\nHere's what happened while you were offline:";
|
|
44
|
+
var DEFAULT_LOOKBACK_MS = 60 * 60 * 1e3;
|
|
45
|
+
var MAX_BRIEF_CHARS = 2e3;
|
|
46
|
+
var MAX_CHECKPOINT_CHARS = 500;
|
|
47
|
+
var MAX_MESSAGE_CHARS = 100;
|
|
48
|
+
function clipText(text, maxChars) {
|
|
49
|
+
if (text.length <= maxChars) return text;
|
|
50
|
+
if (maxChars <= 1) return "\u2026";
|
|
51
|
+
return `${text.slice(0, maxChars - 1).trimEnd()}\u2026`;
|
|
52
|
+
}
|
|
53
|
+
function clampSections(header, sections, maxChars) {
|
|
54
|
+
const bounded = [];
|
|
55
|
+
let remaining = Math.max(0, maxChars - header.length);
|
|
56
|
+
for (const section of sections) {
|
|
57
|
+
const separatorChars = 2;
|
|
58
|
+
if (remaining <= separatorChars) break;
|
|
59
|
+
remaining -= separatorChars;
|
|
60
|
+
if (section.length <= remaining) {
|
|
61
|
+
bounded.push(section);
|
|
62
|
+
remaining -= section.length;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const clipped = clipText(section, remaining);
|
|
66
|
+
if (clipped.trim().length > 0) bounded.push(clipped);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return bounded;
|
|
70
|
+
}
|
|
71
|
+
async function buildCatchupBrief(agentId, projectName, cwd, sessionScope) {
|
|
72
|
+
const sections = [];
|
|
73
|
+
let lastTimestamp = new Date(Date.now() - DEFAULT_LOOKBACK_MS).toISOString();
|
|
74
|
+
try {
|
|
75
|
+
const checkpointMemories = await lightweightSearch(
|
|
76
|
+
"CONTEXT CHECKPOINT",
|
|
77
|
+
agentId,
|
|
78
|
+
{ projectName, limit: 1 }
|
|
79
|
+
);
|
|
80
|
+
const checkpoint = checkpointMemories[0];
|
|
81
|
+
if (checkpoint?.timestamp) {
|
|
82
|
+
lastTimestamp = checkpoint.timestamp;
|
|
83
|
+
}
|
|
84
|
+
if (checkpoint?.raw_text) {
|
|
85
|
+
sections.push(
|
|
86
|
+
`### Last Checkpoint
|
|
87
|
+
${clipText(checkpoint.raw_text, MAX_CHECKPOINT_CHARS)}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
} catch {
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const gitLog = execSync(
|
|
94
|
+
`git log --oneline --since=${JSON.stringify(lastTimestamp)} --format="%h %an: %s" | head -10`,
|
|
95
|
+
{ cwd, timeout: 3e3, encoding: "utf-8" }
|
|
96
|
+
).trim();
|
|
97
|
+
if (gitLog) {
|
|
98
|
+
sections.push(`### Git Activity Since You Left
|
|
99
|
+
\`\`\`
|
|
100
|
+
${gitLog}
|
|
101
|
+
\`\`\``);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const client = getClient();
|
|
107
|
+
const taskScope = sessionScopeFilter(sessionScope);
|
|
108
|
+
const taskChanges = await client.execute({
|
|
109
|
+
sql: `SELECT title, status, priority FROM tasks
|
|
110
|
+
WHERE assigned_to = ? AND project_name = ?
|
|
111
|
+
AND updated_at > ? AND status IN ('open', 'in_progress')${taskScope.sql}
|
|
112
|
+
ORDER BY priority ASC, updated_at DESC LIMIT 5`,
|
|
113
|
+
args: [agentId, projectName, lastTimestamp, ...taskScope.args]
|
|
114
|
+
});
|
|
115
|
+
if (taskChanges.rows.length > 0) {
|
|
116
|
+
const taskLines = taskChanges.rows.map((row) => {
|
|
117
|
+
const record = row;
|
|
118
|
+
return `- [${String(record.priority).toUpperCase()}] ${String(record.title)} (${String(record.status)})`;
|
|
119
|
+
}).join("\n");
|
|
120
|
+
sections.push(`### Your Task Queue
|
|
121
|
+
${taskLines}`);
|
|
122
|
+
}
|
|
123
|
+
} catch {
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const client = getClient();
|
|
127
|
+
const messageScope = strictSessionScopeFilter(sessionScope);
|
|
128
|
+
const messages = await client.execute({
|
|
129
|
+
sql: `SELECT from_agent, content, created_at FROM messages
|
|
130
|
+
WHERE target_agent = ? AND status = 'pending'${messageScope.sql}
|
|
131
|
+
ORDER BY created_at DESC LIMIT 3`,
|
|
132
|
+
args: [agentId, ...messageScope.args]
|
|
133
|
+
});
|
|
134
|
+
if (messages.rows.length > 0) {
|
|
135
|
+
const msgLines = messages.rows.map((row) => {
|
|
136
|
+
const record = row;
|
|
137
|
+
return `- From ${String(record.from_agent)}: ${clipText(String(record.content ?? ""), MAX_MESSAGE_CHARS)}`;
|
|
138
|
+
}).join("\n");
|
|
139
|
+
sections.push(`### Unread Messages
|
|
140
|
+
${msgLines}`);
|
|
141
|
+
}
|
|
142
|
+
} catch {
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
header: HEADER,
|
|
146
|
+
sections: clampSections(HEADER, sections, MAX_BRIEF_CHARS)
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
buildCatchupBrief
|
|
151
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lightweightSearch
|
|
3
|
+
} from "./chunk-6O22GTSE.js";
|
|
4
|
+
import "./chunk-2GU3NYMB.js";
|
|
5
|
+
import "./chunk-CHCA3ZM2.js";
|
|
6
|
+
import "./chunk-P2XNRKEL.js";
|
|
7
|
+
import "./chunk-Y25OJWOQ.js";
|
|
8
|
+
import {
|
|
9
|
+
sessionScopeFilter,
|
|
10
|
+
strictSessionScopeFilter
|
|
11
|
+
} from "./chunk-D55SXO3N.js";
|
|
12
|
+
import "./chunk-PWLX576L.js";
|
|
13
|
+
import "./chunk-5CHYEKMH.js";
|
|
14
|
+
import "./chunk-4JERP7NT.js";
|
|
15
|
+
import "./chunk-3XNYEGA5.js";
|
|
16
|
+
import "./chunk-MVW62NIZ.js";
|
|
17
|
+
import "./chunk-OYNKIAVW.js";
|
|
18
|
+
import "./chunk-CX6GL3ZJ.js";
|
|
19
|
+
import "./chunk-JTADPL6X.js";
|
|
20
|
+
import "./chunk-XJUUWHVN.js";
|
|
21
|
+
import "./chunk-NGP6LSV2.js";
|
|
22
|
+
import "./chunk-A3T5KDD3.js";
|
|
23
|
+
import "./chunk-CVYC6DUW.js";
|
|
24
|
+
import "./chunk-OPU3NYOO.js";
|
|
25
|
+
import "./chunk-GJV3WDWM.js";
|
|
26
|
+
import "./chunk-MP2AFCGL.js";
|
|
27
|
+
import "./chunk-25NFDJ3N.js";
|
|
28
|
+
import "./chunk-HYZV25LY.js";
|
|
29
|
+
import {
|
|
30
|
+
getClient
|
|
31
|
+
} from "./chunk-QQZMP6QL.js";
|
|
32
|
+
import "./chunk-2I23RPSI.js";
|
|
33
|
+
import "./chunk-ACBEUQR2.js";
|
|
34
|
+
import "./chunk-FXU7JOXK.js";
|
|
35
|
+
import "./chunk-K333WOW4.js";
|
|
36
|
+
import "./chunk-MOZ2YQ54.js";
|
|
37
|
+
import "./chunk-VXIMSRTO.js";
|
|
38
|
+
import "./chunk-LYH5HE24.js";
|
|
39
|
+
import "./chunk-MLKGABMK.js";
|
|
40
|
+
|
|
41
|
+
// src/lib/catchup-brief.ts
|
|
42
|
+
import { execSync } from "child_process";
|
|
43
|
+
var HEADER = "## Catchup Brief\nHere's what happened while you were offline:";
|
|
44
|
+
var DEFAULT_LOOKBACK_MS = 60 * 60 * 1e3;
|
|
45
|
+
var MAX_BRIEF_CHARS = 2e3;
|
|
46
|
+
var MAX_CHECKPOINT_CHARS = 500;
|
|
47
|
+
var MAX_MESSAGE_CHARS = 100;
|
|
48
|
+
function clipText(text, maxChars) {
|
|
49
|
+
if (text.length <= maxChars) return text;
|
|
50
|
+
if (maxChars <= 1) return "\u2026";
|
|
51
|
+
return `${text.slice(0, maxChars - 1).trimEnd()}\u2026`;
|
|
52
|
+
}
|
|
53
|
+
function clampSections(header, sections, maxChars) {
|
|
54
|
+
const bounded = [];
|
|
55
|
+
let remaining = Math.max(0, maxChars - header.length);
|
|
56
|
+
for (const section of sections) {
|
|
57
|
+
const separatorChars = 2;
|
|
58
|
+
if (remaining <= separatorChars) break;
|
|
59
|
+
remaining -= separatorChars;
|
|
60
|
+
if (section.length <= remaining) {
|
|
61
|
+
bounded.push(section);
|
|
62
|
+
remaining -= section.length;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const clipped = clipText(section, remaining);
|
|
66
|
+
if (clipped.trim().length > 0) bounded.push(clipped);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return bounded;
|
|
70
|
+
}
|
|
71
|
+
async function buildCatchupBrief(agentId, projectName, cwd, sessionScope) {
|
|
72
|
+
const sections = [];
|
|
73
|
+
let lastTimestamp = new Date(Date.now() - DEFAULT_LOOKBACK_MS).toISOString();
|
|
74
|
+
try {
|
|
75
|
+
const checkpointMemories = await lightweightSearch(
|
|
76
|
+
"CONTEXT CHECKPOINT",
|
|
77
|
+
agentId,
|
|
78
|
+
{ projectName, limit: 1 }
|
|
79
|
+
);
|
|
80
|
+
const checkpoint = checkpointMemories[0];
|
|
81
|
+
if (checkpoint?.timestamp) {
|
|
82
|
+
lastTimestamp = checkpoint.timestamp;
|
|
83
|
+
}
|
|
84
|
+
if (checkpoint?.raw_text) {
|
|
85
|
+
sections.push(
|
|
86
|
+
`### Last Checkpoint
|
|
87
|
+
${clipText(checkpoint.raw_text, MAX_CHECKPOINT_CHARS)}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
} catch {
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const gitLog = execSync(
|
|
94
|
+
`git log --oneline --since=${JSON.stringify(lastTimestamp)} --format="%h %an: %s" | head -10`,
|
|
95
|
+
{ cwd, timeout: 3e3, encoding: "utf-8" }
|
|
96
|
+
).trim();
|
|
97
|
+
if (gitLog) {
|
|
98
|
+
sections.push(`### Git Activity Since You Left
|
|
99
|
+
\`\`\`
|
|
100
|
+
${gitLog}
|
|
101
|
+
\`\`\``);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const client = getClient();
|
|
107
|
+
const taskScope = sessionScopeFilter(sessionScope);
|
|
108
|
+
const taskChanges = await client.execute({
|
|
109
|
+
sql: `SELECT title, status, priority FROM tasks
|
|
110
|
+
WHERE assigned_to = ? AND project_name = ?
|
|
111
|
+
AND updated_at > ? AND status IN ('open', 'in_progress')${taskScope.sql}
|
|
112
|
+
ORDER BY priority ASC, updated_at DESC LIMIT 5`,
|
|
113
|
+
args: [agentId, projectName, lastTimestamp, ...taskScope.args]
|
|
114
|
+
});
|
|
115
|
+
if (taskChanges.rows.length > 0) {
|
|
116
|
+
const taskLines = taskChanges.rows.map((row) => {
|
|
117
|
+
const record = row;
|
|
118
|
+
return `- [${String(record.priority).toUpperCase()}] ${String(record.title)} (${String(record.status)})`;
|
|
119
|
+
}).join("\n");
|
|
120
|
+
sections.push(`### Your Task Queue
|
|
121
|
+
${taskLines}`);
|
|
122
|
+
}
|
|
123
|
+
} catch {
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const client = getClient();
|
|
127
|
+
const messageScope = strictSessionScopeFilter(sessionScope);
|
|
128
|
+
const messages = await client.execute({
|
|
129
|
+
sql: `SELECT from_agent, content, created_at FROM messages
|
|
130
|
+
WHERE target_agent = ? AND status = 'pending'${messageScope.sql}
|
|
131
|
+
ORDER BY created_at DESC LIMIT 3`,
|
|
132
|
+
args: [agentId, ...messageScope.args]
|
|
133
|
+
});
|
|
134
|
+
if (messages.rows.length > 0) {
|
|
135
|
+
const msgLines = messages.rows.map((row) => {
|
|
136
|
+
const record = row;
|
|
137
|
+
return `- From ${String(record.from_agent)}: ${clipText(String(record.content ?? ""), MAX_MESSAGE_CHARS)}`;
|
|
138
|
+
}).join("\n");
|
|
139
|
+
sections.push(`### Unread Messages
|
|
140
|
+
${msgLines}`);
|
|
141
|
+
}
|
|
142
|
+
} catch {
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
header: HEADER,
|
|
146
|
+
sections: clampSections(HEADER, sections, MAX_BRIEF_CHARS)
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
buildCatchupBrief
|
|
151
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lightweightSearch
|
|
3
|
+
} from "./chunk-2V33IVZF.js";
|
|
4
|
+
import "./chunk-2GU3NYMB.js";
|
|
5
|
+
import "./chunk-CHCA3ZM2.js";
|
|
6
|
+
import "./chunk-P2XNRKEL.js";
|
|
7
|
+
import "./chunk-Y25OJWOQ.js";
|
|
8
|
+
import {
|
|
9
|
+
sessionScopeFilter,
|
|
10
|
+
strictSessionScopeFilter
|
|
11
|
+
} from "./chunk-D55SXO3N.js";
|
|
12
|
+
import "./chunk-PWLX576L.js";
|
|
13
|
+
import "./chunk-5CHYEKMH.js";
|
|
14
|
+
import "./chunk-4JERP7NT.js";
|
|
15
|
+
import "./chunk-3XNYEGA5.js";
|
|
16
|
+
import "./chunk-MVW62NIZ.js";
|
|
17
|
+
import "./chunk-OYNKIAVW.js";
|
|
18
|
+
import "./chunk-CX6GL3ZJ.js";
|
|
19
|
+
import "./chunk-JTADPL6X.js";
|
|
20
|
+
import "./chunk-XJUUWHVN.js";
|
|
21
|
+
import "./chunk-NGP6LSV2.js";
|
|
22
|
+
import "./chunk-A3T5KDD3.js";
|
|
23
|
+
import "./chunk-CVYC6DUW.js";
|
|
24
|
+
import "./chunk-OPU3NYOO.js";
|
|
25
|
+
import "./chunk-GJV3WDWM.js";
|
|
26
|
+
import "./chunk-MP2AFCGL.js";
|
|
27
|
+
import "./chunk-25NFDJ3N.js";
|
|
28
|
+
import "./chunk-HYZV25LY.js";
|
|
29
|
+
import {
|
|
30
|
+
getClient
|
|
31
|
+
} from "./chunk-QQZMP6QL.js";
|
|
32
|
+
import "./chunk-2I23RPSI.js";
|
|
33
|
+
import "./chunk-ACBEUQR2.js";
|
|
34
|
+
import "./chunk-FXU7JOXK.js";
|
|
35
|
+
import "./chunk-K333WOW4.js";
|
|
36
|
+
import "./chunk-MOZ2YQ54.js";
|
|
37
|
+
import "./chunk-VXIMSRTO.js";
|
|
38
|
+
import "./chunk-LYH5HE24.js";
|
|
39
|
+
import "./chunk-MLKGABMK.js";
|
|
40
|
+
|
|
41
|
+
// src/lib/catchup-brief.ts
|
|
42
|
+
import { execSync } from "child_process";
|
|
43
|
+
var HEADER = "## Catchup Brief\nHere's what happened while you were offline:";
|
|
44
|
+
var DEFAULT_LOOKBACK_MS = 60 * 60 * 1e3;
|
|
45
|
+
var MAX_BRIEF_CHARS = 2e3;
|
|
46
|
+
var MAX_CHECKPOINT_CHARS = 500;
|
|
47
|
+
var MAX_MESSAGE_CHARS = 100;
|
|
48
|
+
function clipText(text, maxChars) {
|
|
49
|
+
if (text.length <= maxChars) return text;
|
|
50
|
+
if (maxChars <= 1) return "\u2026";
|
|
51
|
+
return `${text.slice(0, maxChars - 1).trimEnd()}\u2026`;
|
|
52
|
+
}
|
|
53
|
+
function clampSections(header, sections, maxChars) {
|
|
54
|
+
const bounded = [];
|
|
55
|
+
let remaining = Math.max(0, maxChars - header.length);
|
|
56
|
+
for (const section of sections) {
|
|
57
|
+
const separatorChars = 2;
|
|
58
|
+
if (remaining <= separatorChars) break;
|
|
59
|
+
remaining -= separatorChars;
|
|
60
|
+
if (section.length <= remaining) {
|
|
61
|
+
bounded.push(section);
|
|
62
|
+
remaining -= section.length;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const clipped = clipText(section, remaining);
|
|
66
|
+
if (clipped.trim().length > 0) bounded.push(clipped);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return bounded;
|
|
70
|
+
}
|
|
71
|
+
async function buildCatchupBrief(agentId, projectName, cwd, sessionScope) {
|
|
72
|
+
const sections = [];
|
|
73
|
+
let lastTimestamp = new Date(Date.now() - DEFAULT_LOOKBACK_MS).toISOString();
|
|
74
|
+
try {
|
|
75
|
+
const checkpointMemories = await lightweightSearch(
|
|
76
|
+
"CONTEXT CHECKPOINT",
|
|
77
|
+
agentId,
|
|
78
|
+
{ projectName, limit: 1 }
|
|
79
|
+
);
|
|
80
|
+
const checkpoint = checkpointMemories[0];
|
|
81
|
+
if (checkpoint?.timestamp) {
|
|
82
|
+
lastTimestamp = checkpoint.timestamp;
|
|
83
|
+
}
|
|
84
|
+
if (checkpoint?.raw_text) {
|
|
85
|
+
sections.push(
|
|
86
|
+
`### Last Checkpoint
|
|
87
|
+
${clipText(checkpoint.raw_text, MAX_CHECKPOINT_CHARS)}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
} catch {
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const gitLog = execSync(
|
|
94
|
+
`git log --oneline --since=${JSON.stringify(lastTimestamp)} --format="%h %an: %s" | head -10`,
|
|
95
|
+
{ cwd, timeout: 3e3, encoding: "utf-8" }
|
|
96
|
+
).trim();
|
|
97
|
+
if (gitLog) {
|
|
98
|
+
sections.push(`### Git Activity Since You Left
|
|
99
|
+
\`\`\`
|
|
100
|
+
${gitLog}
|
|
101
|
+
\`\`\``);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const client = getClient();
|
|
107
|
+
const taskScope = sessionScopeFilter(sessionScope);
|
|
108
|
+
const taskChanges = await client.execute({
|
|
109
|
+
sql: `SELECT title, status, priority FROM tasks
|
|
110
|
+
WHERE assigned_to = ? AND project_name = ?
|
|
111
|
+
AND updated_at > ? AND status IN ('open', 'in_progress')${taskScope.sql}
|
|
112
|
+
ORDER BY priority ASC, updated_at DESC LIMIT 5`,
|
|
113
|
+
args: [agentId, projectName, lastTimestamp, ...taskScope.args]
|
|
114
|
+
});
|
|
115
|
+
if (taskChanges.rows.length > 0) {
|
|
116
|
+
const taskLines = taskChanges.rows.map((row) => {
|
|
117
|
+
const record = row;
|
|
118
|
+
return `- [${String(record.priority).toUpperCase()}] ${String(record.title)} (${String(record.status)})`;
|
|
119
|
+
}).join("\n");
|
|
120
|
+
sections.push(`### Your Task Queue
|
|
121
|
+
${taskLines}`);
|
|
122
|
+
}
|
|
123
|
+
} catch {
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const client = getClient();
|
|
127
|
+
const messageScope = strictSessionScopeFilter(sessionScope);
|
|
128
|
+
const messages = await client.execute({
|
|
129
|
+
sql: `SELECT from_agent, content, created_at FROM messages
|
|
130
|
+
WHERE target_agent = ? AND status = 'pending'${messageScope.sql}
|
|
131
|
+
ORDER BY created_at DESC LIMIT 3`,
|
|
132
|
+
args: [agentId, ...messageScope.args]
|
|
133
|
+
});
|
|
134
|
+
if (messages.rows.length > 0) {
|
|
135
|
+
const msgLines = messages.rows.map((row) => {
|
|
136
|
+
const record = row;
|
|
137
|
+
return `- From ${String(record.from_agent)}: ${clipText(String(record.content ?? ""), MAX_MESSAGE_CHARS)}`;
|
|
138
|
+
}).join("\n");
|
|
139
|
+
sections.push(`### Unread Messages
|
|
140
|
+
${msgLines}`);
|
|
141
|
+
}
|
|
142
|
+
} catch {
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
header: HEADER,
|
|
146
|
+
sections: clampSections(HEADER, sections, MAX_BRIEF_CHARS)
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
buildCatchupBrief
|
|
151
|
+
};
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lightweightSearch
|
|
3
|
+
} from "./chunk-OW26ML36.js";
|
|
4
|
+
import "./chunk-PF5EFIAH.js";
|
|
5
|
+
import "./chunk-CHCA3ZM2.js";
|
|
6
|
+
import "./chunk-OVQOKLYA.js";
|
|
7
|
+
import "./chunk-Y25OJWOQ.js";
|
|
8
|
+
import {
|
|
9
|
+
sessionScopeFilter,
|
|
10
|
+
strictSessionScopeFilter
|
|
11
|
+
} from "./chunk-P2QTTEYP.js";
|
|
12
|
+
import "./chunk-A3G4UXNA.js";
|
|
13
|
+
import "./chunk-5CHYEKMH.js";
|
|
14
|
+
import "./chunk-4JERP7NT.js";
|
|
15
|
+
import "./chunk-TSBMSHMM.js";
|
|
16
|
+
import "./chunk-MVW62NIZ.js";
|
|
17
|
+
import "./chunk-OYNKIAVW.js";
|
|
18
|
+
import "./chunk-CX6GL3ZJ.js";
|
|
19
|
+
import "./chunk-XIT6ONPY.js";
|
|
20
|
+
import "./chunk-XJUUWHVN.js";
|
|
21
|
+
import "./chunk-NGP6LSV2.js";
|
|
22
|
+
import "./chunk-C4BIYP5C.js";
|
|
23
|
+
import "./chunk-CVYC6DUW.js";
|
|
24
|
+
import "./chunk-OPU3NYOO.js";
|
|
25
|
+
import "./chunk-GJV3WDWM.js";
|
|
26
|
+
import "./chunk-MP2AFCGL.js";
|
|
27
|
+
import "./chunk-VF6VT4MR.js";
|
|
28
|
+
import "./chunk-HYZV25LY.js";
|
|
29
|
+
import {
|
|
30
|
+
getClient
|
|
31
|
+
} from "./chunk-RHZ2CRJU.js";
|
|
32
|
+
import "./chunk-2I23RPSI.js";
|
|
33
|
+
import "./chunk-P2DOIWQG.js";
|
|
34
|
+
import "./chunk-FXU7JOXK.js";
|
|
35
|
+
import "./chunk-K333WOW4.js";
|
|
36
|
+
import "./chunk-MOZ2YQ54.js";
|
|
37
|
+
import "./chunk-VXIMSRTO.js";
|
|
38
|
+
import "./chunk-LYH5HE24.js";
|
|
39
|
+
import "./chunk-MLKGABMK.js";
|
|
40
|
+
|
|
41
|
+
// src/lib/catchup-brief.ts
|
|
42
|
+
import { execSync } from "child_process";
|
|
43
|
+
var HEADER = "## Catchup Brief\nHere's what happened while you were offline:";
|
|
44
|
+
var DEFAULT_LOOKBACK_MS = 60 * 60 * 1e3;
|
|
45
|
+
var MAX_BRIEF_CHARS = 2e3;
|
|
46
|
+
var MAX_CHECKPOINT_CHARS = 500;
|
|
47
|
+
var MAX_MESSAGE_CHARS = 100;
|
|
48
|
+
function clipText(text, maxChars) {
|
|
49
|
+
if (text.length <= maxChars) return text;
|
|
50
|
+
if (maxChars <= 1) return "\u2026";
|
|
51
|
+
return `${text.slice(0, maxChars - 1).trimEnd()}\u2026`;
|
|
52
|
+
}
|
|
53
|
+
function clampSections(header, sections, maxChars) {
|
|
54
|
+
const bounded = [];
|
|
55
|
+
let remaining = Math.max(0, maxChars - header.length);
|
|
56
|
+
for (const section of sections) {
|
|
57
|
+
const separatorChars = 2;
|
|
58
|
+
if (remaining <= separatorChars) break;
|
|
59
|
+
remaining -= separatorChars;
|
|
60
|
+
if (section.length <= remaining) {
|
|
61
|
+
bounded.push(section);
|
|
62
|
+
remaining -= section.length;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const clipped = clipText(section, remaining);
|
|
66
|
+
if (clipped.trim().length > 0) bounded.push(clipped);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
return bounded;
|
|
70
|
+
}
|
|
71
|
+
async function buildCatchupBrief(agentId, projectName, cwd, sessionScope) {
|
|
72
|
+
const sections = [];
|
|
73
|
+
let lastTimestamp = new Date(Date.now() - DEFAULT_LOOKBACK_MS).toISOString();
|
|
74
|
+
try {
|
|
75
|
+
const checkpointMemories = await lightweightSearch(
|
|
76
|
+
"CONTEXT CHECKPOINT",
|
|
77
|
+
agentId,
|
|
78
|
+
{ projectName, limit: 1 }
|
|
79
|
+
);
|
|
80
|
+
const checkpoint = checkpointMemories[0];
|
|
81
|
+
if (checkpoint?.timestamp) {
|
|
82
|
+
lastTimestamp = checkpoint.timestamp;
|
|
83
|
+
}
|
|
84
|
+
if (checkpoint?.raw_text) {
|
|
85
|
+
sections.push(
|
|
86
|
+
`### Last Checkpoint
|
|
87
|
+
${clipText(checkpoint.raw_text, MAX_CHECKPOINT_CHARS)}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
} catch {
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const gitLog = execSync(
|
|
94
|
+
`git log --oneline --since=${JSON.stringify(lastTimestamp)} --format="%h %an: %s" | head -10`,
|
|
95
|
+
{ cwd, timeout: 3e3, encoding: "utf-8" }
|
|
96
|
+
).trim();
|
|
97
|
+
if (gitLog) {
|
|
98
|
+
sections.push(`### Git Activity Since You Left
|
|
99
|
+
\`\`\`
|
|
100
|
+
${gitLog}
|
|
101
|
+
\`\`\``);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const client = getClient();
|
|
107
|
+
const taskScope = sessionScopeFilter(sessionScope);
|
|
108
|
+
const taskChanges = await client.execute({
|
|
109
|
+
sql: `SELECT title, status, priority FROM tasks
|
|
110
|
+
WHERE assigned_to = ? AND project_name = ?
|
|
111
|
+
AND updated_at > ? AND status IN ('open', 'in_progress')${taskScope.sql}
|
|
112
|
+
ORDER BY priority ASC, updated_at DESC LIMIT 5`,
|
|
113
|
+
args: [agentId, projectName, lastTimestamp, ...taskScope.args]
|
|
114
|
+
});
|
|
115
|
+
if (taskChanges.rows.length > 0) {
|
|
116
|
+
const taskLines = taskChanges.rows.map((row) => {
|
|
117
|
+
const record = row;
|
|
118
|
+
return `- [${String(record.priority).toUpperCase()}] ${String(record.title)} (${String(record.status)})`;
|
|
119
|
+
}).join("\n");
|
|
120
|
+
sections.push(`### Your Task Queue
|
|
121
|
+
${taskLines}`);
|
|
122
|
+
}
|
|
123
|
+
} catch {
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const client = getClient();
|
|
127
|
+
const messageScope = strictSessionScopeFilter(sessionScope);
|
|
128
|
+
const messages = await client.execute({
|
|
129
|
+
sql: `SELECT from_agent, content, created_at FROM messages
|
|
130
|
+
WHERE target_agent = ? AND status = 'pending'${messageScope.sql}
|
|
131
|
+
ORDER BY created_at DESC LIMIT 3`,
|
|
132
|
+
args: [agentId, ...messageScope.args]
|
|
133
|
+
});
|
|
134
|
+
if (messages.rows.length > 0) {
|
|
135
|
+
const msgLines = messages.rows.map((row) => {
|
|
136
|
+
const record = row;
|
|
137
|
+
return `- From ${String(record.from_agent)}: ${clipText(String(record.content ?? ""), MAX_MESSAGE_CHARS)}`;
|
|
138
|
+
}).join("\n");
|
|
139
|
+
sections.push(`### Unread Messages
|
|
140
|
+
${msgLines}`);
|
|
141
|
+
}
|
|
142
|
+
} catch {
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
header: HEADER,
|
|
146
|
+
sections: clampSections(HEADER, sections, MAX_BRIEF_CHARS)
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export {
|
|
150
|
+
buildCatchupBrief
|
|
151
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PLATFORM_PROCEDURES,
|
|
3
|
+
PLATFORM_PROCEDURE_TITLES
|
|
4
|
+
} from "./chunk-K77WC6HA.js";
|
|
5
|
+
import {
|
|
6
|
+
getClient
|
|
7
|
+
} from "./chunk-RHZ2CRJU.js";
|
|
8
|
+
|
|
9
|
+
// src/lib/global-procedures.ts
|
|
10
|
+
import { randomUUID } from "crypto";
|
|
11
|
+
var _customerCache = "";
|
|
12
|
+
var _cacheLoaded = false;
|
|
13
|
+
var _platformCache = PLATFORM_PROCEDURES.map((p) => `### ${p.title}
|
|
14
|
+
${p.content}`).join("\n\n");
|
|
15
|
+
async function loadGlobalProcedures() {
|
|
16
|
+
const client = getClient();
|
|
17
|
+
const result = await client.execute({
|
|
18
|
+
sql: "SELECT * FROM company_procedures WHERE active = 1 ORDER BY priority ASC, created_at ASC",
|
|
19
|
+
args: []
|
|
20
|
+
});
|
|
21
|
+
const allRows = result.rows;
|
|
22
|
+
const customerOnly = allRows.filter((p) => !PLATFORM_PROCEDURE_TITLES.has(p.title));
|
|
23
|
+
const values = customerOnly.filter((p) => p.kind === "value");
|
|
24
|
+
const procedures = customerOnly.filter((p) => p.kind !== "value");
|
|
25
|
+
const parts = [];
|
|
26
|
+
if (values.length > 0) {
|
|
27
|
+
parts.push("### Company Values\n" + values.map((v) => `- **${v.title}:** ${v.content}`).join("\n"));
|
|
28
|
+
}
|
|
29
|
+
if (procedures.length > 0) {
|
|
30
|
+
parts.push(procedures.map((p) => `### ${p.title}
|
|
31
|
+
${p.content}`).join("\n\n"));
|
|
32
|
+
}
|
|
33
|
+
_customerCache = parts.join("\n\n");
|
|
34
|
+
_cacheLoaded = true;
|
|
35
|
+
return customerOnly;
|
|
36
|
+
}
|
|
37
|
+
function getGlobalProceduresBlock() {
|
|
38
|
+
const sections = [];
|
|
39
|
+
if (_platformCache) sections.push(_platformCache);
|
|
40
|
+
if (_cacheLoaded && _customerCache) sections.push(_customerCache);
|
|
41
|
+
if (sections.length === 0) return "";
|
|
42
|
+
return `## Organization-Wide Procedures (MANDATORY \u2014 supersedes all other rules)
|
|
43
|
+
|
|
44
|
+
${sections.join("\n\n")}
|
|
45
|
+
`;
|
|
46
|
+
}
|
|
47
|
+
async function storeGlobalProcedure(input) {
|
|
48
|
+
const id = randomUUID();
|
|
49
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
50
|
+
const client = getClient();
|
|
51
|
+
await client.execute({
|
|
52
|
+
sql: `INSERT INTO company_procedures (id, title, content, priority, domain, kind, active, created_at, updated_at)
|
|
53
|
+
VALUES (?, ?, ?, ?, ?, ?, 1, ?, ?)`,
|
|
54
|
+
args: [id, input.title, input.content, input.priority ?? "p0", input.domain ?? null, input.kind ?? "procedure", now, now]
|
|
55
|
+
});
|
|
56
|
+
await loadGlobalProcedures();
|
|
57
|
+
return id;
|
|
58
|
+
}
|
|
59
|
+
async function deactivateGlobalProcedure(id) {
|
|
60
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
61
|
+
const client = getClient();
|
|
62
|
+
const result = await client.execute({
|
|
63
|
+
sql: "UPDATE company_procedures SET active = 0, updated_at = ? WHERE id = ?",
|
|
64
|
+
args: [now, id]
|
|
65
|
+
});
|
|
66
|
+
await loadGlobalProcedures();
|
|
67
|
+
return result.rowsAffected > 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
loadGlobalProcedures,
|
|
72
|
+
getGlobalProceduresBlock,
|
|
73
|
+
storeGlobalProcedure,
|
|
74
|
+
deactivateGlobalProcedure
|
|
75
|
+
};
|