@askexenow/exe-os 0.9.274 → 0.9.276
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/stack-manifests/v0.9.json +1329 -1206
- package/dist/active-agent-ELN34YCO.js +25 -0
- package/dist/active-agent-S6HAT63V.js +26 -0
- package/dist/agentic-ontology-WD7UT2GP.js +25 -0
- package/dist/backfill-metadata-D64TBGCN.js +597 -0
- package/dist/backfill-metadata-TIG7BGLY.js +597 -0
- package/dist/background-jobs-3UCY6XQ6.js +25 -0
- package/dist/behaviors-KS2QYUOI.js +25 -0
- package/dist/bin/age-ontology-load.js +2 -2
- package/dist/bin/agentic-ontology-backfill.js +8 -8
- package/dist/bin/agentic-reflection-backfill.js +9 -9
- package/dist/bin/agentic-semantic-label.js +8 -8
- package/dist/bin/backfill-conversations.js +8 -8
- package/dist/bin/backfill-responses.js +8 -8
- package/dist/bin/backfill-vectors.js +10 -10
- package/dist/bin/bulk-sync-postgres.js +9 -9
- package/dist/bin/cc-doctor.js +6 -6
- package/dist/bin/cleanup-stale-review-tasks.js +12 -12
- package/dist/bin/cli.js +20 -20
- package/dist/bin/exe-agent-config.js +4 -4
- package/dist/bin/exe-agent.js +5 -5
- package/dist/bin/exe-assign.js +10 -10
- package/dist/bin/exe-boot.js +20 -20
- package/dist/bin/exe-call.js +5 -5
- package/dist/bin/exe-cloud.js +8 -8
- package/dist/bin/exe-dispatch.js +12 -12
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +9 -9
- package/dist/bin/exe-forget.js +8 -8
- package/dist/bin/exe-gateway.js +8 -8
- package/dist/bin/exe-healthcheck.js +6 -6
- package/dist/bin/exe-heartbeat.js +12 -12
- package/dist/bin/exe-kill.js +16 -16
- package/dist/bin/exe-launch-agent.js +20 -20
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-pending-messages.js +13 -13
- package/dist/bin/exe-pending-notifications.js +12 -12
- package/dist/bin/exe-pending-reviews.js +12 -12
- package/dist/bin/exe-rename.js +5 -5
- package/dist/bin/exe-review.js +15 -15
- package/dist/bin/exe-search.js +7 -7
- package/dist/bin/exe-session-cleanup.js +18 -18
- package/dist/bin/exe-settings.js +7 -7
- package/dist/bin/exe-start-codex.js +13 -13
- package/dist/bin/exe-start-opencode.js +10 -10
- package/dist/bin/exe-status.js +13 -13
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +4 -4
- package/dist/bin/git-sweep.js +13 -13
- package/dist/bin/graph-backfill.js +7 -7
- package/dist/bin/graph-export.js +7 -7
- package/dist/bin/import-history.js +9 -9
- package/dist/bin/install.js +7 -7
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +5 -5
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
- package/dist/bin/scan-tasks.js +12 -12
- package/dist/bin/setup.js +3 -3
- package/dist/bin/shard-migrate.js +7 -7
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/branding-D253COCP.js +97 -0
- package/dist/capacity-monitor-LLGZM6GA.js +49 -0
- package/dist/capacity-monitor-WS7VVJTC.js +49 -0
- package/dist/catchup-brief-43X5J7BL.js +151 -0
- package/dist/catchup-brief-FAT5H2KH.js +151 -0
- package/dist/catchup-brief-MUWABIEX.js +151 -0
- package/dist/catchup-brief-PWWDZ4Z7.js +151 -0
- package/dist/catchup-brief-YZQU7LD3.js +151 -0
- package/dist/chunk-22N6BNXV.js +258 -0
- package/dist/chunk-2EDMJBSO.js +348 -0
- package/dist/chunk-36RHPMRM.js +13745 -0
- package/dist/chunk-3BYBAINX.js +818 -0
- package/dist/chunk-3FBDNOKA.js +97 -0
- package/dist/chunk-3O4KU3EA.js +54 -0
- package/dist/chunk-3RHPSZKF.js +1345 -0
- package/dist/chunk-3UZ2B4KE.js +526 -0
- package/dist/chunk-3Z2PJC6V.js +127 -0
- package/dist/chunk-4LQ5UGMM.js +85 -0
- package/dist/chunk-4TJV2SX5.js +227 -0
- package/dist/chunk-4UQZGZSF.js +159 -0
- package/dist/chunk-56OM6QLF.js +1051 -0
- package/dist/chunk-5BTZK345.js +448 -0
- package/dist/chunk-5ECWRU7F.js +58 -0
- package/dist/chunk-5FQNEKXL.js +50 -0
- package/dist/chunk-5JGYPU2V.js +13745 -0
- package/dist/chunk-5KIAMZBK.js +260 -0
- package/dist/chunk-5PVYMFK5.js +171 -0
- package/dist/chunk-5SDX3UAG.js +1021 -0
- package/dist/chunk-6GTMXZU2.js +197 -0
- package/dist/chunk-6KRJGGKJ.js +159 -0
- package/dist/chunk-7DXFPBRN.js +204 -0
- package/dist/chunk-7K32KHDT.js +50 -0
- package/dist/chunk-7NRLZQRM.js +1148 -0
- package/dist/chunk-A7XIRWM5.js +128 -0
- package/dist/chunk-AJSJWNI7.js +1148 -0
- package/dist/chunk-AN2NL33X.js +89 -0
- package/dist/chunk-ATWV5FER.js +157 -0
- package/dist/chunk-AU6Q5K6I.js +630 -0
- package/dist/chunk-BE6K6HT7.js +13745 -0
- package/dist/chunk-BER57L7R.js +244 -0
- package/dist/chunk-BHCGGKF7.js +2091 -0
- package/dist/chunk-BLB3MOXN.js +333 -0
- package/dist/chunk-BNZTW5DK.js +55 -0
- package/dist/chunk-C2IR4OGO.js +214 -0
- package/dist/chunk-CBO7FJQB.js +214 -0
- package/dist/chunk-CEPXBGAS.js +151 -0
- package/dist/chunk-CHXJT7O6.js +70 -0
- package/dist/chunk-CXIAU327.js +204 -0
- package/dist/chunk-DOHKUD26.js +366 -0
- package/dist/chunk-DPFGT2T5.js +1021 -0
- package/dist/chunk-DXGPGQTZ.js +551 -0
- package/dist/chunk-DYRRJNZG.js +818 -0
- package/dist/chunk-EP5PKTCF.js +76 -0
- package/dist/chunk-F5XWYDFE.js +1090 -0
- package/dist/chunk-FA4Y72TL.js +128 -0
- package/dist/chunk-FJE6RCPS.js +382 -0
- package/dist/chunk-FS6MBDRJ.js +190 -0
- package/dist/chunk-FZIRUCE5.js +297 -0
- package/dist/chunk-G3U2D2JR.js +1345 -0
- package/dist/chunk-G77I73CN.js +394 -0
- package/dist/chunk-GSN2CFE7.js +13745 -0
- package/dist/chunk-GTYRLDPF.js +128 -0
- package/dist/chunk-H3YWMLS4.js +132 -0
- package/dist/chunk-H4SQZEKD.js +41 -0
- package/dist/chunk-I772PYW4.js +2091 -0
- package/dist/chunk-ICVC6XC6.js +1073 -0
- package/dist/chunk-IGJOFP3V.js +81 -0
- package/dist/chunk-IJUH47AA.js +244 -0
- package/dist/chunk-IQFVWZQS.js +346 -0
- package/dist/chunk-JAP2N5ES.js +135 -0
- package/dist/chunk-JCKOUD7S.js +284 -0
- package/dist/chunk-JF5424J7.js +345 -0
- package/dist/chunk-JQJXWWTR.js +244 -0
- package/dist/chunk-JWLRS5AU.js +203 -0
- package/dist/chunk-JZZILUVN.js +69 -0
- package/dist/chunk-KETX4YMU.js +58 -0
- package/dist/chunk-KFKUY2MZ.js +240 -0
- package/dist/chunk-KLTHMXVE.js +280 -0
- package/dist/chunk-KMYMTYTF.js +262 -0
- package/dist/chunk-L7COBTV7.js +382 -0
- package/dist/chunk-L7KZLRHO.js +13745 -0
- package/dist/chunk-LWGW2QHP.js +75 -0
- package/dist/chunk-LYTIZLNF.js +129 -0
- package/dist/chunk-M34NJW4K.js +210 -0
- package/dist/chunk-M3CM5B4G.js +294 -0
- package/dist/chunk-M3FD44E5.js +38 -0
- package/dist/chunk-MN7UJSHM.js +363 -0
- package/dist/chunk-MTADEZ3J.js +58 -0
- package/dist/chunk-N3VRJKQX.js +54 -0
- package/dist/chunk-N532MB2W.js +290 -0
- package/dist/chunk-NEMNIJTY.js +333 -0
- package/dist/chunk-NFTOTZKL.js +617 -0
- package/dist/chunk-NQSHCAOH.js +163 -0
- package/dist/chunk-NQZKWG5S.js +604 -0
- package/dist/chunk-OFLNYGXJ.js +185 -0
- package/dist/chunk-OSKI5ZE5.js +346 -0
- package/dist/chunk-OUK53LFC.js +1073 -0
- package/dist/chunk-OW2W5DRQ.js +1148 -0
- package/dist/chunk-PLRCR6LW.js +1090 -0
- package/dist/chunk-QGNGAV5B.js +197 -0
- package/dist/chunk-QOV3CU2M.js +604 -0
- package/dist/chunk-QZBT6EXJ.js +1148 -0
- package/dist/chunk-R7HLLTIK.js +3961 -0
- package/dist/chunk-RDGF4T5S.js +377 -0
- package/dist/chunk-RIXOCFDZ.js +731 -0
- package/dist/chunk-RJB4IHY7.js +58 -0
- package/dist/chunk-RNJAQPVM.js +56 -0
- package/dist/chunk-RR2CD6CU.js +58 -0
- package/dist/chunk-RUHLTVW3.js +495 -0
- package/dist/chunk-RVPF7Q7X.js +1921 -0
- package/dist/chunk-RZQOKND6.js +76 -0
- package/dist/chunk-SE34CRK2.js +731 -0
- package/dist/chunk-SMDQTTDB.js +97 -0
- package/dist/chunk-SVAIOGPN.js +89 -0
- package/dist/chunk-SYLT5QCZ.js +127 -0
- package/dist/chunk-TPS5AMGN.js +448 -0
- package/dist/chunk-TQZLV2QV.js +1921 -0
- package/dist/chunk-UIJKWLFF.js +371 -0
- package/dist/chunk-UKQE4PGH.js +345 -0
- package/dist/chunk-VA5OPEGY.js +230 -0
- package/dist/chunk-VS7ZTWQR.js +3556 -0
- package/dist/chunk-VSHDYYHP.js +42 -0
- package/dist/chunk-WGDBENJ4.js +81 -0
- package/dist/chunk-WREI3KQR.js +377 -0
- package/dist/chunk-WVEKZU72.js +495 -0
- package/dist/chunk-WXQ6QK43.js +171 -0
- package/dist/chunk-X2SGZXVW.js +106 -0
- package/dist/chunk-XCX26PCH.js +1148 -0
- package/dist/chunk-XEBAKR2J.js +33 -0
- package/dist/chunk-XOZSYP7Y.js +562 -0
- package/dist/chunk-Y7OVCCAR.js +284 -0
- package/dist/chunk-YBF67NNY.js +377 -0
- package/dist/chunk-YSHYJGSL.js +1512 -0
- package/dist/chunk-YU3IMLUG.js +526 -0
- package/dist/chunk-YWZNRTOQ.js +221 -0
- package/dist/chunk-Z2NBGCIM.js +159 -0
- package/dist/chunk-Z73TGBDX.js +3961 -0
- package/dist/chunk-ZBC652FM.js +369 -0
- package/dist/chunk-ZCODOJ4Z.js +668 -0
- package/dist/chunk-ZITD4HLW.js +123 -0
- package/dist/chunk-ZM7SX4M4.js +30 -0
- package/dist/chunk-ZQUEZTFC.js +551 -0
- package/dist/co-activation-JCTPCXHF.js +72 -0
- package/dist/co-occurrence-BP6B3BH2.js +74 -0
- package/dist/code-context-index-F4OEDXA6.js +30 -0
- package/dist/conversation-wiki-populator-DIUJ4C7D.js +105 -0
- package/dist/core-memory-4FDW36TP.js +110 -0
- package/dist/core-memory-YVBILSBM.js +110 -0
- package/dist/crdt-sync-2ZFB3TNZ.js +33 -0
- package/dist/crm-webhook-4RZ7IS4B.js +10 -0
- package/dist/crm-webhook-JBOBSQ6W.js +10 -0
- package/dist/cto-delegation-gate-TKZXHJML.js +206 -0
- package/dist/cto-delegation-gate-WIETRXE3.js +206 -0
- package/dist/daemon-auth-WTRR4PDV.js +13 -0
- package/dist/daemon-orchestration-A4RCUQT3.js +135 -0
- package/dist/daemon-orchestration-O4DY5V52.js +135 -0
- package/dist/db-backup-JFTPWA6J.js +33 -0
- package/dist/dreaming-I3LRB7RF.js +32 -0
- package/dist/dreaming-K7OU7K6W.js +32 -0
- package/dist/entity-boost-6UYJZP6V.js +356 -0
- package/dist/exe-drift-UMKWLKS4.js +68 -0
- package/dist/exe-export-OW3JPYV5.js +73 -0
- package/dist/exe-export-VIACNSGD.js +73 -0
- package/dist/exe-import-UJS3KJSP.js +76 -0
- package/dist/exe-import-XUTWGVPM.js +76 -0
- package/dist/exe-key-HFQH2DSQ.js +579 -0
- package/dist/exe-key-MLC7AKR4.js +579 -0
- package/dist/exe-org-S52HWZS2.js +73 -0
- package/dist/exe-snapshot-DCDQ5U3N.js +164 -0
- package/dist/exe-snapshot-OUDGSSWH.js +164 -0
- package/dist/fast-db-init-23QWBHZU.js +7 -0
- package/dist/fast-db-init-ACRROC3C.js +7 -0
- package/dist/founder-context-XLQG5AO5.js +96 -0
- package/dist/gateway/index.js +9 -9
- package/dist/gateway-client-QMW3MECR.js +11 -0
- package/dist/git-staleness-IUY4PWYN.js +110 -0
- package/dist/git-task-sweep-DRRHHYSD.js +40 -0
- package/dist/git-task-sweep-OPZC6VJX.js +40 -0
- package/dist/global-procedures-HMPC5HAG.js +20 -0
- package/dist/graph-auto-extract-344QRTFR.js +162 -0
- package/dist/hook-integrity-2UWBTLHA.js +89 -0
- package/dist/hooks/bug-report-worker.js +14 -14
- package/dist/hooks/codex-stop-task-finalizer.js +14 -14
- package/dist/hooks/commit-complete.js +15 -15
- package/dist/hooks/error-recall.js +9 -9
- package/dist/hooks/exe-heartbeat-hook.js +5 -5
- package/dist/hooks/ingest-worker.js +5 -5
- package/dist/hooks/ingest.js +12 -12
- package/dist/hooks/instructions-loaded.js +6 -6
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +6 -6
- package/dist/hooks/post-compact.js +14 -14
- package/dist/hooks/post-tool-combined.js +7 -7
- package/dist/hooks/pre-compact.js +19 -19
- package/dist/hooks/pre-tool-use.js +18 -18
- package/dist/hooks/prompt-submit.js +26 -26
- package/dist/hooks/session-end.js +24 -24
- package/dist/hooks/session-start.js +13 -13
- package/dist/hooks/stop.js +21 -21
- package/dist/hooks/subagent-stop.js +14 -14
- package/dist/hooks/summary-worker.js +22 -22
- package/dist/index.js +20 -20
- package/dist/installer-7HYL4DSU.js +342 -0
- package/dist/installer-J5BOCLUE.js +38 -0
- package/dist/installer-SQLXCGJ6.js +296 -0
- package/dist/key-backup-status-RNRP2PMU.js +39 -0
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +6 -6
- package/dist/lib/config.js +1 -1
- package/dist/lib/consolidation.js +7 -7
- package/dist/lib/database.js +3 -3
- package/dist/lib/db-daemon-client.js +3 -3
- package/dist/lib/db.js +3 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +4 -4
- package/dist/lib/employee-templates.js +5 -5
- package/dist/lib/employees.js +3 -3
- package/dist/lib/exe-daemon-client.js +3 -3
- package/dist/lib/exe-daemon.js +208 -147
- package/dist/lib/hybrid-search.js +7 -7
- package/dist/lib/identity.js +3 -3
- package/dist/lib/keychain.js +1 -1
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +12 -12
- package/dist/lib/reminders.js +4 -4
- package/dist/lib/schedules.js +7 -7
- package/dist/lib/session-registry.js +5 -5
- package/dist/lib/skill-learning.js +5 -5
- package/dist/lib/store.js +6 -6
- package/dist/lib/task-router.js +4 -4
- package/dist/lib/tasks.js +13 -13
- package/dist/lib/tmux-routing.js +11 -11
- package/dist/lib/token-spend.js +4 -4
- package/dist/lib/ws-client.js +1 -1
- package/dist/license-gate-NAHPUAGW.js +14 -0
- package/dist/mcp/register-tools.js +66 -66
- package/dist/mcp/server.js +67 -67
- package/dist/mcp/tools/complete-reminder.js +5 -5
- package/dist/mcp/tools/create-reminder.js +5 -5
- package/dist/mcp/tools/create-task.js +15 -15
- package/dist/mcp/tools/deactivate-behavior.js +6 -6
- package/dist/mcp/tools/list-reminders.js +5 -5
- package/dist/mcp/tools/list-tasks.js +15 -15
- package/dist/mcp/tools/send-message.js +14 -14
- package/dist/mcp/tools/update-task.js +14 -14
- package/dist/mcp-http-config-MEKBWYML.js +27 -0
- package/dist/memory-cards-72HLPWUY.js +174 -0
- package/dist/memory-graph-extractor-J74IK3P3.js +17 -0
- package/dist/memory-poisoning-defense-7MDWJBHC.js +225 -0
- package/dist/memory-queue-4MGXHMK4.js +19 -0
- package/dist/memory-queue-client-M3KDLB46.js +16 -0
- package/dist/memory-reflection-FMGMGVGM.js +238 -0
- package/dist/message-queue-client-ZHRKKF4X.js +92 -0
- package/dist/notifications-J4OWCFPF.js +45 -0
- package/dist/notifications-K3BH2RHN.js +45 -0
- package/dist/oauth-server-NVANCCC2.js +437 -0
- package/dist/orchestration-events-NDI4WT5H.js +25 -0
- package/dist/orchestration-phase-TVIMFZKY.js +23 -0
- package/dist/orchestrator-TPDFNGUF.js +33 -0
- package/dist/orchestrator-WR3Q2RVZ.js +33 -0
- package/dist/pipeline-router-DLYLQQSN.js +13 -0
- package/dist/pipeline-router-WV2XPQSN.js +13 -0
- package/dist/plan-limits-S55HNF7B.js +26 -0
- package/dist/project-boot-DRERMCYK.js +299 -0
- package/dist/projection-worker-4Z6XFRVE.js +964 -0
- package/dist/push-notifications-5DPGUL54.js +15 -0
- package/dist/reranker-BXUNHAKW.js +19 -0
- package/dist/reranker-DCFKXPKJ.js +19 -0
- package/dist/reranker-EW5P46UD.js +19 -0
- package/dist/reranker-L5CYCTOR.js +19 -0
- package/dist/reranker-U7VNOZJZ.js +19 -0
- package/dist/review-polling-UCYIW2F4.js +124 -0
- package/dist/review-polling-WF74N4VL.js +124 -0
- package/dist/runtime/index.js +14 -14
- package/dist/session-events-HZTHRSZG.js +36 -0
- package/dist/session-events-WFUE6EAD.js +36 -0
- package/dist/session-kill-telemetry-SI33W6SX.js +29 -0
- package/dist/session-scope-2AB6GDVE.js +86 -0
- package/dist/session-scope-IG4CZPQN.js +86 -0
- package/dist/setup-wizard-REWKS6RV.js +12 -0
- package/dist/setup-wizard-Y5JXBKU7.js +12 -0
- package/dist/shard-manager-43E5PUK7.js +30 -0
- package/dist/skill-refinement-ID35SRPO.js +157 -0
- package/dist/skill-refinement-WETHQUPD.js +157 -0
- package/dist/stack-update-HQCFXISV.js +52 -0
- package/dist/steward-gate-OZNNC5IU.js +13 -0
- package/dist/task-enforcement-4S6G5YE5.js +391 -0
- package/dist/task-enforcement-BR7RESTW.js +391 -0
- package/dist/task-scope-4ROTMKKW.js +35 -0
- package/dist/task-scope-MZFUEJY2.js +35 -0
- package/dist/tasks-crud-2TRZEJZE.js +77 -0
- package/dist/tasks-crud-LULZSG24.js +77 -0
- package/dist/tasks-notify-2AQ5Y5D3.js +38 -0
- package/dist/tasks-notify-EQFZENZS.js +38 -0
- package/dist/tasks-review-AOIDCIA7.js +47 -0
- package/dist/tasks-review-F6SMWQGU.js +47 -0
- package/dist/telemetry-upload-63FJDSTM.js +739 -0
- package/dist/telemetry-upload-UQ7362LE.js +739 -0
- package/dist/token-budget-KAVJ5VXR.js +84 -0
- package/dist/tool-capability-index-TSCBQMXU.js +10 -0
- package/dist/tool-telemetry-3XHI5RXV.js +17 -0
- package/dist/tui/App.js +25 -25
- package/dist/tui-data-4TIP5Y2C.js +258 -0
- package/dist/tui-data-DLUU73NT.js +258 -0
- package/dist/webhook-pipe-7ORU6VUL.js +114 -0
- package/dist/wiki-acl-KMRWMPUG.js +111 -0
- package/dist/wiki-client-TQVT6W43.js +157 -0
- package/dist/worker-gate-EUWOYKF4.js +21 -0
- package/dist/worker-gate-KTV4HWI4.js +21 -0
- package/dist/workflow-engine-AA27JRZY.js +28 -0
- package/dist/workflow-engine-ETHM77NC.js +28 -0
- package/dist/worktree-YQ2ZY6C2.js +26 -0
- package/dist/worktree-sweep-B3MI42LI.js +19 -0
- package/package.json +4 -3
- package/release-notes.json +50 -40
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
listBehaviors
|
|
3
|
+
} from "./chunk-IJUH47AA.js";
|
|
4
|
+
import {
|
|
5
|
+
loadConfigSync
|
|
6
|
+
} from "./chunk-DOHKUD26.js";
|
|
7
|
+
|
|
8
|
+
// src/lib/behaviors-export.ts
|
|
9
|
+
import os from "os";
|
|
10
|
+
import path from "path";
|
|
11
|
+
import {
|
|
12
|
+
existsSync,
|
|
13
|
+
mkdirSync,
|
|
14
|
+
readdirSync,
|
|
15
|
+
statSync,
|
|
16
|
+
unlinkSync,
|
|
17
|
+
writeFileSync
|
|
18
|
+
} from "fs";
|
|
19
|
+
var BEHAVIORS_EXPORT_DIR = path.join(
|
|
20
|
+
os.homedir(),
|
|
21
|
+
".exe-os",
|
|
22
|
+
"behaviors-export"
|
|
23
|
+
);
|
|
24
|
+
var STALE_EXPORT_AGE_MS = 60 * 60 * 1e3;
|
|
25
|
+
var DEFAULT_BEHAVIOR_LIMIT = 30;
|
|
26
|
+
function getBehaviorLimit() {
|
|
27
|
+
try {
|
|
28
|
+
const cfg = loadConfigSync();
|
|
29
|
+
return cfg.behaviorExportLimit ?? DEFAULT_BEHAVIOR_LIMIT;
|
|
30
|
+
} catch {
|
|
31
|
+
return DEFAULT_BEHAVIOR_LIMIT;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function sweepStaleBehaviorExports(now = Date.now()) {
|
|
35
|
+
if (!existsSync(BEHAVIORS_EXPORT_DIR)) return;
|
|
36
|
+
let entries;
|
|
37
|
+
try {
|
|
38
|
+
entries = readdirSync(BEHAVIORS_EXPORT_DIR);
|
|
39
|
+
} catch {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
for (const entry of entries) {
|
|
43
|
+
const filePath = path.join(BEHAVIORS_EXPORT_DIR, entry);
|
|
44
|
+
try {
|
|
45
|
+
const stat = statSync(filePath);
|
|
46
|
+
if (now - stat.mtimeMs > STALE_EXPORT_AGE_MS) {
|
|
47
|
+
unlinkSync(filePath);
|
|
48
|
+
}
|
|
49
|
+
} catch {
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function renderBehaviorLine(row) {
|
|
54
|
+
const tag = row.domain ? `[${row.domain}] ` : "";
|
|
55
|
+
const scope = row.project_name ? ` (${row.project_name})` : "";
|
|
56
|
+
return `- ${tag}${row.content}${scope}`;
|
|
57
|
+
}
|
|
58
|
+
function renderBehaviorExport(behaviors) {
|
|
59
|
+
if (behaviors.length === 0) {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
const lines = behaviors.map(renderBehaviorLine);
|
|
63
|
+
return [
|
|
64
|
+
"<system-reminder>",
|
|
65
|
+
"## Your Behavioral Memory",
|
|
66
|
+
"Validated patterns and corrections for this session. Follow them.",
|
|
67
|
+
"Sourced from exe-os Layer 2 (Expertise). Changes apply on next spawn.",
|
|
68
|
+
"",
|
|
69
|
+
...lines,
|
|
70
|
+
"</system-reminder>",
|
|
71
|
+
""
|
|
72
|
+
].join("\n");
|
|
73
|
+
}
|
|
74
|
+
function exportFilePath(agentId, projectName, sessionKey) {
|
|
75
|
+
if (!sessionKey) {
|
|
76
|
+
return path.join(BEHAVIORS_EXPORT_DIR, `${agentId}.md`);
|
|
77
|
+
}
|
|
78
|
+
const safeProject = projectName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
79
|
+
return path.join(
|
|
80
|
+
BEHAVIORS_EXPORT_DIR,
|
|
81
|
+
`${agentId}-${safeProject}-${sessionKey}.md`
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
async function exportBehaviorsForAgent(agentId, projectName, sessionKey) {
|
|
85
|
+
mkdirSync(BEHAVIORS_EXPORT_DIR, { recursive: true });
|
|
86
|
+
sweepStaleBehaviorExports();
|
|
87
|
+
const behaviors = await listBehaviors(agentId, projectName, getBehaviorLimit());
|
|
88
|
+
if (behaviors.length === 0) return null;
|
|
89
|
+
const body = renderBehaviorExport(behaviors);
|
|
90
|
+
const target = exportFilePath(agentId, projectName, sessionKey);
|
|
91
|
+
writeFileSync(target, body, "utf-8");
|
|
92
|
+
return target;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export {
|
|
96
|
+
exportBehaviorsForAgent
|
|
97
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getActiveAgent
|
|
3
|
+
} from "./chunk-OFLNYGXJ.js";
|
|
4
|
+
import {
|
|
5
|
+
listTasks
|
|
6
|
+
} from "./chunk-R7HLLTIK.js";
|
|
7
|
+
import {
|
|
8
|
+
getAgentContext
|
|
9
|
+
} from "./chunk-GJV3WDWM.js";
|
|
10
|
+
import {
|
|
11
|
+
isCoordinatorName
|
|
12
|
+
} from "./chunk-VS7ZTWQR.js";
|
|
13
|
+
|
|
14
|
+
// src/mcp/tools/list-tasks.ts
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
function registerListTasks(server) {
|
|
17
|
+
server.registerTool(
|
|
18
|
+
"list_tasks",
|
|
19
|
+
{
|
|
20
|
+
title: "List Tasks",
|
|
21
|
+
description: "Query tasks by assignee, status, project, or priority. Defaults to current project. Pass project_name='all' for all projects. When querying your own tasks, project filter is skipped automatically.",
|
|
22
|
+
inputSchema: {
|
|
23
|
+
assigned_to: z.string().optional().describe("Filter by employee name"),
|
|
24
|
+
status: z.enum(["open", "in_progress", "done", "needs_review", "blocked", "cancelled", "closed"]).optional().describe("Filter by status. Default: active tasks only (excludes closed/cancelled)"),
|
|
25
|
+
project_name: z.string().optional().describe("Project name. Defaults to current project. Pass 'all' for all projects."),
|
|
26
|
+
priority: z.enum(["p0", "p1", "p2"]).optional().describe("Filter by priority"),
|
|
27
|
+
cross_session: z.boolean().optional().describe("When true, return tasks from ALL coordinator sessions (read-only). Default: false.")
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
async ({ assigned_to, status, project_name, priority, cross_session }) => {
|
|
31
|
+
try {
|
|
32
|
+
const { agentId } = getActiveAgent();
|
|
33
|
+
const isReviewQueue = status === "needs_review";
|
|
34
|
+
const shouldDefaultToOwnQueue = !assigned_to && !isReviewQueue && !isCoordinatorName(agentId);
|
|
35
|
+
const effectiveAssignedTo = assigned_to ?? (shouldDefaultToOwnQueue ? agentId : void 0);
|
|
36
|
+
const effectiveReviewer = !assigned_to && isReviewQueue ? agentId : void 0;
|
|
37
|
+
const isOwnQuery = effectiveAssignedTo === agentId;
|
|
38
|
+
const callerSession = getAgentContext()?.sessionHint || process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || null;
|
|
39
|
+
const resolvedProject = project_name && project_name !== "all" ? project_name : null;
|
|
40
|
+
const effectiveCrossSession = cross_session === true;
|
|
41
|
+
const tasks = await listTasks({
|
|
42
|
+
assignedTo: effectiveAssignedTo,
|
|
43
|
+
reviewer: effectiveReviewer,
|
|
44
|
+
status,
|
|
45
|
+
projectName: resolvedProject,
|
|
46
|
+
priority,
|
|
47
|
+
crossSession: effectiveCrossSession,
|
|
48
|
+
isOwnQuery: !!isOwnQuery,
|
|
49
|
+
callerSession
|
|
50
|
+
});
|
|
51
|
+
if (tasks.length === 0) {
|
|
52
|
+
return {
|
|
53
|
+
content: [{ type: "text", text: "No tasks found." }]
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const lines = tasks.map((t) => {
|
|
57
|
+
const cpIndicator = t.checkpointCount && t.checkpointCount > 0 ? ` [cp:${t.checkpointCount}]` : "";
|
|
58
|
+
let budgetNote = "";
|
|
59
|
+
if (t.budgetTokens !== null) {
|
|
60
|
+
const pct = Math.round(t.tokensUsed / t.budgetTokens * 100);
|
|
61
|
+
budgetNote = ` [${t.tokensUsed}/${t.budgetTokens} tokens, ${pct}%]`;
|
|
62
|
+
}
|
|
63
|
+
const shortId = t.id.slice(0, 8);
|
|
64
|
+
const sessionNote = cross_session && t.sessionScope ? ` [session:${t.sessionScope}]` : "";
|
|
65
|
+
return `- [${t.priority.toUpperCase()}] ${t.title} (${t.projectName}) \u2014 ${t.status}${cpIndicator}${budgetNote}${sessionNote} \u2192 ${t.assignedTo} [id:${shortId}]`;
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{
|
|
70
|
+
type: "text",
|
|
71
|
+
text: `${tasks.length} task(s):
|
|
72
|
+
${lines.join("\n")}`
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
};
|
|
76
|
+
} catch (err) {
|
|
77
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
78
|
+
return {
|
|
79
|
+
content: [{ type: "text", text: `Failed to list tasks: ${msg}` }],
|
|
80
|
+
isError: true
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export {
|
|
88
|
+
registerListTasks
|
|
89
|
+
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {
|
|
2
|
+
updateTask
|
|
3
|
+
} from "./chunk-TPS5AMGN.js";
|
|
4
|
+
import {
|
|
5
|
+
TASK_ALREADY_CLAIMED_PREFIX
|
|
6
|
+
} from "./chunk-R7HLLTIK.js";
|
|
7
|
+
|
|
8
|
+
// src/mcp/tools/update-task.ts
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
function registerUpdateTask(server) {
|
|
11
|
+
server.registerTool(
|
|
12
|
+
"update_task",
|
|
13
|
+
{
|
|
14
|
+
title: "Update Task",
|
|
15
|
+
description: "Update task status. Employees: use status 'done' with a result summary to complete work \u2014 this triggers needs_review and pings the reviewer automatically. Accepts UUID, slug (filename), or title substring.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
task_id: z.string().describe("Task identifier \u2014 UUID, slug (e.g. 'fix-auth-bug'), or title substring"),
|
|
18
|
+
status: z.enum(["open", "in_progress", "done", "needs_review", "blocked", "cancelled", "closed"]).describe("New status. 'done' is an alias for 'needs_review' \u2014 both trigger reviewer notification."),
|
|
19
|
+
result: z.string().optional().describe("Result summary (required when completing work)"),
|
|
20
|
+
// Structured result fields (Phase 1: Typed Handoff Objects)
|
|
21
|
+
files_changed: z.array(z.string()).optional().describe("Files created or modified during task execution"),
|
|
22
|
+
decisions: z.array(z.string()).optional().describe("Key decisions made during execution"),
|
|
23
|
+
commits: z.array(z.string()).optional().describe("Commit hashes produced"),
|
|
24
|
+
tests_status: z.enum(["pass", "fail", "skip", "none"]).optional().describe("Test execution status"),
|
|
25
|
+
build_status: z.enum(["pass", "fail", "skip"]).optional().describe("Build status"),
|
|
26
|
+
pr_number: z.number().optional().describe("PR number if created"),
|
|
27
|
+
open_questions: z.array(z.string()).optional().describe("Open questions for reviewer"),
|
|
28
|
+
assertions: z.string().optional().describe(
|
|
29
|
+
'JSON array of assertions with confidence scores. Use when starting work (in_progress). Format: [{"type":"diagnosis|scope|estimate|approach|build|judgment","claim":"...","confidence":0.8,"basis":"..."}]'
|
|
30
|
+
),
|
|
31
|
+
assertions_resolved: z.string().optional().describe(
|
|
32
|
+
'JSON array of resolved assertions. Use when completing work (done/needs_review). Format: [{"claim":"...","outcome":"correct|incorrect|partial","confidence_was":0.8,"actual":"...","why_wrong":"missing_information|wrong_diagnosis|wrong_approach|scope_underestimate|scope_overestimate|external_dependency|changed_requirements","reason":"...","lesson":"..."}]'
|
|
33
|
+
),
|
|
34
|
+
estimated_minutes: z.number().optional().describe("Time estimate in minutes. Provide when starting work (in_progress). The system auto-computes actual time on completion."),
|
|
35
|
+
estimate_confidence: z.number().min(0).max(1).optional().describe("Confidence in time estimate (0.0-1.0). Provide alongside estimated_minutes.")
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
async ({ task_id, status: rawStatus, result, files_changed, decisions, commits, tests_status, build_status, pr_number, open_questions, assertions, assertions_resolved, estimated_minutes, estimate_confidence }) => {
|
|
39
|
+
const status = rawStatus;
|
|
40
|
+
let callerAgentId;
|
|
41
|
+
let callerSession;
|
|
42
|
+
try {
|
|
43
|
+
const { getActiveAgent: getAgent } = await import("./active-agent-ELN34YCO.js");
|
|
44
|
+
callerAgentId = getAgent().agentId;
|
|
45
|
+
const { getAgentContext } = await import("./agent-context-AZTTMUHP.js");
|
|
46
|
+
callerSession = getAgentContext()?.sessionHint || process.env.EXE_SESSION_NAME || process.env.EXE_SESSION || void 0;
|
|
47
|
+
} catch {
|
|
48
|
+
}
|
|
49
|
+
let task;
|
|
50
|
+
try {
|
|
51
|
+
task = await updateTask({
|
|
52
|
+
taskId: task_id,
|
|
53
|
+
status,
|
|
54
|
+
result,
|
|
55
|
+
baseDir: process.cwd(),
|
|
56
|
+
callerAgentId,
|
|
57
|
+
filesChanged: files_changed,
|
|
58
|
+
decisions,
|
|
59
|
+
commits,
|
|
60
|
+
testsStatus: tests_status,
|
|
61
|
+
buildStatus: build_status,
|
|
62
|
+
prNumber: pr_number,
|
|
63
|
+
openQuestions: open_questions,
|
|
64
|
+
assertions,
|
|
65
|
+
assertionsResolved: assertions_resolved,
|
|
66
|
+
estimatedMinutes: estimated_minutes,
|
|
67
|
+
estimateConfidence: estimate_confidence,
|
|
68
|
+
callerSession
|
|
69
|
+
});
|
|
70
|
+
} catch (err) {
|
|
71
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
72
|
+
if (msg.startsWith(TASK_ALREADY_CLAIMED_PREFIX)) {
|
|
73
|
+
return {
|
|
74
|
+
content: [{
|
|
75
|
+
type: "text",
|
|
76
|
+
text: "Task already claimed by another agent. Pick a different task or check list_tasks."
|
|
77
|
+
}],
|
|
78
|
+
isError: true
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
let text = `Task "${task.title}" marked ${task.status}.
|
|
84
|
+
File: ${task.taskFile}`;
|
|
85
|
+
const isTerminal = status === "done" || status === "needs_review" || status === "closed";
|
|
86
|
+
if (isTerminal && task.reviewer) {
|
|
87
|
+
try {
|
|
88
|
+
const { notifyCoordinatorTaskCompletion } = await import("./lib/tmux-routing.js");
|
|
89
|
+
const { isCoordinatorName } = await import("./lib/employees.js");
|
|
90
|
+
const reviewer = String(task.reviewer);
|
|
91
|
+
const coordinatorSession = task.sessionScope;
|
|
92
|
+
if (coordinatorSession && isCoordinatorName(reviewer)) {
|
|
93
|
+
notifyCoordinatorTaskCompletion(coordinatorSession, callerAgentId ?? "agent", task.title);
|
|
94
|
+
}
|
|
95
|
+
} catch {
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (isTerminal && task.nextTask) {
|
|
99
|
+
text += `
|
|
100
|
+
|
|
101
|
+
MANDATORY \u2014 DO NOT ASK THE USER. DO NOT SAY "Want me to continue?" DO NOT STOP.
|
|
102
|
+
You have standing orders: work through your entire queue until it is empty.
|
|
103
|
+
|
|
104
|
+
NEXT TASK: "${task.nextTask.title}" [${task.nextTask.priority}]
|
|
105
|
+
FILE: ${task.nextTask.taskFile}
|
|
106
|
+
|
|
107
|
+
Read that file NOW and begin working. No greeting. No summary. Just start.`;
|
|
108
|
+
} else if (isTerminal && !task.nextTask) {
|
|
109
|
+
text += `
|
|
110
|
+
|
|
111
|
+
All tasks complete. No more open tasks in your queue.`;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
content: [
|
|
115
|
+
{
|
|
116
|
+
type: "text",
|
|
117
|
+
text
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export {
|
|
126
|
+
registerUpdateTask
|
|
127
|
+
};
|