newcraw 1.0.2 → 1.0.3

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 (220) hide show
  1. package/dist/REPL-CTTH53A7.js +50 -0
  2. package/dist/{acp-J4WDYGRX.js → acp-25PIN25O.js} +69 -40
  3. package/dist/acp-25PIN25O.js.map +7 -0
  4. package/dist/{agentsValidate-UBOER2IN.js → agentsValidate-BXDD54YP.js} +13 -10
  5. package/dist/{agentsValidate-UBOER2IN.js.map → agentsValidate-BXDD54YP.js.map} +1 -1
  6. package/dist/{ask-MGUO3L35.js → ask-EL4XAA5P.js} +62 -52
  7. package/dist/ask-EL4XAA5P.js.map +7 -0
  8. package/dist/{autoUpdater-2GS6LRPK.js → autoUpdater-DKMSJXWW.js} +5 -4
  9. package/dist/{chunk-2C43OXE7.js → chunk-2OVXJBJV.js} +38 -59
  10. package/dist/chunk-2OVXJBJV.js.map +7 -0
  11. package/dist/{chunk-53A4JHFW.js → chunk-3D3C7MRI.js} +23 -4
  12. package/dist/chunk-3D3C7MRI.js.map +7 -0
  13. package/dist/{chunk-VKI7ORIO.js → chunk-3ZQRACCP.js} +37 -18
  14. package/dist/{chunk-VKI7ORIO.js.map → chunk-3ZQRACCP.js.map} +1 -1
  15. package/dist/chunk-4A6CDBDH.js +822 -0
  16. package/dist/chunk-4A6CDBDH.js.map +7 -0
  17. package/dist/{chunk-VQSCECTS.js → chunk-53VETVCP.js} +6 -4
  18. package/dist/{chunk-VQSCECTS.js.map → chunk-53VETVCP.js.map} +1 -1
  19. package/dist/{chunk-WWDVA4NV.js → chunk-6WT3ZRYF.js} +22 -6
  20. package/dist/{chunk-WWDVA4NV.js.map → chunk-6WT3ZRYF.js.map} +1 -1
  21. package/dist/{chunk-RUXIBQ3B.js → chunk-7E2L7EH2.js} +4 -4
  22. package/dist/{chunk-VHS2MZQS.js → chunk-7PWVUHQ2.js} +9 -6
  23. package/dist/{chunk-VHS2MZQS.js.map → chunk-7PWVUHQ2.js.map} +1 -1
  24. package/dist/{chunk-2EFL22PV.js → chunk-ADJ4YEII.js} +7 -3
  25. package/dist/chunk-ADJ4YEII.js.map +7 -0
  26. package/dist/chunk-AKNZJBBU.js +372 -0
  27. package/dist/chunk-AKNZJBBU.js.map +7 -0
  28. package/dist/chunk-ALQSPHXV.js +135 -0
  29. package/dist/chunk-ALQSPHXV.js.map +7 -0
  30. package/dist/{chunk-XS6PU75S.js → chunk-APSIF3YK.js} +1 -1
  31. package/dist/{chunk-IM33F5CM.js → chunk-BMJ5XGFR.js} +1668 -1623
  32. package/dist/chunk-BMJ5XGFR.js.map +7 -0
  33. package/dist/chunk-BQCOSNM3.js +93 -0
  34. package/dist/chunk-BQCOSNM3.js.map +7 -0
  35. package/dist/{chunk-OJIMOLIC.js → chunk-BTCASL4X.js} +3621 -7413
  36. package/dist/chunk-BTCASL4X.js.map +7 -0
  37. package/dist/chunk-CHB5K4GI.js +107 -0
  38. package/dist/chunk-CHB5K4GI.js.map +7 -0
  39. package/dist/{chunk-QH2M65BR.js → chunk-D2FSAFMO.js} +7 -3
  40. package/dist/{chunk-QH2M65BR.js.map → chunk-D2FSAFMO.js.map} +1 -1
  41. package/dist/chunk-D4OZACS2.js +35 -0
  42. package/dist/{chunk-IIFUDVGS.js → chunk-ENLHVQCX.js} +310 -177
  43. package/dist/chunk-ENLHVQCX.js.map +7 -0
  44. package/dist/{chunk-A7X6OCZE.js → chunk-ERKWSZ3K.js} +1 -1
  45. package/dist/{chunk-UYRR6F5S.js → chunk-FSSZHQEJ.js} +9 -3
  46. package/dist/{chunk-UYRR6F5S.js.map → chunk-FSSZHQEJ.js.map} +1 -1
  47. package/dist/chunk-GV73HKJO.js +5473 -0
  48. package/dist/chunk-GV73HKJO.js.map +7 -0
  49. package/dist/{chunk-GZTCXXSS.js → chunk-GZ4BEVMZ.js} +57 -46
  50. package/dist/{chunk-GZTCXXSS.js.map → chunk-GZ4BEVMZ.js.map} +1 -1
  51. package/dist/chunk-HLBLZKZH.js +45 -0
  52. package/dist/chunk-HLBLZKZH.js.map +7 -0
  53. package/dist/chunk-JLVECHVJ.js +36 -0
  54. package/dist/chunk-JLVECHVJ.js.map +7 -0
  55. package/dist/chunk-KNSAVNMD.js +683 -0
  56. package/dist/{chunk-F3COCCAE.js.map → chunk-KNSAVNMD.js.map} +1 -1
  57. package/dist/{chunk-V5U6BHT2.js → chunk-KRN3WHHL.js} +7 -3
  58. package/dist/{chunk-V5U6BHT2.js.map → chunk-KRN3WHHL.js.map} +1 -1
  59. package/dist/{chunk-3LMXSKZ7.js → chunk-NFYAVT54.js} +1 -1
  60. package/dist/chunk-NT7RDVDA.js +33 -0
  61. package/dist/{chunk-KQSHIOZK.js.map → chunk-NT7RDVDA.js.map} +1 -1
  62. package/dist/chunk-NW7WSLD5.js +166 -0
  63. package/dist/{chunk-ZYSVG4X3.js.map → chunk-NW7WSLD5.js.map} +2 -2
  64. package/dist/{chunk-HSJ6HYAO.js → chunk-P52SGBC4.js} +18 -10
  65. package/dist/chunk-P52SGBC4.js.map +7 -0
  66. package/dist/{chunk-XXU2NVOE.js → chunk-PC6QOCGI.js} +30 -6
  67. package/dist/chunk-PC6QOCGI.js.map +7 -0
  68. package/dist/{chunk-N5OHRWG2.js → chunk-QSRXXZO7.js} +4 -2
  69. package/dist/{chunk-N5OHRWG2.js.map → chunk-QSRXXZO7.js.map} +1 -1
  70. package/dist/{chunk-DEF3KFP7.js → chunk-QZFKONA3.js} +4 -2
  71. package/dist/{chunk-DEF3KFP7.js.map → chunk-QZFKONA3.js.map} +1 -1
  72. package/dist/{chunk-JWXQNBBA.js → chunk-RE226X4F.js} +7 -1
  73. package/dist/{chunk-JWXQNBBA.js.map → chunk-RE226X4F.js.map} +1 -1
  74. package/dist/chunk-RF57YWGW.js +88 -0
  75. package/dist/chunk-RF57YWGW.js.map +7 -0
  76. package/dist/chunk-UGBECBIR.js +62 -0
  77. package/dist/chunk-UGBECBIR.js.map +7 -0
  78. package/dist/chunk-UYWZQVH5.js +35 -0
  79. package/dist/chunk-UYWZQVH5.js.map +7 -0
  80. package/dist/{chunk-LOIZNQOU.js → chunk-VHZRJ7RI.js} +9 -3
  81. package/dist/{chunk-LOIZNQOU.js.map → chunk-VHZRJ7RI.js.map} +1 -1
  82. package/dist/{chunk-XMGUQHMF.js → chunk-VSSVN6WG.js} +11 -1
  83. package/dist/chunk-VSSVN6WG.js.map +7 -0
  84. package/dist/{chunk-OZHBEG7U.js → chunk-XV7LPJNT.js} +15 -5
  85. package/dist/{chunk-OZHBEG7U.js.map → chunk-XV7LPJNT.js.map} +1 -1
  86. package/dist/chunk-Y7MDOB3N.js +65 -0
  87. package/dist/chunk-Y7MDOB3N.js.map +7 -0
  88. package/dist/{chunk-BWYKUDJR.js → chunk-ZLAB3Z4G.js} +14 -8
  89. package/dist/{chunk-BWYKUDJR.js.map → chunk-ZLAB3Z4G.js.map} +1 -1
  90. package/dist/{chunk-755HIAI3.js → chunk-ZMO4E7IW.js} +3 -42
  91. package/dist/chunk-ZMO4E7IW.js.map +7 -0
  92. package/dist/{cli-KZGF3FV5.js → cli-Z2BNJWHT.js} +251 -485
  93. package/dist/cli-Z2BNJWHT.js.map +7 -0
  94. package/dist/commands-3Y3OQOXT.js +54 -0
  95. package/dist/{config-GTJWCNPF.js → config-5RS7HDIK.js} +9 -6
  96. package/dist/{context-WF3TTXQU.js → context-XZXRRYKS.js} +8 -7
  97. package/dist/{costTracker-2G3ZI2JF.js → costTracker-VSWW7SRT.js} +3 -2
  98. package/dist/{customCommands-QOWK57EX.js → customCommands-6KDAODFQ.js} +6 -5
  99. package/dist/{env-37BAP7QF.js → env-WIM2DQ4L.js} +10 -7
  100. package/dist/{gateway-IZYO6YFJ.js → gateway-DKHC7H3K.js} +542 -96
  101. package/dist/gateway-DKHC7H3K.js.map +7 -0
  102. package/dist/identity-3KZQQVBG.js +16 -0
  103. package/dist/index.js +8 -6
  104. package/dist/index.js.map +1 -1
  105. package/dist/{kodeAgentSessionId-KTGFX2BE.js → kodeAgentSessionId-4SH24DVH.js} +1 -1
  106. package/dist/{kodeAgentSessionLoad-6F7SJXBC.js → kodeAgentSessionLoad-4S452GGD.js} +6 -5
  107. package/dist/{kodeAgentSessionResume-UEEDRJ3N.js → kodeAgentSessionResume-MSMG4QUR.js} +6 -5
  108. package/dist/{kodeAgentStreamJson-VIXFTYL5.js → kodeAgentStreamJson-4ZKIWKS3.js} +4 -2
  109. package/dist/{kodeAgentStreamJsonSession-XC3IPREZ.js → kodeAgentStreamJsonSession-CYG6MLKP.js} +15 -4
  110. package/dist/kodeAgentStreamJsonSession-CYG6MLKP.js.map +7 -0
  111. package/dist/{kodeAgentStructuredStdio-SI5C7AAD.js → kodeAgentStructuredStdio-5DCUC6V6.js} +3 -3
  112. package/dist/{kodeHooks-V36SHCTC.js → kodeHooks-WX3N6CL6.js} +6 -5
  113. package/dist/{llm-CYUDKJNR.js → llm-V2W4KJIA.js} +239 -57
  114. package/dist/llm-V2W4KJIA.js.map +7 -0
  115. package/dist/{llmLazy-IXVVBRTN.js → llmLazy-I7SO67YA.js} +2 -2
  116. package/dist/{loader-OEJ6C3TN.js → loader-YJGRGJNH.js} +6 -5
  117. package/dist/{mcp-KE3SILMX.js → mcp-WG3RQQCZ.js} +10 -9
  118. package/dist/{mentionProcessor-GAU2WAYB.js → mentionProcessor-PKWDUKTN.js} +14 -7
  119. package/dist/{mentionProcessor-GAU2WAYB.js.map → mentionProcessor-PKWDUKTN.js.map} +1 -1
  120. package/dist/{messages-WCSGGSEU.js → messages-RXHQ6VKL.js} +2 -2
  121. package/dist/{model-4TQIV5J2.js → model-JNWAZGT7.js} +10 -7
  122. package/dist/{openai-KTZV6F7N.js → openai-6NL5UXO7.js} +8 -7
  123. package/dist/{outputStyles-WX5RYQOA.js → outputStyles-BVPXT3MW.js} +6 -5
  124. package/dist/{pluginRuntime-JXMJZ2LC.js → pluginRuntime-XHI3TCRJ.js} +11 -8
  125. package/dist/{pluginRuntime-JXMJZ2LC.js.map → pluginRuntime-XHI3TCRJ.js.map} +1 -1
  126. package/dist/{pluginValidation-JNQZYLUP.js → pluginValidation-WDFL352C.js} +8 -7
  127. package/dist/prompts-C4RUFGX2.js +58 -0
  128. package/dist/query-IA3UKMGR.js +58 -0
  129. package/dist/{responsesStreaming-2AIT6GHG.js → responsesStreaming-JORGEFQC.js} +1 -1
  130. package/dist/{ripgrep-KDPQAMB2.js → ripgrep-BHDXRABJ.js} +5 -4
  131. package/dist/sandbox-QOXESHL4.js +63 -0
  132. package/dist/{skillMarketplace-IXAGP3Q2.js → skillMarketplace-RIAMO2YA.js} +5 -4
  133. package/dist/{state-MSCYLB6Y.js → state-TM2XZQE2.js} +6 -3
  134. package/dist/structuredOutput-KAVFUV2Z.js +9 -0
  135. package/dist/theme-BXUQNXSD.js +15 -0
  136. package/dist/thinking-BCZ4WDT6.js +18 -0
  137. package/dist/{toolPermissionContext-I3IXPVED.js → toolPermissionContext-JCQ5MFUT.js} +1 -1
  138. package/dist/toolPermissionContext-JCQ5MFUT.js.map +7 -0
  139. package/dist/toolPermissionContextState-ILRPUITK.js +24 -0
  140. package/dist/toolPermissionContextState-ILRPUITK.js.map +7 -0
  141. package/dist/{toolPermissionSettings-EUZKGZU2.js → toolPermissionSettings-LNYZ6XFE.js} +9 -8
  142. package/dist/toolPermissionSettings-LNYZ6XFE.js.map +7 -0
  143. package/dist/tools-HIPUGTF5.js +55 -0
  144. package/dist/tools-HIPUGTF5.js.map +7 -0
  145. package/dist/{userInput-LJL4CVOB.js → userInput-I33T2RX2.js} +49 -34
  146. package/dist/{userInput-LJL4CVOB.js.map → userInput-I33T2RX2.js.map} +1 -1
  147. package/dist/{uuid-VA3KVASX.js → uuid-RQH3OZ3W.js} +1 -1
  148. package/dist/uuid-RQH3OZ3W.js.map +7 -0
  149. package/dist/workspace-EP63OB5S.js +21 -0
  150. package/dist/workspace-EP63OB5S.js.map +7 -0
  151. package/package.json +1 -1
  152. package/web/dist/assets/index-XuLVvSQF.js +251 -0
  153. package/web/dist/assets/index-pSid9IlY.css +10 -0
  154. package/web/dist/index.html +2 -2
  155. package/dist/REPL-IAK7ZN2Z.js +0 -42
  156. package/dist/acp-J4WDYGRX.js.map +0 -7
  157. package/dist/ask-MGUO3L35.js.map +0 -7
  158. package/dist/chunk-2C43OXE7.js.map +0 -7
  159. package/dist/chunk-2EFL22PV.js.map +0 -7
  160. package/dist/chunk-53A4JHFW.js.map +0 -7
  161. package/dist/chunk-755HIAI3.js.map +0 -7
  162. package/dist/chunk-AXWJI6N5.js +0 -11
  163. package/dist/chunk-F3COCCAE.js +0 -654
  164. package/dist/chunk-HSJ6HYAO.js.map +0 -7
  165. package/dist/chunk-IIFUDVGS.js.map +0 -7
  166. package/dist/chunk-IM33F5CM.js.map +0 -7
  167. package/dist/chunk-KQSHIOZK.js +0 -24
  168. package/dist/chunk-OJIMOLIC.js.map +0 -7
  169. package/dist/chunk-XMGUQHMF.js.map +0 -7
  170. package/dist/chunk-XXU2NVOE.js.map +0 -7
  171. package/dist/chunk-ZYSVG4X3.js +0 -151
  172. package/dist/cli-KZGF3FV5.js.map +0 -7
  173. package/dist/commands-AVEBLFVS.js +0 -46
  174. package/dist/gateway-IZYO6YFJ.js.map +0 -7
  175. package/dist/kodeAgentStreamJsonSession-XC3IPREZ.js.map +0 -7
  176. package/dist/llm-CYUDKJNR.js.map +0 -7
  177. package/dist/prompts-LE6GK75N.js +0 -48
  178. package/dist/query-GGIP6PWG.js +0 -50
  179. package/dist/theme-GAMFOLBW.js +0 -14
  180. package/dist/tools-3HOUIDM3.js +0 -47
  181. package/web/dist/assets/index-COAJqX1Z.css +0 -1
  182. package/web/dist/assets/index-CzS_4LmC.js +0 -179
  183. /package/dist/{REPL-IAK7ZN2Z.js.map → REPL-CTTH53A7.js.map} +0 -0
  184. /package/dist/{autoUpdater-2GS6LRPK.js.map → autoUpdater-DKMSJXWW.js.map} +0 -0
  185. /package/dist/{chunk-RUXIBQ3B.js.map → chunk-7E2L7EH2.js.map} +0 -0
  186. /package/dist/{chunk-XS6PU75S.js.map → chunk-APSIF3YK.js.map} +0 -0
  187. /package/dist/{chunk-AXWJI6N5.js.map → chunk-D4OZACS2.js.map} +0 -0
  188. /package/dist/{chunk-A7X6OCZE.js.map → chunk-ERKWSZ3K.js.map} +0 -0
  189. /package/dist/{chunk-3LMXSKZ7.js.map → chunk-NFYAVT54.js.map} +0 -0
  190. /package/dist/{commands-AVEBLFVS.js.map → commands-3Y3OQOXT.js.map} +0 -0
  191. /package/dist/{config-GTJWCNPF.js.map → config-5RS7HDIK.js.map} +0 -0
  192. /package/dist/{context-WF3TTXQU.js.map → context-XZXRRYKS.js.map} +0 -0
  193. /package/dist/{costTracker-2G3ZI2JF.js.map → costTracker-VSWW7SRT.js.map} +0 -0
  194. /package/dist/{customCommands-QOWK57EX.js.map → customCommands-6KDAODFQ.js.map} +0 -0
  195. /package/dist/{env-37BAP7QF.js.map → env-WIM2DQ4L.js.map} +0 -0
  196. /package/dist/{kodeAgentSessionId-KTGFX2BE.js.map → identity-3KZQQVBG.js.map} +0 -0
  197. /package/dist/{kodeAgentSessionLoad-6F7SJXBC.js.map → kodeAgentSessionId-4SH24DVH.js.map} +0 -0
  198. /package/dist/{kodeAgentSessionResume-UEEDRJ3N.js.map → kodeAgentSessionLoad-4S452GGD.js.map} +0 -0
  199. /package/dist/{kodeAgentStreamJson-VIXFTYL5.js.map → kodeAgentSessionResume-MSMG4QUR.js.map} +0 -0
  200. /package/dist/{kodeAgentStructuredStdio-SI5C7AAD.js.map → kodeAgentStreamJson-4ZKIWKS3.js.map} +0 -0
  201. /package/dist/{kodeHooks-V36SHCTC.js.map → kodeAgentStructuredStdio-5DCUC6V6.js.map} +0 -0
  202. /package/dist/{llmLazy-IXVVBRTN.js.map → kodeHooks-WX3N6CL6.js.map} +0 -0
  203. /package/dist/{loader-OEJ6C3TN.js.map → llmLazy-I7SO67YA.js.map} +0 -0
  204. /package/dist/{mcp-KE3SILMX.js.map → loader-YJGRGJNH.js.map} +0 -0
  205. /package/dist/{messages-WCSGGSEU.js.map → mcp-WG3RQQCZ.js.map} +0 -0
  206. /package/dist/{model-4TQIV5J2.js.map → messages-RXHQ6VKL.js.map} +0 -0
  207. /package/dist/{openai-KTZV6F7N.js.map → model-JNWAZGT7.js.map} +0 -0
  208. /package/dist/{outputStyles-WX5RYQOA.js.map → openai-6NL5UXO7.js.map} +0 -0
  209. /package/dist/{pluginValidation-JNQZYLUP.js.map → outputStyles-BVPXT3MW.js.map} +0 -0
  210. /package/dist/{prompts-LE6GK75N.js.map → pluginValidation-WDFL352C.js.map} +0 -0
  211. /package/dist/{query-GGIP6PWG.js.map → prompts-C4RUFGX2.js.map} +0 -0
  212. /package/dist/{responsesStreaming-2AIT6GHG.js.map → query-IA3UKMGR.js.map} +0 -0
  213. /package/dist/{ripgrep-KDPQAMB2.js.map → responsesStreaming-JORGEFQC.js.map} +0 -0
  214. /package/dist/{skillMarketplace-IXAGP3Q2.js.map → ripgrep-BHDXRABJ.js.map} +0 -0
  215. /package/dist/{state-MSCYLB6Y.js.map → sandbox-QOXESHL4.js.map} +0 -0
  216. /package/dist/{theme-GAMFOLBW.js.map → skillMarketplace-RIAMO2YA.js.map} +0 -0
  217. /package/dist/{toolPermissionContext-I3IXPVED.js.map → state-TM2XZQE2.js.map} +0 -0
  218. /package/dist/{toolPermissionSettings-EUZKGZU2.js.map → structuredOutput-KAVFUV2Z.js.map} +0 -0
  219. /package/dist/{tools-3HOUIDM3.js.map → theme-BXUQNXSD.js.map} +0 -0
  220. /package/dist/{uuid-VA3KVASX.js.map → thinking-BCZ4WDT6.js.map} +0 -0
