@symerian/symi 2.3.4 → 2.4.1
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/{accounts-tNElYrCH.js → accounts-CI6zQTJj.js} +14 -14
- package/dist/{accounts-qtxJ-6em.js → accounts-CJR8j_Kq.js} +1 -1
- package/dist/{accounts-CWktKM8a.js → accounts-ChTFYj8Q.js} +1 -1
- package/dist/{active-listener-C9r8ZB9m.js → active-listener-D6sXIjAg.js} +1 -1
- package/dist/{agent-scope-BxoUQqgM.js → agent-scope-Bw1Ed8W9.js} +3 -3
- package/dist/{agents-E_Ere0qU.js → agents-BrpbYYTb.js} +4 -4
- package/dist/{agents.config-Cv_wsBXL.js → agents.config-Bf8u_0ts.js} +1 -1
- package/dist/{agents.config-DJTb7Jka.js → agents.config-j4SWyB6K.js} +1 -1
- package/dist/{audio-preflight-O3ASWbaG.js → audio-preflight-BkIfnmpi.js} +29 -29
- package/dist/{auth-choice-B3D_jLQw.js → auth-choice-BYB9fJiu.js} +1 -1
- package/dist/{auth-choice-D8ynWABO.js → auth-choice-DlrjQI-v.js} +1 -1
- package/dist/{banner-ChYzCy5p.js → banner-DRJJmkv1.js} +1 -1
- package/dist/{bindings-B7Ke6LJi.js → bindings-BU2hsBd9.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +53 -53
- package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
- package/dist/bundled/command-logger/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +53 -53
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-CsM_hJ_s.js → channel-activity-C9-gaquj.js} +1 -1
- package/dist/{channel-options-BYUiEgev.js → channel-options-BQz0F4El.js} +1 -1
- package/dist/{channel-options-CMNzHg4p.js → channel-options-CxSIp3x-.js} +1 -1
- package/dist/{channel-web-C-HLPbLL.js → channel-web-BY4lhNxW.js} +1 -1
- package/dist/{channels-cli-CyhXPEWq.js → channels-cli--rkhLJvR.js} +4 -4
- package/dist/{channels-cli-CcCmH-Tp.js → channels-cli-B5Nj_nHr.js} +4 -4
- package/dist/{chrome-BFekevcE.js → chrome-CxSAp8x3.js} +20 -20
- package/dist/{chunk-BW5f05BR.js → chunk-ClbN9Pqy.js} +1 -1
- package/dist/{cli-Cp-NQ7yu.js → cli-CATf6JAq.js} +1 -1
- package/dist/{cli-Gcuf3NTF.js → cli-Ds6poYQ6.js} +1 -1
- package/dist/{command-format-BaxDnULz.js → command-format-UKHV-j0K.js} +1 -1
- package/dist/{command-registry-Cvr_dlLY.js → command-registry-DXt0PsFy.js} +9 -9
- package/dist/{commands-registry-D7CTCQPm.js → commands-registry-VSmULp-g.js} +4 -4
- package/dist/{completion-cli-DaOHSXM3.js → completion-cli-BsSDzZNA.js} +1 -1
- package/dist/{completion-cli-DDlYn0ya.js → completion-cli-CPMOXTf2.js} +2 -2
- package/dist/{config-cli-CmUPAVUz.js → config-cli-B_KCvdli.js} +1 -1
- package/dist/{config-cli-BcuAsDOu.js → config-cli-C_GarUko.js} +1 -1
- package/dist/{config-DRbjHIwD.js → config-eEaJddXj.js} +12 -12
- package/dist/{configure-Ctwt1377.js → configure-CM-z8YCS.js} +3 -3
- package/dist/{configure-OxYdT2hU.js → configure-vfmJApU8.js} +3 -3
- package/dist/{deliver-CvCK5Mm9.js → deliver-BA7ZN3iM.js} +20 -20
- package/dist/{diagnostic-CI0kRQkt.js → diagnostic-C3nsWaw3.js} +1 -1
- package/dist/{doctor-completion-D7ShsgUp.js → doctor-completion-8qbLmeX0.js} +1 -1
- package/dist/{doctor-completion-Dw78bQaQ.js → doctor-completion-Dnxn_-ov.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{frontmatter-C_bv_0P8.js → frontmatter-DPlG6yha.js} +2 -2
- package/dist/{gateway-cli-D7nxPtEc.js → gateway-cli-DKDpOBp-.js} +9 -9
- package/dist/{gateway-cli-Bd7u0krH.js → gateway-cli-XIsXoJZ3.js} +9 -9
- package/dist/{gemini-auth-CdSPHuLl.js → gemini-auth-CF48hUR9.js} +1 -1
- package/dist/{github-copilot-token-C_qUP7p5.js → github-copilot-token-DJqsJ2-r.js} +7 -7
- package/dist/{glass-ui-ws-CzH0ikhI.js → glass-ui-ws-Be_AOhp7.js} +7 -7
- package/dist/{glass-ui-ws-DBivjzVA.js → glass-ui-ws-Z_wtGa_A.js} +7 -7
- package/dist/{health-rR61mwm3.js → health-BBGgp_dC.js} +1 -1
- package/dist/{health-BSOMI4B6.js → health-BmaWws9G.js} +1 -1
- package/dist/{hooks-cli-dS4fMEKE.js → hooks-cli-C5eV9sxP.js} +2 -2
- package/dist/{hooks-cli-BbiA-gGi.js → hooks-cli-W_aoP9nb.js} +2 -2
- package/dist/{image-B0wGflxA.js → image-BGmVDkkw.js} +4 -4
- package/dist/{image-ops-CvJzsyvE.js → image-ops-S8-8dAhx.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/{ir-DccrnjsE.js → ir-CbFUkv_T.js} +4 -4
- package/dist/llm-slug-generator.js +53 -53
- package/dist/{local-roots-DMwIh5cS.js → local-roots-C7OCYACU.js} +5 -5
- package/dist/{login-CwCoxapk.js → login-B8uiUAnV.js} +7 -7
- package/dist/{login-qr-Batf3PT5.js → login-qr-CIZk8uKX.js} +12 -12
- package/dist/{manager-D_LwXbc6.js → manager-BoLr3xR_.js} +13 -13
- package/dist/{manifest-registry-D0IQ3WuX.js → manifest-registry-CneMHk0N.js} +19 -19
- package/dist/{markdown-tables-iMQQZu4Q.js → markdown-tables-DSHvnTLx.js} +1 -1
- package/dist/{message-channel-Dz5lr5b0.js → message-channel-DbsRltF2.js} +1 -1
- package/dist/{model-auth-DK43VicI.js → model-auth-CwOuTuXl.js} +9 -9
- package/dist/{models-DqE1s0YL.js → models-COaQWNz5.js} +2 -2
- package/dist/{models-cli-6v9jkDxp.js → models-cli-DH17yK8M.js} +3 -3
- package/dist/{models-cli-BWC7jYp4.js → models-cli-DeG1qheS.js} +2 -2
- package/dist/{onboard-Bxoibs4p.js → onboard-CXOUIg28.js} +2 -2
- package/dist/{onboard-BUEYf2m9.js → onboard-DBeHwdks.js} +2 -2
- package/dist/{onboard-channels-C3UYzZNC.js → onboard-channels-BCUkNB26.js} +1 -1
- package/dist/{onboard-channels-af6Cu6fT.js → onboard-channels-D93AAHMd.js} +1 -1
- package/dist/{onboarding-DW-7o6Ln.js → onboarding-C58wjONa.js} +3 -3
- package/dist/{onboarding-CDdMZbov.js → onboarding-Dfjn2-9q.js} +3 -3
- package/dist/{onboarding.finalize-29jsMLO2.js → onboarding.finalize-7r1HYXWd.js} +6 -6
- package/dist/{onboarding.finalize-BI70KOeI.js → onboarding.finalize-DGD56sXW.js} +5 -5
- package/dist/{outbound-attachment-DjNDa3zn.js → outbound-attachment-Co2diKdP.js} +2 -2
- package/dist/{outbound-D4fN_ZlE.js → outbound-opDNxv-l.js} +7 -7
- package/dist/{paths-DLyHUt31.js → paths-Cb87-LzP.js} +1 -1
- package/dist/{paths-Cce4PUkG.js → paths-CySxpNhH.js} +5 -5
- package/dist/{pi-auth-json-0SYBFZTt.js → pi-auth-json-DPWPoruO.js} +8 -8
- package/dist/{pi-embedded-PkSwAmVq.js → pi-embedded-B6uRrG1f.js} +355 -328
- package/dist/{pi-embedded-JXvD5-F-.js → pi-embedded-CAJ6egA1.js} +195 -168
- package/dist/{pi-embedded-helpers-DLFjnVBb.js → pi-embedded-helpers-DEEaCvEp.js} +52 -52
- package/dist/{plugin-registry-Reem6P3K.js → plugin-registry-C0iHnZ7j.js} +1 -1
- package/dist/{plugin-registry-B7AdPXfF.js → plugin-registry-D_BAH1V5.js} +1 -1
- package/dist/plugin-sdk/agents/model-aware-stream.d.ts +41 -0
- package/dist/plugin-sdk/agents/pi-embedded-runner/extra-params.d.ts +19 -0
- package/dist/plugin-sdk/agents/stream-monitor.d.ts +62 -0
- package/dist/plugin-sdk/{channel-web-CM7A3Y7G.js → channel-web-ilY3YUmF.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-CDloTGFF.js → reply-CSgeVqcV.js} +195 -168
- package/dist/plugin-sdk/{web-CWNoMlnF.js → web-BVg5EjiY.js} +2 -2
- package/dist/{plugins-DQYI3Fr-.js → plugins-C4C9637U.js} +9 -9
- package/dist/{plugins-cli-V8mTTTnD.js → plugins-cli-BhOXY_Ay.js} +2 -2
- package/dist/{plugins-cli-B-6wVg3A.js → plugins-cli-LqQNHF1I.js} +2 -2
- package/dist/{program-DBtlRiFS.js → program-CutjuJj0.js} +7 -7
- package/dist/{program-context-BHPNVgg2.js → program-context-qVc_lsLV.js} +17 -17
- package/dist/{prompt-select-styled-Bh-zAqW1.js → prompt-select-styled-BCHe7Fks.js} +4 -4
- package/dist/{prompt-select-styled-Cup1c9RJ.js → prompt-select-styled-C0yn8YjW.js} +4 -4
- package/dist/{provider-auth-helpers-CiuLdUK3.js → provider-auth-helpers-BzczCfh8.js} +1 -1
- package/dist/{provider-auth-helpers-BNmU48Ez.js → provider-auth-helpers-Ds_HwlgY.js} +1 -1
- package/dist/{push-apns-9zUNNHgy.js → push-apns-CT8-VcK5.js} +1 -1
- package/dist/{push-apns-8VJkVSdh.js → push-apns-DvcqkHld.js} +1 -1
- package/dist/{pw-ai-BnAKvSuw.js → pw-ai-DhwRiS06.js} +11 -11
- package/dist/{qmd-manager-QHUP-_em.js → qmd-manager-DdZh9PHs.js} +7 -7
- package/dist/{register.agent-BtNmleKV.js → register.agent-DMvHFw16.js} +6 -6
- package/dist/{register.agent-DnglG42G.js → register.agent-yoXoJ_5O.js} +5 -5
- package/dist/{register.configure-CLW9tdE4.js → register.configure-B8UDTEcS.js} +6 -6
- package/dist/{register.configure-DfQOfV1W.js → register.configure-BqrNBkwZ.js} +6 -6
- package/dist/{register.maintenance-jFYcRLEN.js → register.maintenance-D1MuIUlv.js} +7 -7
- package/dist/{register.maintenance-BQfMsgo7.js → register.maintenance-DMLPFSKI.js} +8 -8
- package/dist/{register.message-DUsBvFSF.js → register.message-BnLBwUw9.js} +2 -2
- package/dist/{register.message-BhoZYcqM.js → register.message-CgtrjEFw.js} +2 -2
- package/dist/{register.onboard-BBwhoeoE.js → register.onboard-CXHhSH4B.js} +4 -4
- package/dist/{register.onboard-DQOkpYBY.js → register.onboard-D1X2dUGZ.js} +4 -4
- package/dist/{register.setup-Ca6khTSz.js → register.setup-DFDb5BDi.js} +4 -4
- package/dist/{register.setup-6jlL3L1h.js → register.setup-Q58lN0TV.js} +4 -4
- package/dist/{register.status-health-sessions-DQDXZYI3.js → register.status-health-sessions-CP7JWQHw.js} +3 -3
- package/dist/{register.status-health-sessions-DsYNMl06.js → register.status-health-sessions-DhTfQ530.js} +3 -3
- package/dist/{register.subclis-DJf3ihsW.js → register.subclis-CrTXa8cj.js} +9 -9
- package/dist/{registry-CK4e9hn8.js → registry-DP24za6g.js} +17 -17
- package/dist/{replies-BIX_isV7.js → replies-DpPvWiGF.js} +3 -3
- package/dist/{reply-DSjeqLEz.js → reply-DkwaBRX-.js} +195 -168
- package/dist/{reply-prefix-XlyuyChD.js → reply-prefix-CtL0omgM.js} +1 -1
- package/dist/{resolve-route-CZ-1eqw0.js → resolve-route-BVikmvWO.js} +4 -4
- package/dist/{retry-Cly39XZB.js → retry-dGG-MbxL.js} +1 -1
- package/dist/{run-main-B2coomPj.js → run-main-BLKPL_vM.js} +14 -14
- package/dist/{runner-odEv83vv.js → runner-B_KP4voe.js} +9 -9
- package/dist/{send-DeFniOjh.js → send-CHEOWVc8.js} +6 -6
- package/dist/{send-WyRqb4WD.js → send-DbcLJb0P.js} +7 -7
- package/dist/{send-B1u-LrcS.js → send-DeEosX8F.js} +18 -18
- package/dist/{send-CiTGOvEc.js → send-DwKJK3sM.js} +10 -10
- package/dist/{send-DW96zgDL.js → send-zSarozV2.js} +6 -6
- package/dist/{server-methods-QNBQbsvr.js → server-methods-CbeCo-6O.js} +7 -7
- package/dist/{server-methods-DHo5e8Gj.js → server-methods-EQ0JkHOg.js} +7 -7
- package/dist/{server-node-events-D_S0NRCQ.js → server-node-events-C1FDqJb9.js} +2 -2
- package/dist/{server-node-events-CJOo8WcL.js → server-node-events-CBHpc_25.js} +2 -2
- package/dist/{session-SM36BTsl.js → session-DV1MNlbV.js} +8 -8
- package/dist/{skill-commands-BJMb_psG.js → skill-commands-D610IKhm.js} +9 -9
- package/dist/{skills-BFekKL7i.js → skills-o5WVqM4V.js} +21 -21
- package/dist/{sqlite-DRbx2dhW.js → sqlite-6H6Zw1cs.js} +4 -4
- package/dist/{status-B8yaGk2o.js → status-B1r3Wp0-.js} +2 -2
- package/dist/{status-D_J6qcC1.js → status-Cksz7z4T.js} +1 -1
- package/dist/{status-4DaGE8j5.js → status-CnogoaI_.js} +2 -2
- package/dist/{status-kfEtYX22.js → status-jVJSC_Ga.js} +1 -1
- package/dist/{store-C0wvOkae.js → store-vVE6N2mH.js} +2 -2
- package/dist/{subagent-registry-CyW0EDWw.js → subagent-registry-Jwg44JMf.js} +195 -168
- package/dist/{subsystem-Bs9YvKLa.js → subsystem-DgpxyDQ_.js} +1 -1
- package/dist/{tables-DuZspiBu.js → tables-BIWsCKXJ.js} +1 -1
- package/dist/{target-errors-Be1SwYlW.js → target-errors-DyItGyW9.js} +2 -2
- package/dist/{thinking-CdlENGRW.js → thinking-Ni0HF-w6.js} +5 -5
- package/dist/{tokens-H1H1LiSQ.js → tokens-c_SLAkVb.js} +1 -1
- package/dist/{tool-images-DXB7tqWi.js → tool-images-DBCfXdli.js} +2 -2
- package/dist/{tool-loop-detection-Cs8_HCsx.js → tool-loop-detection-Bbc9OPFR.js} +3 -3
- package/dist/{update-cli-C-ZGqknl.js → update-cli-BkU6ori8.js} +8 -8
- package/dist/{update-cli-DJupxo-f.js → update-cli-D18nWvzY.js} +7 -7
- package/dist/{update-runner-AiIhp7fw.js → update-runner-BQg__DB5.js} +1 -1
- package/dist/{update-runner-BF5UULe-.js → update-runner-le1Hcqx4.js} +1 -1
- package/dist/{web-HeObJp6A.js → web-BSs2eYJa.js} +2 -2
- package/dist/{web-6vYYN17n.js → web-BsjZ2RTT.js} +57 -57
- package/dist/{web-6026eRzJ.js → web-DajtZMaX.js} +1 -1
- package/dist/{web-CryqKXT4.js → web-KYh3LgI0.js} +1 -1
- package/dist/{whatsapp-actions-D1RsnX7P.js → whatsapp-actions-oRQjcdQe.js} +23 -23
- package/dist/{workspace-wAaHI8-5.js → workspace-CbvamIU6.js} +6 -6
- package/package.json +1 -1
|
@@ -27119,7 +27119,7 @@ async function runWithImageModelFallback(params) {
|
|
|
27119
27119
|
function createDefaultDeps() {
|
|
27120
27120
|
return {
|
|
27121
27121
|
sendMessageWhatsApp: async (...args) => {
|
|
27122
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
27122
|
+
const { sendMessageWhatsApp } = await import("./web-BVg5EjiY.js");
|
|
27123
27123
|
return await sendMessageWhatsApp(...args);
|
|
27124
27124
|
},
|
|
27125
27125
|
sendMessageTelegram: async (...args) => {
|
|
@@ -44745,7 +44745,7 @@ function loadWebLoginQr() {
|
|
|
44745
44745
|
return webLoginQrPromise;
|
|
44746
44746
|
}
|
|
44747
44747
|
function loadWebChannel() {
|
|
44748
|
-
webChannelPromise ??= import("./web-
|
|
44748
|
+
webChannelPromise ??= import("./web-BVg5EjiY.js");
|
|
44749
44749
|
return webChannelPromise;
|
|
44750
44750
|
}
|
|
44751
44751
|
function loadWhatsAppActions() {
|
|
@@ -64447,10 +64447,6 @@ function resolveModelProfile(modelId, userProfiles) {
|
|
|
64447
64447
|
|
|
64448
64448
|
//#endregion
|
|
64449
64449
|
//#region src/agents/pi-embedded-runner/extra-params.ts
|
|
64450
|
-
const OPENROUTER_APP_HEADERS = {
|
|
64451
|
-
"HTTP-Referer": "https://symi.ai",
|
|
64452
|
-
"X-Title": "Symi"
|
|
64453
|
-
};
|
|
64454
64450
|
const ANTHROPIC_CONTEXT_1M_BETA = "context-1m-2025-08-07";
|
|
64455
64451
|
const ANTHROPIC_1M_MODEL_PREFIXES = ["claude-opus-4", "claude-sonnet-4"];
|
|
64456
64452
|
const OPENAI_RESPONSES_APIS = new Set(["openai-responses"]);
|
|
@@ -64468,70 +64464,6 @@ function resolveExtraParams(params) {
|
|
|
64468
64464
|
const profile = resolveModelProfile(modelKey, params.cfg?.models?.profiles);
|
|
64469
64465
|
if (profile.params && Object.keys(profile.params).length > 0) return { ...profile.params };
|
|
64470
64466
|
}
|
|
64471
|
-
/**
|
|
64472
|
-
* Resolve cacheRetention from extraParams, supporting both new `cacheRetention`
|
|
64473
|
-
* and legacy `cacheControlTtl` values for backwards compatibility.
|
|
64474
|
-
*
|
|
64475
|
-
* Mapping: "5m" → "short", "1h" → "long"
|
|
64476
|
-
*
|
|
64477
|
-
* Only applies to Anthropic provider (OpenRouter uses openai-completions API
|
|
64478
|
-
* with hardcoded cache_control, not the cacheRetention stream option).
|
|
64479
|
-
*
|
|
64480
|
-
* Defaults to "short" for Anthropic provider when not explicitly configured.
|
|
64481
|
-
*/
|
|
64482
|
-
function resolveCacheRetention(extraParams, provider) {
|
|
64483
|
-
if (provider !== "anthropic") return;
|
|
64484
|
-
const newVal = extraParams?.cacheRetention;
|
|
64485
|
-
if (newVal === "none" || newVal === "short" || newVal === "long") return newVal;
|
|
64486
|
-
const legacy = extraParams?.cacheControlTtl;
|
|
64487
|
-
if (legacy === "5m") return "short";
|
|
64488
|
-
if (legacy === "1h") return "long";
|
|
64489
|
-
return "short";
|
|
64490
|
-
}
|
|
64491
|
-
function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
|
|
64492
|
-
if (!extraParams || Object.keys(extraParams).length === 0) return;
|
|
64493
|
-
const streamParams = {};
|
|
64494
|
-
if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
|
|
64495
|
-
if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
|
|
64496
|
-
if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
|
|
64497
|
-
if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
|
|
64498
|
-
if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
|
|
64499
|
-
if (Array.isArray(extraParams.stop) && extraParams.stop.length > 0) streamParams.stop = extraParams.stop;
|
|
64500
|
-
if (extraParams.chat_template_kwargs && typeof extraParams.chat_template_kwargs === "object") streamParams.chat_template_kwargs = extraParams.chat_template_kwargs;
|
|
64501
|
-
const cacheRetention = resolveCacheRetention(extraParams, provider);
|
|
64502
|
-
if (cacheRetention) streamParams.cacheRetention = cacheRetention;
|
|
64503
|
-
if (Object.keys(streamParams).length === 0) return;
|
|
64504
|
-
log$2.debug(`creating streamFn wrapper with params: ${JSON.stringify(streamParams)}`);
|
|
64505
|
-
const sp = streamParams;
|
|
64506
|
-
const payloadOverrides = {};
|
|
64507
|
-
if (Array.isArray(sp.stop) && sp.stop.length > 0) payloadOverrides.stop = sp.stop;
|
|
64508
|
-
if (typeof sp.top_p === "number") payloadOverrides.top_p = sp.top_p;
|
|
64509
|
-
if (typeof sp.top_k === "number") payloadOverrides.top_k = sp.top_k;
|
|
64510
|
-
if (typeof sp.repeat_penalty === "number") payloadOverrides.repeat_penalty = sp.repeat_penalty;
|
|
64511
|
-
const hasPayloadOverrides = Object.keys(payloadOverrides).length > 0;
|
|
64512
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
64513
|
-
const wrappedStreamFn = (model, context, options) => {
|
|
64514
|
-
if (hasPayloadOverrides) {
|
|
64515
|
-
const originalOnPayload = options?.onPayload;
|
|
64516
|
-
return underlying(model, context, {
|
|
64517
|
-
...streamParams,
|
|
64518
|
-
...options,
|
|
64519
|
-
onPayload: (payload) => {
|
|
64520
|
-
if (payload && typeof payload === "object") {
|
|
64521
|
-
const p = payload;
|
|
64522
|
-
for (const [key, value] of Object.entries(payloadOverrides)) if (p[key] === void 0) p[key] = value;
|
|
64523
|
-
}
|
|
64524
|
-
originalOnPayload?.(payload);
|
|
64525
|
-
}
|
|
64526
|
-
});
|
|
64527
|
-
}
|
|
64528
|
-
return underlying(model, context, {
|
|
64529
|
-
...streamParams,
|
|
64530
|
-
...options
|
|
64531
|
-
});
|
|
64532
|
-
};
|
|
64533
|
-
return wrappedStreamFn;
|
|
64534
|
-
}
|
|
64535
64467
|
function isDirectOpenAIBaseUrl(baseUrl) {
|
|
64536
64468
|
if (typeof baseUrl !== "string" || !baseUrl.trim()) return true;
|
|
64537
64469
|
try {
|
|
@@ -64612,20 +64544,6 @@ function createAnthropicBetaHeadersWrapper(baseStreamFn, betas) {
|
|
|
64612
64544
|
};
|
|
64613
64545
|
}
|
|
64614
64546
|
/**
|
|
64615
|
-
* Create a streamFn wrapper that adds OpenRouter app attribution headers.
|
|
64616
|
-
* These headers allow Symi to appear on OpenRouter's leaderboard.
|
|
64617
|
-
*/
|
|
64618
|
-
function createOpenRouterHeadersWrapper(baseStreamFn) {
|
|
64619
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
64620
|
-
return (model, context, options) => underlying(model, context, {
|
|
64621
|
-
...options,
|
|
64622
|
-
headers: {
|
|
64623
|
-
...OPENROUTER_APP_HEADERS,
|
|
64624
|
-
...options?.headers
|
|
64625
|
-
}
|
|
64626
|
-
});
|
|
64627
|
-
}
|
|
64628
|
-
/**
|
|
64629
64547
|
* Create a streamFn wrapper that injects tool_stream=true for Z.AI providers.
|
|
64630
64548
|
*
|
|
64631
64549
|
* Z.AI's API supports the `tool_stream` parameter to enable real-time streaming
|
|
@@ -64648,82 +64566,6 @@ function createZaiToolStreamWrapper(baseStreamFn, enabled) {
|
|
|
64648
64566
|
});
|
|
64649
64567
|
};
|
|
64650
64568
|
}
|
|
64651
|
-
const GEMMA_STOP_SEQUENCES = ["<end_of_turn>", "<eos>"];
|
|
64652
|
-
const VLLM_GEMMA_HINTS = ["gemma", "redsand"];
|
|
64653
|
-
function isVllmOrGemmaProvider(provider, modelId, cfg) {
|
|
64654
|
-
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
64655
|
-
if (VLLM_GEMMA_HINTS.some((h) => lower.includes(h))) return true;
|
|
64656
|
-
const baseUrl = ((cfg?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
64657
|
-
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
64658
|
-
}
|
|
64659
|
-
/**
|
|
64660
|
-
* Wrap the stream function to fix vLLM/Gemma compat issues via onPayload:
|
|
64661
|
-
* 1. Replace `max_completion_tokens` with `max_tokens` (vLLM ignores the former)
|
|
64662
|
-
* 2. Inject Gemma stop sequences if none are set
|
|
64663
|
-
* 3. Remove unsupported fields (store, stream_options.include_usage on older vLLM)
|
|
64664
|
-
*/
|
|
64665
|
-
function createVllmCompatWrapper(baseStreamFn, extraParams) {
|
|
64666
|
-
const underlying = baseStreamFn ?? streamSimple;
|
|
64667
|
-
const configuredStop = Array.isArray(extraParams.stop) ? extraParams.stop : GEMMA_STOP_SEQUENCES;
|
|
64668
|
-
return (model, context, options) => {
|
|
64669
|
-
const originalOnPayload = options?.onPayload;
|
|
64670
|
-
return underlying(model, context, {
|
|
64671
|
-
...options,
|
|
64672
|
-
onPayload: (payload) => {
|
|
64673
|
-
if (payload && typeof payload === "object") {
|
|
64674
|
-
const p = payload;
|
|
64675
|
-
if (p.max_completion_tokens && !p.max_tokens) {
|
|
64676
|
-
p.max_tokens = p.max_completion_tokens;
|
|
64677
|
-
delete p.max_completion_tokens;
|
|
64678
|
-
}
|
|
64679
|
-
if (!p.stop && configuredStop.length > 0) p.stop = configuredStop;
|
|
64680
|
-
delete p.store;
|
|
64681
|
-
}
|
|
64682
|
-
originalOnPayload?.(payload);
|
|
64683
|
-
}
|
|
64684
|
-
});
|
|
64685
|
-
};
|
|
64686
|
-
}
|
|
64687
|
-
/**
|
|
64688
|
-
* Apply extra params (like temperature) to an agent's streamFn.
|
|
64689
|
-
* Also adds OpenRouter app attribution headers when using the OpenRouter provider.
|
|
64690
|
-
*
|
|
64691
|
-
* @internal Exported for testing
|
|
64692
|
-
*/
|
|
64693
|
-
function applyExtraParamsToAgent(agent, cfg, provider, modelId, extraParamsOverride) {
|
|
64694
|
-
const extraParams = resolveExtraParams({
|
|
64695
|
-
cfg,
|
|
64696
|
-
provider,
|
|
64697
|
-
modelId
|
|
64698
|
-
});
|
|
64699
|
-
const override = extraParamsOverride && Object.keys(extraParamsOverride).length > 0 ? Object.fromEntries(Object.entries(extraParamsOverride).filter(([, value]) => value !== void 0)) : void 0;
|
|
64700
|
-
const merged = Object.assign({}, extraParams, override);
|
|
64701
|
-
const wrappedStreamFn = createStreamFnWithExtraParams(agent.streamFn, merged, provider);
|
|
64702
|
-
if (wrappedStreamFn) {
|
|
64703
|
-
log$2.debug(`applying extraParams to agent streamFn for ${provider}/${modelId}`);
|
|
64704
|
-
agent.streamFn = wrappedStreamFn;
|
|
64705
|
-
}
|
|
64706
|
-
const anthropicBetas = resolveAnthropicBetas(merged, provider, modelId);
|
|
64707
|
-
if (anthropicBetas?.length) {
|
|
64708
|
-
log$2.debug(`applying Anthropic beta header for ${provider}/${modelId}: ${anthropicBetas.join(",")}`);
|
|
64709
|
-
agent.streamFn = createAnthropicBetaHeadersWrapper(agent.streamFn, anthropicBetas);
|
|
64710
|
-
}
|
|
64711
|
-
if (provider === "openrouter") {
|
|
64712
|
-
log$2.debug(`applying OpenRouter app attribution headers for ${provider}/${modelId}`);
|
|
64713
|
-
agent.streamFn = createOpenRouterHeadersWrapper(agent.streamFn);
|
|
64714
|
-
}
|
|
64715
|
-
if (provider === "zai" || provider === "z-ai") {
|
|
64716
|
-
if (merged?.tool_stream !== false) {
|
|
64717
|
-
log$2.debug(`enabling Z.AI tool_stream for ${provider}/${modelId}`);
|
|
64718
|
-
agent.streamFn = createZaiToolStreamWrapper(agent.streamFn, true);
|
|
64719
|
-
}
|
|
64720
|
-
}
|
|
64721
|
-
if (isVllmOrGemmaProvider(provider, modelId, cfg)) {
|
|
64722
|
-
log$2.debug(`applying vLLM/Gemma compat wrapper for ${provider}/${modelId}`);
|
|
64723
|
-
agent.streamFn = createVllmCompatWrapper(agent.streamFn, merged);
|
|
64724
|
-
}
|
|
64725
|
-
agent.streamFn = createOpenAIResponsesStoreWrapper(agent.streamFn);
|
|
64726
|
-
}
|
|
64727
64569
|
|
|
64728
64570
|
//#endregion
|
|
64729
64571
|
//#region src/utils/safe-json.ts
|
|
@@ -65000,6 +64842,74 @@ function createCacheTrace(params) {
|
|
|
65000
64842
|
};
|
|
65001
64843
|
}
|
|
65002
64844
|
|
|
64845
|
+
//#endregion
|
|
64846
|
+
//#region src/agents/model-aware-stream.ts
|
|
64847
|
+
/**
|
|
64848
|
+
* Create a single stream function wrapper that handles all provider-specific
|
|
64849
|
+
* param injection via one onPayload hook.
|
|
64850
|
+
*
|
|
64851
|
+
* Replaces: createStreamFnWithExtraParams, createVllmCompatWrapper,
|
|
64852
|
+
* createOpenRouterHeadersWrapper.
|
|
64853
|
+
*/
|
|
64854
|
+
function createModelAwareStreamFn(opts) {
|
|
64855
|
+
const underlying = opts.baseStreamFn ?? streamSimple;
|
|
64856
|
+
const mergedParams = {
|
|
64857
|
+
...opts.profile.params,
|
|
64858
|
+
...opts.configExtraParams,
|
|
64859
|
+
...opts.streamParamsOverride
|
|
64860
|
+
};
|
|
64861
|
+
const nativeOpts = {};
|
|
64862
|
+
if (typeof mergedParams.temperature === "number") nativeOpts.temperature = mergedParams.temperature;
|
|
64863
|
+
if (typeof mergedParams.max_tokens === "number") nativeOpts.maxTokens = mergedParams.max_tokens;
|
|
64864
|
+
else if (typeof mergedParams.maxTokens === "number") nativeOpts.maxTokens = mergedParams.maxTokens;
|
|
64865
|
+
const injections = {};
|
|
64866
|
+
if (Array.isArray(mergedParams.stop) && mergedParams.stop.length > 0) injections.stop = mergedParams.stop;
|
|
64867
|
+
if (typeof mergedParams.top_p === "number") injections.top_p = mergedParams.top_p;
|
|
64868
|
+
if (typeof mergedParams.top_k === "number") injections.top_k = mergedParams.top_k;
|
|
64869
|
+
if (typeof mergedParams.repeat_penalty === "number") injections.repeat_penalty = mergedParams.repeat_penalty;
|
|
64870
|
+
const isVllm = isVllmProvider(opts.provider, opts.modelId, opts.config);
|
|
64871
|
+
const isOpenRouter = opts.provider === "openrouter";
|
|
64872
|
+
const extraHeaders = {};
|
|
64873
|
+
if (isOpenRouter) {
|
|
64874
|
+
extraHeaders["HTTP-Referer"] = "https://symi.ai";
|
|
64875
|
+
extraHeaders["X-Title"] = "Symi";
|
|
64876
|
+
}
|
|
64877
|
+
const hasExtraHeaders = Object.keys(extraHeaders).length > 0;
|
|
64878
|
+
const onPayloadHook = (payload, callerOnPayload) => {
|
|
64879
|
+
if (payload && typeof payload === "object") {
|
|
64880
|
+
const p = payload;
|
|
64881
|
+
for (const [key, val] of Object.entries(injections)) if (p[key] === void 0) p[key] = val;
|
|
64882
|
+
if (isVllm) {
|
|
64883
|
+
if (p.max_completion_tokens && !p.max_tokens) {
|
|
64884
|
+
p.max_tokens = p.max_completion_tokens;
|
|
64885
|
+
delete p.max_completion_tokens;
|
|
64886
|
+
}
|
|
64887
|
+
delete p.store;
|
|
64888
|
+
}
|
|
64889
|
+
}
|
|
64890
|
+
callerOnPayload?.(payload);
|
|
64891
|
+
};
|
|
64892
|
+
return (model, context, options) => {
|
|
64893
|
+
const callerOnPayload = options?.onPayload;
|
|
64894
|
+
return underlying(model, context, {
|
|
64895
|
+
...nativeOpts,
|
|
64896
|
+
...options,
|
|
64897
|
+
onPayload: (payload) => onPayloadHook(payload, callerOnPayload),
|
|
64898
|
+
...hasExtraHeaders ? { headers: {
|
|
64899
|
+
...extraHeaders,
|
|
64900
|
+
...options?.headers
|
|
64901
|
+
} } : {}
|
|
64902
|
+
});
|
|
64903
|
+
};
|
|
64904
|
+
}
|
|
64905
|
+
/** Detect vLLM/Gemma providers by model hints or baseUrl patterns. */
|
|
64906
|
+
function isVllmProvider(provider, modelId, config) {
|
|
64907
|
+
const lower = `${provider}/${modelId}`.toLowerCase();
|
|
64908
|
+
if (["gemma", "redsand"].some((h) => lower.includes(h))) return true;
|
|
64909
|
+
const baseUrl = ((config?.models?.providers?.[provider])?.baseUrl ?? "").toLowerCase();
|
|
64910
|
+
return baseUrl.includes("coreweave") || baseUrl.includes("vllm");
|
|
64911
|
+
}
|
|
64912
|
+
|
|
65003
64913
|
//#endregion
|
|
65004
64914
|
//#region src/auto-reply/reply/streaming-directives.ts
|
|
65005
64915
|
const splitTrailingDirective = (text) => {
|
|
@@ -66983,6 +66893,89 @@ Use the message tool with buttons:
|
|
|
66983
66893
|
[{"label": "✅ Proceed", "data": "/plan-proceed"}, {"label": "✏️ Modify", "data": "/plan-modify"}, {"label": "❌ Cancel", "data": "/plan-cancel"}]
|
|
66984
66894
|
</plan_mode>`;
|
|
66985
66895
|
|
|
66896
|
+
//#endregion
|
|
66897
|
+
//#region src/agents/stream-monitor.ts
|
|
66898
|
+
/**
|
|
66899
|
+
* Create a stream monitor configured for the given model profile.
|
|
66900
|
+
*
|
|
66901
|
+
* - Claude (hasStructuredThinking: true): repetition detection only
|
|
66902
|
+
* - Gemma/vLLM (hasStructuredThinking: false): tool JSON + repetition detection
|
|
66903
|
+
*/
|
|
66904
|
+
function createStreamMonitor(profile, overrides) {
|
|
66905
|
+
const detectToolJson = overrides?.detectToolJson ?? !profile.filters.hasStructuredThinking;
|
|
66906
|
+
const detectRepetition = overrides?.detectRepetition ?? true;
|
|
66907
|
+
const minBlockSize = overrides?.repetitionMinBlockSize ?? 150;
|
|
66908
|
+
let accumulated = "";
|
|
66909
|
+
let stopSignaled = false;
|
|
66910
|
+
let stopReason;
|
|
66911
|
+
return {
|
|
66912
|
+
onChunk(delta) {
|
|
66913
|
+
if (stopSignaled) return;
|
|
66914
|
+
accumulated += delta;
|
|
66915
|
+
if (detectToolJson && hasCompleteToolJson(accumulated)) {
|
|
66916
|
+
stopSignaled = true;
|
|
66917
|
+
stopReason = "complete-tool-json";
|
|
66918
|
+
return;
|
|
66919
|
+
}
|
|
66920
|
+
if (detectRepetition && hasRepetition(accumulated, minBlockSize)) {
|
|
66921
|
+
stopSignaled = true;
|
|
66922
|
+
stopReason = "repetition-detected";
|
|
66923
|
+
return;
|
|
66924
|
+
}
|
|
66925
|
+
},
|
|
66926
|
+
shouldStop: () => stopSignaled,
|
|
66927
|
+
getAccumulated: () => accumulated,
|
|
66928
|
+
getStopReason: () => stopReason,
|
|
66929
|
+
reset() {
|
|
66930
|
+
accumulated = "";
|
|
66931
|
+
stopSignaled = false;
|
|
66932
|
+
stopReason = void 0;
|
|
66933
|
+
}
|
|
66934
|
+
};
|
|
66935
|
+
}
|
|
66936
|
+
/**
|
|
66937
|
+
* Detect if the accumulated text contains a syntactically complete JSON
|
|
66938
|
+
* object with tool_name and tool_args. Used for models that output tool
|
|
66939
|
+
* calls as plain text JSON (not native structured tool calls).
|
|
66940
|
+
*/
|
|
66941
|
+
function hasCompleteToolJson(text) {
|
|
66942
|
+
const hasToolKey = text.includes("tool_name") || text.includes("\"tool\"");
|
|
66943
|
+
const hasArgsKey = text.includes("tool_args") || text.includes("\"args\"");
|
|
66944
|
+
if (!hasToolKey || !hasArgsKey) return false;
|
|
66945
|
+
const lastBrace = text.lastIndexOf("}");
|
|
66946
|
+
if (lastBrace < 0) return false;
|
|
66947
|
+
let depth = 0;
|
|
66948
|
+
let start = -1;
|
|
66949
|
+
for (let i = lastBrace; i >= 0; i--) {
|
|
66950
|
+
if (text[i] === "}") depth++;
|
|
66951
|
+
if (text[i] === "{") depth--;
|
|
66952
|
+
if (depth === 0) {
|
|
66953
|
+
start = i;
|
|
66954
|
+
break;
|
|
66955
|
+
}
|
|
66956
|
+
}
|
|
66957
|
+
if (start < 0) return false;
|
|
66958
|
+
const candidate = text.slice(start, lastBrace + 1);
|
|
66959
|
+
try {
|
|
66960
|
+
const parsed = JSON.parse(candidate);
|
|
66961
|
+
return typeof parsed === "object" && parsed !== null && (typeof parsed.tool_name === "string" || typeof parsed.tool === "string") && (typeof parsed.tool_args === "object" || typeof parsed.args === "object");
|
|
66962
|
+
} catch {
|
|
66963
|
+
return false;
|
|
66964
|
+
}
|
|
66965
|
+
}
|
|
66966
|
+
/**
|
|
66967
|
+
* Detect if the accumulated text contains a repeated block, indicating
|
|
66968
|
+
* a looping cascade. Returns true if a block of `minBlockSize` chars
|
|
66969
|
+
* from the first half appears again in the second half.
|
|
66970
|
+
*/
|
|
66971
|
+
function hasRepetition(text, minBlockSize) {
|
|
66972
|
+
if (text.length < minBlockSize * 2.5) return false;
|
|
66973
|
+
const sampleStart = Math.floor(text.length * .25);
|
|
66974
|
+
const sample = text.slice(sampleStart, sampleStart + minBlockSize);
|
|
66975
|
+
const searchStart = sampleStart + minBlockSize;
|
|
66976
|
+
return text.indexOf(sample, searchStart) >= 0;
|
|
66977
|
+
}
|
|
66978
|
+
|
|
66986
66979
|
//#endregion
|
|
66987
66980
|
//#region src/agents/symipulse-timeout.ts
|
|
66988
66981
|
/**
|
|
@@ -68047,14 +68040,39 @@ async function runEmbeddedAttempt(params) {
|
|
|
68047
68040
|
modelApi: params.model.api,
|
|
68048
68041
|
workspaceDir: params.workspaceDir
|
|
68049
68042
|
});
|
|
68050
|
-
|
|
68051
|
-
|
|
68052
|
-
|
|
68053
|
-
|
|
68054
|
-
|
|
68055
|
-
|
|
68056
|
-
|
|
68057
|
-
|
|
68043
|
+
{
|
|
68044
|
+
let baseStreamFn = streamSimple;
|
|
68045
|
+
if (params.model.api === "ollama") {
|
|
68046
|
+
const providerConfig = params.config?.models?.providers?.[params.model.provider];
|
|
68047
|
+
const modelBaseUrl = typeof params.model.baseUrl === "string" ? params.model.baseUrl.trim() : "";
|
|
68048
|
+
const providerBaseUrl = typeof providerConfig?.baseUrl === "string" ? providerConfig.baseUrl.trim() : "";
|
|
68049
|
+
baseStreamFn = createOllamaStreamFn(modelBaseUrl || providerBaseUrl || OLLAMA_NATIVE_BASE_URL);
|
|
68050
|
+
}
|
|
68051
|
+
const configExtraParams = resolveExtraParams({
|
|
68052
|
+
cfg: params.config,
|
|
68053
|
+
provider: params.provider,
|
|
68054
|
+
modelId: params.modelId
|
|
68055
|
+
});
|
|
68056
|
+
activeSession.agent.streamFn = createModelAwareStreamFn({
|
|
68057
|
+
baseStreamFn,
|
|
68058
|
+
profile: modelProfile,
|
|
68059
|
+
provider: params.provider,
|
|
68060
|
+
modelId: params.modelId,
|
|
68061
|
+
config: params.config,
|
|
68062
|
+
configExtraParams,
|
|
68063
|
+
streamParamsOverride: params.streamParams
|
|
68064
|
+
});
|
|
68065
|
+
const merged = {
|
|
68066
|
+
...configExtraParams,
|
|
68067
|
+
...params.streamParams
|
|
68068
|
+
};
|
|
68069
|
+
const anthropicBetas = resolveAnthropicBetas(merged, params.provider, params.modelId);
|
|
68070
|
+
if (anthropicBetas?.length) activeSession.agent.streamFn = createAnthropicBetaHeadersWrapper(activeSession.agent.streamFn, anthropicBetas);
|
|
68071
|
+
if (params.provider === "zai" || params.provider === "z-ai") {
|
|
68072
|
+
if (merged?.tool_stream !== false) activeSession.agent.streamFn = createZaiToolStreamWrapper(activeSession.agent.streamFn, true);
|
|
68073
|
+
}
|
|
68074
|
+
activeSession.agent.streamFn = createOpenAIResponsesStoreWrapper(activeSession.agent.streamFn);
|
|
68075
|
+
}
|
|
68058
68076
|
if (cacheTrace) {
|
|
68059
68077
|
cacheTrace.recordStage("session:loaded", {
|
|
68060
68078
|
messages: activeSession.messages,
|
|
@@ -68172,6 +68190,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
68172
68190
|
return fn(...args);
|
|
68173
68191
|
});
|
|
68174
68192
|
};
|
|
68193
|
+
const streamMonitor = createStreamMonitor(modelProfile);
|
|
68175
68194
|
const subscription = subscribeEmbeddedPiSession({
|
|
68176
68195
|
session: activeSession,
|
|
68177
68196
|
runId: params.runId,
|
|
@@ -68193,6 +68212,14 @@ async function runEmbeddedAttempt(params) {
|
|
|
68193
68212
|
onAgentEvent: (evt) => {
|
|
68194
68213
|
armSymipulseTimer();
|
|
68195
68214
|
params.onAgentEvent?.(evt);
|
|
68215
|
+
if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
|
|
68216
|
+
streamMonitor.onChunk(evt.data.text);
|
|
68217
|
+
if (streamMonitor.shouldStop()) {
|
|
68218
|
+
const reason = streamMonitor.getStopReason();
|
|
68219
|
+
log$2.warn(`stream monitor triggered abort: runId=${params.runId} reason=${reason}`);
|
|
68220
|
+
abortRun(false, /* @__PURE__ */ new Error(`stream-monitor:${reason}`));
|
|
68221
|
+
}
|
|
68222
|
+
}
|
|
68196
68223
|
},
|
|
68197
68224
|
enforceFinalTag: params.enforceFinalTag,
|
|
68198
68225
|
config: params.config,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-D9zGZU5t.js";
|
|
2
|
-
import "./reply-
|
|
2
|
+
import "./reply-CSgeVqcV.js";
|
|
3
3
|
import "./paths-DR2yt_mP.js";
|
|
4
4
|
import "./github-copilot-token-D9X2phUj.js";
|
|
5
5
|
import "./plugins-BbAvhC25.js";
|
|
@@ -45,7 +45,7 @@ import "./pi-embedded-helpers-BveUP4hk.js";
|
|
|
45
45
|
import "./paths-A0xdf3yk.js";
|
|
46
46
|
import "./diagnostic-mFf4i4G9.js";
|
|
47
47
|
import "./store-Do3t33-c.js";
|
|
48
|
-
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-
|
|
48
|
+
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-ilY3YUmF.js";
|
|
49
49
|
import "./image-BOYy0Ump.js";
|
|
50
50
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
51
51
|
import "./api-key-rotation-CVBMpnPc.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
|
|
2
|
-
import { M as normalizeE164, a as normalizeAnyChannelId, l as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry-
|
|
3
|
-
import { m as createAccountListHelpers } from "./accounts-
|
|
2
|
+
import { M as normalizeE164, a as normalizeAnyChannelId, l as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry-DP24za6g.js";
|
|
3
|
+
import { m as createAccountListHelpers } from "./accounts-CI6zQTJj.js";
|
|
4
4
|
import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
|
|
5
|
-
import { r as isTruthyEnvValue } from "./command-format-
|
|
6
|
-
import { n as listBoundAccountIds, r as resolveDefaultAgentBoundAccountId } from "./bindings-
|
|
7
|
-
import
|
|
5
|
+
import { r as isTruthyEnvValue } from "./command-format-UKHV-j0K.js";
|
|
6
|
+
import { n as listBoundAccountIds, r as resolveDefaultAgentBoundAccountId } from "./bindings-BU2hsBd9.js";
|
|
7
|
+
import fsSync from "node:fs";
|
|
8
8
|
|
|
9
9
|
//#region src/channels/plugins/account-action-gate.ts
|
|
10
10
|
function createAccountActionGate(params) {
|
|
@@ -186,7 +186,7 @@ function resolveTelegramToken(cfg, opts = {}) {
|
|
|
186
186
|
const accountCfg = resolveAccountCfg(accountId !== DEFAULT_ACCOUNT_ID ? accountId : DEFAULT_ACCOUNT_ID);
|
|
187
187
|
const accountTokenFile = accountCfg?.tokenFile?.trim();
|
|
188
188
|
if (accountTokenFile) {
|
|
189
|
-
if (!
|
|
189
|
+
if (!fsSync.existsSync(accountTokenFile)) {
|
|
190
190
|
opts.logMissingFile?.(`channels.telegram.accounts.${accountId}.tokenFile not found: ${accountTokenFile}`);
|
|
191
191
|
return {
|
|
192
192
|
token: "",
|
|
@@ -194,7 +194,7 @@ function resolveTelegramToken(cfg, opts = {}) {
|
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
196
|
try {
|
|
197
|
-
const token =
|
|
197
|
+
const token = fsSync.readFileSync(accountTokenFile, "utf-8").trim();
|
|
198
198
|
if (token) return {
|
|
199
199
|
token,
|
|
200
200
|
source: "tokenFile"
|
|
@@ -219,7 +219,7 @@ function resolveTelegramToken(cfg, opts = {}) {
|
|
|
219
219
|
const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
|
|
220
220
|
const tokenFile = telegramCfg?.tokenFile?.trim();
|
|
221
221
|
if (tokenFile && allowEnv) {
|
|
222
|
-
if (!
|
|
222
|
+
if (!fsSync.existsSync(tokenFile)) {
|
|
223
223
|
opts.logMissingFile?.(`channels.telegram.tokenFile not found: ${tokenFile}`);
|
|
224
224
|
return {
|
|
225
225
|
token: "",
|
|
@@ -227,7 +227,7 @@ function resolveTelegramToken(cfg, opts = {}) {
|
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
229
|
try {
|
|
230
|
-
const token =
|
|
230
|
+
const token = fsSync.readFileSync(tokenFile, "utf-8").trim();
|
|
231
231
|
if (token) return {
|
|
232
232
|
token,
|
|
233
233
|
source: "tokenFile"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-DkwaBRX-.js";
|
|
5
5
|
import "./registry-Cja8eT7G.js";
|
|
6
6
|
import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
|
|
7
7
|
import "./exec-CWkblSrI.js";
|
|
@@ -106,7 +106,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
|
|
|
106
106
|
import "./skill-scanner-CLs8u6vQ.js";
|
|
107
107
|
import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-C1Cebk97.js";
|
|
108
108
|
import { t as renderTable } from "./table-BTgkRafz.js";
|
|
109
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
109
|
+
import { t as buildPluginStatusReport } from "./status-jVJSC_Ga.js";
|
|
110
110
|
import { n as updateNpmInstalledPlugins } from "./update-rw7wJwHd.js";
|
|
111
111
|
import fs from "node:fs";
|
|
112
112
|
import os from "node:os";
|
|
@@ -13,7 +13,7 @@ import "./client-DMBZpU6X.js";
|
|
|
13
13
|
import "./call-BcE47FtD.js";
|
|
14
14
|
import "./message-channel-C9dERklz.js";
|
|
15
15
|
import "./pairing-token-Byh6drgn.js";
|
|
16
|
-
import "./subagent-registry-
|
|
16
|
+
import "./subagent-registry-Jwg44JMf.js";
|
|
17
17
|
import "./sessions-CJXnZVjR.js";
|
|
18
18
|
import "./tokens-Csntmwwn.js";
|
|
19
19
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -102,7 +102,7 @@ import "./npm-registry-spec-DkaZNHAW.js";
|
|
|
102
102
|
import "./skill-scanner-BGWOBqLY.js";
|
|
103
103
|
import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-CgQpVncj.js";
|
|
104
104
|
import { t as renderTable } from "./table-D01d2GuY.js";
|
|
105
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
105
|
+
import { t as buildPluginStatusReport } from "./status-Cksz7z4T.js";
|
|
106
106
|
import { n as updateNpmInstalledPlugins } from "./update-DEMKx4eC.js";
|
|
107
107
|
import os from "node:os";
|
|
108
108
|
import path from "node:path";
|
|
@@ -14,7 +14,7 @@ import "./client-DMBZpU6X.js";
|
|
|
14
14
|
import "./call-BcE47FtD.js";
|
|
15
15
|
import "./message-channel-C9dERklz.js";
|
|
16
16
|
import "./pairing-token-Byh6drgn.js";
|
|
17
|
-
import "./subagent-registry-
|
|
17
|
+
import "./subagent-registry-Jwg44JMf.js";
|
|
18
18
|
import "./sessions-CJXnZVjR.js";
|
|
19
19
|
import "./tokens-Csntmwwn.js";
|
|
20
20
|
import "./plugins-CwSlLxM8.js";
|
|
@@ -99,13 +99,13 @@ import "./prompt-style-DwCXob2h.js";
|
|
|
99
99
|
import "./pairing-labels-D1HDboV2.js";
|
|
100
100
|
import "./pi-tools.policy-De00gPXt.js";
|
|
101
101
|
import "./catalog-DLQFKucJ.js";
|
|
102
|
-
import "./plugin-registry-
|
|
103
|
-
import { n as resolveCliChannelOptions } from "./channel-options-
|
|
104
|
-
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-
|
|
105
|
-
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-
|
|
102
|
+
import "./plugin-registry-D_BAH1V5.js";
|
|
103
|
+
import { n as resolveCliChannelOptions } from "./channel-options-CxSIp3x-.js";
|
|
104
|
+
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-CrTXa8cj.js";
|
|
105
|
+
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-DXt0PsFy.js";
|
|
106
106
|
import { r as setProgramContext } from "./program-context-CqzR_m-7.js";
|
|
107
107
|
import { t as forceFreePort } from "./ports-Dn122MUd.js";
|
|
108
|
-
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-
|
|
108
|
+
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-DRJJmkv1.js";
|
|
109
109
|
import { Command } from "commander";
|
|
110
110
|
|
|
111
111
|
//#region src/cli/program/context.ts
|
|
@@ -213,7 +213,7 @@ function registerPreActionHooks(program, programVersion) {
|
|
|
213
213
|
commandPath
|
|
214
214
|
});
|
|
215
215
|
if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
|
|
216
|
-
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-
|
|
216
|
+
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-D_BAH1V5.js").then((n) => n.n);
|
|
217
217
|
ensurePluginRegistryLoaded();
|
|
218
218
|
}
|
|
219
219
|
});
|