pybao-cli 1.5.11 → 1.5.13
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/REPL-4ET7DK5F.js +50 -0
- package/dist/{acp-NSVRKFDR.js → acp-6D6QDJQY.js} +31 -31
- package/dist/{agentsValidate-J4WH47PD.js → agentsValidate-XFP3HZ4H.js} +7 -7
- package/dist/{ask-TIOWV5TX.js → ask-6CZRJCSZ.js} +30 -30
- package/dist/{autoUpdater-35O63ORK.js → autoUpdater-VCCPGPDD.js} +3 -3
- package/dist/{chunk-5MFIJREB.js → chunk-2L7XKUEG.js} +7 -1
- package/dist/chunk-2L7XKUEG.js.map +7 -0
- package/dist/{chunk-2TZLPLK6.js → chunk-2YIYRACC.js} +1 -1
- package/dist/{chunk-LTHUAMIE.js → chunk-4CTIJSGF.js} +1 -1
- package/dist/{chunk-NXGI34H4.js → chunk-4V637EWT.js} +35 -15
- package/dist/chunk-4V637EWT.js.map +7 -0
- package/dist/{chunk-EV3W3WLB.js → chunk-5AZPIB3O.js} +3 -3
- package/dist/{chunk-YV7Q3VHM.js → chunk-5SB6YYVT.js} +1 -1
- package/dist/chunk-5ZAXW6YC.js.map +7 -0
- package/dist/{chunk-TEGHHNGC.js → chunk-62DRY4WE.js} +4 -4
- package/dist/{chunk-PFYRLJXN.js → chunk-6Z7VRZE3.js} +2 -2
- package/dist/{chunk-E4QA2SMS.js → chunk-CLDFSJRX.js} +20 -6
- package/dist/{chunk-E4QA2SMS.js.map → chunk-CLDFSJRX.js.map} +2 -2
- package/dist/{chunk-7BZ3TT3E.js → chunk-DFQUXY7J.js} +10 -9
- package/dist/chunk-DFQUXY7J.js.map +7 -0
- package/dist/{chunk-M3EVWIF3.js → chunk-DYRNDVME.js} +3 -3
- package/dist/{chunk-U6JIGJB4.js → chunk-EN3EFAIN.js} +1728 -952
- package/dist/chunk-EN3EFAIN.js.map +7 -0
- package/dist/{chunk-L5RH454O.js → chunk-FEEOL2BF.js} +2 -2
- package/dist/{chunk-QMMOGZ7N.js → chunk-GKLF5SMX.js} +4 -4
- package/dist/{chunk-WDCDJPYN.js → chunk-HBFOODQT.js} +1 -1
- package/dist/{chunk-4SQ6LXYG.js → chunk-IKZOQVSC.js} +3 -3
- package/dist/{chunk-S7PU3TNH.js → chunk-IZKGIVR5.js} +4 -4
- package/dist/{chunk-5P4P5CFA.js → chunk-KDWAOC2Y.js} +2 -2
- package/dist/{chunk-6N43IM3F.js → chunk-KHCVAV26.js} +1 -1
- package/dist/{chunk-33QWSQC4.js → chunk-LHETO2A7.js} +2 -2
- package/dist/{chunk-IYPL6KOG.js → chunk-LXKU7CVC.js} +1 -1
- package/dist/{chunk-IC6XUDKC.js → chunk-MP2Z2WPA.js} +3 -3
- package/dist/{chunk-YJ3HLVKX.js → chunk-NMV2Y2OE.js} +2 -2
- package/dist/{chunk-Q3DXXYPX.js → chunk-PF2W6HQJ.js} +3 -3
- package/dist/{chunk-MQONPL2D.js → chunk-PH2OZGKF.js} +1 -1
- package/dist/{chunk-YKCKLLMA.js → chunk-PMBP2S7T.js} +2 -2
- package/dist/{chunk-BQWG5WFV.js → chunk-R5KHOF4Q.js} +1 -1
- package/dist/{chunk-EZ5IMWVJ.js → chunk-SQZQF7FX.js} +1 -1
- package/dist/{chunk-VH3IQXUR.js → chunk-USAN2W2G.js} +1 -1
- package/dist/{chunk-KUQZLTIW.js → chunk-UYEP4HDV.js} +4 -1
- package/dist/{chunk-KUQZLTIW.js.map → chunk-UYEP4HDV.js.map} +2 -2
- package/dist/{chunk-HOGROHYP.js → chunk-V6HDC2AS.js} +4 -4
- package/dist/{chunk-I7FH3MBS.js → chunk-VLE3RIPA.js} +3 -3
- package/dist/{cli-TIOLFD3Q.js → cli-2YA4LC5A.js} +92 -92
- package/dist/commands-GZ2R547K.js +54 -0
- package/dist/{config-BPAZ2QW2.js → config-NLO656A6.js} +4 -4
- package/dist/{context-UXBFAE6U.js → context-B5OAVYCB.js} +6 -6
- package/dist/{conversationPersistence-S5Y54OEJ.js → conversationPersistence-U3JD7OG2.js} +3 -3
- package/dist/{conversationTracker-EPTEVBKG.js → conversationTracker-XMFEBWHY.js} +4 -4
- package/dist/{customCommands-LJEKRKH7.js → customCommands-MP2IC4VW.js} +4 -4
- package/dist/{env-ZKDJ63EH.js → env-IWFZNFTP.js} +2 -2
- package/dist/{file-62N53R4I.js → file-NKAAAB74.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-257Z7WOJ.js → llm-VL7SVIXR.js} +32 -32
- package/dist/{llmLazy-766Y5JWG.js → llmLazy-JXN5R32R.js} +1 -1
- package/dist/{loader-IC2B4I4J.js → loader-QO3E224E.js} +4 -4
- package/dist/{lsp-ARSWURXF.js → lsp-3KQLSDLC.js} +6 -6
- package/dist/{lspAnchor-5N3KECK7.js → lspAnchor-56RDVJJK.js} +6 -6
- package/dist/{mcp-6LNALW65.js → mcp-QYGOVXNU.js} +7 -7
- package/dist/{mentionProcessor-LQ6WNIKV.js → mentionProcessor-M5UL6TT6.js} +5 -5
- package/dist/{messages-GNEQQA27.js → messages-IR7NEQMR.js} +1 -1
- package/dist/{model-F7IYXNO5.js → model-JVW7GWZF.js} +5 -5
- package/dist/{openai-HTXVPLAS.js → openai-JJWBAQ7K.js} +5 -5
- package/dist/{outputStyles-IEUFSMMK.js → outputStyles-NNT6NWAK.js} +4 -4
- package/dist/{pluginRuntime-4AI2VGR6.js → pluginRuntime-5ZYXGIUZ.js} +6 -6
- package/dist/{pluginValidation-VM4W42FR.js → pluginValidation-6OLPIUNW.js} +6 -6
- package/dist/prompts-ITAM2QAA.js +56 -0
- package/dist/{pybAgentSessionLoad-A3OZD3FR.js → pybAgentSessionLoad-HN6WOHQP.js} +4 -4
- package/dist/{pybAgentSessionResume-T6XFQUGW.js → pybAgentSessionResume-KEUXFVVT.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-J6TKWFS5.js → pybAgentStreamJsonSession-V24MOW3E.js} +1 -1
- package/dist/{pybHooks-QXTF2XWB.js → pybHooks-OEASV3O6.js} +4 -4
- package/dist/query-4YMUBJ3B.js +56 -0
- package/dist/{registry-N7W2DT2O.js → registry-WDNZOTS2.js} +5 -5
- package/dist/{ripgrep-4YX3ALXH.js → ripgrep-YEEECTEY.js} +3 -3
- package/dist/{skillMarketplace-BHPBAIS5.js → skillMarketplace-N2W7WTS3.js} +3 -3
- package/dist/{state-BAYDHBR6.js → state-IB4ZDFMG.js} +2 -2
- package/dist/{theme-5WK7OBSE.js → theme-5AY4LKLW.js} +5 -5
- package/dist/{toolPermissionSettings-KHCHXARB.js → toolPermissionSettings-J5VPVYUK.js} +6 -6
- package/dist/tools-VLTX3RMF.js +55 -0
- package/dist/{userInput-I5VZDN77.js → userInput-YJI6VWIU.js} +32 -32
- package/package.json +7 -1
- package/scripts/session-behavior-invariant-gate.mjs +86 -0
- package/scripts/session-contract-gate.mjs +107 -0
- package/dist/REPL-TGEVVUGU.js +0 -50
- package/dist/chunk-5MFIJREB.js.map +0 -7
- package/dist/chunk-7BZ3TT3E.js.map +0 -7
- package/dist/chunk-NXGI34H4.js.map +0 -7
- package/dist/chunk-OC5CZWBQ.js.map +0 -7
- package/dist/chunk-U6JIGJB4.js.map +0 -7
- package/dist/commands-T7TKHXOU.js +0 -54
- package/dist/prompts-EJTGSKLG.js +0 -56
- package/dist/query-ONI2G7VA.js +0 -58
- package/dist/tools-LTGCAA7X.js +0 -55
- /package/dist/{REPL-TGEVVUGU.js.map → REPL-4ET7DK5F.js.map} +0 -0
- /package/dist/{acp-NSVRKFDR.js.map → acp-6D6QDJQY.js.map} +0 -0
- /package/dist/{agentsValidate-J4WH47PD.js.map → agentsValidate-XFP3HZ4H.js.map} +0 -0
- /package/dist/{ask-TIOWV5TX.js.map → ask-6CZRJCSZ.js.map} +0 -0
- /package/dist/{autoUpdater-35O63ORK.js.map → autoUpdater-VCCPGPDD.js.map} +0 -0
- /package/dist/{chunk-2TZLPLK6.js.map → chunk-2YIYRACC.js.map} +0 -0
- /package/dist/{chunk-LTHUAMIE.js.map → chunk-4CTIJSGF.js.map} +0 -0
- /package/dist/{chunk-EV3W3WLB.js.map → chunk-5AZPIB3O.js.map} +0 -0
- /package/dist/{chunk-YV7Q3VHM.js.map → chunk-5SB6YYVT.js.map} +0 -0
- /package/dist/{chunk-OC5CZWBQ.js → chunk-5ZAXW6YC.js} +0 -0
- /package/dist/{chunk-TEGHHNGC.js.map → chunk-62DRY4WE.js.map} +0 -0
- /package/dist/{chunk-PFYRLJXN.js.map → chunk-6Z7VRZE3.js.map} +0 -0
- /package/dist/{chunk-M3EVWIF3.js.map → chunk-DYRNDVME.js.map} +0 -0
- /package/dist/{chunk-L5RH454O.js.map → chunk-FEEOL2BF.js.map} +0 -0
- /package/dist/{chunk-QMMOGZ7N.js.map → chunk-GKLF5SMX.js.map} +0 -0
- /package/dist/{chunk-WDCDJPYN.js.map → chunk-HBFOODQT.js.map} +0 -0
- /package/dist/{chunk-4SQ6LXYG.js.map → chunk-IKZOQVSC.js.map} +0 -0
- /package/dist/{chunk-S7PU3TNH.js.map → chunk-IZKGIVR5.js.map} +0 -0
- /package/dist/{chunk-5P4P5CFA.js.map → chunk-KDWAOC2Y.js.map} +0 -0
- /package/dist/{chunk-6N43IM3F.js.map → chunk-KHCVAV26.js.map} +0 -0
- /package/dist/{chunk-33QWSQC4.js.map → chunk-LHETO2A7.js.map} +0 -0
- /package/dist/{chunk-IYPL6KOG.js.map → chunk-LXKU7CVC.js.map} +0 -0
- /package/dist/{chunk-IC6XUDKC.js.map → chunk-MP2Z2WPA.js.map} +0 -0
- /package/dist/{chunk-YJ3HLVKX.js.map → chunk-NMV2Y2OE.js.map} +0 -0
- /package/dist/{chunk-Q3DXXYPX.js.map → chunk-PF2W6HQJ.js.map} +0 -0
- /package/dist/{chunk-MQONPL2D.js.map → chunk-PH2OZGKF.js.map} +0 -0
- /package/dist/{chunk-YKCKLLMA.js.map → chunk-PMBP2S7T.js.map} +0 -0
- /package/dist/{chunk-BQWG5WFV.js.map → chunk-R5KHOF4Q.js.map} +0 -0
- /package/dist/{chunk-EZ5IMWVJ.js.map → chunk-SQZQF7FX.js.map} +0 -0
- /package/dist/{chunk-VH3IQXUR.js.map → chunk-USAN2W2G.js.map} +0 -0
- /package/dist/{chunk-HOGROHYP.js.map → chunk-V6HDC2AS.js.map} +0 -0
- /package/dist/{chunk-I7FH3MBS.js.map → chunk-VLE3RIPA.js.map} +0 -0
- /package/dist/{cli-TIOLFD3Q.js.map → cli-2YA4LC5A.js.map} +0 -0
- /package/dist/{commands-T7TKHXOU.js.map → commands-GZ2R547K.js.map} +0 -0
- /package/dist/{config-BPAZ2QW2.js.map → config-NLO656A6.js.map} +0 -0
- /package/dist/{context-UXBFAE6U.js.map → context-B5OAVYCB.js.map} +0 -0
- /package/dist/{conversationPersistence-S5Y54OEJ.js.map → conversationPersistence-U3JD7OG2.js.map} +0 -0
- /package/dist/{conversationTracker-EPTEVBKG.js.map → conversationTracker-XMFEBWHY.js.map} +0 -0
- /package/dist/{customCommands-LJEKRKH7.js.map → customCommands-MP2IC4VW.js.map} +0 -0
- /package/dist/{env-ZKDJ63EH.js.map → env-IWFZNFTP.js.map} +0 -0
- /package/dist/{file-62N53R4I.js.map → file-NKAAAB74.js.map} +0 -0
- /package/dist/{llm-257Z7WOJ.js.map → llm-VL7SVIXR.js.map} +0 -0
- /package/dist/{llmLazy-766Y5JWG.js.map → llmLazy-JXN5R32R.js.map} +0 -0
- /package/dist/{loader-IC2B4I4J.js.map → loader-QO3E224E.js.map} +0 -0
- /package/dist/{lsp-ARSWURXF.js.map → lsp-3KQLSDLC.js.map} +0 -0
- /package/dist/{lspAnchor-5N3KECK7.js.map → lspAnchor-56RDVJJK.js.map} +0 -0
- /package/dist/{mcp-6LNALW65.js.map → mcp-QYGOVXNU.js.map} +0 -0
- /package/dist/{mentionProcessor-LQ6WNIKV.js.map → mentionProcessor-M5UL6TT6.js.map} +0 -0
- /package/dist/{messages-GNEQQA27.js.map → messages-IR7NEQMR.js.map} +0 -0
- /package/dist/{model-F7IYXNO5.js.map → model-JVW7GWZF.js.map} +0 -0
- /package/dist/{openai-HTXVPLAS.js.map → openai-JJWBAQ7K.js.map} +0 -0
- /package/dist/{outputStyles-IEUFSMMK.js.map → outputStyles-NNT6NWAK.js.map} +0 -0
- /package/dist/{pluginRuntime-4AI2VGR6.js.map → pluginRuntime-5ZYXGIUZ.js.map} +0 -0
- /package/dist/{pluginValidation-VM4W42FR.js.map → pluginValidation-6OLPIUNW.js.map} +0 -0
- /package/dist/{prompts-EJTGSKLG.js.map → prompts-ITAM2QAA.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-A3OZD3FR.js.map → pybAgentSessionLoad-HN6WOHQP.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-T6XFQUGW.js.map → pybAgentSessionResume-KEUXFVVT.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-J6TKWFS5.js.map → pybAgentStreamJsonSession-V24MOW3E.js.map} +0 -0
- /package/dist/{pybHooks-QXTF2XWB.js.map → pybHooks-OEASV3O6.js.map} +0 -0
- /package/dist/{query-ONI2G7VA.js.map → query-4YMUBJ3B.js.map} +0 -0
- /package/dist/{registry-N7W2DT2O.js.map → registry-WDNZOTS2.js.map} +0 -0
- /package/dist/{ripgrep-4YX3ALXH.js.map → ripgrep-YEEECTEY.js.map} +0 -0
- /package/dist/{skillMarketplace-BHPBAIS5.js.map → skillMarketplace-N2W7WTS3.js.map} +0 -0
- /package/dist/{state-BAYDHBR6.js.map → state-IB4ZDFMG.js.map} +0 -0
- /package/dist/{theme-5WK7OBSE.js.map → theme-5AY4LKLW.js.map} +0 -0
- /package/dist/{toolPermissionSettings-KHCHXARB.js.map → toolPermissionSettings-J5VPVYUK.js.map} +0 -0
- /package/dist/{tools-LTGCAA7X.js.map → tools-VLTX3RMF.js.map} +0 -0
- /package/dist/{userInput-I5VZDN77.js.map → userInput-YJI6VWIU.js.map} +0 -0
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
} from "./chunk-BJSWTHRM.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HBFOODQT.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd,
|
|
11
11
|
logError,
|
|
12
12
|
resolveXdgDataPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DFQUXY7J.js";
|
|
14
14
|
|
|
15
15
|
// src/services/plugins/customCommands.ts
|
|
16
16
|
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
|
|
4
4
|
// src/services/ai/llmLazy.ts
|
|
5
5
|
async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal, options) {
|
|
6
|
-
const { queryLLM: inner } = await import("./llm-
|
|
6
|
+
const { queryLLM: inner } = await import("./llm-VL7SVIXR.js");
|
|
7
7
|
return inner(
|
|
8
8
|
messages,
|
|
9
9
|
systemPrompt,
|
|
@@ -14,15 +14,15 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
|
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
async function queryQuick(args) {
|
|
17
|
-
const { queryQuick: inner } = await import("./llm-
|
|
17
|
+
const { queryQuick: inner } = await import("./llm-VL7SVIXR.js");
|
|
18
18
|
return inner(args);
|
|
19
19
|
}
|
|
20
20
|
async function verifyApiKey(apiKey, baseURL, provider) {
|
|
21
|
-
const { verifyApiKey: inner } = await import("./llm-
|
|
21
|
+
const { verifyApiKey: inner } = await import("./llm-VL7SVIXR.js");
|
|
22
22
|
return inner(apiKey, baseURL, provider);
|
|
23
23
|
}
|
|
24
24
|
async function fetchAnthropicModels(apiKey, baseURL) {
|
|
25
|
-
const { fetchAnthropicModels: inner } = await import("./llm-
|
|
25
|
+
const { fetchAnthropicModels: inner } = await import("./llm-VL7SVIXR.js");
|
|
26
26
|
return inner(apiKey, baseURL);
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -5,13 +5,13 @@ import {
|
|
|
5
5
|
} from "./chunk-RQVLBMP7.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HBFOODQT.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd,
|
|
11
11
|
getGlobalConfigFilePath,
|
|
12
12
|
getLegacyGlobalConfigFilePath,
|
|
13
13
|
logError
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-DFQUXY7J.js";
|
|
15
15
|
|
|
16
16
|
// src/core/config/schema.ts
|
|
17
17
|
function isAutoUpdaterStatus(value) {
|
|
@@ -688,7 +688,7 @@ function setModelPointer(pointer, modelName) {
|
|
|
688
688
|
}
|
|
689
689
|
};
|
|
690
690
|
saveGlobalConfig(updatedConfig);
|
|
691
|
-
import("./model-
|
|
691
|
+
import("./model-JVW7GWZF.js").then(({ reloadModelManager }) => {
|
|
692
692
|
reloadModelManager();
|
|
693
693
|
});
|
|
694
694
|
}
|
|
@@ -3,13 +3,13 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
getSettingsFileCandidates,
|
|
5
5
|
loadSettingsWithLegacyFallback
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LXKU7CVC.js";
|
|
7
7
|
import {
|
|
8
8
|
getSessionPlugins
|
|
9
9
|
} from "./chunk-BJSWTHRM.js";
|
|
10
10
|
import {
|
|
11
11
|
getTheme
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PH2OZGKF.js";
|
|
13
13
|
import {
|
|
14
14
|
addMcprcServerForTesting,
|
|
15
15
|
getCurrentProjectConfig,
|
|
@@ -19,13 +19,13 @@ import {
|
|
|
19
19
|
safeParseJSON,
|
|
20
20
|
saveCurrentProjectConfig,
|
|
21
21
|
saveGlobalConfig
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-IKZOQVSC.js";
|
|
23
23
|
import {
|
|
24
24
|
PRODUCT_COMMAND,
|
|
25
25
|
PRODUCT_NAME,
|
|
26
26
|
getCwd,
|
|
27
27
|
logMCPError
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-DFQUXY7J.js";
|
|
29
29
|
|
|
30
30
|
// src/services/mcp/client.ts
|
|
31
31
|
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
getSettingsFileCandidates,
|
|
8
8
|
loadSettingsWithLegacyFallback,
|
|
9
9
|
saveSettingsToPrimaryAndSyncLegacy
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LXKU7CVC.js";
|
|
11
11
|
import {
|
|
12
12
|
getSessionPlugins
|
|
13
13
|
} from "./chunk-BJSWTHRM.js";
|
|
14
14
|
import {
|
|
15
15
|
getCwd,
|
|
16
16
|
getXdgConfigDir
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-DFQUXY7J.js";
|
|
18
18
|
|
|
19
19
|
// src/services/ui/outputStyles.ts
|
|
20
20
|
import figures from "figures";
|
|
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
logError
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-DFQUXY7J.js";
|
|
6
6
|
|
|
7
7
|
// src/utils/session/conversationPersistence.ts
|
|
8
8
|
import {
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
} from "./chunk-BJSWTHRM.js";
|
|
9
9
|
import {
|
|
10
10
|
debug
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HBFOODQT.js";
|
|
12
12
|
import {
|
|
13
13
|
getCwd,
|
|
14
14
|
getXdgConfigDir,
|
|
15
15
|
logError
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-DFQUXY7J.js";
|
|
17
17
|
|
|
18
18
|
// src/utils/agent/loader.ts
|
|
19
19
|
import {
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
PRODUCT_NAME,
|
|
5
5
|
execFileNoThrow,
|
|
6
6
|
logError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DFQUXY7J.js";
|
|
8
8
|
import {
|
|
9
9
|
MACRO
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2L7XKUEG.js";
|
|
11
11
|
|
|
12
12
|
// src/utils/session/autoUpdater.ts
|
|
13
13
|
async function getSemver() {
|
|
@@ -82,7 +82,7 @@ async function checkAndNotifyUpdate() {
|
|
|
82
82
|
const [
|
|
83
83
|
{ isAutoUpdaterDisabled, getGlobalConfig, saveGlobalConfig },
|
|
84
84
|
{ env }
|
|
85
|
-
] = await Promise.all([import("./config-
|
|
85
|
+
] = await Promise.all([import("./config-NLO656A6.js"), import("./env-IWFZNFTP.js")]);
|
|
86
86
|
if (await isAutoUpdaterDisabled()) return;
|
|
87
87
|
if (await env.getIsDocker()) return;
|
|
88
88
|
if (!await env.hasInternetAccess()) return;
|
|
@@ -2,10 +2,10 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
debug
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-HBFOODQT.js";
|
|
6
6
|
import {
|
|
7
7
|
logError
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DFQUXY7J.js";
|
|
9
9
|
|
|
10
10
|
// src/services/system/systemReminder.ts
|
|
11
11
|
var SystemReminderService = class {
|
|
@@ -2,15 +2,15 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
loadSettingsWithLegacyFallback
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LXKU7CVC.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HBFOODQT.js";
|
|
9
9
|
import {
|
|
10
10
|
env,
|
|
11
11
|
getSessionRoot,
|
|
12
12
|
resolveXdgDataPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DFQUXY7J.js";
|
|
14
14
|
import {
|
|
15
15
|
__require
|
|
16
16
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
} from "./chunk-XKYHFZEC.js";
|
|
7
7
|
import {
|
|
8
8
|
getGlobalConfig
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IKZOQVSC.js";
|
|
10
10
|
import {
|
|
11
11
|
debug,
|
|
12
12
|
getCurrentRequest,
|
|
13
13
|
logAPIError
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-HBFOODQT.js";
|
|
15
15
|
|
|
16
16
|
// src/services/ai/openai.ts
|
|
17
17
|
import { ProxyAgent, fetch } from "undici";
|
|
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
PERSISTENCE_VERSION
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KHCVAV26.js";
|
|
6
6
|
|
|
7
7
|
// src/utils/session/conversationMessageState.ts
|
|
8
8
|
function mapFinishReason(rawReason) {
|
|
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
getSessionProjectDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5SB6YYVT.js";
|
|
6
6
|
import {
|
|
7
7
|
isUuid
|
|
8
8
|
} from "./chunk-5P7HBXTD.js";
|
|
@@ -334,6 +334,9 @@ var AUTO_COMPACT_TELEMETRY_PHASES = /* @__PURE__ */ new Set([
|
|
|
334
334
|
"AUTO_COMPACT_POST_PERSIST_CHECK",
|
|
335
335
|
"TRACKER_RESTORE_INTEGRITY_CHECK",
|
|
336
336
|
"COMPACTION_BOUNDARY_APPLIED",
|
|
337
|
+
"COMPACTION_HOOK_TURN_END",
|
|
338
|
+
"COMPACTION_HOOK_OVERFLOW_DETECTED",
|
|
339
|
+
"COMPACTION_HOOK_PRE_NEXT_TURN",
|
|
337
340
|
"TOOL_OUTPUT_LIFECYCLE_APPLIED",
|
|
338
341
|
"SESSION_TYPED_PATH_APPLIED",
|
|
339
342
|
"SESSION_TYPED_PATH_CONSISTENCY_FAILED",
|
|
@@ -870,7 +873,7 @@ function getLastAssistantMessageId(messages) {
|
|
|
870
873
|
|
|
871
874
|
// src/utils/messages/index.ts
|
|
872
875
|
async function processUserInput(input, mode, setToolJSX, context, pastedImages) {
|
|
873
|
-
const impl = await import("./userInput-
|
|
876
|
+
const impl = await import("./userInput-YJI6VWIU.js");
|
|
874
877
|
return impl.processUserInput(input, mode, setToolJSX, context, pastedImages);
|
|
875
878
|
}
|
|
876
879
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/messages/core.ts", "../src/services/ai/llmConstants.ts", "../src/services/telemetry/eventBus.ts", "../src/utils/session/autoCompactMetrics.ts", "../src/utils/session/autoCompactMetricsSink.ts", "../src/services/telemetry/autoCompactTelemetry.ts", "../src/utils/messages/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { createHash, randomUUID, UUID } from 'crypto'\nimport { AssistantMessage, Message, ProgressMessage, UserMessage } from '@query'\nimport { last, memoize } from 'lodash-es'\nimport type { Tool } from '@tool'\nimport { NO_CONTENT_MESSAGE } from '@services/llmConstants'\nimport {\n ImageBlockParam,\n TextBlockParam,\n ToolResultBlockParam,\n ToolUseBlockParam,\n Message as APIMessage,\n ContentBlockParam,\n ContentBlock,\n} from '@anthropic-ai/sdk/resources/index.mjs'\nimport { emitAutoCompactTelemetryEvent } from '@services/telemetry/autoCompactTelemetry'\n\nexport const INTERRUPT_MESSAGE = '[Request interrupted by user]'\nexport const INTERRUPT_MESSAGE_FOR_TOOL_USE =\n '[Request interrupted by user for tool use]'\nexport const CANCEL_MESSAGE =\n \"The user doesn't want to take this action right now. STOP what you are doing and wait for the user to tell you how to proceed.\"\nexport const REJECT_MESSAGE =\n \"The user doesn't want to proceed with this tool use. The tool use was rejected (eg. if it was a file edit, the new_string was NOT written to the file). STOP what you are doing and wait for the user to tell you how to proceed.\"\nexport const REJECT_MESSAGE_WITH_FEEDBACK_PREFIX = `The user doesn't want to proceed with this tool use. The tool use was rejected (eg. if it was a file edit, the new_string was NOT written to the file). To tell you how to proceed, the user said:\\n`\nexport const REJECTED_PLAN_PREFIX = `The agent proposed a plan that was rejected by the user. The user chose to stay in plan mode rather than proceed with implementation.\\n\\nRejected plan:\\n`\nexport const NO_RESPONSE_REQUESTED = 'No response requested.'\n\nexport const SYNTHETIC_ASSISTANT_MESSAGES = new Set([\n INTERRUPT_MESSAGE,\n INTERRUPT_MESSAGE_FOR_TOOL_USE,\n CANCEL_MESSAGE,\n REJECT_MESSAGE,\n NO_RESPONSE_REQUESTED,\n])\n\nfunction stableUuidFromSeed(seed: string): UUID {\n const hex = createHash('sha256').update(seed).digest('hex').slice(0, 32)\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}` as UUID\n}\n\nfunction baseCreateAssistantMessage(\n content: ContentBlock[],\n extra?: Partial<AssistantMessage>,\n): AssistantMessage {\n return {\n type: 'assistant',\n costUSD: 0,\n durationMs: 0,\n uuid: randomUUID(),\n message: {\n id: randomUUID(),\n model: '<synthetic>',\n role: 'assistant',\n stop_reason: 'stop_sequence',\n stop_sequence: '',\n type: 'message',\n usage: {\n input_tokens: 0,\n output_tokens: 0,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n },\n content,\n },\n ...extra,\n }\n}\n\nexport function createAssistantMessage(content: string): AssistantMessage {\n return baseCreateAssistantMessage([\n {\n type: 'text' as const,\n text: content === '' ? NO_CONTENT_MESSAGE : content,\n citations: [],\n },\n ])\n}\n\nexport function createAssistantAPIErrorMessage(\n content: string,\n): AssistantMessage {\n return baseCreateAssistantMessage(\n [\n {\n type: 'text' as const,\n text: content === '' ? NO_CONTENT_MESSAGE : content,\n citations: [],\n },\n ],\n { isApiErrorMessage: true },\n )\n}\n\nexport type FullToolUseResult = {\n data: unknown\n resultForAssistant: ToolResultBlockParam['content']\n newMessages?: Message[]\n contextModifier?: { modifyContext: (ctx: any) => any }\n}\n\nfunction createUserTextBlocks(content: string): ContentBlockParam[] {\n return [{ type: 'text', text: content }]\n}\n\nexport function createUserMessageFromBlocks(\n content: ContentBlockParam[],\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m: UserMessage = {\n type: 'user',\n message: {\n role: 'user',\n content,\n },\n uuid: randomUUID(),\n toolUseResult,\n options: {\n contentInputPath: 'blocks',\n },\n }\n return m\n}\n\nexport function createUserMessageFromText(\n content: string,\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m: UserMessage = {\n type: 'user',\n message: {\n role: 'user',\n content: createUserTextBlocks(content),\n },\n uuid: randomUUID(),\n toolUseResult,\n options: {\n contentInputPath: 'blocks',\n },\n }\n return m\n}\n\nexport function generateQueryId(): string {\n return randomUUID()\n}\n\nexport function createUserTurnMessageFromBlocks(\n content: ContentBlockParam[],\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m = createUserMessageFromBlocks(content, toolUseResult)\n m.queryId = generateQueryId()\n return m\n}\n\nexport function createUserTurnMessageFromText(\n content: string,\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m = createUserMessageFromText(content, toolUseResult)\n m.queryId = generateQueryId()\n return m\n}\n\nexport function createProgressMessage(\n toolUseID: string,\n siblingToolUseIDs: Set<string>,\n content: AssistantMessage,\n normalizedMessages: NormalizedMessage[],\n tools: Tool[],\n meta?: {\n progressState?: 'queued_waiting' | 'running' | 'unknown'\n },\n): ProgressMessage {\n return {\n type: 'progress',\n content,\n normalizedMessages,\n siblingToolUseIDs,\n tools,\n toolUseID,\n progressState: meta?.progressState ?? 'unknown',\n uuid: randomUUID(),\n }\n}\n\nexport function filterProgressMessagesForTools(\n messages: NormalizedMessage[],\n toolNames: Set<string>,\n): NormalizedMessage[] {\n const toolUseIds = new Set<string>()\n for (const message of messages) {\n if (message.type !== 'assistant') continue\n const block = message.message.content[0]\n if (!isToolUseLikeBlockParam(block)) continue\n if (toolNames.has(block.name)) {\n toolUseIds.add(block.id)\n }\n }\n if (toolUseIds.size === 0) return messages\n return messages.filter(\n message => message.type !== 'progress' || !toolUseIds.has(message.toolUseID),\n )\n}\n\nexport function createToolResultStopMessage(\n toolUseID: string,\n): ToolResultBlockParam {\n return {\n type: 'tool_result',\n content: CANCEL_MESSAGE,\n is_error: true,\n tool_use_id: toolUseID,\n }\n}\n\nexport function extractTagFromMessage(\n message: Message,\n tagName: string,\n): string | null {\n if (message.type === 'progress') {\n return null\n }\n if (typeof message.message.content !== 'string') {\n return null\n }\n return extractTag(message.message.content, tagName)\n}\n\nexport function extractTag(html: string, tagName: string): string | null {\n if (!html.trim() || !tagName.trim()) {\n return null\n }\n\n const escapedTag = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n const pattern = new RegExp(\n `<${escapedTag}(?:\\\\s+[^>]*)?>` + '([\\\\s\\\\S]*?)' + `<\\\\/${escapedTag}>`,\n 'gi',\n )\n\n let match\n let depth = 0\n let lastIndex = 0\n const openingTag = new RegExp(`<${escapedTag}(?:\\\\s+[^>]*?)?>`, 'gi')\n const closingTag = new RegExp(`<\\\\/${escapedTag}>`, 'gi')\n\n while ((match = pattern.exec(html)) !== null) {\n const content = match[1]\n const beforeMatch = html.slice(lastIndex, match.index)\n\n depth = 0\n\n openingTag.lastIndex = 0\n while (openingTag.exec(beforeMatch) !== null) {\n depth++\n }\n\n closingTag.lastIndex = 0\n while (closingTag.exec(beforeMatch) !== null) {\n depth--\n }\n\n if (depth === 0 && content) {\n return content\n }\n\n lastIndex = match.index + match[0].length\n }\n\n return null\n}\n\nexport function isNotEmptyMessage(message: Message): boolean {\n if (message.type === 'progress') {\n return true\n }\n\n if (typeof message.message.content === 'string') {\n return message.message.content.trim().length > 0\n }\n\n if (message.message.content.length === 0) {\n return false\n }\n\n if (message.message.content.length > 1) {\n return true\n }\n\n if (message.message.content[0]!.type !== 'text') {\n return true\n }\n\n return (\n message.message.content[0]!.text.trim().length > 0 &&\n message.message.content[0]!.text !== NO_CONTENT_MESSAGE &&\n message.message.content[0]!.text !== INTERRUPT_MESSAGE_FOR_TOOL_USE\n )\n}\n\ntype NormalizedUserMessage = {\n message: {\n content: [\n | TextBlockParam\n | ImageBlockParam\n | ToolUseBlockParam\n | ToolResultBlockParam,\n ]\n role: 'user'\n }\n type: 'user'\n uuid: UUID\n}\n\nexport type NormalizedMessage =\n | NormalizedUserMessage\n | AssistantMessage\n | ProgressMessage\n\nexport function normalizeMessages(messages: Message[]): NormalizedMessage[] {\n return messages.flatMap(message => {\n if (message.type === 'progress') {\n return [message] as NormalizedMessage[]\n }\n if (typeof message.message.content === 'string') {\n return [message] as NormalizedMessage[]\n }\n const contentBlocks = message.message.content.filter(\n block =>\n !(\n block.type === 'thinking' &&\n (typeof (block as any).thinking !== 'string' ||\n (block as any).thinking.trim().length === 0)\n ),\n )\n\n return contentBlocks.map((block, blockIndex) => {\n switch (message.type) {\n case 'assistant':\n const baseSeed = String(\n (message as any).uuid ??\n (message as any).message?.id ??\n randomUUID(),\n )\n return {\n type: 'assistant',\n uuid: stableUuidFromSeed(`${baseSeed}:${blockIndex}`),\n message: {\n ...message.message,\n content: [block],\n },\n costUSD:\n (message as AssistantMessage).costUSD / contentBlocks.length,\n durationMs: (message as AssistantMessage).durationMs,\n } as NormalizedMessage\n case 'user':\n return message as NormalizedUserMessage\n }\n })\n })\n}\n\ntype ToolUseRequestMessage = AssistantMessage & {\n message: { content: any[] }\n}\n\ntype ToolUseLikeBlockParam = ToolUseBlockParam & {\n type: 'tool_use' | 'server_tool_use' | 'mcp_tool_use'\n}\n\nfunction isToolUseLikeBlockParam(block: any): block is ToolUseLikeBlockParam {\n return (\n block &&\n typeof block === 'object' &&\n (block.type === 'tool_use' ||\n block.type === 'server_tool_use' ||\n block.type === 'mcp_tool_use') &&\n typeof block.id === 'string'\n )\n}\n\nfunction isToolUseRequestMessage(\n message: Message,\n): message is ToolUseRequestMessage {\n return (\n message.type === 'assistant' &&\n 'costUSD' in message &&\n message.message.content.some(isToolUseLikeBlockParam)\n )\n}\n\nexport function reorderMessages(\n messages: NormalizedMessage[],\n): NormalizedMessage[] {\n const ms: NormalizedMessage[] = []\n const toolUseMessages: ToolUseRequestMessage[] = []\n\n for (const message of messages) {\n if (isToolUseRequestMessage(message)) {\n toolUseMessages.push(message)\n }\n\n if (message.type === 'progress') {\n const existingProgressMessage = ms.find(\n _ => _.type === 'progress' && _.toolUseID === message.toolUseID,\n )\n if (existingProgressMessage) {\n ms[ms.indexOf(existingProgressMessage)] = message\n continue\n }\n const toolUseMessage = toolUseMessages.find(\n _ => _.message.content[0]?.id === message.toolUseID,\n )\n if (toolUseMessage) {\n ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message)\n continue\n }\n }\n\n if (\n message.type === 'user' &&\n Array.isArray(message.message.content) &&\n message.message.content[0]?.type === 'tool_result'\n ) {\n const toolUseID = (message.message.content[0] as ToolResultBlockParam)\n ?.tool_use_id\n\n const lastProgressMessage = ms.find(\n _ => _.type === 'progress' && _.toolUseID === toolUseID,\n )\n if (lastProgressMessage) {\n ms.splice(ms.indexOf(lastProgressMessage) + 1, 0, message)\n continue\n }\n\n const toolUseMessage = toolUseMessages.find(\n _ => _.message.content[0]?.id === toolUseID,\n )\n if (toolUseMessage) {\n ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message)\n continue\n }\n }\n\n else {\n ms.push(message)\n }\n }\n\n return ms\n}\n\nconst getToolResultIDs = memoize(\n (normalizedMessages: NormalizedMessage[]): { [toolUseID: string]: boolean } =>\n Object.fromEntries(\n normalizedMessages.flatMap(_ =>\n _.type === 'user' && _.message.content[0]?.type === 'tool_result'\n ? [\n [\n _.message.content[0]!.tool_use_id,\n _.message.content[0]!.is_error ?? false,\n ],\n ]\n : ([] as [string, boolean][]),\n ),\n ),\n)\n\nexport function getUnresolvedToolUseIDs(\n normalizedMessages: NormalizedMessage[],\n): Set<string> {\n const toolResults = getToolResultIDs(normalizedMessages)\n return new Set(\n normalizedMessages\n .filter(\n (\n _,\n ): _ is AssistantMessage & {\n message: { content: [ToolUseLikeBlockParam] }\n } =>\n _.type === 'assistant' &&\n Array.isArray(_.message.content) &&\n isToolUseLikeBlockParam(_.message.content[0]) &&\n !(_.message.content[0].id in toolResults),\n )\n .map(_ => _.message.content[0].id),\n )\n}\n\nexport function getInProgressToolUseIDs(\n normalizedMessages: NormalizedMessage[],\n): Set<string> {\n const unresolvedToolUseIDs = getUnresolvedToolUseIDs(normalizedMessages)\n\n function isQueuedWaitingProgressMessage(message: NormalizedMessage): boolean {\n if (message.type !== 'progress') return false\n if (message.progressState === 'queued_waiting') return true\n return false\n }\n\n const toolUseIDsThatHaveProgressMessages = new Set(\n normalizedMessages\n .filter(\n (_): _ is ProgressMessage =>\n _.type === 'progress' && !isQueuedWaitingProgressMessage(_),\n )\n .map(_ => _.toolUseID),\n )\n return new Set(\n (\n normalizedMessages.filter(_ => {\n if (_.type !== 'assistant') {\n return false\n }\n const firstBlock = _.message.content[0]\n if (!isToolUseLikeBlockParam(firstBlock)) return false\n const toolUseID = firstBlock.id\n if (toolUseID === unresolvedToolUseIDs.values().next().value) {\n return true\n }\n\n if (\n toolUseIDsThatHaveProgressMessages.has(toolUseID) &&\n unresolvedToolUseIDs.has(toolUseID)\n ) {\n return true\n }\n\n return false\n }) as AssistantMessage[]\n ).map(_ => (_.message.content[0]! as ToolUseBlockParam).id),\n )\n}\n\nexport function getErroredToolUseMessages(\n normalizedMessages: NormalizedMessage[],\n): AssistantMessage[] {\n const toolResults = getToolResultIDs(normalizedMessages)\n return normalizedMessages.filter(\n _ =>\n _.type === 'assistant' &&\n Array.isArray(_.message.content) &&\n isToolUseLikeBlockParam(_.message.content[0]) &&\n _.message.content[0].id in toolResults &&\n toolResults[_.message.content[0].id],\n ) as AssistantMessage[]\n}\n\nexport function normalizeMessagesForAPI(\n messages: Message[],\n): (UserMessage | AssistantMessage)[] {\n function isSyntheticApiErrorMessage(message: Message): boolean {\n return (\n message.type === 'assistant' &&\n message.isApiErrorMessage === true &&\n message.message.model === '<synthetic>'\n )\n }\n\n function normalizeUserContent(\n content: UserMessage['message']['content'],\n ): ContentBlockParam[] {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }]\n }\n return content\n }\n\n function toolResultsFirst(content: ContentBlockParam[]): ContentBlockParam[] {\n const toolResults: ContentBlockParam[] = []\n const rest: ContentBlockParam[] = []\n for (const block of content) {\n if (block.type === 'tool_result') {\n toolResults.push(block)\n } else {\n rest.push(block)\n }\n }\n return [...toolResults, ...rest]\n }\n\n function mergeUserMessages(\n base: UserMessage,\n next: UserMessage,\n ): UserMessage {\n const baseBlocks = normalizeUserContent(base.message.content)\n const nextBlocks = normalizeUserContent(next.message.content)\n return {\n ...base,\n message: {\n ...base.message,\n content: toolResultsFirst([...baseBlocks, ...nextBlocks]),\n },\n }\n }\n\n function isUserToolResultMessage(message: Message): message is UserMessage {\n if (message.type !== 'user') return false\n if (!Array.isArray(message.message.content)) return false\n return message.message.content.some(block => block.type === 'tool_result')\n }\n\n const result: (UserMessage | AssistantMessage)[] = []\n let userStringContentCount = 0\n let totalUserContentCount = 0\n for (const message of messages) {\n if (message.type === 'progress') continue\n if (isSyntheticApiErrorMessage(message)) continue\n\n switch (message.type) {\n case 'user': {\n totalUserContentCount += 1\n if (typeof message.message.content === 'string') {\n userStringContentCount += 1\n }\n const prev = last(result)\n if (prev?.type === 'user') {\n result[result.indexOf(prev)] = mergeUserMessages(prev, message)\n } else {\n result.push(message)\n }\n break\n }\n case 'assistant': {\n let merged = false\n for (let i = result.length - 1; i >= 0; i--) {\n const prev = result[i]\n if (prev.type !== 'assistant' && !isUserToolResultMessage(prev)) {\n break\n }\n if (prev.type === 'assistant') {\n if (prev.message.id === message.message.id) {\n result[i] = {\n ...prev,\n message: {\n ...prev.message,\n content: [\n ...(Array.isArray(prev.message.content)\n ? prev.message.content\n : []),\n ...(Array.isArray(message.message.content)\n ? message.message.content\n : []),\n ],\n },\n }\n merged = true\n }\n break\n }\n }\n if (!merged) {\n result.push(message)\n }\n break\n }\n }\n }\n\n emitAutoCompactTelemetryEvent('MESSAGE_USER_CONTENT_ADAPTED', {\n totalUserContentCount,\n userStringContentCount,\n string_input_path_usage_rate:\n totalUserContentCount > 0 ? userStringContentCount / totalUserContentCount : 0,\n })\n\n return result\n}\n\nexport function normalizeContentFromAPI(\n content: APIMessage['content'],\n): APIMessage['content'] {\n const filteredContent = content.filter(\n _ => _.type !== 'text' || _.text.trim().length > 0,\n )\n\n if (filteredContent.length === 0) {\n return [{ type: 'text', text: NO_CONTENT_MESSAGE, citations: [] }]\n }\n\n return filteredContent\n}\n\nexport function isEmptyMessageText(text: string): boolean {\n return (\n stripSystemMessages(text).trim() === '' ||\n text.trim() === NO_CONTENT_MESSAGE\n )\n}\nconst STRIPPED_TAGS = [\n 'commit_analysis',\n 'context',\n 'function_analysis',\n 'pr_analysis',\n]\n\nexport function stripSystemMessages(content: string): string {\n const regex = new RegExp(`<(${STRIPPED_TAGS.join('|')})>.*?</\\\\1>\\n?`, 'gs')\n return content.replace(regex, '').trim()\n}\n\nexport function getToolUseID(message: NormalizedMessage): string | null {\n switch (message.type) {\n case 'assistant':\n return isToolUseLikeBlockParam(message.message.content[0])\n ? message.message.content[0].id\n : null\n case 'user':\n if (message.message.content[0]?.type !== 'tool_result') {\n return null\n }\n return message.message.content[0].tool_use_id\n case 'progress':\n return message.toolUseID\n }\n}\n\nexport function getLastAssistantMessageId(\n messages: Message[],\n): string | undefined {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]\n if (message && message.type === 'assistant') {\n return message.message.id\n }\n }\n return undefined\n}\n", "export const API_ERROR_MESSAGE_PREFIX = 'API Error'\nexport const PROMPT_TOO_LONG_ERROR_MESSAGE = 'Prompt is too long'\nexport const CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = 'Credit balance is too low'\nexport const INVALID_API_KEY_ERROR_MESSAGE =\n 'Invalid API key \u00B7 Please run /login'\nexport const NO_CONTENT_MESSAGE = '(no content)'\n\nexport const MAIN_QUERY_TEMPERATURE = 1\n", "export type TelemetryEvent = {\n channel: string\n phase: string\n data?: Record<string, any>\n timestamp: number\n}\n\ntype TelemetryListener = (event: TelemetryEvent) => void\n\nconst listeners = new Map<string, TelemetryListener>()\n\nexport function registerTelemetryListener(\n listenerId: string,\n listener: TelemetryListener,\n) {\n listeners.set(listenerId, listener)\n}\n\nexport function unregisterTelemetryListener(listenerId: string) {\n listeners.delete(listenerId)\n}\n\nexport function emitTelemetryEvent(event: TelemetryEvent) {\n for (const listener of listeners.values()) {\n listener(event)\n }\n}\n\nexport function clearTelemetryListeners() {\n listeners.clear()\n}\n\n", "type EventRecord = {\n phase: string\n data?: Record<string, any>\n}\n\nexport type AutoCompactMetrics = {\n compact_invalid_shape_rate: number\n compact_retry_success_rate: number\n thinking_first_ratio: number\n cross_model_replay_error_rate: number\n structured_primary_path_rate?: number\n structured_semantic_coverage_rate?: number\n typed_primary_path_rate?: number\n typed_contract_fail_rate?: number\n recoverable_failure_rate?: number\n retry_exhausted_rate?: number\n status_compensation_failure_rate?: number\n compaction_boundary_hit_rate?: number\n overflow_replay_success_rate?: number\n compaction_reentry_success_rate?: number\n noise_ratio_after_compaction?: number\n task_goal_retention_rate?: number\n result_fidelity_rate?: number\n error_fidelity_rate?: number\n first_turn_drift_rate?: number\n tracker_restore_integrity_issue_rate?: number\n string_input_path_usage_rate?: number\n prune_marker_coverage_rate?: number\n compacted_index_integrity_rate?: number\n post_prune_noise_ratio?: number\n tool_output_aging_hit_rate?: number\n tool_output_placeholder_hit_rate?: number\n tool_output_token_reduction_rate?: number\n dangling_tool_closure_rate?: number\n w11_sample_pass_rate?: number\n w14_sample_pass_rate?: number\n}\n\nfunction safeDivide(numerator: number, denominator: number): number {\n if (denominator <= 0) return 0\n return numerator / denominator\n}\n\nexport function computeAutoCompactMetrics(events: EventRecord[]): AutoCompactMetrics {\n const failedEvents = events.filter(event => event.phase === 'AUTO_COMPACT_FAILED')\n const retryEvents = events.filter(event => event.phase === 'AUTO_COMPACT_RETRY')\n const fallbackEvents = events.filter(event => event.phase === 'AUTO_COMPACT_FALLBACK')\n\n const invalidShapeFailures = failedEvents.filter(\n event => event.data?.failureType === 'invalid_content_shape',\n ).length\n const compact_invalid_shape_rate = safeDivide(\n invalidShapeFailures,\n failedEvents.length,\n )\n\n const retrySuccessSignals = fallbackEvents.length\n const compact_retry_success_rate = safeDivide(\n retrySuccessSignals,\n retryEvents.length + fallbackEvents.length,\n )\n\n const transformAppliedEvents = events.filter(\n event => event.phase === 'MESSAGE_TRANSFORM_APPLIED',\n )\n const thinkingFirstCount = transformAppliedEvents.filter(event => {\n const stats = event.data?.outputBlockStats || {}\n const thinking = Number(stats.thinking ?? 0)\n const text = Number(stats.text ?? 0)\n return thinking > 0 && text > 0\n }).length\n const thinking_first_ratio = safeDivide(\n thinkingFirstCount,\n transformAppliedEvents.length,\n )\n\n const crossReplayTagged = events.filter(\n event =>\n event.phase === 'AUTO_COMPACT_FAILED' ||\n event.phase === 'AUTO_COMPACT_RETRY' ||\n event.phase === 'AUTO_COMPACT_FALLBACK',\n )\n const crossReplayErrors = crossReplayTagged.filter(\n event =>\n event.data?.crossModelReplay === true &&\n event.phase === 'AUTO_COMPACT_FAILED',\n ).length\n const crossReplayTotal = crossReplayTagged.filter(\n event => event.data?.crossModelReplay === true,\n ).length\n const cross_model_replay_error_rate = safeDivide(\n crossReplayErrors,\n crossReplayTotal,\n )\n const sessionTypedPathEvents = events.filter(\n event => event.phase === 'SESSION_TYPED_PATH_APPLIED',\n )\n const sessionTypedConsistencyFailedEvents = events.filter(\n event => event.phase === 'SESSION_TYPED_PATH_CONSISTENCY_FAILED',\n )\n const typedPathDecisionEventsCount =\n sessionTypedPathEvents.length + sessionTypedConsistencyFailedEvents.length\n const typed_primary_path_rate =\n sessionTypedPathEvents.length > 0\n ? safeDivide(\n sessionTypedPathEvents.length,\n sessionTypedPathEvents.length,\n )\n : undefined\n const typed_contract_fail_rate =\n typedPathDecisionEventsCount > 0\n ? safeDivide(\n sessionTypedConsistencyFailedEvents.length,\n typedPathDecisionEventsCount,\n )\n : undefined\n const recoverable_failure_rate =\n failedEvents.length + retryEvents.length > 0\n ? safeDivide(retryEvents.length, failedEvents.length + retryEvents.length)\n : undefined\n const retry_exhausted_rate =\n failedEvents.length > 0\n ? safeDivide(\n failedEvents.filter(\n event =>\n Number.isFinite(Number(event.data?.attempts)) &&\n Number(event.data?.attempts) >= 2,\n ).length,\n failedEvents.length,\n )\n : undefined\n const boundaryEvents = events.filter(\n event => event.phase === 'COMPACTION_BOUNDARY_APPLIED',\n )\n const compaction_boundary_hit_rate =\n boundaryEvents.length > 0\n ? safeDivide(\n boundaryEvents.filter(event => event.data?.applied === true).length,\n boundaryEvents.length,\n )\n : undefined\n const replayOutcomeEvents = boundaryEvents.filter(event =>\n ['replayed_latest_user_task', 'synthetic_continue_prompt'].includes(\n String(event.data?.replayMode ?? ''),\n ),\n )\n const overflow_replay_success_rate =\n replayOutcomeEvents.length > 0\n ? safeDivide(\n replayOutcomeEvents.filter(\n event => event.data?.replayMode === 'replayed_latest_user_task',\n ).length,\n replayOutcomeEvents.length,\n )\n : undefined\n const compaction_reentry_success_rate = overflow_replay_success_rate\n const pruneCoverageSamples = boundaryEvents.filter(\n event => typeof event.data?.pruneMarkerConsumed === 'boolean',\n )\n const prune_marker_coverage_rate =\n pruneCoverageSamples.length > 0\n ? safeDivide(\n pruneCoverageSamples.filter(\n event => event.data?.pruneMarkerConsumed === true,\n ).length,\n pruneCoverageSamples.length,\n )\n : undefined\n const indexIntegritySamples = boundaryEvents.filter(\n event => event.data?.indexValidationKnown === true,\n )\n const compacted_index_integrity_rate =\n indexIntegritySamples.length > 0\n ? safeDivide(\n indexIntegritySamples.filter(\n event => event.data?.indexValidationValid === true,\n ).length,\n indexIntegritySamples.length,\n )\n : undefined\n const lifecycleEvents = events.filter(\n event => event.phase === 'TOOL_OUTPUT_LIFECYCLE_APPLIED',\n )\n const lifecycleAppliedEvents = lifecycleEvents.filter(\n event => event.data?.applied !== false,\n )\n const lifecycleAgedTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.agedBlocks ?? 0),\n 0,\n )\n const lifecycleToolResultBeforeTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.totalToolResultBlocksBefore ?? 0),\n 0,\n )\n const lifecyclePlaceholderTotal = lifecycleAppliedEvents.reduce(\n (sum, event) =>\n sum +\n Number(event.data?.l2Blocks ?? 0) +\n Number(event.data?.l3Blocks ?? 0),\n 0,\n )\n const lifecycleBeforeTokensTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.beforeTokens ?? 0),\n 0,\n )\n const lifecycleTokenDeltaTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.tokenDelta ?? 0),\n 0,\n )\n const danglingDetectedTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.danglingDetected ?? 0),\n 0,\n )\n const danglingClosedTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.danglingClosed ?? 0),\n 0,\n )\n const tool_output_aging_hit_rate =\n lifecycleToolResultBeforeTotal > 0\n ? safeDivide(lifecycleAgedTotal, lifecycleToolResultBeforeTotal)\n : undefined\n const tool_output_placeholder_hit_rate =\n lifecycleAgedTotal > 0\n ? safeDivide(lifecyclePlaceholderTotal, lifecycleAgedTotal)\n : undefined\n const tool_output_token_reduction_rate =\n lifecycleBeforeTokensTotal > 0\n ? safeDivide(lifecycleTokenDeltaTotal, lifecycleBeforeTokensTotal)\n : undefined\n const dangling_tool_closure_rate =\n danglingDetectedTotal > 0\n ? safeDivide(danglingClosedTotal, danglingDetectedTotal)\n : undefined\n const status_compensation_failure_rate =\n danglingDetectedTotal > 0\n ? safeDivide(\n Math.max(0, danglingDetectedTotal - danglingClosedTotal),\n danglingDetectedTotal,\n )\n : undefined\n const lifecycleDraftEvents = events.filter(\n event => event.phase === 'TOOL_OUTPUT_LIFECYCLE_PRE_GATE_METRICS_DRAFT',\n )\n const latestLifecycleDraft =\n lifecycleDraftEvents.length > 0\n ? lifecycleDraftEvents[lifecycleDraftEvents.length - 1]\n : undefined\n const w11_sample_pass_rate = Number.isFinite(\n Number(latestLifecycleDraft?.data?.w11_sample_pass_rate),\n )\n ? Number(latestLifecycleDraft?.data?.w11_sample_pass_rate)\n : undefined\n const w14_sample_pass_rate = Number.isFinite(\n Number(latestLifecycleDraft?.data?.w14_sample_pass_rate),\n )\n ? Number(latestLifecycleDraft?.data?.w14_sample_pass_rate)\n : undefined\n const postPruneNoiseSamples = lifecycleEvents.filter(\n event =>\n Number.isFinite(Number(event.data?.beforeTokens)) &&\n Number(event.data?.beforeTokens) > 0 &&\n Number.isFinite(Number(event.data?.afterTokens)),\n )\n const post_prune_noise_ratio =\n postPruneNoiseSamples.length > 0\n ? postPruneNoiseSamples.reduce((sum, event) => {\n const before = Number(event.data?.beforeTokens)\n const after = Number(event.data?.afterTokens)\n return sum + Math.max(0, Math.min(1, safeDivide(after, before)))\n }, 0) / postPruneNoiseSamples.length\n : undefined\n\n const sanitizerEvents = events.filter(\n event => event.phase === 'AUTO_COMPACT_SANITIZER_APPLIED',\n )\n const removedNoiseTotal = sanitizerEvents.reduce(\n (sum, event) =>\n sum +\n Number(event.data?.removedReminderTags ?? 0) +\n Number(event.data?.removedToolProgressTags ?? 0),\n 0,\n )\n const changedMessagesTotal = sanitizerEvents.reduce(\n (sum, event) => sum + Number(event.data?.changedMessages ?? 0),\n 0,\n )\n const noise_ratio_after_compaction =\n changedMessagesTotal > 0\n ? Math.max(\n 0,\n Math.min(1, 1 - safeDivide(removedNoiseTotal, changedMessagesTotal * 2)),\n )\n : undefined\n const summaryInputPathEvents = events.filter(\n event => event.phase === 'AUTO_COMPACT_SUMMARY_INPUT_PATH_APPLIED',\n )\n const structuredPrimaryPathEvents = summaryInputPathEvents.filter(\n event => event.data?.mode === 'structured_primary',\n )\n const structured_primary_path_rate =\n summaryInputPathEvents.length > 0\n ? safeDivide(structuredPrimaryPathEvents.length, summaryInputPathEvents.length)\n : undefined\n const structured_semantic_coverage_rate = structured_primary_path_rate\n\n const qualityEvents = events.filter(\n event => event.phase === 'AUTO_COMPACT_SUMMARY_QUALITY',\n )\n const goalSamples = qualityEvents.filter(\n event => typeof event.data?.taskGoalRetained === 'boolean',\n )\n const resultSamples = qualityEvents.filter(\n event => typeof event.data?.hasResultInput === 'boolean',\n )\n const errorSamples = qualityEvents.filter(\n event => typeof event.data?.hasErrorInput === 'boolean',\n )\n const task_goal_retention_rate =\n goalSamples.length > 0\n ? safeDivide(\n goalSamples.filter(event => event.data?.taskGoalRetained === true).length,\n goalSamples.length,\n )\n : undefined\n const result_fidelity_rate =\n resultSamples.length > 0\n ? safeDivide(\n resultSamples.filter(event => {\n if (event.data?.hasResultInput !== true) return true\n return event.data?.hasResultSummary === true\n }).length,\n resultSamples.length,\n )\n : undefined\n const error_fidelity_rate =\n errorSamples.length > 0\n ? safeDivide(\n errorSamples.filter(event => {\n if (event.data?.hasErrorInput !== true) return true\n return event.data?.hasErrorSummary === true\n }).length,\n errorSamples.length,\n )\n : undefined\n const first_turn_drift_rate =\n task_goal_retention_rate === undefined ? undefined : 1 - task_goal_retention_rate\n const restoreIntegrityEvents = events.filter(\n event => event.phase === 'TRACKER_RESTORE_INTEGRITY_CHECK',\n )\n const restoreIntegrityIssueCount = restoreIntegrityEvents.filter(event => {\n const isConsistent = event.data?.isConsistent\n if (typeof isConsistent === 'boolean') return isConsistent === false\n return Number(event.data?.droppedCount ?? 0) > 0\n }).length\n const tracker_restore_integrity_issue_rate =\n restoreIntegrityEvents.length > 0\n ? safeDivide(restoreIntegrityIssueCount, restoreIntegrityEvents.length)\n : undefined\n const userContentAdaptedEvents = events.filter(\n event => event.phase === 'MESSAGE_USER_CONTENT_ADAPTED',\n )\n const stringInputPathNumerator = userContentAdaptedEvents.reduce((sum, event) => {\n const eventTotal = Number(event.data?.totalUserContentCount ?? 0)\n const eventString = Number(event.data?.userStringContentCount ?? 0)\n if (!Number.isFinite(eventTotal) || eventTotal <= 0) return sum\n if (!Number.isFinite(eventString) || eventString < 0) return sum\n return sum + Math.min(eventTotal, eventString)\n }, 0)\n const stringInputPathDenominator = userContentAdaptedEvents.reduce((sum, event) => {\n const eventTotal = Number(event.data?.totalUserContentCount ?? 0)\n if (!Number.isFinite(eventTotal) || eventTotal <= 0) return sum\n return sum + eventTotal\n }, 0)\n const string_input_path_usage_rate =\n stringInputPathDenominator > 0\n ? safeDivide(stringInputPathNumerator, stringInputPathDenominator)\n : undefined\n\n return {\n compact_invalid_shape_rate,\n compact_retry_success_rate,\n thinking_first_ratio,\n cross_model_replay_error_rate,\n structured_primary_path_rate,\n structured_semantic_coverage_rate,\n typed_primary_path_rate,\n typed_contract_fail_rate,\n recoverable_failure_rate,\n retry_exhausted_rate,\n status_compensation_failure_rate,\n compaction_boundary_hit_rate,\n overflow_replay_success_rate,\n compaction_reentry_success_rate,\n noise_ratio_after_compaction,\n task_goal_retention_rate,\n result_fidelity_rate,\n error_fidelity_rate,\n first_turn_drift_rate,\n tracker_restore_integrity_issue_rate,\n string_input_path_usage_rate,\n prune_marker_coverage_rate,\n compacted_index_integrity_rate,\n post_prune_noise_ratio,\n tool_output_aging_hit_rate,\n tool_output_placeholder_hit_rate,\n tool_output_token_reduction_rate,\n dangling_tool_closure_rate,\n w11_sample_pass_rate,\n w14_sample_pass_rate,\n }\n}\n", "import {\n computeAutoCompactMetrics,\n type AutoCompactMetrics,\n} from './autoCompactMetrics'\n\ntype SinkEvent = {\n phase: string\n data?: Record<string, any>\n}\n\nexport function createAutoCompactMetricsSink() {\n const events: SinkEvent[] = []\n return {\n push(event: SinkEvent) {\n events.push(event)\n },\n snapshot(): { eventCount: number; metrics: AutoCompactMetrics } {\n return {\n eventCount: events.length,\n metrics: computeAutoCompactMetrics(events),\n }\n },\n clear() {\n events.length = 0\n },\n }\n}\n\n", "import {\n registerTelemetryListener,\n emitTelemetryEvent,\n type TelemetryEvent,\n} from './eventBus'\nimport { createAutoCompactMetricsSink } from '@utils/session/autoCompactMetricsSink'\n\nconst AUTO_COMPACT_TELEMETRY_PHASES = new Set([\n 'AUTO_COMPACT_FAILED',\n 'AUTO_COMPACT_RETRY',\n 'AUTO_COMPACT_FALLBACK',\n 'MESSAGE_TRANSFORM_APPLIED',\n 'AUTO_COMPACT_SUMMARY_INPUT_PATH_APPLIED',\n 'AUTO_COMPACT_SUMMARY_QUALITY',\n 'AUTO_COMPACT_BUDGET_APPLIED',\n 'AUTO_COMPACT_POST_PERSIST_CHECK',\n 'TRACKER_RESTORE_INTEGRITY_CHECK',\n 'COMPACTION_BOUNDARY_APPLIED',\n 'TOOL_OUTPUT_LIFECYCLE_APPLIED',\n 'SESSION_TYPED_PATH_APPLIED',\n 'SESSION_TYPED_PATH_CONSISTENCY_FAILED',\n 'SESSION_TYPED_PATH_POLICY_APPLIED',\n 'SESSION_TYPED_PATH_AUTO_DEGRADED',\n 'MESSAGE_USER_CONTENT_ADAPTED',\n 'AUTO_COMPACT_TASK_NODE_CREATED',\n 'AUTO_COMPACT_TASK_NODE_TRANSITION',\n 'AUTO_COMPACT_TASK_NODE_FAILED',\n 'AUTO_COMPACT_OVERFLOW_JOINT_DECISION_DRAFT',\n])\n\nconst AUTO_COMPACT_SINK_LISTENER_ID = 'auto-compact-metrics-sink'\nconst autoCompactSink = createAutoCompactMetricsSink()\nlet sinkRegistered = false\n\nexport function ensureAutoCompactTelemetryRegistered() {\n if (sinkRegistered) return\n registerTelemetryListener(AUTO_COMPACT_SINK_LISTENER_ID, event => {\n if (!AUTO_COMPACT_TELEMETRY_PHASES.has(event.phase)) return\n autoCompactSink.push({\n phase: event.phase,\n data: event.data,\n })\n })\n sinkRegistered = true\n}\n\nexport function emitAutoCompactTelemetryEvent(\n phase: string,\n data?: Record<string, any>,\n) {\n ensureAutoCompactTelemetryRegistered()\n emitTelemetryEvent({\n channel: 'auto_compact',\n phase,\n data,\n timestamp: Date.now(),\n })\n}\n\nexport function getAutoCompactMetricsSnapshot() {\n ensureAutoCompactTelemetryRegistered()\n return autoCompactSink.snapshot()\n}\n\nexport function resetAutoCompactTelemetry() {\n autoCompactSink.clear()\n}\n\nexport function mapDebugEventToTelemetryEvent(\n phase: string,\n data?: Record<string, any>,\n): TelemetryEvent {\n return {\n channel: 'auto_compact',\n phase,\n data,\n timestamp: Date.now(),\n }\n}\n\nensureAutoCompactTelemetryRegistered()\n", "export * from './core'\n\nimport type { SetToolJSXFn, ToolUseContext } from '@tool'\nimport type { Message } from '@query'\n\nexport async function processUserInput(\n input: string,\n mode: 'bash' | 'prompt' | 'pyb',\n setToolJSX: SetToolJSXFn,\n context: ToolUseContext & {\n setForkConvoWithMessagesOnTheNextRender: (\n forkConvoWithMessages: Message[],\n ) => void\n options?: {\n isPybRequest?: boolean\n pybContext?: string\n }\n },\n pastedImages: Array<{\n placeholder: string\n data: string\n mediaType: string\n }> | null,\n): Promise<Message[]> {\n const impl = await import('./userInput')\n return impl.processUserInput(input, mode, setToolJSX, context, pastedImages)\n}\n\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { createHash, randomUUID, UUID } from 'crypto'\nimport { AssistantMessage, Message, ProgressMessage, UserMessage } from '@query'\nimport { last, memoize } from 'lodash-es'\nimport type { Tool } from '@tool'\nimport { NO_CONTENT_MESSAGE } from '@services/llmConstants'\nimport {\n ImageBlockParam,\n TextBlockParam,\n ToolResultBlockParam,\n ToolUseBlockParam,\n Message as APIMessage,\n ContentBlockParam,\n ContentBlock,\n} from '@anthropic-ai/sdk/resources/index.mjs'\nimport { emitAutoCompactTelemetryEvent } from '@services/telemetry/autoCompactTelemetry'\n\nexport const INTERRUPT_MESSAGE = '[Request interrupted by user]'\nexport const INTERRUPT_MESSAGE_FOR_TOOL_USE =\n '[Request interrupted by user for tool use]'\nexport const CANCEL_MESSAGE =\n \"The user doesn't want to take this action right now. STOP what you are doing and wait for the user to tell you how to proceed.\"\nexport const REJECT_MESSAGE =\n \"The user doesn't want to proceed with this tool use. The tool use was rejected (eg. if it was a file edit, the new_string was NOT written to the file). STOP what you are doing and wait for the user to tell you how to proceed.\"\nexport const REJECT_MESSAGE_WITH_FEEDBACK_PREFIX = `The user doesn't want to proceed with this tool use. The tool use was rejected (eg. if it was a file edit, the new_string was NOT written to the file). To tell you how to proceed, the user said:\\n`\nexport const REJECTED_PLAN_PREFIX = `The agent proposed a plan that was rejected by the user. The user chose to stay in plan mode rather than proceed with implementation.\\n\\nRejected plan:\\n`\nexport const NO_RESPONSE_REQUESTED = 'No response requested.'\n\nexport const SYNTHETIC_ASSISTANT_MESSAGES = new Set([\n INTERRUPT_MESSAGE,\n INTERRUPT_MESSAGE_FOR_TOOL_USE,\n CANCEL_MESSAGE,\n REJECT_MESSAGE,\n NO_RESPONSE_REQUESTED,\n])\n\nfunction stableUuidFromSeed(seed: string): UUID {\n const hex = createHash('sha256').update(seed).digest('hex').slice(0, 32)\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}` as UUID\n}\n\nfunction baseCreateAssistantMessage(\n content: ContentBlock[],\n extra?: Partial<AssistantMessage>,\n): AssistantMessage {\n return {\n type: 'assistant',\n costUSD: 0,\n durationMs: 0,\n uuid: randomUUID(),\n message: {\n id: randomUUID(),\n model: '<synthetic>',\n role: 'assistant',\n stop_reason: 'stop_sequence',\n stop_sequence: '',\n type: 'message',\n usage: {\n input_tokens: 0,\n output_tokens: 0,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n },\n content,\n },\n ...extra,\n }\n}\n\nexport function createAssistantMessage(content: string): AssistantMessage {\n return baseCreateAssistantMessage([\n {\n type: 'text' as const,\n text: content === '' ? NO_CONTENT_MESSAGE : content,\n citations: [],\n },\n ])\n}\n\nexport function createAssistantAPIErrorMessage(\n content: string,\n): AssistantMessage {\n return baseCreateAssistantMessage(\n [\n {\n type: 'text' as const,\n text: content === '' ? NO_CONTENT_MESSAGE : content,\n citations: [],\n },\n ],\n { isApiErrorMessage: true },\n )\n}\n\nexport type FullToolUseResult = {\n data: unknown\n resultForAssistant: ToolResultBlockParam['content']\n newMessages?: Message[]\n contextModifier?: { modifyContext: (ctx: any) => any }\n}\n\nfunction createUserTextBlocks(content: string): ContentBlockParam[] {\n return [{ type: 'text', text: content }]\n}\n\nexport function createUserMessageFromBlocks(\n content: ContentBlockParam[],\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m: UserMessage = {\n type: 'user',\n message: {\n role: 'user',\n content,\n },\n uuid: randomUUID(),\n toolUseResult,\n options: {\n contentInputPath: 'blocks',\n },\n }\n return m\n}\n\nexport function createUserMessageFromText(\n content: string,\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m: UserMessage = {\n type: 'user',\n message: {\n role: 'user',\n content: createUserTextBlocks(content),\n },\n uuid: randomUUID(),\n toolUseResult,\n options: {\n contentInputPath: 'blocks',\n },\n }\n return m\n}\n\nexport function generateQueryId(): string {\n return randomUUID()\n}\n\nexport function createUserTurnMessageFromBlocks(\n content: ContentBlockParam[],\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m = createUserMessageFromBlocks(content, toolUseResult)\n m.queryId = generateQueryId()\n return m\n}\n\nexport function createUserTurnMessageFromText(\n content: string,\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m = createUserMessageFromText(content, toolUseResult)\n m.queryId = generateQueryId()\n return m\n}\n\nexport function createProgressMessage(\n toolUseID: string,\n siblingToolUseIDs: Set<string>,\n content: AssistantMessage,\n normalizedMessages: NormalizedMessage[],\n tools: Tool[],\n meta?: {\n progressState?: 'queued_waiting' | 'running' | 'unknown'\n },\n): ProgressMessage {\n return {\n type: 'progress',\n content,\n normalizedMessages,\n siblingToolUseIDs,\n tools,\n toolUseID,\n progressState: meta?.progressState ?? 'unknown',\n uuid: randomUUID(),\n }\n}\n\nexport function filterProgressMessagesForTools(\n messages: NormalizedMessage[],\n toolNames: Set<string>,\n): NormalizedMessage[] {\n const toolUseIds = new Set<string>()\n for (const message of messages) {\n if (message.type !== 'assistant') continue\n const block = message.message.content[0]\n if (!isToolUseLikeBlockParam(block)) continue\n if (toolNames.has(block.name)) {\n toolUseIds.add(block.id)\n }\n }\n if (toolUseIds.size === 0) return messages\n return messages.filter(\n message => message.type !== 'progress' || !toolUseIds.has(message.toolUseID),\n )\n}\n\nexport function createToolResultStopMessage(\n toolUseID: string,\n): ToolResultBlockParam {\n return {\n type: 'tool_result',\n content: CANCEL_MESSAGE,\n is_error: true,\n tool_use_id: toolUseID,\n }\n}\n\nexport function extractTagFromMessage(\n message: Message,\n tagName: string,\n): string | null {\n if (message.type === 'progress') {\n return null\n }\n if (typeof message.message.content !== 'string') {\n return null\n }\n return extractTag(message.message.content, tagName)\n}\n\nexport function extractTag(html: string, tagName: string): string | null {\n if (!html.trim() || !tagName.trim()) {\n return null\n }\n\n const escapedTag = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n const pattern = new RegExp(\n `<${escapedTag}(?:\\\\s+[^>]*)?>` + '([\\\\s\\\\S]*?)' + `<\\\\/${escapedTag}>`,\n 'gi',\n )\n\n let match\n let depth = 0\n let lastIndex = 0\n const openingTag = new RegExp(`<${escapedTag}(?:\\\\s+[^>]*?)?>`, 'gi')\n const closingTag = new RegExp(`<\\\\/${escapedTag}>`, 'gi')\n\n while ((match = pattern.exec(html)) !== null) {\n const content = match[1]\n const beforeMatch = html.slice(lastIndex, match.index)\n\n depth = 0\n\n openingTag.lastIndex = 0\n while (openingTag.exec(beforeMatch) !== null) {\n depth++\n }\n\n closingTag.lastIndex = 0\n while (closingTag.exec(beforeMatch) !== null) {\n depth--\n }\n\n if (depth === 0 && content) {\n return content\n }\n\n lastIndex = match.index + match[0].length\n }\n\n return null\n}\n\nexport function isNotEmptyMessage(message: Message): boolean {\n if (message.type === 'progress') {\n return true\n }\n\n if (typeof message.message.content === 'string') {\n return message.message.content.trim().length > 0\n }\n\n if (message.message.content.length === 0) {\n return false\n }\n\n if (message.message.content.length > 1) {\n return true\n }\n\n if (message.message.content[0]!.type !== 'text') {\n return true\n }\n\n return (\n message.message.content[0]!.text.trim().length > 0 &&\n message.message.content[0]!.text !== NO_CONTENT_MESSAGE &&\n message.message.content[0]!.text !== INTERRUPT_MESSAGE_FOR_TOOL_USE\n )\n}\n\ntype NormalizedUserMessage = {\n message: {\n content: [\n | TextBlockParam\n | ImageBlockParam\n | ToolUseBlockParam\n | ToolResultBlockParam,\n ]\n role: 'user'\n }\n type: 'user'\n uuid: UUID\n}\n\nexport type NormalizedMessage =\n | NormalizedUserMessage\n | AssistantMessage\n | ProgressMessage\n\nexport function normalizeMessages(messages: Message[]): NormalizedMessage[] {\n return messages.flatMap(message => {\n if (message.type === 'progress') {\n return [message] as NormalizedMessage[]\n }\n if (typeof message.message.content === 'string') {\n return [message] as NormalizedMessage[]\n }\n const contentBlocks = message.message.content.filter(\n block =>\n !(\n block.type === 'thinking' &&\n (typeof (block as any).thinking !== 'string' ||\n (block as any).thinking.trim().length === 0)\n ),\n )\n\n return contentBlocks.map((block, blockIndex) => {\n switch (message.type) {\n case 'assistant':\n const baseSeed = String(\n (message as any).uuid ??\n (message as any).message?.id ??\n randomUUID(),\n )\n return {\n type: 'assistant',\n uuid: stableUuidFromSeed(`${baseSeed}:${blockIndex}`),\n message: {\n ...message.message,\n content: [block],\n },\n costUSD:\n (message as AssistantMessage).costUSD / contentBlocks.length,\n durationMs: (message as AssistantMessage).durationMs,\n } as NormalizedMessage\n case 'user':\n return message as NormalizedUserMessage\n }\n })\n })\n}\n\ntype ToolUseRequestMessage = AssistantMessage & {\n message: { content: any[] }\n}\n\ntype ToolUseLikeBlockParam = ToolUseBlockParam & {\n type: 'tool_use' | 'server_tool_use' | 'mcp_tool_use'\n}\n\nfunction isToolUseLikeBlockParam(block: any): block is ToolUseLikeBlockParam {\n return (\n block &&\n typeof block === 'object' &&\n (block.type === 'tool_use' ||\n block.type === 'server_tool_use' ||\n block.type === 'mcp_tool_use') &&\n typeof block.id === 'string'\n )\n}\n\nfunction isToolUseRequestMessage(\n message: Message,\n): message is ToolUseRequestMessage {\n return (\n message.type === 'assistant' &&\n 'costUSD' in message &&\n message.message.content.some(isToolUseLikeBlockParam)\n )\n}\n\nexport function reorderMessages(\n messages: NormalizedMessage[],\n): NormalizedMessage[] {\n const ms: NormalizedMessage[] = []\n const toolUseMessages: ToolUseRequestMessage[] = []\n\n for (const message of messages) {\n if (isToolUseRequestMessage(message)) {\n toolUseMessages.push(message)\n }\n\n if (message.type === 'progress') {\n const existingProgressMessage = ms.find(\n _ => _.type === 'progress' && _.toolUseID === message.toolUseID,\n )\n if (existingProgressMessage) {\n ms[ms.indexOf(existingProgressMessage)] = message\n continue\n }\n const toolUseMessage = toolUseMessages.find(\n _ => _.message.content[0]?.id === message.toolUseID,\n )\n if (toolUseMessage) {\n ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message)\n continue\n }\n }\n\n if (\n message.type === 'user' &&\n Array.isArray(message.message.content) &&\n message.message.content[0]?.type === 'tool_result'\n ) {\n const toolUseID = (message.message.content[0] as ToolResultBlockParam)\n ?.tool_use_id\n\n const lastProgressMessage = ms.find(\n _ => _.type === 'progress' && _.toolUseID === toolUseID,\n )\n if (lastProgressMessage) {\n ms.splice(ms.indexOf(lastProgressMessage) + 1, 0, message)\n continue\n }\n\n const toolUseMessage = toolUseMessages.find(\n _ => _.message.content[0]?.id === toolUseID,\n )\n if (toolUseMessage) {\n ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message)\n continue\n }\n }\n\n else {\n ms.push(message)\n }\n }\n\n return ms\n}\n\nconst getToolResultIDs = memoize(\n (normalizedMessages: NormalizedMessage[]): { [toolUseID: string]: boolean } =>\n Object.fromEntries(\n normalizedMessages.flatMap(_ =>\n _.type === 'user' && _.message.content[0]?.type === 'tool_result'\n ? [\n [\n _.message.content[0]!.tool_use_id,\n _.message.content[0]!.is_error ?? false,\n ],\n ]\n : ([] as [string, boolean][]),\n ),\n ),\n)\n\nexport function getUnresolvedToolUseIDs(\n normalizedMessages: NormalizedMessage[],\n): Set<string> {\n const toolResults = getToolResultIDs(normalizedMessages)\n return new Set(\n normalizedMessages\n .filter(\n (\n _,\n ): _ is AssistantMessage & {\n message: { content: [ToolUseLikeBlockParam] }\n } =>\n _.type === 'assistant' &&\n Array.isArray(_.message.content) &&\n isToolUseLikeBlockParam(_.message.content[0]) &&\n !(_.message.content[0].id in toolResults),\n )\n .map(_ => _.message.content[0].id),\n )\n}\n\nexport function getInProgressToolUseIDs(\n normalizedMessages: NormalizedMessage[],\n): Set<string> {\n const unresolvedToolUseIDs = getUnresolvedToolUseIDs(normalizedMessages)\n\n function isQueuedWaitingProgressMessage(message: NormalizedMessage): boolean {\n if (message.type !== 'progress') return false\n if (message.progressState === 'queued_waiting') return true\n return false\n }\n\n const toolUseIDsThatHaveProgressMessages = new Set(\n normalizedMessages\n .filter(\n (_): _ is ProgressMessage =>\n _.type === 'progress' && !isQueuedWaitingProgressMessage(_),\n )\n .map(_ => _.toolUseID),\n )\n return new Set(\n (\n normalizedMessages.filter(_ => {\n if (_.type !== 'assistant') {\n return false\n }\n const firstBlock = _.message.content[0]\n if (!isToolUseLikeBlockParam(firstBlock)) return false\n const toolUseID = firstBlock.id\n if (toolUseID === unresolvedToolUseIDs.values().next().value) {\n return true\n }\n\n if (\n toolUseIDsThatHaveProgressMessages.has(toolUseID) &&\n unresolvedToolUseIDs.has(toolUseID)\n ) {\n return true\n }\n\n return false\n }) as AssistantMessage[]\n ).map(_ => (_.message.content[0]! as ToolUseBlockParam).id),\n )\n}\n\nexport function getErroredToolUseMessages(\n normalizedMessages: NormalizedMessage[],\n): AssistantMessage[] {\n const toolResults = getToolResultIDs(normalizedMessages)\n return normalizedMessages.filter(\n _ =>\n _.type === 'assistant' &&\n Array.isArray(_.message.content) &&\n isToolUseLikeBlockParam(_.message.content[0]) &&\n _.message.content[0].id in toolResults &&\n toolResults[_.message.content[0].id],\n ) as AssistantMessage[]\n}\n\nexport function normalizeMessagesForAPI(\n messages: Message[],\n): (UserMessage | AssistantMessage)[] {\n function isSyntheticApiErrorMessage(message: Message): boolean {\n return (\n message.type === 'assistant' &&\n message.isApiErrorMessage === true &&\n message.message.model === '<synthetic>'\n )\n }\n\n function normalizeUserContent(\n content: UserMessage['message']['content'],\n ): ContentBlockParam[] {\n if (typeof content === 'string') {\n return [{ type: 'text', text: content }]\n }\n return content\n }\n\n function toolResultsFirst(content: ContentBlockParam[]): ContentBlockParam[] {\n const toolResults: ContentBlockParam[] = []\n const rest: ContentBlockParam[] = []\n for (const block of content) {\n if (block.type === 'tool_result') {\n toolResults.push(block)\n } else {\n rest.push(block)\n }\n }\n return [...toolResults, ...rest]\n }\n\n function mergeUserMessages(\n base: UserMessage,\n next: UserMessage,\n ): UserMessage {\n const baseBlocks = normalizeUserContent(base.message.content)\n const nextBlocks = normalizeUserContent(next.message.content)\n return {\n ...base,\n message: {\n ...base.message,\n content: toolResultsFirst([...baseBlocks, ...nextBlocks]),\n },\n }\n }\n\n function isUserToolResultMessage(message: Message): message is UserMessage {\n if (message.type !== 'user') return false\n if (!Array.isArray(message.message.content)) return false\n return message.message.content.some(block => block.type === 'tool_result')\n }\n\n const result: (UserMessage | AssistantMessage)[] = []\n let userStringContentCount = 0\n let totalUserContentCount = 0\n for (const message of messages) {\n if (message.type === 'progress') continue\n if (isSyntheticApiErrorMessage(message)) continue\n\n switch (message.type) {\n case 'user': {\n totalUserContentCount += 1\n if (typeof message.message.content === 'string') {\n userStringContentCount += 1\n }\n const prev = last(result)\n if (prev?.type === 'user') {\n result[result.indexOf(prev)] = mergeUserMessages(prev, message)\n } else {\n result.push(message)\n }\n break\n }\n case 'assistant': {\n let merged = false\n for (let i = result.length - 1; i >= 0; i--) {\n const prev = result[i]\n if (prev.type !== 'assistant' && !isUserToolResultMessage(prev)) {\n break\n }\n if (prev.type === 'assistant') {\n if (prev.message.id === message.message.id) {\n result[i] = {\n ...prev,\n message: {\n ...prev.message,\n content: [\n ...(Array.isArray(prev.message.content)\n ? prev.message.content\n : []),\n ...(Array.isArray(message.message.content)\n ? message.message.content\n : []),\n ],\n },\n }\n merged = true\n }\n break\n }\n }\n if (!merged) {\n result.push(message)\n }\n break\n }\n }\n }\n\n emitAutoCompactTelemetryEvent('MESSAGE_USER_CONTENT_ADAPTED', {\n totalUserContentCount,\n userStringContentCount,\n string_input_path_usage_rate:\n totalUserContentCount > 0 ? userStringContentCount / totalUserContentCount : 0,\n })\n\n return result\n}\n\nexport function normalizeContentFromAPI(\n content: APIMessage['content'],\n): APIMessage['content'] {\n const filteredContent = content.filter(\n _ => _.type !== 'text' || _.text.trim().length > 0,\n )\n\n if (filteredContent.length === 0) {\n return [{ type: 'text', text: NO_CONTENT_MESSAGE, citations: [] }]\n }\n\n return filteredContent\n}\n\nexport function isEmptyMessageText(text: string): boolean {\n return (\n stripSystemMessages(text).trim() === '' ||\n text.trim() === NO_CONTENT_MESSAGE\n )\n}\nconst STRIPPED_TAGS = [\n 'commit_analysis',\n 'context',\n 'function_analysis',\n 'pr_analysis',\n]\n\nexport function stripSystemMessages(content: string): string {\n const regex = new RegExp(`<(${STRIPPED_TAGS.join('|')})>.*?</\\\\1>\\n?`, 'gs')\n return content.replace(regex, '').trim()\n}\n\nexport function getToolUseID(message: NormalizedMessage): string | null {\n switch (message.type) {\n case 'assistant':\n return isToolUseLikeBlockParam(message.message.content[0])\n ? message.message.content[0].id\n : null\n case 'user':\n if (message.message.content[0]?.type !== 'tool_result') {\n return null\n }\n return message.message.content[0].tool_use_id\n case 'progress':\n return message.toolUseID\n }\n}\n\nexport function getLastAssistantMessageId(\n messages: Message[],\n): string | undefined {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]\n if (message && message.type === 'assistant') {\n return message.message.id\n }\n }\n return undefined\n}\n", "export const API_ERROR_MESSAGE_PREFIX = 'API Error'\nexport const PROMPT_TOO_LONG_ERROR_MESSAGE = 'Prompt is too long'\nexport const CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = 'Credit balance is too low'\nexport const INVALID_API_KEY_ERROR_MESSAGE =\n 'Invalid API key \u00B7 Please run /login'\nexport const NO_CONTENT_MESSAGE = '(no content)'\n\nexport const MAIN_QUERY_TEMPERATURE = 1\n", "export type TelemetryEvent = {\n channel: string\n phase: string\n data?: Record<string, any>\n timestamp: number\n}\n\ntype TelemetryListener = (event: TelemetryEvent) => void\n\nconst listeners = new Map<string, TelemetryListener>()\n\nexport function registerTelemetryListener(\n listenerId: string,\n listener: TelemetryListener,\n) {\n listeners.set(listenerId, listener)\n}\n\nexport function unregisterTelemetryListener(listenerId: string) {\n listeners.delete(listenerId)\n}\n\nexport function emitTelemetryEvent(event: TelemetryEvent) {\n for (const listener of listeners.values()) {\n listener(event)\n }\n}\n\nexport function clearTelemetryListeners() {\n listeners.clear()\n}\n\n", "type EventRecord = {\n phase: string\n data?: Record<string, any>\n}\n\nexport type AutoCompactMetrics = {\n compact_invalid_shape_rate: number\n compact_retry_success_rate: number\n thinking_first_ratio: number\n cross_model_replay_error_rate: number\n structured_primary_path_rate?: number\n structured_semantic_coverage_rate?: number\n typed_primary_path_rate?: number\n typed_contract_fail_rate?: number\n recoverable_failure_rate?: number\n retry_exhausted_rate?: number\n status_compensation_failure_rate?: number\n compaction_boundary_hit_rate?: number\n overflow_replay_success_rate?: number\n compaction_reentry_success_rate?: number\n noise_ratio_after_compaction?: number\n task_goal_retention_rate?: number\n result_fidelity_rate?: number\n error_fidelity_rate?: number\n first_turn_drift_rate?: number\n tracker_restore_integrity_issue_rate?: number\n string_input_path_usage_rate?: number\n prune_marker_coverage_rate?: number\n compacted_index_integrity_rate?: number\n post_prune_noise_ratio?: number\n tool_output_aging_hit_rate?: number\n tool_output_placeholder_hit_rate?: number\n tool_output_token_reduction_rate?: number\n dangling_tool_closure_rate?: number\n w11_sample_pass_rate?: number\n w14_sample_pass_rate?: number\n}\n\nfunction safeDivide(numerator: number, denominator: number): number {\n if (denominator <= 0) return 0\n return numerator / denominator\n}\n\nexport function computeAutoCompactMetrics(events: EventRecord[]): AutoCompactMetrics {\n const failedEvents = events.filter(event => event.phase === 'AUTO_COMPACT_FAILED')\n const retryEvents = events.filter(event => event.phase === 'AUTO_COMPACT_RETRY')\n const fallbackEvents = events.filter(event => event.phase === 'AUTO_COMPACT_FALLBACK')\n\n const invalidShapeFailures = failedEvents.filter(\n event => event.data?.failureType === 'invalid_content_shape',\n ).length\n const compact_invalid_shape_rate = safeDivide(\n invalidShapeFailures,\n failedEvents.length,\n )\n\n const retrySuccessSignals = fallbackEvents.length\n const compact_retry_success_rate = safeDivide(\n retrySuccessSignals,\n retryEvents.length + fallbackEvents.length,\n )\n\n const transformAppliedEvents = events.filter(\n event => event.phase === 'MESSAGE_TRANSFORM_APPLIED',\n )\n const thinkingFirstCount = transformAppliedEvents.filter(event => {\n const stats = event.data?.outputBlockStats || {}\n const thinking = Number(stats.thinking ?? 0)\n const text = Number(stats.text ?? 0)\n return thinking > 0 && text > 0\n }).length\n const thinking_first_ratio = safeDivide(\n thinkingFirstCount,\n transformAppliedEvents.length,\n )\n\n const crossReplayTagged = events.filter(\n event =>\n event.phase === 'AUTO_COMPACT_FAILED' ||\n event.phase === 'AUTO_COMPACT_RETRY' ||\n event.phase === 'AUTO_COMPACT_FALLBACK',\n )\n const crossReplayErrors = crossReplayTagged.filter(\n event =>\n event.data?.crossModelReplay === true &&\n event.phase === 'AUTO_COMPACT_FAILED',\n ).length\n const crossReplayTotal = crossReplayTagged.filter(\n event => event.data?.crossModelReplay === true,\n ).length\n const cross_model_replay_error_rate = safeDivide(\n crossReplayErrors,\n crossReplayTotal,\n )\n const sessionTypedPathEvents = events.filter(\n event => event.phase === 'SESSION_TYPED_PATH_APPLIED',\n )\n const sessionTypedConsistencyFailedEvents = events.filter(\n event => event.phase === 'SESSION_TYPED_PATH_CONSISTENCY_FAILED',\n )\n const typedPathDecisionEventsCount =\n sessionTypedPathEvents.length + sessionTypedConsistencyFailedEvents.length\n const typed_primary_path_rate =\n sessionTypedPathEvents.length > 0\n ? safeDivide(\n sessionTypedPathEvents.length,\n sessionTypedPathEvents.length,\n )\n : undefined\n const typed_contract_fail_rate =\n typedPathDecisionEventsCount > 0\n ? safeDivide(\n sessionTypedConsistencyFailedEvents.length,\n typedPathDecisionEventsCount,\n )\n : undefined\n const recoverable_failure_rate =\n failedEvents.length + retryEvents.length > 0\n ? safeDivide(retryEvents.length, failedEvents.length + retryEvents.length)\n : undefined\n const retry_exhausted_rate =\n failedEvents.length > 0\n ? safeDivide(\n failedEvents.filter(\n event =>\n Number.isFinite(Number(event.data?.attempts)) &&\n Number(event.data?.attempts) >= 2,\n ).length,\n failedEvents.length,\n )\n : undefined\n const boundaryEvents = events.filter(\n event => event.phase === 'COMPACTION_BOUNDARY_APPLIED',\n )\n const compaction_boundary_hit_rate =\n boundaryEvents.length > 0\n ? safeDivide(\n boundaryEvents.filter(event => event.data?.applied === true).length,\n boundaryEvents.length,\n )\n : undefined\n const replayOutcomeEvents = boundaryEvents.filter(event =>\n ['replayed_latest_user_task', 'synthetic_continue_prompt'].includes(\n String(event.data?.replayMode ?? ''),\n ),\n )\n const overflow_replay_success_rate =\n replayOutcomeEvents.length > 0\n ? safeDivide(\n replayOutcomeEvents.filter(\n event => event.data?.replayMode === 'replayed_latest_user_task',\n ).length,\n replayOutcomeEvents.length,\n )\n : undefined\n const compaction_reentry_success_rate = overflow_replay_success_rate\n const pruneCoverageSamples = boundaryEvents.filter(\n event => typeof event.data?.pruneMarkerConsumed === 'boolean',\n )\n const prune_marker_coverage_rate =\n pruneCoverageSamples.length > 0\n ? safeDivide(\n pruneCoverageSamples.filter(\n event => event.data?.pruneMarkerConsumed === true,\n ).length,\n pruneCoverageSamples.length,\n )\n : undefined\n const indexIntegritySamples = boundaryEvents.filter(\n event => event.data?.indexValidationKnown === true,\n )\n const compacted_index_integrity_rate =\n indexIntegritySamples.length > 0\n ? safeDivide(\n indexIntegritySamples.filter(\n event => event.data?.indexValidationValid === true,\n ).length,\n indexIntegritySamples.length,\n )\n : undefined\n const lifecycleEvents = events.filter(\n event => event.phase === 'TOOL_OUTPUT_LIFECYCLE_APPLIED',\n )\n const lifecycleAppliedEvents = lifecycleEvents.filter(\n event => event.data?.applied !== false,\n )\n const lifecycleAgedTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.agedBlocks ?? 0),\n 0,\n )\n const lifecycleToolResultBeforeTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.totalToolResultBlocksBefore ?? 0),\n 0,\n )\n const lifecyclePlaceholderTotal = lifecycleAppliedEvents.reduce(\n (sum, event) =>\n sum +\n Number(event.data?.l2Blocks ?? 0) +\n Number(event.data?.l3Blocks ?? 0),\n 0,\n )\n const lifecycleBeforeTokensTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.beforeTokens ?? 0),\n 0,\n )\n const lifecycleTokenDeltaTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.tokenDelta ?? 0),\n 0,\n )\n const danglingDetectedTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.danglingDetected ?? 0),\n 0,\n )\n const danglingClosedTotal = lifecycleAppliedEvents.reduce(\n (sum, event) => sum + Number(event.data?.danglingClosed ?? 0),\n 0,\n )\n const tool_output_aging_hit_rate =\n lifecycleToolResultBeforeTotal > 0\n ? safeDivide(lifecycleAgedTotal, lifecycleToolResultBeforeTotal)\n : undefined\n const tool_output_placeholder_hit_rate =\n lifecycleAgedTotal > 0\n ? safeDivide(lifecyclePlaceholderTotal, lifecycleAgedTotal)\n : undefined\n const tool_output_token_reduction_rate =\n lifecycleBeforeTokensTotal > 0\n ? safeDivide(lifecycleTokenDeltaTotal, lifecycleBeforeTokensTotal)\n : undefined\n const dangling_tool_closure_rate =\n danglingDetectedTotal > 0\n ? safeDivide(danglingClosedTotal, danglingDetectedTotal)\n : undefined\n const status_compensation_failure_rate =\n danglingDetectedTotal > 0\n ? safeDivide(\n Math.max(0, danglingDetectedTotal - danglingClosedTotal),\n danglingDetectedTotal,\n )\n : undefined\n const lifecycleDraftEvents = events.filter(\n event => event.phase === 'TOOL_OUTPUT_LIFECYCLE_PRE_GATE_METRICS_DRAFT',\n )\n const latestLifecycleDraft =\n lifecycleDraftEvents.length > 0\n ? lifecycleDraftEvents[lifecycleDraftEvents.length - 1]\n : undefined\n const w11_sample_pass_rate = Number.isFinite(\n Number(latestLifecycleDraft?.data?.w11_sample_pass_rate),\n )\n ? Number(latestLifecycleDraft?.data?.w11_sample_pass_rate)\n : undefined\n const w14_sample_pass_rate = Number.isFinite(\n Number(latestLifecycleDraft?.data?.w14_sample_pass_rate),\n )\n ? Number(latestLifecycleDraft?.data?.w14_sample_pass_rate)\n : undefined\n const postPruneNoiseSamples = lifecycleEvents.filter(\n event =>\n Number.isFinite(Number(event.data?.beforeTokens)) &&\n Number(event.data?.beforeTokens) > 0 &&\n Number.isFinite(Number(event.data?.afterTokens)),\n )\n const post_prune_noise_ratio =\n postPruneNoiseSamples.length > 0\n ? postPruneNoiseSamples.reduce((sum, event) => {\n const before = Number(event.data?.beforeTokens)\n const after = Number(event.data?.afterTokens)\n return sum + Math.max(0, Math.min(1, safeDivide(after, before)))\n }, 0) / postPruneNoiseSamples.length\n : undefined\n\n const sanitizerEvents = events.filter(\n event => event.phase === 'AUTO_COMPACT_SANITIZER_APPLIED',\n )\n const removedNoiseTotal = sanitizerEvents.reduce(\n (sum, event) =>\n sum +\n Number(event.data?.removedReminderTags ?? 0) +\n Number(event.data?.removedToolProgressTags ?? 0),\n 0,\n )\n const changedMessagesTotal = sanitizerEvents.reduce(\n (sum, event) => sum + Number(event.data?.changedMessages ?? 0),\n 0,\n )\n const noise_ratio_after_compaction =\n changedMessagesTotal > 0\n ? Math.max(\n 0,\n Math.min(1, 1 - safeDivide(removedNoiseTotal, changedMessagesTotal * 2)),\n )\n : undefined\n const summaryInputPathEvents = events.filter(\n event => event.phase === 'AUTO_COMPACT_SUMMARY_INPUT_PATH_APPLIED',\n )\n const structuredPrimaryPathEvents = summaryInputPathEvents.filter(\n event => event.data?.mode === 'structured_primary',\n )\n const structured_primary_path_rate =\n summaryInputPathEvents.length > 0\n ? safeDivide(structuredPrimaryPathEvents.length, summaryInputPathEvents.length)\n : undefined\n const structured_semantic_coverage_rate = structured_primary_path_rate\n\n const qualityEvents = events.filter(\n event => event.phase === 'AUTO_COMPACT_SUMMARY_QUALITY',\n )\n const goalSamples = qualityEvents.filter(\n event => typeof event.data?.taskGoalRetained === 'boolean',\n )\n const resultSamples = qualityEvents.filter(\n event => typeof event.data?.hasResultInput === 'boolean',\n )\n const errorSamples = qualityEvents.filter(\n event => typeof event.data?.hasErrorInput === 'boolean',\n )\n const task_goal_retention_rate =\n goalSamples.length > 0\n ? safeDivide(\n goalSamples.filter(event => event.data?.taskGoalRetained === true).length,\n goalSamples.length,\n )\n : undefined\n const result_fidelity_rate =\n resultSamples.length > 0\n ? safeDivide(\n resultSamples.filter(event => {\n if (event.data?.hasResultInput !== true) return true\n return event.data?.hasResultSummary === true\n }).length,\n resultSamples.length,\n )\n : undefined\n const error_fidelity_rate =\n errorSamples.length > 0\n ? safeDivide(\n errorSamples.filter(event => {\n if (event.data?.hasErrorInput !== true) return true\n return event.data?.hasErrorSummary === true\n }).length,\n errorSamples.length,\n )\n : undefined\n const first_turn_drift_rate =\n task_goal_retention_rate === undefined ? undefined : 1 - task_goal_retention_rate\n const restoreIntegrityEvents = events.filter(\n event => event.phase === 'TRACKER_RESTORE_INTEGRITY_CHECK',\n )\n const restoreIntegrityIssueCount = restoreIntegrityEvents.filter(event => {\n const isConsistent = event.data?.isConsistent\n if (typeof isConsistent === 'boolean') return isConsistent === false\n return Number(event.data?.droppedCount ?? 0) > 0\n }).length\n const tracker_restore_integrity_issue_rate =\n restoreIntegrityEvents.length > 0\n ? safeDivide(restoreIntegrityIssueCount, restoreIntegrityEvents.length)\n : undefined\n const userContentAdaptedEvents = events.filter(\n event => event.phase === 'MESSAGE_USER_CONTENT_ADAPTED',\n )\n const stringInputPathNumerator = userContentAdaptedEvents.reduce((sum, event) => {\n const eventTotal = Number(event.data?.totalUserContentCount ?? 0)\n const eventString = Number(event.data?.userStringContentCount ?? 0)\n if (!Number.isFinite(eventTotal) || eventTotal <= 0) return sum\n if (!Number.isFinite(eventString) || eventString < 0) return sum\n return sum + Math.min(eventTotal, eventString)\n }, 0)\n const stringInputPathDenominator = userContentAdaptedEvents.reduce((sum, event) => {\n const eventTotal = Number(event.data?.totalUserContentCount ?? 0)\n if (!Number.isFinite(eventTotal) || eventTotal <= 0) return sum\n return sum + eventTotal\n }, 0)\n const string_input_path_usage_rate =\n stringInputPathDenominator > 0\n ? safeDivide(stringInputPathNumerator, stringInputPathDenominator)\n : undefined\n\n return {\n compact_invalid_shape_rate,\n compact_retry_success_rate,\n thinking_first_ratio,\n cross_model_replay_error_rate,\n structured_primary_path_rate,\n structured_semantic_coverage_rate,\n typed_primary_path_rate,\n typed_contract_fail_rate,\n recoverable_failure_rate,\n retry_exhausted_rate,\n status_compensation_failure_rate,\n compaction_boundary_hit_rate,\n overflow_replay_success_rate,\n compaction_reentry_success_rate,\n noise_ratio_after_compaction,\n task_goal_retention_rate,\n result_fidelity_rate,\n error_fidelity_rate,\n first_turn_drift_rate,\n tracker_restore_integrity_issue_rate,\n string_input_path_usage_rate,\n prune_marker_coverage_rate,\n compacted_index_integrity_rate,\n post_prune_noise_ratio,\n tool_output_aging_hit_rate,\n tool_output_placeholder_hit_rate,\n tool_output_token_reduction_rate,\n dangling_tool_closure_rate,\n w11_sample_pass_rate,\n w14_sample_pass_rate,\n }\n}\n", "import {\n computeAutoCompactMetrics,\n type AutoCompactMetrics,\n} from './autoCompactMetrics'\n\ntype SinkEvent = {\n phase: string\n data?: Record<string, any>\n}\n\nexport function createAutoCompactMetricsSink() {\n const events: SinkEvent[] = []\n return {\n push(event: SinkEvent) {\n events.push(event)\n },\n snapshot(): { eventCount: number; metrics: AutoCompactMetrics } {\n return {\n eventCount: events.length,\n metrics: computeAutoCompactMetrics(events),\n }\n },\n clear() {\n events.length = 0\n },\n }\n}\n\n", "import {\n registerTelemetryListener,\n emitTelemetryEvent,\n type TelemetryEvent,\n} from './eventBus'\nimport { createAutoCompactMetricsSink } from '@utils/session/autoCompactMetricsSink'\n\nconst AUTO_COMPACT_TELEMETRY_PHASES = new Set([\n 'AUTO_COMPACT_FAILED',\n 'AUTO_COMPACT_RETRY',\n 'AUTO_COMPACT_FALLBACK',\n 'MESSAGE_TRANSFORM_APPLIED',\n 'AUTO_COMPACT_SUMMARY_INPUT_PATH_APPLIED',\n 'AUTO_COMPACT_SUMMARY_QUALITY',\n 'AUTO_COMPACT_BUDGET_APPLIED',\n 'AUTO_COMPACT_POST_PERSIST_CHECK',\n 'TRACKER_RESTORE_INTEGRITY_CHECK',\n 'COMPACTION_BOUNDARY_APPLIED',\n 'COMPACTION_HOOK_TURN_END',\n 'COMPACTION_HOOK_OVERFLOW_DETECTED',\n 'COMPACTION_HOOK_PRE_NEXT_TURN',\n 'TOOL_OUTPUT_LIFECYCLE_APPLIED',\n 'SESSION_TYPED_PATH_APPLIED',\n 'SESSION_TYPED_PATH_CONSISTENCY_FAILED',\n 'SESSION_TYPED_PATH_POLICY_APPLIED',\n 'SESSION_TYPED_PATH_AUTO_DEGRADED',\n 'MESSAGE_USER_CONTENT_ADAPTED',\n 'AUTO_COMPACT_TASK_NODE_CREATED',\n 'AUTO_COMPACT_TASK_NODE_TRANSITION',\n 'AUTO_COMPACT_TASK_NODE_FAILED',\n 'AUTO_COMPACT_OVERFLOW_JOINT_DECISION_DRAFT',\n])\n\nconst AUTO_COMPACT_SINK_LISTENER_ID = 'auto-compact-metrics-sink'\nconst autoCompactSink = createAutoCompactMetricsSink()\nlet sinkRegistered = false\n\nexport function ensureAutoCompactTelemetryRegistered() {\n if (sinkRegistered) return\n registerTelemetryListener(AUTO_COMPACT_SINK_LISTENER_ID, event => {\n if (!AUTO_COMPACT_TELEMETRY_PHASES.has(event.phase)) return\n autoCompactSink.push({\n phase: event.phase,\n data: event.data,\n })\n })\n sinkRegistered = true\n}\n\nexport function emitAutoCompactTelemetryEvent(\n phase: string,\n data?: Record<string, any>,\n) {\n ensureAutoCompactTelemetryRegistered()\n emitTelemetryEvent({\n channel: 'auto_compact',\n phase,\n data,\n timestamp: Date.now(),\n })\n}\n\nexport function getAutoCompactMetricsSnapshot() {\n ensureAutoCompactTelemetryRegistered()\n return autoCompactSink.snapshot()\n}\n\nexport function resetAutoCompactTelemetry() {\n autoCompactSink.clear()\n}\n\nexport function mapDebugEventToTelemetryEvent(\n phase: string,\n data?: Record<string, any>,\n): TelemetryEvent {\n return {\n channel: 'auto_compact',\n phase,\n data,\n timestamp: Date.now(),\n }\n}\n\nensureAutoCompactTelemetryRegistered()\n", "export * from './core'\n\nimport type { SetToolJSXFn, ToolUseContext } from '@tool'\nimport type { Message } from '@query'\n\nexport async function processUserInput(\n input: string,\n mode: 'bash' | 'prompt' | 'pyb',\n setToolJSX: SetToolJSXFn,\n context: ToolUseContext & {\n setForkConvoWithMessagesOnTheNextRender: (\n forkConvoWithMessages: Message[],\n ) => void\n options?: {\n isPybRequest?: boolean\n pybContext?: string\n }\n },\n pastedImages: Array<{\n placeholder: string\n data: string\n mediaType: string\n }> | null,\n): Promise<Message[]> {\n const impl = await import('./userInput')\n return impl.processUserInput(input, mode, setToolJSX, context, pastedImages)\n}\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,17 +4,17 @@ import {
|
|
|
4
4
|
LspServerRegistry,
|
|
5
5
|
findNearestRoot,
|
|
6
6
|
getInstallNotices
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PF2W6HQJ.js";
|
|
8
8
|
import {
|
|
9
9
|
levenshtein
|
|
10
10
|
} from "./chunk-UZ34JEUK.js";
|
|
11
11
|
import {
|
|
12
12
|
debug
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-HBFOODQT.js";
|
|
14
14
|
import {
|
|
15
15
|
getCwd,
|
|
16
16
|
getSessionRoot
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-DFQUXY7J.js";
|
|
18
18
|
|
|
19
19
|
// src/lsp/index.ts
|
|
20
20
|
import { extname as extname2 } from "path";
|
|
@@ -565,7 +565,7 @@ var LspClientManager = class _LspClientManager {
|
|
|
565
565
|
const safeCwd = /[^\x00-\x7F]/.test(resolvedRoot) ? process.cwd() : resolvedRoot;
|
|
566
566
|
let initOpts = serverInfo.initializationOptions;
|
|
567
567
|
if (serverInfo.id === "pyright" || serverInfo.id === "ty") {
|
|
568
|
-
const { detectPythonVenv } = await import("./registry-
|
|
568
|
+
const { detectPythonVenv } = await import("./registry-WDNZOTS2.js");
|
|
569
569
|
const pythonPath = detectPythonVenv(resolvedRoot);
|
|
570
570
|
if (pythonPath) {
|
|
571
571
|
initOpts = { ...initOpts ?? {}, pythonPath };
|