@@ -0,0 +1,107 @@
1
+ import { createRequire as __newcrawCreateRequire } from "node:module";
2
+ const require = __newcrawCreateRequire(import.meta.url);
3
+
4
+ // src/core/workspace.ts
5
+ import fs from "node:fs";
6
+ import { join } from "node:path";
7
+ import { homedir } from "node:os";
8
+ function getHomeDir() {
9
+ return (process.env.HOME ?? process.env.USERPROFILE ?? "").trim() || homedir();
10
+ }
11
+ function getConfigDir() {
12
+ const override = (process.env.NEWCRAW_CONFIG_DIR ?? process.env.CLAUDE_CONFIG_DIR ?? "").trim();
13
+ return override || join(getHomeDir(), ".newcraw");
14
+ }
15
+ function getWorkspaceDir() {
16
+ return join(getConfigDir(), "workspace");
17
+ }
18
+ var IDENTITY_FILENAME = "IDENTITY.md";
19
+ var USER_FILENAME = "USER.md";
20
+ var IDENTITY_TEMPLATE = `# \u667A\u80FD\u4F53\u8EAB\u4EFD
21
+
22
+ - Name: NewCraw
23
+ - Description: \u4E00\u4E2A\u667A\u80FDAI\u52A9\u624B\uFF0C\u64C5\u957F\u7F16\u7A0B\u3001\u7814\u7A76\u3001\u89C4\u5212\u548C\u65E5\u5E38\u4EFB\u52A1
24
+ - Emoji: \u{1F916}
25
+ - Vibe: \u7B80\u6D01\u3001\u4E13\u4E1A\u3001\u4E50\u4E8E\u52A9\u4EBA
26
+ `;
27
+ var USER_TEMPLATE = `# \u7528\u6237\u6863\u6848
28
+
29
+ - Name:
30
+ - Language:
31
+ - Notes:
32
+ `;
33
+ async function writeIfMissing(filePath, content) {
34
+ try {
35
+ await fs.promises.writeFile(filePath, content, { flag: "wx" });
36
+ } catch (err) {
37
+ if (err.code !== "EEXIST") throw err;
38
+ }
39
+ }
40
+ async function ensureWorkspace() {
41
+ const dir = getWorkspaceDir();
42
+ await fs.promises.mkdir(dir, { recursive: true });
43
+ await Promise.all([
44
+ writeIfMissing(join(dir, IDENTITY_FILENAME), IDENTITY_TEMPLATE),
45
+ writeIfMissing(join(dir, USER_FILENAME), USER_TEMPLATE)
46
+ ]);
47
+ return dir;
48
+ }
49
+ async function loadWorkspaceFiles() {
50
+ const dir = getWorkspaceDir();
51
+ const names = [IDENTITY_FILENAME, USER_FILENAME];
52
+ const results = [];
53
+ for (const name of names) {
54
+ const filePath = join(dir, name);
55
+ try {
56
+ const content = await fs.promises.readFile(filePath, "utf-8");
57
+ results.push({ name, path: filePath, content: content.trim(), missing: false });
58
+ } catch {
59
+ results.push({ name, path: filePath, content: "", missing: true });
60
+ }
61
+ }
62
+ return results;
63
+ }
64
+ function parseIdentityMarkdown(content) {
65
+ const identity = {};
66
+ for (const line of content.split(/\r?\n/)) {
67
+ const cleaned = line.trim().replace(/^\s*-\s*/, "");
68
+ const colonIdx = cleaned.indexOf(":");
69
+ if (colonIdx === -1) continue;
70
+ const label = cleaned.slice(0, colonIdx).replace(/[*_#]/g, "").trim().toLowerCase();
71
+ const value = cleaned.slice(colonIdx + 1).replace(/^[*_]+|[*_]+$/g, "").trim();
72
+ if (value) identity[label] = value;
73
+ }
74
+ return identity;
75
+ }
76
+ var _initPromise = null;
77
+ function initWorkspaceIdentity() {
78
+ if (_initPromise) return _initPromise;
79
+ _initPromise = (async () => {
80
+ try {
81
+ await ensureWorkspace();
82
+ const files = await loadWorkspaceFiles();
83
+ const identityFile = files.find((f) => f.name === IDENTITY_FILENAME && !f.missing);
84
+ if (!identityFile) return;
85
+ const parsed = parseIdentityMarkdown(identityFile.content);
86
+ const { setIdentity } = await import("./identity-3KZQQVBG.js");
87
+ const updates = {};
88
+ if (parsed.name) updates.name = parsed.name;
89
+ if (parsed.description) updates.description = parsed.description;
90
+ if (Object.keys(updates).length > 0) {
91
+ setIdentity(updates);
92
+ }
93
+ } catch {
94
+ }
95
+ })();
96
+ return _initPromise;
97
+ }
98
+
99
+ export {
100
+ getWorkspaceDir,
101
+ IDENTITY_FILENAME,
102
+ USER_FILENAME,
103
+ ensureWorkspace,
104
+ loadWorkspaceFiles,
105
+ parseIdentityMarkdown,
106
+ initWorkspaceIdentity
107
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/workspace.ts"],
4
+ "sourcesContent": ["import fs from 'node:fs'\r\nimport { join } from 'node:path'\r\nimport { homedir } from 'node:os'\r\n\r\nfunction getHomeDir(): string {\r\n return (process.env.HOME ?? process.env.USERPROFILE ?? '').trim() || homedir()\r\n}\r\n\r\nfunction getConfigDir(): string {\r\n const override = (process.env.NEWCRAW_CONFIG_DIR ?? process.env.CLAUDE_CONFIG_DIR ?? '').trim()\r\n return override || join(getHomeDir(), '.newcraw')\r\n}\r\n\r\nexport function getWorkspaceDir(): string {\r\n return join(getConfigDir(), 'workspace')\r\n}\r\n\r\nexport const IDENTITY_FILENAME = 'IDENTITY.md'\r\nexport const USER_FILENAME = 'USER.md'\r\n\r\nconst IDENTITY_TEMPLATE = `# \u667A\u80FD\u4F53\u8EAB\u4EFD\r\n\r\n- Name: NewCraw\r\n- Description: \u4E00\u4E2A\u667A\u80FDAI\u52A9\u624B\uFF0C\u64C5\u957F\u7F16\u7A0B\u3001\u7814\u7A76\u3001\u89C4\u5212\u548C\u65E5\u5E38\u4EFB\u52A1\r\n- Emoji: \uD83E\uDD16\r\n- Vibe: \u7B80\u6D01\u3001\u4E13\u4E1A\u3001\u4E50\u4E8E\u52A9\u4EBA\r\n`\r\n\r\nconst USER_TEMPLATE = `# \u7528\u6237\u6863\u6848\r\n\r\n- Name: \r\n- Language: \r\n- Notes: \r\n`\r\n\r\nexport type WorkspaceFile = {\r\n name: string\r\n path: string\r\n content: string\r\n missing: boolean\r\n}\r\n\r\nasync function writeIfMissing(filePath: string, content: string): Promise<void> {\r\n try {\r\n await fs.promises.writeFile(filePath, content, { flag: 'wx' })\r\n } catch (err: any) {\r\n if (err.code !== 'EEXIST') throw err\r\n }\r\n}\r\n\r\nexport async function ensureWorkspace(): Promise<string> {\r\n const dir = getWorkspaceDir()\r\n await fs.promises.mkdir(dir, { recursive: true })\r\n await Promise.all([\r\n writeIfMissing(join(dir, IDENTITY_FILENAME), IDENTITY_TEMPLATE),\r\n writeIfMissing(join(dir, USER_FILENAME), USER_TEMPLATE),\r\n ])\r\n return dir\r\n}\r\n\r\nexport async function loadWorkspaceFiles(): Promise<WorkspaceFile[]> {\r\n const dir = getWorkspaceDir()\r\n const names = [IDENTITY_FILENAME, USER_FILENAME]\r\n const results: WorkspaceFile[] = []\r\n\r\n for (const name of names) {\r\n const filePath = join(dir, name)\r\n try {\r\n const content = await fs.promises.readFile(filePath, 'utf-8')\r\n results.push({ name, path: filePath, content: content.trim(), missing: false })\r\n } catch {\r\n results.push({ name, path: filePath, content: '', missing: true })\r\n }\r\n }\r\n\r\n return results\r\n}\r\n\r\nexport function parseIdentityMarkdown(content: string): Record<string, string> {\r\n const identity: Record<string, string> = {}\r\n for (const line of content.split(/\\r?\\n/)) {\r\n const cleaned = line.trim().replace(/^\\s*-\\s*/, '')\r\n const colonIdx = cleaned.indexOf(':')\r\n if (colonIdx === -1) continue\r\n const label = cleaned.slice(0, colonIdx).replace(/[*_#]/g, '').trim().toLowerCase()\r\n const value = cleaned.slice(colonIdx + 1).replace(/^[*_]+|[*_]+$/g, '').trim()\r\n if (value) identity[label] = value\r\n }\r\n return identity\r\n}\r\n\r\nlet _initPromise: Promise<void> | null = null\r\n\r\n/**\r\n * Reads IDENTITY.md from the workspace and overrides the in-memory agent identity.\r\n * Safe to call multiple times; only runs the actual I/O once.\r\n */\r\nexport function initWorkspaceIdentity(): Promise<void> {\r\n if (_initPromise) return _initPromise\r\n _initPromise = (async () => {\r\n try {\r\n await ensureWorkspace()\r\n const files = await loadWorkspaceFiles()\r\n const identityFile = files.find(f => f.name === IDENTITY_FILENAME && !f.missing)\r\n if (!identityFile) return\r\n\r\n const parsed = parseIdentityMarkdown(identityFile.content)\r\n const { setIdentity } = await import('@core/identity')\r\n const updates: Record<string, string> = {}\r\n if (parsed.name) updates.name = parsed.name\r\n if (parsed.description) updates.description = parsed.description\r\n if (Object.keys(updates).length > 0) {\r\n setIdentity(updates as any)\r\n }\r\n } catch {\r\n // workspace not available \u2014 use defaults\r\n }\r\n })()\r\n return _initPromise\r\n}\r\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -5,16 +5,20 @@ import {
5
5
  setSessionState
6
6
  } from "./chunk-TY3CCSAT.js";
7
7
  import {
8
- getGlobalConfig
9
- } from "./chunk-IIFUDVGS.js";
8
+ getGlobalConfig,
9
+ init_config
10
+ } from "./chunk-ENLHVQCX.js";
10
11
  import {
11
12
  debug,
12
13
  getCurrentRequest,
14
+ init_debugLogger,
13
15
  logAPIError
14
- } from "./chunk-GZTCXXSS.js";
16
+ } from "./chunk-GZ4BEVMZ.js";
15
17
 
16
18
  // src/services/ai/openai.ts
19
+ init_config();
17
20
  import { ProxyAgent, fetch } from "undici";
21
+ init_debugLogger();
18
22
  var RETRY_CONFIG = {
19
23
  BASE_DELAY_MS: 1e3,
20
24
  MAX_DELAY_MS: 32e3,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/services/ai/openai.ts"],
4
4
  "sourcesContent": ["import { OpenAI } from 'openai'\r\nimport { getGlobalConfig, GlobalConfig } from '@utils/config'\r\nimport { ProxyAgent, fetch, Response } from 'undici'\r\nimport { setSessionState, getSessionState } from '@utils/session/sessionState'\r\nimport {\r\n debug as debugLogger,\r\n getCurrentRequest,\r\n logAPIError,\r\n} from '@utils/log/debugLogger'\r\n\r\nconst RETRY_CONFIG = {\r\n BASE_DELAY_MS: 1000,\r\n MAX_DELAY_MS: 32000,\r\n MAX_SERVER_DELAY_MS: 60000,\r\n JITTER_FACTOR: 0.1,\r\n} as const\r\n\r\nfunction getRetryDelay(attempt: number, retryAfter?: string | null): number {\r\n if (retryAfter) {\r\n const retryAfterMs = parseInt(retryAfter) * 1000\r\n if (!isNaN(retryAfterMs) && retryAfterMs > 0) {\r\n return Math.min(retryAfterMs, RETRY_CONFIG.MAX_SERVER_DELAY_MS)\r\n }\r\n }\r\n\r\n const delay = RETRY_CONFIG.BASE_DELAY_MS * Math.pow(2, attempt - 1)\r\n const jitter = Math.random() * RETRY_CONFIG.JITTER_FACTOR * delay\r\n\r\n return Math.min(delay + jitter, RETRY_CONFIG.MAX_DELAY_MS)\r\n}\r\n\r\nfunction abortableDelay(delayMs: number, signal?: AbortSignal): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n if (signal?.aborted) {\r\n reject(new Error('Request was aborted'))\r\n return\r\n }\r\n\r\n const timeoutId = setTimeout(() => {\r\n resolve()\r\n }, delayMs)\r\n\r\n if (signal) {\r\n const abortHandler = () => {\r\n clearTimeout(timeoutId)\r\n reject(new Error('Request was aborted'))\r\n }\r\n signal.addEventListener('abort', abortHandler, { once: true })\r\n }\r\n })\r\n}\r\n\r\nenum ModelErrorType {\r\n MaxLength = '1024',\r\n MaxCompletionTokens = 'max_completion_tokens',\r\n TemperatureRestriction = 'temperature_restriction',\r\n StreamOptions = 'stream_options',\r\n Citations = 'citations',\r\n RateLimit = 'rate_limit',\r\n}\r\n\r\nfunction getModelErrorKey(\r\n baseURL: string,\r\n model: string,\r\n type: ModelErrorType,\r\n): string {\r\n return `${baseURL}:${model}:${type}`\r\n}\r\n\r\nfunction hasModelError(\r\n baseURL: string,\r\n model: string,\r\n type: ModelErrorType,\r\n): boolean {\r\n return !!getSessionState('modelErrors')[\r\n getModelErrorKey(baseURL, model, type)\r\n ]\r\n}\r\n\r\nfunction setModelError(\r\n baseURL: string,\r\n model: string,\r\n type: ModelErrorType,\r\n error: string,\r\n) {\r\n setSessionState('modelErrors', {\r\n [getModelErrorKey(baseURL, model, type)]: error,\r\n })\r\n}\r\n\r\ntype ErrorDetector = (errMsg: string) => boolean\r\ntype ErrorFixer = (\r\n opts: OpenAI.ChatCompletionCreateParams,\r\n) => Promise<void> | void\r\ninterface ErrorHandler {\r\n type: ModelErrorType\r\n detect: ErrorDetector\r\n fix: ErrorFixer\r\n}\r\n\r\nconst GPT5_ERROR_HANDLERS: ErrorHandler[] = [\r\n {\r\n type: ModelErrorType.MaxCompletionTokens,\r\n detect: errMsg => {\r\n const lowerMsg = errMsg.toLowerCase()\r\n return (\r\n (lowerMsg.includes(\"unsupported parameter: 'max_tokens'\") &&\r\n lowerMsg.includes(\"'max_completion_tokens'\")) ||\r\n (lowerMsg.includes('max_tokens') &&\r\n lowerMsg.includes('max_completion_tokens')) ||\r\n (lowerMsg.includes('max_tokens') &&\r\n lowerMsg.includes('not supported')) ||\r\n (lowerMsg.includes('max_tokens') &&\r\n lowerMsg.includes('use max_completion_tokens')) ||\r\n (lowerMsg.includes('invalid parameter') &&\r\n lowerMsg.includes('max_tokens')) ||\r\n (lowerMsg.includes('parameter error') &&\r\n lowerMsg.includes('max_tokens'))\r\n )\r\n },\r\n fix: async opts => {\r\n debugLogger.api('GPT5_FIX_MAX_TOKENS', {\r\n from: opts.max_tokens,\r\n to: opts.max_tokens,\r\n })\r\n if ('max_tokens' in opts) {\r\n opts.max_completion_tokens = opts.max_tokens\r\n delete opts.max_tokens\r\n }\r\n },\r\n },\r\n {\r\n type: ModelErrorType.TemperatureRestriction,\r\n detect: errMsg => {\r\n const lowerMsg = errMsg.toLowerCase()\r\n return (\r\n lowerMsg.includes('temperature') &&\r\n (lowerMsg.includes('only supports') ||\r\n lowerMsg.includes('must be 1') ||\r\n lowerMsg.includes('invalid temperature'))\r\n )\r\n },\r\n fix: async opts => {\r\n debugLogger.api('GPT5_FIX_TEMPERATURE', {\r\n from: opts.temperature,\r\n to: 1,\r\n })\r\n opts.temperature = 1\r\n },\r\n },\r\n]\r\n\r\nconst ERROR_HANDLERS: ErrorHandler[] = [\r\n {\r\n type: ModelErrorType.MaxLength,\r\n detect: errMsg =>\r\n errMsg.includes('Expected a string with maximum length 1024'),\r\n fix: async opts => {\r\n const toolDescriptions = {}\r\n for (const tool of opts.tools || []) {\r\n if (tool.function.description.length <= 1024) continue\r\n let str = ''\r\n let remainder = ''\r\n for (let line of tool.function.description.split('\\n')) {\r\n if (str.length + line.length < 1024) {\r\n str += line + '\\n'\r\n } else {\r\n remainder += line + '\\n'\r\n }\r\n }\r\n\r\n tool.function.description = str\r\n toolDescriptions[tool.function.name] = remainder\r\n }\r\n if (Object.keys(toolDescriptions).length > 0) {\r\n let content = '<additional-tool-usage-instructions>\\n\\n'\r\n for (const [name, description] of Object.entries(toolDescriptions)) {\r\n content += `<${name}>\\n${description}\\n</${name}>\\n\\n`\r\n }\r\n content += '</additional-tool-usage-instructions>'\r\n\r\n for (let i = opts.messages.length - 1; i >= 0; i--) {\r\n if (opts.messages[i].role === 'system') {\r\n opts.messages.splice(i + 1, 0, {\r\n role: 'system',\r\n content,\r\n })\r\n break\r\n }\r\n }\r\n }\r\n },\r\n },\r\n {\r\n type: ModelErrorType.MaxCompletionTokens,\r\n detect: errMsg => errMsg.includes(\"Use 'max_completion_tokens'\"),\r\n fix: async opts => {\r\n opts.max_completion_tokens = opts.max_tokens\r\n delete opts.max_tokens\r\n },\r\n },\r\n {\r\n type: ModelErrorType.StreamOptions,\r\n detect: errMsg => errMsg.includes('stream_options'),\r\n fix: async opts => {\r\n delete opts.stream_options\r\n },\r\n },\r\n {\r\n type: ModelErrorType.Citations,\r\n detect: errMsg =>\r\n errMsg.includes('Extra inputs are not permitted') &&\r\n errMsg.includes('citations'),\r\n fix: async opts => {\r\n if (!opts.messages) return\r\n\r\n for (const message of opts.messages) {\r\n if (!message) continue\r\n\r\n if (Array.isArray(message.content)) {\r\n for (const item of message.content) {\r\n if (item && typeof item === 'object') {\r\n const itemObj = item as unknown as Record<string, unknown>\r\n if ('citations' in itemObj) {\r\n delete itemObj.citations\r\n }\r\n }\r\n }\r\n } else if (message.content && typeof message.content === 'object') {\r\n const contentObj = message.content as unknown as Record<\r\n string,\r\n unknown\r\n >\r\n if ('citations' in contentObj) {\r\n delete contentObj.citations\r\n }\r\n }\r\n }\r\n },\r\n },\r\n]\r\n\r\nfunction isRateLimitError(errMsg: string): boolean {\r\n if (!errMsg) return false\r\n const lowerMsg = errMsg.toLowerCase()\r\n return (\r\n lowerMsg.includes('rate limit') ||\r\n lowerMsg.includes('too many requests') ||\r\n lowerMsg.includes('429')\r\n )\r\n}\r\n\r\ninterface ModelFeatures {\r\n usesMaxCompletionTokens: boolean\r\n supportsResponsesAPI?: boolean\r\n requiresTemperatureOne?: boolean\r\n supportsVerbosityControl?: boolean\r\n supportsCustomTools?: boolean\r\n supportsAllowedTools?: boolean\r\n}\r\n\r\nconst MODEL_FEATURES: Record<string, ModelFeatures> = {\r\n o1: { usesMaxCompletionTokens: true },\r\n 'o1-preview': { usesMaxCompletionTokens: true },\r\n 'o1-mini': { usesMaxCompletionTokens: true },\r\n 'o1-pro': { usesMaxCompletionTokens: true },\r\n 'o3-mini': { usesMaxCompletionTokens: true },\r\n 'gpt-5': {\r\n usesMaxCompletionTokens: true,\r\n supportsResponsesAPI: true,\r\n requiresTemperatureOne: true,\r\n supportsVerbosityControl: true,\r\n supportsCustomTools: true,\r\n supportsAllowedTools: true,\r\n },\r\n 'gpt-5-mini': {\r\n usesMaxCompletionTokens: true,\r\n supportsResponsesAPI: true,\r\n requiresTemperatureOne: true,\r\n supportsVerbosityControl: true,\r\n supportsCustomTools: true,\r\n supportsAllowedTools: true,\r\n },\r\n 'gpt-5-nano': {\r\n usesMaxCompletionTokens: true,\r\n supportsResponsesAPI: true,\r\n requiresTemperatureOne: true,\r\n supportsVerbosityControl: true,\r\n supportsCustomTools: true,\r\n supportsAllowedTools: true,\r\n },\r\n 'gpt-5-chat-latest': {\r\n usesMaxCompletionTokens: true,\r\n supportsResponsesAPI: false,\r\n requiresTemperatureOne: true,\r\n supportsVerbosityControl: true,\r\n },\r\n}\r\n\r\nfunction getModelFeatures(modelName: string): ModelFeatures {\r\n if (!modelName || typeof modelName !== 'string') {\r\n return { usesMaxCompletionTokens: false }\r\n }\r\n\r\n if (MODEL_FEATURES[modelName]) {\r\n return MODEL_FEATURES[modelName]\r\n }\r\n\r\n if (modelName.toLowerCase().includes('gpt-5')) {\r\n return {\r\n usesMaxCompletionTokens: true,\r\n supportsResponsesAPI: true,\r\n requiresTemperatureOne: true,\r\n supportsVerbosityControl: true,\r\n supportsCustomTools: true,\r\n supportsAllowedTools: true,\r\n }\r\n }\r\n\r\n for (const [key, features] of Object.entries(MODEL_FEATURES)) {\r\n if (modelName.includes(key)) {\r\n return features\r\n }\r\n }\r\n\r\n return { usesMaxCompletionTokens: false }\r\n}\r\n\r\nfunction applyModelSpecificTransformations(\r\n opts: OpenAI.ChatCompletionCreateParams,\r\n): void {\r\n if (!opts.model || typeof opts.model !== 'string') {\r\n return\r\n }\r\n\r\n const features = getModelFeatures(opts.model)\r\n const isGPT5 = opts.model.toLowerCase().includes('gpt-5')\r\n\r\n if (isGPT5 || features.usesMaxCompletionTokens) {\r\n if ('max_tokens' in opts && !('max_completion_tokens' in opts)) {\r\n debugLogger.api('OPENAI_TRANSFORM_MAX_TOKENS', {\r\n model: opts.model,\r\n from: opts.max_tokens,\r\n })\r\n opts.max_completion_tokens = opts.max_tokens\r\n delete opts.max_tokens\r\n }\r\n\r\n if (features.requiresTemperatureOne && 'temperature' in opts) {\r\n if (opts.temperature !== 1 && opts.temperature !== undefined) {\r\n debugLogger.api('OPENAI_TRANSFORM_TEMPERATURE', {\r\n model: opts.model,\r\n from: opts.temperature,\r\n to: 1,\r\n })\r\n opts.temperature = 1\r\n }\r\n }\r\n\r\n if (isGPT5) {\r\n delete opts.frequency_penalty\r\n delete opts.presence_penalty\r\n delete opts.logit_bias\r\n delete opts.user\r\n\r\n if (!opts.reasoning_effort && features.supportsVerbosityControl) {\r\n opts.reasoning_effort = 'medium'\r\n }\r\n }\r\n }\r\n\r\n else {\r\n if (\r\n features.usesMaxCompletionTokens &&\r\n 'max_tokens' in opts &&\r\n !('max_completion_tokens' in opts)\r\n ) {\r\n opts.max_completion_tokens = opts.max_tokens\r\n delete opts.max_tokens\r\n }\r\n }\r\n\r\n}\r\n\r\nasync function applyModelErrorFixes(\r\n opts: OpenAI.ChatCompletionCreateParams,\r\n baseURL: string,\r\n) {\r\n const isGPT5 = opts.model.startsWith('gpt-5')\r\n const handlers = isGPT5\r\n ? [...GPT5_ERROR_HANDLERS, ...ERROR_HANDLERS]\r\n : ERROR_HANDLERS\r\n\r\n for (const handler of handlers) {\r\n if (hasModelError(baseURL, opts.model, handler.type)) {\r\n await handler.fix(opts)\r\n return\r\n }\r\n }\r\n}\r\n\r\nasync function tryWithEndpointFallback(\r\n baseURL: string,\r\n opts: OpenAI.ChatCompletionCreateParams,\r\n headers: Record<string, string>,\r\n provider: string,\r\n proxy: any,\r\n signal?: AbortSignal,\r\n): Promise<{ response: Response; endpoint: string }> {\r\n const endpointsToTry = []\r\n\r\n if (provider === 'minimax') {\r\n endpointsToTry.push('/text/chatcompletion_v2', '/chat/completions')\r\n } else {\r\n endpointsToTry.push('/chat/completions')\r\n }\r\n\r\n let lastError = null\r\n\r\n for (const endpoint of endpointsToTry) {\r\n try {\r\n const response = await fetch(`${baseURL}${endpoint}`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(opts.stream ? { ...opts, stream: true } : opts),\r\n dispatcher: proxy,\r\n signal: signal,\r\n })\r\n\r\n if (response.ok) {\r\n return { response, endpoint }\r\n }\r\n\r\n if (response.status === 404 && endpointsToTry.length > 1) {\r\n debugLogger.api('OPENAI_ENDPOINT_FALLBACK', {\r\n endpoint,\r\n status: 404,\r\n reason: 'not_found',\r\n })\r\n continue\r\n }\r\n\r\n return { response, endpoint }\r\n } catch (error) {\r\n lastError = error\r\n if (endpointsToTry.indexOf(endpoint) < endpointsToTry.length - 1) {\r\n debugLogger.api('OPENAI_ENDPOINT_FALLBACK', {\r\n endpoint,\r\n reason: 'network_error',\r\n error: error instanceof Error ? error.message : String(error),\r\n })\r\n continue\r\n }\r\n }\r\n }\r\n\r\n throw lastError || new Error('All endpoints failed')\r\n}\r\n\r\nexport {\r\n getGPT5CompletionWithProfile,\r\n getModelFeatures,\r\n applyModelSpecificTransformations,\r\n}\r\n\r\nexport async function getCompletionWithProfile(\r\n modelProfile: any,\r\n opts: OpenAI.ChatCompletionCreateParams,\r\n attempt: number = 0,\r\n maxAttempts: number = 10,\r\n signal?: AbortSignal,\r\n): Promise<OpenAI.ChatCompletion | AsyncIterable<OpenAI.ChatCompletionChunk>> {\r\n if (attempt >= maxAttempts) {\r\n throw new Error('Max attempts reached')\r\n }\r\n\r\n const provider = modelProfile?.provider || 'anthropic'\r\n const baseURL = modelProfile?.baseURL\r\n const apiKey = modelProfile?.apiKey\r\n const proxy = getGlobalConfig().proxy\r\n ? new ProxyAgent(getGlobalConfig().proxy)\r\n : undefined\r\n\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n }\r\n\r\n if (apiKey) {\r\n if (provider === 'azure') {\r\n headers['api-key'] = apiKey\r\n } else {\r\n headers['Authorization'] = `Bearer ${apiKey}`\r\n }\r\n }\r\n\r\n applyModelSpecificTransformations(opts)\r\n await applyModelErrorFixes(opts, baseURL || '')\r\n\r\n debugLogger.api('OPENAI_API_CALL_START', {\r\n endpoint: baseURL || 'DEFAULT_OPENAI',\r\n model: opts.model,\r\n provider,\r\n apiKeyConfigured: !!apiKey,\r\n apiKeyPrefix: apiKey ? apiKey.substring(0, 8) : null,\r\n maxTokens: opts.max_tokens,\r\n temperature: opts.temperature,\r\n messageCount: opts.messages?.length || 0,\r\n streamMode: opts.stream,\r\n timestamp: new Date().toISOString(),\r\n modelProfileModelName: modelProfile?.modelName,\r\n modelProfileName: modelProfile?.name,\r\n })\r\n\r\n opts.messages = opts.messages.map(msg => {\r\n if (msg.role === 'tool') {\r\n if (Array.isArray(msg.content)) {\r\n return {\r\n ...msg,\r\n content:\r\n msg.content\r\n .map(c => c.text || '')\r\n .filter(Boolean)\r\n .join('\\n\\n') || '(empty content)',\r\n }\r\n } else if (typeof msg.content !== 'string') {\r\n return {\r\n ...msg,\r\n content:\r\n typeof msg.content === 'undefined'\r\n ? '(empty content)'\r\n : JSON.stringify(msg.content),\r\n }\r\n }\r\n }\r\n return msg\r\n })\r\n\r\n const azureApiVersion = '2024-06-01'\r\n let endpoint = '/chat/completions'\r\n\r\n if (provider === 'azure') {\r\n endpoint = `/chat/completions?api-version=${azureApiVersion}`\r\n } else if (provider === 'minimax') {\r\n endpoint = '/text/chatcompletion_v2'\r\n }\r\n\r\n try {\r\n if (opts.stream) {\r\n const isOpenAICompatible = [\r\n 'minimax',\r\n 'kimi',\r\n 'deepseek',\r\n 'siliconflow',\r\n 'qwen',\r\n 'glm',\r\n 'glm-coding',\r\n 'baidu-qianfan',\r\n 'openai',\r\n 'mistral',\r\n 'xai',\r\n 'groq',\r\n 'custom-openai',\r\n ].includes(provider)\r\n\r\n let response: Response\r\n let usedEndpoint: string\r\n\r\n if (isOpenAICompatible && provider !== 'azure') {\r\n const result = await tryWithEndpointFallback(\r\n baseURL,\r\n opts,\r\n headers,\r\n provider,\r\n proxy,\r\n signal,\r\n )\r\n response = result.response\r\n usedEndpoint = result.endpoint\r\n } else {\r\n response = await fetch(`${baseURL}${endpoint}`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify({ ...opts, stream: true }),\r\n dispatcher: proxy,\r\n signal: signal,\r\n })\r\n usedEndpoint = endpoint\r\n }\r\n\r\n if (!response.ok) {\r\n if (signal?.aborted) {\r\n throw new Error('Request cancelled by user')\r\n }\r\n\r\n try {\r\n const errorData = await response.json()\r\n const hasError = (\r\n data: unknown,\r\n ): data is { error?: { message?: string }; message?: string } => {\r\n return typeof data === 'object' && data !== null\r\n }\r\n const errorMessage = hasError(errorData)\r\n ? errorData.error?.message ||\r\n errorData.message ||\r\n `HTTP ${response.status}`\r\n : `HTTP ${response.status}`\r\n\r\n const isGPT5 = opts.model.startsWith('gpt-5')\r\n const handlers = isGPT5\r\n ? [...GPT5_ERROR_HANDLERS, ...ERROR_HANDLERS]\r\n : ERROR_HANDLERS\r\n\r\n for (const handler of handlers) {\r\n if (handler.detect(errorMessage)) {\r\n debugLogger.api('OPENAI_MODEL_ERROR_DETECTED', {\r\n model: opts.model,\r\n type: handler.type,\r\n errorMessage,\r\n status: response.status,\r\n })\r\n\r\n setModelError(\r\n baseURL || '',\r\n opts.model,\r\n handler.type,\r\n errorMessage,\r\n )\r\n\r\n await handler.fix(opts)\r\n debugLogger.api('OPENAI_MODEL_ERROR_FIXED', {\r\n model: opts.model,\r\n type: handler.type,\r\n })\r\n\r\n return getCompletionWithProfile(\r\n modelProfile,\r\n opts,\r\n attempt + 1,\r\n maxAttempts,\r\n signal,\r\n )\r\n }\r\n }\r\n\r\n debugLogger.warn('OPENAI_API_ERROR_UNHANDLED', {\r\n model: opts.model,\r\n status: response.status,\r\n errorMessage,\r\n })\r\n\r\n logAPIError({\r\n model: opts.model,\r\n endpoint: `${baseURL}${endpoint}`,\r\n status: response.status,\r\n error: errorMessage,\r\n request: opts,\r\n response: errorData,\r\n provider: provider,\r\n })\r\n } catch (parseError) {\r\n debugLogger.warn('OPENAI_API_ERROR_PARSE_FAILED', {\r\n model: opts.model,\r\n status: response.status,\r\n error: parseError instanceof Error ? parseError.message : String(parseError),\r\n })\r\n\r\n logAPIError({\r\n model: opts.model,\r\n endpoint: `${baseURL}${endpoint}`,\r\n status: response.status,\r\n error: `Could not parse error response: ${parseError.message}`,\r\n request: opts,\r\n response: { parseError: parseError.message },\r\n provider: provider,\r\n })\r\n }\r\n\r\n const delayMs = getRetryDelay(attempt)\r\n debugLogger.warn('OPENAI_API_RETRY', {\r\n model: opts.model,\r\n status: response.status,\r\n attempt: attempt + 1,\r\n maxAttempts,\r\n delayMs,\r\n })\r\n try {\r\n await abortableDelay(delayMs, signal)\r\n } catch (error) {\r\n if (error.message === 'Request was aborted') {\r\n throw new Error('Request cancelled by user')\r\n }\r\n throw error\r\n }\r\n return getCompletionWithProfile(\r\n modelProfile,\r\n opts,\r\n attempt + 1,\r\n maxAttempts,\r\n signal,\r\n )\r\n }\r\n\r\n const stream = createStreamProcessor(response.body as any, signal)\r\n return stream\r\n }\r\n\r\n const isOpenAICompatible = [\r\n 'minimax',\r\n 'kimi',\r\n 'deepseek',\r\n 'siliconflow',\r\n 'qwen',\r\n 'glm',\r\n 'baidu-qianfan',\r\n 'openai',\r\n 'mistral',\r\n 'xai',\r\n 'groq',\r\n 'custom-openai',\r\n ].includes(provider)\r\n\r\n let response: Response\r\n let usedEndpoint: string\r\n\r\n if (isOpenAICompatible && provider !== 'azure') {\r\n const result = await tryWithEndpointFallback(\r\n baseURL,\r\n opts,\r\n headers,\r\n provider,\r\n proxy,\r\n signal,\r\n )\r\n response = result.response\r\n usedEndpoint = result.endpoint\r\n } else {\r\n response = await fetch(`${baseURL}${endpoint}`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(opts),\r\n dispatcher: proxy,\r\n signal: signal,\r\n })\r\n usedEndpoint = endpoint\r\n }\r\n\r\n if (!response.ok) {\r\n if (signal?.aborted) {\r\n throw new Error('Request cancelled by user')\r\n }\r\n\r\n try {\r\n const errorData = await response.json()\r\n const hasError = (\r\n data: unknown,\r\n ): data is { error?: { message?: string }; message?: string } => {\r\n return typeof data === 'object' && data !== null\r\n }\r\n const errorMessage = hasError(errorData)\r\n ? errorData.error?.message ||\r\n errorData.message ||\r\n `HTTP ${response.status}`\r\n : `HTTP ${response.status}`\r\n\r\n const isGPT5 = opts.model.startsWith('gpt-5')\r\n const handlers = isGPT5\r\n ? [...GPT5_ERROR_HANDLERS, ...ERROR_HANDLERS]\r\n : ERROR_HANDLERS\r\n\r\n for (const handler of handlers) {\r\n if (handler.detect(errorMessage)) {\r\n debugLogger.api('OPENAI_MODEL_ERROR_DETECTED', {\r\n model: opts.model,\r\n type: handler.type,\r\n errorMessage,\r\n status: response.status,\r\n })\r\n\r\n setModelError(baseURL || '', opts.model, handler.type, errorMessage)\r\n\r\n await handler.fix(opts)\r\n debugLogger.api('OPENAI_MODEL_ERROR_FIXED', {\r\n model: opts.model,\r\n type: handler.type,\r\n })\r\n\r\n return getCompletionWithProfile(\r\n modelProfile,\r\n opts,\r\n attempt + 1,\r\n maxAttempts,\r\n signal,\r\n )\r\n }\r\n }\r\n\r\n debugLogger.warn('OPENAI_API_ERROR_UNHANDLED', {\r\n model: opts.model,\r\n status: response.status,\r\n errorMessage,\r\n })\r\n } catch (parseError) {\r\n debugLogger.warn('OPENAI_API_ERROR_PARSE_FAILED', {\r\n model: opts.model,\r\n status: response.status,\r\n error: parseError instanceof Error ? parseError.message : String(parseError),\r\n })\r\n }\r\n\r\n const delayMs = getRetryDelay(attempt)\r\n debugLogger.warn('OPENAI_API_RETRY', {\r\n model: opts.model,\r\n status: response.status,\r\n attempt: attempt + 1,\r\n maxAttempts,\r\n delayMs,\r\n })\r\n try {\r\n await abortableDelay(delayMs, signal)\r\n } catch (error) {\r\n if (error.message === 'Request was aborted') {\r\n throw new Error('Request cancelled by user')\r\n }\r\n throw error\r\n }\r\n return getCompletionWithProfile(\r\n modelProfile,\r\n opts,\r\n attempt + 1,\r\n maxAttempts,\r\n signal,\r\n )\r\n }\r\n\r\n const responseData = (await response.json()) as OpenAI.ChatCompletion\r\n return responseData\r\n } catch (error) {\r\n if (signal?.aborted) {\r\n throw new Error('Request cancelled by user')\r\n }\r\n\r\n if (attempt < maxAttempts) {\r\n if (signal?.aborted) {\r\n throw new Error('Request cancelled by user')\r\n }\r\n\r\n const delayMs = getRetryDelay(attempt)\r\n debugLogger.warn('OPENAI_NETWORK_RETRY', {\r\n model: opts.model,\r\n attempt: attempt + 1,\r\n maxAttempts,\r\n delayMs,\r\n error: error instanceof Error ? error.message : String(error),\r\n })\r\n try {\r\n await abortableDelay(delayMs, signal)\r\n } catch (error) {\r\n if (error.message === 'Request was aborted') {\r\n throw new Error('Request cancelled by user')\r\n }\r\n throw error\r\n }\r\n return getCompletionWithProfile(\r\n modelProfile,\r\n opts,\r\n attempt + 1,\r\n maxAttempts,\r\n signal,\r\n )\r\n }\r\n throw error\r\n }\r\n}\r\n\r\nexport function createStreamProcessor(\r\n stream: any,\r\n signal?: AbortSignal,\r\n): AsyncGenerator<OpenAI.ChatCompletionChunk, void, unknown> {\r\n if (!stream) {\r\n throw new Error('Stream is null or undefined')\r\n }\r\n\r\n return (async function* () {\r\n const reader = stream.getReader()\r\n const decoder = new TextDecoder('utf-8')\r\n let buffer = ''\r\n\r\n try {\r\n while (true) {\r\n if (signal?.aborted) {\r\n break\r\n }\r\n\r\n let readResult\r\n try {\r\n readResult = await reader.read()\r\n } catch (e) {\r\n if (signal?.aborted) {\r\n break\r\n }\r\n debugLogger.warn('OPENAI_STREAM_READ_ERROR', {\r\n error: e instanceof Error ? e.message : String(e),\r\n })\r\n break\r\n }\r\n\r\n const { done, value } = readResult\r\n if (done) {\r\n break\r\n }\r\n\r\n const chunk = decoder.decode(value, { stream: true })\r\n buffer += chunk\r\n\r\n let lineEnd = buffer.indexOf('\\n')\r\n while (lineEnd !== -1) {\r\n const line = buffer.substring(0, lineEnd).trim()\r\n buffer = buffer.substring(lineEnd + 1)\r\n\r\n if (line === 'data: [DONE]') {\r\n continue\r\n }\r\n\r\n if (line.startsWith('data: ')) {\r\n const data = line.slice(6).trim()\r\n if (!data) continue\r\n\r\n try {\r\n const parsed = JSON.parse(data) as OpenAI.ChatCompletionChunk\r\n yield parsed\r\n } catch (e) {\r\n debugLogger.warn('OPENAI_STREAM_JSON_PARSE_ERROR', {\r\n data,\r\n error: e instanceof Error ? e.message : String(e),\r\n })\r\n }\r\n }\r\n\r\n lineEnd = buffer.indexOf('\\n')\r\n }\r\n }\r\n\r\n if (buffer.trim()) {\r\n const lines = buffer.trim().split('\\n')\r\n for (const line of lines) {\r\n if (line.startsWith('data: ') && line !== 'data: [DONE]') {\r\n const data = line.slice(6).trim()\r\n if (!data) continue\r\n\r\n try {\r\n const parsed = JSON.parse(data) as OpenAI.ChatCompletionChunk\r\n yield parsed\r\n } catch (e) {\r\n debugLogger.warn('OPENAI_STREAM_FINAL_JSON_PARSE_ERROR', {\r\n data,\r\n error: e instanceof Error ? e.message : String(e),\r\n })\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n debugLogger.warn('OPENAI_STREAM_UNEXPECTED_ERROR', {\r\n error: e instanceof Error ? e.message : String(e),\r\n })\r\n } finally {\r\n try {\r\n reader.releaseLock()\r\n } catch (e) {\r\n debugLogger.warn('OPENAI_STREAM_RELEASE_LOCK_ERROR', {\r\n error: e instanceof Error ? e.message : String(e),\r\n })\r\n }\r\n }\r\n })()\r\n}\r\n\r\nexport function streamCompletion(\r\n stream: any,\r\n signal?: AbortSignal,\r\n): AsyncGenerator<OpenAI.ChatCompletionChunk, void, unknown> {\r\n return createStreamProcessor(stream, signal)\r\n}\r\n\r\nexport async function callGPT5ResponsesAPI(\r\n modelProfile: any,\r\n request: any,\r\n signal?: AbortSignal,\r\n): Promise<any> {\r\n const baseURL = modelProfile?.baseURL || 'https://api.openai.com/v1'\r\n const apiKey = modelProfile?.apiKey\r\n const proxy = getGlobalConfig().proxy\r\n ? new ProxyAgent(getGlobalConfig().proxy)\r\n : undefined\r\n\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${apiKey}`,\r\n }\r\n\r\n const responsesParams = request\r\n\r\n try {\r\n const response = await fetch(`${baseURL}/responses`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(responsesParams),\r\n dispatcher: proxy,\r\n signal: signal,\r\n })\r\n\r\n if (!response.ok) {\r\n const errorText = await response.text()\r\n throw new Error(\r\n `GPT-5 Responses API error: ${response.status} ${response.statusText} - ${errorText}`,\r\n )\r\n }\r\n\r\n return response\r\n } catch (error) {\r\n if (signal?.aborted) {\r\n throw new Error('Request cancelled by user')\r\n }\r\n throw error\r\n }\r\n}\r\n\r\nfunction convertResponsesAPIToChatCompletion(responsesData: any): any {\r\n let outputText = responsesData.output_text || ''\r\n const usage = responsesData.usage || {}\r\n\r\n if (responsesData.output && Array.isArray(responsesData.output)) {\r\n const reasoningItems = responsesData.output.filter(\r\n item => item.type === 'reasoning' && item.summary,\r\n )\r\n const messageItems = responsesData.output.filter(\r\n item => item.type === 'message',\r\n )\r\n\r\n if (reasoningItems.length > 0 && messageItems.length > 0) {\r\n const reasoningSummary = reasoningItems\r\n .map(item => item.summary?.map(s => s.text).join('\\n'))\r\n .filter(Boolean)\r\n .join('\\n\\n')\r\n\r\n const mainContent = messageItems\r\n .map(item => item.content?.map(c => c.text).join('\\n'))\r\n .filter(Boolean)\r\n .join('\\n\\n')\r\n\r\n if (reasoningSummary) {\r\n outputText = `**\uD83E\uDDE0 Reasoning Process:**\\n${reasoningSummary}\\n\\n**\uD83D\uDCDD Response:**\\n${mainContent}`\r\n } else {\r\n outputText = mainContent\r\n }\r\n }\r\n }\r\n\r\n return {\r\n id: responsesData.id || `chatcmpl-${Date.now()}`,\r\n object: 'chat.completion',\r\n created: Math.floor(Date.now() / 1000),\r\n model: responsesData.model || '',\r\n choices: [\r\n {\r\n index: 0,\r\n message: {\r\n role: 'assistant',\r\n content: outputText,\r\n ...(responsesData.reasoning && {\r\n reasoning: {\r\n effort: responsesData.reasoning.effort,\r\n summary: responsesData.reasoning.summary,\r\n },\r\n }),\r\n },\r\n finish_reason: responsesData.status === 'completed' ? 'stop' : 'length',\r\n },\r\n ],\r\n usage: {\r\n prompt_tokens: usage.input_tokens || 0,\r\n completion_tokens: usage.output_tokens || 0,\r\n total_tokens: (usage.input_tokens || 0) + (usage.output_tokens || 0),\r\n prompt_tokens_details: {\r\n cached_tokens: usage.input_tokens_details?.cached_tokens || 0,\r\n },\r\n completion_tokens_details: {\r\n reasoning_tokens: usage.output_tokens_details?.reasoning_tokens || 0,\r\n },\r\n },\r\n }\r\n}\r\n\r\nasync function getGPT5CompletionWithProfile(\r\n modelProfile: any,\r\n opts: OpenAI.ChatCompletionCreateParams,\r\n attempt: number = 0,\r\n maxAttempts: number = 10,\r\n signal?: AbortSignal,\r\n): Promise<OpenAI.ChatCompletion | AsyncIterable<OpenAI.ChatCompletionChunk>> {\r\n const features = getModelFeatures(opts.model)\r\n const isOfficialOpenAI =\r\n !modelProfile.baseURL || modelProfile.baseURL.includes('api.openai.com')\r\n\r\n if (!isOfficialOpenAI) {\r\n debugLogger.api('GPT5_THIRD_PARTY_PROVIDER', {\r\n model: opts.model,\r\n baseURL: modelProfile.baseURL,\r\n provider: modelProfile.provider,\r\n supportsResponsesAPI: features.supportsResponsesAPI,\r\n requestId: getCurrentRequest()?.id,\r\n })\r\n\r\n debugLogger.api('GPT5_PROVIDER_THIRD_PARTY_NOTICE', {\r\n model: opts.model,\r\n provider: modelProfile.provider,\r\n baseURL: modelProfile.baseURL,\r\n })\r\n\r\n if (modelProfile.provider === 'azure') {\r\n delete opts.reasoning_effort\r\n } else if (modelProfile.provider === 'custom-openai') {\r\n debugLogger.api('GPT5_CUSTOM_PROVIDER_OPTIMIZATIONS', {\r\n model: opts.model,\r\n provider: modelProfile.provider,\r\n })\r\n }\r\n }\r\n\r\n else if (opts.stream) {\r\n debugLogger.api('GPT5_STREAMING_MODE', {\r\n model: opts.model,\r\n baseURL: modelProfile.baseURL || 'official',\r\n reason: 'responses_api_no_streaming',\r\n requestId: getCurrentRequest()?.id,\r\n })\r\n\r\n debugLogger.api('GPT5_STREAMING_FALLBACK_TO_CHAT_COMPLETIONS', {\r\n model: opts.model,\r\n reason: 'responses_api_no_streaming',\r\n })\r\n }\r\n\r\n debugLogger.api('USING_CHAT_COMPLETIONS_FOR_GPT5', {\r\n model: opts.model,\r\n baseURL: modelProfile.baseURL || 'official',\r\n provider: modelProfile.provider,\r\n reason: isOfficialOpenAI ? 'streaming_or_fallback' : 'third_party_provider',\r\n requestId: getCurrentRequest()?.id,\r\n })\r\n\r\n return await getCompletionWithProfile(\r\n modelProfile,\r\n opts,\r\n attempt,\r\n maxAttempts,\r\n signal,\r\n )\r\n}\r\n\r\nexport async function fetchCustomModels(\r\n baseURL: string,\r\n apiKey: string,\r\n): Promise<any[]> {\r\n try {\r\n const hasVersionNumber = /\\/v\\d+/.test(baseURL)\r\n const cleanBaseURL = baseURL.replace(/\\/+$/, '')\r\n const modelsURL = hasVersionNumber\r\n ? `${cleanBaseURL}/models`\r\n : `${cleanBaseURL}/v1/models`\r\n\r\n const response = await fetch(modelsURL, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${apiKey}`,\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n\r\n if (!response.ok) {\r\n if (response.status === 401) {\r\n throw new Error(\r\n 'Invalid API key. Please check your API key and try again.',\r\n )\r\n } else if (response.status === 403) {\r\n throw new Error(\r\n 'API key does not have permission to access models. Please check your API key permissions.',\r\n )\r\n } else if (response.status === 404) {\r\n throw new Error(\r\n 'API endpoint not found. Please check if the base URL is correct and supports the /models endpoint.',\r\n )\r\n } else if (response.status === 429) {\r\n throw new Error(\r\n 'Too many requests. Please wait a moment and try again.',\r\n )\r\n } else if (response.status >= 500) {\r\n throw new Error(\r\n 'API service is temporarily unavailable. Please try again later.',\r\n )\r\n } else {\r\n throw new Error(\r\n `Unable to connect to API (${response.status}). Please check your base URL, API key, and internet connection.`,\r\n )\r\n }\r\n }\r\n\r\n const data = await response.json()\r\n\r\n const hasDataArray = (obj: unknown): obj is { data: unknown[] } => {\r\n return (\r\n typeof obj === 'object' &&\r\n obj !== null &&\r\n 'data' in obj &&\r\n Array.isArray((obj as any).data)\r\n )\r\n }\r\n\r\n const hasModelsArray = (obj: unknown): obj is { models: unknown[] } => {\r\n return (\r\n typeof obj === 'object' &&\r\n obj !== null &&\r\n 'models' in obj &&\r\n Array.isArray((obj as any).models)\r\n )\r\n }\r\n\r\n let models = []\r\n\r\n if (hasDataArray(data)) {\r\n models = data.data\r\n } else if (Array.isArray(data)) {\r\n models = data\r\n } else if (hasModelsArray(data)) {\r\n models = data.models\r\n } else {\r\n throw new Error(\r\n 'API returned unexpected response format. Expected an array of models or an object with a \"data\" or \"models\" array.',\r\n )\r\n }\r\n\r\n if (!Array.isArray(models)) {\r\n throw new Error('API response format error: models data is not an array.')\r\n }\r\n\r\n return models\r\n } catch (error) {\r\n if (\r\n error instanceof Error &&\r\n (error.message.includes('API key') ||\r\n error.message.includes('API endpoint') ||\r\n error.message.includes('API service') ||\r\n error.message.includes('response format'))\r\n ) {\r\n throw error\r\n }\r\n\r\n debugLogger.warn('CUSTOM_API_MODELS_FETCH_FAILED', {\r\n baseURL,\r\n error: error instanceof Error ? error.message : String(error),\r\n })\r\n\r\n if (error instanceof Error && error.message.includes('fetch')) {\r\n throw new Error(\r\n 'Unable to connect to the API. Please check the base URL and your internet connection.',\r\n )\r\n }\r\n\r\n throw new Error(\r\n 'Failed to fetch models from custom API. Please check your configuration and try again.',\r\n )\r\n }\r\n}\r\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["isOpenAICompatible", "response", "usedEndpoint", "error"]
7
7
  }
@@ -0,0 +1,35 @@
1
+ import { createRequire as __newcrawCreateRequire } from "node:module";
2
+ const require = __newcrawCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __esm = (fn, res) => function __init() {
14
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
+ };
16
+ var __export = (target, all) => {
17
+ for (var name in all)
18
+ __defProp(target, name, { get: all[name], enumerable: true });
19
+ };
20
+ var __copyProps = (to, from, except, desc) => {
21
+ if (from && typeof from === "object" || typeof from === "function") {
22
+ for (let key of __getOwnPropNames(from))
23
+ if (!__hasOwnProp.call(to, key) && key !== except)
24
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
+ }
26
+ return to;
27
+ };
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ export {
31
+ __require,
32
+ __esm,
33
+ __export,
34
+ __toCommonJS
35
+ };