pybao-cli 1.4.81 → 1.4.83

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.
Files changed (163) hide show
  1. package/dist/REPL-KB5JZS6S.js +49 -0
  2. package/dist/{acp-YXMNP56B.js → acp-5G23YRZD.js} +79 -32
  3. package/dist/acp-5G23YRZD.js.map +7 -0
  4. package/dist/{agentsValidate-LQFWOCPZ.js → agentsValidate-Y3JGFZPX.js} +7 -7
  5. package/dist/ask-DNEJAFQM.js +143 -0
  6. package/dist/ask-DNEJAFQM.js.map +7 -0
  7. package/dist/{autoUpdater-DEH233RT.js → autoUpdater-NBXSZEKC.js} +3 -3
  8. package/dist/{chunk-MKNRYFQR.js → chunk-53LVQG4V.js} +6 -22
  9. package/dist/{chunk-MKNRYFQR.js.map → chunk-53LVQG4V.js.map} +3 -3
  10. package/dist/{chunk-KH3U5BR5.js → chunk-5KEKIQVC.js} +3 -3
  11. package/dist/{chunk-JVF6KNE3.js → chunk-5MEGIDN7.js} +1 -1
  12. package/dist/{chunk-2NFKKANF.js → chunk-5MZZCUQX.js} +2 -2
  13. package/dist/{chunk-HIZXCXUG.js → chunk-7UTUKVKM.js} +4 -4
  14. package/dist/{chunk-4NNDWUSZ.js → chunk-A5LLPMGS.js} +2 -2
  15. package/dist/{chunk-5KAIY3II.js → chunk-CFX5VEY5.js} +3 -3
  16. package/dist/{chunk-CLGB56HY.js → chunk-DHJEENK5.js} +36 -2
  17. package/dist/{chunk-CLGB56HY.js.map → chunk-DHJEENK5.js.map} +2 -2
  18. package/dist/{chunk-VW3NZKCP.js → chunk-EINLEUKA.js} +1 -1
  19. package/dist/{chunk-H44O47XJ.js → chunk-EUHKG6AJ.js} +11 -1
  20. package/dist/chunk-EUHKG6AJ.js.map +7 -0
  21. package/dist/chunk-F4AXICO7.js +28 -0
  22. package/dist/chunk-F4AXICO7.js.map +7 -0
  23. package/dist/{chunk-EYY3QDKX.js → chunk-FPCH7C5K.js} +2 -2
  24. package/dist/{chunk-FDGIVQNE.js → chunk-FQL6V43W.js} +1 -1
  25. package/dist/{chunk-BX6HNPWQ.js → chunk-FVR53MZY.js} +3 -3
  26. package/dist/{chunk-TVUG5GLX.js → chunk-GKBRHNMB.js} +383 -161
  27. package/dist/chunk-GKBRHNMB.js.map +7 -0
  28. package/dist/{chunk-CCF52HVZ.js → chunk-GRQ32HWG.js} +1 -1
  29. package/dist/{chunk-CCF52HVZ.js.map → chunk-GRQ32HWG.js.map} +1 -1
  30. package/dist/{chunk-4VUECEM6.js → chunk-IDJMJZP4.js} +2 -2
  31. package/dist/{chunk-4SWM6FWR.js → chunk-IIZXV4HL.js} +2 -2
  32. package/dist/{chunk-37ZXN5M4.js → chunk-KSCBNFN7.js} +1 -1
  33. package/dist/{chunk-AB3F7T5N.js → chunk-LIFJX3UL.js} +3 -3
  34. package/dist/{chunk-6XINCIUI.js → chunk-MBIKKOOW.js} +1 -1
  35. package/dist/{chunk-B3NR3UMC.js → chunk-MKSTJEGS.js} +4 -4
  36. package/dist/{chunk-Z73SPR4B.js → chunk-OCIKBYQ4.js} +3 -3
  37. package/dist/{chunk-BJMVIICS.js → chunk-OUOB2RBI.js} +4 -4
  38. package/dist/chunk-RMZABYAD.js +262 -0
  39. package/dist/chunk-RMZABYAD.js.map +7 -0
  40. package/dist/{chunk-HNHWG52B.js → chunk-SUHM4MYA.js} +1 -1
  41. package/dist/{chunk-GMKASRN7.js → chunk-TKPY5LGF.js} +1 -1
  42. package/dist/{chunk-PRRYL2E2.js → chunk-V37R5FE5.js} +16 -16
  43. package/dist/{chunk-UUS77RPP.js → chunk-VRRJXBF3.js} +1 -1
  44. package/dist/{chunk-7ANXEZRS.js → chunk-WGGELTRR.js} +3 -3
  45. package/dist/{chunk-ZE75JZFY.js → chunk-WSP4AYLZ.js} +3 -3
  46. package/dist/{chunk-GS4PRJHV.js → chunk-XHQMUJIS.js} +4 -4
  47. package/dist/chunk-XKYHFZEC.js +68 -0
  48. package/dist/chunk-XKYHFZEC.js.map +7 -0
  49. package/dist/{cli-VNT2RTPP.js → cli-7JVEUFE2.js} +399 -379
  50. package/dist/cli-7JVEUFE2.js.map +7 -0
  51. package/dist/commands-FPZREXUW.js +53 -0
  52. package/dist/{config-VK55G2IB.js → config-YGHZ7OZB.js} +4 -4
  53. package/dist/{context-QHTEENJ6.js → context-SNUVPSIW.js} +6 -6
  54. package/dist/conversationTracker-IXJWSKYY.js +17 -0
  55. package/dist/{customCommands-HRHE7ZIM.js → customCommands-2YZVCPNF.js} +4 -4
  56. package/dist/{env-GGYUE5V7.js → env-SPCTS7IU.js} +2 -2
  57. package/dist/{file-KHYC624L.js → file-MRX573XM.js} +4 -4
  58. package/dist/index.js +3 -3
  59. package/dist/{llm-A3S75CLF.js → llm-VAN6WS52.js} +32 -29
  60. package/dist/{llm-A3S75CLF.js.map → llm-VAN6WS52.js.map} +1 -1
  61. package/dist/{llmLazy-USVVGSVL.js → llmLazy-II5PXLQI.js} +1 -1
  62. package/dist/{loader-JPKYTFFC.js → loader-EV4REQWE.js} +4 -4
  63. package/dist/{lsp-B7QJVI2U.js → lsp-O2TLN3AD.js} +6 -6
  64. package/dist/{lspAnchor-JJJ2WKI7.js → lspAnchor-BLB7II5Y.js} +6 -6
  65. package/dist/{mcp-YOR7UMEZ.js → mcp-OJPHPVNM.js} +7 -7
  66. package/dist/{mentionProcessor-5CYA4NR4.js → mentionProcessor-BXCFLUXL.js} +5 -5
  67. package/dist/{messages-ICKAWGUW.js → messages-CUNARS37.js} +5 -1
  68. package/dist/{model-P33QONA2.js → model-OUTGOGMR.js} +5 -5
  69. package/dist/{openai-POLCH476.js → openai-WTOKA74W.js} +6 -5
  70. package/dist/{outputStyles-EZGCOEE2.js → outputStyles-K5O5RB33.js} +4 -4
  71. package/dist/{pluginRuntime-KJ3YFO2O.js → pluginRuntime-JEJXUSFZ.js} +6 -6
  72. package/dist/{pluginValidation-MR5GV7PL.js → pluginValidation-S4VSNYHJ.js} +6 -6
  73. package/dist/prompts-XUL3MGVE.js +55 -0
  74. package/dist/{pybAgentSessionLoad-TRSWA62U.js → pybAgentSessionLoad-I7MI2W5O.js} +4 -4
  75. package/dist/{pybAgentSessionResume-3IRNTCVI.js → pybAgentSessionResume-CMC5D4IX.js} +4 -4
  76. package/dist/{pybAgentStreamJsonSession-5IBYEXS5.js → pybAgentStreamJsonSession-FUT6NUZG.js} +3 -3
  77. package/dist/pybAgentStreamJsonSession-FUT6NUZG.js.map +7 -0
  78. package/dist/{pybHooks-HFAKEYDS.js → pybHooks-I4C2HCMR.js} +4 -4
  79. package/dist/query-HKFFVARD.js +57 -0
  80. package/dist/{registry-LOKL3JBE.js → registry-HA4GULY4.js} +5 -5
  81. package/dist/replSessionBridge-EBXNFUAD.js +10 -0
  82. package/dist/{ripgrep-X4LOQHA7.js → ripgrep-4F2VOLSN.js} +3 -3
  83. package/dist/{skillMarketplace-UITGQNZD.js → skillMarketplace-73JWYMAT.js} +3 -3
  84. package/dist/{state-I7LIGIFJ.js → state-WVRITIDZ.js} +2 -2
  85. package/dist/{theme-RVIXXPSQ.js → theme-BPZWU5M7.js} +5 -5
  86. package/dist/{toolPermissionSettings-TALALPH3.js → toolPermissionSettings-UOQTLVV5.js} +6 -6
  87. package/dist/toolPermissionSettings-UOQTLVV5.js.map +7 -0
  88. package/dist/tools-3OMW2SOR.js +54 -0
  89. package/dist/tools-3OMW2SOR.js.map +7 -0
  90. package/dist/{userInput-WFPUGJ4L.js → userInput-TQYQIWBV.js} +40 -36
  91. package/dist/userInput-TQYQIWBV.js.map +7 -0
  92. package/package.json +1 -1
  93. package/dist/REPL-WXPYXBW2.js +0 -46
  94. package/dist/acp-YXMNP56B.js.map +0 -7
  95. package/dist/ask-CUR6IJ2W.js +0 -129
  96. package/dist/ask-CUR6IJ2W.js.map +0 -7
  97. package/dist/chunk-H44O47XJ.js.map +0 -7
  98. package/dist/chunk-TVUG5GLX.js.map +0 -7
  99. package/dist/cli-VNT2RTPP.js.map +0 -7
  100. package/dist/commands-LAZD5O4M.js +0 -50
  101. package/dist/prompts-P4JU57HZ.js +0 -52
  102. package/dist/pybAgentStreamJsonSession-5IBYEXS5.js.map +0 -7
  103. package/dist/query-NHQFKSCC.js +0 -54
  104. package/dist/tools-HVGZBEHZ.js +0 -51
  105. package/dist/userInput-WFPUGJ4L.js.map +0 -7
  106. /package/dist/{REPL-WXPYXBW2.js.map → REPL-KB5JZS6S.js.map} +0 -0
  107. /package/dist/{agentsValidate-LQFWOCPZ.js.map → agentsValidate-Y3JGFZPX.js.map} +0 -0
  108. /package/dist/{autoUpdater-DEH233RT.js.map → autoUpdater-NBXSZEKC.js.map} +0 -0
  109. /package/dist/{chunk-KH3U5BR5.js.map → chunk-5KEKIQVC.js.map} +0 -0
  110. /package/dist/{chunk-JVF6KNE3.js.map → chunk-5MEGIDN7.js.map} +0 -0
  111. /package/dist/{chunk-2NFKKANF.js.map → chunk-5MZZCUQX.js.map} +0 -0
  112. /package/dist/{chunk-HIZXCXUG.js.map → chunk-7UTUKVKM.js.map} +0 -0
  113. /package/dist/{chunk-4NNDWUSZ.js.map → chunk-A5LLPMGS.js.map} +0 -0
  114. /package/dist/{chunk-5KAIY3II.js.map → chunk-CFX5VEY5.js.map} +0 -0
  115. /package/dist/{chunk-VW3NZKCP.js.map → chunk-EINLEUKA.js.map} +0 -0
  116. /package/dist/{chunk-EYY3QDKX.js.map → chunk-FPCH7C5K.js.map} +0 -0
  117. /package/dist/{chunk-FDGIVQNE.js.map → chunk-FQL6V43W.js.map} +0 -0
  118. /package/dist/{chunk-BX6HNPWQ.js.map → chunk-FVR53MZY.js.map} +0 -0
  119. /package/dist/{chunk-4VUECEM6.js.map → chunk-IDJMJZP4.js.map} +0 -0
  120. /package/dist/{chunk-4SWM6FWR.js.map → chunk-IIZXV4HL.js.map} +0 -0
  121. /package/dist/{chunk-37ZXN5M4.js.map → chunk-KSCBNFN7.js.map} +0 -0
  122. /package/dist/{chunk-AB3F7T5N.js.map → chunk-LIFJX3UL.js.map} +0 -0
  123. /package/dist/{chunk-6XINCIUI.js.map → chunk-MBIKKOOW.js.map} +0 -0
  124. /package/dist/{chunk-B3NR3UMC.js.map → chunk-MKSTJEGS.js.map} +0 -0
  125. /package/dist/{chunk-Z73SPR4B.js.map → chunk-OCIKBYQ4.js.map} +0 -0
  126. /package/dist/{chunk-BJMVIICS.js.map → chunk-OUOB2RBI.js.map} +0 -0
  127. /package/dist/{chunk-HNHWG52B.js.map → chunk-SUHM4MYA.js.map} +0 -0
  128. /package/dist/{chunk-GMKASRN7.js.map → chunk-TKPY5LGF.js.map} +0 -0
  129. /package/dist/{chunk-PRRYL2E2.js.map → chunk-V37R5FE5.js.map} +0 -0
  130. /package/dist/{chunk-UUS77RPP.js.map → chunk-VRRJXBF3.js.map} +0 -0
  131. /package/dist/{chunk-7ANXEZRS.js.map → chunk-WGGELTRR.js.map} +0 -0
  132. /package/dist/{chunk-ZE75JZFY.js.map → chunk-WSP4AYLZ.js.map} +0 -0
  133. /package/dist/{chunk-GS4PRJHV.js.map → chunk-XHQMUJIS.js.map} +0 -0
  134. /package/dist/{commands-LAZD5O4M.js.map → commands-FPZREXUW.js.map} +0 -0
  135. /package/dist/{config-VK55G2IB.js.map → config-YGHZ7OZB.js.map} +0 -0
  136. /package/dist/{context-QHTEENJ6.js.map → context-SNUVPSIW.js.map} +0 -0
  137. /package/dist/{customCommands-HRHE7ZIM.js.map → conversationTracker-IXJWSKYY.js.map} +0 -0
  138. /package/dist/{env-GGYUE5V7.js.map → customCommands-2YZVCPNF.js.map} +0 -0
  139. /package/dist/{file-KHYC624L.js.map → env-SPCTS7IU.js.map} +0 -0
  140. /package/dist/{llmLazy-USVVGSVL.js.map → file-MRX573XM.js.map} +0 -0
  141. /package/dist/{loader-JPKYTFFC.js.map → llmLazy-II5PXLQI.js.map} +0 -0
  142. /package/dist/{lsp-B7QJVI2U.js.map → loader-EV4REQWE.js.map} +0 -0
  143. /package/dist/{mcp-YOR7UMEZ.js.map → lsp-O2TLN3AD.js.map} +0 -0
  144. /package/dist/{lspAnchor-JJJ2WKI7.js.map → lspAnchor-BLB7II5Y.js.map} +0 -0
  145. /package/dist/{messages-ICKAWGUW.js.map → mcp-OJPHPVNM.js.map} +0 -0
  146. /package/dist/{mentionProcessor-5CYA4NR4.js.map → mentionProcessor-BXCFLUXL.js.map} +0 -0
  147. /package/dist/{model-P33QONA2.js.map → messages-CUNARS37.js.map} +0 -0
  148. /package/dist/{openai-POLCH476.js.map → model-OUTGOGMR.js.map} +0 -0
  149. /package/dist/{outputStyles-EZGCOEE2.js.map → openai-WTOKA74W.js.map} +0 -0
  150. /package/dist/{pluginValidation-MR5GV7PL.js.map → outputStyles-K5O5RB33.js.map} +0 -0
  151. /package/dist/{pluginRuntime-KJ3YFO2O.js.map → pluginRuntime-JEJXUSFZ.js.map} +0 -0
  152. /package/dist/{prompts-P4JU57HZ.js.map → pluginValidation-S4VSNYHJ.js.map} +0 -0
  153. /package/dist/{pybAgentSessionLoad-TRSWA62U.js.map → prompts-XUL3MGVE.js.map} +0 -0
  154. /package/dist/{pybAgentSessionResume-3IRNTCVI.js.map → pybAgentSessionLoad-I7MI2W5O.js.map} +0 -0
  155. /package/dist/{pybHooks-HFAKEYDS.js.map → pybAgentSessionResume-CMC5D4IX.js.map} +0 -0
  156. /package/dist/{query-NHQFKSCC.js.map → pybHooks-I4C2HCMR.js.map} +0 -0
  157. /package/dist/{registry-LOKL3JBE.js.map → query-HKFFVARD.js.map} +0 -0
  158. /package/dist/{ripgrep-X4LOQHA7.js.map → registry-HA4GULY4.js.map} +0 -0
  159. /package/dist/{skillMarketplace-UITGQNZD.js.map → replSessionBridge-EBXNFUAD.js.map} +0 -0
  160. /package/dist/{state-I7LIGIFJ.js.map → ripgrep-4F2VOLSN.js.map} +0 -0
  161. /package/dist/{theme-RVIXXPSQ.js.map → skillMarketplace-73JWYMAT.js.map} +0 -0
  162. /package/dist/{toolPermissionSettings-TALALPH3.js.map → state-WVRITIDZ.js.map} +0 -0
  163. /package/dist/{tools-HVGZBEHZ.js.map → theme-BPZWU5M7.js.map} +0 -0
