@askexenow/exe-os 0.9.127 → 0.9.129
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/dist/active-agent-3FDJYREJ.js +22 -0
- package/dist/active-agent-WC7YK3L5.js +23 -0
- package/dist/agent-context-CDWUZEXY.js +11 -0
- package/dist/agent-loop-G4VUR5ME.js +10 -0
- package/dist/agentic-ontology-2VYNTMNO.js +25 -0
- package/dist/backfill-metadata-OJWOCLSZ.js +601 -0
- package/dist/background-jobs-LGRDXGXC.js +25 -0
- package/dist/bash-Y5PEW5UQ.js +8 -0
- package/dist/behaviors-CSB2YLDT.js +22 -0
- package/dist/bin/age-ontology-load.js +10 -258
- package/dist/bin/agentic-ontology-backfill.js +23 -5296
- package/dist/bin/agentic-reflection-backfill.js +19 -4739
- package/dist/bin/agentic-semantic-label.js +28 -4723
- package/dist/bin/backfill-conversations.js +42 -5543
- package/dist/bin/backfill-responses.js +41 -5542
- package/dist/bin/backfill-vectors.js +43 -4795
- package/dist/bin/bulk-sync-postgres.js +22 -5313
- package/dist/bin/cc-doctor.js +10 -602
- package/dist/bin/cleanup-stale-review-tasks.js +32 -6803
- package/dist/bin/cli.js +169 -38993
- package/dist/bin/exe-agent-config.js +21 -253
- package/dist/bin/exe-agent.js +63 -2429
- package/dist/bin/exe-assign.js +34 -5810
- package/dist/bin/exe-boot.js +180 -12726
- package/dist/bin/exe-call.js +48 -1409
- package/dist/bin/exe-cloud.js +64 -8516
- package/dist/bin/exe-dispatch.js +35 -10818
- package/dist/bin/exe-doctor.js +24 -7537
- package/dist/bin/exe-export-behaviors.js +18 -6122
- package/dist/bin/exe-forget.js +22 -6274
- package/dist/bin/exe-gateway.js +62 -15286
- package/dist/bin/exe-healthcheck.js +9 -602
- package/dist/bin/exe-heartbeat.js +51 -6898
- package/dist/bin/exe-kill.js +30 -5961
- package/dist/bin/exe-launch-agent.js +101 -6788
- package/dist/bin/exe-new-employee.js +42 -3774
- package/dist/bin/exe-pending-messages.js +28 -6833
- package/dist/bin/exe-pending-notifications.js +31 -6869
- package/dist/bin/exe-pending-reviews.js +38 -6910
- package/dist/bin/exe-rename.js +57 -5766
- package/dist/bin/exe-review.js +29 -5948
- package/dist/bin/exe-search.js +22 -7692
- package/dist/bin/exe-session-cleanup.js +52 -11147
- package/dist/bin/exe-settings.js +35 -524
- package/dist/bin/exe-start-codex.js +70 -6641
- package/dist/bin/exe-start-opencode.js +54 -6584
- package/dist/bin/exe-status.js +26 -7081
- package/dist/bin/exe-support.js +10 -546
- package/dist/bin/exe-team.js +18 -5942
- package/dist/bin/git-sweep.js +26 -10909
- package/dist/bin/graph-backfill.js +24 -5979
- package/dist/bin/graph-export.js +31 -6128
- package/dist/bin/graph-layer-benchmark.js +4 -8
- package/dist/bin/install.js +47 -2322
- package/dist/bin/intercom-check.js +25 -11501
- package/dist/bin/list-providers.js +4 -18
- package/dist/bin/postgres-agentic-reflection-backfill.js +14 -357
- package/dist/bin/postgres-agentic-semantic-backfill.js +14 -404
- package/dist/bin/pre-publish.js +4 -298
- package/dist/bin/registry-proxy.js +8 -172
- package/dist/bin/scan-tasks.js +47 -10881
- package/dist/bin/setup.js +6 -9492
- package/dist/bin/shard-migrate.js +30 -5149
- package/dist/bin/stack-update.js +75 -203
- package/dist/bin/update.js +20 -654
- package/dist/capacity-monitor-3GZIHLB4.js +46 -0
- package/dist/catchup-brief-67QDCINS.js +148 -0
- package/dist/chunk-2QD7KBJN.js +664 -0
- package/dist/chunk-2WGSIVI4.js +149 -0
- package/dist/chunk-35TVNLJI.js +57 -0
- package/dist/chunk-3SYV36U5.js +47 -0
- package/dist/chunk-46SQTBQW.js +207 -0
- package/dist/chunk-4CMVLKEI.js +171 -0
- package/dist/chunk-4FLUOZTR.js +116 -0
- package/dist/chunk-4NYQAS33.js +17 -0
- package/dist/chunk-4QNPADWL.js +902 -0
- package/dist/chunk-4Y6QZBEO.js +58 -0
- package/dist/chunk-557C2IGL.js +0 -0
- package/dist/chunk-55S56YDO.js +305 -0
- package/dist/chunk-5BS5ELMC.js +85 -0
- package/dist/chunk-5DHM77JE.js +256 -0
- package/dist/chunk-5QTWQKNF.js +137 -0
- package/dist/chunk-6A7P74QV.js +53 -0
- package/dist/chunk-6BFIFI5F.js +45 -0
- package/dist/chunk-6KFICEAT.js +20 -0
- package/dist/chunk-6LKDJ5WX.js +317 -0
- package/dist/chunk-6M5II4EV.js +148 -0
- package/dist/chunk-6QEFN3DV.js +302 -0
- package/dist/chunk-6WTMJAG3.js +171 -0
- package/dist/chunk-6Y4B3QF6.js +19 -0
- package/dist/chunk-7RK3AYJE.js +163 -0
- package/dist/chunk-7TCP2XTP.js +390 -0
- package/dist/chunk-A2NZP64U.js +2307 -0
- package/dist/chunk-AFYIYM2K.js +322 -0
- package/dist/chunk-AJWFPKQS.js +573 -0
- package/dist/chunk-AVE2B4DQ.js +140 -0
- package/dist/chunk-B4TT2QQA.js +87 -0
- package/dist/chunk-BCMOO4OQ.js +1066 -0
- package/dist/chunk-BU3ID2WT.js +432 -0
- package/dist/chunk-CFIM43JH.js +862 -0
- package/dist/chunk-CURJUF3W.js +66 -0
- package/dist/chunk-DC4ZD76Y.js +288 -0
- package/dist/chunk-DL52JPGF.js +706 -0
- package/dist/chunk-DRSC6ZRA.js +36 -0
- package/dist/chunk-E2Q4Y22A.js +86 -0
- package/dist/chunk-ECGTESAP.js +236 -0
- package/dist/chunk-EHOJUXYG.js +365 -0
- package/dist/chunk-EIT6J37V.js +119 -0
- package/dist/chunk-ELE2C7L4.js +31 -0
- package/dist/chunk-EQSQ4HBW.js +9 -0
- package/dist/chunk-FWFFZGSC.js +94 -0
- package/dist/chunk-GCNWCYJI.js +249 -0
- package/dist/chunk-GGTUUI7J.js +6 -0
- package/dist/chunk-GU56L7OY.js +223 -0
- package/dist/chunk-HF25XPZE.js +83 -0
- package/dist/chunk-HOKOOBDL.js +52 -0
- package/dist/chunk-HP43GLZ6.js +89 -0
- package/dist/chunk-HSRM6PNM.js +682 -0
- package/dist/chunk-HVRTW3OP.js +164 -0
- package/dist/chunk-IHDHL5ML.js +125 -0
- package/dist/chunk-IHF5RXJM.js +168 -0
- package/dist/chunk-IJ73YE73.js +409 -0
- package/dist/chunk-INO4ZD5Y.js +162 -0
- package/dist/chunk-IRQTM7DY.js +475 -0
- package/dist/chunk-JD4FAPYG.js +1208 -0
- package/dist/chunk-JN44LQ53.js +316 -0
- package/dist/chunk-JQ6TLNIV.js +133 -0
- package/dist/chunk-JT76KRZQ.js +35 -0
- package/dist/chunk-K6OEWZTB.js +262 -0
- package/dist/chunk-KCUYRZSX.js +72 -0
- package/dist/chunk-KFQGP6VL.js +33 -0
- package/dist/chunk-KRLOFIPI.js +83 -0
- package/dist/chunk-KVPG5UT6.js +305 -0
- package/dist/chunk-L3TB7CC3.js +170 -0
- package/dist/chunk-L4X5EUHR.js +283 -0
- package/dist/chunk-LAN26C3W.js +655 -0
- package/dist/chunk-LPGBKR4H.js +54 -0
- package/dist/chunk-LVNMOVGD.js +132 -0
- package/dist/chunk-LX5WEEZ7.js +157 -0
- package/dist/chunk-MBH42QNH.js +295 -0
- package/dist/chunk-MFO7MNSD.js +102 -0
- package/dist/chunk-MILTNDZH.js +736 -0
- package/dist/chunk-MJAE4NB7.js +1090 -0
- package/dist/chunk-MLCUPTP7.js +132 -0
- package/dist/chunk-MPURH6JI.js +445 -0
- package/dist/chunk-MVBWW2EO.js +89 -0
- package/dist/chunk-MZIGUUDQ.js +42 -0
- package/dist/chunk-N3DTSVKE.js +157 -0
- package/dist/chunk-N5RRQOAC.js +134 -0
- package/dist/chunk-N7L33TED.js +1664 -0
- package/dist/chunk-NDYSNVI5.js +122 -0
- package/dist/chunk-NEAHEC5G.js +155 -0
- package/dist/chunk-NGVOA6ZQ.js +84 -0
- package/dist/chunk-NHK5KW6Y.js +193 -0
- package/dist/chunk-NMQKGFEP.js +458 -0
- package/dist/chunk-NPT4EHZK.js +352 -0
- package/dist/chunk-NXFJHTED.js +55 -0
- package/dist/chunk-NZLCDI6Y.js +216 -0
- package/dist/chunk-O377P7GM.js +100 -0
- package/dist/chunk-O4VFZRA5.js +33 -0
- package/dist/chunk-O7YD7JYE.js +237 -0
- package/dist/chunk-OFK72LTZ.js +81 -0
- package/dist/chunk-ORCCI2VV.js +140 -0
- package/dist/chunk-OVQR4KMC.js +579 -0
- package/dist/chunk-P3CVUMEH.js +54 -0
- package/dist/chunk-P4HIF72O.js +30 -0
- package/dist/chunk-PEDLSJBL.js +1039 -0
- package/dist/chunk-PFICKZZ5.js +219 -0
- package/dist/chunk-PGW7TIV6.js +142 -0
- package/dist/chunk-PJHHFJAN.js +63 -0
- package/dist/chunk-PP4SNOJ5.js +471 -0
- package/dist/chunk-PRKVT4KN.js +90 -0
- package/dist/chunk-Q2O4VJHH.js +305 -0
- package/dist/chunk-Q36CMZIX.js +38 -0
- package/dist/chunk-Q3V7K4ME.js +149 -0
- package/dist/chunk-QGYPJGHB.js +81 -0
- package/dist/chunk-R23EMFJV.js +198 -0
- package/dist/chunk-R4M6XCMU.js +39 -0
- package/dist/chunk-R4WMF32C.js +81 -0
- package/dist/chunk-RJT7H2KR.js +349 -0
- package/dist/chunk-RJZMRZNV.js +280 -0
- package/dist/chunk-RMFDPCA2.js +72 -0
- package/dist/chunk-RUG3N6P4.js +292 -0
- package/dist/chunk-RWO327FJ.js +84 -0
- package/dist/chunk-SG7EFHQ7.js +108 -0
- package/dist/chunk-SH45SJQW.js +0 -0
- package/dist/chunk-SPKE5ANC.js +42 -0
- package/dist/chunk-SVMFVPBF.js +104 -0
- package/dist/chunk-SVXDCELZ.js +163 -0
- package/dist/chunk-TMEE7AT7.js +72 -0
- package/dist/chunk-TWYEE4FB.js +125 -0
- package/dist/chunk-TYLF4LSW.js +110 -0
- package/dist/chunk-V4TZI6EO.js +60 -0
- package/dist/chunk-VFZTXKQI.js +372 -0
- package/dist/chunk-VQ4K2MLM.js +199 -0
- package/dist/chunk-VU447UAO.js +173 -0
- package/dist/chunk-WMC3TXJF.js +50 -0
- package/dist/chunk-WPOA7XAE.js +84 -0
- package/dist/chunk-WZQ4CPRG.js +64 -0
- package/dist/chunk-X2IMCCM5.js +49 -0
- package/dist/chunk-X2Z5GT3V.js +118 -0
- package/dist/chunk-XEKO37NM.js +43 -0
- package/dist/chunk-XUHFQHGZ.js +505 -0
- package/dist/chunk-YGAAZN3E.js +47 -0
- package/dist/chunk-YKOW7KMK.js +558 -0
- package/dist/chunk-YOQKMB6N.js +145 -0
- package/dist/chunk-YZFZDJWZ.js +107 -0
- package/dist/chunk-ZBY4AUD4.js +10342 -0
- package/dist/chunk-ZOJYPNCM.js +127 -0
- package/dist/chunk-ZS7MGQSD.js +1494 -0
- package/dist/chunk-ZTZQ5A6B.js +191 -0
- package/dist/code-context-index-HXGC4IJL.js +28 -0
- package/dist/content-extractor-UVZXRIPC.js +8 -0
- package/dist/conversation-entity-extractor-HKSNDF4L.js +113 -0
- package/dist/conversation-wiki-populator-NKDAQEZ5.js +105 -0
- package/dist/crdt-sync-T7MHVQCS.js +33 -0
- package/dist/crm-bridge-Q5JBVJ6P.js +19 -0
- package/dist/crm-webhook-OAFTLJYA.js +10 -0
- package/dist/cto-delegation-gate-XWHZCUJH.js +208 -0
- package/dist/daemon-auth-GWUXTUYO.js +15 -0
- package/dist/daemon-orchestration-2C3TVOHO.js +91 -0
- package/dist/daemon-protocol-RLH2XM2K.js +19 -0
- package/dist/db-backup-CH2KG3JY.js +23 -0
- package/dist/devtools-PLJCAU53.js +8 -0
- package/dist/discord-G4BQJ2VX.js +7 -0
- package/dist/email-XMRNMFXR.js +137 -0
- package/dist/entity-boost-IOER4VRR.js +249 -0
- package/dist/exe-drift-2IJFQV43.js +68 -0
- package/dist/exe-export-Y2RFXGNB.js +71 -0
- package/dist/exe-import-LN6PE2YT.js +74 -0
- package/dist/exe-key-DHKBWLIT.js +571 -0
- package/dist/exe-org-F7LZRHFB.js +73 -0
- package/dist/factory-YTD23AW7.js +67 -0
- package/dist/fast-db-init-IIP6EGWT.js +7 -0
- package/dist/file-edit-FJVEO7XZ.js +8 -0
- package/dist/file-read-Q2NH3J35.js +8 -0
- package/dist/file-write-UNSFXNH4.js +8 -0
- package/dist/gateway/index.js +87 -16563
- package/dist/gateway-client-APTYJNCL.js +11 -0
- package/dist/git-staleness-I2BUEDE2.js +111 -0
- package/dist/git-task-sweep-UEOTXRW4.js +35 -0
- package/dist/glob-GRMXLDMB.js +7 -0
- package/dist/global-procedures-MFE5LGRF.js +19 -0
- package/dist/graph-query-657O5JYJ.js +25 -0
- package/dist/graph-rag-ZE5N7C65.js +28 -0
- package/dist/grep-NBV6SKYZ.js +7 -0
- package/dist/hooks/bug-report-worker.js +41 -10823
- package/dist/hooks/codex-stop-task-finalizer.js +38 -9055
- package/dist/hooks/commit-complete.js +32 -10914
- package/dist/hooks/error-recall.js +35 -7955
- package/dist/hooks/exe-heartbeat-hook.js +17 -327
- package/dist/hooks/ingest-worker.js +16 -565
- package/dist/hooks/ingest.js +98 -11436
- package/dist/hooks/instructions-loaded.js +25 -6209
- package/dist/hooks/notification.js +16 -6098
- package/dist/hooks/post-compact.js +34 -7041
- package/dist/hooks/post-tool-combined.js +27 -9751
- package/dist/hooks/pre-compact.js +38 -11130
- package/dist/hooks/pre-tool-use.js +61 -7233
- package/dist/hooks/prompt-submit.js +113 -13358
- package/dist/hooks/session-end.js +57 -11503
- package/dist/hooks/session-start.js +46 -9423
- package/dist/hooks/stop.js +70 -7210
- package/dist/hooks/subagent-stop.js +33 -6897
- package/dist/hooks/summary-worker.js +86 -8629
- package/dist/hooks-KD3N2D7P.js +9 -0
- package/dist/imessage-L7WKA2WD.js +7 -0
- package/dist/index.js +49 -19391
- package/dist/installer-5N24GXFB.js +32 -0
- package/dist/installer-QSD76YRY.js +291 -0
- package/dist/installer-ZPQUKHU5.js +331 -0
- package/dist/intercom-queue-PEEGAJ33.js +19 -0
- package/dist/key-backup-status-57UB74DU.js +41 -0
- package/dist/lib/agent-config.js +19 -224
- package/dist/lib/cloud-sync.js +44 -5398
- package/dist/lib/cloudflare-dns.js +7 -111
- package/dist/lib/config.js +18 -278
- package/dist/lib/consolidation.js +21 -1047
- package/dist/lib/crypto.js +7 -45
- package/dist/lib/database.js +20 -2932
- package/dist/lib/db-daemon-client.js +24 -460
- package/dist/lib/db.js +22 -2932
- package/dist/lib/device-registry.js +20 -2992
- package/dist/lib/embedder.js +14 -822
- package/dist/lib/employee-templates.js +21 -1102
- package/dist/lib/employees.js +30 -497
- package/dist/lib/error-detector.js +9 -149
- package/dist/lib/exe-daemon-client.js +16 -570
- package/dist/lib/exe-daemon.js +509 -18398
- package/dist/lib/file-grep.js +2 -0
- package/dist/lib/hybrid-search.js +18 -7674
- package/dist/lib/identity-templates.js +2 -0
- package/dist/lib/identity.js +13 -309
- package/dist/lib/keychain.js +9 -499
- package/dist/lib/license.js +21 -549
- package/dist/lib/messaging.js +35 -1631
- package/dist/lib/post-tool-memory.js +8 -370
- package/dist/lib/registry-proxy.js +8 -155
- package/dist/lib/reminders.js +11 -231
- package/dist/lib/runtime-table.js +7 -20
- package/dist/lib/schedules.js +16 -4614
- package/dist/lib/session-registry.js +9 -57
- package/dist/lib/session-wrappers.js +3 -127
- package/dist/lib/skill-learning.js +20 -2101
- package/dist/lib/status-brief.js +4 -368
- package/dist/lib/store.js +25 -5593
- package/dist/lib/task-router.js +12 -254
- package/dist/lib/tasks.js +44 -5801
- package/dist/lib/tmux-routing.js +45 -5804
- package/dist/lib/tmux-status.js +16 -248
- package/dist/lib/tmux-transport.js +6 -90
- package/dist/lib/token-spend.js +9 -337
- package/dist/lib/transport.js +8 -134
- package/dist/lib/ws-auth.js +6 -14
- package/dist/lib/ws-client.js +4 -22
- package/dist/license-gate-NXXDOOAQ.js +14 -0
- package/dist/mcp/register-tools.js +90 -32454
- package/dist/mcp/server.js +139 -32625
- package/dist/mcp/tools/complete-reminder.js +10 -237
- package/dist/mcp/tools/create-reminder.js +10 -222
- package/dist/mcp/tools/create-task.js +28 -6730
- package/dist/mcp/tools/deactivate-behavior.js +13 -476
- package/dist/mcp/tools/list-reminders.js +10 -232
- package/dist/mcp/tools/list-tasks.js +28 -1571
- package/dist/mcp/tools/send-message.js +25 -1672
- package/dist/mcp/tools/update-task.js +27 -6123
- package/dist/mcp-diagnostics-OOZ3TDPY.js +200 -0
- package/dist/memory-cards-RIL5BZHK.js +175 -0
- package/dist/memory-queue-JYIJ7TMQ.js +13 -0
- package/dist/memory-queue-client-PE7757HU.js +14 -0
- package/dist/notifications-CJFULBMN.js +42 -0
- package/dist/orchestration-phase-Y2TYNW5H.js +23 -0
- package/dist/orchestrator-RXIPT6PZ.js +29 -0
- package/dist/permission-presets-WI524OSE.js +25 -0
- package/dist/permissions-TYT6YMNZ.js +14 -0
- package/dist/pg-ssl-KFHNJPGO.js +7 -0
- package/dist/plan-limits-5WY5YK6X.js +27 -0
- package/dist/preferences-MW3BYTQ5.js +10 -0
- package/dist/project-name-PL2ZDWNU.js +11 -0
- package/dist/projection-worker-OY4WYZW6.js +661 -0
- package/dist/reranker-LFJ73RRS.js +19 -0
- package/dist/review-gate-E6K7QQE5.js +120 -0
- package/dist/runtime/index.js +82 -13408
- package/dist/self-query-router-IZANO632.js +83 -0
- package/dist/session-events-TQ6S5KQN.js +32 -0
- package/dist/session-kill-telemetry-46YIJWE2.js +30 -0
- package/dist/session-scope-3MYK3YRV.js +34 -0
- package/dist/setup-wizard-ZJ7UCRBP.js +12 -0
- package/dist/shard-manager-RCFZ6RXY.js +29 -0
- package/dist/signal-XN2C7PIG.js +7 -0
- package/dist/slack-Z77TFJCK.js +7 -0
- package/dist/task-enforcement-337DZI3I.js +252 -0
- package/dist/task-scanner-IMIR3T7T.js +11 -0
- package/dist/task-scope-MUU4KXE6.js +32 -0
- package/dist/tasks-crud-PMLK3MM4.js +53 -0
- package/dist/tasks-review-56LVKKNL.js +44 -0
- package/dist/telegram-CRPZO7JT.js +7 -0
- package/dist/telemetry-SPVGPKU7.js +9 -0
- package/dist/tool-capability-index-XNBSDCH3.js +10 -0
- package/dist/tool-gates-LGH6CSY4.js +14 -0
- package/dist/tool-gates-W7SZCYTX.js +13 -0
- package/dist/tool-registry-436LVVLY.js +11 -0
- package/dist/tool-telemetry-L77WNAYT.js +15 -0
- package/dist/tui/App.js +253 -14668
- package/dist/tui-data-SB45REYU.js +161 -0
- package/dist/update-check-LZGZISRJ.js +11 -0
- package/dist/webhook-VVP7KQVC.js +96 -0
- package/dist/whatsapp-J6QNDBGY.js +9 -0
- package/dist/whatsapp-accounts-RTJF3LM6.js +15 -0
- package/dist/wiki-client-EKCIKCVC.js +136 -0
- package/dist/worker-gate-UYNN62GJ.js +19 -0
- package/dist/worktree-4T4BPWPN.js +205 -0
- package/package.json +1 -1
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init_session_kill_telemetry,
|
|
3
|
+
recordSessionKill
|
|
4
|
+
} from "./chunk-IHDHL5ML.js";
|
|
5
|
+
import {
|
|
6
|
+
init_notifications,
|
|
7
|
+
init_task_scope,
|
|
8
|
+
init_tmux_routing,
|
|
9
|
+
sessionScopeFilter,
|
|
10
|
+
verifyPaneAtCapacity,
|
|
11
|
+
writeNotification
|
|
12
|
+
} from "./chunk-N7L33TED.js";
|
|
13
|
+
import {
|
|
14
|
+
init_session_registry,
|
|
15
|
+
listSessions
|
|
16
|
+
} from "./chunk-KRLOFIPI.js";
|
|
17
|
+
import {
|
|
18
|
+
getTransport,
|
|
19
|
+
init_transport
|
|
20
|
+
} from "./chunk-R4M6XCMU.js";
|
|
21
|
+
import {
|
|
22
|
+
getClient,
|
|
23
|
+
init_database
|
|
24
|
+
} from "./chunk-A2NZP64U.js";
|
|
25
|
+
import {
|
|
26
|
+
init_employees,
|
|
27
|
+
isCoordinatorName
|
|
28
|
+
} from "./chunk-RUG3N6P4.js";
|
|
29
|
+
import {
|
|
30
|
+
__esm
|
|
31
|
+
} from "./chunk-KFQGP6VL.js";
|
|
32
|
+
|
|
33
|
+
// src/lib/capacity-monitor.ts
|
|
34
|
+
function resumeTaskTitle(agentId) {
|
|
35
|
+
return `${RESUME_TITLE_PREFIX} ${agentId} hit context capacity \u2014 continue open tasks`;
|
|
36
|
+
}
|
|
37
|
+
function buildResumeContext(agentId, openTasks) {
|
|
38
|
+
const taskList = openTasks.map(
|
|
39
|
+
(r, i) => `${i + 1}. [${String(r.priority).toUpperCase()}] ${String(r.title)} (${String(r.task_file)})`
|
|
40
|
+
).join("\n");
|
|
41
|
+
return [
|
|
42
|
+
"## Context",
|
|
43
|
+
"",
|
|
44
|
+
`${agentId} hit context capacity and was auto-relaunched by the capacity monitor.`,
|
|
45
|
+
"Call recall_my_memory first \u2014 search for 'CONTEXT CHECKPOINT'. Pick up where the previous session stopped.",
|
|
46
|
+
"",
|
|
47
|
+
`You have ${openTasks.length} open task(s). Work through them in priority order:`,
|
|
48
|
+
"",
|
|
49
|
+
taskList,
|
|
50
|
+
"",
|
|
51
|
+
"Read each task file and chain through them. Build and commit after each one."
|
|
52
|
+
].join("\n");
|
|
53
|
+
}
|
|
54
|
+
function filterPaneContent(paneOutput) {
|
|
55
|
+
return paneOutput.split("\n").filter((line) => {
|
|
56
|
+
if (CONTENT_LINE_PREFIX.test(line)) return false;
|
|
57
|
+
for (const marker of CONTENT_LINE_MARKERS) {
|
|
58
|
+
if (line.includes(marker)) return false;
|
|
59
|
+
}
|
|
60
|
+
for (const re of SOURCE_CODE_MARKERS) {
|
|
61
|
+
if (re.test(line)) return false;
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
64
|
+
}).join("\n");
|
|
65
|
+
}
|
|
66
|
+
function extractContextPercent(paneOutput) {
|
|
67
|
+
const match = paneOutput.match(CC_CONTEXT_BAR_RE);
|
|
68
|
+
if (!match) return null;
|
|
69
|
+
const parsed = Number.parseInt(match[2], 10);
|
|
70
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
71
|
+
}
|
|
72
|
+
function isAtCapacity(paneOutput) {
|
|
73
|
+
const filtered = filterPaneContent(paneOutput);
|
|
74
|
+
return CAPACITY_PATTERNS.some((p) => p.test(filtered));
|
|
75
|
+
}
|
|
76
|
+
function confirmCapacityKill(agentId, now = Date.now()) {
|
|
77
|
+
const pendingSince = _pendingCapacityKill.get(agentId);
|
|
78
|
+
if (pendingSince === void 0) {
|
|
79
|
+
_pendingCapacityKill.set(agentId, now);
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
if (now - pendingSince > CONFIRMATION_WINDOW_MS) {
|
|
83
|
+
_pendingCapacityKill.set(agentId, now);
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
_pendingCapacityKill.delete(agentId);
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
function _resetPendingCapacityKills() {
|
|
90
|
+
_pendingCapacityKill.clear();
|
|
91
|
+
}
|
|
92
|
+
function _resetLastRelaunchCache() {
|
|
93
|
+
_lastRelaunch.clear();
|
|
94
|
+
}
|
|
95
|
+
async function lastResumeCreatedAtMs(agentId) {
|
|
96
|
+
const client = getClient();
|
|
97
|
+
const cmScope = sessionScopeFilter(null);
|
|
98
|
+
const result = await client.execute({
|
|
99
|
+
sql: `SELECT MAX(created_at) AS last_created_at
|
|
100
|
+
FROM tasks
|
|
101
|
+
WHERE assigned_to = ? AND title LIKE ?${cmScope.sql}`,
|
|
102
|
+
args: [agentId, `${RESUME_TITLE_PREFIX} %`, ...cmScope.args]
|
|
103
|
+
});
|
|
104
|
+
const raw = result.rows[0]?.last_created_at;
|
|
105
|
+
if (raw === null || raw === void 0) return null;
|
|
106
|
+
const parsed = Date.parse(String(raw));
|
|
107
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
108
|
+
}
|
|
109
|
+
async function isWithinRelaunchCooldown(agentId, now = Date.now()) {
|
|
110
|
+
const cached = _lastRelaunch.get(agentId);
|
|
111
|
+
if (cached !== void 0) return now - cached < RELAUNCH_COOLDOWN_MS;
|
|
112
|
+
const persisted = await lastResumeCreatedAtMs(agentId);
|
|
113
|
+
if (persisted === null) return false;
|
|
114
|
+
if (now - persisted >= RELAUNCH_COOLDOWN_MS) return false;
|
|
115
|
+
_lastRelaunch.set(agentId, persisted);
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
async function createOrRefreshResumeTask(agentId, projectDir, openTasks) {
|
|
119
|
+
const client = getClient();
|
|
120
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
121
|
+
const context = buildResumeContext(agentId, openTasks);
|
|
122
|
+
const rdScope = sessionScopeFilter(null);
|
|
123
|
+
const existing = await client.execute({
|
|
124
|
+
sql: `SELECT id FROM tasks
|
|
125
|
+
WHERE assigned_to = ?
|
|
126
|
+
AND title LIKE ?
|
|
127
|
+
AND status IN (${RESUME_ACTIVE_STATUSES.map(() => "?").join(", ")})${rdScope.sql}
|
|
128
|
+
ORDER BY created_at DESC
|
|
129
|
+
LIMIT 1`,
|
|
130
|
+
args: [agentId, RESUME_TITLE_LIKE_PATTERN, ...RESUME_ACTIVE_STATUSES, ...rdScope.args]
|
|
131
|
+
});
|
|
132
|
+
if (existing.rows.length > 0) {
|
|
133
|
+
const taskId = String(existing.rows[0].id);
|
|
134
|
+
await client.execute({
|
|
135
|
+
sql: `UPDATE tasks SET context = ?, updated_at = ? WHERE id = ?`,
|
|
136
|
+
args: [context, now, taskId]
|
|
137
|
+
});
|
|
138
|
+
return { created: false, taskId };
|
|
139
|
+
}
|
|
140
|
+
const { createTask } = await import("./lib/tasks.js");
|
|
141
|
+
const task = await createTask({
|
|
142
|
+
title: resumeTaskTitle(agentId),
|
|
143
|
+
assignedTo: agentId,
|
|
144
|
+
assignedBy: "system",
|
|
145
|
+
projectName: projectDir.split("/").pop() ?? "unknown",
|
|
146
|
+
priority: "p0",
|
|
147
|
+
context,
|
|
148
|
+
baseDir: projectDir
|
|
149
|
+
});
|
|
150
|
+
return { created: true, taskId: task.id };
|
|
151
|
+
}
|
|
152
|
+
async function pollCapacityDead() {
|
|
153
|
+
const transport = getTransport();
|
|
154
|
+
const relaunched = [];
|
|
155
|
+
const registered = listSessions().filter(
|
|
156
|
+
(s) => !isCoordinatorName(s.agentId)
|
|
157
|
+
);
|
|
158
|
+
if (registered.length === 0) return [];
|
|
159
|
+
let liveSessions;
|
|
160
|
+
try {
|
|
161
|
+
liveSessions = transport.listSessions();
|
|
162
|
+
} catch {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
for (const entry of registered) {
|
|
166
|
+
const { windowName, agentId, projectDir } = entry;
|
|
167
|
+
if (!liveSessions.includes(windowName)) continue;
|
|
168
|
+
if (await isWithinRelaunchCooldown(agentId)) continue;
|
|
169
|
+
let pane;
|
|
170
|
+
try {
|
|
171
|
+
pane = transport.capturePane(windowName, 15);
|
|
172
|
+
} catch {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
if (!isAtCapacity(pane)) continue;
|
|
176
|
+
const ctxPct = extractContextPercent(pane);
|
|
177
|
+
if (ctxPct !== null && ctxPct < CTX_FLOOR_PERCENT) {
|
|
178
|
+
process.stderr.write(
|
|
179
|
+
`[capacity-monitor] ctx-floor: ${agentId} at ${ctxPct}% in ${windowName} \u2014 below ${CTX_FLOOR_PERCENT}%. Skipping capacity kill (likely self-referential content or false positive).
|
|
180
|
+
`
|
|
181
|
+
);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (!confirmCapacityKill(agentId)) {
|
|
185
|
+
process.stderr.write(
|
|
186
|
+
`[capacity-monitor] ${agentId} matched capacity pattern once in ${windowName}. Awaiting confirmation on next tick.
|
|
187
|
+
`
|
|
188
|
+
);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const verify = await verifyPaneAtCapacity(windowName);
|
|
192
|
+
if (!verify.atCapacity) {
|
|
193
|
+
process.stderr.write(
|
|
194
|
+
`[capacity-monitor] verifyPaneAtCapacity rejected kill for ${agentId} in ${windowName} (reason: ${verify.reason}). Skipping.
|
|
195
|
+
`
|
|
196
|
+
);
|
|
197
|
+
void recordSessionKill({
|
|
198
|
+
sessionName: windowName,
|
|
199
|
+
agentId,
|
|
200
|
+
reason: "capacity_false_positive_blocked"
|
|
201
|
+
});
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
process.stderr.write(
|
|
205
|
+
`[capacity-monitor] Detected ${agentId} at capacity in session ${windowName} (confirmed). Auto-relaunching.
|
|
206
|
+
`
|
|
207
|
+
);
|
|
208
|
+
try {
|
|
209
|
+
transport.kill(windowName);
|
|
210
|
+
void recordSessionKill({
|
|
211
|
+
sessionName: windowName,
|
|
212
|
+
agentId,
|
|
213
|
+
reason: "capacity"
|
|
214
|
+
});
|
|
215
|
+
const client = getClient();
|
|
216
|
+
const rlScope = sessionScopeFilter(null);
|
|
217
|
+
const openTasks = await client.execute({
|
|
218
|
+
sql: `SELECT id, title, priority, task_file, status
|
|
219
|
+
FROM tasks
|
|
220
|
+
WHERE assigned_to = ? AND status IN ('open', 'in_progress')${rlScope.sql}
|
|
221
|
+
ORDER BY
|
|
222
|
+
CASE priority WHEN 'p0' THEN 0 WHEN 'p1' THEN 1 WHEN 'p2' THEN 2 ELSE 3 END,
|
|
223
|
+
created_at ASC
|
|
224
|
+
LIMIT 10`,
|
|
225
|
+
args: [agentId, ...rlScope.args]
|
|
226
|
+
});
|
|
227
|
+
if (openTasks.rows.length === 0) {
|
|
228
|
+
process.stderr.write(
|
|
229
|
+
`[capacity-monitor] ${agentId} has no open tasks \u2014 skipping relaunch.
|
|
230
|
+
`
|
|
231
|
+
);
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
const { created } = await createOrRefreshResumeTask(
|
|
235
|
+
agentId,
|
|
236
|
+
projectDir,
|
|
237
|
+
openTasks.rows
|
|
238
|
+
);
|
|
239
|
+
if (created) {
|
|
240
|
+
await writeNotification({
|
|
241
|
+
agentId: "system",
|
|
242
|
+
agentRole: "daemon",
|
|
243
|
+
event: "capacity_relaunch",
|
|
244
|
+
project: projectDir.split("/").pop() ?? "unknown",
|
|
245
|
+
summary: `${agentId} hit context capacity. Auto-relaunched with ${openTasks.rows.length} open task(s).`
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
_lastRelaunch.set(agentId, Date.now());
|
|
249
|
+
if (created) relaunched.push(agentId);
|
|
250
|
+
} catch (err) {
|
|
251
|
+
process.stderr.write(
|
|
252
|
+
`[capacity-monitor] Failed to relaunch ${agentId}: ${err instanceof Error ? err.message : String(err)}
|
|
253
|
+
`
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return relaunched;
|
|
258
|
+
}
|
|
259
|
+
var CAPACITY_PATTERNS, CONTENT_LINE_PREFIX, CONTENT_LINE_MARKERS, SOURCE_CODE_MARKERS, RELAUNCH_COOLDOWN_MS, _lastRelaunch, RESUME_TITLE_PREFIX, RESUME_TITLE_LIKE_PATTERN, RESUME_ACTIVE_STATUSES, CONFIRMATION_WINDOW_MS, _pendingCapacityKill, CC_CONTEXT_BAR_RE, CTX_FLOOR_PERCENT;
|
|
260
|
+
var init_capacity_monitor = __esm({
|
|
261
|
+
"src/lib/capacity-monitor.ts"() {
|
|
262
|
+
init_session_registry();
|
|
263
|
+
init_transport();
|
|
264
|
+
init_notifications();
|
|
265
|
+
init_database();
|
|
266
|
+
init_session_kill_telemetry();
|
|
267
|
+
init_tmux_routing();
|
|
268
|
+
init_task_scope();
|
|
269
|
+
init_employees();
|
|
270
|
+
CAPACITY_PATTERNS = [
|
|
271
|
+
/conversation is too long/i,
|
|
272
|
+
/maximum context length/i,
|
|
273
|
+
/context window.*(?:limit|exceed|full)/i,
|
|
274
|
+
/reached.*(?:token|context).*limit/i
|
|
275
|
+
];
|
|
276
|
+
CONTENT_LINE_PREFIX = /^[\s>#\-*[]/;
|
|
277
|
+
CONTENT_LINE_MARKERS = [
|
|
278
|
+
"RESUME:",
|
|
279
|
+
"intercom",
|
|
280
|
+
"capacity-monitor",
|
|
281
|
+
"CAPACITY_PATTERNS",
|
|
282
|
+
"isAtCapacity",
|
|
283
|
+
"CONTENT_LINE_MARKERS",
|
|
284
|
+
"pollCapacityDead",
|
|
285
|
+
"confirmCapacityKill",
|
|
286
|
+
"session_kills",
|
|
287
|
+
"capacity-monitor.test"
|
|
288
|
+
];
|
|
289
|
+
SOURCE_CODE_MARKERS = [
|
|
290
|
+
/["'`/].*(?:maximum context length|conversation is too long)/i,
|
|
291
|
+
/(?:maximum context length|conversation is too long).*["'`/]/i
|
|
292
|
+
];
|
|
293
|
+
RELAUNCH_COOLDOWN_MS = 5 * 60 * 1e3;
|
|
294
|
+
_lastRelaunch = /* @__PURE__ */ new Map();
|
|
295
|
+
RESUME_TITLE_PREFIX = "RESUME:";
|
|
296
|
+
RESUME_TITLE_LIKE_PATTERN = `${RESUME_TITLE_PREFIX} % hit context capacity%`;
|
|
297
|
+
RESUME_ACTIVE_STATUSES = ["open", "in_progress"];
|
|
298
|
+
CONFIRMATION_WINDOW_MS = 3 * 60 * 1e3;
|
|
299
|
+
_pendingCapacityKill = /* @__PURE__ */ new Map();
|
|
300
|
+
CC_CONTEXT_BAR_RE = /([\u2588\u2591\u2592\u2593]{10})\s+(\d+)%/;
|
|
301
|
+
CTX_FLOOR_PERCENT = 50;
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
export {
|
|
306
|
+
CTX_FLOOR_PERCENT,
|
|
307
|
+
extractContextPercent,
|
|
308
|
+
isAtCapacity,
|
|
309
|
+
confirmCapacityKill,
|
|
310
|
+
_resetPendingCapacityKills,
|
|
311
|
+
_resetLastRelaunchCache,
|
|
312
|
+
isWithinRelaunchCooldown,
|
|
313
|
+
createOrRefreshResumeTask,
|
|
314
|
+
pollCapacityDead,
|
|
315
|
+
init_capacity_monitor
|
|
316
|
+
};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkPermission
|
|
3
|
+
} from "./chunk-PRKVT4KN.js";
|
|
4
|
+
|
|
5
|
+
// src/runtime/zod-to-schema.ts
|
|
6
|
+
function zodToJsonSchema(schema) {
|
|
7
|
+
if ("toJSONSchema" in schema && typeof schema.toJSONSchema === "function") {
|
|
8
|
+
return schema.toJSONSchema();
|
|
9
|
+
}
|
|
10
|
+
const def = schema._def;
|
|
11
|
+
if (!def) {
|
|
12
|
+
return { type: "object", properties: {} };
|
|
13
|
+
}
|
|
14
|
+
return extractSchema(def);
|
|
15
|
+
}
|
|
16
|
+
function extractSchema(def) {
|
|
17
|
+
const typeName = def.typeName;
|
|
18
|
+
switch (typeName) {
|
|
19
|
+
case "ZodObject": {
|
|
20
|
+
const shape = def.shape;
|
|
21
|
+
const properties = {};
|
|
22
|
+
const required = [];
|
|
23
|
+
if (shape) {
|
|
24
|
+
const resolved = typeof shape === "function" ? shape() : shape;
|
|
25
|
+
for (const [key, value] of Object.entries(resolved)) {
|
|
26
|
+
const fieldDef = value._def ?? value;
|
|
27
|
+
const isOptional = fieldDef.typeName === "ZodOptional";
|
|
28
|
+
if (isOptional) {
|
|
29
|
+
properties[key] = extractSchema(
|
|
30
|
+
fieldDef.innerType?._def ?? {}
|
|
31
|
+
);
|
|
32
|
+
} else {
|
|
33
|
+
properties[key] = extractSchema(fieldDef);
|
|
34
|
+
required.push(key);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const result = { type: "object", properties };
|
|
39
|
+
if (required.length > 0) result.required = required;
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
case "ZodString":
|
|
43
|
+
return { type: "string", ...def.description ? { description: String(def.description) } : {} };
|
|
44
|
+
case "ZodNumber":
|
|
45
|
+
return { type: "number", ...def.description ? { description: String(def.description) } : {} };
|
|
46
|
+
case "ZodBoolean":
|
|
47
|
+
return { type: "boolean", ...def.description ? { description: String(def.description) } : {} };
|
|
48
|
+
case "ZodArray":
|
|
49
|
+
return {
|
|
50
|
+
type: "array",
|
|
51
|
+
items: extractSchema(
|
|
52
|
+
def.type?._def ?? {}
|
|
53
|
+
)
|
|
54
|
+
};
|
|
55
|
+
case "ZodEnum":
|
|
56
|
+
return { type: "string", enum: def.values };
|
|
57
|
+
case "ZodOptional":
|
|
58
|
+
return extractSchema(
|
|
59
|
+
def.innerType?._def ?? {}
|
|
60
|
+
);
|
|
61
|
+
case "ZodDefault":
|
|
62
|
+
return extractSchema(
|
|
63
|
+
def.innerType?._def ?? {}
|
|
64
|
+
);
|
|
65
|
+
default:
|
|
66
|
+
return { type: "string" };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// src/runtime/tool-registry.ts
|
|
71
|
+
var ToolRegistry = class {
|
|
72
|
+
tools = /* @__PURE__ */ new Map();
|
|
73
|
+
/** Register a tool */
|
|
74
|
+
register(tool) {
|
|
75
|
+
this.tools.set(tool.name, tool);
|
|
76
|
+
}
|
|
77
|
+
/** Look up a tool by name */
|
|
78
|
+
get(name) {
|
|
79
|
+
return this.tools.get(name);
|
|
80
|
+
}
|
|
81
|
+
/** List all registered tools */
|
|
82
|
+
list() {
|
|
83
|
+
return [...this.tools.values()];
|
|
84
|
+
}
|
|
85
|
+
/** List tool names */
|
|
86
|
+
names() {
|
|
87
|
+
return [...this.tools.keys()];
|
|
88
|
+
}
|
|
89
|
+
/** Convert all tools to LLM-ready NormalizedTool format */
|
|
90
|
+
toNormalizedTools() {
|
|
91
|
+
return this.list().map((tool) => ({
|
|
92
|
+
name: tool.name,
|
|
93
|
+
description: tool.description,
|
|
94
|
+
inputSchema: zodToJsonSchema(tool.inputSchema)
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
/** Get only tools allowed by the given permission set */
|
|
98
|
+
listAllowed(permissions) {
|
|
99
|
+
return this.list().filter(
|
|
100
|
+
(tool) => checkPermission(tool.name, permissions).allowed
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
/** Convert allowed tools to NormalizedTool format */
|
|
104
|
+
toAllowedNormalizedTools(permissions) {
|
|
105
|
+
return this.listAllowed(permissions).map((tool) => ({
|
|
106
|
+
name: tool.name,
|
|
107
|
+
description: tool.description,
|
|
108
|
+
inputSchema: zodToJsonSchema(tool.inputSchema)
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
function partitionTools(blocks, registry) {
|
|
113
|
+
const concurrent = [];
|
|
114
|
+
const sequential = [];
|
|
115
|
+
let hitWrite = false;
|
|
116
|
+
for (const block of blocks) {
|
|
117
|
+
if (block.type !== "tool_use") continue;
|
|
118
|
+
const tool = registry.get(block.name);
|
|
119
|
+
if (!hitWrite && tool?.isReadOnly) {
|
|
120
|
+
concurrent.push(block);
|
|
121
|
+
} else {
|
|
122
|
+
hitWrite = true;
|
|
123
|
+
sequential.push(block);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return { concurrent, sequential };
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
zodToJsonSchema,
|
|
131
|
+
ToolRegistry,
|
|
132
|
+
partitionTools
|
|
133
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__esm
|
|
3
|
+
} from "./chunk-KFQGP6VL.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/runtime-table.ts
|
|
6
|
+
var RUNTIME_TABLE, DEFAULT_RUNTIME;
|
|
7
|
+
var init_runtime_table = __esm({
|
|
8
|
+
"src/lib/runtime-table.ts"() {
|
|
9
|
+
RUNTIME_TABLE = {
|
|
10
|
+
codex: {
|
|
11
|
+
binary: "codex",
|
|
12
|
+
launchMode: "interactive",
|
|
13
|
+
autoApproveFlag: "--dangerously-bypass-approvals-and-sandbox",
|
|
14
|
+
inlineFlag: "--no-alt-screen",
|
|
15
|
+
apiKeyEnv: "OPENAI_API_KEY",
|
|
16
|
+
defaultModel: "gpt-5.5"
|
|
17
|
+
},
|
|
18
|
+
opencode: {
|
|
19
|
+
binary: "opencode",
|
|
20
|
+
launchMode: "exec",
|
|
21
|
+
autoApproveFlag: "--dangerously-skip-permissions",
|
|
22
|
+
inlineFlag: "",
|
|
23
|
+
apiKeyEnv: "ANTHROPIC_API_KEY",
|
|
24
|
+
defaultModel: "anthropic/claude-sonnet-4-6"
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
DEFAULT_RUNTIME = "claude";
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
RUNTIME_TABLE,
|
|
33
|
+
DEFAULT_RUNTIME,
|
|
34
|
+
init_runtime_table
|
|
35
|
+
};
|