@danya-ai/cli 0.1.0
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/LICENSE +201 -0
- package/README.md +336 -0
- package/cli-acp.js +82 -0
- package/cli.js +105 -0
- package/dist/REPL-EYUOXCEC.js +42 -0
- package/dist/REPL-EYUOXCEC.js.map +7 -0
- package/dist/acp-S5WNCLMD.js +1372 -0
- package/dist/acp-S5WNCLMD.js.map +7 -0
- package/dist/agentsValidate-RQ2QDGNY.js +373 -0
- package/dist/agentsValidate-RQ2QDGNY.js.map +7 -0
- package/dist/ask-TX526UBD.js +129 -0
- package/dist/ask-TX526UBD.js.map +7 -0
- package/dist/autoUpdater-63RAZ24N.js +17 -0
- package/dist/autoUpdater-63RAZ24N.js.map +7 -0
- package/dist/chunk-2VQWLLDU.js +16 -0
- package/dist/chunk-2VQWLLDU.js.map +7 -0
- package/dist/chunk-4CLHMO4I.js +656 -0
- package/dist/chunk-4CLHMO4I.js.map +7 -0
- package/dist/chunk-4ZNNWJZU.js +5696 -0
- package/dist/chunk-4ZNNWJZU.js.map +7 -0
- package/dist/chunk-66EZC7Y7.js +149 -0
- package/dist/chunk-66EZC7Y7.js.map +7 -0
- package/dist/chunk-6EPQRP3S.js +96 -0
- package/dist/chunk-6EPQRP3S.js.map +7 -0
- package/dist/chunk-77IRSDFR.js +195 -0
- package/dist/chunk-77IRSDFR.js.map +7 -0
- package/dist/chunk-7RZNLBEK.js +136 -0
- package/dist/chunk-7RZNLBEK.js.map +7 -0
- package/dist/chunk-BNBV2FXC.js +19 -0
- package/dist/chunk-BNBV2FXC.js.map +7 -0
- package/dist/chunk-CQCREBDO.js +248 -0
- package/dist/chunk-CQCREBDO.js.map +7 -0
- package/dist/chunk-D77XS6TB.js +74 -0
- package/dist/chunk-D77XS6TB.js.map +7 -0
- package/dist/chunk-DHYBJN3V.js +474 -0
- package/dist/chunk-DHYBJN3V.js.map +7 -0
- package/dist/chunk-DLSLSLTR.js +842 -0
- package/dist/chunk-DLSLSLTR.js.map +7 -0
- package/dist/chunk-ELAE6Z4H.js +514 -0
- package/dist/chunk-ELAE6Z4H.js.map +7 -0
- package/dist/chunk-ELZQD7ZR.js +531 -0
- package/dist/chunk-ELZQD7ZR.js.map +7 -0
- package/dist/chunk-F6DEGMX6.js +31269 -0
- package/dist/chunk-F6DEGMX6.js.map +7 -0
- package/dist/chunk-GDF2AON2.js +124 -0
- package/dist/chunk-GDF2AON2.js.map +7 -0
- package/dist/chunk-H7BGBV4P.js +498 -0
- package/dist/chunk-H7BGBV4P.js.map +7 -0
- package/dist/chunk-HIIHGKXP.js +24 -0
- package/dist/chunk-HIIHGKXP.js.map +7 -0
- package/dist/chunk-HJCCXED7.js +17 -0
- package/dist/chunk-HJCCXED7.js.map +7 -0
- package/dist/chunk-IQ6VZB2Y.js +139 -0
- package/dist/chunk-IQ6VZB2Y.js.map +7 -0
- package/dist/chunk-J4D7AELD.js +518 -0
- package/dist/chunk-J4D7AELD.js.map +7 -0
- package/dist/chunk-JVGG2YQR.js +23 -0
- package/dist/chunk-JVGG2YQR.js.map +7 -0
- package/dist/chunk-LGEK2NV7.js +939 -0
- package/dist/chunk-LGEK2NV7.js.map +7 -0
- package/dist/chunk-LWXT5RGE.js +95 -0
- package/dist/chunk-LWXT5RGE.js.map +7 -0
- package/dist/chunk-M3TKNAUR.js +35 -0
- package/dist/chunk-M3TKNAUR.js.map +7 -0
- package/dist/chunk-MRFO7QO5.js +170 -0
- package/dist/chunk-MRFO7QO5.js.map +7 -0
- package/dist/chunk-MVN3DHQF.js +95 -0
- package/dist/chunk-MVN3DHQF.js.map +7 -0
- package/dist/chunk-O25PXGOC.js +772 -0
- package/dist/chunk-O25PXGOC.js.map +7 -0
- package/dist/chunk-OBGVKM3N.js +1618 -0
- package/dist/chunk-OBGVKM3N.js.map +7 -0
- package/dist/chunk-OV5HJXXQ.js +198 -0
- package/dist/chunk-OV5HJXXQ.js.map +7 -0
- package/dist/chunk-P5VWDMRD.js +249 -0
- package/dist/chunk-P5VWDMRD.js.map +7 -0
- package/dist/chunk-PDSAJX7G.js +49 -0
- package/dist/chunk-PDSAJX7G.js.map +7 -0
- package/dist/chunk-RHNEZOPO.js +739 -0
- package/dist/chunk-RHNEZOPO.js.map +7 -0
- package/dist/chunk-SQGAHZPM.js +3004 -0
- package/dist/chunk-SQGAHZPM.js.map +7 -0
- package/dist/chunk-U7Z4MXY4.js +21 -0
- package/dist/chunk-U7Z4MXY4.js.map +7 -0
- package/dist/chunk-UNCTVIS7.js +146 -0
- package/dist/chunk-UNCTVIS7.js.map +7 -0
- package/dist/chunk-VMEOI6MH.js +1103 -0
- package/dist/chunk-VMEOI6MH.js.map +7 -0
- package/dist/chunk-WAY3DKFO.js +47 -0
- package/dist/chunk-WAY3DKFO.js.map +7 -0
- package/dist/chunk-XEYEKVFT.js +24 -0
- package/dist/chunk-XEYEKVFT.js.map +7 -0
- package/dist/chunk-Y4BQ36T4.js +796 -0
- package/dist/chunk-Y4BQ36T4.js.map +7 -0
- package/dist/chunk-Y5LQPJWK.js +12 -0
- package/dist/chunk-Y5LQPJWK.js.map +7 -0
- package/dist/chunk-YIJWUNWF.js +1260 -0
- package/dist/chunk-YIJWUNWF.js.map +7 -0
- package/dist/chunk-YMIWYEZ7.js +34 -0
- package/dist/chunk-YMIWYEZ7.js.map +7 -0
- package/dist/cli-PQNZWJX4.js +3952 -0
- package/dist/cli-PQNZWJX4.js.map +7 -0
- package/dist/commands-HOBCZ3VQ.js +46 -0
- package/dist/commands-HOBCZ3VQ.js.map +7 -0
- package/dist/config-MLH7ZTFA.js +81 -0
- package/dist/config-MLH7ZTFA.js.map +7 -0
- package/dist/context-FZ6G4J63.js +30 -0
- package/dist/context-FZ6G4J63.js.map +7 -0
- package/dist/costTracker-5WKZXN5S.js +19 -0
- package/dist/costTracker-5WKZXN5S.js.map +7 -0
- package/dist/customCommands-EB4MMZSS.js +25 -0
- package/dist/customCommands-EB4MMZSS.js.map +7 -0
- package/dist/env-VMEIP4EW.js +28 -0
- package/dist/env-VMEIP4EW.js.map +7 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +7 -0
- package/dist/kodeAgentSessionId-WUT74FSH.js +16 -0
- package/dist/kodeAgentSessionId-WUT74FSH.js.map +7 -0
- package/dist/kodeAgentSessionLoad-KR4JSD6D.js +21 -0
- package/dist/kodeAgentSessionLoad-KR4JSD6D.js.map +7 -0
- package/dist/kodeAgentSessionResume-BCD6UV74.js +18 -0
- package/dist/kodeAgentSessionResume-BCD6UV74.js.map +7 -0
- package/dist/kodeAgentStreamJson-EDHHWNNX.js +15 -0
- package/dist/kodeAgentStreamJson-EDHHWNNX.js.map +7 -0
- package/dist/kodeAgentStreamJsonSession-G4RBNZRN.js +133 -0
- package/dist/kodeAgentStreamJsonSession-G4RBNZRN.js.map +7 -0
- package/dist/kodeAgentStructuredStdio-UA5P5UNU.js +11 -0
- package/dist/kodeAgentStructuredStdio-UA5P5UNU.js.map +7 -0
- package/dist/kodeHooks-EHM6GSIQ.js +37 -0
- package/dist/kodeHooks-EHM6GSIQ.js.map +7 -0
- package/dist/llm-SJXCV7DA.js +3138 -0
- package/dist/llm-SJXCV7DA.js.map +7 -0
- package/dist/llmLazy-2QYJVD6K.js +15 -0
- package/dist/llmLazy-2QYJVD6K.js.map +7 -0
- package/dist/loader-LJX77EFL.js +28 -0
- package/dist/loader-LJX77EFL.js.map +7 -0
- package/dist/mcp-DOROSLPN.js +49 -0
- package/dist/mcp-DOROSLPN.js.map +7 -0
- package/dist/mentionProcessor-5UZRHCGH.js +215 -0
- package/dist/mentionProcessor-5UZRHCGH.js.map +7 -0
- package/dist/messages-N5KBI53P.js +65 -0
- package/dist/messages-N5KBI53P.js.map +7 -0
- package/dist/model-HPLBR53R.js +30 -0
- package/dist/model-HPLBR53R.js.map +7 -0
- package/dist/openai-YP4OJYKF.js +29 -0
- package/dist/openai-YP4OJYKF.js.map +7 -0
- package/dist/outputStyles-NNALI5D7.js +28 -0
- package/dist/outputStyles-NNALI5D7.js.map +7 -0
- package/dist/package.json +4 -0
- package/dist/pluginRuntime-JYYI5BSQ.js +220 -0
- package/dist/pluginRuntime-JYYI5BSQ.js.map +7 -0
- package/dist/pluginValidation-JWUFPZUE.js +17 -0
- package/dist/pluginValidation-JWUFPZUE.js.map +7 -0
- package/dist/prompts-B2SS7CWI.js +50 -0
- package/dist/prompts-B2SS7CWI.js.map +7 -0
- package/dist/query-HIK457UU.js +50 -0
- package/dist/query-HIK457UU.js.map +7 -0
- package/dist/responsesStreaming-L2BSN37C.js +10 -0
- package/dist/responsesStreaming-L2BSN37C.js.map +7 -0
- package/dist/ripgrep-GCKI4UTL.js +17 -0
- package/dist/ripgrep-GCKI4UTL.js.map +7 -0
- package/dist/skillMarketplace-PCTUUX46.js +37 -0
- package/dist/skillMarketplace-PCTUUX46.js.map +7 -0
- package/dist/state-XJICGOUA.js +18 -0
- package/dist/state-XJICGOUA.js.map +7 -0
- package/dist/theme-DP7O4SGH.js +14 -0
- package/dist/theme-DP7O4SGH.js.map +7 -0
- package/dist/toolPermissionContext-DHAGUPEW.js +17 -0
- package/dist/toolPermissionContext-DHAGUPEW.js.map +7 -0
- package/dist/toolPermissionSettings-PT65MQIQ.js +18 -0
- package/dist/toolPermissionSettings-PT65MQIQ.js.map +7 -0
- package/dist/tools-BHW37PCF.js +47 -0
- package/dist/tools-BHW37PCF.js.map +7 -0
- package/dist/userInput-XDRYT5TI.js +316 -0
- package/dist/userInput-XDRYT5TI.js.map +7 -0
- package/dist/uuid-QUYJMIUV.js +9 -0
- package/dist/uuid-QUYJMIUV.js.map +7 -0
- package/dist/yoga.wasm +0 -0
- package/package.json +115 -0
- package/scripts/binary-utils.cjs +62 -0
- package/scripts/cli-acp-wrapper.cjs +82 -0
- package/scripts/cli-wrapper.cjs +105 -0
- package/scripts/postinstall.js +144 -0
- package/yoga.wasm +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createRequire as __kodeCreateRequire } from "node:module";
|
|
2
|
+
const require = __kodeCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
getGlobalConfig
|
|
5
|
+
} from "./chunk-DLSLSLTR.js";
|
|
6
|
+
|
|
7
|
+
// src/utils/theme/index.ts
|
|
8
|
+
var lightTheme = {
|
|
9
|
+
bashBorder: "#FF6E57",
|
|
10
|
+
danya: "#FFC233",
|
|
11
|
+
noting: "#222222",
|
|
12
|
+
notingBorder: "#10b981",
|
|
13
|
+
permission: "#e9c61aff",
|
|
14
|
+
autoAccept: "#8700ff",
|
|
15
|
+
planMode: "#006666",
|
|
16
|
+
secondaryBorder: "#999",
|
|
17
|
+
inputBorder: "#a5b4fc",
|
|
18
|
+
text: "#000",
|
|
19
|
+
secondaryText: "#666",
|
|
20
|
+
suggestion: "#32e98aff",
|
|
21
|
+
success: "#2c7a39",
|
|
22
|
+
error: "#ab2b3f",
|
|
23
|
+
warning: "#966c1e",
|
|
24
|
+
primary: "#000",
|
|
25
|
+
secondary: "#666",
|
|
26
|
+
diff: {
|
|
27
|
+
added: "#69db7c",
|
|
28
|
+
removed: "#ffa8b4",
|
|
29
|
+
addedDimmed: "#c7e1cb",
|
|
30
|
+
removedDimmed: "#fdd2d8"
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var lightDaltonizedTheme = {
|
|
34
|
+
bashBorder: "#FF6E57",
|
|
35
|
+
danya: "#FFC233",
|
|
36
|
+
noting: "#222222",
|
|
37
|
+
notingBorder: "#059669",
|
|
38
|
+
permission: "#3366ff",
|
|
39
|
+
autoAccept: "#8700ff",
|
|
40
|
+
planMode: "#006666",
|
|
41
|
+
secondaryBorder: "#999",
|
|
42
|
+
inputBorder: "#93a5f5",
|
|
43
|
+
text: "#000",
|
|
44
|
+
secondaryText: "#666",
|
|
45
|
+
suggestion: "#3366ff",
|
|
46
|
+
success: "#006699",
|
|
47
|
+
error: "#cc0000",
|
|
48
|
+
warning: "#ff9900",
|
|
49
|
+
primary: "#000",
|
|
50
|
+
secondary: "#666",
|
|
51
|
+
diff: {
|
|
52
|
+
added: "#99ccff",
|
|
53
|
+
removed: "#ffcccc",
|
|
54
|
+
addedDimmed: "#d1e7fd",
|
|
55
|
+
removedDimmed: "#ffe9e9"
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var darkTheme = {
|
|
59
|
+
bashBorder: "#FF6E57",
|
|
60
|
+
danya: "#FFC233",
|
|
61
|
+
noting: "#222222",
|
|
62
|
+
notingBorder: "#34d399",
|
|
63
|
+
permission: "#b1b9f9",
|
|
64
|
+
autoAccept: "#af87ff",
|
|
65
|
+
planMode: "#48968c",
|
|
66
|
+
secondaryBorder: "#888",
|
|
67
|
+
inputBorder: "#818cf8",
|
|
68
|
+
text: "#fff",
|
|
69
|
+
secondaryText: "#999",
|
|
70
|
+
suggestion: "#b1b9f9",
|
|
71
|
+
success: "#4eba65",
|
|
72
|
+
error: "#ff6b80",
|
|
73
|
+
warning: "#ffc107",
|
|
74
|
+
primary: "#fff",
|
|
75
|
+
secondary: "#999",
|
|
76
|
+
diff: {
|
|
77
|
+
added: "#225c2b",
|
|
78
|
+
removed: "#7a2936",
|
|
79
|
+
addedDimmed: "#47584a",
|
|
80
|
+
removedDimmed: "#69484d"
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
var darkDaltonizedTheme = {
|
|
84
|
+
bashBorder: "#FF6E57",
|
|
85
|
+
danya: "#FFC233",
|
|
86
|
+
noting: "#222222",
|
|
87
|
+
notingBorder: "#10b981",
|
|
88
|
+
permission: "#99ccff",
|
|
89
|
+
autoAccept: "#af87ff",
|
|
90
|
+
planMode: "#48968c",
|
|
91
|
+
secondaryBorder: "#888",
|
|
92
|
+
inputBorder: "#7c8ff5",
|
|
93
|
+
text: "#fff",
|
|
94
|
+
secondaryText: "#999",
|
|
95
|
+
suggestion: "#99ccff",
|
|
96
|
+
success: "#3399ff",
|
|
97
|
+
error: "#ff6666",
|
|
98
|
+
warning: "#ffcc00",
|
|
99
|
+
primary: "#fff",
|
|
100
|
+
secondary: "#999",
|
|
101
|
+
diff: {
|
|
102
|
+
added: "#004466",
|
|
103
|
+
removed: "#660000",
|
|
104
|
+
addedDimmed: "#3e515b",
|
|
105
|
+
removedDimmed: "#3e2c2c"
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
function getTheme(overrideTheme) {
|
|
109
|
+
const config = getGlobalConfig();
|
|
110
|
+
switch (overrideTheme ?? config.theme) {
|
|
111
|
+
case "light":
|
|
112
|
+
return lightTheme;
|
|
113
|
+
case "light-daltonized":
|
|
114
|
+
return lightDaltonizedTheme;
|
|
115
|
+
case "dark-daltonized":
|
|
116
|
+
return darkDaltonizedTheme;
|
|
117
|
+
default:
|
|
118
|
+
return darkTheme;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export {
|
|
123
|
+
getTheme
|
|
124
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/theme/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { getGlobalConfig } from '@utils/config'\r\n\r\nexport interface Theme {\r\n bashBorder: string\r\n danya: string\r\n noting: string\r\n notingBorder: string\r\n permission: string\r\n autoAccept: string\r\n planMode: string\r\n secondaryBorder: string\r\n inputBorder: string\r\n text: string\r\n secondaryText: string\r\n suggestion: string\r\n success: string\r\n error: string\r\n warning: string\r\n primary: string\r\n secondary: string\r\n diff: {\r\n added: string\r\n removed: string\r\n addedDimmed: string\r\n removedDimmed: string\r\n }\r\n}\r\n\r\nconst lightTheme: Theme = {\r\n bashBorder: '#FF6E57',\r\n danya: '#FFC233',\r\n noting: '#222222',\r\n notingBorder: '#10b981',\r\n permission: '#e9c61aff',\r\n autoAccept: '#8700ff',\r\n planMode: '#006666',\r\n secondaryBorder: '#999',\r\n inputBorder: '#a5b4fc',\r\n text: '#000',\r\n secondaryText: '#666',\r\n suggestion: '#32e98aff',\r\n success: '#2c7a39',\r\n error: '#ab2b3f',\r\n warning: '#966c1e',\r\n primary: '#000',\r\n secondary: '#666',\r\n diff: {\r\n added: '#69db7c',\r\n removed: '#ffa8b4',\r\n addedDimmed: '#c7e1cb',\r\n removedDimmed: '#fdd2d8',\r\n },\r\n}\r\n\r\nconst lightDaltonizedTheme: Theme = {\r\n bashBorder: '#FF6E57',\r\n danya: '#FFC233',\r\n noting: '#222222',\r\n notingBorder: '#059669',\r\n permission: '#3366ff',\r\n autoAccept: '#8700ff',\r\n planMode: '#006666',\r\n secondaryBorder: '#999',\r\n inputBorder: '#93a5f5',\r\n text: '#000',\r\n secondaryText: '#666',\r\n suggestion: '#3366ff',\r\n success: '#006699',\r\n error: '#cc0000',\r\n warning: '#ff9900',\r\n primary: '#000',\r\n secondary: '#666',\r\n diff: {\r\n added: '#99ccff',\r\n removed: '#ffcccc',\r\n addedDimmed: '#d1e7fd',\r\n removedDimmed: '#ffe9e9',\r\n },\r\n}\r\n\r\nconst darkTheme: Theme = {\r\n bashBorder: '#FF6E57',\r\n danya: '#FFC233',\r\n noting: '#222222',\r\n notingBorder: '#34d399',\r\n permission: '#b1b9f9',\r\n autoAccept: '#af87ff',\r\n planMode: '#48968c',\r\n secondaryBorder: '#888',\r\n inputBorder: '#818cf8',\r\n text: '#fff',\r\n secondaryText: '#999',\r\n suggestion: '#b1b9f9',\r\n success: '#4eba65',\r\n error: '#ff6b80',\r\n warning: '#ffc107',\r\n primary: '#fff',\r\n secondary: '#999',\r\n diff: {\r\n added: '#225c2b',\r\n removed: '#7a2936',\r\n addedDimmed: '#47584a',\r\n removedDimmed: '#69484d',\r\n },\r\n}\r\n\r\nconst darkDaltonizedTheme: Theme = {\r\n bashBorder: '#FF6E57',\r\n danya: '#FFC233',\r\n noting: '#222222',\r\n notingBorder: '#10b981',\r\n permission: '#99ccff',\r\n autoAccept: '#af87ff',\r\n planMode: '#48968c',\r\n secondaryBorder: '#888',\r\n inputBorder: '#7c8ff5',\r\n text: '#fff',\r\n secondaryText: '#999',\r\n suggestion: '#99ccff',\r\n success: '#3399ff',\r\n error: '#ff6666',\r\n warning: '#ffcc00',\r\n primary: '#fff',\r\n secondary: '#999',\r\n diff: {\r\n added: '#004466',\r\n removed: '#660000',\r\n addedDimmed: '#3e515b',\r\n removedDimmed: '#3e2c2c',\r\n },\r\n}\r\n\r\nexport type ThemeNames =\r\n | 'dark'\r\n | 'light'\r\n | 'light-daltonized'\r\n | 'dark-daltonized'\r\n\r\nexport function getTheme(overrideTheme?: ThemeNames): Theme {\r\n const config = getGlobalConfig()\r\n switch (overrideTheme ?? config.theme) {\r\n case 'light':\r\n return lightTheme\r\n case 'light-daltonized':\r\n return lightDaltonizedTheme\r\n case 'dark-daltonized':\r\n return darkDaltonizedTheme\r\n default:\r\n return darkTheme\r\n }\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;AA4BA,IAAM,aAAoB;AAAA,EACxB,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AACF;AAEA,IAAM,uBAA8B;AAAA,EAClC,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AACF;AAEA,IAAM,YAAmB;AAAA,EACvB,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AACF;AAEA,IAAM,sBAA6B;AAAA,EACjC,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,IACb,eAAe;AAAA,EACjB;AACF;AAQO,SAAS,SAAS,eAAmC;AAC1D,QAAM,SAAS,gBAAgB;AAC/B,UAAQ,iBAAiB,OAAO,OAAO;AAAA,IACrC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
import { createRequire as __kodeCreateRequire } from "node:module";
|
|
2
|
+
const require = __kodeCreateRequire(import.meta.url);
|
|
3
|
+
|
|
4
|
+
// src/utils/messages/core.ts
|
|
5
|
+
import { createHash, randomUUID } from "crypto";
|
|
6
|
+
import { last, memoize } from "lodash-es";
|
|
7
|
+
|
|
8
|
+
// src/services/ai/llmConstants.ts
|
|
9
|
+
var API_ERROR_MESSAGE_PREFIX = "API Error";
|
|
10
|
+
var PROMPT_TOO_LONG_ERROR_MESSAGE = "Prompt is too long";
|
|
11
|
+
var CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE = "Credit balance is too low";
|
|
12
|
+
var INVALID_API_KEY_ERROR_MESSAGE = "Invalid API key \xB7 Please run /login";
|
|
13
|
+
var NO_CONTENT_MESSAGE = "(no content)";
|
|
14
|
+
var MAIN_QUERY_TEMPERATURE = 1;
|
|
15
|
+
|
|
16
|
+
// src/utils/messages/core.ts
|
|
17
|
+
var INTERRUPT_MESSAGE = "[Request interrupted by user]";
|
|
18
|
+
var INTERRUPT_MESSAGE_FOR_TOOL_USE = "[Request interrupted by user for tool use]";
|
|
19
|
+
var CANCEL_MESSAGE = "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.";
|
|
20
|
+
var REJECT_MESSAGE = "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.";
|
|
21
|
+
var 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:
|
|
22
|
+
`;
|
|
23
|
+
var 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.
|
|
24
|
+
|
|
25
|
+
Rejected plan:
|
|
26
|
+
`;
|
|
27
|
+
var NO_RESPONSE_REQUESTED = "No response requested.";
|
|
28
|
+
var SYNTHETIC_ASSISTANT_MESSAGES = /* @__PURE__ */ new Set([
|
|
29
|
+
INTERRUPT_MESSAGE,
|
|
30
|
+
INTERRUPT_MESSAGE_FOR_TOOL_USE,
|
|
31
|
+
CANCEL_MESSAGE,
|
|
32
|
+
REJECT_MESSAGE,
|
|
33
|
+
NO_RESPONSE_REQUESTED
|
|
34
|
+
]);
|
|
35
|
+
function stableUuidFromSeed(seed) {
|
|
36
|
+
const hex = createHash("sha256").update(seed).digest("hex").slice(0, 32);
|
|
37
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
|
|
38
|
+
}
|
|
39
|
+
function baseCreateAssistantMessage(content, extra) {
|
|
40
|
+
return {
|
|
41
|
+
type: "assistant",
|
|
42
|
+
costUSD: 0,
|
|
43
|
+
durationMs: 0,
|
|
44
|
+
uuid: randomUUID(),
|
|
45
|
+
message: {
|
|
46
|
+
id: randomUUID(),
|
|
47
|
+
model: "<synthetic>",
|
|
48
|
+
role: "assistant",
|
|
49
|
+
stop_reason: "stop_sequence",
|
|
50
|
+
stop_sequence: "",
|
|
51
|
+
type: "message",
|
|
52
|
+
usage: {
|
|
53
|
+
input_tokens: 0,
|
|
54
|
+
output_tokens: 0,
|
|
55
|
+
cache_creation_input_tokens: 0,
|
|
56
|
+
cache_read_input_tokens: 0
|
|
57
|
+
},
|
|
58
|
+
content
|
|
59
|
+
},
|
|
60
|
+
...extra
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function createAssistantMessage(content) {
|
|
64
|
+
return baseCreateAssistantMessage([
|
|
65
|
+
{
|
|
66
|
+
type: "text",
|
|
67
|
+
text: content === "" ? NO_CONTENT_MESSAGE : content,
|
|
68
|
+
citations: []
|
|
69
|
+
}
|
|
70
|
+
]);
|
|
71
|
+
}
|
|
72
|
+
function createAssistantAPIErrorMessage(content) {
|
|
73
|
+
return baseCreateAssistantMessage(
|
|
74
|
+
[
|
|
75
|
+
{
|
|
76
|
+
type: "text",
|
|
77
|
+
text: content === "" ? NO_CONTENT_MESSAGE : content,
|
|
78
|
+
citations: []
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
{ isApiErrorMessage: true }
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
function createUserMessage(content, toolUseResult) {
|
|
85
|
+
const m = {
|
|
86
|
+
type: "user",
|
|
87
|
+
message: {
|
|
88
|
+
role: "user",
|
|
89
|
+
content
|
|
90
|
+
},
|
|
91
|
+
uuid: randomUUID(),
|
|
92
|
+
toolUseResult
|
|
93
|
+
};
|
|
94
|
+
return m;
|
|
95
|
+
}
|
|
96
|
+
function createProgressMessage(toolUseID, siblingToolUseIDs, content, normalizedMessages, tools) {
|
|
97
|
+
return {
|
|
98
|
+
type: "progress",
|
|
99
|
+
content,
|
|
100
|
+
normalizedMessages,
|
|
101
|
+
siblingToolUseIDs,
|
|
102
|
+
tools,
|
|
103
|
+
toolUseID,
|
|
104
|
+
uuid: randomUUID()
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function createToolResultStopMessage(toolUseID) {
|
|
108
|
+
return {
|
|
109
|
+
type: "tool_result",
|
|
110
|
+
content: CANCEL_MESSAGE,
|
|
111
|
+
is_error: true,
|
|
112
|
+
tool_use_id: toolUseID
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function extractTagFromMessage(message, tagName) {
|
|
116
|
+
if (message.type === "progress") {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
if (typeof message.message.content !== "string") {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return extractTag(message.message.content, tagName);
|
|
123
|
+
}
|
|
124
|
+
function extractTag(html, tagName) {
|
|
125
|
+
if (!html.trim() || !tagName.trim()) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const escapedTag = tagName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
129
|
+
const pattern = new RegExp(
|
|
130
|
+
`<${escapedTag}(?:\\s+[^>]*)?>([\\s\\S]*?)<\\/${escapedTag}>`,
|
|
131
|
+
"gi"
|
|
132
|
+
);
|
|
133
|
+
let match;
|
|
134
|
+
let depth = 0;
|
|
135
|
+
let lastIndex = 0;
|
|
136
|
+
const openingTag = new RegExp(`<${escapedTag}(?:\\s+[^>]*?)?>`, "gi");
|
|
137
|
+
const closingTag = new RegExp(`<\\/${escapedTag}>`, "gi");
|
|
138
|
+
while ((match = pattern.exec(html)) !== null) {
|
|
139
|
+
const content = match[1];
|
|
140
|
+
const beforeMatch = html.slice(lastIndex, match.index);
|
|
141
|
+
depth = 0;
|
|
142
|
+
openingTag.lastIndex = 0;
|
|
143
|
+
while (openingTag.exec(beforeMatch) !== null) {
|
|
144
|
+
depth++;
|
|
145
|
+
}
|
|
146
|
+
closingTag.lastIndex = 0;
|
|
147
|
+
while (closingTag.exec(beforeMatch) !== null) {
|
|
148
|
+
depth--;
|
|
149
|
+
}
|
|
150
|
+
if (depth === 0 && content) {
|
|
151
|
+
return content;
|
|
152
|
+
}
|
|
153
|
+
lastIndex = match.index + match[0].length;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function isNotEmptyMessage(message) {
|
|
158
|
+
if (message.type === "progress") {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
if (typeof message.message.content === "string") {
|
|
162
|
+
return message.message.content.trim().length > 0;
|
|
163
|
+
}
|
|
164
|
+
if (message.message.content.length === 0) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
if (message.message.content.length > 1) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
if (message.message.content[0].type !== "text") {
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
return message.message.content[0].text.trim().length > 0 && message.message.content[0].text !== NO_CONTENT_MESSAGE && message.message.content[0].text !== INTERRUPT_MESSAGE_FOR_TOOL_USE;
|
|
174
|
+
}
|
|
175
|
+
function normalizeMessages(messages) {
|
|
176
|
+
return messages.flatMap((message) => {
|
|
177
|
+
if (message.type === "progress") {
|
|
178
|
+
return [message];
|
|
179
|
+
}
|
|
180
|
+
if (typeof message.message.content === "string") {
|
|
181
|
+
return [message];
|
|
182
|
+
}
|
|
183
|
+
const contentBlocks = message.message.content.filter(
|
|
184
|
+
(block) => !(block.type === "thinking" && (typeof block.thinking !== "string" || block.thinking.trim().length === 0))
|
|
185
|
+
);
|
|
186
|
+
return contentBlocks.map((block, blockIndex) => {
|
|
187
|
+
switch (message.type) {
|
|
188
|
+
case "assistant":
|
|
189
|
+
const baseSeed = String(
|
|
190
|
+
message.uuid ?? message.message?.id ?? randomUUID()
|
|
191
|
+
);
|
|
192
|
+
return {
|
|
193
|
+
type: "assistant",
|
|
194
|
+
uuid: stableUuidFromSeed(`${baseSeed}:${blockIndex}`),
|
|
195
|
+
message: {
|
|
196
|
+
...message.message,
|
|
197
|
+
content: [block]
|
|
198
|
+
},
|
|
199
|
+
costUSD: message.costUSD / contentBlocks.length,
|
|
200
|
+
durationMs: message.durationMs
|
|
201
|
+
};
|
|
202
|
+
case "user":
|
|
203
|
+
return message;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function isToolUseLikeBlockParam(block) {
|
|
209
|
+
return block && typeof block === "object" && (block.type === "tool_use" || block.type === "server_tool_use" || block.type === "mcp_tool_use") && typeof block.id === "string";
|
|
210
|
+
}
|
|
211
|
+
function isToolUseRequestMessage(message) {
|
|
212
|
+
return message.type === "assistant" && "costUSD" in message && message.message.content.some(isToolUseLikeBlockParam);
|
|
213
|
+
}
|
|
214
|
+
function reorderMessages(messages) {
|
|
215
|
+
const ms = [];
|
|
216
|
+
const toolUseMessages = [];
|
|
217
|
+
for (const message of messages) {
|
|
218
|
+
if (isToolUseRequestMessage(message)) {
|
|
219
|
+
toolUseMessages.push(message);
|
|
220
|
+
}
|
|
221
|
+
if (message.type === "progress") {
|
|
222
|
+
const existingProgressMessage = ms.find(
|
|
223
|
+
(_) => _.type === "progress" && _.toolUseID === message.toolUseID
|
|
224
|
+
);
|
|
225
|
+
if (existingProgressMessage) {
|
|
226
|
+
ms[ms.indexOf(existingProgressMessage)] = message;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const toolUseMessage = toolUseMessages.find(
|
|
230
|
+
(_) => _.message.content[0]?.id === message.toolUseID
|
|
231
|
+
);
|
|
232
|
+
if (toolUseMessage) {
|
|
233
|
+
ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message);
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (message.type === "user" && Array.isArray(message.message.content) && message.message.content[0]?.type === "tool_result") {
|
|
238
|
+
const toolUseID = message.message.content[0]?.tool_use_id;
|
|
239
|
+
const lastProgressMessage = ms.find(
|
|
240
|
+
(_) => _.type === "progress" && _.toolUseID === toolUseID
|
|
241
|
+
);
|
|
242
|
+
if (lastProgressMessage) {
|
|
243
|
+
ms.splice(ms.indexOf(lastProgressMessage) + 1, 0, message);
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const toolUseMessage = toolUseMessages.find(
|
|
247
|
+
(_) => _.message.content[0]?.id === toolUseID
|
|
248
|
+
);
|
|
249
|
+
if (toolUseMessage) {
|
|
250
|
+
ms.splice(ms.indexOf(toolUseMessage) + 1, 0, message);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
} else {
|
|
254
|
+
ms.push(message);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return ms;
|
|
258
|
+
}
|
|
259
|
+
var getToolResultIDs = memoize(
|
|
260
|
+
(normalizedMessages) => Object.fromEntries(
|
|
261
|
+
normalizedMessages.flatMap(
|
|
262
|
+
(_) => _.type === "user" && _.message.content[0]?.type === "tool_result" ? [
|
|
263
|
+
[
|
|
264
|
+
_.message.content[0].tool_use_id,
|
|
265
|
+
_.message.content[0].is_error ?? false
|
|
266
|
+
]
|
|
267
|
+
] : []
|
|
268
|
+
)
|
|
269
|
+
)
|
|
270
|
+
);
|
|
271
|
+
function getUnresolvedToolUseIDs(normalizedMessages) {
|
|
272
|
+
const toolResults = getToolResultIDs(normalizedMessages);
|
|
273
|
+
return new Set(
|
|
274
|
+
normalizedMessages.filter(
|
|
275
|
+
(_) => _.type === "assistant" && Array.isArray(_.message.content) && isToolUseLikeBlockParam(_.message.content[0]) && !(_.message.content[0].id in toolResults)
|
|
276
|
+
).map((_) => _.message.content[0].id)
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
function getInProgressToolUseIDs(normalizedMessages) {
|
|
280
|
+
const unresolvedToolUseIDs = getUnresolvedToolUseIDs(normalizedMessages);
|
|
281
|
+
function isQueuedWaitingProgressMessage(message) {
|
|
282
|
+
if (message.type !== "progress") return false;
|
|
283
|
+
const firstBlock = message.content.message.content[0];
|
|
284
|
+
if (!firstBlock || firstBlock.type !== "text") return false;
|
|
285
|
+
const rawText = String(firstBlock.text ?? "");
|
|
286
|
+
const text = rawText.startsWith("<tool-progress>") ? extractTag(rawText, "tool-progress") ?? rawText : rawText;
|
|
287
|
+
return text.trim() === "Waiting\u2026";
|
|
288
|
+
}
|
|
289
|
+
const toolUseIDsThatHaveProgressMessages = new Set(
|
|
290
|
+
normalizedMessages.filter(
|
|
291
|
+
(_) => _.type === "progress" && !isQueuedWaitingProgressMessage(_)
|
|
292
|
+
).map((_) => _.toolUseID)
|
|
293
|
+
);
|
|
294
|
+
return new Set(
|
|
295
|
+
normalizedMessages.filter((_) => {
|
|
296
|
+
if (_.type !== "assistant") {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
const firstBlock = _.message.content[0];
|
|
300
|
+
if (!isToolUseLikeBlockParam(firstBlock)) return false;
|
|
301
|
+
const toolUseID = firstBlock.id;
|
|
302
|
+
if (toolUseID === unresolvedToolUseIDs.values().next().value) {
|
|
303
|
+
return true;
|
|
304
|
+
}
|
|
305
|
+
if (toolUseIDsThatHaveProgressMessages.has(toolUseID) && unresolvedToolUseIDs.has(toolUseID)) {
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
return false;
|
|
309
|
+
}).map((_) => _.message.content[0].id)
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
function getErroredToolUseMessages(normalizedMessages) {
|
|
313
|
+
const toolResults = getToolResultIDs(normalizedMessages);
|
|
314
|
+
return normalizedMessages.filter(
|
|
315
|
+
(_) => _.type === "assistant" && Array.isArray(_.message.content) && isToolUseLikeBlockParam(_.message.content[0]) && _.message.content[0].id in toolResults && toolResults[_.message.content[0].id]
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
function normalizeMessagesForAPI(messages) {
|
|
319
|
+
function isSyntheticApiErrorMessage(message) {
|
|
320
|
+
return message.type === "assistant" && message.isApiErrorMessage === true && message.message.model === "<synthetic>";
|
|
321
|
+
}
|
|
322
|
+
function normalizeUserContent(content) {
|
|
323
|
+
if (typeof content === "string") {
|
|
324
|
+
return [{ type: "text", text: content }];
|
|
325
|
+
}
|
|
326
|
+
return content;
|
|
327
|
+
}
|
|
328
|
+
function toolResultsFirst(content) {
|
|
329
|
+
const toolResults = [];
|
|
330
|
+
const rest = [];
|
|
331
|
+
for (const block of content) {
|
|
332
|
+
if (block.type === "tool_result") {
|
|
333
|
+
toolResults.push(block);
|
|
334
|
+
} else {
|
|
335
|
+
rest.push(block);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return [...toolResults, ...rest];
|
|
339
|
+
}
|
|
340
|
+
function mergeUserMessages(base, next) {
|
|
341
|
+
const baseBlocks = normalizeUserContent(base.message.content);
|
|
342
|
+
const nextBlocks = normalizeUserContent(next.message.content);
|
|
343
|
+
return {
|
|
344
|
+
...base,
|
|
345
|
+
message: {
|
|
346
|
+
...base.message,
|
|
347
|
+
content: toolResultsFirst([...baseBlocks, ...nextBlocks])
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
function isUserToolResultMessage(message) {
|
|
352
|
+
if (message.type !== "user") return false;
|
|
353
|
+
if (!Array.isArray(message.message.content)) return false;
|
|
354
|
+
return message.message.content.some((block) => block.type === "tool_result");
|
|
355
|
+
}
|
|
356
|
+
const result = [];
|
|
357
|
+
for (const message of messages) {
|
|
358
|
+
if (message.type === "progress") continue;
|
|
359
|
+
if (isSyntheticApiErrorMessage(message)) continue;
|
|
360
|
+
switch (message.type) {
|
|
361
|
+
case "user": {
|
|
362
|
+
const prev = last(result);
|
|
363
|
+
if (prev?.type === "user") {
|
|
364
|
+
result[result.indexOf(prev)] = mergeUserMessages(prev, message);
|
|
365
|
+
} else {
|
|
366
|
+
result.push(message);
|
|
367
|
+
}
|
|
368
|
+
break;
|
|
369
|
+
}
|
|
370
|
+
case "assistant": {
|
|
371
|
+
let merged = false;
|
|
372
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
373
|
+
const prev = result[i];
|
|
374
|
+
if (prev.type !== "assistant" && !isUserToolResultMessage(prev)) {
|
|
375
|
+
break;
|
|
376
|
+
}
|
|
377
|
+
if (prev.type === "assistant") {
|
|
378
|
+
if (prev.message.id === message.message.id) {
|
|
379
|
+
result[i] = {
|
|
380
|
+
...prev,
|
|
381
|
+
message: {
|
|
382
|
+
...prev.message,
|
|
383
|
+
content: [
|
|
384
|
+
...Array.isArray(prev.message.content) ? prev.message.content : [],
|
|
385
|
+
...Array.isArray(message.message.content) ? message.message.content : []
|
|
386
|
+
]
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
merged = true;
|
|
390
|
+
}
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
if (!merged) {
|
|
395
|
+
result.push(message);
|
|
396
|
+
}
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return result;
|
|
402
|
+
}
|
|
403
|
+
function normalizeContentFromAPI(content) {
|
|
404
|
+
const filteredContent = content.filter(
|
|
405
|
+
(_) => _.type !== "text" || _.text.trim().length > 0
|
|
406
|
+
);
|
|
407
|
+
if (filteredContent.length === 0) {
|
|
408
|
+
return [{ type: "text", text: NO_CONTENT_MESSAGE, citations: [] }];
|
|
409
|
+
}
|
|
410
|
+
return filteredContent;
|
|
411
|
+
}
|
|
412
|
+
function isEmptyMessageText(text) {
|
|
413
|
+
return stripSystemMessages(text).trim() === "" || text.trim() === NO_CONTENT_MESSAGE;
|
|
414
|
+
}
|
|
415
|
+
function filterUserTextMessagesForUndo(messages) {
|
|
416
|
+
return messages.filter((msg) => {
|
|
417
|
+
if (msg.type !== "user") return false;
|
|
418
|
+
if (!Array.isArray(msg.message.content)) return true;
|
|
419
|
+
return !msg.message.content.every((block) => block.type === "tool_result");
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
var STRIPPED_TAGS = [
|
|
423
|
+
"commit_analysis",
|
|
424
|
+
"context",
|
|
425
|
+
"function_analysis",
|
|
426
|
+
"pr_analysis"
|
|
427
|
+
];
|
|
428
|
+
function stripSystemMessages(content) {
|
|
429
|
+
const regex = new RegExp(`<(${STRIPPED_TAGS.join("|")})>.*?</\\1>
|
|
430
|
+
?`, "gs");
|
|
431
|
+
return content.replace(regex, "").trim();
|
|
432
|
+
}
|
|
433
|
+
function getToolUseID(message) {
|
|
434
|
+
switch (message.type) {
|
|
435
|
+
case "assistant":
|
|
436
|
+
return isToolUseLikeBlockParam(message.message.content[0]) ? message.message.content[0].id : null;
|
|
437
|
+
case "user":
|
|
438
|
+
if (message.message.content[0]?.type !== "tool_result") {
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
return message.message.content[0].tool_use_id;
|
|
442
|
+
case "progress":
|
|
443
|
+
return message.toolUseID;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
function getLastAssistantMessageId(messages) {
|
|
447
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
448
|
+
const message = messages[i];
|
|
449
|
+
if (message && message.type === "assistant") {
|
|
450
|
+
return message.message.id;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return void 0;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// src/utils/messages/index.ts
|
|
457
|
+
async function processUserInput(input, mode, setToolJSX, context, pastedImages) {
|
|
458
|
+
const impl = await import("./userInput-XDRYT5TI.js");
|
|
459
|
+
return impl.processUserInput(input, mode, setToolJSX, context, pastedImages);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
export {
|
|
463
|
+
API_ERROR_MESSAGE_PREFIX,
|
|
464
|
+
PROMPT_TOO_LONG_ERROR_MESSAGE,
|
|
465
|
+
CREDIT_BALANCE_TOO_LOW_ERROR_MESSAGE,
|
|
466
|
+
INVALID_API_KEY_ERROR_MESSAGE,
|
|
467
|
+
NO_CONTENT_MESSAGE,
|
|
468
|
+
MAIN_QUERY_TEMPERATURE,
|
|
469
|
+
INTERRUPT_MESSAGE,
|
|
470
|
+
INTERRUPT_MESSAGE_FOR_TOOL_USE,
|
|
471
|
+
CANCEL_MESSAGE,
|
|
472
|
+
REJECT_MESSAGE,
|
|
473
|
+
REJECT_MESSAGE_WITH_FEEDBACK_PREFIX,
|
|
474
|
+
REJECTED_PLAN_PREFIX,
|
|
475
|
+
NO_RESPONSE_REQUESTED,
|
|
476
|
+
SYNTHETIC_ASSISTANT_MESSAGES,
|
|
477
|
+
createAssistantMessage,
|
|
478
|
+
createAssistantAPIErrorMessage,
|
|
479
|
+
createUserMessage,
|
|
480
|
+
createProgressMessage,
|
|
481
|
+
createToolResultStopMessage,
|
|
482
|
+
extractTagFromMessage,
|
|
483
|
+
extractTag,
|
|
484
|
+
isNotEmptyMessage,
|
|
485
|
+
normalizeMessages,
|
|
486
|
+
reorderMessages,
|
|
487
|
+
getUnresolvedToolUseIDs,
|
|
488
|
+
getInProgressToolUseIDs,
|
|
489
|
+
getErroredToolUseMessages,
|
|
490
|
+
normalizeMessagesForAPI,
|
|
491
|
+
normalizeContentFromAPI,
|
|
492
|
+
isEmptyMessageText,
|
|
493
|
+
filterUserTextMessagesForUndo,
|
|
494
|
+
stripSystemMessages,
|
|
495
|
+
getToolUseID,
|
|
496
|
+
getLastAssistantMessageId,
|
|
497
|
+
processUserInput
|
|
498
|
+
};
|