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
@@ -1,15 +1,25 @@
1
1
  import { createRequire as __newcrawCreateRequire } from "node:module";
2
2
  const require = __newcrawCreateRequire(import.meta.url);
3
3
  import {
4
- PRODUCT_NAME,
5
4
  execFileNoThrow,
5
+ init_execFileNoThrow,
6
+ init_log,
6
7
  logError
7
- } from "./chunk-IM33F5CM.js";
8
+ } from "./chunk-BMJ5XGFR.js";
9
+ import {
10
+ PRODUCT_NAME,
11
+ init_product
12
+ } from "./chunk-UYWZQVH5.js";
8
13
  import {
9
- MACRO
10
- } from "./chunk-ZYSVG4X3.js";
14
+ MACRO,
15
+ init_macros
16
+ } from "./chunk-NW7WSLD5.js";
11
17
 
12
18
  // src/utils/session/autoUpdater.ts
19
+ init_execFileNoThrow();
20
+ init_log();
21
+ init_macros();
22
+ init_product();
13
23
  async function getSemver() {
14
24
  const mod = await import("semver");
15
25
  return mod?.default ?? mod;
@@ -82,7 +92,7 @@ async function checkAndNotifyUpdate() {
82
92
  const [
83
93
  { isAutoUpdaterDisabled, getGlobalConfig, saveGlobalConfig },
84
94
  { env }
85
- ] = await Promise.all([import("./config-GTJWCNPF.js"), import("./env-37BAP7QF.js")]);
95
+ ] = await Promise.all([import("./config-5RS7HDIK.js"), import("./env-WIM2DQ4L.js")]);
86
96
  if (await isAutoUpdaterDisabled()) return;
87
97
  if (await env.getIsDocker()) return;
88
98
  if (!await env.hasInternetAccess()) return;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/utils/session/autoUpdater.ts"],
4
4
  "sourcesContent": ["import { execFileNoThrow } from '@utils/system/execFileNoThrow'\r\nimport { logError } from '@utils/log'\r\n\r\nimport { MACRO } from '@constants/macros'\r\nimport { PRODUCT_NAME } from '@constants/product'\r\n\r\nasync function getSemver() {\r\n const mod: any = await import('semver')\r\n return (mod?.default ?? mod) as {\r\n lt: (a: string, b: string) => boolean\r\n gt: (a: string, b: string) => boolean\r\n }\r\n}\r\n\r\nexport type VersionConfig = {\r\n minVersion: string\r\n}\r\n\r\nexport async function assertMinVersion(): Promise<void> {\r\n try {\r\n const versionConfig: VersionConfig = { minVersion: '0.0.0' }\r\n if (versionConfig.minVersion) {\r\n const { lt } = await getSemver()\r\n if (!lt(MACRO.VERSION, versionConfig.minVersion)) return\r\n\r\n const suggestions = await getUpdateCommandSuggestions()\r\n process.stderr.write(\r\n `Your ${PRODUCT_NAME} version ${MACRO.VERSION} is below the minimum supported ${versionConfig.minVersion}.\\n` +\r\n 'Update using one of:\\n' +\r\n suggestions.map(c => ` ${c}`).join('\\n') +\r\n '\\n',\r\n )\r\n process.exit(1)\r\n }\r\n } catch (error) {\r\n logError(`Error checking minimum version: ${error}`)\r\n }\r\n}\r\n\r\nexport async function getLatestVersion(): Promise<string | null> {\r\n try {\r\n const abortController = new AbortController()\r\n setTimeout(() => abortController.abort(), 5000)\r\n const result = await execFileNoThrow(\r\n 'npm',\r\n ['view', MACRO.PACKAGE_URL, 'version'],\r\n abortController.signal,\r\n )\r\n if (result.code === 0) {\r\n const v = result.stdout.trim()\r\n if (v) return v\r\n }\r\n } catch {}\r\n\r\n\t try {\r\n\t const controller = new AbortController()\r\n\t const timer = setTimeout(() => controller.abort(), 5000)\r\n\t const res = await fetch(\r\n\t `https://registry.npmjs.org/${encodeURIComponent(MACRO.PACKAGE_URL)}`,\r\n\t {\r\n\t method: 'GET',\r\n\t headers: {\r\n\t Accept: 'application/vnd.npm.install-v1+json',\r\n\t 'User-Agent': `${PRODUCT_NAME}/${MACRO.VERSION}`,\r\n\t },\r\n\t signal: controller.signal,\r\n\t },\r\n\t )\r\n\t clearTimeout(timer)\r\n\t if (!res.ok) return null\r\n\t const json: any = await res.json().catch(() => null)\r\n\t const latest = json && json['dist-tags'] && json['dist-tags'].latest\r\n\t return typeof latest === 'string' ? latest : null\r\n\t } catch {\r\n\t return null\r\n\t }\r\n\t}\r\n\r\nexport async function getUpdateCommandSuggestions(): Promise<string[]> {\r\n return [\r\n `bun add -g ${MACRO.PACKAGE_URL}@latest`,\r\n `npm install -g ${MACRO.PACKAGE_URL}@latest`,\r\n ]\r\n}\r\n\r\nexport async function checkAndNotifyUpdate(): Promise<void> {\r\n try {\r\n if (process.env.NODE_ENV === 'test') return\r\n const [\r\n { isAutoUpdaterDisabled, getGlobalConfig, saveGlobalConfig },\r\n { env },\r\n ] = await Promise.all([import('@utils/config'), import('@utils/config/env')])\r\n if (await isAutoUpdaterDisabled()) return\r\n if (await env.getIsDocker()) return\r\n if (!(await env.hasInternetAccess())) return\r\n\r\n const config: any = getGlobalConfig()\r\n const now = Date.now()\r\n const DAY_MS = 24 * 60 * 60 * 1000\r\n const lastCheck = Number(config.lastUpdateCheckAt || 0)\r\n if (lastCheck && now - lastCheck < DAY_MS) return\r\n\r\n const latest = await getLatestVersion()\r\n if (!latest) {\r\n saveGlobalConfig({ ...config, lastUpdateCheckAt: now })\r\n return\r\n }\r\n\r\n const { gt } = await getSemver()\r\n if (gt(latest, MACRO.VERSION)) {\r\n saveGlobalConfig({\r\n ...config,\r\n lastUpdateCheckAt: now,\r\n lastSuggestedVersion: latest,\r\n })\r\n const suggestions = await getUpdateCommandSuggestions()\r\n process.stderr.write(\r\n [\r\n `New version available: ${latest} (current: ${MACRO.VERSION})`,\r\n 'Run the following command to update:',\r\n ...suggestions.map(command => ` ${command}`),\r\n '',\r\n ].join('\\n'),\r\n )\r\n } else {\r\n saveGlobalConfig({ ...config, lastUpdateCheckAt: now })\r\n }\r\n } catch (error) {\r\n logError(`update-notify: ${error}`)\r\n }\r\n}\r\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,65 @@
1
+ import { createRequire as __newcrawCreateRequire } from "node:module";
2
+ const require = __newcrawCreateRequire(import.meta.url);
3
+ import {
4
+ getModelManager,
5
+ init_model
6
+ } from "./chunk-KNSAVNMD.js";
7
+
8
+ // src/utils/model/thinking.ts
9
+ init_model();
10
+ import { last } from "lodash-es";
11
+ async function getMaxThinkingTokens(messages) {
12
+ if (process.env.MAX_THINKING_TOKENS) {
13
+ const tokens = parseInt(process.env.MAX_THINKING_TOKENS, 10);
14
+ return tokens;
15
+ }
16
+ const lastMessage = last(messages);
17
+ if (lastMessage?.type !== "user" || typeof lastMessage.message.content !== "string") {
18
+ return 0;
19
+ }
20
+ const content = lastMessage.message.content.toLowerCase();
21
+ if (content.includes("think harder") || content.includes("think intensely") || content.includes("think longer") || content.includes("think really hard") || content.includes("think super hard") || content.includes("think very hard") || content.includes("ultrathink")) {
22
+ return 32e3 - 1;
23
+ }
24
+ if (content.includes("think about it") || content.includes("think a lot") || content.includes("think hard") || content.includes("think more") || content.includes("megathink")) {
25
+ return 1e4;
26
+ }
27
+ if (content.includes("think")) {
28
+ return 4e3;
29
+ }
30
+ return 0;
31
+ }
32
+ async function getReasoningEffort(modelProfile, messages) {
33
+ const thinkingTokens = await getMaxThinkingTokens(messages);
34
+ let reasoningEffort;
35
+ if (modelProfile?.reasoningEffort) {
36
+ const effort2 = modelProfile.reasoningEffort;
37
+ reasoningEffort = effort2 === "high" || effort2 === "medium" || effort2 === "low" ? effort2 : effort2 === "minimal" ? "low" : "medium";
38
+ } else {
39
+ const modelManager = getModelManager();
40
+ const fallbackProfile = modelManager.getModel("main");
41
+ const effort2 = fallbackProfile?.reasoningEffort;
42
+ reasoningEffort = effort2 === "high" || effort2 === "medium" || effort2 === "low" ? effort2 : effort2 === "minimal" ? "low" : "medium";
43
+ }
44
+ const maxEffort = reasoningEffort === "high" ? 2 : reasoningEffort === "medium" ? 1 : reasoningEffort === "low" ? 0 : null;
45
+ if (!maxEffort) {
46
+ return null;
47
+ }
48
+ let effort = 0;
49
+ if (thinkingTokens < 1e4) {
50
+ effort = 0;
51
+ } else if (thinkingTokens >= 1e4 && thinkingTokens < 3e4) {
52
+ effort = 1;
53
+ } else {
54
+ effort = 2;
55
+ }
56
+ if (effort > maxEffort) {
57
+ return maxEffort === 2 ? "high" : maxEffort === 1 ? "medium" : "low";
58
+ }
59
+ return effort === 2 ? "high" : effort === 1 ? "medium" : "low";
60
+ }
61
+
62
+ export {
63
+ getMaxThinkingTokens,
64
+ getReasoningEffort
65
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/model/thinking.ts"],
4
+ "sourcesContent": ["import { last } from 'lodash-es'\r\nimport type { Message } from '@query'\r\nimport { getLastAssistantMessageId } from '@utils/messages'\r\nimport { getModelManager } from '@utils/model'\r\n\r\nexport async function getMaxThinkingTokens(\r\n messages: Message[],\r\n): Promise<number> {\r\n if (process.env.MAX_THINKING_TOKENS) {\r\n const tokens = parseInt(process.env.MAX_THINKING_TOKENS, 10)\r\n return tokens\r\n }\r\n\r\n const lastMessage = last(messages)\r\n if (\r\n lastMessage?.type !== 'user' ||\r\n typeof lastMessage.message.content !== 'string'\r\n ) {\r\n return 0\r\n }\r\n\r\n const content = lastMessage.message.content.toLowerCase()\r\n if (\r\n content.includes('think harder') ||\r\n content.includes('think intensely') ||\r\n content.includes('think longer') ||\r\n content.includes('think really hard') ||\r\n content.includes('think super hard') ||\r\n content.includes('think very hard') ||\r\n content.includes('ultrathink')\r\n ) {\r\n return 32_000 - 1\r\n }\r\n\r\n if (\r\n content.includes('think about it') ||\r\n content.includes('think a lot') ||\r\n content.includes('think hard') ||\r\n content.includes('think more') ||\r\n content.includes('megathink')\r\n ) {\r\n return 10_000\r\n }\r\n\r\n if (content.includes('think')) {\r\n return 4_000\r\n }\r\n\r\n return 0\r\n}\r\n\r\nexport async function getReasoningEffort(\r\n modelProfile: any,\r\n messages: Message[],\r\n): Promise<'low' | 'medium' | 'high' | null> {\r\n const thinkingTokens = await getMaxThinkingTokens(messages)\r\n\r\n let reasoningEffort: 'low' | 'medium' | 'high' | undefined\r\n if (modelProfile?.reasoningEffort) {\r\n const effort = modelProfile.reasoningEffort\r\n reasoningEffort =\r\n effort === 'high' || effort === 'medium' || effort === 'low'\r\n ? effort\r\n : effort === 'minimal'\r\n ? 'low'\r\n : 'medium'\r\n } else {\r\n const modelManager = getModelManager()\r\n const fallbackProfile = modelManager.getModel('main')\r\n const effort = fallbackProfile?.reasoningEffort\r\n reasoningEffort =\r\n effort === 'high' || effort === 'medium' || effort === 'low'\r\n ? effort\r\n : effort === 'minimal'\r\n ? 'low'\r\n : 'medium'\r\n }\r\n\r\n const maxEffort =\r\n reasoningEffort === 'high'\r\n ? 2\r\n : reasoningEffort === 'medium'\r\n ? 1\r\n : reasoningEffort === 'low'\r\n ? 0\r\n : null\r\n if (!maxEffort) {\r\n return null\r\n }\r\n\r\n let effort = 0\r\n if (thinkingTokens < 10_000) {\r\n effort = 0\r\n } else if (thinkingTokens >= 10_000 && thinkingTokens < 30_000) {\r\n effort = 1\r\n } else {\r\n effort = 2\r\n }\r\n\r\n if (effort > maxEffort) {\r\n return maxEffort === 2 ? 'high' : maxEffort === 1 ? 'medium' : 'low'\r\n }\r\n\r\n return effort === 2 ? 'high' : effort === 1 ? 'medium' : 'low'\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;AAGA;AAHA,SAAS,YAAY;AAKrB,eAAsB,qBACpB,UACiB;AACjB,MAAI,QAAQ,IAAI,qBAAqB;AACnC,UAAM,SAAS,SAAS,QAAQ,IAAI,qBAAqB,EAAE;AAC3D,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,KAAK,QAAQ;AACjC,MACE,aAAa,SAAS,UACtB,OAAO,YAAY,QAAQ,YAAY,UACvC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,YAAY,QAAQ,QAAQ,YAAY;AACxD,MACE,QAAQ,SAAS,cAAc,KAC/B,QAAQ,SAAS,iBAAiB,KAClC,QAAQ,SAAS,cAAc,KAC/B,QAAQ,SAAS,mBAAmB,KACpC,QAAQ,SAAS,kBAAkB,KACnC,QAAQ,SAAS,iBAAiB,KAClC,QAAQ,SAAS,YAAY,GAC7B;AACA,WAAO,OAAS;AAAA,EAClB;AAEA,MACE,QAAQ,SAAS,gBAAgB,KACjC,QAAQ,SAAS,aAAa,KAC9B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,WAAW,GAC5B;AACA,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,SAAS,OAAO,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,eAAsB,mBACpB,cACA,UAC2C;AAC3C,QAAM,iBAAiB,MAAM,qBAAqB,QAAQ;AAE1D,MAAI;AACJ,MAAI,cAAc,iBAAiB;AACjC,UAAMA,UAAS,aAAa;AAC5B,sBACEA,YAAW,UAAUA,YAAW,YAAYA,YAAW,QACnDA,UACAA,YAAW,YACT,QACA;AAAA,EACV,OAAO;AACL,UAAM,eAAe,gBAAgB;AACrC,UAAM,kBAAkB,aAAa,SAAS,MAAM;AACpD,UAAMA,UAAS,iBAAiB;AAChC,sBACEA,YAAW,UAAUA,YAAW,YAAYA,YAAW,QACnDA,UACAA,YAAW,YACT,QACA;AAAA,EACV;AAEA,QAAM,YACJ,oBAAoB,SAChB,IACA,oBAAoB,WAClB,IACA,oBAAoB,QAClB,IACA;AACV,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,MAAI,SAAS;AACb,MAAI,iBAAiB,KAAQ;AAC3B,aAAS;AAAA,EACX,WAAW,kBAAkB,OAAU,iBAAiB,KAAQ;AAC9D,aAAS;AAAA,EACX,OAAO;AACL,aAAS;AAAA,EACX;AAEA,MAAI,SAAS,WAAW;AACtB,WAAO,cAAc,IAAI,SAAS,cAAc,IAAI,WAAW;AAAA,EACjE;AAEA,SAAO,WAAW,IAAI,SAAS,WAAW,IAAI,WAAW;AAC3D;",
6
+ "names": ["effort"]
7
+ }
@@ -1,23 +1,29 @@
1
1
  import { createRequire as __newcrawCreateRequire } from "node:module";
2
2
  const require = __newcrawCreateRequire(import.meta.url);
3
- import {
4
- getSettingsFileCandidates,
5
- loadSettingsWithLegacyFallback,
6
- saveSettingsToPrimaryAndSyncLegacy
7
- } from "./chunk-2EFL22PV.js";
8
3
  import {
9
4
  createDefaultToolPermissionContext,
10
5
  isPersistableToolPermissionDestination
11
6
  } from "./chunk-U7S4MEYP.js";
12
7
  import {
13
- getCurrentProjectConfig
14
- } from "./chunk-IIFUDVGS.js";
8
+ getSettingsFileCandidates,
9
+ loadSettingsWithLegacyFallback,
10
+ saveSettingsToPrimaryAndSyncLegacy
11
+ } from "./chunk-ADJ4YEII.js";
12
+ import {
13
+ getCurrentProjectConfig,
14
+ init_config
15
+ } from "./chunk-ENLHVQCX.js";
15
16
  import {
16
17
  getCwd,
18
+ init_log,
19
+ init_state,
17
20
  logError
18
- } from "./chunk-IM33F5CM.js";
21
+ } from "./chunk-BMJ5XGFR.js";
19
22
 
20
23
  // src/utils/permissions/toolPermissionSettings.ts
24
+ init_config();
25
+ init_state();
26
+ init_log();
21
27
  function uniqueStrings(value) {
22
28
  if (!Array.isArray(value)) return [];
23
29
  const out = [];
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/utils/permissions/toolPermissionSettings.ts"],
4
4
  "sourcesContent": ["import type {\r\n ToolPermissionContext,\r\n ToolPermissionContextUpdate,\r\n ToolPermissionRuleBehavior,\r\n ToolPermissionUpdateDestination,\r\n} from '@newcraw-types/toolPermissionContext'\r\nimport {\r\n createDefaultToolPermissionContext,\r\n isPersistableToolPermissionDestination,\r\n} from '@newcraw-types/toolPermissionContext'\r\nimport { getCurrentProjectConfig } from '@utils/config'\r\nimport { getCwd } from '@utils/state'\r\nimport { logError } from '@utils/log'\r\nimport {\r\n getSettingsFileCandidates,\r\n loadSettingsWithLegacyFallback,\r\n saveSettingsToPrimaryAndSyncLegacy,\r\n type SettingsFile,\r\n} from '@utils/config/settingsFiles'\r\n\r\ntype SettingsPermissions = {\r\n allow?: unknown\r\n deny?: unknown\r\n ask?: unknown\r\n additionalDirectories?: unknown\r\n}\r\n\r\ntype SettingsFileWithPermissions = {\r\n permissions?: SettingsPermissions\r\n [key: string]: unknown\r\n}\r\n\r\nfunction uniqueStrings(value: unknown): string[] {\r\n if (!Array.isArray(value)) return []\r\n const out: string[] = []\r\n const seen = new Set<string>()\r\n for (const item of value) {\r\n if (typeof item !== 'string') continue\r\n if (seen.has(item)) continue\r\n seen.add(item)\r\n out.push(item)\r\n }\r\n return out\r\n}\r\n\r\nfunction getPrimarySettingsFilePathForDestination(options: {\r\n destination: ToolPermissionUpdateDestination\r\n projectDir?: string\r\n homeDir?: string\r\n}): string | null {\r\n const candidates = getSettingsFileCandidates({\r\n destination: options.destination as any,\r\n projectDir: options.projectDir,\r\n homeDir: options.homeDir,\r\n })\r\n return candidates?.primary ?? null\r\n}\r\n\r\nexport function loadToolPermissionContextFromDisk(options?: {\r\n projectDir?: string\r\n homeDir?: string\r\n includeKodeProjectConfig?: boolean\r\n isBypassPermissionsModeAvailable?: boolean\r\n}): ToolPermissionContext {\r\n const projectDir = options?.projectDir ?? getCwd()\r\n const homeDir = options?.homeDir\r\n const includeKodeProjectConfig = options?.includeKodeProjectConfig ?? true\r\n\r\n const base = createDefaultToolPermissionContext({\r\n isBypassPermissionsModeAvailable:\r\n options?.isBypassPermissionsModeAvailable ?? false,\r\n })\r\n\r\n const destinations: ToolPermissionUpdateDestination[] = [\r\n 'userSettings',\r\n 'projectSettings',\r\n 'localSettings',\r\n ]\r\n\r\n for (const destination of destinations) {\r\n const settings = loadSettingsWithLegacyFallback({\r\n destination: destination as any,\r\n projectDir,\r\n homeDir,\r\n migrateToPrimary: true,\r\n }).settings as SettingsFileWithPermissions | null\r\n const perms = settings?.permissions\r\n const allow = uniqueStrings(perms?.allow)\r\n const deny = uniqueStrings(perms?.deny)\r\n const ask = uniqueStrings(perms?.ask)\r\n const additionalDirectories = uniqueStrings(perms?.additionalDirectories)\r\n\r\n if (allow.length > 0) base.alwaysAllowRules[destination] = allow\r\n if (deny.length > 0) base.alwaysDenyRules[destination] = deny\r\n if (ask.length > 0) base.alwaysAskRules[destination] = ask\r\n\r\n for (const dir of additionalDirectories) {\r\n base.additionalWorkingDirectories.set(dir, {\r\n path: dir,\r\n source: destination,\r\n })\r\n }\r\n }\r\n\r\n if (includeKodeProjectConfig) {\r\n try {\r\n const cfg = getCurrentProjectConfig()\r\n const allow = Array.isArray(cfg.allowedTools) ? cfg.allowedTools : []\r\n const deny = Array.isArray((cfg as any).deniedTools)\r\n ? (cfg as any).deniedTools\r\n : []\r\n const ask = Array.isArray((cfg as any).askedTools)\r\n ? (cfg as any).askedTools\r\n : []\r\n\r\n if (allow.length > 0) {\r\n const prev = base.alwaysAllowRules.localSettings ?? []\r\n base.alwaysAllowRules.localSettings = [...new Set([...prev, ...allow])]\r\n }\r\n if (deny.length > 0) {\r\n const prev = base.alwaysDenyRules.localSettings ?? []\r\n base.alwaysDenyRules.localSettings = [...new Set([...prev, ...deny])]\r\n }\r\n if (ask.length > 0) {\r\n const prev = base.alwaysAskRules.localSettings ?? []\r\n base.alwaysAskRules.localSettings = [...new Set([...prev, ...ask])]\r\n }\r\n } catch (error) {\r\n logError(error)\r\n }\r\n }\r\n\r\n return base\r\n}\r\n\r\nfunction getOrCreatePermissions(\r\n settings: SettingsFileWithPermissions,\r\n): Required<SettingsFileWithPermissions>['permissions'] {\r\n const existing = settings.permissions\r\n if (existing && typeof existing === 'object') {\r\n return existing as SettingsPermissions\r\n }\r\n settings.permissions = {}\r\n return settings.permissions as SettingsPermissions\r\n}\r\n\r\nfunction behaviorKey(\r\n behavior: ToolPermissionRuleBehavior,\r\n): keyof SettingsPermissions {\r\n switch (behavior) {\r\n case 'allow':\r\n return 'allow'\r\n case 'deny':\r\n return 'deny'\r\n case 'ask':\r\n return 'ask'\r\n }\r\n}\r\n\r\nexport function persistToolPermissionUpdateToDisk(options: {\r\n update: ToolPermissionContextUpdate\r\n projectDir?: string\r\n homeDir?: string\r\n}): { persisted: boolean } {\r\n const update = options.update\r\n if (!isPersistableToolPermissionDestination(update.destination)) {\r\n return { persisted: false }\r\n }\r\n if (update.type === 'setMode') {\r\n return { persisted: false }\r\n }\r\n\r\n const filePath = getPrimarySettingsFilePathForDestination({\r\n destination: update.destination,\r\n projectDir: options.projectDir,\r\n homeDir: options.homeDir,\r\n })\r\n if (!filePath) return { persisted: false }\r\n\r\n const existing =\r\n (loadSettingsWithLegacyFallback({\r\n destination: update.destination as any,\r\n projectDir: options.projectDir,\r\n homeDir: options.homeDir,\r\n migrateToPrimary: true,\r\n }).settings as SettingsFileWithPermissions | null) ?? {}\r\n const permissions = getOrCreatePermissions(existing)\r\n\r\n try {\r\n switch (update.type) {\r\n case 'addRules':\r\n case 'replaceRules':\r\n case 'removeRules': {\r\n const key = behaviorKey(update.behavior)\r\n const current = uniqueStrings(permissions[key])\r\n\r\n if (update.type === 'addRules') {\r\n const merged = [...new Set([...current, ...update.rules])]\r\n permissions[key] = merged\r\n } else if (update.type === 'replaceRules') {\r\n permissions[key] = uniqueStrings(update.rules)\r\n } else {\r\n const toRemove = new Set(update.rules)\r\n permissions[key] = current.filter(rule => !toRemove.has(rule))\r\n }\r\n break\r\n }\r\n case 'addDirectories':\r\n case 'removeDirectories': {\r\n const current = uniqueStrings(permissions.additionalDirectories)\r\n if (update.type === 'addDirectories') {\r\n permissions.additionalDirectories = [\r\n ...new Set([...current, ...update.directories]),\r\n ]\r\n } else {\r\n const toRemove = new Set(update.directories)\r\n permissions.additionalDirectories = current.filter(\r\n dir => !toRemove.has(dir),\r\n )\r\n }\r\n break\r\n }\r\n default:\r\n return { persisted: false }\r\n }\r\n\r\n saveSettingsToPrimaryAndSyncLegacy({\r\n destination: update.destination as any,\r\n projectDir: options.projectDir,\r\n homeDir: options.homeDir,\r\n settings: existing as SettingsFile,\r\n syncLegacyIfExists: true,\r\n })\r\n return { persisted: true }\r\n } catch (error) {\r\n logError(error)\r\n return { persisted: false }\r\n }\r\n}\r\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,47 +1,11 @@
1
1
  import { createRequire as __newcrawCreateRequire } from "node:module";
2
2
  const require = __newcrawCreateRequire(import.meta.url);
3
+ import {
4
+ formatDuration
5
+ } from "./chunk-HLBLZKZH.js";
3
6
 
4
7
  // src/core/costTracker.ts
5
8
  import chalk from "chalk";
6
-
7
- // src/utils/terminal/format.ts
8
- function wrapText(text, width) {
9
- const lines = [];
10
- let currentLine = "";
11
- for (const char of text) {
12
- if ([...currentLine].length < width) {
13
- currentLine += char;
14
- } else {
15
- lines.push(currentLine);
16
- currentLine = char;
17
- }
18
- }
19
- if (currentLine) lines.push(currentLine);
20
- return lines;
21
- }
22
- function formatDuration(ms) {
23
- if (ms < 6e4) {
24
- return `${(ms / 1e3).toFixed(1)}s`;
25
- }
26
- const hours = Math.floor(ms / 36e5);
27
- const minutes = Math.floor(ms % 36e5 / 6e4);
28
- const seconds = (ms % 6e4 / 1e3).toFixed(1);
29
- if (hours > 0) {
30
- return `${hours}h ${minutes}m ${seconds}s`;
31
- }
32
- if (minutes > 0) {
33
- return `${minutes}m ${seconds}s`;
34
- }
35
- return `${seconds}s`;
36
- }
37
- function formatNumber(number) {
38
- return new Intl.NumberFormat("en", {
39
- notation: "compact",
40
- maximumFractionDigits: 1
41
- }).format(number).toLowerCase();
42
- }
43
-
44
- // src/core/costTracker.ts
45
9
  var STATE = {
46
10
  totalCost: 0,
47
11
  totalAPIDuration: 0,
@@ -83,9 +47,6 @@ function resetStateForTests() {
83
47
  }
84
48
 
85
49
  export {
86
- wrapText,
87
- formatDuration,
88
- formatNumber,
89
50
  addToTotalCost,
90
51
  getTotalCost,
91
52
  getTotalDuration,
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/core/costTracker.ts"],
4
+ "sourcesContent": ["import chalk from 'chalk'\r\nimport { formatDuration } from '@utils/terminal/format'\r\n\r\nconst STATE: {\r\n totalCost: number\r\n totalAPIDuration: number\r\n startTime: number\r\n} = {\r\n totalCost: 0,\r\n totalAPIDuration: 0,\r\n startTime: Date.now(),\r\n}\r\n\r\nexport function addToTotalCost(cost: number, duration: number): void {\r\n STATE.totalCost += cost\r\n STATE.totalAPIDuration += duration\r\n}\r\n\r\nexport function getTotalCost(): number {\r\n return STATE.totalCost\r\n}\r\n\r\nexport function getTotalDuration(): number {\r\n return Date.now() - STATE.startTime\r\n}\r\n\r\nexport function getTotalAPIDuration(): number {\r\n return STATE.totalAPIDuration\r\n}\r\n\r\nfunction formatCost(cost: number): string {\r\n return `$${cost > 0.5 ? round(cost, 100).toFixed(2) : cost.toFixed(4)}`\r\n}\r\n\r\nexport function formatTotalCost(): string {\r\n return chalk.grey(\r\n `Total cost: ${formatCost(STATE.totalCost)}\r\nTotal duration (API): ${formatDuration(STATE.totalAPIDuration)}\r\nTotal duration (wall): ${formatDuration(getTotalDuration())}`,\r\n )\r\n}\r\n\r\nfunction round(number: number, precision: number): number {\r\n return Math.round(number * precision) / precision\r\n}\r\n\r\nexport function resetStateForTests(): void {\r\n if (process.env.NODE_ENV !== 'test') {\r\n throw new Error('resetStateForTests can only be called in tests')\r\n }\r\n STATE.startTime = Date.now()\r\n STATE.totalCost = 0\r\n STATE.totalAPIDuration = 0\r\n}\r\n"],
5
+ "mappings": ";;;;;;;AAAA,OAAO,WAAW;AAGlB,IAAM,QAIF;AAAA,EACF,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,WAAW,KAAK,IAAI;AACtB;AAEO,SAAS,eAAe,MAAc,UAAwB;AACnE,QAAM,aAAa;AACnB,QAAM,oBAAoB;AAC5B;AAEO,SAAS,eAAuB;AACrC,SAAO,MAAM;AACf;AAEO,SAAS,mBAA2B;AACzC,SAAO,KAAK,IAAI,IAAI,MAAM;AAC5B;AAEO,SAAS,sBAA8B;AAC5C,SAAO,MAAM;AACf;AAEA,SAAS,WAAW,MAAsB;AACxC,SAAO,IAAI,OAAO,MAAM,MAAM,MAAM,GAAG,EAAE,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACvE;AAEO,SAAS,kBAA0B;AACxC,SAAO,MAAM;AAAA,IACX,eAAe,WAAW,MAAM,SAAS,CAAC;AAAA,wBACtB,eAAe,MAAM,gBAAgB,CAAC;AAAA,yBACrC,eAAe,iBAAiB,CAAC,CAAC;AAAA,EACzD;AACF;AAEA,SAAS,MAAM,QAAgB,WAA2B;AACxD,SAAO,KAAK,MAAM,SAAS,SAAS,IAAI;AAC1C;AAEO,SAAS,qBAA2B;AACzC,MAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,YAAY;AAClB,QAAM,mBAAmB;AAC3B;",
6
+ "names": []
7
+ }