pybao-cli 1.4.81 → 1.4.82
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-VOJCD6X6.js +49 -0
- package/dist/{acp-YXMNP56B.js → acp-ASRH57AF.js} +79 -32
- package/dist/acp-ASRH57AF.js.map +7 -0
- package/dist/{agentsValidate-LQFWOCPZ.js → agentsValidate-35AHZXNB.js} +7 -7
- package/dist/ask-TI3ITWN7.js +143 -0
- package/dist/ask-TI3ITWN7.js.map +7 -0
- package/dist/{autoUpdater-DEH233RT.js → autoUpdater-MRK5BD2L.js} +3 -3
- package/dist/{chunk-JVF6KNE3.js → chunk-2AG4BTRV.js} +1 -1
- package/dist/{chunk-PRRYL2E2.js → chunk-2S2V2ZI7.js} +16 -16
- package/dist/{chunk-ZE75JZFY.js → chunk-2WIUQUTU.js} +3 -3
- package/dist/{chunk-5KAIY3II.js → chunk-2YM35XWE.js} +3 -3
- package/dist/{chunk-H44O47XJ.js → chunk-AUGXOUTX.js} +11 -1
- package/dist/chunk-AUGXOUTX.js.map +7 -0
- package/dist/{chunk-FDGIVQNE.js → chunk-AYVB6VUF.js} +1 -1
- package/dist/{chunk-6XINCIUI.js → chunk-DYJD66YF.js} +1 -1
- package/dist/{chunk-EYY3QDKX.js → chunk-DZTZPEPA.js} +2 -2
- package/dist/chunk-F4AXICO7.js +28 -0
- package/dist/chunk-F4AXICO7.js.map +7 -0
- package/dist/{chunk-HNHWG52B.js → chunk-GSAG6WNQ.js} +1 -1
- package/dist/{chunk-CLGB56HY.js → chunk-GUTLXPN6.js} +36 -2
- package/dist/{chunk-CLGB56HY.js.map → chunk-GUTLXPN6.js.map} +2 -2
- package/dist/{chunk-VW3NZKCP.js → chunk-GZT2DWED.js} +1 -1
- package/dist/{chunk-BJMVIICS.js → chunk-HJWUPFGF.js} +4 -4
- package/dist/{chunk-KH3U5BR5.js → chunk-IIVG2SHE.js} +3 -3
- package/dist/{chunk-GS4PRJHV.js → chunk-JQVZNIKI.js} +4 -4
- package/dist/{chunk-MKNRYFQR.js → chunk-JT3RE7UH.js} +6 -22
- package/dist/{chunk-MKNRYFQR.js.map → chunk-JT3RE7UH.js.map} +3 -3
- package/dist/{chunk-4SWM6FWR.js → chunk-KNWW4HGV.js} +2 -2
- package/dist/chunk-LM665HND.js +262 -0
- package/dist/chunk-LM665HND.js.map +7 -0
- package/dist/{chunk-Z73SPR4B.js → chunk-NTL5PKCX.js} +3 -3
- package/dist/{chunk-2NFKKANF.js → chunk-PXPTGNYH.js} +2 -2
- package/dist/{chunk-HIZXCXUG.js → chunk-QUWUFGZF.js} +4 -4
- package/dist/{chunk-BX6HNPWQ.js → chunk-SZEYDC6A.js} +3 -3
- package/dist/{chunk-AB3F7T5N.js → chunk-TWWQYBVK.js} +3 -3
- package/dist/{chunk-UUS77RPP.js → chunk-U265OPSO.js} +1 -1
- package/dist/{chunk-4NNDWUSZ.js → chunk-UBX7JQR2.js} +2 -2
- package/dist/{chunk-4VUECEM6.js → chunk-UXVOYFKL.js} +2 -2
- package/dist/{chunk-37ZXN5M4.js → chunk-VMWEFYQB.js} +1 -1
- package/dist/{chunk-CCF52HVZ.js → chunk-WBBMOYXK.js} +1 -1
- package/dist/{chunk-CCF52HVZ.js.map → chunk-WBBMOYXK.js.map} +1 -1
- package/dist/{chunk-B3NR3UMC.js → chunk-WVYIFMLG.js} +4 -4
- package/dist/chunk-XKYHFZEC.js +68 -0
- package/dist/chunk-XKYHFZEC.js.map +7 -0
- package/dist/{chunk-TVUG5GLX.js → chunk-XOOHCC63.js} +356 -161
- package/dist/chunk-XOOHCC63.js.map +7 -0
- package/dist/{chunk-GMKASRN7.js → chunk-Y5JPSTQ4.js} +1 -1
- package/dist/{chunk-7ANXEZRS.js → chunk-ZW25QNXS.js} +3 -3
- package/dist/{cli-VNT2RTPP.js → cli-ECB4WYUZ.js} +399 -379
- package/dist/cli-ECB4WYUZ.js.map +7 -0
- package/dist/commands-3B77L2SI.js +53 -0
- package/dist/{config-VK55G2IB.js → config-KZHPV37P.js} +4 -4
- package/dist/{context-QHTEENJ6.js → context-ZZI53BPM.js} +6 -6
- package/dist/conversationTracker-SC6NCQHL.js +17 -0
- package/dist/{customCommands-HRHE7ZIM.js → customCommands-MX6OENKO.js} +4 -4
- package/dist/{env-GGYUE5V7.js → env-76WAAGI6.js} +2 -2
- package/dist/{file-KHYC624L.js → file-LCS77XWE.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-A3S75CLF.js → llm-AR66BS2U.js} +32 -29
- package/dist/{llm-A3S75CLF.js.map → llm-AR66BS2U.js.map} +1 -1
- package/dist/{llmLazy-USVVGSVL.js → llmLazy-5W6E5BCB.js} +1 -1
- package/dist/{loader-JPKYTFFC.js → loader-OWZ3WD2X.js} +4 -4
- package/dist/{lsp-B7QJVI2U.js → lsp-NLPSJYH4.js} +6 -6
- package/dist/{lspAnchor-JJJ2WKI7.js → lspAnchor-MWASWGQD.js} +6 -6
- package/dist/{mcp-YOR7UMEZ.js → mcp-T2UB74Y2.js} +7 -7
- package/dist/{mentionProcessor-5CYA4NR4.js → mentionProcessor-KIBWOHEC.js} +5 -5
- package/dist/{messages-ICKAWGUW.js → messages-6BHCXDWR.js} +5 -1
- package/dist/{model-P33QONA2.js → model-5NDSZPIL.js} +5 -5
- package/dist/{openai-POLCH476.js → openai-7XPWH2G7.js} +6 -5
- package/dist/{outputStyles-EZGCOEE2.js → outputStyles-QUE4ALJQ.js} +4 -4
- package/dist/{pluginRuntime-KJ3YFO2O.js → pluginRuntime-PQ3VZRX7.js} +6 -6
- package/dist/{pluginValidation-MR5GV7PL.js → pluginValidation-RQ34XQY3.js} +6 -6
- package/dist/prompts-5576MRUX.js +55 -0
- package/dist/{pybAgentSessionLoad-TRSWA62U.js → pybAgentSessionLoad-5MWAY2A4.js} +4 -4
- package/dist/{pybAgentSessionResume-3IRNTCVI.js → pybAgentSessionResume-NZGSUGGS.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-5IBYEXS5.js → pybAgentStreamJsonSession-UP4WOINX.js} +3 -3
- package/dist/pybAgentStreamJsonSession-UP4WOINX.js.map +7 -0
- package/dist/{pybHooks-HFAKEYDS.js → pybHooks-HILU7ZB4.js} +4 -4
- package/dist/query-LMPE4HBF.js +57 -0
- package/dist/{registry-LOKL3JBE.js → registry-4MWYBUFA.js} +5 -5
- package/dist/replSessionBridge-EBXNFUAD.js +10 -0
- package/dist/{ripgrep-X4LOQHA7.js → ripgrep-J74GL455.js} +3 -3
- package/dist/{skillMarketplace-UITGQNZD.js → skillMarketplace-ATLDIEEX.js} +3 -3
- package/dist/{state-I7LIGIFJ.js → state-Y2Q4MPY5.js} +2 -2
- package/dist/{theme-RVIXXPSQ.js → theme-3L66ZU5Z.js} +5 -5
- package/dist/{toolPermissionSettings-TALALPH3.js → toolPermissionSettings-PDGMFGN2.js} +6 -6
- package/dist/toolPermissionSettings-PDGMFGN2.js.map +7 -0
- package/dist/tools-45UHHM5S.js +54 -0
- package/dist/tools-45UHHM5S.js.map +7 -0
- package/dist/{userInput-WFPUGJ4L.js → userInput-GBXOUS4W.js} +40 -36
- package/dist/userInput-GBXOUS4W.js.map +7 -0
- package/package.json +1 -1
- package/dist/REPL-WXPYXBW2.js +0 -46
- package/dist/acp-YXMNP56B.js.map +0 -7
- package/dist/ask-CUR6IJ2W.js +0 -129
- package/dist/ask-CUR6IJ2W.js.map +0 -7
- package/dist/chunk-H44O47XJ.js.map +0 -7
- package/dist/chunk-TVUG5GLX.js.map +0 -7
- package/dist/cli-VNT2RTPP.js.map +0 -7
- package/dist/commands-LAZD5O4M.js +0 -50
- package/dist/prompts-P4JU57HZ.js +0 -52
- package/dist/pybAgentStreamJsonSession-5IBYEXS5.js.map +0 -7
- package/dist/query-NHQFKSCC.js +0 -54
- package/dist/tools-HVGZBEHZ.js +0 -51
- package/dist/userInput-WFPUGJ4L.js.map +0 -7
- /package/dist/{REPL-WXPYXBW2.js.map → REPL-VOJCD6X6.js.map} +0 -0
- /package/dist/{agentsValidate-LQFWOCPZ.js.map → agentsValidate-35AHZXNB.js.map} +0 -0
- /package/dist/{autoUpdater-DEH233RT.js.map → autoUpdater-MRK5BD2L.js.map} +0 -0
- /package/dist/{chunk-JVF6KNE3.js.map → chunk-2AG4BTRV.js.map} +0 -0
- /package/dist/{chunk-PRRYL2E2.js.map → chunk-2S2V2ZI7.js.map} +0 -0
- /package/dist/{chunk-ZE75JZFY.js.map → chunk-2WIUQUTU.js.map} +0 -0
- /package/dist/{chunk-5KAIY3II.js.map → chunk-2YM35XWE.js.map} +0 -0
- /package/dist/{chunk-FDGIVQNE.js.map → chunk-AYVB6VUF.js.map} +0 -0
- /package/dist/{chunk-6XINCIUI.js.map → chunk-DYJD66YF.js.map} +0 -0
- /package/dist/{chunk-EYY3QDKX.js.map → chunk-DZTZPEPA.js.map} +0 -0
- /package/dist/{chunk-HNHWG52B.js.map → chunk-GSAG6WNQ.js.map} +0 -0
- /package/dist/{chunk-VW3NZKCP.js.map → chunk-GZT2DWED.js.map} +0 -0
- /package/dist/{chunk-BJMVIICS.js.map → chunk-HJWUPFGF.js.map} +0 -0
- /package/dist/{chunk-KH3U5BR5.js.map → chunk-IIVG2SHE.js.map} +0 -0
- /package/dist/{chunk-GS4PRJHV.js.map → chunk-JQVZNIKI.js.map} +0 -0
- /package/dist/{chunk-4SWM6FWR.js.map → chunk-KNWW4HGV.js.map} +0 -0
- /package/dist/{chunk-Z73SPR4B.js.map → chunk-NTL5PKCX.js.map} +0 -0
- /package/dist/{chunk-2NFKKANF.js.map → chunk-PXPTGNYH.js.map} +0 -0
- /package/dist/{chunk-HIZXCXUG.js.map → chunk-QUWUFGZF.js.map} +0 -0
- /package/dist/{chunk-BX6HNPWQ.js.map → chunk-SZEYDC6A.js.map} +0 -0
- /package/dist/{chunk-AB3F7T5N.js.map → chunk-TWWQYBVK.js.map} +0 -0
- /package/dist/{chunk-UUS77RPP.js.map → chunk-U265OPSO.js.map} +0 -0
- /package/dist/{chunk-4NNDWUSZ.js.map → chunk-UBX7JQR2.js.map} +0 -0
- /package/dist/{chunk-4VUECEM6.js.map → chunk-UXVOYFKL.js.map} +0 -0
- /package/dist/{chunk-37ZXN5M4.js.map → chunk-VMWEFYQB.js.map} +0 -0
- /package/dist/{chunk-B3NR3UMC.js.map → chunk-WVYIFMLG.js.map} +0 -0
- /package/dist/{chunk-GMKASRN7.js.map → chunk-Y5JPSTQ4.js.map} +0 -0
- /package/dist/{chunk-7ANXEZRS.js.map → chunk-ZW25QNXS.js.map} +0 -0
- /package/dist/{commands-LAZD5O4M.js.map → commands-3B77L2SI.js.map} +0 -0
- /package/dist/{config-VK55G2IB.js.map → config-KZHPV37P.js.map} +0 -0
- /package/dist/{context-QHTEENJ6.js.map → context-ZZI53BPM.js.map} +0 -0
- /package/dist/{customCommands-HRHE7ZIM.js.map → conversationTracker-SC6NCQHL.js.map} +0 -0
- /package/dist/{env-GGYUE5V7.js.map → customCommands-MX6OENKO.js.map} +0 -0
- /package/dist/{file-KHYC624L.js.map → env-76WAAGI6.js.map} +0 -0
- /package/dist/{llmLazy-USVVGSVL.js.map → file-LCS77XWE.js.map} +0 -0
- /package/dist/{loader-JPKYTFFC.js.map → llmLazy-5W6E5BCB.js.map} +0 -0
- /package/dist/{lsp-B7QJVI2U.js.map → loader-OWZ3WD2X.js.map} +0 -0
- /package/dist/{mcp-YOR7UMEZ.js.map → lsp-NLPSJYH4.js.map} +0 -0
- /package/dist/{lspAnchor-JJJ2WKI7.js.map → lspAnchor-MWASWGQD.js.map} +0 -0
- /package/dist/{messages-ICKAWGUW.js.map → mcp-T2UB74Y2.js.map} +0 -0
- /package/dist/{mentionProcessor-5CYA4NR4.js.map → mentionProcessor-KIBWOHEC.js.map} +0 -0
- /package/dist/{model-P33QONA2.js.map → messages-6BHCXDWR.js.map} +0 -0
- /package/dist/{openai-POLCH476.js.map → model-5NDSZPIL.js.map} +0 -0
- /package/dist/{outputStyles-EZGCOEE2.js.map → openai-7XPWH2G7.js.map} +0 -0
- /package/dist/{pluginValidation-MR5GV7PL.js.map → outputStyles-QUE4ALJQ.js.map} +0 -0
- /package/dist/{pluginRuntime-KJ3YFO2O.js.map → pluginRuntime-PQ3VZRX7.js.map} +0 -0
- /package/dist/{prompts-P4JU57HZ.js.map → pluginValidation-RQ34XQY3.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-TRSWA62U.js.map → prompts-5576MRUX.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-3IRNTCVI.js.map → pybAgentSessionLoad-5MWAY2A4.js.map} +0 -0
- /package/dist/{pybHooks-HFAKEYDS.js.map → pybAgentSessionResume-NZGSUGGS.js.map} +0 -0
- /package/dist/{query-NHQFKSCC.js.map → pybHooks-HILU7ZB4.js.map} +0 -0
- /package/dist/{registry-LOKL3JBE.js.map → query-LMPE4HBF.js.map} +0 -0
- /package/dist/{ripgrep-X4LOQHA7.js.map → registry-4MWYBUFA.js.map} +0 -0
- /package/dist/{skillMarketplace-UITGQNZD.js.map → replSessionBridge-EBXNFUAD.js.map} +0 -0
- /package/dist/{state-I7LIGIFJ.js.map → ripgrep-J74GL455.js.map} +0 -0
- /package/dist/{theme-RVIXXPSQ.js.map → skillMarketplace-ATLDIEEX.js.map} +0 -0
- /package/dist/{toolPermissionSettings-TALALPH3.js.map → state-Y2Q4MPY5.js.map} +0 -0
- /package/dist/{tools-HVGZBEHZ.js.map → theme-3L66ZU5Z.js.map} +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { createRequire as __pybCreateRequire } from "node:module";
|
|
2
|
+
const require = __pybCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
getSystemPrompt,
|
|
5
|
+
query
|
|
6
|
+
} from "./chunk-XOOHCC63.js";
|
|
7
|
+
import "./chunk-GZT2DWED.js";
|
|
8
|
+
import "./chunk-ZW25QNXS.js";
|
|
9
|
+
import {
|
|
10
|
+
ConversationTracker
|
|
11
|
+
} from "./chunk-LM665HND.js";
|
|
12
|
+
import {
|
|
13
|
+
beginReplSessionScope
|
|
14
|
+
} from "./chunk-F4AXICO7.js";
|
|
15
|
+
import "./chunk-AYVB6VUF.js";
|
|
16
|
+
import "./chunk-UBX7JQR2.js";
|
|
17
|
+
import "./chunk-5P7HBXTD.js";
|
|
18
|
+
import "./chunk-IIVG2SHE.js";
|
|
19
|
+
import "./chunk-UXVOYFKL.js";
|
|
20
|
+
import "./chunk-JT3RE7UH.js";
|
|
21
|
+
import "./chunk-XKYHFZEC.js";
|
|
22
|
+
import "./chunk-HJWUPFGF.js";
|
|
23
|
+
import "./chunk-QUWUFGZF.js";
|
|
24
|
+
import "./chunk-GSAG6WNQ.js";
|
|
25
|
+
import "./chunk-SZEYDC6A.js";
|
|
26
|
+
import "./chunk-UNNVICVU.js";
|
|
27
|
+
import "./chunk-PXPTGNYH.js";
|
|
28
|
+
import "./chunk-GUTLXPN6.js";
|
|
29
|
+
import "./chunk-A3BVXXA3.js";
|
|
30
|
+
import {
|
|
31
|
+
createUserTurnMessage
|
|
32
|
+
} from "./chunk-AUGXOUTX.js";
|
|
33
|
+
import "./chunk-3DFBSQIT.js";
|
|
34
|
+
import "./chunk-B6IMQJZM.js";
|
|
35
|
+
import {
|
|
36
|
+
getTotalCost
|
|
37
|
+
} from "./chunk-OUXHGDLH.js";
|
|
38
|
+
import "./chunk-DZTZPEPA.js";
|
|
39
|
+
import "./chunk-QWIBSCDN.js";
|
|
40
|
+
import "./chunk-JQVZNIKI.js";
|
|
41
|
+
import "./chunk-2YM35XWE.js";
|
|
42
|
+
import "./chunk-2AG4BTRV.js";
|
|
43
|
+
import "./chunk-UZ34JEUK.js";
|
|
44
|
+
import "./chunk-KNWW4HGV.js";
|
|
45
|
+
import "./chunk-BJSWTHRM.js";
|
|
46
|
+
import {
|
|
47
|
+
getModelManager
|
|
48
|
+
} from "./chunk-NTL5PKCX.js";
|
|
49
|
+
import {
|
|
50
|
+
getContext
|
|
51
|
+
} from "./chunk-WVYIFMLG.js";
|
|
52
|
+
import "./chunk-VMWEFYQB.js";
|
|
53
|
+
import "./chunk-Y5JPSTQ4.js";
|
|
54
|
+
import "./chunk-2WIUQUTU.js";
|
|
55
|
+
import "./chunk-RQVLBMP7.js";
|
|
56
|
+
import "./chunk-DYJD66YF.js";
|
|
57
|
+
import {
|
|
58
|
+
getMessagesPath,
|
|
59
|
+
overwriteLog,
|
|
60
|
+
setCwd
|
|
61
|
+
} from "./chunk-U265OPSO.js";
|
|
62
|
+
import "./chunk-WBBMOYXK.js";
|
|
63
|
+
import "./chunk-I3J4JYES.js";
|
|
64
|
+
|
|
65
|
+
// src/app/ask.ts
|
|
66
|
+
import { last } from "lodash-es";
|
|
67
|
+
async function ask({
|
|
68
|
+
commands,
|
|
69
|
+
safeMode,
|
|
70
|
+
hasPermissionsToUseTool,
|
|
71
|
+
messageLogName,
|
|
72
|
+
prompt,
|
|
73
|
+
cwd,
|
|
74
|
+
tools,
|
|
75
|
+
verbose = false,
|
|
76
|
+
initialMessages,
|
|
77
|
+
persistSession = true
|
|
78
|
+
}) {
|
|
79
|
+
await setCwd(cwd);
|
|
80
|
+
const restoreSessionScope = beginReplSessionScope(`ask:${messageLogName}:0`);
|
|
81
|
+
const conversationTracker = new ConversationTracker();
|
|
82
|
+
const message = createUserTurnMessage(prompt);
|
|
83
|
+
const messages = [...initialMessages ?? [], message];
|
|
84
|
+
const [systemPrompt, context, model] = await Promise.all([
|
|
85
|
+
getSystemPrompt(),
|
|
86
|
+
getContext(),
|
|
87
|
+
getModelManager().getModelName("main")
|
|
88
|
+
]);
|
|
89
|
+
try {
|
|
90
|
+
for await (const m of query(
|
|
91
|
+
messages,
|
|
92
|
+
systemPrompt,
|
|
93
|
+
context,
|
|
94
|
+
hasPermissionsToUseTool,
|
|
95
|
+
{
|
|
96
|
+
options: {
|
|
97
|
+
commands,
|
|
98
|
+
tools,
|
|
99
|
+
verbose,
|
|
100
|
+
safeMode,
|
|
101
|
+
forkNumber: 0,
|
|
102
|
+
messageLogName: "unused",
|
|
103
|
+
maxThinkingTokens: 0,
|
|
104
|
+
persistSession
|
|
105
|
+
},
|
|
106
|
+
abortController: new AbortController(),
|
|
107
|
+
messageId: void 0,
|
|
108
|
+
readFileTimestamps: {},
|
|
109
|
+
setToolJSX: () => {
|
|
110
|
+
},
|
|
111
|
+
conversationTracker
|
|
112
|
+
}
|
|
113
|
+
)) {
|
|
114
|
+
messages.push(m);
|
|
115
|
+
}
|
|
116
|
+
} finally {
|
|
117
|
+
restoreSessionScope();
|
|
118
|
+
}
|
|
119
|
+
const result = last(messages);
|
|
120
|
+
if (!result || result.type !== "assistant") {
|
|
121
|
+
throw new Error("Expected content to be an assistant message");
|
|
122
|
+
}
|
|
123
|
+
const textContent = result.message.content.find((c) => c.type === "text");
|
|
124
|
+
if (!textContent) {
|
|
125
|
+
throw new Error(
|
|
126
|
+
`Expected at least one text content item, but got ${JSON.stringify(
|
|
127
|
+
result.message.content,
|
|
128
|
+
null,
|
|
129
|
+
2
|
|
130
|
+
)}`
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
const messageHistoryFile = getMessagesPath(messageLogName, 0, 0);
|
|
134
|
+
overwriteLog(messageHistoryFile, messages);
|
|
135
|
+
return {
|
|
136
|
+
resultText: textContent.text,
|
|
137
|
+
totalCost: getTotalCost(),
|
|
138
|
+
messageHistoryFile
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export {
|
|
142
|
+
ask
|
|
143
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/app/ask.ts"],
|
|
4
|
+
"sourcesContent": ["import { last } from 'lodash-es'\nimport { Command } from '@commands'\nimport { getSystemPrompt } from '@constants/prompts'\nimport { getContext } from '@context'\nimport { getTotalCost } from '@costTracker'\nimport { Message, query } from '@query'\nimport type { CanUseToolFn } from '@pyb-types/canUseTool'\nimport { Tool } from '@tool'\nimport { getModelManager } from '@utils/model'\nimport { setCwd } from '@utils/state'\nimport { getMessagesPath, overwriteLog } from '@utils/log'\nimport { createUserTurnMessage } from '@utils/messages'\nimport { ConversationTracker } from '@utils/session/conversationTracker'\nimport { beginReplSessionScope } from '@utils/session/replSessionBridge'\n\ntype Props = {\n commands: Command[]\n safeMode?: boolean\n hasPermissionsToUseTool: CanUseToolFn\n messageLogName: string\n prompt: string\n cwd: string\n tools: Tool[]\n verbose?: boolean\n initialMessages?: Message[]\n persistSession?: boolean\n}\n\nexport async function ask({\n commands,\n safeMode,\n hasPermissionsToUseTool,\n messageLogName,\n prompt,\n cwd,\n tools,\n verbose = false,\n initialMessages,\n persistSession = true,\n}: Props): Promise<{\n resultText: string\n totalCost: number\n messageHistoryFile: string\n}> {\n await setCwd(cwd)\n const restoreSessionScope = beginReplSessionScope(`ask:${messageLogName}:0`)\n const conversationTracker = new ConversationTracker()\n const message = createUserTurnMessage(prompt)\n const messages: Message[] = [...(initialMessages ?? []), message]\n\n const [systemPrompt, context, model] = await Promise.all([\n getSystemPrompt(),\n getContext(),\n getModelManager().getModelName('main'),\n ])\n\n try {\n for await (const m of query(\n messages,\n systemPrompt,\n context,\n hasPermissionsToUseTool,\n {\n options: {\n commands,\n tools,\n verbose,\n safeMode,\n forkNumber: 0,\n messageLogName: 'unused',\n maxThinkingTokens: 0,\n persistSession,\n },\n abortController: new AbortController(),\n messageId: undefined,\n readFileTimestamps: {},\n setToolJSX: () => {},\n conversationTracker,\n },\n )) {\n messages.push(m)\n }\n } finally {\n restoreSessionScope()\n }\n\n const result = last(messages)\n if (!result || result.type !== 'assistant') {\n throw new Error('Expected content to be an assistant message')\n }\n\n const textContent = result.message.content.find(c => c.type === 'text')\n if (!textContent) {\n throw new Error(\n `Expected at least one text content item, but got ${JSON.stringify(\n result.message.content,\n null,\n 2,\n )}`,\n )\n }\n\n const messageHistoryFile = getMessagesPath(messageLogName, 0, 0)\n overwriteLog(messageHistoryFile, messages)\n\n return {\n resultText: textContent.text,\n totalCost: getTotalCost(),\n messageHistoryFile,\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,YAAY;AA4BrB,eAAsB,IAAI;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,iBAAiB;AACnB,GAIG;AACD,QAAM,OAAO,GAAG;AAChB,QAAM,sBAAsB,sBAAsB,OAAO,cAAc,IAAI;AAC3E,QAAM,sBAAsB,IAAI,oBAAoB;AACpD,QAAM,UAAU,sBAAsB,MAAM;AAC5C,QAAM,WAAsB,CAAC,GAAI,mBAAmB,CAAC,GAAI,OAAO;AAEhE,QAAM,CAAC,cAAc,SAAS,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IACvD,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,gBAAgB,EAAE,aAAa,MAAM;AAAA,EACvC,CAAC;AAED,MAAI;AACF,qBAAiB,KAAK;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,UACnB;AAAA,QACF;AAAA,QACA,iBAAiB,IAAI,gBAAgB;AAAA,QACrC,WAAW;AAAA,QACX,oBAAoB,CAAC;AAAA,QACrB,YAAY,MAAM;AAAA,QAAC;AAAA,QACnB;AAAA,MACF;AAAA,IACF,GAAG;AACD,eAAS,KAAK,CAAC;AAAA,IACjB;AAAA,EACF,UAAE;AACA,wBAAoB;AAAA,EACtB;AAEA,QAAM,SAAS,KAAK,QAAQ;AAC5B,MAAI,CAAC,UAAU,OAAO,SAAS,aAAa;AAC1C,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAEA,QAAM,cAAc,OAAO,QAAQ,QAAQ,KAAK,OAAK,EAAE,SAAS,MAAM;AACtE,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI;AAAA,MACR,oDAAoD,KAAK;AAAA,QACvD,OAAO,QAAQ;AAAA,QACf;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,qBAAqB,gBAAgB,gBAAgB,GAAG,CAAC;AAC/D,eAAa,oBAAoB,QAAQ;AAEzC,SAAO;AAAA,IACL,YAAY,YAAY;AAAA,IACxB,WAAW,aAAa;AAAA,IACxB;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
checkAndNotifyUpdate,
|
|
6
6
|
getLatestVersion,
|
|
7
7
|
getUpdateCommandSuggestions
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-TWWQYBVK.js";
|
|
9
|
+
import "./chunk-U265OPSO.js";
|
|
10
|
+
import "./chunk-WBBMOYXK.js";
|
|
11
11
|
import "./chunk-I3J4JYES.js";
|
|
12
12
|
export {
|
|
13
13
|
assertMinVersion,
|
|
@@ -33,57 +33,57 @@ import {
|
|
|
33
33
|
runWithTaskListEnv,
|
|
34
34
|
runWithTaskListId,
|
|
35
35
|
updateTask
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-XOOHCC63.js";
|
|
37
37
|
import {
|
|
38
38
|
queryLLM
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-HJWUPFGF.js";
|
|
40
40
|
import {
|
|
41
41
|
FallbackToolUseRejectedMessage,
|
|
42
42
|
MCPTool,
|
|
43
43
|
getClients,
|
|
44
44
|
getMCPTools
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-QUWUFGZF.js";
|
|
46
46
|
import {
|
|
47
47
|
emitReminderEvent
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-PXPTGNYH.js";
|
|
49
49
|
import {
|
|
50
50
|
getActiveAgents,
|
|
51
51
|
getAgentByType,
|
|
52
52
|
getAvailableAgentTypes
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-GUTLXPN6.js";
|
|
54
54
|
import {
|
|
55
55
|
INTERRUPT_MESSAGE,
|
|
56
56
|
createAssistantMessage,
|
|
57
57
|
createUserMessage,
|
|
58
58
|
getLastAssistantMessageId
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-AUGXOUTX.js";
|
|
60
60
|
import {
|
|
61
61
|
formatDuration,
|
|
62
62
|
formatNumber
|
|
63
63
|
} from "./chunk-OUXHGDLH.js";
|
|
64
64
|
import {
|
|
65
65
|
getAbsolutePath
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-DZTZPEPA.js";
|
|
67
67
|
import {
|
|
68
68
|
LspFacade,
|
|
69
69
|
formatDiagnosticsPretty
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-JQVZNIKI.js";
|
|
71
71
|
import {
|
|
72
72
|
getModelManager
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-NTL5PKCX.js";
|
|
74
74
|
import {
|
|
75
75
|
getContext
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-WVYIFMLG.js";
|
|
77
77
|
import {
|
|
78
78
|
filesToTree,
|
|
79
79
|
ripGrepWithStatus
|
|
80
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-VMWEFYQB.js";
|
|
81
81
|
import {
|
|
82
82
|
getTheme
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-Y5JPSTQ4.js";
|
|
84
84
|
import {
|
|
85
85
|
debug
|
|
86
|
-
} from "./chunk-
|
|
86
|
+
} from "./chunk-DYJD66YF.js";
|
|
87
87
|
import {
|
|
88
88
|
BunShell,
|
|
89
89
|
getCwd,
|
|
@@ -94,7 +94,7 @@ import {
|
|
|
94
94
|
overwriteLog,
|
|
95
95
|
readTaskOutput,
|
|
96
96
|
resolveXdgDataPath
|
|
97
|
-
} from "./chunk-
|
|
97
|
+
} from "./chunk-U265OPSO.js";
|
|
98
98
|
|
|
99
99
|
// src/tools/index.ts
|
|
100
100
|
import { memoize as memoize2 } from "lodash-es";
|
|
@@ -773,7 +773,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
|
|
|
773
773
|
if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
|
|
774
774
|
try {
|
|
775
775
|
const { isAbsolute: isAbsolute3, resolve: resolve4 } = await import("path");
|
|
776
|
-
const { getSessionRoot: getSessionRoot2 } = await import("./state-
|
|
776
|
+
const { getSessionRoot: getSessionRoot2 } = await import("./state-Y2Q4MPY5.js");
|
|
777
777
|
const lines = output.split("\n");
|
|
778
778
|
const uniqueFiles = /* @__PURE__ */ new Set();
|
|
779
779
|
const lspSuggestions = [];
|
|
@@ -1146,7 +1146,7 @@ var DeleteTool = {
|
|
|
1146
1146
|
}
|
|
1147
1147
|
if (!force) {
|
|
1148
1148
|
try {
|
|
1149
|
-
const { LspFacade: LspFacade2 } = await import("./lsp-
|
|
1149
|
+
const { LspFacade: LspFacade2 } = await import("./lsp-NLPSJYH4.js");
|
|
1150
1150
|
const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
|
|
1151
1151
|
if (referenceDetail) {
|
|
1152
1152
|
failedItems.push(
|
|
@@ -5,13 +5,13 @@ import {
|
|
|
5
5
|
} from "./chunk-RQVLBMP7.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DYJD66YF.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd,
|
|
11
11
|
getGlobalConfigFilePath,
|
|
12
12
|
getLegacyGlobalConfigFilePath,
|
|
13
13
|
logError
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-U265OPSO.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-5NDSZPIL.js").then(({ reloadModelManager }) => {
|
|
692
692
|
reloadModelManager();
|
|
693
693
|
});
|
|
694
694
|
}
|
|
@@ -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-2AG4BTRV.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DYJD66YF.js";
|
|
9
9
|
import {
|
|
10
10
|
env,
|
|
11
11
|
getSessionRoot,
|
|
12
12
|
resolveXdgDataPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-U265OPSO.js";
|
|
14
14
|
import {
|
|
15
15
|
__require
|
|
16
16
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -93,6 +93,14 @@ function createUserMessage(content, toolUseResult) {
|
|
|
93
93
|
};
|
|
94
94
|
return m;
|
|
95
95
|
}
|
|
96
|
+
function generateQueryId() {
|
|
97
|
+
return randomUUID();
|
|
98
|
+
}
|
|
99
|
+
function createUserTurnMessage(content, toolUseResult) {
|
|
100
|
+
const m = createUserMessage(content, toolUseResult);
|
|
101
|
+
m.queryId = generateQueryId();
|
|
102
|
+
return m;
|
|
103
|
+
}
|
|
96
104
|
function createProgressMessage(toolUseID, siblingToolUseIDs, content, normalizedMessages, tools) {
|
|
97
105
|
return {
|
|
98
106
|
type: "progress",
|
|
@@ -463,7 +471,7 @@ function getLastAssistantMessageId(messages) {
|
|
|
463
471
|
|
|
464
472
|
// src/utils/messages/index.ts
|
|
465
473
|
async function processUserInput(input, mode, setToolJSX, context, pastedImages) {
|
|
466
|
-
const impl = await import("./userInput-
|
|
474
|
+
const impl = await import("./userInput-GBXOUS4W.js");
|
|
467
475
|
return impl.processUserInput(input, mode, setToolJSX, context, pastedImages);
|
|
468
476
|
}
|
|
469
477
|
|
|
@@ -485,6 +493,8 @@ export {
|
|
|
485
493
|
createAssistantMessage,
|
|
486
494
|
createAssistantAPIErrorMessage,
|
|
487
495
|
createUserMessage,
|
|
496
|
+
generateQueryId,
|
|
497
|
+
createUserTurnMessage,
|
|
488
498
|
createProgressMessage,
|
|
489
499
|
filterProgressMessagesForTools,
|
|
490
500
|
createToolResultStopMessage,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/messages/core.ts", "../src/services/ai/llmConstants.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'\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\nexport function createUserMessage(\n content: string | 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 }\n return m\n}\n\nexport function generateQueryId(): string {\n return randomUUID()\n}\n\nexport function createUserTurnMessage(\n content: string | ContentBlockParam[],\n toolUseResult?: FullToolUseResult,\n): UserMessage {\n const m = createUserMessage(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): ProgressMessage {\n return {\n type: 'progress',\n content,\n normalizedMessages,\n siblingToolUseIDs,\n tools,\n toolUseID,\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 const firstBlock = message.content.message.content[0]\n if (!firstBlock || firstBlock.type !== 'text') return false\n const rawText = String(firstBlock.text ?? '')\n const text = rawText.startsWith('<tool-progress>')\n ? (extractTag(rawText, 'tool-progress') ?? rawText)\n : rawText\n return text.trim() === 'Waiting\u2026'\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 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 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 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 * 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": ";;;;AAAA,SAAS,YAAY,kBAAwB;AAE7C,SAAS,MAAM,eAAe;;;ACFvB,IAAM,2BAA2B;AACjC,IAAM,gCAAgC;AACtC,IAAM,uCAAuC;AAC7C,IAAM,gCACX;AACK,IAAM,qBAAqB;AAE3B,IAAM,yBAAyB;;;ADQ/B,IAAM,oBAAoB;AAC1B,IAAM,iCACX;AACK,IAAM,iBACX;AACK,IAAM,iBACX;AACK,IAAM,sCAAsC;AAAA;AAC5C,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAC7B,IAAM,wBAAwB;AAE9B,IAAM,+BAA+B,oBAAI,IAAI;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,SAAS,mBAAmB,MAAoB;AAC9C,QAAM,MAAM,WAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AACvE,SAAO,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC;AAC9G;AAEA,SAAS,2BACP,SACA,OACkB;AAClB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM,WAAW;AAAA,IACjB,SAAS;AAAA,MACP,IAAI,WAAW;AAAA,MACf,OAAO;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,eAAe;AAAA,MACf,MAAM;AAAA,MACN,OAAO;AAAA,QACL,cAAc;AAAA,QACd,eAAe;AAAA,QACf,6BAA6B;AAAA,QAC7B,yBAAyB;AAAA,MAC3B;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AACF;AAEO,SAAS,uBAAuB,SAAmC;AACxE,SAAO,2BAA2B;AAAA,IAChC;AAAA,MACE,MAAM;AAAA,MACN,MAAM,YAAY,KAAK,qBAAqB;AAAA,MAC5C,WAAW,CAAC;AAAA,IACd;AAAA,EACF,CAAC;AACH;AAEO,SAAS,+BACd,SACkB;AAClB,SAAO;AAAA,IACL;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,MAAM,YAAY,KAAK,qBAAqB;AAAA,QAC5C,WAAW,CAAC;AAAA,MACd;AAAA,IACF;AAAA,IACA,EAAE,mBAAmB,KAAK;AAAA,EAC5B;AACF;AASO,SAAS,kBACd,SACA,eACa;AACb,QAAM,IAAiB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM;AAAA,MACN;AAAA,IACF;AAAA,IACA,MAAM,WAAW;AAAA,IACjB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,kBAA0B;AACxC,SAAO,WAAW;AACpB;AAEO,SAAS,sBACd,SACA,eACa;AACb,QAAM,IAAI,kBAAkB,SAAS,aAAa;AAClD,IAAE,UAAU,gBAAgB;AAC5B,SAAO;AACT;AAEO,SAAS,sBACd,WACA,mBACA,SACA,oBACA,OACiB;AACjB,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,WAAW;AAAA,EACnB;AACF;AAEO,SAAS,+BACd,UACA,WACqB;AACrB,QAAM,aAAa,oBAAI,IAAY;AACnC,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,SAAS,YAAa;AAClC,UAAM,QAAQ,QAAQ,QAAQ,QAAQ,CAAC;AACvC,QAAI,CAAC,wBAAwB,KAAK,EAAG;AACrC,QAAI,UAAU,IAAI,MAAM,IAAI,GAAG;AAC7B,iBAAW,IAAI,MAAM,EAAE;AAAA,IACzB;AAAA,EACF;AACA,MAAI,WAAW,SAAS,EAAG,QAAO;AAClC,SAAO,SAAS;AAAA,IACd,aAAW,QAAQ,SAAS,cAAc,CAAC,WAAW,IAAI,QAAQ,SAAS;AAAA,EAC7E;AACF;AAEO,SAAS,4BACd,WACsB;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,EACf;AACF;AAEO,SAAS,sBACd,SACA,SACe;AACf,MAAI,QAAQ,SAAS,YAAY;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,OAAO,QAAQ,QAAQ,YAAY,UAAU;AAC/C,WAAO;AAAA,EACT;AACA,SAAO,WAAW,QAAQ,QAAQ,SAAS,OAAO;AACpD;AAEO,SAAS,WAAW,MAAc,SAAgC;AACvE,MAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,KAAK,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,QAAQ,QAAQ,uBAAuB,MAAM;AAEhE,QAAM,UAAU,IAAI;AAAA,IAClB,IAAI,UAAU,kCAA4C,UAAU;AAAA,IACpE;AAAA,EACF;AAEA,MAAI;AACJ,MAAI,QAAQ;AACZ,MAAI,YAAY;AAChB,QAAM,aAAa,IAAI,OAAO,IAAI,UAAU,oBAAoB,IAAI;AACpE,QAAM,aAAa,IAAI,OAAO,OAAO,UAAU,KAAK,IAAI;AAExD,UAAQ,QAAQ,QAAQ,KAAK,IAAI,OAAO,MAAM;AAC5C,UAAM,UAAU,MAAM,CAAC;AACvB,UAAM,cAAc,KAAK,MAAM,WAAW,MAAM,KAAK;AAErD,YAAQ;AAER,eAAW,YAAY;AACvB,WAAO,WAAW,KAAK,WAAW,MAAM,MAAM;AAC5C;AAAA,IACF;AAEA,eAAW,YAAY;AACvB,WAAO,WAAW,KAAK,WAAW,MAAM,MAAM;AAC5C;AAAA,IACF;AAEA,QAAI,UAAU,KAAK,SAAS;AAC1B,aAAO;AAAA,IACT;AAEA,gBAAY,MAAM,QAAQ,MAAM,CAAC,EAAE;AAAA,EACrC;AAEA,SAAO;AACT;AAEO,SAAS,kBAAkB,SAA2B;AAC3D,MAAI,QAAQ,SAAS,YAAY;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ,QAAQ,YAAY,UAAU;AAC/C,WAAO,QAAQ,QAAQ,QAAQ,KAAK,EAAE,SAAS;AAAA,EACjD;AAEA,MAAI,QAAQ,QAAQ,QAAQ,WAAW,GAAG;AACxC,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,QAAQ,QAAQ,CAAC,EAAG,SAAS,QAAQ;AAC/C,WAAO;AAAA,EACT;AAEA,SACE,QAAQ,QAAQ,QAAQ,CAAC,EAAG,KAAK,KAAK,EAAE,SAAS,KACjD,QAAQ,QAAQ,QAAQ,CAAC,EAAG,SAAS,sBACrC,QAAQ,QAAQ,QAAQ,CAAC,EAAG,SAAS;AAEzC;AAqBO,SAAS,kBAAkB,UAA0C;AAC1E,SAAO,SAAS,QAAQ,aAAW;AACjC,QAAI,QAAQ,SAAS,YAAY;AAC/B,aAAO,CAAC,OAAO;AAAA,IACjB;AACA,QAAI,OAAO,QAAQ,QAAQ,YAAY,UAAU;AAC/C,aAAO,CAAC,OAAO;AAAA,IACjB;AACA,UAAM,gBAAgB,QAAQ,QAAQ,QAAQ;AAAA,MAC5C,WACE,EACE,MAAM,SAAS,eACd,OAAQ,MAAc,aAAa,YACjC,MAAc,SAAS,KAAK,EAAE,WAAW;AAAA,IAElD;AAEA,WAAO,cAAc,IAAI,CAAC,OAAO,eAAe;AAC9C,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK;AACH,gBAAM,WAAW;AAAA,YACd,QAAgB,QACd,QAAgB,SAAS,MAC1B,WAAW;AAAA,UACf;AACA,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM,mBAAmB,GAAG,QAAQ,IAAI,UAAU,EAAE;AAAA,YACpD,SAAS;AAAA,cACP,GAAG,QAAQ;AAAA,cACX,SAAS,CAAC,KAAK;AAAA,YACjB;AAAA,YACA,SACG,QAA6B,UAAU,cAAc;AAAA,YACxD,YAAa,QAA6B;AAAA,UAC5C;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAUA,SAAS,wBAAwB,OAA4C;AAC3E,SACE,SACA,OAAO,UAAU,aAChB,MAAM,SAAS,cACd,MAAM,SAAS,qBACf,MAAM,SAAS,mBACjB,OAAO,MAAM,OAAO;AAExB;AAEA,SAAS,wBACP,SACkC;AAClC,SACE,QAAQ,SAAS,eACjB,aAAa,WACb,QAAQ,QAAQ,QAAQ,KAAK,uBAAuB;AAExD;AAEO,SAAS,gBACd,UACqB;AACrB,QAAM,KAA0B,CAAC;AACjC,QAAM,kBAA2C,CAAC;AAElD,aAAW,WAAW,UAAU;AAC9B,QAAI,wBAAwB,OAAO,GAAG;AACpC,sBAAgB,KAAK,OAAO;AAAA,IAC9B;AAEA,QAAI,QAAQ,SAAS,YAAY;AAC/B,YAAM,0BAA0B,GAAG;AAAA,QACjC,OAAK,EAAE,SAAS,cAAc,EAAE,cAAc,QAAQ;AAAA,MACxD;AACA,UAAI,yBAAyB;AAC3B,WAAG,GAAG,QAAQ,uBAAuB,CAAC,IAAI;AAC1C;AAAA,MACF;AACA,YAAM,iBAAiB,gBAAgB;AAAA,QACrC,OAAK,EAAE,QAAQ,QAAQ,CAAC,GAAG,OAAO,QAAQ;AAAA,MAC5C;AACA,UAAI,gBAAgB;AAClB,WAAG,OAAO,GAAG,QAAQ,cAAc,IAAI,GAAG,GAAG,OAAO;AACpD;AAAA,MACF;AAAA,IACF;AAEA,QACE,QAAQ,SAAS,UACjB,MAAM,QAAQ,QAAQ,QAAQ,OAAO,KACrC,QAAQ,QAAQ,QAAQ,CAAC,GAAG,SAAS,eACrC;AACA,YAAM,YAAa,QAAQ,QAAQ,QAAQ,CAAC,GACxC;AAEJ,YAAM,sBAAsB,GAAG;AAAA,QAC7B,OAAK,EAAE,SAAS,cAAc,EAAE,cAAc;AAAA,MAChD;AACA,UAAI,qBAAqB;AACvB,WAAG,OAAO,GAAG,QAAQ,mBAAmB,IAAI,GAAG,GAAG,OAAO;AACzD;AAAA,MACF;AAEA,YAAM,iBAAiB,gBAAgB;AAAA,QACrC,OAAK,EAAE,QAAQ,QAAQ,CAAC,GAAG,OAAO;AAAA,MACpC;AACA,UAAI,gBAAgB;AAClB,WAAG,OAAO,GAAG,QAAQ,cAAc,IAAI,GAAG,GAAG,OAAO;AACpD;AAAA,MACF;AAAA,IACF,OAEK;AACH,SAAG,KAAK,OAAO;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,mBAAmB;AAAA,EACvB,CAAC,uBACC,OAAO;AAAA,IACL,mBAAmB;AAAA,MAAQ,OACzB,EAAE,SAAS,UAAU,EAAE,QAAQ,QAAQ,CAAC,GAAG,SAAS,gBAChD;AAAA,QACE;AAAA,UACE,EAAE,QAAQ,QAAQ,CAAC,EAAG;AAAA,UACtB,EAAE,QAAQ,QAAQ,CAAC,EAAG,YAAY;AAAA,QACpC;AAAA,MACF,IACC,CAAC;AAAA,IACR;AAAA,EACF;AACJ;AAEO,SAAS,wBACd,oBACa;AACb,QAAM,cAAc,iBAAiB,kBAAkB;AACvD,SAAO,IAAI;AAAA,IACT,mBACG;AAAA,MACC,CACE,MAIA,EAAE,SAAS,eACX,MAAM,QAAQ,EAAE,QAAQ,OAAO,KAC/B,wBAAwB,EAAE,QAAQ,QAAQ,CAAC,CAAC,KAC5C,EAAE,EAAE,QAAQ,QAAQ,CAAC,EAAE,MAAM;AAAA,IACjC,EACC,IAAI,OAAK,EAAE,QAAQ,QAAQ,CAAC,EAAE,EAAE;AAAA,EACrC;AACF;AAEO,SAAS,wBACd,oBACa;AACb,QAAM,uBAAuB,wBAAwB,kBAAkB;AAEvE,WAAS,+BAA+B,SAAqC;AAC3E,QAAI,QAAQ,SAAS,WAAY,QAAO;AACxC,UAAM,aAAa,QAAQ,QAAQ,QAAQ,QAAQ,CAAC;AACpD,QAAI,CAAC,cAAc,WAAW,SAAS,OAAQ,QAAO;AACtD,UAAM,UAAU,OAAO,WAAW,QAAQ,EAAE;AAC5C,UAAM,OAAO,QAAQ,WAAW,iBAAiB,IAC5C,WAAW,SAAS,eAAe,KAAK,UACzC;AACJ,WAAO,KAAK,KAAK,MAAM;AAAA,EACzB;AAEA,QAAM,qCAAqC,IAAI;AAAA,IAC7C,mBACG;AAAA,MACC,CAAC,MACC,EAAE,SAAS,cAAc,CAAC,+BAA+B,CAAC;AAAA,IAC9D,EACC,IAAI,OAAK,EAAE,SAAS;AAAA,EACzB;AACA,SAAO,IAAI;AAAA,IAEP,mBAAmB,OAAO,OAAK;AAC7B,UAAI,EAAE,SAAS,aAAa;AAC1B,eAAO;AAAA,MACT;AACA,YAAM,aAAa,EAAE,QAAQ,QAAQ,CAAC;AACtC,UAAI,CAAC,wBAAwB,UAAU,EAAG,QAAO;AACjD,YAAM,YAAY,WAAW;AAC7B,UAAI,cAAc,qBAAqB,OAAO,EAAE,KAAK,EAAE,OAAO;AAC5D,eAAO;AAAA,MACT;AAEA,UACE,mCAAmC,IAAI,SAAS,KAChD,qBAAqB,IAAI,SAAS,GAClC;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC,EACD,IAAI,OAAM,EAAE,QAAQ,QAAQ,CAAC,EAAyB,EAAE;AAAA,EAC5D;AACF;AAEO,SAAS,0BACd,oBACoB;AACpB,QAAM,cAAc,iBAAiB,kBAAkB;AACvD,SAAO,mBAAmB;AAAA,IACxB,OACE,EAAE,SAAS,eACX,MAAM,QAAQ,EAAE,QAAQ,OAAO,KAC/B,wBAAwB,EAAE,QAAQ,QAAQ,CAAC,CAAC,KAC5C,EAAE,QAAQ,QAAQ,CAAC,EAAE,MAAM,eAC3B,YAAY,EAAE,QAAQ,QAAQ,CAAC,EAAE,EAAE;AAAA,EACvC;AACF;AAEO,SAAS,wBACd,UACoC;AACpC,WAAS,2BAA2B,SAA2B;AAC7D,WACE,QAAQ,SAAS,eACjB,QAAQ,sBAAsB,QAC9B,QAAQ,QAAQ,UAAU;AAAA,EAE9B;AAEA,WAAS,qBACP,SACqB;AACrB,QAAI,OAAO,YAAY,UAAU;AAC/B,aAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AAEA,WAAS,iBAAiB,SAAmD;AAC3E,UAAM,cAAmC,CAAC;AAC1C,UAAM,OAA4B,CAAC;AACnC,eAAW,SAAS,SAAS;AAC3B,UAAI,MAAM,SAAS,eAAe;AAChC,oBAAY,KAAK,KAAK;AAAA,MACxB,OAAO;AACL,aAAK,KAAK,KAAK;AAAA,MACjB;AAAA,IACF;AACA,WAAO,CAAC,GAAG,aAAa,GAAG,IAAI;AAAA,EACjC;AAEA,WAAS,kBACP,MACA,MACa;AACb,UAAM,aAAa,qBAAqB,KAAK,QAAQ,OAAO;AAC5D,UAAM,aAAa,qBAAqB,KAAK,QAAQ,OAAO;AAC5D,WAAO;AAAA,MACL,GAAG;AAAA,MACH,SAAS;AAAA,QACP,GAAG,KAAK;AAAA,QACR,SAAS,iBAAiB,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAEA,WAAS,wBAAwB,SAA0C;AACzE,QAAI,QAAQ,SAAS,OAAQ,QAAO;AACpC,QAAI,CAAC,MAAM,QAAQ,QAAQ,QAAQ,OAAO,EAAG,QAAO;AACpD,WAAO,QAAQ,QAAQ,QAAQ,KAAK,WAAS,MAAM,SAAS,aAAa;AAAA,EAC3E;AAEA,QAAM,SAA6C,CAAC;AACpD,aAAW,WAAW,UAAU;AAC9B,QAAI,QAAQ,SAAS,WAAY;AACjC,QAAI,2BAA2B,OAAO,EAAG;AAEzC,YAAQ,QAAQ,MAAM;AAAA,MACpB,KAAK,QAAQ;AACX,cAAM,OAAO,KAAK,MAAM;AACxB,YAAI,MAAM,SAAS,QAAQ;AACzB,iBAAO,OAAO,QAAQ,IAAI,CAAC,IAAI,kBAAkB,MAAM,OAAO;AAAA,QAChE,OAAO;AACL,iBAAO,KAAK,OAAO;AAAA,QACrB;AACA;AAAA,MACF;AAAA,MACA,KAAK,aAAa;AAChB,YAAI,SAAS;AACb,iBAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,gBAAM,OAAO,OAAO,CAAC;AACrB,cAAI,KAAK,SAAS,eAAe,CAAC,wBAAwB,IAAI,GAAG;AAC/D;AAAA,UACF;AACA,cAAI,KAAK,SAAS,aAAa;AAC7B,gBAAI,KAAK,QAAQ,OAAO,QAAQ,QAAQ,IAAI;AAC1C,qBAAO,CAAC,IAAI;AAAA,gBACV,GAAG;AAAA,gBACH,SAAS;AAAA,kBACP,GAAG,KAAK;AAAA,kBACR,SAAS;AAAA,oBACP,GAAI,MAAM,QAAQ,KAAK,QAAQ,OAAO,IAClC,KAAK,QAAQ,UACb,CAAC;AAAA,oBACL,GAAI,MAAM,QAAQ,QAAQ,QAAQ,OAAO,IACrC,QAAQ,QAAQ,UAChB,CAAC;AAAA,kBACP;AAAA,gBACF;AAAA,cACF;AACA,uBAAS;AAAA,YACX;AACA;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,QAAQ;AACX,iBAAO,KAAK,OAAO;AAAA,QACrB;AACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,wBACd,SACuB;AACvB,QAAM,kBAAkB,QAAQ;AAAA,IAC9B,OAAK,EAAE,SAAS,UAAU,EAAE,KAAK,KAAK,EAAE,SAAS;AAAA,EACnD;AAEA,MAAI,gBAAgB,WAAW,GAAG;AAChC,WAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,oBAAoB,WAAW,CAAC,EAAE,CAAC;AAAA,EACnE;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,MAAuB;AACxD,SACE,oBAAoB,IAAI,EAAE,KAAK,MAAM,MACrC,KAAK,KAAK,MAAM;AAEpB;AACA,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,oBAAoB,SAAyB;AAC3D,QAAM,QAAQ,IAAI,OAAO,KAAK,cAAc,KAAK,GAAG,CAAC;AAAA,IAAkB,IAAI;AAC3E,SAAO,QAAQ,QAAQ,OAAO,EAAE,EAAE,KAAK;AACzC;AAEO,SAAS,aAAa,SAA2C;AACtE,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK;AACH,aAAO,wBAAwB,QAAQ,QAAQ,QAAQ,CAAC,CAAC,IACrD,QAAQ,QAAQ,QAAQ,CAAC,EAAE,KAC3B;AAAA,IACN,KAAK;AACH,UAAI,QAAQ,QAAQ,QAAQ,CAAC,GAAG,SAAS,eAAe;AACtD,eAAO;AAAA,MACT;AACA,aAAO,QAAQ,QAAQ,QAAQ,CAAC,EAAE;AAAA,IACpC,KAAK;AACH,aAAO,QAAQ;AAAA,EACnB;AACF;AAEO,SAAS,0BACd,UACoB;AACpB,WAAS,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AAC7C,UAAM,UAAU,SAAS,CAAC;AAC1B,QAAI,WAAW,QAAQ,SAAS,aAAa;AAC3C,aAAO,QAAQ,QAAQ;AAAA,IACzB;AAAA,EACF;AACA,SAAO;AACT;;;AEnqBA,eAAsB,iBACpB,OACA,MACA,YACA,SASA,cAKoB;AACpB,QAAM,OAAO,MAAM,OAAO,yBAAa;AACvC,SAAO,KAAK,iBAAiB,OAAO,MAAM,YAAY,SAAS,YAAY;AAC7E;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -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-UBX7JQR2.js";
|
|
6
6
|
import {
|
|
7
7
|
isUuid
|
|
8
8
|
} from "./chunk-5P7HBXTD.js";
|
|
@@ -2,11 +2,11 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
listAllContentFiles
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VMWEFYQB.js";
|
|
6
6
|
import {
|
|
7
7
|
getCwd,
|
|
8
8
|
logError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-U265OPSO.js";
|
|
10
10
|
|
|
11
11
|
// src/utils/fs/file.ts
|
|
12
12
|
import {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createRequire as __pybCreateRequire } from "node:module";
|
|
2
|
+
const require = __pybCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
ensureSessionState,
|
|
5
|
+
getCurrentSessionId,
|
|
6
|
+
setCurrentSessionId
|
|
7
|
+
} from "./chunk-XKYHFZEC.js";
|
|
8
|
+
|
|
9
|
+
// src/utils/session/replSessionBridge.ts
|
|
10
|
+
function beginReplSessionScope(conversationKey) {
|
|
11
|
+
const previousSessionId = getCurrentSessionId();
|
|
12
|
+
ensureSessionState(conversationKey, {
|
|
13
|
+
sessionId: conversationKey,
|
|
14
|
+
modelErrors: {},
|
|
15
|
+
currentError: null
|
|
16
|
+
});
|
|
17
|
+
setCurrentSessionId(conversationKey);
|
|
18
|
+
let restored = false;
|
|
19
|
+
return () => {
|
|
20
|
+
if (restored) return;
|
|
21
|
+
restored = true;
|
|
22
|
+
setCurrentSessionId(previousSessionId);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
beginReplSessionScope
|
|
28
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/session/replSessionBridge.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n ensureSessionState,\n getCurrentSessionId,\n setCurrentSessionId,\n} from './sessionState'\n\nexport function beginReplSessionScope(conversationKey: string): () => void {\n const previousSessionId = getCurrentSessionId()\n ensureSessionState(conversationKey, {\n sessionId: conversationKey,\n modelErrors: {},\n currentError: null,\n })\n setCurrentSessionId(conversationKey)\n let restored = false\n return () => {\n if (restored) return\n restored = true\n setCurrentSessionId(previousSessionId)\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAMO,SAAS,sBAAsB,iBAAqC;AACzE,QAAM,oBAAoB,oBAAoB;AAC9C,qBAAmB,iBAAiB;AAAA,IAClC,WAAW;AAAA,IACX,aAAa,CAAC;AAAA,IACd,cAAc;AAAA,EAChB,CAAC;AACD,sBAAoB,eAAe;AACnC,MAAI,WAAW;AACf,SAAO,MAAM;AACX,QAAI,SAAU;AACd,eAAW;AACX,wBAAoB,iBAAiB;AAAA,EACvC;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
} from "./chunk-BJSWTHRM.js";
|
|
9
9
|
import {
|
|
10
10
|
debug
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-DYJD66YF.js";
|
|
12
12
|
import {
|
|
13
13
|
getCwd,
|
|
14
14
|
getXdgConfigDir,
|
|
15
15
|
logError
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-U265OPSO.js";
|
|
17
17
|
|
|
18
18
|
// src/utils/agent/loader.ts
|
|
19
19
|
import {
|
|
@@ -437,6 +437,23 @@ NOTE: You are meant to be a fast agent that returns output as quickly as possibl
|
|
|
437
437
|
- Make efficient use of the tools that you have at your disposal: be smart about how you search for files and implementations
|
|
438
438
|
- Wherever possible you should try to spawn multiple parallel tool calls for grepping and reading files
|
|
439
439
|
|
|
440
|
+
# Cognitive Search Strategy
|
|
441
|
+
1. **Concept Search**: WHEN searching for high-level concepts (e.g., "Auth Logic", "Payment Flow") OR when uncertain about exact naming, you MUST use \`semantic: true\` in Grep/Glob tools. This activates the LSP Workspace Symbol search which is resilient to typos and fuzzy matches.
|
|
442
|
+
- Example: \`GrepTool(pattern: "AuthFeatr", semantic: true)\` will find "AuthFeature"
|
|
443
|
+
- Example: \`GlobTool(pattern: "tests", semantic: true)\` will find test files based on project structure
|
|
444
|
+
2. **Exact Identifier**: WHEN you know the precise class/function name (e.g., "UserProfile", "initDatabase"), use standard Grep/Glob without \`semantic\` flag.
|
|
445
|
+
3. **Exploration**: If standard search returns 0 results, AUTOMATICALLY retry with \`semantic: true\`.
|
|
446
|
+
|
|
447
|
+
# LSP Priority & Scope Limits
|
|
448
|
+
- **Order**: Structure Tree (LS) \u2192 Hotspot Location \u2192 Read \u2192 LSP
|
|
449
|
+
- Use \`LSPTool.documentSymbol\` or \`LSPTool.definition\` only when you have a precise position and need to confirm exact range
|
|
450
|
+
- Do NOT rely on line numbers from \`read_file\` alone as they may be outdated
|
|
451
|
+
- \`workspaceSymbol\` requires a query and should provide clear path/module scope to avoid unbounded workspace queries
|
|
452
|
+
|
|
453
|
+
# Path Fragmentation Strategy
|
|
454
|
+
- Root \u2192 Core Directory \u2192 Secondary Modules
|
|
455
|
+
- Execute structure scanning in the above order
|
|
456
|
+
|
|
440
457
|
Complete the user's search request efficiently and report your findings clearly.`,
|
|
441
458
|
source: "built-in",
|
|
442
459
|
location: "built-in",
|
|
@@ -497,6 +514,23 @@ List 3-5 files most critical for implementing this plan:
|
|
|
497
514
|
- path/to/file2.ts - [Brief reason: e.g., "Interfaces to implement"]
|
|
498
515
|
- path/to/file3.ts - [Brief reason: e.g., "Pattern to follow"]
|
|
499
516
|
|
|
517
|
+
# Cognitive Search Strategy
|
|
518
|
+
1. **Concept Search**: WHEN searching for high-level concepts (e.g., "Auth Logic", "Payment Flow") OR when uncertain about exact naming, you MUST use \`semantic: true\` in Grep/Glob tools. This activates the LSP Workspace Symbol search which is resilient to typos and fuzzy matches.
|
|
519
|
+
- Example: \`GrepTool(pattern: "AuthFeatr", semantic: true)\` will find "AuthFeature"
|
|
520
|
+
- Example: \`GlobTool(pattern: "tests", semantic: true)\` will find test files based on project structure
|
|
521
|
+
2. **Exact Identifier**: WHEN you know the precise class/function name (e.g., "UserProfile", "initDatabase"), use standard Grep/Glob without \`semantic\` flag.
|
|
522
|
+
3. **Exploration**: If standard search returns 0 results, AUTOMATICALLY retry with \`semantic: true\`.
|
|
523
|
+
|
|
524
|
+
# LSP Priority & Scope Limits
|
|
525
|
+
- **Order**: Structure Tree (LS) \u2192 Hotspot Location \u2192 Read \u2192 LSP
|
|
526
|
+
- Use \`LSPTool.documentSymbol\` or \`LSPTool.definition\` only when you have a precise position and need to confirm exact range
|
|
527
|
+
- Do NOT rely on line numbers from \`read_file\` alone as they may be outdated
|
|
528
|
+
- \`workspaceSymbol\` requires a query and should provide clear path/module scope to avoid unbounded workspace queries
|
|
529
|
+
|
|
530
|
+
# Path Fragmentation Strategy
|
|
531
|
+
- Root \u2192 Core Directory \u2192 Secondary Modules
|
|
532
|
+
- Execute structure scanning in the above order
|
|
533
|
+
|
|
500
534
|
REMEMBER: You can ONLY explore and plan. You CANNOT and MUST NOT write, edit, or modify any files. You do NOT have access to file editing tools.`,
|
|
501
535
|
source: "built-in",
|
|
502
536
|
location: "built-in",
|