squidclaw 3.0.32 → 3.0.34
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-BFS_qklA.js → accounts-CB2Or0mr.js} +2 -2
- package/dist/{accounts-DfrJiFJJ.js → accounts-Cop2dSRo.js} +2 -2
- package/dist/{accounts-pMDX8iho.js → accounts-CqITV0Ga.js} +4 -4
- package/dist/{active-listener-CH2vJ3EZ.js → active-listener-B6G6kmsb.js} +2 -2
- package/dist/{api-key-rotation-DCBXT0v7.js → api-key-rotation-Da2qYrP7.js} +2 -2
- package/dist/{audio-preflight-B5XvcdFX.js → audio-preflight-yiMsGLW7.js} +30 -30
- package/dist/{audio-transcription-runner-DUC0ItDY.js → audio-transcription-runner-Mha07yP4.js} +12 -12
- package/dist/{audit-membership-runtime-czdecfjJ.js → audit-membership-runtime-By9-qSwl.js} +3 -3
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +49 -49
- package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
- package/dist/bundled/command-logger/handler.js +1 -1
- package/dist/bundled/session-memory/HOOK.md +2 -1
- package/dist/bundled/session-memory/handler.js +190 -55
- package/dist/{channel-activity-7QMEKenc.js → channel-activity-Du1kh0t3.js} +3 -3
- package/dist/{chrome-BTwG9Gvh.js → chrome-C2CliEWR.js} +15 -15
- package/dist/{commands-registry-BIi1tG__.js → commands-registry-6jWzz0mk.js} +4 -4
- package/dist/{deliver-DZCNXFM8.js → deliver-Ddw3EsOV.js} +11 -11
- package/dist/deliver-runtime-CF9aNwHW.js +36 -0
- package/dist/deps-send-discord.runtime-BdlL7AnG.js +26 -0
- package/dist/deps-send-imessage.runtime-BQx5JSa_.js +25 -0
- package/dist/deps-send-signal.runtime-dgrmoRN9.js +24 -0
- package/dist/deps-send-slack.runtime-CCOjVEQr.js +22 -0
- package/dist/deps-send-telegram.runtime-BgwTF5zt.js +27 -0
- package/dist/deps-send-whatsapp.runtime-C_zE7G9V.js +60 -0
- package/dist/{deps-send-whatsapp.runtime-rPF4BAeN.js → deps-send-whatsapp.runtime-DhuS0SeA.js} +2 -2
- package/dist/{diagnostic-4Dbmo6KU.js → diagnostic-B74jJPqv.js} +2 -2
- package/dist/{errors-Dih7OXdL.js → errors-CCLnP2Fs.js} +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{fetch-COEkF6YP.js → fetch-OMudX6HR.js} +4 -4
- package/dist/{fetch-guard-CcP28UT1.js → fetch-guard-DBZ7o2IA.js} +2 -2
- package/dist/{frontmatter-LLGh43CC.js → frontmatter-vSrur-r-.js} +3 -3
- package/dist/{fs-safe-NHJJ1b9f.js → fs-safe-Dy2_iDiY.js} +3 -3
- package/dist/{image-COAbpp2B.js → image-CdfqhHaX.js} +6 -6
- package/dist/{image-ops-QLLBkxzG.js → image-ops-BQmWYj-1.js} +2 -2
- package/dist/image-runtime-BFxy3jl0.js +29 -0
- package/dist/{ir-RKRKj5a9.js → ir-DEPhOdwg.js} +8 -8
- package/dist/{legacy-names-CR_H5NWa.js → legacy-names-CDxprteD.js} +1 -1
- package/dist/llm-slug-generator.js +49 -49
- package/dist/{logger-D20iS3B-.js → logger-onBePS9K.js} +1 -1
- package/dist/{login-C1_lumKW.js → login-BPzRFY6S.js} +5 -5
- package/dist/{login-qr-D0Gij2UC.js → login-qr-BZbSxC-5.js} +8 -8
- package/dist/{manager-B_QaG_-L.js → manager-D3ROcs7_.js} +9 -9
- package/dist/manager-runtime-Dup90ARI.js +18 -0
- package/dist/{model-selection-Bjj4oU16.js → model-selection-Bh4BR1_K.js} +10 -10
- package/dist/{outbound-ChkqJkiM.js → outbound-BApjXYwN.js} +6 -6
- package/dist/{outbound-attachment-CRXa01xP.js → outbound-attachment-1Yd0-JW2.js} +2 -2
- package/dist/{path-alias-guards-DgNuZPBA.js → path-alias-guards-B63g_1Gb.js} +1 -1
- package/dist/{paths-7EEBmI5a.js → paths-BJWEyNJy.js} +1 -1
- package/dist/{pi-embedded-BoY_A7hg.js → pi-embedded-BPU69pec.js} +50 -50
- package/dist/{pi-embedded-CLTN3qXD.js → pi-embedded-Cajbf_ri.js} +131 -131
- package/dist/{pi-embedded-helpers-1Z1aUoto.js → pi-embedded-helpers-xpgo_nwz.js} +19 -19
- package/dist/{pi-model-discovery-DSuyTtRM.js → pi-model-discovery-BbCPyLm5.js} +1 -1
- package/dist/pi-model-discovery-runtime-BeF5ldX8.js +11 -0
- package/dist/{pi-tools.before-tool-call.runtime-BCq4EKHD.js → pi-tools.before-tool-call.runtime-s89v8h6G.js} +7 -7
- package/dist/plugin-sdk/accounts-BXFDqY90.js +288 -0
- package/dist/plugin-sdk/accounts-DU7Js54-.js +46 -0
- package/dist/plugin-sdk/accounts-DxiB_4z4.js +35 -0
- package/dist/plugin-sdk/active-listener-DRKcesNb.js +50 -0
- package/dist/plugin-sdk/api-key-rotation-k1ZNheUH.js +181 -0
- package/dist/plugin-sdk/audio-preflight-Be1sKsob.js +69 -0
- package/dist/plugin-sdk/audio-transcription-runner-jhHyCc_7.js +2176 -0
- package/dist/plugin-sdk/audit-membership-runtime-B9b-zRwg.js +58 -0
- package/dist/plugin-sdk/channel-activity-Bq1Y9RiB.js +94 -0
- package/dist/plugin-sdk/channel-web-AsdjtnvN.js +2256 -0
- package/dist/plugin-sdk/chrome-DOnBMnlx.js +2415 -0
- package/dist/plugin-sdk/commands-registry-D0py59pz.js +1125 -0
- package/dist/plugin-sdk/config-B16xKqSo.js +17912 -0
- package/dist/plugin-sdk/deliver-BqXXtIuw.js +1694 -0
- package/dist/plugin-sdk/deliver-runtime-D0xZkt8n.js +32 -0
- package/dist/plugin-sdk/deps-send-discord.runtime-BM6ppx2Q.js +23 -0
- package/dist/plugin-sdk/deps-send-imessage.runtime-3w5PhXGu.js +22 -0
- package/dist/plugin-sdk/deps-send-signal.runtime-yH9cQl3_.js +21 -0
- package/dist/plugin-sdk/deps-send-slack.runtime-Bh4gw-L5.js +19 -0
- package/dist/plugin-sdk/deps-send-telegram.runtime-C_CtsWgt.js +24 -0
- package/dist/plugin-sdk/deps-send-whatsapp.runtime-BF4vx9Ho.js +57 -0
- package/dist/plugin-sdk/diagnostic-DUbajFSl.js +319 -0
- package/dist/plugin-sdk/errors-B8oJXuCF.js +54 -0
- package/dist/plugin-sdk/fetch-guard-Cgyq6Jv9.js +156 -0
- package/dist/plugin-sdk/fs-safe-BW1ypSDS.js +352 -0
- package/dist/plugin-sdk/image-BPXnvxYL.js +2310 -0
- package/dist/plugin-sdk/image-ops-BBY2fn9x.js +584 -0
- package/dist/plugin-sdk/image-runtime-S-TzaJpg.js +25 -0
- package/dist/plugin-sdk/imessage.js +2 -2
- package/dist/plugin-sdk/index.js +50 -50
- package/dist/plugin-sdk/ir-BJsqyZfm.js +1296 -0
- package/dist/plugin-sdk/local-roots-C1ETRlaC.js +186 -0
- package/dist/plugin-sdk/logger-DDdrdbDu.js +1163 -0
- package/dist/plugin-sdk/login-DtS9DDnV.js +57 -0
- package/dist/plugin-sdk/login-qr-B9YeeJ37.js +320 -0
- package/dist/plugin-sdk/manager-Dn7j3n0d.js +3917 -0
- package/dist/plugin-sdk/manager-runtime-UK1-iA2B.js +15 -0
- package/dist/plugin-sdk/mattermost.js +3 -3
- package/dist/plugin-sdk/outbound-B8ca8vE3.js +212 -0
- package/dist/plugin-sdk/outbound-attachment-BppFIMQa.js +19 -0
- package/dist/plugin-sdk/path-alias-guards-BX-3FprC.js +43 -0
- package/dist/plugin-sdk/paths-CjFcHB_C.js +166 -0
- package/dist/plugin-sdk/pi-embedded-helpers-BeYjP1MW.js +9627 -0
- package/dist/plugin-sdk/pi-model-discovery-B_qCKuSW.js +134 -0
- package/dist/plugin-sdk/pi-model-discovery-runtime-CZNiNFlm.js +8 -0
- package/dist/plugin-sdk/pi-tools.before-tool-call.runtime-cZdrrV27.js +354 -0
- package/dist/plugin-sdk/plugins-rivB8KaQ.js +864 -0
- package/dist/{proxy-fetch-ChIxNDe3.js → plugin-sdk/proxy-fetch-ZPEvp58f.js} +1 -1
- package/dist/plugin-sdk/pw-ai-qaWZD0yx.js +1938 -0
- package/dist/plugin-sdk/qmd-manager-izn0N9V3.js +1448 -0
- package/dist/plugin-sdk/query-expansion-C1Nx0XAb.js +1011 -0
- package/dist/{redact-BSwbgwaV.js → plugin-sdk/redact-BoNEjbpF.js} +1 -1
- package/dist/plugin-sdk/reply-DNSpho0-.js +98763 -0
- package/dist/plugin-sdk/resolve-outbound-target-YiPIGXVN.js +40 -0
- package/dist/plugin-sdk/run-with-concurrency-vfuRiXdY.js +2023 -0
- package/dist/plugin-sdk/runtime-whatsapp-login.runtime-BgwMJs4X.js +10 -0
- package/dist/plugin-sdk/runtime-whatsapp-outbound.runtime-Y7maoii7.js +19 -0
- package/dist/plugin-sdk/send-BSD6Pkrk.js +414 -0
- package/dist/plugin-sdk/send-C4KxEJe1.js +503 -0
- package/dist/plugin-sdk/send-D3XVKGvq.js +540 -0
- package/dist/plugin-sdk/send-DFrnRiWm.js +3135 -0
- package/dist/plugin-sdk/send-Dh1f5xjE.js +2587 -0
- package/dist/plugin-sdk/session-D5c0BIEo.js +169 -0
- package/dist/plugin-sdk/skill-commands-CnqkEfhS.js +342 -0
- package/dist/plugin-sdk/skills-DSbDUvmU.js +1428 -0
- package/dist/plugin-sdk/slack.js +2 -2
- package/dist/plugin-sdk/slash-commands.runtime-Dbtq7ppF.js +13 -0
- package/dist/plugin-sdk/slash-dispatch.runtime-BhAks953.js +52 -0
- package/dist/plugin-sdk/slash-skill-commands.runtime-QGNWVO9S.js +16 -0
- package/dist/plugin-sdk/ssrf-DvsjfpC2.js +202 -0
- package/dist/plugin-sdk/store-DG90hxe6.js +81 -0
- package/dist/plugin-sdk/subagent-registry-runtime-Db83OZ3_.js +52 -0
- package/dist/plugin-sdk/tables-DNlQ8oQ3.js +55 -0
- package/dist/{target-errors-BMTA5KVE.js → plugin-sdk/target-errors-BlVYPwVC.js} +2 -2
- package/dist/plugin-sdk/thinking-DT2ZR60x.js +1206 -0
- package/dist/{tokens-Cdk21tF_.js → plugin-sdk/tokens-CTIYTLWu.js} +1 -1
- package/dist/plugin-sdk/tool-images-DroS1EaM.js +274 -0
- package/dist/plugin-sdk/web-42d5VBZj.js +56 -0
- package/dist/plugin-sdk/whatsapp-actions-DR2aYq5f.js +80 -0
- package/dist/{plugins-D-K4oUXz.js → plugins-D8QbEQB8.js} +6 -6
- package/dist/{proxy-env-D9oPe73i.js → proxy-env-DS2YEWWX.js} +1 -1
- package/dist/proxy-fetch-08-dhqxn.js +38 -0
- package/dist/{pw-ai-4QFtj-s9.js → pw-ai-rD2G8OP-.js} +12 -12
- package/dist/{qmd-manager-CIcyVJmI.js → qmd-manager-B9vC7u4w.js} +9 -9
- package/dist/{query-expansion-BMExPdLO.js → query-expansion-o9Ib6_Rk.js} +4 -4
- package/dist/redact-rnJm_Z5E.js +319 -0
- package/dist/{run-with-concurrency-hJFK7PcO.js → run-with-concurrency-C3dKaL_j.js} +3 -3
- package/dist/runtime-whatsapp-login.runtime-BVm0A03Y.js +13 -0
- package/dist/runtime-whatsapp-outbound.runtime-d8oRCgsW.js +22 -0
- package/dist/{send-DySBiOxg.js → send-6s7HVGcN.js} +7 -7
- package/dist/{send-BMtxl7vL.js → send-BdQyKIzE.js} +5 -5
- package/dist/{send-DJcNRhf_.js → send-CAzswJK6.js} +8 -8
- package/dist/{send-CNzGOCHa.js → send-DKB7vlw3.js} +6 -6
- package/dist/{send-pUHxPU20.js → send-Q5SBsGfY.js} +14 -14
- package/dist/{session-DOFapRIv.js → session-D2CiV8TN.js} +4 -4
- package/dist/{skill-commands-yvTkQtnt.js → skill-commands-CgJiKg3Q.js} +5 -5
- package/dist/{skills-BjHeDO5V.js → skills-DNyMj13y.js} +7 -7
- package/dist/slash-commands.runtime-Cvnjq5gh.js +16 -0
- package/dist/{slash-dispatch.runtime-B79IzyjK.js → slash-dispatch.runtime-UHClfKIh.js} +1 -1
- package/dist/slash-dispatch.runtime-YGQtou1U.js +56 -0
- package/dist/slash-skill-commands.runtime-BbZPUdhN.js +20 -0
- package/dist/{store-C3iBzr-_.js → store-Bdm7wypS.js} +2 -2
- package/dist/{subagent-registry-runtime-CFbDYdKR.js → subagent-registry-runtime-BYDycq2m.js} +1 -1
- package/dist/subagent-registry-runtime-DoZWJdY9.js +56 -0
- package/dist/{subsystem-CWsKV5VU.js → subsystem-BJ89YjCN.js} +2 -2
- package/dist/{tables-Bv8tJ0qC.js → tables-MEAoO_QC.js} +1 -1
- package/dist/target-errors-qetEoXTB.js +195 -0
- package/dist/{thinking-BB_GM390.js → thinking-CaLooOu4.js} +7 -7
- package/dist/tokens-9NF8L9Uh.js +52 -0
- package/dist/{tool-images-HRwkh81U.js → tool-images-CkmNQqHm.js} +2 -2
- package/dist/{web-BUpcF84p.js → web-CGbFuIR9.js} +1 -1
- package/dist/{web-BbpOMti_.js → web-ajuJjPrA.js} +53 -53
- package/dist/{whatsapp-actions-CuLcPfQ9.js → whatsapp-actions-DuJpyhRe.js} +19 -19
- package/dist/{workspace-MO4aE903.js → workspace-CkozFUzc.js} +2 -2
- package/package.json +2 -2
- package/dist/deliver-runtime-BJoBkkm_.js +0 -36
- package/dist/deps-send-discord.runtime-Dlb1pOSn.js +0 -26
- package/dist/deps-send-imessage.runtime-DmVvqFTt.js +0 -25
- package/dist/deps-send-signal.runtime-DPX_GcJK.js +0 -24
- package/dist/deps-send-slack.runtime-s7wb1ssP.js +0 -22
- package/dist/deps-send-telegram.runtime-DcIT4v5p.js +0 -27
- package/dist/deps-send-whatsapp.runtime-DfAhniLS.js +0 -60
- package/dist/image-runtime-Dkwf1-U3.js +0 -29
- package/dist/manager-runtime-DPiPNTWB.js +0 -18
- package/dist/pi-model-discovery-runtime-CRif8A8F.js +0 -11
- package/dist/runtime-whatsapp-login.runtime-DTnmQLV1.js +0 -13
- package/dist/runtime-whatsapp-outbound.runtime-Da-07rzo.js +0 -22
- package/dist/slash-commands.runtime-FS9JZ9BW.js +0 -16
- package/dist/slash-dispatch.runtime-BZw5XlvY.js +0 -56
- package/dist/slash-skill-commands.runtime-BZIbPU6x.js +0 -20
- package/dist/subagent-registry-runtime-Blx4zbr0.js +0 -56
package/dist/plugin-sdk/slack.js
CHANGED
|
@@ -4,7 +4,7 @@ import chalk, { Chalk } from "chalk";
|
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import { Logger } from "tslog";
|
|
6
6
|
import os from "node:os";
|
|
7
|
-
import
|
|
7
|
+
import JSON5 from "json5";
|
|
8
8
|
import { promisify } from "node:util";
|
|
9
9
|
import fs$1 from "node:fs/promises";
|
|
10
10
|
import { execFile, spawn } from "node:child_process";
|
|
@@ -758,7 +758,7 @@ function readLoggingConfig() {
|
|
|
758
758
|
try {
|
|
759
759
|
if (!fs.existsSync(configPath)) return;
|
|
760
760
|
const raw = fs.readFileSync(configPath, "utf-8");
|
|
761
|
-
const logging =
|
|
761
|
+
const logging = JSON5.parse(raw)?.logging;
|
|
762
762
|
if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
|
|
763
763
|
return logging;
|
|
764
764
|
} catch {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "./run-with-concurrency-vfuRiXdY.js";
|
|
2
|
+
import "./accounts-BXFDqY90.js";
|
|
3
|
+
import "./paths-8xF5kDne.js";
|
|
4
|
+
import "./github-copilot-token-Dy-0-Kh3.js";
|
|
5
|
+
import "./config-B16xKqSo.js";
|
|
6
|
+
import "./logger-DDdrdbDu.js";
|
|
7
|
+
import "./thinking-DT2ZR60x.js";
|
|
8
|
+
import "./plugins-rivB8KaQ.js";
|
|
9
|
+
import "./accounts-DxiB_4z4.js";
|
|
10
|
+
import "./accounts-DU7Js54-.js";
|
|
11
|
+
import { f as resolveCommandArgMenu, n as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as parseCommandArgs } from "./commands-registry-D0py59pz.js";
|
|
12
|
+
|
|
13
|
+
export { buildCommandTextFromArgs, findCommandByNativeName, listNativeCommandSpecsForConfig, parseCommandArgs, resolveCommandArgMenu };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import "./run-with-concurrency-vfuRiXdY.js";
|
|
2
|
+
import "./accounts-BXFDqY90.js";
|
|
3
|
+
import { N as finalizeInboundContext, X as createReplyPrefixOptions, a as deliverSlackSlashReplies, m as dispatchReplyWithDispatcher, n as recordInboundSessionMetaSafe, v as resolveAgentRoute } from "./reply-DNSpho0-.js";
|
|
4
|
+
import "./paths-8xF5kDne.js";
|
|
5
|
+
import "./github-copilot-token-Dy-0-Kh3.js";
|
|
6
|
+
import "./config-B16xKqSo.js";
|
|
7
|
+
import "./logger-DDdrdbDu.js";
|
|
8
|
+
import "./thinking-DT2ZR60x.js";
|
|
9
|
+
import "./image-ops-BBY2fn9x.js";
|
|
10
|
+
import { rn as resolveConversationLabel } from "./pi-embedded-helpers-BeYjP1MW.js";
|
|
11
|
+
import "./plugins-rivB8KaQ.js";
|
|
12
|
+
import "./accounts-DxiB_4z4.js";
|
|
13
|
+
import "./accounts-DU7Js54-.js";
|
|
14
|
+
import "./send-DFrnRiWm.js";
|
|
15
|
+
import "./paths-CjFcHB_C.js";
|
|
16
|
+
import "./fetch-B_RcOnt9.js";
|
|
17
|
+
import "./redact-BoNEjbpF.js";
|
|
18
|
+
import "./errors-B8oJXuCF.js";
|
|
19
|
+
import "./channel-activity-Bq1Y9RiB.js";
|
|
20
|
+
import "./path-alias-guards-BX-3FprC.js";
|
|
21
|
+
import "./fs-safe-BW1ypSDS.js";
|
|
22
|
+
import "./ssrf-DvsjfpC2.js";
|
|
23
|
+
import "./fetch-guard-Cgyq6Jv9.js";
|
|
24
|
+
import "./local-roots-C1ETRlaC.js";
|
|
25
|
+
import { d as resolveChunkMode, i as resolveMarkdownTableMode } from "./ir-BJsqyZfm.js";
|
|
26
|
+
import "./render-HmipMDlP.js";
|
|
27
|
+
import "./tables-DNlQ8oQ3.js";
|
|
28
|
+
import "./send-C4KxEJe1.js";
|
|
29
|
+
import "./send-Dh1f5xjE.js";
|
|
30
|
+
import "./tool-images-DroS1EaM.js";
|
|
31
|
+
import "./target-errors-BlVYPwVC.js";
|
|
32
|
+
import "./send-BSD6Pkrk.js";
|
|
33
|
+
import "./audio-transcription-runner-jhHyCc_7.js";
|
|
34
|
+
import "./tokens-CTIYTLWu.js";
|
|
35
|
+
import "./skill-commands-CnqkEfhS.js";
|
|
36
|
+
import "./skills-DSbDUvmU.js";
|
|
37
|
+
import "./chrome-DOnBMnlx.js";
|
|
38
|
+
import "./deliver-BqXXtIuw.js";
|
|
39
|
+
import "./diagnostic-DUbajFSl.js";
|
|
40
|
+
import "./store-DG90hxe6.js";
|
|
41
|
+
import "./commands-registry-D0py59pz.js";
|
|
42
|
+
import "./image-BPXnvxYL.js";
|
|
43
|
+
import "./api-key-rotation-k1ZNheUH.js";
|
|
44
|
+
import "./proxy-fetch-ZPEvp58f.js";
|
|
45
|
+
import "./pi-model-discovery-B_qCKuSW.js";
|
|
46
|
+
import "./send-D3XVKGvq.js";
|
|
47
|
+
import "./outbound-attachment-BppFIMQa.js";
|
|
48
|
+
import "./proxy-BKdNrmWL.js";
|
|
49
|
+
import "./manager-Dn7j3n0d.js";
|
|
50
|
+
import "./query-expansion-C1Nx0XAb.js";
|
|
51
|
+
|
|
52
|
+
export { createReplyPrefixOptions, deliverSlackSlashReplies, dispatchReplyWithDispatcher, finalizeInboundContext, recordInboundSessionMetaSafe, resolveAgentRoute, resolveChunkMode, resolveConversationLabel, resolveMarkdownTableMode };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "./run-with-concurrency-vfuRiXdY.js";
|
|
2
|
+
import "./accounts-BXFDqY90.js";
|
|
3
|
+
import "./paths-8xF5kDne.js";
|
|
4
|
+
import "./github-copilot-token-Dy-0-Kh3.js";
|
|
5
|
+
import "./config-B16xKqSo.js";
|
|
6
|
+
import "./logger-DDdrdbDu.js";
|
|
7
|
+
import "./thinking-DT2ZR60x.js";
|
|
8
|
+
import "./plugins-rivB8KaQ.js";
|
|
9
|
+
import "./accounts-DxiB_4z4.js";
|
|
10
|
+
import "./accounts-DU7Js54-.js";
|
|
11
|
+
import "./path-alias-guards-BX-3FprC.js";
|
|
12
|
+
import { n as listSkillCommandsForAgents } from "./skill-commands-CnqkEfhS.js";
|
|
13
|
+
import "./skills-DSbDUvmU.js";
|
|
14
|
+
import "./commands-registry-D0py59pz.js";
|
|
15
|
+
|
|
16
|
+
export { listSkillCommandsForAgents };
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { $ as parseCanonicalIpAddress, G as isBlockedSpecialUseIpv4Address, J as isIpv4Address, K as isBlockedSpecialUseIpv6Address, W as extractEmbeddedIpv4FromIpv6, Y as isLegacyIpv4Literal, et as parseLooseIpAddress, q as isCanonicalDottedDecimalIPv4 } from "./config-B16xKqSo.js";
|
|
2
|
+
import { Agent } from "undici";
|
|
3
|
+
import { lookup } from "node:dns";
|
|
4
|
+
import { lookup as lookup$1 } from "node:dns/promises";
|
|
5
|
+
|
|
6
|
+
//#region src/infra/net/proxy-env.ts
|
|
7
|
+
const PROXY_ENV_KEYS = [
|
|
8
|
+
"HTTP_PROXY",
|
|
9
|
+
"HTTPS_PROXY",
|
|
10
|
+
"ALL_PROXY",
|
|
11
|
+
"http_proxy",
|
|
12
|
+
"https_proxy",
|
|
13
|
+
"all_proxy"
|
|
14
|
+
];
|
|
15
|
+
function hasProxyEnvConfigured(env = process.env) {
|
|
16
|
+
for (const key of PROXY_ENV_KEYS) {
|
|
17
|
+
const value = env[key];
|
|
18
|
+
if (typeof value === "string" && value.trim().length > 0) return true;
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/infra/net/hostname.ts
|
|
25
|
+
function normalizeHostname(hostname) {
|
|
26
|
+
const normalized = hostname.trim().toLowerCase().replace(/\.$/, "");
|
|
27
|
+
if (normalized.startsWith("[") && normalized.endsWith("]")) return normalized.slice(1, -1);
|
|
28
|
+
return normalized;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/infra/net/ssrf.ts
|
|
33
|
+
var SsrFBlockedError = class extends Error {
|
|
34
|
+
constructor(message) {
|
|
35
|
+
super(message);
|
|
36
|
+
this.name = "SsrFBlockedError";
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const BLOCKED_HOSTNAMES = new Set([
|
|
40
|
+
"localhost",
|
|
41
|
+
"localhost.localdomain",
|
|
42
|
+
"metadata.google.internal"
|
|
43
|
+
]);
|
|
44
|
+
function normalizeHostnameSet(values) {
|
|
45
|
+
if (!values || values.length === 0) return /* @__PURE__ */ new Set();
|
|
46
|
+
return new Set(values.map((value) => normalizeHostname(value)).filter(Boolean));
|
|
47
|
+
}
|
|
48
|
+
function normalizeHostnameAllowlist(values) {
|
|
49
|
+
if (!values || values.length === 0) return [];
|
|
50
|
+
return Array.from(new Set(values.map((value) => normalizeHostname(value)).filter((value) => value !== "*" && value !== "*." && value.length > 0)));
|
|
51
|
+
}
|
|
52
|
+
function isPrivateNetworkAllowedByPolicy(policy) {
|
|
53
|
+
return policy?.dangerouslyAllowPrivateNetwork === true || policy?.allowPrivateNetwork === true;
|
|
54
|
+
}
|
|
55
|
+
function resolveIpv4SpecialUseBlockOptions(policy) {
|
|
56
|
+
return { allowRfc2544BenchmarkRange: policy?.allowRfc2544BenchmarkRange === true };
|
|
57
|
+
}
|
|
58
|
+
function isHostnameAllowedByPattern(hostname, pattern) {
|
|
59
|
+
if (pattern.startsWith("*.")) {
|
|
60
|
+
const suffix = pattern.slice(2);
|
|
61
|
+
if (!suffix || hostname === suffix) return false;
|
|
62
|
+
return hostname.endsWith(`.${suffix}`);
|
|
63
|
+
}
|
|
64
|
+
return hostname === pattern;
|
|
65
|
+
}
|
|
66
|
+
function matchesHostnameAllowlist(hostname, allowlist) {
|
|
67
|
+
if (allowlist.length === 0) return true;
|
|
68
|
+
return allowlist.some((pattern) => isHostnameAllowedByPattern(hostname, pattern));
|
|
69
|
+
}
|
|
70
|
+
function looksLikeUnsupportedIpv4Literal(address) {
|
|
71
|
+
const parts = address.split(".");
|
|
72
|
+
if (parts.length === 0 || parts.length > 4) return false;
|
|
73
|
+
if (parts.some((part) => part.length === 0)) return true;
|
|
74
|
+
return parts.every((part) => /^[0-9]+$/.test(part) || /^0x/i.test(part));
|
|
75
|
+
}
|
|
76
|
+
function isPrivateIpAddress(address, policy) {
|
|
77
|
+
let normalized = address.trim().toLowerCase();
|
|
78
|
+
if (normalized.startsWith("[") && normalized.endsWith("]")) normalized = normalized.slice(1, -1);
|
|
79
|
+
if (!normalized) return false;
|
|
80
|
+
const blockOptions = resolveIpv4SpecialUseBlockOptions(policy);
|
|
81
|
+
const strictIp = parseCanonicalIpAddress(normalized);
|
|
82
|
+
if (strictIp) {
|
|
83
|
+
if (isIpv4Address(strictIp)) return isBlockedSpecialUseIpv4Address(strictIp, blockOptions);
|
|
84
|
+
if (isBlockedSpecialUseIpv6Address(strictIp)) return true;
|
|
85
|
+
const embeddedIpv4 = extractEmbeddedIpv4FromIpv6(strictIp);
|
|
86
|
+
if (embeddedIpv4) return isBlockedSpecialUseIpv4Address(embeddedIpv4, blockOptions);
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
if (normalized.includes(":") && !parseLooseIpAddress(normalized)) return true;
|
|
90
|
+
if (!isCanonicalDottedDecimalIPv4(normalized) && isLegacyIpv4Literal(normalized)) return true;
|
|
91
|
+
if (looksLikeUnsupportedIpv4Literal(normalized)) return true;
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
function isBlockedHostname(hostname) {
|
|
95
|
+
const normalized = normalizeHostname(hostname);
|
|
96
|
+
if (!normalized) return false;
|
|
97
|
+
return isBlockedHostnameNormalized(normalized);
|
|
98
|
+
}
|
|
99
|
+
function isBlockedHostnameNormalized(normalized) {
|
|
100
|
+
if (BLOCKED_HOSTNAMES.has(normalized)) return true;
|
|
101
|
+
return normalized.endsWith(".localhost") || normalized.endsWith(".local") || normalized.endsWith(".internal");
|
|
102
|
+
}
|
|
103
|
+
function isBlockedHostnameOrIp(hostname, policy) {
|
|
104
|
+
const normalized = normalizeHostname(hostname);
|
|
105
|
+
if (!normalized) return false;
|
|
106
|
+
return isBlockedHostnameNormalized(normalized) || isPrivateIpAddress(normalized, policy);
|
|
107
|
+
}
|
|
108
|
+
const BLOCKED_HOST_OR_IP_MESSAGE = "Blocked hostname or private/internal/special-use IP address";
|
|
109
|
+
const BLOCKED_RESOLVED_IP_MESSAGE = "Blocked: resolves to private/internal/special-use IP address";
|
|
110
|
+
function assertAllowedHostOrIpOrThrow(hostnameOrIp, policy) {
|
|
111
|
+
if (isBlockedHostnameOrIp(hostnameOrIp, policy)) throw new SsrFBlockedError(BLOCKED_HOST_OR_IP_MESSAGE);
|
|
112
|
+
}
|
|
113
|
+
function assertAllowedResolvedAddressesOrThrow(results, policy) {
|
|
114
|
+
for (const entry of results) if (isBlockedHostnameOrIp(entry.address, policy)) throw new SsrFBlockedError(BLOCKED_RESOLVED_IP_MESSAGE);
|
|
115
|
+
}
|
|
116
|
+
function createPinnedLookup(params) {
|
|
117
|
+
const normalizedHost = normalizeHostname(params.hostname);
|
|
118
|
+
const fallback = params.fallback ?? lookup;
|
|
119
|
+
const fallbackLookup = fallback;
|
|
120
|
+
const fallbackWithOptions = fallback;
|
|
121
|
+
const records = params.addresses.map((address) => ({
|
|
122
|
+
address,
|
|
123
|
+
family: address.includes(":") ? 6 : 4
|
|
124
|
+
}));
|
|
125
|
+
let index = 0;
|
|
126
|
+
return ((host, options, callback) => {
|
|
127
|
+
const cb = typeof options === "function" ? options : callback;
|
|
128
|
+
if (!cb) return;
|
|
129
|
+
const normalized = normalizeHostname(host);
|
|
130
|
+
if (!normalized || normalized !== normalizedHost) {
|
|
131
|
+
if (typeof options === "function" || options === void 0) return fallbackLookup(host, cb);
|
|
132
|
+
return fallbackWithOptions(host, options, cb);
|
|
133
|
+
}
|
|
134
|
+
const opts = typeof options === "object" && options !== null ? options : {};
|
|
135
|
+
const requestedFamily = typeof options === "number" ? options : typeof opts.family === "number" ? opts.family : 0;
|
|
136
|
+
const candidates = requestedFamily === 4 || requestedFamily === 6 ? records.filter((entry) => entry.family === requestedFamily) : records;
|
|
137
|
+
const usable = candidates.length > 0 ? candidates : records;
|
|
138
|
+
if (opts.all) {
|
|
139
|
+
cb(null, usable);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const chosen = usable[index % usable.length];
|
|
143
|
+
index += 1;
|
|
144
|
+
cb(null, chosen.address, chosen.family);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function dedupeAndPreferIpv4(results) {
|
|
148
|
+
const seen = /* @__PURE__ */ new Set();
|
|
149
|
+
const ipv4 = [];
|
|
150
|
+
const otherFamilies = [];
|
|
151
|
+
for (const entry of results) {
|
|
152
|
+
if (seen.has(entry.address)) continue;
|
|
153
|
+
seen.add(entry.address);
|
|
154
|
+
if (entry.family === 4) {
|
|
155
|
+
ipv4.push(entry.address);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
otherFamilies.push(entry.address);
|
|
159
|
+
}
|
|
160
|
+
return [...ipv4, ...otherFamilies];
|
|
161
|
+
}
|
|
162
|
+
async function resolvePinnedHostnameWithPolicy(hostname, params = {}) {
|
|
163
|
+
const normalized = normalizeHostname(hostname);
|
|
164
|
+
if (!normalized) throw new Error("Invalid hostname");
|
|
165
|
+
const allowPrivateNetwork = isPrivateNetworkAllowedByPolicy(params.policy);
|
|
166
|
+
const allowedHostnames = normalizeHostnameSet(params.policy?.allowedHostnames);
|
|
167
|
+
const hostnameAllowlist = normalizeHostnameAllowlist(params.policy?.hostnameAllowlist);
|
|
168
|
+
const isExplicitAllowed = allowedHostnames.has(normalized);
|
|
169
|
+
const skipPrivateNetworkChecks = allowPrivateNetwork || isExplicitAllowed;
|
|
170
|
+
if (!matchesHostnameAllowlist(normalized, hostnameAllowlist)) throw new SsrFBlockedError(`Blocked hostname (not in allowlist): ${hostname}`);
|
|
171
|
+
if (!skipPrivateNetworkChecks) assertAllowedHostOrIpOrThrow(normalized, params.policy);
|
|
172
|
+
const results = await (params.lookupFn ?? lookup$1)(normalized, { all: true });
|
|
173
|
+
if (results.length === 0) throw new Error(`Unable to resolve hostname: ${hostname}`);
|
|
174
|
+
if (!skipPrivateNetworkChecks) assertAllowedResolvedAddressesOrThrow(results, params.policy);
|
|
175
|
+
const addresses = dedupeAndPreferIpv4(results);
|
|
176
|
+
if (addresses.length === 0) throw new Error(`Unable to resolve hostname: ${hostname}`);
|
|
177
|
+
return {
|
|
178
|
+
hostname: normalized,
|
|
179
|
+
addresses,
|
|
180
|
+
lookup: createPinnedLookup({
|
|
181
|
+
hostname: normalized,
|
|
182
|
+
addresses
|
|
183
|
+
})
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function createPinnedDispatcher(pinned) {
|
|
187
|
+
return new Agent({ connect: { lookup: pinned.lookup } });
|
|
188
|
+
}
|
|
189
|
+
async function closeDispatcher(dispatcher) {
|
|
190
|
+
if (!dispatcher) return;
|
|
191
|
+
const candidate = dispatcher;
|
|
192
|
+
try {
|
|
193
|
+
if (typeof candidate.close === "function") {
|
|
194
|
+
await candidate.close();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (typeof candidate.destroy === "function") candidate.destroy();
|
|
198
|
+
} catch {}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
//#endregion
|
|
202
|
+
export { isBlockedHostnameOrIp as a, resolvePinnedHostnameWithPolicy as c, isBlockedHostname as i, normalizeHostname as l, closeDispatcher as n, isPrivateIpAddress as o, createPinnedDispatcher as r, isPrivateNetworkAllowedByPolicy as s, SsrFBlockedError as t, hasProxyEnvConfigured as u };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { w as resolveConfigDir } from "./logger-DDdrdbDu.js";
|
|
2
|
+
import { c as detectMime, l as extensionForMime } from "./image-ops-BBY2fn9x.js";
|
|
3
|
+
import { createWriteStream } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import fs$1 from "node:fs/promises";
|
|
6
|
+
import crypto from "node:crypto";
|
|
7
|
+
import { pipeline } from "node:stream/promises";
|
|
8
|
+
import { request } from "node:https";
|
|
9
|
+
|
|
10
|
+
//#region src/media/store.ts
|
|
11
|
+
const resolveMediaDir = () => path.join(resolveConfigDir(), "media");
|
|
12
|
+
const MEDIA_MAX_BYTES = 5 * 1024 * 1024;
|
|
13
|
+
const MAX_BYTES = MEDIA_MAX_BYTES;
|
|
14
|
+
const DEFAULT_TTL_MS = 120 * 1e3;
|
|
15
|
+
const MEDIA_FILE_MODE = 420;
|
|
16
|
+
/**
|
|
17
|
+
* Sanitize a filename for cross-platform safety.
|
|
18
|
+
* Removes chars unsafe on Windows/SharePoint/all platforms.
|
|
19
|
+
* Keeps: alphanumeric, dots, hyphens, underscores, Unicode letters/numbers.
|
|
20
|
+
*/
|
|
21
|
+
function sanitizeFilename(name) {
|
|
22
|
+
const trimmed = name.trim();
|
|
23
|
+
if (!trimmed) return "";
|
|
24
|
+
return trimmed.replace(/[^\p{L}\p{N}._-]+/gu, "_").replace(/_+/g, "_").replace(/^_|_$/g, "").slice(0, 60);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract original filename from path if it matches the embedded format.
|
|
28
|
+
* Pattern: {original}---{uuid}.{ext} → returns "{original}.{ext}"
|
|
29
|
+
* Falls back to basename if no pattern match, or "file.bin" if empty.
|
|
30
|
+
*/
|
|
31
|
+
function extractOriginalFilename(filePath) {
|
|
32
|
+
const basename = path.basename(filePath);
|
|
33
|
+
if (!basename) return "file.bin";
|
|
34
|
+
const ext = path.extname(basename);
|
|
35
|
+
const match = path.basename(basename, ext).match(/^(.+)---[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i);
|
|
36
|
+
if (match?.[1]) return `${match[1]}${ext}`;
|
|
37
|
+
return basename;
|
|
38
|
+
}
|
|
39
|
+
function getMediaDir() {
|
|
40
|
+
return resolveMediaDir();
|
|
41
|
+
}
|
|
42
|
+
async function ensureMediaDir() {
|
|
43
|
+
const mediaDir = resolveMediaDir();
|
|
44
|
+
await fs$1.mkdir(mediaDir, {
|
|
45
|
+
recursive: true,
|
|
46
|
+
mode: 448
|
|
47
|
+
});
|
|
48
|
+
return mediaDir;
|
|
49
|
+
}
|
|
50
|
+
async function saveMediaBuffer(buffer, contentType, subdir = "inbound", maxBytes = MAX_BYTES, originalFilename) {
|
|
51
|
+
if (buffer.byteLength > maxBytes) throw new Error(`Media exceeds ${(maxBytes / (1024 * 1024)).toFixed(0)}MB limit`);
|
|
52
|
+
const dir = path.join(resolveMediaDir(), subdir);
|
|
53
|
+
await fs$1.mkdir(dir, {
|
|
54
|
+
recursive: true,
|
|
55
|
+
mode: 448
|
|
56
|
+
});
|
|
57
|
+
const uuid = crypto.randomUUID();
|
|
58
|
+
const headerExt = extensionForMime(contentType?.split(";")[0]?.trim() ?? void 0);
|
|
59
|
+
const mime = await detectMime({
|
|
60
|
+
buffer,
|
|
61
|
+
headerMime: contentType
|
|
62
|
+
});
|
|
63
|
+
const ext = headerExt ?? extensionForMime(mime) ?? "";
|
|
64
|
+
let id;
|
|
65
|
+
if (originalFilename) {
|
|
66
|
+
const base = path.parse(originalFilename).name;
|
|
67
|
+
const sanitized = sanitizeFilename(base);
|
|
68
|
+
id = sanitized ? `${sanitized}---${uuid}${ext}` : `${uuid}${ext}`;
|
|
69
|
+
} else id = ext ? `${uuid}${ext}` : uuid;
|
|
70
|
+
const dest = path.join(dir, id);
|
|
71
|
+
await fs$1.writeFile(dest, buffer, { mode: MEDIA_FILE_MODE });
|
|
72
|
+
return {
|
|
73
|
+
id,
|
|
74
|
+
path: dest,
|
|
75
|
+
size: buffer.byteLength,
|
|
76
|
+
contentType: mime
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//#endregion
|
|
81
|
+
export { saveMediaBuffer as a, getMediaDir as i, ensureMediaDir as n, extractOriginalFilename as r, MEDIA_MAX_BYTES as t };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import "./run-with-concurrency-vfuRiXdY.js";
|
|
2
|
+
import "./accounts-BXFDqY90.js";
|
|
3
|
+
import { C as countPendingDescendantRunsExcludingRun, S as countPendingDescendantRuns, T as resolveRequesterForChildSession, w as isSubagentSessionRunActive, x as countActiveDescendantRuns } from "./reply-DNSpho0-.js";
|
|
4
|
+
import "./paths-8xF5kDne.js";
|
|
5
|
+
import "./github-copilot-token-Dy-0-Kh3.js";
|
|
6
|
+
import "./config-B16xKqSo.js";
|
|
7
|
+
import "./logger-DDdrdbDu.js";
|
|
8
|
+
import "./thinking-DT2ZR60x.js";
|
|
9
|
+
import "./image-ops-BBY2fn9x.js";
|
|
10
|
+
import "./pi-embedded-helpers-BeYjP1MW.js";
|
|
11
|
+
import "./plugins-rivB8KaQ.js";
|
|
12
|
+
import "./accounts-DxiB_4z4.js";
|
|
13
|
+
import "./accounts-DU7Js54-.js";
|
|
14
|
+
import "./send-DFrnRiWm.js";
|
|
15
|
+
import "./paths-CjFcHB_C.js";
|
|
16
|
+
import "./fetch-B_RcOnt9.js";
|
|
17
|
+
import "./redact-BoNEjbpF.js";
|
|
18
|
+
import "./errors-B8oJXuCF.js";
|
|
19
|
+
import "./channel-activity-Bq1Y9RiB.js";
|
|
20
|
+
import "./path-alias-guards-BX-3FprC.js";
|
|
21
|
+
import "./fs-safe-BW1ypSDS.js";
|
|
22
|
+
import "./ssrf-DvsjfpC2.js";
|
|
23
|
+
import "./fetch-guard-Cgyq6Jv9.js";
|
|
24
|
+
import "./local-roots-C1ETRlaC.js";
|
|
25
|
+
import "./ir-BJsqyZfm.js";
|
|
26
|
+
import "./render-HmipMDlP.js";
|
|
27
|
+
import "./tables-DNlQ8oQ3.js";
|
|
28
|
+
import "./send-C4KxEJe1.js";
|
|
29
|
+
import "./send-Dh1f5xjE.js";
|
|
30
|
+
import "./tool-images-DroS1EaM.js";
|
|
31
|
+
import "./target-errors-BlVYPwVC.js";
|
|
32
|
+
import "./send-BSD6Pkrk.js";
|
|
33
|
+
import "./audio-transcription-runner-jhHyCc_7.js";
|
|
34
|
+
import "./tokens-CTIYTLWu.js";
|
|
35
|
+
import "./skill-commands-CnqkEfhS.js";
|
|
36
|
+
import "./skills-DSbDUvmU.js";
|
|
37
|
+
import "./chrome-DOnBMnlx.js";
|
|
38
|
+
import "./deliver-BqXXtIuw.js";
|
|
39
|
+
import "./diagnostic-DUbajFSl.js";
|
|
40
|
+
import "./store-DG90hxe6.js";
|
|
41
|
+
import "./commands-registry-D0py59pz.js";
|
|
42
|
+
import "./image-BPXnvxYL.js";
|
|
43
|
+
import "./api-key-rotation-k1ZNheUH.js";
|
|
44
|
+
import "./proxy-fetch-ZPEvp58f.js";
|
|
45
|
+
import "./pi-model-discovery-B_qCKuSW.js";
|
|
46
|
+
import "./send-D3XVKGvq.js";
|
|
47
|
+
import "./outbound-attachment-BppFIMQa.js";
|
|
48
|
+
import "./proxy-BKdNrmWL.js";
|
|
49
|
+
import "./manager-Dn7j3n0d.js";
|
|
50
|
+
import "./query-expansion-C1Nx0XAb.js";
|
|
51
|
+
|
|
52
|
+
export { countActiveDescendantRuns, countPendingDescendantRuns, countPendingDescendantRunsExcludingRun, isSubagentSessionRunActive, resolveRequesterForChildSession };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { r as markdownToIRWithMeta } from "./ir-BJsqyZfm.js";
|
|
2
|
+
import { t as renderMarkdownWithMarkers } from "./render-HmipMDlP.js";
|
|
3
|
+
|
|
4
|
+
//#region src/markdown/tables.ts
|
|
5
|
+
const MARKDOWN_STYLE_MARKERS = {
|
|
6
|
+
bold: {
|
|
7
|
+
open: "**",
|
|
8
|
+
close: "**"
|
|
9
|
+
},
|
|
10
|
+
italic: {
|
|
11
|
+
open: "_",
|
|
12
|
+
close: "_"
|
|
13
|
+
},
|
|
14
|
+
strikethrough: {
|
|
15
|
+
open: "~~",
|
|
16
|
+
close: "~~"
|
|
17
|
+
},
|
|
18
|
+
code: {
|
|
19
|
+
open: "`",
|
|
20
|
+
close: "`"
|
|
21
|
+
},
|
|
22
|
+
code_block: {
|
|
23
|
+
open: "```\n",
|
|
24
|
+
close: "```"
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
function convertMarkdownTables(markdown, mode) {
|
|
28
|
+
if (!markdown || mode === "off") return markdown;
|
|
29
|
+
const { ir, hasTables } = markdownToIRWithMeta(markdown, {
|
|
30
|
+
linkify: false,
|
|
31
|
+
autolink: false,
|
|
32
|
+
headingStyle: "none",
|
|
33
|
+
blockquotePrefix: "",
|
|
34
|
+
tableMode: mode
|
|
35
|
+
});
|
|
36
|
+
if (!hasTables) return markdown;
|
|
37
|
+
return renderMarkdownWithMarkers(ir, {
|
|
38
|
+
styleMarkers: MARKDOWN_STYLE_MARKERS,
|
|
39
|
+
escapeText: (text) => text,
|
|
40
|
+
buildLink: (link, text) => {
|
|
41
|
+
const href = link.href.trim();
|
|
42
|
+
if (!href) return null;
|
|
43
|
+
if (!text.slice(link.start, link.end)) return null;
|
|
44
|
+
return {
|
|
45
|
+
start: link.start,
|
|
46
|
+
end: link.end,
|
|
47
|
+
open: "[",
|
|
48
|
+
close: `](${href})`
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
export { convertMarkdownTables as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as sanitizeToolResultImages } from "./tool-images-
|
|
1
|
+
import { c as detectMime } from "./image-ops-BBY2fn9x.js";
|
|
2
|
+
import { r as sanitizeToolResultImages } from "./tool-images-DroS1EaM.js";
|
|
3
3
|
import fs from "node:fs/promises";
|
|
4
4
|
|
|
5
5
|
//#region src/agents/tools/common.ts
|