pybao-cli 1.4.25 → 1.4.28
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-QZ2IC46G.js +47 -0
- package/dist/{acp-AUKWBWMU.js → acp-2CYBFXCM.js} +29 -29
- package/dist/{agentsValidate-POOZ6Z2B.js → agentsValidate-PJWT2D5K.js} +7 -7
- package/dist/{ask-KWA2DNIV.js → ask-QDI62NUO.js} +28 -28
- package/dist/{autoUpdater-EOXG42SO.js → autoUpdater-MJGYKTEX.js} +3 -3
- package/dist/{chunk-BQYXHHWP.js → chunk-2ZPAB3BG.js} +3 -3
- package/dist/{chunk-VUISUCOO.js → chunk-3VMP3N5I.js} +3 -3
- package/dist/{chunk-47EXCNW6.js → chunk-52YKRUQU.js} +1 -1
- package/dist/{chunk-GTEB77DG.js → chunk-6PLT4FZB.js} +1 -1
- package/dist/{chunk-Z6TEUSJQ.js → chunk-7FQPMZMZ.js} +3 -3
- package/dist/{chunk-CPXJHNYY.js → chunk-7KMREPVU.js} +1 -1
- package/dist/{chunk-ZOWRLM6Q.js → chunk-AIEYODAB.js} +4 -4
- package/dist/{chunk-S75DS5IC.js → chunk-AXB5KBDU.js} +1 -1
- package/dist/{chunk-RPFER2VQ.js → chunk-BTEIUG6Z.js} +2 -2
- package/dist/{chunk-R47CUCI3.js → chunk-DZGSXGNO.js} +1 -1
- package/dist/{chunk-R47CUCI3.js.map → chunk-DZGSXGNO.js.map} +1 -1
- package/dist/{chunk-JSR26OQG.js → chunk-EDOKQ7Q4.js} +205 -78
- package/dist/chunk-EDOKQ7Q4.js.map +7 -0
- package/dist/{chunk-MUD34BHM.js → chunk-EE2HWPNB.js} +13 -5
- package/dist/chunk-EE2HWPNB.js.map +7 -0
- package/dist/{chunk-6BRCM2E4.js → chunk-EXCVPBNU.js} +2 -2
- package/dist/{chunk-IPYLXGFV.js → chunk-FJQEBFRT.js} +3 -3
- package/dist/{chunk-66JIUGLV.js → chunk-GH326UHJ.js} +2 -2
- package/dist/{chunk-OEH4JATH.js → chunk-HDLAUMCO.js} +1 -1
- package/dist/{chunk-T52MGYKQ.js → chunk-HQIRTFBW.js} +3 -3
- package/dist/{chunk-DD2OYKDE.js → chunk-I7634HZL.js} +4 -4
- package/dist/{chunk-JLQ6NN6N.js → chunk-JG4YQHLV.js} +2 -2
- package/dist/{chunk-SVQXV5Q5.js → chunk-JWMY47RD.js} +4 -4
- package/dist/{chunk-J46HCSM3.js → chunk-KM77MFAV.js} +9 -1
- package/dist/{chunk-J46HCSM3.js.map → chunk-KM77MFAV.js.map} +2 -2
- package/dist/{chunk-JUE7XD3T.js → chunk-KY7NHWWW.js} +1 -1
- package/dist/{chunk-QYIH3X4U.js → chunk-L3IBTGKO.js} +3 -3
- package/dist/{chunk-4V6WD6R2.js → chunk-PUPSOZGD.js} +1 -1
- package/dist/{chunk-MXJWHBOD.js → chunk-TSC3H7QP.js} +3 -3
- package/dist/{chunk-DT4HVZ3Y.js → chunk-U7WZR3D2.js} +2 -2
- package/dist/{chunk-5UOVQ6ES.js → chunk-UJ4SCNWQ.js} +2 -2
- package/dist/{chunk-NDFJPKT7.js → chunk-VNC3PEDS.js} +19 -207
- package/dist/chunk-VNC3PEDS.js.map +7 -0
- package/dist/{chunk-MXDHTE5J.js → chunk-Y4WFOPYP.js} +1 -1
- package/dist/{chunk-NWRTSS7D.js → chunk-YO52VXXI.js} +2 -2
- package/dist/{cli-IELXRUTX.js → cli-4KO6R5FN.js} +87 -87
- package/dist/commands-RUXGUN5U.js +51 -0
- package/dist/{config-77DZQTQK.js → config-XD3YFQSX.js} +4 -4
- package/dist/{context-KLUMCLFT.js → context-PO2UESD7.js} +6 -6
- package/dist/{customCommands-ISEA2746.js → customCommands-UEUPC4VR.js} +4 -4
- package/dist/{env-J4F7PRGG.js → env-FI72RSRG.js} +4 -2
- package/dist/{file-KRCHS5A5.js → file-PYLUP7M3.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-6XARMLJR.js → llm-ALKRU6UP.js} +29 -29
- package/dist/{llmLazy-GRPZWGAK.js → llmLazy-XWYVEF7I.js} +1 -1
- package/dist/{loader-WUNIG65J.js → loader-3K6BN6G3.js} +4 -4
- package/dist/{lsp-DL76IXYS.js → lsp-QYFRYHJH.js} +6 -6
- package/dist/{lspAnchor-VPPXXUNO.js → lspAnchor-XN3IVTIB.js} +6 -6
- package/dist/{mcp-KY56TM6T.js → mcp-RIONBCXG.js} +7 -7
- package/dist/{mentionProcessor-E3ITBICV.js → mentionProcessor-EOZLTQXF.js} +5 -5
- package/dist/{messages-DT4HTEOS.js → messages-UTB732JP.js} +1 -1
- package/dist/{model-KCH57MST.js → model-456IYAUB.js} +5 -5
- package/dist/{openai-BNPU7EJH.js → openai-2RFED4YB.js} +5 -5
- package/dist/{outputStyles-QE2JKRBE.js → outputStyles-24VCXHCR.js} +4 -4
- package/dist/{pluginRuntime-NB3KNFSZ.js → pluginRuntime-GUV5KI2J.js} +6 -6
- package/dist/{pluginValidation-KVCOIKER.js → pluginValidation-OO454KKW.js} +6 -6
- package/dist/prompts-IXAHJVVK.js +53 -0
- package/dist/{pybAgentSessionLoad-SCPRT5NR.js → pybAgentSessionLoad-I3ZACINO.js} +4 -4
- package/dist/{pybAgentSessionResume-VKEMMVH7.js → pybAgentSessionResume-DVHX23VD.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-G6TCRJIW.js → pybAgentStreamJsonSession-EW3IOR7R.js} +1 -1
- package/dist/{pybHooks-T6RPQN5F.js → pybHooks-WUXXVPAX.js} +4 -4
- package/dist/query-SXZDETWN.js +55 -0
- package/dist/{registry-CZRNYJ22.js → registry-BL3M7B2R.js} +5 -5
- package/dist/{ripgrep-URB4ZUF3.js → ripgrep-SYBJ5BYB.js} +3 -3
- package/dist/{skillMarketplace-NC4WL6B5.js → skillMarketplace-5PMVM7VU.js} +3 -3
- package/dist/{state-DXHBJ5GD.js → state-3IFYM672.js} +2 -2
- package/dist/{theme-CJU6VJXX.js → theme-WZJJJCKJ.js} +5 -5
- package/dist/{toolPermissionSettings-F3CNX7NA.js → toolPermissionSettings-PBLUJ4CI.js} +6 -6
- package/dist/tools-5LUTKVZL.js +52 -0
- package/dist/{userInput-GIXZP2YY.js → userInput-NV7IAHYR.js} +30 -30
- package/package.json +1 -1
- package/dist/REPL-Q3IP3BNQ.js +0 -47
- package/dist/chunk-JSR26OQG.js.map +0 -7
- package/dist/chunk-MUD34BHM.js.map +0 -7
- package/dist/chunk-NDFJPKT7.js.map +0 -7
- package/dist/commands-QXWCHX5K.js +0 -51
- package/dist/prompts-QIFYQCCH.js +0 -53
- package/dist/query-AA5M6NJ4.js +0 -55
- package/dist/tools-UZYXHSUA.js +0 -52
- /package/dist/{REPL-Q3IP3BNQ.js.map → REPL-QZ2IC46G.js.map} +0 -0
- /package/dist/{acp-AUKWBWMU.js.map → acp-2CYBFXCM.js.map} +0 -0
- /package/dist/{agentsValidate-POOZ6Z2B.js.map → agentsValidate-PJWT2D5K.js.map} +0 -0
- /package/dist/{ask-KWA2DNIV.js.map → ask-QDI62NUO.js.map} +0 -0
- /package/dist/{autoUpdater-EOXG42SO.js.map → autoUpdater-MJGYKTEX.js.map} +0 -0
- /package/dist/{chunk-BQYXHHWP.js.map → chunk-2ZPAB3BG.js.map} +0 -0
- /package/dist/{chunk-VUISUCOO.js.map → chunk-3VMP3N5I.js.map} +0 -0
- /package/dist/{chunk-47EXCNW6.js.map → chunk-52YKRUQU.js.map} +0 -0
- /package/dist/{chunk-GTEB77DG.js.map → chunk-6PLT4FZB.js.map} +0 -0
- /package/dist/{chunk-Z6TEUSJQ.js.map → chunk-7FQPMZMZ.js.map} +0 -0
- /package/dist/{chunk-CPXJHNYY.js.map → chunk-7KMREPVU.js.map} +0 -0
- /package/dist/{chunk-ZOWRLM6Q.js.map → chunk-AIEYODAB.js.map} +0 -0
- /package/dist/{chunk-S75DS5IC.js.map → chunk-AXB5KBDU.js.map} +0 -0
- /package/dist/{chunk-RPFER2VQ.js.map → chunk-BTEIUG6Z.js.map} +0 -0
- /package/dist/{chunk-6BRCM2E4.js.map → chunk-EXCVPBNU.js.map} +0 -0
- /package/dist/{chunk-IPYLXGFV.js.map → chunk-FJQEBFRT.js.map} +0 -0
- /package/dist/{chunk-66JIUGLV.js.map → chunk-GH326UHJ.js.map} +0 -0
- /package/dist/{chunk-OEH4JATH.js.map → chunk-HDLAUMCO.js.map} +0 -0
- /package/dist/{chunk-T52MGYKQ.js.map → chunk-HQIRTFBW.js.map} +0 -0
- /package/dist/{chunk-DD2OYKDE.js.map → chunk-I7634HZL.js.map} +0 -0
- /package/dist/{chunk-JLQ6NN6N.js.map → chunk-JG4YQHLV.js.map} +0 -0
- /package/dist/{chunk-SVQXV5Q5.js.map → chunk-JWMY47RD.js.map} +0 -0
- /package/dist/{chunk-JUE7XD3T.js.map → chunk-KY7NHWWW.js.map} +0 -0
- /package/dist/{chunk-QYIH3X4U.js.map → chunk-L3IBTGKO.js.map} +0 -0
- /package/dist/{chunk-4V6WD6R2.js.map → chunk-PUPSOZGD.js.map} +0 -0
- /package/dist/{chunk-MXJWHBOD.js.map → chunk-TSC3H7QP.js.map} +0 -0
- /package/dist/{chunk-DT4HVZ3Y.js.map → chunk-U7WZR3D2.js.map} +0 -0
- /package/dist/{chunk-5UOVQ6ES.js.map → chunk-UJ4SCNWQ.js.map} +0 -0
- /package/dist/{chunk-MXDHTE5J.js.map → chunk-Y4WFOPYP.js.map} +0 -0
- /package/dist/{chunk-NWRTSS7D.js.map → chunk-YO52VXXI.js.map} +0 -0
- /package/dist/{cli-IELXRUTX.js.map → cli-4KO6R5FN.js.map} +0 -0
- /package/dist/{commands-QXWCHX5K.js.map → commands-RUXGUN5U.js.map} +0 -0
- /package/dist/{config-77DZQTQK.js.map → config-XD3YFQSX.js.map} +0 -0
- /package/dist/{context-KLUMCLFT.js.map → context-PO2UESD7.js.map} +0 -0
- /package/dist/{customCommands-ISEA2746.js.map → customCommands-UEUPC4VR.js.map} +0 -0
- /package/dist/{env-J4F7PRGG.js.map → env-FI72RSRG.js.map} +0 -0
- /package/dist/{file-KRCHS5A5.js.map → file-PYLUP7M3.js.map} +0 -0
- /package/dist/{llm-6XARMLJR.js.map → llm-ALKRU6UP.js.map} +0 -0
- /package/dist/{llmLazy-GRPZWGAK.js.map → llmLazy-XWYVEF7I.js.map} +0 -0
- /package/dist/{loader-WUNIG65J.js.map → loader-3K6BN6G3.js.map} +0 -0
- /package/dist/{lsp-DL76IXYS.js.map → lsp-QYFRYHJH.js.map} +0 -0
- /package/dist/{lspAnchor-VPPXXUNO.js.map → lspAnchor-XN3IVTIB.js.map} +0 -0
- /package/dist/{mcp-KY56TM6T.js.map → mcp-RIONBCXG.js.map} +0 -0
- /package/dist/{mentionProcessor-E3ITBICV.js.map → mentionProcessor-EOZLTQXF.js.map} +0 -0
- /package/dist/{messages-DT4HTEOS.js.map → messages-UTB732JP.js.map} +0 -0
- /package/dist/{model-KCH57MST.js.map → model-456IYAUB.js.map} +0 -0
- /package/dist/{openai-BNPU7EJH.js.map → openai-2RFED4YB.js.map} +0 -0
- /package/dist/{outputStyles-QE2JKRBE.js.map → outputStyles-24VCXHCR.js.map} +0 -0
- /package/dist/{pluginRuntime-NB3KNFSZ.js.map → pluginRuntime-GUV5KI2J.js.map} +0 -0
- /package/dist/{pluginValidation-KVCOIKER.js.map → pluginValidation-OO454KKW.js.map} +0 -0
- /package/dist/{prompts-QIFYQCCH.js.map → prompts-IXAHJVVK.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-SCPRT5NR.js.map → pybAgentSessionLoad-I3ZACINO.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-VKEMMVH7.js.map → pybAgentSessionResume-DVHX23VD.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-G6TCRJIW.js.map → pybAgentStreamJsonSession-EW3IOR7R.js.map} +0 -0
- /package/dist/{pybHooks-T6RPQN5F.js.map → pybHooks-WUXXVPAX.js.map} +0 -0
- /package/dist/{query-AA5M6NJ4.js.map → query-SXZDETWN.js.map} +0 -0
- /package/dist/{registry-CZRNYJ22.js.map → registry-BL3M7B2R.js.map} +0 -0
- /package/dist/{ripgrep-URB4ZUF3.js.map → ripgrep-SYBJ5BYB.js.map} +0 -0
- /package/dist/{skillMarketplace-NC4WL6B5.js.map → skillMarketplace-5PMVM7VU.js.map} +0 -0
- /package/dist/{state-DXHBJ5GD.js.map → state-3IFYM672.js.map} +0 -0
- /package/dist/{theme-CJU6VJXX.js.map → theme-WZJJJCKJ.js.map} +0 -0
- /package/dist/{toolPermissionSettings-F3CNX7NA.js.map → toolPermissionSettings-PBLUJ4CI.js.map} +0 -0
- /package/dist/{tools-UZYXHSUA.js.map → tools-5LUTKVZL.js.map} +0 -0
- /package/dist/{userInput-GIXZP2YY.js.map → userInput-NV7IAHYR.js.map} +0 -0
|
@@ -3,18 +3,18 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
formatValidationResult,
|
|
5
5
|
validatePluginOrMarketplacePath
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2ZPAB3BG.js";
|
|
7
7
|
import {
|
|
8
8
|
loadPybAgentSessionMessages
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6PLT4FZB.js";
|
|
10
10
|
import {
|
|
11
11
|
listPybAgentSessions
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KY7NHWWW.js";
|
|
13
13
|
import {
|
|
14
14
|
appendSessionCustomTitleRecord,
|
|
15
15
|
appendSessionJsonlFromMessage,
|
|
16
16
|
appendSessionTagRecord
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-JG4YQHLV.js";
|
|
18
18
|
import {
|
|
19
19
|
drainHookSystemPromptAdditions,
|
|
20
20
|
getHookTranscriptPath,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
runStopHooks,
|
|
27
27
|
runUserPromptSubmitHooks,
|
|
28
28
|
updateHookTranscriptForMessages
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-HQIRTFBW.js";
|
|
30
30
|
import {
|
|
31
31
|
DEFAULT_OUTPUT_STYLE,
|
|
32
32
|
getAvailableOutputStyles,
|
|
@@ -35,16 +35,16 @@ import {
|
|
|
35
35
|
getOutputStyleSystemPromptAdditions,
|
|
36
36
|
resolveOutputStyleName,
|
|
37
37
|
setCurrentOutputStyle
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-UJ4SCNWQ.js";
|
|
39
39
|
import {
|
|
40
40
|
fetchCustomModels,
|
|
41
41
|
getModelFeatures
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-YO52VXXI.js";
|
|
43
43
|
import {
|
|
44
44
|
queryLLM,
|
|
45
45
|
queryQuick,
|
|
46
46
|
verifyApiKey
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-JWMY47RD.js";
|
|
48
48
|
import {
|
|
49
49
|
DEFAULT_TIMEOUT_MS,
|
|
50
50
|
FallbackToolUseRejectedMessage,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
listMCPServers,
|
|
59
59
|
loadMergedSettings,
|
|
60
60
|
normalizeSandboxRuntimeConfigFromSettings
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-I7634HZL.js";
|
|
62
62
|
import {
|
|
63
63
|
addMarketplace,
|
|
64
64
|
disableSkillPlugin,
|
|
@@ -71,11 +71,11 @@ import {
|
|
|
71
71
|
refreshMarketplaceAsync,
|
|
72
72
|
removeMarketplace,
|
|
73
73
|
uninstallSkillPlugin
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-52YKRUQU.js";
|
|
75
75
|
import {
|
|
76
76
|
loadToolPermissionContextFromDisk,
|
|
77
77
|
persistToolPermissionUpdateToDisk
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-L3IBTGKO.js";
|
|
79
79
|
import {
|
|
80
80
|
applyToolPermissionContextUpdate,
|
|
81
81
|
createDefaultToolPermissionContext
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
resetReminderSession,
|
|
89
89
|
setTodos,
|
|
90
90
|
systemReminderService
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-U7WZR3D2.js";
|
|
92
92
|
import {
|
|
93
93
|
getSessionState
|
|
94
94
|
} from "./chunk-ERMQRV55.js";
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
getActiveAgents,
|
|
98
98
|
getAgentByType,
|
|
99
99
|
getAllAgents
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-BTEIUG6Z.js";
|
|
101
101
|
import {
|
|
102
102
|
API_ERROR_MESSAGE_PREFIX,
|
|
103
103
|
CANCEL_MESSAGE,
|
|
@@ -127,7 +127,7 @@ import {
|
|
|
127
127
|
processUserInput,
|
|
128
128
|
reorderMessages,
|
|
129
129
|
stripSystemMessages
|
|
130
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-Y4WFOPYP.js";
|
|
131
131
|
import {
|
|
132
132
|
getRequestStatus,
|
|
133
133
|
setRequestStatus,
|
|
@@ -157,7 +157,7 @@ import {
|
|
|
157
157
|
normalizeFilePath,
|
|
158
158
|
readTextContent,
|
|
159
159
|
writeTextContent
|
|
160
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-GH326UHJ.js";
|
|
161
161
|
import {
|
|
162
162
|
parseBlockEdits
|
|
163
163
|
} from "./chunk-QWIBSCDN.js";
|
|
@@ -167,18 +167,18 @@ import {
|
|
|
167
167
|
ParserRegistry,
|
|
168
168
|
initParser,
|
|
169
169
|
loadLanguage
|
|
170
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-AIEYODAB.js";
|
|
171
171
|
import {
|
|
172
172
|
getSettingsFileCandidates,
|
|
173
173
|
loadSettingsWithLegacyFallback,
|
|
174
174
|
readSettingsFile
|
|
175
|
-
} from "./chunk-
|
|
175
|
+
} from "./chunk-7KMREPVU.js";
|
|
176
176
|
import {
|
|
177
177
|
getCustomCommandDirectories,
|
|
178
178
|
hasCustomCommands,
|
|
179
179
|
loadCustomCommands,
|
|
180
180
|
reloadCustomCommands
|
|
181
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-EXCVPBNU.js";
|
|
182
182
|
import {
|
|
183
183
|
getSessionPlugins
|
|
184
184
|
} from "./chunk-BJSWTHRM.js";
|
|
@@ -186,7 +186,7 @@ import {
|
|
|
186
186
|
ModelManager,
|
|
187
187
|
getModelManager,
|
|
188
188
|
isDefaultSlowAndCapableModel
|
|
189
|
-
} from "./chunk-
|
|
189
|
+
} from "./chunk-FJQEBFRT.js";
|
|
190
190
|
import {
|
|
191
191
|
getCodeStyle,
|
|
192
192
|
getContext,
|
|
@@ -194,13 +194,13 @@ import {
|
|
|
194
194
|
getIsGit,
|
|
195
195
|
getProjectDocs,
|
|
196
196
|
getProjectStructureStatisticsBlock
|
|
197
|
-
} from "./chunk-
|
|
197
|
+
} from "./chunk-EE2HWPNB.js";
|
|
198
198
|
import {
|
|
199
199
|
ripGrep
|
|
200
|
-
} from "./chunk-
|
|
200
|
+
} from "./chunk-PUPSOZGD.js";
|
|
201
201
|
import {
|
|
202
202
|
getTheme
|
|
203
|
-
} from "./chunk-
|
|
203
|
+
} from "./chunk-AXB5KBDU.js";
|
|
204
204
|
import {
|
|
205
205
|
DEFAULT_GLOBAL_CONFIG,
|
|
206
206
|
enableConfigs,
|
|
@@ -213,7 +213,7 @@ import {
|
|
|
213
213
|
saveGlobalConfig,
|
|
214
214
|
setAllPointersToModel,
|
|
215
215
|
setModelPointer
|
|
216
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-7FQPMZMZ.js";
|
|
217
217
|
import {
|
|
218
218
|
AbortError
|
|
219
219
|
} from "./chunk-RQVLBMP7.js";
|
|
@@ -222,7 +222,7 @@ import {
|
|
|
222
222
|
getCurrentRequest,
|
|
223
223
|
logUserFriendly,
|
|
224
224
|
markPhase
|
|
225
|
-
} from "./chunk-
|
|
225
|
+
} from "./chunk-HDLAUMCO.js";
|
|
226
226
|
import {
|
|
227
227
|
ASCII_LOGO,
|
|
228
228
|
BunShell,
|
|
@@ -251,6 +251,7 @@ import {
|
|
|
251
251
|
getTaskOutputFilePath,
|
|
252
252
|
getXdgConfigDir,
|
|
253
253
|
hydratePlanSlugFromMessages,
|
|
254
|
+
isContextScanDisabled,
|
|
254
255
|
isMainPlanFilePathForActiveConversation,
|
|
255
256
|
logError,
|
|
256
257
|
overwriteLog,
|
|
@@ -262,10 +263,10 @@ import {
|
|
|
262
263
|
setCwd,
|
|
263
264
|
shouldApplyToolOutputTruncation,
|
|
264
265
|
truncateToolOutput
|
|
265
|
-
} from "./chunk-
|
|
266
|
+
} from "./chunk-KM77MFAV.js";
|
|
266
267
|
import {
|
|
267
268
|
MACRO
|
|
268
|
-
} from "./chunk-
|
|
269
|
+
} from "./chunk-DZGSXGNO.js";
|
|
269
270
|
import {
|
|
270
271
|
__export
|
|
271
272
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -446,7 +447,7 @@ var getCommandSubcommandPrefix = memoize(
|
|
|
446
447
|
var getCommandPrefix = memoize(
|
|
447
448
|
async (command4, abortSignal) => {
|
|
448
449
|
const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
|
|
449
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-
|
|
450
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-ALKRU6UP.js");
|
|
450
451
|
const response = await queryQuick2({
|
|
451
452
|
systemPrompt,
|
|
452
453
|
userPrompt,
|
|
@@ -4248,7 +4249,7 @@ function formatParseError(error) {
|
|
|
4248
4249
|
return error instanceof Error ? error.message : String(error);
|
|
4249
4250
|
}
|
|
4250
4251
|
async function defaultGateQuery(args) {
|
|
4251
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-
|
|
4252
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-ALKRU6UP.js");
|
|
4252
4253
|
const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
|
|
4253
4254
|
const messages = [
|
|
4254
4255
|
{
|
|
@@ -4628,6 +4629,7 @@ function getCommandSource(context) {
|
|
|
4628
4629
|
import { Box as Box5, Text as Text5 } from "ink";
|
|
4629
4630
|
import React5 from "react";
|
|
4630
4631
|
import { z } from "zod";
|
|
4632
|
+
import { parse as parse4 } from "node-html-parser";
|
|
4631
4633
|
|
|
4632
4634
|
// src/ui/components/Cost.tsx
|
|
4633
4635
|
import * as React4 from "react";
|
|
@@ -4643,18 +4645,20 @@ function Cost({ costUSD, durationMs, debug: debug2 }) {
|
|
|
4643
4645
|
// src/tools/network/WebFetchTool/prompt.ts
|
|
4644
4646
|
var TOOL_NAME_FOR_PROMPT = "WebFetch";
|
|
4645
4647
|
var PROMPT = `
|
|
4646
|
-
- Fetches content from a specified URL
|
|
4647
|
-
- Takes a URL and
|
|
4648
|
-
- Fetches the URL content, converts HTML to
|
|
4649
|
-
- Processes the content with the prompt using a small, fast model
|
|
4650
|
-
- Returns the model's response
|
|
4651
|
-
- Use this tool when you need to retrieve
|
|
4648
|
+
- Fetches content from a specified URL
|
|
4649
|
+
- Takes a URL and optional prompt/format as input
|
|
4650
|
+
- Fetches the URL content, converts HTML to the requested format
|
|
4651
|
+
- Processes the content with the prompt using a small, fast model when provided
|
|
4652
|
+
- Returns either the model's response or the formatted content
|
|
4653
|
+
- Use this tool when you need to retrieve or analyze web content
|
|
4652
4654
|
|
|
4653
4655
|
Usage notes:
|
|
4654
4656
|
- IMPORTANT: If an MCP-provided web fetch tool is available, prefer using that tool instead of this one, as it may have fewer restrictions.
|
|
4655
4657
|
- The URL must be a fully-formed valid URL
|
|
4656
4658
|
- HTTP URLs will be automatically upgraded to HTTPS
|
|
4657
4659
|
- The prompt should describe what information you want to extract from the page
|
|
4660
|
+
- Format options: "markdown" (default), "text", or "html"
|
|
4661
|
+
- Timeout is optional and defaults to 30 seconds
|
|
4658
4662
|
- This tool is read-only and does not modify any files
|
|
4659
4663
|
- Results may be summarized if the content is very large
|
|
4660
4664
|
- Includes a self-cleaning 15-minute cache for faster responses when repeatedly accessing the same URL
|
|
@@ -4692,8 +4696,8 @@ turndownService.addRule("cleanLinks", {
|
|
|
4692
4696
|
});
|
|
4693
4697
|
function convertHtmlToMarkdown(html) {
|
|
4694
4698
|
try {
|
|
4695
|
-
const
|
|
4696
|
-
const markdown = turndownService.turndown(
|
|
4699
|
+
const cleanHtml2 = html.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<style[^>]*>[\s\S]*?<\/style>/gi, "").replace(/<!--[\s\S]*?-->/g, "").replace(/\s+/g, " ").trim();
|
|
4700
|
+
const markdown = turndownService.turndown(cleanHtml2);
|
|
4697
4701
|
return markdown.replace(/\n{3,}/g, "\n\n").replace(/^\s+|\s+$/gm, "").trim();
|
|
4698
4702
|
} catch (error) {
|
|
4699
4703
|
throw new Error(
|
|
@@ -4748,7 +4752,9 @@ var urlCache = new URLCache();
|
|
|
4748
4752
|
// src/tools/network/WebFetchTool/WebFetchTool.tsx
|
|
4749
4753
|
var inputSchema = z.strictObject({
|
|
4750
4754
|
url: z.string().url().describe("The URL to fetch content from"),
|
|
4751
|
-
prompt: z.string().describe("
|
|
4755
|
+
prompt: z.string().optional().describe("Optional prompt to run on the fetched content"),
|
|
4756
|
+
format: z.enum(["markdown", "html", "text"]).optional().describe("Output format (default: markdown)"),
|
|
4757
|
+
timeout: z.number().optional().describe("Timeout in seconds (default: 30)")
|
|
4752
4758
|
});
|
|
4753
4759
|
var FETCH_TIMEOUT_MS = 3e4;
|
|
4754
4760
|
var MAX_URL_LENGTH = 2e3;
|
|
@@ -4840,6 +4846,27 @@ function truncateFetchedContent(content) {
|
|
|
4840
4846
|
if (content.length <= MAX_CONTENT_CHARS) return content;
|
|
4841
4847
|
return `${content.substring(0, MAX_CONTENT_CHARS)}...[content truncated]`;
|
|
4842
4848
|
}
|
|
4849
|
+
function cleanHtml(html) {
|
|
4850
|
+
const root = parse4(html);
|
|
4851
|
+
const elementsToRemove = root.querySelectorAll(
|
|
4852
|
+
"script, style, nav, footer, iframe, noscript, object, embed"
|
|
4853
|
+
);
|
|
4854
|
+
elementsToRemove.forEach((el) => el.remove());
|
|
4855
|
+
return root.toString();
|
|
4856
|
+
}
|
|
4857
|
+
function convertHtmlToText(html) {
|
|
4858
|
+
const cleaned = cleanHtml(html);
|
|
4859
|
+
const root = parse4(cleaned);
|
|
4860
|
+
return root.textContent.trim();
|
|
4861
|
+
}
|
|
4862
|
+
function applyFormat(rawContent, contentType, format3) {
|
|
4863
|
+
if (!contentType.toLowerCase().includes("text/html")) {
|
|
4864
|
+
return rawContent;
|
|
4865
|
+
}
|
|
4866
|
+
if (format3 === "html") return cleanHtml(rawContent);
|
|
4867
|
+
if (format3 === "text") return convertHtmlToText(rawContent);
|
|
4868
|
+
return convertHtmlToMarkdown(rawContent);
|
|
4869
|
+
}
|
|
4843
4870
|
function isMarkdownHost(url2, contentType) {
|
|
4844
4871
|
const lowerContentType = contentType.toLowerCase();
|
|
4845
4872
|
if (lowerContentType.includes("text/markdown")) return true;
|
|
@@ -4950,9 +4977,15 @@ var WebFetchTool = {
|
|
|
4950
4977
|
}
|
|
4951
4978
|
return { result: true };
|
|
4952
4979
|
},
|
|
4953
|
-
renderToolUseMessage({ url: url2, prompt }, { verbose }) {
|
|
4980
|
+
renderToolUseMessage({ url: url2, prompt, format: format3, timeout }, { verbose }) {
|
|
4954
4981
|
if (verbose) {
|
|
4955
|
-
|
|
4982
|
+
const details = [
|
|
4983
|
+
`url: "${url2}"`,
|
|
4984
|
+
prompt ? `prompt: "${prompt}"` : null,
|
|
4985
|
+
format3 ? `format: "${format3}"` : null,
|
|
4986
|
+
timeout ? `timeout: ${timeout}s` : null
|
|
4987
|
+
].filter(Boolean);
|
|
4988
|
+
return details.join(", ");
|
|
4956
4989
|
}
|
|
4957
4990
|
return url2;
|
|
4958
4991
|
},
|
|
@@ -4963,14 +4996,19 @@ var WebFetchTool = {
|
|
|
4963
4996
|
return /* @__PURE__ */ React5.createElement(Box5, { justifyContent: "space-between", width: "100%" }, /* @__PURE__ */ React5.createElement(Box5, { flexDirection: "row" }, /* @__PURE__ */ React5.createElement(Text5, null, "\xA0\xA0\u23BF \xA0Received "), /* @__PURE__ */ React5.createElement(Text5, { bold: true }, formatBytes(output.bytes), " "), /* @__PURE__ */ React5.createElement(Text5, null, "(", output.code, " ", output.codeText, ")")), /* @__PURE__ */ React5.createElement(Cost, { costUSD: 0, durationMs: output.durationMs, debug: false }));
|
|
4964
4997
|
},
|
|
4965
4998
|
renderResultForAssistant(output) {
|
|
4999
|
+
if (output.mode === "fetch") {
|
|
5000
|
+
return `Content from ${output.url} (Format: ${output.format}):
|
|
5001
|
+
|
|
5002
|
+
${output.result}`;
|
|
5003
|
+
}
|
|
4966
5004
|
return output.result;
|
|
4967
5005
|
},
|
|
4968
|
-
async *call({ url: url2, prompt }, context) {
|
|
5006
|
+
async *call({ url: url2, prompt, format: format3, timeout }, context) {
|
|
4969
5007
|
const normalizedUrl = normalizeUrl(url2);
|
|
4970
5008
|
const start = Date.now();
|
|
4971
5009
|
const timeoutSignal = createTimeoutSignal(
|
|
4972
5010
|
context.abortController.signal,
|
|
4973
|
-
FETCH_TIMEOUT_MS
|
|
5011
|
+
Math.max(1, Number.isFinite(timeout) ? Number(timeout) : 30) * 1e3 || FETCH_TIMEOUT_MS
|
|
4974
5012
|
);
|
|
4975
5013
|
try {
|
|
4976
5014
|
const cached = urlCache.get(normalizedUrl);
|
|
@@ -4992,7 +5030,10 @@ To complete your request, I need to fetch content from the redirected URL. Pleas
|
|
|
4992
5030
|
codeText: codeText2,
|
|
4993
5031
|
result: result2,
|
|
4994
5032
|
durationMs: Date.now() - start,
|
|
4995
|
-
url: normalizedUrl
|
|
5033
|
+
url: normalizedUrl,
|
|
5034
|
+
mode: "analysis",
|
|
5035
|
+
format: "markdown",
|
|
5036
|
+
cached: Boolean(cached)
|
|
4996
5037
|
};
|
|
4997
5038
|
yield {
|
|
4998
5039
|
type: "result",
|
|
@@ -5004,7 +5045,7 @@ To complete your request, I need to fetch content from the redirected URL. Pleas
|
|
|
5004
5045
|
let bytes = cached ? cached.bytes : 0;
|
|
5005
5046
|
let code = cached ? cached.code : 200;
|
|
5006
5047
|
let codeText = cached ? cached.codeText : "OK";
|
|
5007
|
-
let
|
|
5048
|
+
let rawContent = cached ? cached.rawContent : "";
|
|
5008
5049
|
let contentType = cached ? cached.contentType : "";
|
|
5009
5050
|
if (fetched && fetched.type === "response") {
|
|
5010
5051
|
const response = fetched.response;
|
|
@@ -5013,36 +5054,47 @@ To complete your request, I need to fetch content from the redirected URL. Pleas
|
|
|
5013
5054
|
contentType = response.headers.get("content-type") || "";
|
|
5014
5055
|
const { text: raw, bytes: responseBytes } = await readResponseTextLimited(response, MAX_RESPONSE_BYTES);
|
|
5015
5056
|
bytes = responseBytes;
|
|
5016
|
-
|
|
5017
|
-
markdown = truncateFetchedContent(converted);
|
|
5057
|
+
rawContent = raw;
|
|
5018
5058
|
urlCache.set(normalizedUrl, {
|
|
5019
5059
|
bytes,
|
|
5020
5060
|
code,
|
|
5021
5061
|
codeText,
|
|
5022
|
-
|
|
5062
|
+
rawContent,
|
|
5023
5063
|
contentType
|
|
5024
5064
|
});
|
|
5025
5065
|
}
|
|
5026
|
-
const
|
|
5027
|
-
const
|
|
5028
|
-
|
|
5029
|
-
prompt,
|
|
5030
|
-
allowBroaderQuoting
|
|
5066
|
+
const outputFormat = format3 ?? "markdown";
|
|
5067
|
+
const formatted = truncateFetchedContent(
|
|
5068
|
+
applyFormat(rawContent, contentType, outputFormat)
|
|
5031
5069
|
);
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5070
|
+
let result = formatted;
|
|
5071
|
+
let mode = "fetch";
|
|
5072
|
+
if (prompt && prompt.trim()) {
|
|
5073
|
+
const allowBroaderQuoting = isMarkdownHost(normalizedUrl, contentType);
|
|
5074
|
+
const userPrompt = buildWebFetchApplyPrompt(
|
|
5075
|
+
formatted,
|
|
5076
|
+
prompt,
|
|
5077
|
+
allowBroaderQuoting
|
|
5078
|
+
);
|
|
5079
|
+
const aiResponse = await queryQuick({
|
|
5080
|
+
systemPrompt: [],
|
|
5081
|
+
userPrompt,
|
|
5082
|
+
enablePromptCaching: false,
|
|
5083
|
+
signal: timeoutSignal.signal
|
|
5084
|
+
});
|
|
5085
|
+
result = aiResponse.message.content[0]?.text || "No response from model";
|
|
5086
|
+
mode = "analysis";
|
|
5087
|
+
}
|
|
5039
5088
|
const output = {
|
|
5040
5089
|
bytes,
|
|
5041
5090
|
code,
|
|
5042
5091
|
codeText,
|
|
5043
5092
|
result,
|
|
5044
5093
|
durationMs: Date.now() - start,
|
|
5045
|
-
url: normalizedUrl
|
|
5094
|
+
url: normalizedUrl,
|
|
5095
|
+
mode,
|
|
5096
|
+
format: outputFormat,
|
|
5097
|
+
cached: Boolean(cached)
|
|
5046
5098
|
};
|
|
5047
5099
|
yield {
|
|
5048
5100
|
type: "result",
|
|
@@ -5057,7 +5109,10 @@ To complete your request, I need to fetch content from the redirected URL. Pleas
|
|
|
5057
5109
|
codeText: "",
|
|
5058
5110
|
result: `Error processing URL ${normalizedUrl}: ${message}`,
|
|
5059
5111
|
durationMs: Date.now() - start,
|
|
5060
|
-
url: normalizedUrl
|
|
5112
|
+
url: normalizedUrl,
|
|
5113
|
+
mode: "analysis",
|
|
5114
|
+
format: "markdown",
|
|
5115
|
+
cached: false
|
|
5061
5116
|
};
|
|
5062
5117
|
yield {
|
|
5063
5118
|
type: "result",
|
|
@@ -6509,7 +6564,7 @@ var FileEditTool = {
|
|
|
6509
6564
|
const originalFileContent = currentFileContent;
|
|
6510
6565
|
let totalPatch = [];
|
|
6511
6566
|
const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
|
|
6512
|
-
const { findLspAnchor } = await import("./lspAnchor-
|
|
6567
|
+
const { findLspAnchor } = await import("./lspAnchor-XN3IVTIB.js");
|
|
6513
6568
|
for (const op of editOperations) {
|
|
6514
6569
|
const normalizedSearch = normalizeLineEndings(op.search);
|
|
6515
6570
|
const normalizedReplace = normalizeLineEndings(op.replace);
|
|
@@ -8494,7 +8549,7 @@ IMPORTANT - Use the correct year in search queries:
|
|
|
8494
8549
|
`.trim();
|
|
8495
8550
|
|
|
8496
8551
|
// src/tools/network/WebSearchTool/searchProviders.ts
|
|
8497
|
-
import { parse as
|
|
8552
|
+
import { parse as parse5 } from "node-html-parser";
|
|
8498
8553
|
var duckDuckGoSearchProvider = {
|
|
8499
8554
|
isEnabled: () => true,
|
|
8500
8555
|
search: async (query2) => {
|
|
@@ -8512,7 +8567,7 @@ var duckDuckGoSearchProvider = {
|
|
|
8512
8567
|
);
|
|
8513
8568
|
}
|
|
8514
8569
|
const html = await response.text();
|
|
8515
|
-
const root =
|
|
8570
|
+
const root = parse5(html);
|
|
8516
8571
|
const results = [];
|
|
8517
8572
|
const resultNodes = root.querySelectorAll(".result.web-result");
|
|
8518
8573
|
for (const node of resultNodes) {
|
|
@@ -11085,7 +11140,7 @@ async function createAndStoreApiKey(accessToken) {
|
|
|
11085
11140
|
}
|
|
11086
11141
|
saveGlobalConfig(config2);
|
|
11087
11142
|
try {
|
|
11088
|
-
const { resetAnthropicClient } = await import("./llm-
|
|
11143
|
+
const { resetAnthropicClient } = await import("./llm-ALKRU6UP.js");
|
|
11089
11144
|
resetAnthropicClient();
|
|
11090
11145
|
} catch {
|
|
11091
11146
|
}
|
|
@@ -15321,10 +15376,10 @@ var mcp = {
|
|
|
15321
15376
|
var mcp_default = mcp;
|
|
15322
15377
|
|
|
15323
15378
|
// src/commands/plugin.ts
|
|
15324
|
-
import { parse as
|
|
15379
|
+
import { parse as parse7 } from "shell-quote";
|
|
15325
15380
|
var PLUGIN_SCOPES = ["user", "project", "local"];
|
|
15326
15381
|
function parseTokens(input) {
|
|
15327
|
-
const parts =
|
|
15382
|
+
const parts = parse7(input);
|
|
15328
15383
|
const out = [];
|
|
15329
15384
|
for (const part of parts) {
|
|
15330
15385
|
if (typeof part === "string") out.push(part);
|
|
@@ -15367,7 +15422,7 @@ async function refreshPluginRuntimeFromInstalls() {
|
|
|
15367
15422
|
const existingRoots = getSessionPlugins().map((p) => p.rootDir);
|
|
15368
15423
|
const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
|
|
15369
15424
|
if (dirs.length === 0) return [];
|
|
15370
|
-
const { configureSessionPlugins } = await import("./pluginRuntime-
|
|
15425
|
+
const { configureSessionPlugins } = await import("./pluginRuntime-GUV5KI2J.js");
|
|
15371
15426
|
const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
|
|
15372
15427
|
return errors;
|
|
15373
15428
|
}
|
|
@@ -16036,7 +16091,7 @@ async function call(onDone, context) {
|
|
|
16036
16091
|
ModelConfig,
|
|
16037
16092
|
{
|
|
16038
16093
|
onClose: () => {
|
|
16039
|
-
import("./model-
|
|
16094
|
+
import("./model-456IYAUB.js").then(({ reloadModelManager: reloadModelManager2 }) => {
|
|
16040
16095
|
reloadModelManager2();
|
|
16041
16096
|
triggerModelConfigChange();
|
|
16042
16097
|
onDone();
|
|
@@ -23771,7 +23826,7 @@ function useStatusLine() {
|
|
|
23771
23826
|
// src/ui/components/PromptInput.tsx
|
|
23772
23827
|
async function interpretHashCommand(input) {
|
|
23773
23828
|
try {
|
|
23774
|
-
const { queryQuick: queryQuick2 } = await import("./llm-
|
|
23829
|
+
const { queryQuick: queryQuick2 } = await import("./llm-ALKRU6UP.js");
|
|
23775
23830
|
const systemPrompt = [
|
|
23776
23831
|
"You're helping the user structure notes that will be added to their PYB.md file.",
|
|
23777
23832
|
"Format the user's input into a well-structured note that will be useful for later reference.",
|
|
@@ -24084,7 +24139,7 @@ function PromptInput({
|
|
|
24084
24139
|
if (messages2.length) {
|
|
24085
24140
|
if (mode === "bash") {
|
|
24086
24141
|
onQuery(messages2, newAbortController).then(async () => {
|
|
24087
|
-
const { getCwd: getCwd2 } = await import("./state-
|
|
24142
|
+
const { getCwd: getCwd2 } = await import("./state-3IFYM672.js");
|
|
24088
24143
|
setCurrentPwd(getCwd2());
|
|
24089
24144
|
});
|
|
24090
24145
|
} else {
|
|
@@ -24647,6 +24702,13 @@ var PybContextManager = class _PybContextManager {
|
|
|
24647
24702
|
}
|
|
24648
24703
|
async initialize() {
|
|
24649
24704
|
if (this.initPromise) return this.initPromise;
|
|
24705
|
+
if (isContextScanDisabled()) {
|
|
24706
|
+
this.projectDocsCache = "";
|
|
24707
|
+
this.projectStructureStatsCache = "";
|
|
24708
|
+
this.cacheInitialized = false;
|
|
24709
|
+
this.initPromise = null;
|
|
24710
|
+
return;
|
|
24711
|
+
}
|
|
24650
24712
|
this.initPromise = (async () => {
|
|
24651
24713
|
try {
|
|
24652
24714
|
const [projectDocs, statsBlock] = await Promise.all([
|
|
@@ -24669,6 +24731,11 @@ var PybContextManager = class _PybContextManager {
|
|
|
24669
24731
|
return this.initPromise;
|
|
24670
24732
|
}
|
|
24671
24733
|
getPybContext() {
|
|
24734
|
+
if (isContextScanDisabled()) {
|
|
24735
|
+
this.cacheInitialized = false;
|
|
24736
|
+
this.initPromise = null;
|
|
24737
|
+
return "";
|
|
24738
|
+
}
|
|
24672
24739
|
if (!this.cacheInitialized) {
|
|
24673
24740
|
this.initialize().catch((error) => {
|
|
24674
24741
|
logError(error);
|
|
@@ -24685,6 +24752,13 @@ var PybContextManager = class _PybContextManager {
|
|
|
24685
24752
|
return context;
|
|
24686
24753
|
}
|
|
24687
24754
|
async refreshCache() {
|
|
24755
|
+
if (isContextScanDisabled()) {
|
|
24756
|
+
this.projectDocsCache = "";
|
|
24757
|
+
this.projectStructureStatsCache = "";
|
|
24758
|
+
this.cacheInitialized = false;
|
|
24759
|
+
this.initPromise = null;
|
|
24760
|
+
return;
|
|
24761
|
+
}
|
|
24688
24762
|
this.cacheInitialized = false;
|
|
24689
24763
|
this.initPromise = null;
|
|
24690
24764
|
await this.initialize();
|
|
@@ -24841,6 +24915,47 @@ Coding style, formatting, and organizational preferences. Communication patterns
|
|
|
24841
24915
|
Important technical decisions made and their rationale. Alternative approaches considered and why they were rejected. Trade-offs accepted and their implications.
|
|
24842
24916
|
|
|
24843
24917
|
Focus on information essential for continuing the conversation effectively, including specific details about code, files, errors, and plans.`;
|
|
24918
|
+
var AUTO_COMPACT_NOTICE = "Context automatically compressed due to token limit.";
|
|
24919
|
+
var RECOVERED_FILE_MARKER = "**Recovered File:";
|
|
24920
|
+
function getMessageText(message) {
|
|
24921
|
+
if (!message || typeof message !== "object") return null;
|
|
24922
|
+
if (message.type !== "user" && message.type !== "assistant") return null;
|
|
24923
|
+
const content = message.message?.content;
|
|
24924
|
+
if (typeof content === "string") return content;
|
|
24925
|
+
if (!Array.isArray(content)) return null;
|
|
24926
|
+
return content.filter((block) => block && typeof block === "object" && block.type === "text").map((block) => String(block.text ?? "")).join("");
|
|
24927
|
+
}
|
|
24928
|
+
function isAutoCompactNotice(message) {
|
|
24929
|
+
if (message.type !== "user") return false;
|
|
24930
|
+
const text = getMessageText(message);
|
|
24931
|
+
return Boolean(text && text.includes(AUTO_COMPACT_NOTICE));
|
|
24932
|
+
}
|
|
24933
|
+
function isRecoveredFileMessage(message) {
|
|
24934
|
+
if (message.type !== "user") return false;
|
|
24935
|
+
const text = getMessageText(message);
|
|
24936
|
+
return Boolean(text && text.includes(RECOVERED_FILE_MARKER));
|
|
24937
|
+
}
|
|
24938
|
+
function stripLeadingRecoveredFiles(messages) {
|
|
24939
|
+
let index = 0;
|
|
24940
|
+
while (index < messages.length && isRecoveredFileMessage(messages[index])) {
|
|
24941
|
+
index += 1;
|
|
24942
|
+
}
|
|
24943
|
+
return messages.slice(index);
|
|
24944
|
+
}
|
|
24945
|
+
function findLatestAutoCompactSummary(messages) {
|
|
24946
|
+
for (let i = messages.length - 1; i >= 0; i -= 1) {
|
|
24947
|
+
if (!isAutoCompactNotice(messages[i])) continue;
|
|
24948
|
+
for (let j = i + 1; j < messages.length; j += 1) {
|
|
24949
|
+
if (messages[j].type !== "assistant") continue;
|
|
24950
|
+
const summaryText = getMessageText(messages[j]);
|
|
24951
|
+
if (summaryText && summaryText.trim().length > 0) {
|
|
24952
|
+
return { summaryText, summaryIndex: j };
|
|
24953
|
+
}
|
|
24954
|
+
}
|
|
24955
|
+
return null;
|
|
24956
|
+
}
|
|
24957
|
+
return null;
|
|
24958
|
+
}
|
|
24844
24959
|
async function calculateThresholds(tokenCount) {
|
|
24845
24960
|
const contextLimit = await getMainConversationContextLimit();
|
|
24846
24961
|
return calculateAutoCompactThresholds(tokenCount, contextLimit);
|
|
@@ -24870,7 +24985,18 @@ async function checkAutoCompact(messages, toolUseContext) {
|
|
|
24870
24985
|
}
|
|
24871
24986
|
}
|
|
24872
24987
|
async function executeAutoCompact(messages, toolUseContext) {
|
|
24873
|
-
const
|
|
24988
|
+
const previousSummary = findLatestAutoCompactSummary(messages);
|
|
24989
|
+
const summaryRequestContent = previousSummary ? `We already have an existing conversation summary:
|
|
24990
|
+
|
|
24991
|
+
<existing_summary>
|
|
24992
|
+
${previousSummary.summaryText}
|
|
24993
|
+
</existing_summary>
|
|
24994
|
+
|
|
24995
|
+
Update and consolidate it using only the recent messages provided. Avoid repeating information that is already covered unless it has changed. Keep the same section headings.
|
|
24996
|
+
|
|
24997
|
+
${COMPRESSION_PROMPT2}` : COMPRESSION_PROMPT2;
|
|
24998
|
+
const messagesForSummary = previousSummary ? stripLeadingRecoveredFiles(messages.slice(previousSummary.summaryIndex + 1)) : messages;
|
|
24999
|
+
const summaryRequest = createUserMessage(summaryRequestContent);
|
|
24874
25000
|
const tokenCount = countTokens(messages);
|
|
24875
25001
|
const modelManager = getModelManager();
|
|
24876
25002
|
const compactResolution = modelManager.resolveModelWithInfo("compact");
|
|
@@ -24895,7 +25021,7 @@ async function executeAutoCompact(messages, toolUseContext) {
|
|
|
24895
25021
|
);
|
|
24896
25022
|
}
|
|
24897
25023
|
const summaryResponse = await queryLLM(
|
|
24898
|
-
normalizeMessagesForAPI([...
|
|
25024
|
+
normalizeMessagesForAPI([...messagesForSummary, summaryRequest]),
|
|
24899
25025
|
[
|
|
24900
25026
|
"You are a helpful AI assistant tasked with creating comprehensive conversation summaries that preserve all essential context for continuing development work."
|
|
24901
25027
|
],
|
|
@@ -26954,7 +27080,7 @@ import { homedir as homedir7 } from "os";
|
|
|
26954
27080
|
// src/commands/agents/generation.ts
|
|
26955
27081
|
import { randomUUID as randomUUID5 } from "crypto";
|
|
26956
27082
|
async function generateAgentWithClaude(prompt) {
|
|
26957
|
-
const { queryModel } = await import("./llm-
|
|
27083
|
+
const { queryModel } = await import("./llm-ALKRU6UP.js");
|
|
26958
27084
|
const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
|
|
26959
27085
|
|
|
26960
27086
|
Return your response as a JSON object with exactly these fields:
|
|
@@ -31112,12 +31238,12 @@ IMPORTANT: Before you begin work, think about what the code you're editing is su
|
|
|
31112
31238
|
}
|
|
31113
31239
|
async function getEnvInfo() {
|
|
31114
31240
|
const isGit = await getIsGit();
|
|
31115
|
-
return `Here is useful information about
|
|
31241
|
+
return `Here is useful information about Current Runtime Environment you are running in (Do NOT assume defaults):
|
|
31116
31242
|
<env>
|
|
31117
|
-
Working
|
|
31118
|
-
|
|
31119
|
-
Platform: ${env.platform}
|
|
31120
|
-
|
|
31243
|
+
Current Working Directory: ${getCwd()}
|
|
31244
|
+
Current Git Repository Status: ${isGit ? "Yes" : "No"}
|
|
31245
|
+
Current System Platform(OS): ${env.platform}
|
|
31246
|
+
Current Date: ${(/* @__PURE__ */ new Date()).toLocaleDateString()}
|
|
31121
31247
|
</env>`;
|
|
31122
31248
|
}
|
|
31123
31249
|
async function getAgentPrompt() {
|
|
@@ -31139,6 +31265,7 @@ export {
|
|
|
31139
31265
|
UserBashInputMessage,
|
|
31140
31266
|
Spinner,
|
|
31141
31267
|
Cost,
|
|
31268
|
+
WebFetchTool,
|
|
31142
31269
|
Select,
|
|
31143
31270
|
hasReadPermission,
|
|
31144
31271
|
hasWritePermission,
|