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.
- package/dist/REPL-CTTH53A7.js +50 -0
- package/dist/{acp-J4WDYGRX.js → acp-25PIN25O.js} +69 -40
- package/dist/acp-25PIN25O.js.map +7 -0
- package/dist/{agentsValidate-UBOER2IN.js → agentsValidate-BXDD54YP.js} +13 -10
- package/dist/{agentsValidate-UBOER2IN.js.map → agentsValidate-BXDD54YP.js.map} +1 -1
- package/dist/{ask-MGUO3L35.js → ask-EL4XAA5P.js} +62 -52
- package/dist/ask-EL4XAA5P.js.map +7 -0
- package/dist/{autoUpdater-2GS6LRPK.js → autoUpdater-DKMSJXWW.js} +5 -4
- package/dist/{chunk-2C43OXE7.js → chunk-2OVXJBJV.js} +38 -59
- package/dist/chunk-2OVXJBJV.js.map +7 -0
- package/dist/{chunk-53A4JHFW.js → chunk-3D3C7MRI.js} +23 -4
- package/dist/chunk-3D3C7MRI.js.map +7 -0
- package/dist/{chunk-VKI7ORIO.js → chunk-3ZQRACCP.js} +37 -18
- package/dist/{chunk-VKI7ORIO.js.map → chunk-3ZQRACCP.js.map} +1 -1
- package/dist/chunk-4A6CDBDH.js +822 -0
- package/dist/chunk-4A6CDBDH.js.map +7 -0
- package/dist/{chunk-VQSCECTS.js → chunk-53VETVCP.js} +6 -4
- package/dist/{chunk-VQSCECTS.js.map → chunk-53VETVCP.js.map} +1 -1
- package/dist/{chunk-WWDVA4NV.js → chunk-6WT3ZRYF.js} +22 -6
- package/dist/{chunk-WWDVA4NV.js.map → chunk-6WT3ZRYF.js.map} +1 -1
- package/dist/{chunk-RUXIBQ3B.js → chunk-7E2L7EH2.js} +4 -4
- package/dist/{chunk-VHS2MZQS.js → chunk-7PWVUHQ2.js} +9 -6
- package/dist/{chunk-VHS2MZQS.js.map → chunk-7PWVUHQ2.js.map} +1 -1
- package/dist/{chunk-2EFL22PV.js → chunk-ADJ4YEII.js} +7 -3
- package/dist/chunk-ADJ4YEII.js.map +7 -0
- package/dist/chunk-AKNZJBBU.js +372 -0
- package/dist/chunk-AKNZJBBU.js.map +7 -0
- package/dist/chunk-ALQSPHXV.js +135 -0
- package/dist/chunk-ALQSPHXV.js.map +7 -0
- package/dist/{chunk-XS6PU75S.js → chunk-APSIF3YK.js} +1 -1
- package/dist/{chunk-IM33F5CM.js → chunk-BMJ5XGFR.js} +1668 -1623
- package/dist/chunk-BMJ5XGFR.js.map +7 -0
- package/dist/chunk-BQCOSNM3.js +93 -0
- package/dist/chunk-BQCOSNM3.js.map +7 -0
- package/dist/{chunk-OJIMOLIC.js → chunk-BTCASL4X.js} +3621 -7413
- package/dist/chunk-BTCASL4X.js.map +7 -0
- package/dist/chunk-CHB5K4GI.js +107 -0
- package/dist/chunk-CHB5K4GI.js.map +7 -0
- package/dist/{chunk-QH2M65BR.js → chunk-D2FSAFMO.js} +7 -3
- package/dist/{chunk-QH2M65BR.js.map → chunk-D2FSAFMO.js.map} +1 -1
- package/dist/chunk-D4OZACS2.js +35 -0
- package/dist/{chunk-IIFUDVGS.js → chunk-ENLHVQCX.js} +310 -177
- package/dist/chunk-ENLHVQCX.js.map +7 -0
- package/dist/{chunk-A7X6OCZE.js → chunk-ERKWSZ3K.js} +1 -1
- package/dist/{chunk-UYRR6F5S.js → chunk-FSSZHQEJ.js} +9 -3
- package/dist/{chunk-UYRR6F5S.js.map → chunk-FSSZHQEJ.js.map} +1 -1
- package/dist/chunk-GV73HKJO.js +5473 -0
- package/dist/chunk-GV73HKJO.js.map +7 -0
- package/dist/{chunk-GZTCXXSS.js → chunk-GZ4BEVMZ.js} +57 -46
- package/dist/{chunk-GZTCXXSS.js.map → chunk-GZ4BEVMZ.js.map} +1 -1
- package/dist/chunk-HLBLZKZH.js +45 -0
- package/dist/chunk-HLBLZKZH.js.map +7 -0
- package/dist/chunk-JLVECHVJ.js +36 -0
- package/dist/chunk-JLVECHVJ.js.map +7 -0
- package/dist/chunk-KNSAVNMD.js +683 -0
- package/dist/{chunk-F3COCCAE.js.map → chunk-KNSAVNMD.js.map} +1 -1
- package/dist/{chunk-V5U6BHT2.js → chunk-KRN3WHHL.js} +7 -3
- package/dist/{chunk-V5U6BHT2.js.map → chunk-KRN3WHHL.js.map} +1 -1
- package/dist/{chunk-3LMXSKZ7.js → chunk-NFYAVT54.js} +1 -1
- package/dist/chunk-NT7RDVDA.js +33 -0
- package/dist/{chunk-KQSHIOZK.js.map → chunk-NT7RDVDA.js.map} +1 -1
- package/dist/chunk-NW7WSLD5.js +166 -0
- package/dist/{chunk-ZYSVG4X3.js.map → chunk-NW7WSLD5.js.map} +2 -2
- package/dist/{chunk-HSJ6HYAO.js → chunk-P52SGBC4.js} +18 -10
- package/dist/chunk-P52SGBC4.js.map +7 -0
- package/dist/{chunk-XXU2NVOE.js → chunk-PC6QOCGI.js} +30 -6
- package/dist/chunk-PC6QOCGI.js.map +7 -0
- package/dist/{chunk-N5OHRWG2.js → chunk-QSRXXZO7.js} +4 -2
- package/dist/{chunk-N5OHRWG2.js.map → chunk-QSRXXZO7.js.map} +1 -1
- package/dist/{chunk-DEF3KFP7.js → chunk-QZFKONA3.js} +4 -2
- package/dist/{chunk-DEF3KFP7.js.map → chunk-QZFKONA3.js.map} +1 -1
- package/dist/{chunk-JWXQNBBA.js → chunk-RE226X4F.js} +7 -1
- package/dist/{chunk-JWXQNBBA.js.map → chunk-RE226X4F.js.map} +1 -1
- package/dist/chunk-RF57YWGW.js +88 -0
- package/dist/chunk-RF57YWGW.js.map +7 -0
- package/dist/chunk-UGBECBIR.js +62 -0
- package/dist/chunk-UGBECBIR.js.map +7 -0
- package/dist/chunk-UYWZQVH5.js +35 -0
- package/dist/chunk-UYWZQVH5.js.map +7 -0
- package/dist/{chunk-LOIZNQOU.js → chunk-VHZRJ7RI.js} +9 -3
- package/dist/{chunk-LOIZNQOU.js.map → chunk-VHZRJ7RI.js.map} +1 -1
- package/dist/{chunk-XMGUQHMF.js → chunk-VSSVN6WG.js} +11 -1
- package/dist/chunk-VSSVN6WG.js.map +7 -0
- package/dist/{chunk-OZHBEG7U.js → chunk-XV7LPJNT.js} +15 -5
- package/dist/{chunk-OZHBEG7U.js.map → chunk-XV7LPJNT.js.map} +1 -1
- package/dist/chunk-Y7MDOB3N.js +65 -0
- package/dist/chunk-Y7MDOB3N.js.map +7 -0
- package/dist/{chunk-BWYKUDJR.js → chunk-ZLAB3Z4G.js} +14 -8
- package/dist/{chunk-BWYKUDJR.js.map → chunk-ZLAB3Z4G.js.map} +1 -1
- package/dist/{chunk-755HIAI3.js → chunk-ZMO4E7IW.js} +3 -42
- package/dist/chunk-ZMO4E7IW.js.map +7 -0
- package/dist/{cli-KZGF3FV5.js → cli-Z2BNJWHT.js} +251 -485
- package/dist/cli-Z2BNJWHT.js.map +7 -0
- package/dist/commands-3Y3OQOXT.js +54 -0
- package/dist/{config-GTJWCNPF.js → config-5RS7HDIK.js} +9 -6
- package/dist/{context-WF3TTXQU.js → context-XZXRRYKS.js} +8 -7
- package/dist/{costTracker-2G3ZI2JF.js → costTracker-VSWW7SRT.js} +3 -2
- package/dist/{customCommands-QOWK57EX.js → customCommands-6KDAODFQ.js} +6 -5
- package/dist/{env-37BAP7QF.js → env-WIM2DQ4L.js} +10 -7
- package/dist/{gateway-IZYO6YFJ.js → gateway-DKHC7H3K.js} +542 -96
- package/dist/gateway-DKHC7H3K.js.map +7 -0
- package/dist/identity-3KZQQVBG.js +16 -0
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/{kodeAgentSessionId-KTGFX2BE.js → kodeAgentSessionId-4SH24DVH.js} +1 -1
- package/dist/{kodeAgentSessionLoad-6F7SJXBC.js → kodeAgentSessionLoad-4S452GGD.js} +6 -5
- package/dist/{kodeAgentSessionResume-UEEDRJ3N.js → kodeAgentSessionResume-MSMG4QUR.js} +6 -5
- package/dist/{kodeAgentStreamJson-VIXFTYL5.js → kodeAgentStreamJson-4ZKIWKS3.js} +4 -2
- package/dist/{kodeAgentStreamJsonSession-XC3IPREZ.js → kodeAgentStreamJsonSession-CYG6MLKP.js} +15 -4
- package/dist/kodeAgentStreamJsonSession-CYG6MLKP.js.map +7 -0
- package/dist/{kodeAgentStructuredStdio-SI5C7AAD.js → kodeAgentStructuredStdio-5DCUC6V6.js} +3 -3
- package/dist/{kodeHooks-V36SHCTC.js → kodeHooks-WX3N6CL6.js} +6 -5
- package/dist/{llm-CYUDKJNR.js → llm-V2W4KJIA.js} +239 -57
- package/dist/llm-V2W4KJIA.js.map +7 -0
- package/dist/{llmLazy-IXVVBRTN.js → llmLazy-I7SO67YA.js} +2 -2
- package/dist/{loader-OEJ6C3TN.js → loader-YJGRGJNH.js} +6 -5
- package/dist/{mcp-KE3SILMX.js → mcp-WG3RQQCZ.js} +10 -9
- package/dist/{mentionProcessor-GAU2WAYB.js → mentionProcessor-PKWDUKTN.js} +14 -7
- package/dist/{mentionProcessor-GAU2WAYB.js.map → mentionProcessor-PKWDUKTN.js.map} +1 -1
- package/dist/{messages-WCSGGSEU.js → messages-RXHQ6VKL.js} +2 -2
- package/dist/{model-4TQIV5J2.js → model-JNWAZGT7.js} +10 -7
- package/dist/{openai-KTZV6F7N.js → openai-6NL5UXO7.js} +8 -7
- package/dist/{outputStyles-WX5RYQOA.js → outputStyles-BVPXT3MW.js} +6 -5
- package/dist/{pluginRuntime-JXMJZ2LC.js → pluginRuntime-XHI3TCRJ.js} +11 -8
- package/dist/{pluginRuntime-JXMJZ2LC.js.map → pluginRuntime-XHI3TCRJ.js.map} +1 -1
- package/dist/{pluginValidation-JNQZYLUP.js → pluginValidation-WDFL352C.js} +8 -7
- package/dist/prompts-C4RUFGX2.js +58 -0
- package/dist/query-IA3UKMGR.js +58 -0
- package/dist/{responsesStreaming-2AIT6GHG.js → responsesStreaming-JORGEFQC.js} +1 -1
- package/dist/{ripgrep-KDPQAMB2.js → ripgrep-BHDXRABJ.js} +5 -4
- package/dist/sandbox-QOXESHL4.js +63 -0
- package/dist/{skillMarketplace-IXAGP3Q2.js → skillMarketplace-RIAMO2YA.js} +5 -4
- package/dist/{state-MSCYLB6Y.js → state-TM2XZQE2.js} +6 -3
- package/dist/structuredOutput-KAVFUV2Z.js +9 -0
- package/dist/theme-BXUQNXSD.js +15 -0
- package/dist/thinking-BCZ4WDT6.js +18 -0
- package/dist/{toolPermissionContext-I3IXPVED.js → toolPermissionContext-JCQ5MFUT.js} +1 -1
- package/dist/toolPermissionContext-JCQ5MFUT.js.map +7 -0
- package/dist/toolPermissionContextState-ILRPUITK.js +24 -0
- package/dist/toolPermissionContextState-ILRPUITK.js.map +7 -0
- package/dist/{toolPermissionSettings-EUZKGZU2.js → toolPermissionSettings-LNYZ6XFE.js} +9 -8
- package/dist/toolPermissionSettings-LNYZ6XFE.js.map +7 -0
- package/dist/tools-HIPUGTF5.js +55 -0
- package/dist/tools-HIPUGTF5.js.map +7 -0
- package/dist/{userInput-LJL4CVOB.js → userInput-I33T2RX2.js} +49 -34
- package/dist/{userInput-LJL4CVOB.js.map → userInput-I33T2RX2.js.map} +1 -1
- package/dist/{uuid-VA3KVASX.js → uuid-RQH3OZ3W.js} +1 -1
- package/dist/uuid-RQH3OZ3W.js.map +7 -0
- package/dist/workspace-EP63OB5S.js +21 -0
- package/dist/workspace-EP63OB5S.js.map +7 -0
- package/package.json +1 -1
- package/web/dist/assets/index-XuLVvSQF.js +251 -0
- package/web/dist/assets/index-pSid9IlY.css +10 -0
- package/web/dist/index.html +2 -2
- package/dist/REPL-IAK7ZN2Z.js +0 -42
- package/dist/acp-J4WDYGRX.js.map +0 -7
- package/dist/ask-MGUO3L35.js.map +0 -7
- package/dist/chunk-2C43OXE7.js.map +0 -7
- package/dist/chunk-2EFL22PV.js.map +0 -7
- package/dist/chunk-53A4JHFW.js.map +0 -7
- package/dist/chunk-755HIAI3.js.map +0 -7
- package/dist/chunk-AXWJI6N5.js +0 -11
- package/dist/chunk-F3COCCAE.js +0 -654
- package/dist/chunk-HSJ6HYAO.js.map +0 -7
- package/dist/chunk-IIFUDVGS.js.map +0 -7
- package/dist/chunk-IM33F5CM.js.map +0 -7
- package/dist/chunk-KQSHIOZK.js +0 -24
- package/dist/chunk-OJIMOLIC.js.map +0 -7
- package/dist/chunk-XMGUQHMF.js.map +0 -7
- package/dist/chunk-XXU2NVOE.js.map +0 -7
- package/dist/chunk-ZYSVG4X3.js +0 -151
- package/dist/cli-KZGF3FV5.js.map +0 -7
- package/dist/commands-AVEBLFVS.js +0 -46
- package/dist/gateway-IZYO6YFJ.js.map +0 -7
- package/dist/kodeAgentStreamJsonSession-XC3IPREZ.js.map +0 -7
- package/dist/llm-CYUDKJNR.js.map +0 -7
- package/dist/prompts-LE6GK75N.js +0 -48
- package/dist/query-GGIP6PWG.js +0 -50
- package/dist/theme-GAMFOLBW.js +0 -14
- package/dist/tools-3HOUIDM3.js +0 -47
- package/web/dist/assets/index-COAJqX1Z.css +0 -1
- package/web/dist/assets/index-CzS_4LmC.js +0 -179
- /package/dist/{REPL-IAK7ZN2Z.js.map → REPL-CTTH53A7.js.map} +0 -0
- /package/dist/{autoUpdater-2GS6LRPK.js.map → autoUpdater-DKMSJXWW.js.map} +0 -0
- /package/dist/{chunk-RUXIBQ3B.js.map → chunk-7E2L7EH2.js.map} +0 -0
- /package/dist/{chunk-XS6PU75S.js.map → chunk-APSIF3YK.js.map} +0 -0
- /package/dist/{chunk-AXWJI6N5.js.map → chunk-D4OZACS2.js.map} +0 -0
- /package/dist/{chunk-A7X6OCZE.js.map → chunk-ERKWSZ3K.js.map} +0 -0
- /package/dist/{chunk-3LMXSKZ7.js.map → chunk-NFYAVT54.js.map} +0 -0
- /package/dist/{commands-AVEBLFVS.js.map → commands-3Y3OQOXT.js.map} +0 -0
- /package/dist/{config-GTJWCNPF.js.map → config-5RS7HDIK.js.map} +0 -0
- /package/dist/{context-WF3TTXQU.js.map → context-XZXRRYKS.js.map} +0 -0
- /package/dist/{costTracker-2G3ZI2JF.js.map → costTracker-VSWW7SRT.js.map} +0 -0
- /package/dist/{customCommands-QOWK57EX.js.map → customCommands-6KDAODFQ.js.map} +0 -0
- /package/dist/{env-37BAP7QF.js.map → env-WIM2DQ4L.js.map} +0 -0
- /package/dist/{kodeAgentSessionId-KTGFX2BE.js.map → identity-3KZQQVBG.js.map} +0 -0
- /package/dist/{kodeAgentSessionLoad-6F7SJXBC.js.map → kodeAgentSessionId-4SH24DVH.js.map} +0 -0
- /package/dist/{kodeAgentSessionResume-UEEDRJ3N.js.map → kodeAgentSessionLoad-4S452GGD.js.map} +0 -0
- /package/dist/{kodeAgentStreamJson-VIXFTYL5.js.map → kodeAgentSessionResume-MSMG4QUR.js.map} +0 -0
- /package/dist/{kodeAgentStructuredStdio-SI5C7AAD.js.map → kodeAgentStreamJson-4ZKIWKS3.js.map} +0 -0
- /package/dist/{kodeHooks-V36SHCTC.js.map → kodeAgentStructuredStdio-5DCUC6V6.js.map} +0 -0
- /package/dist/{llmLazy-IXVVBRTN.js.map → kodeHooks-WX3N6CL6.js.map} +0 -0
- /package/dist/{loader-OEJ6C3TN.js.map → llmLazy-I7SO67YA.js.map} +0 -0
- /package/dist/{mcp-KE3SILMX.js.map → loader-YJGRGJNH.js.map} +0 -0
- /package/dist/{messages-WCSGGSEU.js.map → mcp-WG3RQQCZ.js.map} +0 -0
- /package/dist/{model-4TQIV5J2.js.map → messages-RXHQ6VKL.js.map} +0 -0
- /package/dist/{openai-KTZV6F7N.js.map → model-JNWAZGT7.js.map} +0 -0
- /package/dist/{outputStyles-WX5RYQOA.js.map → openai-6NL5UXO7.js.map} +0 -0
- /package/dist/{pluginValidation-JNQZYLUP.js.map → outputStyles-BVPXT3MW.js.map} +0 -0
- /package/dist/{prompts-LE6GK75N.js.map → pluginValidation-WDFL352C.js.map} +0 -0
- /package/dist/{query-GGIP6PWG.js.map → prompts-C4RUFGX2.js.map} +0 -0
- /package/dist/{responsesStreaming-2AIT6GHG.js.map → query-IA3UKMGR.js.map} +0 -0
- /package/dist/{ripgrep-KDPQAMB2.js.map → responsesStreaming-JORGEFQC.js.map} +0 -0
- /package/dist/{skillMarketplace-IXAGP3Q2.js.map → ripgrep-BHDXRABJ.js.map} +0 -0
- /package/dist/{state-MSCYLB6Y.js.map → sandbox-QOXESHL4.js.map} +0 -0
- /package/dist/{theme-GAMFOLBW.js.map → skillMarketplace-RIAMO2YA.js.map} +0 -0
- /package/dist/{toolPermissionContext-I3IXPVED.js.map → state-TM2XZQE2.js.map} +0 -0
- /package/dist/{toolPermissionSettings-EUZKGZU2.js.map → structuredOutput-KAVFUV2Z.js.map} +0 -0
- /package/dist/{tools-3HOUIDM3.js.map → theme-BXUQNXSD.js.map} +0 -0
- /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-
|
|
8
|
+
} from "./chunk-BMJ5XGFR.js";
|
|
9
|
+
import {
|
|
10
|
+
PRODUCT_NAME,
|
|
11
|
+
init_product
|
|
12
|
+
} from "./chunk-UYWZQVH5.js";
|
|
8
13
|
import {
|
|
9
|
-
MACRO
|
|
10
|
-
|
|
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-
|
|
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": "
|
|
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
|
-
|
|
14
|
-
|
|
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-
|
|
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": "
|
|
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
|
+
}
|