@@ -1,129 +0,0 @@
1
- import { createRequire as __pybCreateRequire } from "node:module";
2
- const require = __pybCreateRequire(import.meta.url);
3
- import {
4
- getSystemPrompt,
5
- query
6
- } from "./chunk-TVUG5GLX.js";
7
- import "./chunk-7ANXEZRS.js";
8
- import "./chunk-FDGIVQNE.js";
9
- import "./chunk-VW3NZKCP.js";
10
- import "./chunk-4NNDWUSZ.js";
11
- import "./chunk-5P7HBXTD.js";
12
- import "./chunk-KH3U5BR5.js";
13
- import "./chunk-4VUECEM6.js";
14
- import "./chunk-MKNRYFQR.js";
15
- import "./chunk-BJMVIICS.js";
16
- import "./chunk-HIZXCXUG.js";
17
- import "./chunk-HNHWG52B.js";
18
- import "./chunk-BX6HNPWQ.js";
19
- import "./chunk-UNNVICVU.js";
20
- import "./chunk-2NFKKANF.js";
21
- import "./chunk-CLGB56HY.js";
22
- import "./chunk-A3BVXXA3.js";
23
- import {
24
- createUserMessage
25
- } from "./chunk-H44O47XJ.js";
26
- import "./chunk-3DFBSQIT.js";
27
- import "./chunk-B6IMQJZM.js";
28
- import {
29
- getTotalCost
30
- } from "./chunk-OUXHGDLH.js";
31
- import "./chunk-EYY3QDKX.js";
32
- import "./chunk-QWIBSCDN.js";
33
- import "./chunk-GS4PRJHV.js";
34
- import "./chunk-5KAIY3II.js";
35
- import "./chunk-JVF6KNE3.js";
36
- import "./chunk-UZ34JEUK.js";
37
- import "./chunk-4SWM6FWR.js";
38
- import "./chunk-BJSWTHRM.js";
39
- import {
40
- getModelManager
41
- } from "./chunk-Z73SPR4B.js";
42
- import {
43
- getContext
44
- } from "./chunk-B3NR3UMC.js";
45
- import "./chunk-37ZXN5M4.js";
46
- import "./chunk-GMKASRN7.js";
47
- import "./chunk-ZE75JZFY.js";
48
- import "./chunk-RQVLBMP7.js";
49
- import "./chunk-6XINCIUI.js";
50
- import {
51
- getMessagesPath,
52
- overwriteLog,
53
- setCwd
54
- } from "./chunk-UUS77RPP.js";
55
- import "./chunk-CCF52HVZ.js";
56
- import "./chunk-I3J4JYES.js";
57
-
58
- // src/app/ask.ts
59
- import { last } from "lodash-es";
60
- async function ask({
61
- commands,
62
- safeMode,
63
- hasPermissionsToUseTool,
64
- messageLogName,
65
- prompt,
66
- cwd,
67
- tools,
68
- verbose = false,
69
- initialMessages,
70
- persistSession = true
71
- }) {
72
- await setCwd(cwd);
73
- const message = createUserMessage(prompt);
74
- const messages = [...initialMessages ?? [], message];
75
- const [systemPrompt, context, model] = await Promise.all([
76
- getSystemPrompt(),
77
- getContext(),
78
- getModelManager().getModelName("main")
79
- ]);
80
- for await (const m of query(
81
- messages,
82
- systemPrompt,
83
- context,
84
- hasPermissionsToUseTool,
85
- {
86
- options: {
87
- commands,
88
- tools,
89
- verbose,
90
- safeMode,
91
- forkNumber: 0,
92
- messageLogName: "unused",
93
- maxThinkingTokens: 0,
94
- persistSession
95
- },
96
- abortController: new AbortController(),
97
- messageId: void 0,
98
- readFileTimestamps: {},
99
- setToolJSX: () => {
100
- }
101
- }
102
- )) {
103
- messages.push(m);
104
- }
105
- const result = last(messages);
106
- if (!result || result.type !== "assistant") {
107
- throw new Error("Expected content to be an assistant message");
108
- }
109
- const textContent = result.message.content.find((c) => c.type === "text");
110
- if (!textContent) {
111
- throw new Error(
112
- `Expected at least one text content item, but got ${JSON.stringify(
113
- result.message.content,
114
- null,
115
- 2
116
- )}`
117
- );
118
- }
119
- const messageHistoryFile = getMessagesPath(messageLogName, 0, 0);
120
- overwriteLog(messageHistoryFile, messages);
121
- return {
122
- resultText: textContent.text,
123
- totalCost: getTotalCost(),
124
- messageHistoryFile
125
- };
126
- }
127
- export {
128
- ask
129
- };
@@ -1,7 +0,0 @@
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 { createUserMessage } from '@utils/messages'\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 message = createUserMessage(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 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 },\n )) {\n messages.push(m)\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;AA0BrB,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,UAAU,kBAAkB,MAAM;AACxC,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,mBAAiB,KAAK;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB;AAAA,MACF;AAAA,MACA,iBAAiB,IAAI,gBAAgB;AAAA,MACrC,WAAW;AAAA,MACX,oBAAoB,CAAC;AAAA,MACrB,YAAY,MAAM;AAAA,MAAC;AAAA,IACrB;AAAA,EACF,GAAG;AACD,aAAS,KAAK,CAAC;AAAA,EACjB;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
- }
@@ -1,7 +0,0 @@
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 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,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;;;AEtpBA,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
- }