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,8 +1,12 @@
|
|
|
1
1
|
import { createRequire as __newcrawCreateRequire } from "node:module";
|
|
2
2
|
const require = __newcrawCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
|
-
SESSION_ID
|
|
5
|
-
|
|
4
|
+
SESSION_ID,
|
|
5
|
+
init_log
|
|
6
|
+
} from "./chunk-BMJ5XGFR.js";
|
|
7
|
+
import {
|
|
8
|
+
__esm
|
|
9
|
+
} from "./chunk-D4OZACS2.js";
|
|
6
10
|
|
|
7
11
|
// src/utils/log/debugLogger.ts
|
|
8
12
|
import { existsSync, mkdirSync, appendFileSync } from "fs";
|
|
@@ -10,46 +14,15 @@ import { join } from "path";
|
|
|
10
14
|
import { homedir } from "os";
|
|
11
15
|
import { format } from "node:util";
|
|
12
16
|
import chalk from "chalk";
|
|
13
|
-
var isDebugMode = () => process.argv.includes("--debug-verbose") || process.argv.includes("--mcp-debug") || process.argv.some(
|
|
14
|
-
(arg) => arg === "--debug" || arg === "-d" || arg.startsWith("--debug=")
|
|
15
|
-
);
|
|
16
|
-
var isVerboseMode = () => process.argv.includes("--verbose");
|
|
17
|
-
var isDebugVerboseMode = () => process.argv.includes("--debug-verbose");
|
|
18
|
-
var TERMINAL_LOG_LEVELS = /* @__PURE__ */ new Set([
|
|
19
|
-
"ERROR" /* ERROR */,
|
|
20
|
-
"WARN" /* WARN */,
|
|
21
|
-
"INFO" /* INFO */,
|
|
22
|
-
"REMINDER" /* REMINDER */
|
|
23
|
-
]);
|
|
24
|
-
var DEBUG_VERBOSE_TERMINAL_LOG_LEVELS = /* @__PURE__ */ new Set([
|
|
25
|
-
"ERROR" /* ERROR */,
|
|
26
|
-
"WARN" /* WARN */,
|
|
27
|
-
"FLOW" /* FLOW */,
|
|
28
|
-
"API" /* API */,
|
|
29
|
-
"STATE" /* STATE */,
|
|
30
|
-
"INFO" /* INFO */,
|
|
31
|
-
"REMINDER" /* REMINDER */
|
|
32
|
-
]);
|
|
33
|
-
var STARTUP_TIMESTAMP = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
34
|
-
var REQUEST_START_TIME = Date.now();
|
|
35
|
-
var NEWCRAW_DIR = join(homedir(), ".newcraw");
|
|
36
17
|
function getProjectDir(cwd) {
|
|
37
18
|
return cwd.replace(/[^a-zA-Z0-9]/g, "-");
|
|
38
19
|
}
|
|
39
|
-
var DEBUG_PATHS = {
|
|
40
|
-
base: () => join(NEWCRAW_DIR, getProjectDir(process.cwd()), "debug"),
|
|
41
|
-
detailed: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-detailed.log`),
|
|
42
|
-
flow: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-flow.log`),
|
|
43
|
-
api: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-api.log`),
|
|
44
|
-
state: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-state.log`)
|
|
45
|
-
};
|
|
46
20
|
function ensureDebugDir() {
|
|
47
21
|
const debugDir = DEBUG_PATHS.base();
|
|
48
22
|
if (!existsSync(debugDir)) {
|
|
49
23
|
mkdirSync(debugDir, { recursive: true });
|
|
50
24
|
}
|
|
51
25
|
}
|
|
52
|
-
var currentRequest = null;
|
|
53
26
|
function terminalLog(...args) {
|
|
54
27
|
process.stderr.write(`${format(...args)}
|
|
55
28
|
`);
|
|
@@ -72,8 +45,6 @@ function writeToFile(filePath, entry) {
|
|
|
72
45
|
} catch (error) {
|
|
73
46
|
}
|
|
74
47
|
}
|
|
75
|
-
var recentLogs = /* @__PURE__ */ new Map();
|
|
76
|
-
var LOG_DEDUPE_WINDOW_MS = 5e3;
|
|
77
48
|
function getDedupeKey(level, phase, data) {
|
|
78
49
|
if (phase.startsWith("CONFIG_")) {
|
|
79
50
|
const file = data?.file || "";
|
|
@@ -225,16 +196,6 @@ function debugLog(level, phase, data, requestId) {
|
|
|
225
196
|
}
|
|
226
197
|
logToTerminal(entry);
|
|
227
198
|
}
|
|
228
|
-
var debug = {
|
|
229
|
-
flow: (phase, data, requestId) => debugLog("FLOW" /* FLOW */, phase, data, requestId),
|
|
230
|
-
api: (phase, data, requestId) => debugLog("API" /* API */, phase, data, requestId),
|
|
231
|
-
state: (phase, data, requestId) => debugLog("STATE" /* STATE */, phase, data, requestId),
|
|
232
|
-
info: (phase, data, requestId) => debugLog("INFO" /* INFO */, phase, data, requestId),
|
|
233
|
-
warn: (phase, data, requestId) => debugLog("WARN" /* WARN */, phase, data, requestId),
|
|
234
|
-
error: (phase, data, requestId) => debugLog("ERROR" /* ERROR */, phase, data, requestId),
|
|
235
|
-
trace: (phase, data, requestId) => debugLog("TRACE" /* TRACE */, phase, data, requestId),
|
|
236
|
-
ui: (phase, data, requestId) => debugLog("STATE" /* STATE */, `UI_${phase}`, data, requestId)
|
|
237
|
-
};
|
|
238
199
|
function getCurrentRequest() {
|
|
239
200
|
return currentRequest;
|
|
240
201
|
}
|
|
@@ -780,6 +741,55 @@ ${diagnosis.description}`);
|
|
|
780
741
|
\u{1F4C1} Complete logs: ${debugPath}`));
|
|
781
742
|
terminalLog(chalk.gray("\u2501".repeat(60)));
|
|
782
743
|
}
|
|
744
|
+
var isDebugMode, isVerboseMode, isDebugVerboseMode, TERMINAL_LOG_LEVELS, DEBUG_VERBOSE_TERMINAL_LOG_LEVELS, STARTUP_TIMESTAMP, REQUEST_START_TIME, NEWCRAW_DIR, DEBUG_PATHS, currentRequest, recentLogs, LOG_DEDUPE_WINDOW_MS, debug;
|
|
745
|
+
var init_debugLogger = __esm({
|
|
746
|
+
"src/utils/log/debugLogger.ts"() {
|
|
747
|
+
init_log();
|
|
748
|
+
isDebugMode = () => process.argv.includes("--debug-verbose") || process.argv.includes("--mcp-debug") || process.argv.some(
|
|
749
|
+
(arg) => arg === "--debug" || arg === "-d" || arg.startsWith("--debug=")
|
|
750
|
+
);
|
|
751
|
+
isVerboseMode = () => process.argv.includes("--verbose");
|
|
752
|
+
isDebugVerboseMode = () => process.argv.includes("--debug-verbose");
|
|
753
|
+
TERMINAL_LOG_LEVELS = /* @__PURE__ */ new Set([
|
|
754
|
+
"ERROR" /* ERROR */,
|
|
755
|
+
"WARN" /* WARN */,
|
|
756
|
+
"INFO" /* INFO */,
|
|
757
|
+
"REMINDER" /* REMINDER */
|
|
758
|
+
]);
|
|
759
|
+
DEBUG_VERBOSE_TERMINAL_LOG_LEVELS = /* @__PURE__ */ new Set([
|
|
760
|
+
"ERROR" /* ERROR */,
|
|
761
|
+
"WARN" /* WARN */,
|
|
762
|
+
"FLOW" /* FLOW */,
|
|
763
|
+
"API" /* API */,
|
|
764
|
+
"STATE" /* STATE */,
|
|
765
|
+
"INFO" /* INFO */,
|
|
766
|
+
"REMINDER" /* REMINDER */
|
|
767
|
+
]);
|
|
768
|
+
STARTUP_TIMESTAMP = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
769
|
+
REQUEST_START_TIME = Date.now();
|
|
770
|
+
NEWCRAW_DIR = join(homedir(), ".newcraw");
|
|
771
|
+
DEBUG_PATHS = {
|
|
772
|
+
base: () => join(NEWCRAW_DIR, getProjectDir(process.cwd()), "debug"),
|
|
773
|
+
detailed: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-detailed.log`),
|
|
774
|
+
flow: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-flow.log`),
|
|
775
|
+
api: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-api.log`),
|
|
776
|
+
state: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-state.log`)
|
|
777
|
+
};
|
|
778
|
+
currentRequest = null;
|
|
779
|
+
recentLogs = /* @__PURE__ */ new Map();
|
|
780
|
+
LOG_DEDUPE_WINDOW_MS = 5e3;
|
|
781
|
+
debug = {
|
|
782
|
+
flow: (phase, data, requestId) => debugLog("FLOW" /* FLOW */, phase, data, requestId),
|
|
783
|
+
api: (phase, data, requestId) => debugLog("API" /* API */, phase, data, requestId),
|
|
784
|
+
state: (phase, data, requestId) => debugLog("STATE" /* STATE */, phase, data, requestId),
|
|
785
|
+
info: (phase, data, requestId) => debugLog("INFO" /* INFO */, phase, data, requestId),
|
|
786
|
+
warn: (phase, data, requestId) => debugLog("WARN" /* WARN */, phase, data, requestId),
|
|
787
|
+
error: (phase, data, requestId) => debugLog("ERROR" /* ERROR */, phase, data, requestId),
|
|
788
|
+
trace: (phase, data, requestId) => debugLog("TRACE" /* TRACE */, phase, data, requestId),
|
|
789
|
+
ui: (phase, data, requestId) => debugLog("STATE" /* STATE */, `UI_${phase}`, data, requestId)
|
|
790
|
+
};
|
|
791
|
+
}
|
|
792
|
+
});
|
|
783
793
|
|
|
784
794
|
export {
|
|
785
795
|
debug,
|
|
@@ -790,5 +800,6 @@ export {
|
|
|
790
800
|
logSystemPromptConstruction,
|
|
791
801
|
logUserFriendly,
|
|
792
802
|
initDebugLogger,
|
|
793
|
-
logErrorWithDiagnosis
|
|
803
|
+
logErrorWithDiagnosis,
|
|
804
|
+
init_debugLogger
|
|
794
805
|
};
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/log/debugLogger.ts"],
|
|
4
4
|
"sourcesContent": ["import { existsSync, mkdirSync, appendFileSync } from 'fs'\r\nimport { join } from 'path'\r\nimport { homedir } from 'os'\r\nimport { randomUUID } from 'crypto'\r\nimport { format } from 'node:util'\r\nimport chalk from 'chalk'\r\nimport envPaths from 'env-paths'\r\nimport { PRODUCT_COMMAND } from '@constants/product'\r\nimport { SESSION_ID } from './index'\r\nimport type { Message } from '@newcraw-types/conversation'\r\n\r\nexport enum LogLevel {\r\n TRACE = 'TRACE',\r\n DEBUG = 'DEBUG',\r\n INFO = 'INFO',\r\n WARN = 'WARN',\r\n ERROR = 'ERROR',\r\n FLOW = 'FLOW',\r\n API = 'API',\r\n STATE = 'STATE',\r\n REMINDER = 'REMINDER',\r\n}\r\n\r\nconst isDebugMode = () =>\r\n process.argv.includes('--debug-verbose') ||\r\n process.argv.includes('--mcp-debug') ||\r\n process.argv.some(\r\n arg => arg === '--debug' || arg === '-d' || arg.startsWith('--debug='),\r\n )\r\nconst isVerboseMode = () => process.argv.includes('--verbose')\r\nconst isDebugVerboseMode = () => process.argv.includes('--debug-verbose')\r\n\r\nconst TERMINAL_LOG_LEVELS = new Set([\r\n LogLevel.ERROR,\r\n LogLevel.WARN,\r\n LogLevel.INFO,\r\n LogLevel.REMINDER,\r\n])\r\n\r\nconst DEBUG_VERBOSE_TERMINAL_LOG_LEVELS = new Set([\r\n LogLevel.ERROR,\r\n LogLevel.WARN,\r\n LogLevel.FLOW,\r\n LogLevel.API,\r\n LogLevel.STATE,\r\n LogLevel.INFO,\r\n LogLevel.REMINDER,\r\n])\r\n\r\nconst USER_FRIENDLY_LEVELS = new Set([\r\n 'SESSION_START',\r\n 'QUERY_START',\r\n 'QUERY_PROGRESS',\r\n 'QUERY_COMPLETE',\r\n 'TOOL_EXECUTION',\r\n 'ERROR_OCCURRED',\r\n 'PERFORMANCE_SUMMARY',\r\n])\r\n\r\nconst STARTUP_TIMESTAMP = new Date().toISOString().replace(/[:.]/g, '-')\r\nconst REQUEST_START_TIME = Date.now()\r\n\r\nconst NEWCRAW_DIR = join(homedir(), '.newcraw')\r\nfunction getProjectDir(cwd: string): string {\r\n return cwd.replace(/[^a-zA-Z0-9]/g, '-')\r\n}\r\n\r\nconst DEBUG_PATHS = {\r\n base: () => join(NEWCRAW_DIR, getProjectDir(process.cwd()), 'debug'),\r\n detailed: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-detailed.log`),\r\n flow: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-flow.log`),\r\n api: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-api.log`),\r\n state: () => join(DEBUG_PATHS.base(), `${STARTUP_TIMESTAMP}-state.log`),\r\n}\r\n\r\nfunction ensureDebugDir() {\r\n const debugDir = DEBUG_PATHS.base()\r\n if (!existsSync(debugDir)) {\r\n mkdirSync(debugDir, { recursive: true })\r\n }\r\n}\r\n\r\ninterface LogEntry {\r\n timestamp: string\r\n level: LogLevel\r\n phase: string\r\n requestId?: string\r\n data: any\r\n elapsed?: number\r\n}\r\n\r\nclass RequestContext {\r\n public readonly id: string\r\n public readonly startTime: number\r\n private phases: Map<string, number> = new Map()\r\n\r\n constructor() {\r\n this.id = randomUUID().slice(0, 8)\r\n this.startTime = Date.now()\r\n }\r\n\r\n markPhase(phase: string) {\r\n this.phases.set(phase, Date.now() - this.startTime)\r\n }\r\n\r\n getPhaseTime(phase: string): number {\r\n return this.phases.get(phase) || 0\r\n }\r\n\r\n getAllPhases(): Record<string, number> {\r\n return Object.fromEntries(this.phases)\r\n }\r\n}\r\n\r\nconst activeRequests = new Map<string, RequestContext>()\r\nlet currentRequest: RequestContext | null = null\r\n\r\nfunction terminalLog(...args: unknown[]): void {\r\n process.stderr.write(`${format(...args)}\\n`)\r\n}\r\n\r\nfunction writeToFile(filePath: string, entry: LogEntry) {\r\n if (!isDebugMode()) return\r\n\r\n try {\r\n ensureDebugDir()\r\n const logLine =\r\n JSON.stringify(\r\n {\r\n ...entry,\r\n sessionId: SESSION_ID,\r\n pid: process.pid,\r\n uptime: Date.now() - REQUEST_START_TIME,\r\n },\r\n null,\r\n 2,\r\n ) + ',\\n'\r\n\r\n appendFileSync(filePath, logLine)\r\n } catch (error) {\r\n }\r\n}\r\n\r\nconst recentLogs = new Map<string, number>()\r\nconst LOG_DEDUPE_WINDOW_MS = 5000\r\n\r\nfunction getDedupeKey(level: LogLevel, phase: string, data: any): string {\r\n if (phase.startsWith('CONFIG_')) {\r\n const file = data?.file || ''\r\n return `${level}:${phase}:${file}`\r\n }\r\n\r\n return `${level}:${phase}`\r\n}\r\n\r\nfunction shouldLogWithDedupe(\r\n level: LogLevel,\r\n phase: string,\r\n data: any,\r\n): boolean {\r\n const key = getDedupeKey(level, phase, data)\r\n const now = Date.now()\r\n const lastLogTime = recentLogs.get(key)\r\n\r\n if (!lastLogTime || now - lastLogTime > LOG_DEDUPE_WINDOW_MS) {\r\n recentLogs.set(key, now)\r\n\r\n for (const [oldKey, oldTime] of recentLogs.entries()) {\r\n if (now - oldTime > LOG_DEDUPE_WINDOW_MS) {\r\n recentLogs.delete(oldKey)\r\n }\r\n }\r\n\r\n return true\r\n }\r\n\r\n return false\r\n}\r\nfunction formatMessages(messages: any): string {\r\n if (Array.isArray(messages)) {\r\n const recentMessages = messages.slice(-5)\r\n return recentMessages\r\n .map((msg, index) => {\r\n const role = msg.role || 'unknown'\r\n let content = ''\r\n\r\n if (typeof msg.content === 'string') {\r\n content =\r\n msg.content.length > 300\r\n ? msg.content.substring(0, 300) + '...'\r\n : msg.content\r\n } else if (typeof msg.content === 'object') {\r\n content = '[complex_content]'\r\n } else {\r\n content = String(msg.content || '')\r\n }\r\n\r\n const totalIndex = messages.length - recentMessages.length + index\r\n return `[${totalIndex}] ${chalk.dim(role)}: ${content}`\r\n })\r\n .join('\\n ')\r\n }\r\n\r\n if (typeof messages === 'string') {\r\n try {\r\n const parsed = JSON.parse(messages)\r\n if (Array.isArray(parsed)) {\r\n return formatMessages(parsed)\r\n }\r\n } catch {\r\n }\r\n }\r\n\r\n if (typeof messages === 'string' && messages.length > 200) {\r\n return messages.substring(0, 200) + '...'\r\n }\r\n\r\n return typeof messages === 'string' ? messages : JSON.stringify(messages)\r\n}\r\n\r\nfunction shouldShowInTerminal(level: LogLevel): boolean {\r\n if (!isDebugMode()) return false\r\n\r\n if (isDebugVerboseMode()) {\r\n return DEBUG_VERBOSE_TERMINAL_LOG_LEVELS.has(level)\r\n }\r\n\r\n return TERMINAL_LOG_LEVELS.has(level)\r\n}\r\n\r\nfunction logToTerminal(entry: LogEntry) {\r\n if (!shouldShowInTerminal(entry.level)) return\r\n\r\n const { level, phase, data, requestId, elapsed } = entry\r\n const timestamp = new Date().toISOString().slice(11, 23)\r\n\r\n let prefix = ''\r\n let color = chalk.gray\r\n\r\n switch (level) {\r\n case LogLevel.FLOW:\r\n prefix = '\uD83D\uDD04'\r\n color = chalk.cyan\r\n break\r\n case LogLevel.API:\r\n prefix = '\uD83C\uDF10'\r\n color = chalk.yellow\r\n break\r\n case LogLevel.STATE:\r\n prefix = '\uD83D\uDCCA'\r\n color = chalk.blue\r\n break\r\n case LogLevel.ERROR:\r\n prefix = '\u274C'\r\n color = chalk.red\r\n break\r\n case LogLevel.WARN:\r\n prefix = '\u26A0\uFE0F'\r\n color = chalk.yellow\r\n break\r\n case LogLevel.INFO:\r\n prefix = '\u2139\uFE0F'\r\n color = chalk.green\r\n break\r\n case LogLevel.TRACE:\r\n prefix = '\uD83D\uDCC8'\r\n color = chalk.magenta\r\n break\r\n default:\r\n prefix = '\uD83D\uDD0D'\r\n color = chalk.gray\r\n }\r\n\r\n const reqId = requestId ? chalk.dim(`[${requestId}]`) : ''\r\n const elapsedStr = elapsed !== undefined ? chalk.dim(`+${elapsed}ms`) : ''\r\n\r\n let dataStr = ''\r\n if (typeof data === 'object' && data !== null) {\r\n if (data.messages) {\r\n const formattedMessages = formatMessages(data.messages)\r\n dataStr = JSON.stringify(\r\n {\r\n ...data,\r\n messages: `\\n ${formattedMessages}`,\r\n },\r\n null,\r\n 2,\r\n )\r\n } else {\r\n dataStr = JSON.stringify(data, null, 2)\r\n }\r\n } else {\r\n dataStr = typeof data === 'string' ? data : JSON.stringify(data)\r\n }\r\n\r\n terminalLog(\r\n `${color(`[${timestamp}]`)} ${prefix} ${color(phase)} ${reqId} ${dataStr} ${elapsedStr}`,\r\n )\r\n}\r\n\r\nexport function debugLog(\r\n level: LogLevel,\r\n phase: string,\r\n data: any,\r\n requestId?: string,\r\n) {\r\n if (!isDebugMode()) return\r\n\r\n if (!shouldLogWithDedupe(level, phase, data)) {\r\n return\r\n }\r\n\r\n const entry: LogEntry = {\r\n timestamp: new Date().toISOString(),\r\n level,\r\n phase,\r\n data,\r\n requestId: requestId || currentRequest?.id,\r\n elapsed: currentRequest ? Date.now() - currentRequest.startTime : undefined,\r\n }\r\n\r\n writeToFile(DEBUG_PATHS.detailed(), entry)\r\n\r\n switch (level) {\r\n case LogLevel.FLOW:\r\n writeToFile(DEBUG_PATHS.flow(), entry)\r\n break\r\n case LogLevel.API:\r\n writeToFile(DEBUG_PATHS.api(), entry)\r\n break\r\n case LogLevel.STATE:\r\n writeToFile(DEBUG_PATHS.state(), entry)\r\n break\r\n }\r\n\r\n logToTerminal(entry)\r\n}\r\n\r\nexport const debug = {\r\n flow: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.FLOW, phase, data, requestId),\r\n\r\n api: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.API, phase, data, requestId),\r\n\r\n state: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.STATE, phase, data, requestId),\r\n\r\n info: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.INFO, phase, data, requestId),\r\n\r\n warn: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.WARN, phase, data, requestId),\r\n\r\n error: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.ERROR, phase, data, requestId),\r\n\r\n trace: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.TRACE, phase, data, requestId),\r\n\r\n ui: (phase: string, data: any, requestId?: string) =>\r\n debugLog(LogLevel.STATE, `UI_${phase}`, data, requestId),\r\n}\r\n\r\nexport function startRequest(): RequestContext {\r\n const ctx = new RequestContext()\r\n currentRequest = ctx\r\n activeRequests.set(ctx.id, ctx)\r\n\r\n debug.flow('REQUEST_START', {\r\n requestId: ctx.id,\r\n activeRequests: activeRequests.size,\r\n })\r\n\r\n return ctx\r\n}\r\n\r\nexport function endRequest(ctx?: RequestContext) {\r\n const request = ctx || currentRequest\r\n if (!request) return\r\n\r\n debug.flow('REQUEST_END', {\r\n requestId: request.id,\r\n totalTime: Date.now() - request.startTime,\r\n phases: request.getAllPhases(),\r\n })\r\n\r\n activeRequests.delete(request.id)\r\n if (currentRequest === request) {\r\n currentRequest = null\r\n }\r\n}\r\n\r\nexport function getCurrentRequest(): RequestContext | null {\r\n return currentRequest\r\n}\r\n\r\nexport function markPhase(phase: string, data?: any) {\r\n if (!currentRequest) return\r\n\r\n currentRequest.markPhase(phase)\r\n debug.flow(`PHASE_${phase.toUpperCase()}`, {\r\n requestId: currentRequest.id,\r\n elapsed: currentRequest.getPhaseTime(phase),\r\n data,\r\n })\r\n}\r\n\r\nexport function logReminderEvent(\r\n eventType: string,\r\n reminderData: any,\r\n agentId?: string,\r\n) {\r\n if (!isDebugMode()) return\r\n\r\n debug.info('REMINDER_EVENT_TRIGGERED', {\r\n eventType,\r\n agentId: agentId || 'default',\r\n reminderType: reminderData.type || 'unknown',\r\n reminderCategory: reminderData.category || 'general',\r\n reminderPriority: reminderData.priority || 'medium',\r\n contentLength: reminderData.content ? reminderData.content.length : 0,\r\n timestamp: Date.now(),\r\n })\r\n}\r\n\r\nexport function logAPIError(context: {\r\n model: string\r\n endpoint: string\r\n status: number\r\n error: any\r\n request?: any\r\n response?: any\r\n provider?: string\r\n}) {\r\n const errorDir = join(NEWCRAW_DIR, 'logs', 'error', 'api')\r\n\r\n if (!existsSync(errorDir)) {\r\n try {\r\n mkdirSync(errorDir, { recursive: true })\r\n } catch (err) {\r\n terminalLog('Failed to create error log directory:', err)\r\n return\r\n }\r\n }\r\n\r\n const timestamp = new Date().toISOString().replace(/[:.]/g, '-')\r\n const sanitizedModel = context.model.replace(/[^a-zA-Z0-9-_]/g, '_')\r\n const filename = `${sanitizedModel}_${timestamp}.log`\r\n const filepath = join(errorDir, filename)\r\n\r\n const fullLogContent = {\r\n timestamp: new Date().toISOString(),\r\n sessionId: SESSION_ID,\r\n requestId: getCurrentRequest()?.id,\r\n model: context.model,\r\n provider: context.provider,\r\n endpoint: context.endpoint,\r\n status: context.status,\r\n error: context.error,\r\n request: context.request,\r\n response: context.response,\r\n environment: {\r\n nodeVersion: process.version,\r\n platform: process.platform,\r\n cwd: process.cwd(),\r\n },\r\n }\r\n\r\n try {\r\n appendFileSync(filepath, JSON.stringify(fullLogContent, null, 2) + '\\n')\r\n appendFileSync(filepath, '='.repeat(80) + '\\n\\n')\r\n } catch (err) {\r\n terminalLog('Failed to write API error log:', err)\r\n }\r\n\r\n if (isDebugMode()) {\r\n debug.error('API_ERROR', {\r\n model: context.model,\r\n status: context.status,\r\n error:\r\n typeof context.error === 'string'\r\n ? context.error\r\n : context.error?.message || 'Unknown error',\r\n endpoint: context.endpoint,\r\n logFile: filename,\r\n })\r\n }\r\n\r\n if (isVerboseMode() || isDebugVerboseMode()) {\r\n terminalLog()\r\n terminalLog(chalk.red('\u2501'.repeat(60)))\r\n terminalLog(chalk.red.bold('\u26A0\uFE0F API Error'))\r\n terminalLog(chalk.red('\u2501'.repeat(60)))\r\n\r\n terminalLog(chalk.white(' Model: ') + chalk.yellow(context.model))\r\n terminalLog(chalk.white(' Status: ') + chalk.red(context.status))\r\n\r\n let errorMessage = 'Unknown error'\r\n if (typeof context.error === 'string') {\r\n errorMessage = context.error\r\n } else if (context.error?.message) {\r\n errorMessage = context.error.message\r\n } else if (context.error?.error?.message) {\r\n errorMessage = context.error.error.message\r\n }\r\n\r\n terminalLog(chalk.white(' Error: ') + chalk.red(errorMessage))\r\n\r\n if (context.response) {\r\n terminalLog()\r\n terminalLog(chalk.gray(' Response:'))\r\n const responseStr =\r\n typeof context.response === 'string'\r\n ? context.response\r\n : JSON.stringify(context.response, null, 2)\r\n\r\n responseStr.split('\\n').forEach(line => {\r\n terminalLog(chalk.gray(' ' + line))\r\n })\r\n }\r\n\r\n terminalLog()\r\n terminalLog(chalk.dim(` \uD83D\uDCC1 Full log: ${filepath}`))\r\n terminalLog(chalk.red('\u2501'.repeat(60)))\r\n terminalLog()\r\n }\r\n}\r\n\r\nexport function logLLMInteraction(context: {\r\n systemPrompt: string\r\n messages: any[]\r\n response: any\r\n usage?: { inputTokens: number; outputTokens: number }\r\n timing: { start: number; end: number }\r\n apiFormat?: 'anthropic' | 'openai'\r\n}) {\r\n if (!isDebugMode()) return\r\n\r\n const duration = context.timing.end - context.timing.start\r\n\r\n terminalLog('\\n' + chalk.blue('\uD83E\uDDE0 LLM CALL DEBUG'))\r\n terminalLog(chalk.gray('\u2501'.repeat(60)))\r\n\r\n terminalLog(chalk.yellow('\uD83D\uDCCA Context Overview:'))\r\n terminalLog(` Messages Count: ${context.messages.length}`)\r\n terminalLog(` System Prompt Length: ${context.systemPrompt.length} chars`)\r\n terminalLog(` Duration: ${duration.toFixed(0)}ms`)\r\n\r\n if (context.usage) {\r\n terminalLog(\r\n ` Token Usage: ${context.usage.inputTokens} \u2192 ${context.usage.outputTokens}`,\r\n )\r\n }\r\n\r\n const apiLabel = context.apiFormat\r\n ? ` (${context.apiFormat.toUpperCase()})`\r\n : ''\r\n terminalLog(chalk.cyan(`\\n\uD83D\uDCAC Real API Messages${apiLabel} (last 10):`))\r\n\r\n const recentMessages = context.messages.slice(-10)\r\n recentMessages.forEach((msg, index) => {\r\n const globalIndex = context.messages.length - recentMessages.length + index\r\n const roleColor =\r\n msg.role === 'user'\r\n ? 'green'\r\n : msg.role === 'assistant'\r\n ? 'blue'\r\n : msg.role === 'system'\r\n ? 'yellow'\r\n : 'gray'\r\n\r\n let content = ''\r\n let isReminder = false\r\n\r\n if (typeof msg.content === 'string') {\r\n if (msg.content.includes('<system-reminder>')) {\r\n isReminder = true\r\n const reminderContent = msg.content\r\n .replace(/<\\/?system-reminder>/g, '')\r\n .trim()\r\n content = `\uD83D\uDD14 ${reminderContent.length > 800 ? reminderContent.substring(0, 800) + '...' : reminderContent}`\r\n } else {\r\n const maxLength =\r\n msg.role === 'user' ? 1000 : msg.role === 'system' ? 1200 : 800\r\n content =\r\n msg.content.length > maxLength\r\n ? msg.content.substring(0, maxLength) + '...'\r\n : msg.content\r\n }\r\n } else if (Array.isArray(msg.content)) {\r\n const textBlocks = msg.content.filter(\r\n (block: any) => block.type === 'text',\r\n )\r\n const toolBlocks = msg.content.filter(\r\n (block: any) => block.type === 'tool_use',\r\n )\r\n if (textBlocks.length > 0) {\r\n const text = textBlocks[0].text || ''\r\n const maxLength = msg.role === 'assistant' ? 1000 : 800\r\n content =\r\n text.length > maxLength ? text.substring(0, maxLength) + '...' : text\r\n }\r\n if (toolBlocks.length > 0) {\r\n content += ` [+ ${toolBlocks.length} tool calls]`\r\n }\r\n if (textBlocks.length === 0 && toolBlocks.length === 0) {\r\n content = `[${msg.content.length} blocks: ${msg.content.map(b => b.type || 'unknown').join(', ')}]`\r\n }\r\n } else {\r\n content = '[complex_content]'\r\n }\r\n\r\n if (isReminder) {\r\n terminalLog(\r\n ` [${globalIndex}] ${chalk.magenta('\uD83D\uDD14 REMINDER')}: ${chalk.dim(content)}`,\r\n )\r\n } else {\r\n const roleIcon =\r\n msg.role === 'user'\r\n ? '\uD83D\uDC64'\r\n : msg.role === 'assistant'\r\n ? '\uD83E\uDD16'\r\n : msg.role === 'system'\r\n ? '\u2699\uFE0F'\r\n : '\uD83D\uDCC4'\r\n terminalLog(\r\n ` [${globalIndex}] ${(chalk as any)[roleColor](roleIcon + ' ' + msg.role.toUpperCase())}: ${content}`,\r\n )\r\n }\r\n\r\n if (msg.role === 'assistant' && Array.isArray(msg.content)) {\r\n const toolCalls = msg.content.filter(\r\n (block: any) => block.type === 'tool_use',\r\n )\r\n if (toolCalls.length > 0) {\r\n terminalLog(\r\n chalk.cyan(\r\n ` \uD83D\uDD27 \u2192 Tool calls (${toolCalls.length}): ${toolCalls.map((t: any) => t.name).join(', ')}`,\r\n ),\r\n )\r\n toolCalls.forEach((tool: any, idx: number) => {\r\n const inputStr = JSON.stringify(tool.input || {})\r\n const maxLength = 200\r\n const displayInput =\r\n inputStr.length > maxLength\r\n ? inputStr.substring(0, maxLength) + '...'\r\n : inputStr\r\n terminalLog(\r\n chalk.dim(` [${idx}] ${tool.name}: ${displayInput}`),\r\n )\r\n })\r\n }\r\n }\r\n if (msg.tool_calls && msg.tool_calls.length > 0) {\r\n terminalLog(\r\n chalk.cyan(\r\n ` \uD83D\uDD27 \u2192 Tool calls (${msg.tool_calls.length}): ${msg.tool_calls.map((t: any) => t.function.name).join(', ')}`,\r\n ),\r\n )\r\n msg.tool_calls.forEach((tool: any, idx: number) => {\r\n const inputStr = tool.function.arguments || '{}'\r\n const maxLength = 200\r\n const displayInput =\r\n inputStr.length > maxLength\r\n ? inputStr.substring(0, maxLength) + '...'\r\n : inputStr\r\n terminalLog(\r\n chalk.dim(` [${idx}] ${tool.function.name}: ${displayInput}`),\r\n )\r\n })\r\n }\r\n })\r\n\r\n terminalLog(chalk.magenta('\\n\uD83E\uDD16 LLM Response:'))\r\n\r\n let responseContent = ''\r\n let toolCalls: any[] = []\r\n\r\n if (Array.isArray(context.response.content)) {\r\n const textBlocks = context.response.content.filter(\r\n (block: any) => block.type === 'text',\r\n )\r\n responseContent = textBlocks.length > 0 ? textBlocks[0].text || '' : ''\r\n toolCalls = context.response.content.filter(\r\n (block: any) => block.type === 'tool_use',\r\n )\r\n } else if (typeof context.response.content === 'string') {\r\n responseContent = context.response.content\r\n toolCalls = context.response.tool_calls || context.response.toolCalls || []\r\n } else if (context.response.message?.content) {\r\n if (Array.isArray(context.response.message.content)) {\r\n const textBlocks = context.response.message.content.filter(\r\n (block: any) => block.type === 'text',\r\n )\r\n responseContent = textBlocks.length > 0 ? textBlocks[0].text || '' : ''\r\n toolCalls = context.response.message.content.filter(\r\n (block: any) => block.type === 'tool_use',\r\n )\r\n } else if (typeof context.response.message.content === 'string') {\r\n responseContent = context.response.message.content\r\n }\r\n } else {\r\n responseContent = JSON.stringify(\r\n context.response.content || context.response || '',\r\n )\r\n }\r\n\r\n const maxResponseLength = 1000\r\n const displayContent =\r\n responseContent.length > maxResponseLength\r\n ? responseContent.substring(0, maxResponseLength) + '...'\r\n : responseContent\r\n terminalLog(` Content: ${displayContent}`)\r\n\r\n if (toolCalls.length > 0) {\r\n const toolNames = toolCalls.map(\r\n (t: any) => t.name || t.function?.name || 'unknown',\r\n )\r\n terminalLog(\r\n chalk.cyan(\r\n ` \uD83D\uDD27 Tool Calls (${toolCalls.length}): ${toolNames.join(', ')}`,\r\n ),\r\n )\r\n toolCalls.forEach((tool: any, index: number) => {\r\n const toolName = tool.name || tool.function?.name || 'unknown'\r\n const toolInput = tool.input || tool.function?.arguments || '{}'\r\n const inputStr =\r\n typeof toolInput === 'string' ? toolInput : JSON.stringify(toolInput)\r\n const maxToolInputLength = 300\r\n const displayInput =\r\n inputStr.length > maxToolInputLength\r\n ? inputStr.substring(0, maxToolInputLength) + '...'\r\n : inputStr\r\n terminalLog(chalk.dim(` [${index}] ${toolName}: ${displayInput}`))\r\n })\r\n }\r\n\r\n terminalLog(\r\n ` Stop Reason: ${context.response.stop_reason || context.response.finish_reason || 'unknown'}`,\r\n )\r\n terminalLog(chalk.gray('\u2501'.repeat(60)))\r\n}\r\n\r\nexport function logSystemPromptConstruction(construction: {\r\n basePrompt: string\r\n kodeContext?: string\r\n reminders: string[]\r\n finalPrompt: string\r\n}) {\r\n if (!isDebugMode()) return\r\n\r\n terminalLog('\\n' + chalk.yellow('\uD83D\uDCDD SYSTEM PROMPT CONSTRUCTION'))\r\n terminalLog(` Base Prompt: ${construction.basePrompt.length} chars`)\r\n\r\n if (construction.newcrawContext) {\r\n terminalLog(` + NewCraw Context: ${construction.newcrawContext.length} chars`)\r\n }\r\n\r\n if (construction.reminders.length > 0) {\r\n terminalLog(\r\n ` + Dynamic Reminders: ${construction.reminders.length} items`,\r\n )\r\n construction.reminders.forEach((reminder, index) => {\r\n terminalLog(chalk.dim(` [${index}] ${reminder.substring(0, 80)}...`))\r\n })\r\n }\r\n\r\n terminalLog(` = Final Length: ${construction.finalPrompt.length} chars`)\r\n}\r\n\r\nexport function logContextCompression(compression: {\r\n beforeMessages: number\r\n afterMessages: number\r\n trigger: string\r\n preservedFiles: string[]\r\n compressionRatio: number\r\n}) {\r\n if (!isDebugMode()) return\r\n\r\n terminalLog('\\n' + chalk.red('\uD83D\uDDDC\uFE0F CONTEXT COMPRESSION'))\r\n terminalLog(` Trigger: ${compression.trigger}`)\r\n terminalLog(\r\n ` Messages: ${compression.beforeMessages} \u2192 ${compression.afterMessages}`,\r\n )\r\n terminalLog(\r\n ` Compression Ratio: ${(compression.compressionRatio * 100).toFixed(1)}%`,\r\n )\r\n\r\n if (compression.preservedFiles.length > 0) {\r\n terminalLog(` Preserved Files: ${compression.preservedFiles.join(', ')}`)\r\n }\r\n}\r\n\r\nexport function logUserFriendly(type: string, data: any, requestId?: string) {\r\n if (!isDebugMode()) return\r\n\r\n const timestamp = new Date().toLocaleTimeString()\r\n let message = ''\r\n let color = chalk.gray\r\n let icon = '\u2022'\r\n\r\n switch (type) {\r\n case 'SESSION_START':\r\n icon = '\uD83D\uDE80'\r\n color = chalk.green\r\n message = `Session started with ${data.model || 'default model'}`\r\n break\r\n case 'QUERY_START':\r\n icon = '\uD83D\uDCAD'\r\n color = chalk.blue\r\n message = `Processing query: \"${data.query?.substring(0, 50)}${data.query?.length > 50 ? '...' : ''}\"`\r\n break\r\n case 'QUERY_PROGRESS':\r\n icon = '\u23F3'\r\n color = chalk.yellow\r\n message = `${data.phase} (${data.elapsed}ms)`\r\n break\r\n case 'QUERY_COMPLETE':\r\n icon = '\u2705'\r\n color = chalk.green\r\n message = `Query completed in ${data.duration}ms - Cost: $${data.cost} - ${data.tokens} tokens`\r\n break\r\n case 'TOOL_EXECUTION':\r\n icon = '\uD83D\uDD27'\r\n color = chalk.cyan\r\n message = `${data.toolName}: ${data.action} ${data.target ? '\u2192 ' + data.target : ''}`\r\n break\r\n case 'ERROR_OCCURRED':\r\n icon = '\u274C'\r\n color = chalk.red\r\n message = `${data.error} ${data.context ? '(' + data.context + ')' : ''}`\r\n break\r\n case 'PERFORMANCE_SUMMARY':\r\n icon = '\uD83D\uDCCA'\r\n color = chalk.magenta\r\n message = `Session: ${data.queries} queries, $${data.totalCost}, ${data.avgResponseTime}ms avg`\r\n break\r\n default:\r\n message = JSON.stringify(data)\r\n }\r\n\r\n const reqId = requestId ? chalk.dim(`[${requestId.slice(0, 8)}]`) : ''\r\n terminalLog(`${color(`[${timestamp}]`)} ${icon} ${color(message)} ${reqId}`)\r\n}\r\n\r\nexport function initDebugLogger() {\r\n if (!isDebugMode()) return\r\n\r\n debug.info('DEBUG_LOGGER_INIT', {\r\n startupTimestamp: STARTUP_TIMESTAMP,\r\n sessionId: SESSION_ID,\r\n debugPaths: {\r\n detailed: DEBUG_PATHS.detailed(),\r\n flow: DEBUG_PATHS.flow(),\r\n api: DEBUG_PATHS.api(),\r\n state: DEBUG_PATHS.state(),\r\n },\r\n })\r\n\r\n const terminalLevels = isDebugVerboseMode()\r\n ? Array.from(DEBUG_VERBOSE_TERMINAL_LOG_LEVELS).join(', ')\r\n : Array.from(TERMINAL_LOG_LEVELS).join(', ')\r\n\r\n terminalLog(\r\n chalk.dim(`[DEBUG] Terminal output filtered to: ${terminalLevels}`),\r\n )\r\n terminalLog(\r\n chalk.dim(`[DEBUG] Complete logs saved to: ${DEBUG_PATHS.base()}`),\r\n )\r\n if (!isDebugVerboseMode()) {\r\n terminalLog(\r\n chalk.dim(\r\n `[DEBUG] Use --debug-verbose for detailed system logs (FLOW, API, STATE)`,\r\n ),\r\n )\r\n }\r\n}\r\n\r\ninterface ErrorDiagnosis {\r\n errorType: string\r\n category:\r\n | 'NETWORK'\r\n | 'API'\r\n | 'PERMISSION'\r\n | 'CONFIG'\r\n | 'SYSTEM'\r\n | 'USER_INPUT'\r\n severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL'\r\n description: string\r\n suggestions: string[]\r\n debugSteps: string[]\r\n relatedLogs?: string[]\r\n}\r\n\r\nexport function diagnoseError(error: any, context?: any): ErrorDiagnosis {\r\n const errorMessage = error instanceof Error ? error.message : String(error)\r\n const errorStack = error instanceof Error ? error.stack : undefined\r\n\r\n if (\r\n errorMessage.includes('aborted') ||\r\n errorMessage.includes('AbortController')\r\n ) {\r\n return {\r\n errorType: 'REQUEST_ABORTED',\r\n category: 'SYSTEM',\r\n severity: 'MEDIUM',\r\n description:\r\n 'Request was aborted, often due to user cancellation or timeout',\r\n suggestions: [\r\n '\u68C0\u67E5\u662F\u5426\u6309\u4E0B\u4E86 ESC \u952E\u53D6\u6D88\u8BF7\u6C42',\r\n '\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u7A33\u5B9A',\r\n '\u9A8C\u8BC1 AbortController \u72B6\u6001: isActive \u548C signal.aborted \u5E94\u8BE5\u4E00\u81F4',\r\n '\u67E5\u770B\u662F\u5426\u6709\u91CD\u590D\u7684\u8BF7\u6C42\u5BFC\u81F4\u51B2\u7A81',\r\n ],\r\n debugSteps: [\r\n '\u4F7F\u7528 --debug-verbose \u6A21\u5F0F\u67E5\u770B\u8BE6\u7EC6\u7684\u8BF7\u6C42\u6D41\u7A0B',\r\n '\u68C0\u67E5 debug \u65E5\u5FD7\u4E2D\u7684 BINARY_FEEDBACK_* \u4E8B\u4EF6',\r\n '\u9A8C\u8BC1 REQUEST_START \u548C REQUEST_END \u65E5\u5FD7\u914D\u5BF9',\r\n '\u67E5\u770B QUERY_ABORTED \u4E8B\u4EF6\u7684\u89E6\u53D1\u539F\u56E0',\r\n ],\r\n }\r\n }\r\n\r\n if (\r\n errorMessage.includes('api-key') ||\r\n errorMessage.includes('authentication') ||\r\n errorMessage.includes('401')\r\n ) {\r\n return {\r\n errorType: 'API_AUTHENTICATION',\r\n category: 'API',\r\n severity: 'HIGH',\r\n description: 'API authentication failed - invalid or missing API key',\r\n suggestions: [\r\n '\u8FD0\u884C /login \u91CD\u65B0\u8BBE\u7F6E API \u5BC6\u94A5',\r\n '\u68C0\u67E5 ~/.newcraw/ \u914D\u7F6E\u6587\u4EF6\u4E2D\u7684 API \u5BC6\u94A5',\r\n '\u9A8C\u8BC1 API \u5BC6\u94A5\u662F\u5426\u5DF2\u8FC7\u671F\u6216\u88AB\u64A4\u9500',\r\n '\u786E\u8BA4\u4F7F\u7528\u7684 provider \u8BBE\u7F6E\u6B63\u786E (anthropic/opendev/bigdream)',\r\n ],\r\n debugSteps: [\r\n '\u68C0\u67E5 CONFIG_LOAD \u65E5\u5FD7\u4E2D\u7684 provider \u548C API \u5BC6\u94A5\u72B6\u6001',\r\n '\u8FD0\u884C newcraw doctor \u68C0\u67E5\u7CFB\u7EDF\u5065\u5EB7\u72B6\u6001',\r\n '\u67E5\u770B API_ERROR \u65E5\u5FD7\u4E86\u89E3\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F',\r\n '\u4F7F\u7528 newcraw config \u547D\u4EE4\u67E5\u770B\u5F53\u524D\u914D\u7F6E',\r\n ],\r\n }\r\n }\r\n\r\n if (\r\n errorMessage.includes('ECONNREFUSED') ||\r\n errorMessage.includes('ENOTFOUND') ||\r\n errorMessage.includes('timeout')\r\n ) {\r\n return {\r\n errorType: 'NETWORK_CONNECTION',\r\n category: 'NETWORK',\r\n severity: 'HIGH',\r\n description: 'Network connection failed - unable to reach API endpoint',\r\n suggestions: [\r\n '\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u662F\u5426\u6B63\u5E38',\r\n '\u786E\u8BA4\u9632\u706B\u5899\u6CA1\u6709\u963B\u6B62\u76F8\u5173\u7AEF\u53E3',\r\n '\u68C0\u67E5 proxy \u8BBE\u7F6E\u662F\u5426\u6B63\u786E',\r\n '\u5C1D\u8BD5\u5207\u6362\u5230\u4E0D\u540C\u7684\u7F51\u7EDC\u73AF\u5883',\r\n '\u9A8C\u8BC1 baseURL \u914D\u7F6E\u662F\u5426\u6B63\u786E',\r\n ],\r\n debugSteps: [\r\n '\u68C0\u67E5 API_REQUEST_START \u548C\u76F8\u5173\u7F51\u7EDC\u65E5\u5FD7',\r\n '\u67E5\u770B LLM_REQUEST_ERROR \u4E2D\u7684\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F',\r\n '\u4F7F\u7528 ping \u6216 curl \u6D4B\u8BD5 API \u7AEF\u70B9\u8FDE\u901A\u6027',\r\n '\u68C0\u67E5\u4F01\u4E1A\u7F51\u7EDC\u662F\u5426\u9700\u8981\u4EE3\u7406\u8BBE\u7F6E',\r\n ],\r\n }\r\n }\r\n\r\n if (\r\n errorMessage.includes('permission') ||\r\n errorMessage.includes('EACCES') ||\r\n errorMessage.includes('denied')\r\n ) {\r\n return {\r\n errorType: 'PERMISSION_DENIED',\r\n category: 'PERMISSION',\r\n severity: 'MEDIUM',\r\n description: 'Permission denied - insufficient access rights',\r\n suggestions: [\r\n '\u68C0\u67E5\u6587\u4EF6\u548C\u76EE\u5F55\u7684\u8BFB\u5199\u6743\u9650',\r\n '\u786E\u8BA4\u5F53\u524D\u7528\u6237\u6709\u8DB3\u591F\u7684\u7CFB\u7EDF\u6743\u9650',\r\n '\u67E5\u770B\u662F\u5426\u9700\u8981\u7BA1\u7406\u5458\u6743\u9650\u8FD0\u884C',\r\n '\u68C0\u67E5\u5DE5\u5177\u6743\u9650\u8BBE\u7F6E\u662F\u5426\u6B63\u786E\u914D\u7F6E',\r\n ],\r\n debugSteps: [\r\n '\u67E5\u770B PERMISSION_* \u65E5\u5FD7\u4E86\u89E3\u6743\u9650\u68C0\u67E5\u8FC7\u7A0B',\r\n '\u68C0\u67E5\u6587\u4EF6\u7CFB\u7EDF\u6743\u9650: ls -la',\r\n '\u9A8C\u8BC1\u5DE5\u5177\u5BA1\u6279\u72B6\u6001',\r\n '\u67E5\u770B TOOL_* \u76F8\u5173\u7684\u8C03\u8BD5\u65E5\u5FD7',\r\n ],\r\n }\r\n }\r\n\r\n if (\r\n errorMessage.includes('substring is not a function') ||\r\n errorMessage.includes('content')\r\n ) {\r\n return {\r\n errorType: 'RESPONSE_FORMAT',\r\n category: 'API',\r\n severity: 'MEDIUM',\r\n description: 'LLM response format mismatch between different providers',\r\n suggestions: [\r\n '\u68C0\u67E5\u5F53\u524D\u4F7F\u7528\u7684 provider \u662F\u5426\u4E0E\u671F\u671B\u4E00\u81F4',\r\n '\u9A8C\u8BC1\u54CD\u5E94\u683C\u5F0F\u5904\u7406\u903B\u8F91',\r\n '\u786E\u8BA4\u4E0D\u540C provider \u7684\u54CD\u5E94\u683C\u5F0F\u5DEE\u5F02',\r\n '\u68C0\u67E5\u662F\u5426\u9700\u8981\u66F4\u65B0\u54CD\u5E94\u89E3\u6790\u4EE3\u7801',\r\n ],\r\n debugSteps: [\r\n '\u67E5\u770B LLM_CALL_DEBUG \u4E2D\u7684\u54CD\u5E94\u683C\u5F0F',\r\n '\u68C0\u67E5 provider \u914D\u7F6E\u548C\u5B9E\u9645\u4F7F\u7528\u7684 API',\r\n '\u5BF9\u6BD4 Anthropic \u548C OpenAI \u54CD\u5E94\u683C\u5F0F\u5DEE\u5F02',\r\n '\u9A8C\u8BC1 logLLMInteraction \u51FD\u6570\u7684\u683C\u5F0F\u5904\u7406',\r\n ],\r\n }\r\n }\r\n\r\n if (\r\n errorMessage.includes('too long') ||\r\n errorMessage.includes('context') ||\r\n errorMessage.includes('token')\r\n ) {\r\n return {\r\n errorType: 'CONTEXT_OVERFLOW',\r\n category: 'SYSTEM',\r\n severity: 'MEDIUM',\r\n description: 'Context window exceeded - conversation too long',\r\n suggestions: [\r\n '\u8FD0\u884C /compact \u624B\u52A8\u538B\u7F29\u5BF9\u8BDD\u5386\u53F2',\r\n '\u68C0\u67E5\u81EA\u52A8\u538B\u7F29\u8BBE\u7F6E\u662F\u5426\u6B63\u786E\u914D\u7F6E',\r\n '\u51CF\u5C11\u5355\u6B21\u8F93\u5165\u7684\u5185\u5BB9\u957F\u5EA6',\r\n '\u6E05\u7406\u4E0D\u5FC5\u8981\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F',\r\n ],\r\n debugSteps: [\r\n '\u67E5\u770B AUTO_COMPACT_* \u65E5\u5FD7\u68C0\u67E5\u538B\u7F29\u89E6\u53D1',\r\n '\u68C0\u67E5 token \u4F7F\u7528\u91CF\u548C\u9608\u503C',\r\n '\u67E5\u770B CONTEXT_COMPRESSION \u76F8\u5173\u65E5\u5FD7',\r\n '\u9A8C\u8BC1\u6A21\u578B\u7684\u6700\u5927 token \u9650\u5236',\r\n ],\r\n }\r\n }\r\n\r\n if (\r\n errorMessage.includes('config') ||\r\n (errorMessage.includes('undefined') && context?.configRelated)\r\n ) {\r\n return {\r\n errorType: 'CONFIGURATION',\r\n category: 'CONFIG',\r\n severity: 'MEDIUM',\r\n description: 'Configuration error - missing or invalid settings',\r\n suggestions: [\r\n '\u8FD0\u884C newcraw config \u68C0\u67E5\u914D\u7F6E\u8BBE\u7F6E',\r\n '\u5220\u9664\u635F\u574F\u7684\u914D\u7F6E\u6587\u4EF6\u91CD\u65B0\u521D\u59CB\u5316',\r\n '\u68C0\u67E5 JSON \u914D\u7F6E\u6587\u4EF6\u8BED\u6CD5\u662F\u5426\u6B63\u786E',\r\n '\u9A8C\u8BC1\u73AF\u5883\u53D8\u91CF\u8BBE\u7F6E',\r\n ],\r\n debugSteps: [\r\n '\u67E5\u770B CONFIG_LOAD \u548C CONFIG_SAVE \u65E5\u5FD7',\r\n '\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6\u8DEF\u5F84\u548C\u6743\u9650',\r\n '\u9A8C\u8BC1 JSON \u683C\u5F0F: cat ~/.newcraw/config.json | jq',\r\n '\u67E5\u770B\u914D\u7F6E\u7F13\u5B58\u76F8\u5173\u7684\u8C03\u8BD5\u4FE1\u606F',\r\n ],\r\n }\r\n }\r\n\r\n return {\r\n errorType: 'UNKNOWN',\r\n category: 'SYSTEM',\r\n severity: 'MEDIUM',\r\n description: `Unexpected error: ${errorMessage}`,\r\n suggestions: [\r\n '\u91CD\u65B0\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F',\r\n '\u68C0\u67E5\u7CFB\u7EDF\u8D44\u6E90\u662F\u5426\u5145\u8DB3',\r\n '\u67E5\u770B\u5B8C\u6574\u7684\u9519\u8BEF\u65E5\u5FD7\u83B7\u53D6\u66F4\u591A\u4FE1\u606F',\r\n '\u5982\u679C\u95EE\u9898\u6301\u7EED\uFF0C\u8BF7\u62A5\u544A\u6B64\u9519\u8BEF',\r\n ],\r\n debugSteps: [\r\n '\u4F7F\u7528 --debug-verbose \u83B7\u53D6\u8BE6\u7EC6\u65E5\u5FD7',\r\n '\u68C0\u67E5 error.log \u4E2D\u7684\u5B8C\u6574\u9519\u8BEF\u4FE1\u606F',\r\n '\u67E5\u770B\u7CFB\u7EDF\u8D44\u6E90\u4F7F\u7528\u60C5\u51B5',\r\n '\u6536\u96C6\u91CD\u73B0\u6B65\u9AA4\u548C\u73AF\u5883\u4FE1\u606F',\r\n ],\r\n relatedLogs: errorStack ? [errorStack] : undefined,\r\n }\r\n}\r\n\r\nexport function logErrorWithDiagnosis(\r\n error: any,\r\n context?: any,\r\n requestId?: string,\r\n) {\r\n if (!isDebugMode()) return\r\n\r\n const diagnosis = diagnoseError(error, context)\r\n const errorMessage = error instanceof Error ? error.message : String(error)\r\n\r\n debug.error(\r\n 'ERROR_OCCURRED',\r\n {\r\n error: errorMessage,\r\n errorType: diagnosis.errorType,\r\n category: diagnosis.category,\r\n severity: diagnosis.severity,\r\n context,\r\n },\r\n requestId,\r\n )\r\n\r\n terminalLog('\\n' + chalk.red('\uD83D\uDEA8 ERROR DIAGNOSIS'))\r\n terminalLog(chalk.gray('\u2501'.repeat(60)))\r\n\r\n terminalLog(chalk.red(`\u274C ${diagnosis.errorType}`))\r\n terminalLog(\r\n chalk.dim(\r\n `Category: ${diagnosis.category} | Severity: ${diagnosis.severity}`,\r\n ),\r\n )\r\n terminalLog(`\\n${diagnosis.description}`)\r\n\r\n terminalLog(chalk.yellow('\\n\uD83D\uDCA1 Recovery Suggestions:'))\r\n diagnosis.suggestions.forEach((suggestion, index) => {\r\n terminalLog(` ${index + 1}. ${suggestion}`)\r\n })\r\n\r\n terminalLog(chalk.cyan('\\n\uD83D\uDD0D Debug Steps:'))\r\n diagnosis.debugSteps.forEach((step, index) => {\r\n terminalLog(` ${index + 1}. ${step}`)\r\n })\r\n\r\n if (diagnosis.relatedLogs && diagnosis.relatedLogs.length > 0) {\r\n terminalLog(chalk.magenta('\\n\uD83D\uDCCB Related Information:'))\r\n diagnosis.relatedLogs.forEach((log, index) => {\r\n const truncatedLog =\r\n log.length > 200 ? log.substring(0, 200) + '...' : log\r\n terminalLog(chalk.dim(` ${truncatedLog}`))\r\n })\r\n }\r\n\r\n const debugPath = DEBUG_PATHS.base()\r\n terminalLog(chalk.gray(`\\n\uD83D\uDCC1 Complete logs: ${debugPath}`))\r\n terminalLog(chalk.gray('\u2501'.repeat(60)))\r\n}\r\nexport function getDebugInfo() {\r\n return {\r\n isDebugMode: isDebugMode(),\r\n isVerboseMode: isVerboseMode(),\r\n isDebugVerboseMode: isDebugVerboseMode(),\r\n startupTimestamp: STARTUP_TIMESTAMP,\r\n sessionId: SESSION_ID,\r\n currentRequest: currentRequest?.id,\r\n activeRequests: Array.from(activeRequests.keys()),\r\n terminalLogLevels: isDebugVerboseMode()\r\n ? Array.from(DEBUG_VERBOSE_TERMINAL_LOG_LEVELS)\r\n : Array.from(TERMINAL_LOG_LEVELS),\r\n debugPaths: {\r\n detailed: DEBUG_PATHS.detailed(),\r\n flow: DEBUG_PATHS.flow(),\r\n api: DEBUG_PATHS.api(),\r\n state: DEBUG_PATHS.state(),\r\n },\r\n }\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["toolCalls"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createRequire as __newcrawCreateRequire } from "node:module";
|
|
2
|
+
const require = __newcrawCreateRequire(import.meta.url);
|
|
3
|
+
|
|
4
|
+
// src/utils/terminal/format.ts
|
|
5
|
+
function wrapText(text, width) {
|
|
6
|
+
const lines = [];
|
|
7
|
+
let currentLine = "";
|
|
8
|
+
for (const char of text) {
|
|
9
|
+
if ([...currentLine].length < width) {
|
|
10
|
+
currentLine += char;
|
|
11
|
+
} else {
|
|
12
|
+
lines.push(currentLine);
|
|
13
|
+
currentLine = char;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (currentLine) lines.push(currentLine);
|
|
17
|
+
return lines;
|
|
18
|
+
}
|
|
19
|
+
function formatDuration(ms) {
|
|
20
|
+
if (ms < 6e4) {
|
|
21
|
+
return `${(ms / 1e3).toFixed(1)}s`;
|
|
22
|
+
}
|
|
23
|
+
const hours = Math.floor(ms / 36e5);
|
|
24
|
+
const minutes = Math.floor(ms % 36e5 / 6e4);
|
|
25
|
+
const seconds = (ms % 6e4 / 1e3).toFixed(1);
|
|
26
|
+
if (hours > 0) {
|
|
27
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
28
|
+
}
|
|
29
|
+
if (minutes > 0) {
|
|
30
|
+
return `${minutes}m ${seconds}s`;
|
|
31
|
+
}
|
|
32
|
+
return `${seconds}s`;
|
|
33
|
+
}
|
|
34
|
+
function formatNumber(number) {
|
|
35
|
+
return new Intl.NumberFormat("en", {
|
|
36
|
+
notation: "compact",
|
|
37
|
+
maximumFractionDigits: 1
|
|
38
|
+
}).format(number).toLowerCase();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
wrapText,
|
|
43
|
+
formatDuration,
|
|
44
|
+
formatNumber
|
|
45
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/terminal/format.ts"],
|
|
4
|
+
"sourcesContent": ["export function wrapText(text: string, width: number): string[] {\r\n const lines: string[] = []\r\n let currentLine = ''\r\n\r\n for (const char of text) {\r\n if ([...currentLine].length < width) {\r\n currentLine += char\r\n } else {\r\n lines.push(currentLine)\r\n currentLine = char\r\n }\r\n }\r\n\r\n if (currentLine) lines.push(currentLine)\r\n return lines\r\n}\r\n\r\nexport function formatDuration(ms: number): string {\r\n if (ms < 60000) {\r\n return `${(ms / 1000).toFixed(1)}s`\r\n }\r\n\r\n const hours = Math.floor(ms / 3600000)\r\n const minutes = Math.floor((ms % 3600000) / 60000)\r\n const seconds = ((ms % 60000) / 1000).toFixed(1)\r\n\r\n if (hours > 0) {\r\n return `${hours}h ${minutes}m ${seconds}s`\r\n }\r\n if (minutes > 0) {\r\n return `${minutes}m ${seconds}s`\r\n }\r\n return `${seconds}s`\r\n}\r\n\r\nexport function formatNumber(number: number): string {\r\n return new Intl.NumberFormat('en', {\r\n notation: 'compact',\r\n maximumFractionDigits: 1,\r\n })\r\n .format(number)\r\n .toLowerCase()\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;;;AAAO,SAAS,SAAS,MAAc,OAAyB;AAC9D,QAAM,QAAkB,CAAC;AACzB,MAAI,cAAc;AAElB,aAAW,QAAQ,MAAM;AACvB,QAAI,CAAC,GAAG,WAAW,EAAE,SAAS,OAAO;AACnC,qBAAe;AAAA,IACjB,OAAO;AACL,YAAM,KAAK,WAAW;AACtB,oBAAc;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,YAAa,OAAM,KAAK,WAAW;AACvC,SAAO;AACT;AAEO,SAAS,eAAe,IAAoB;AACjD,MAAI,KAAK,KAAO;AACd,WAAO,IAAI,KAAK,KAAM,QAAQ,CAAC,CAAC;AAAA,EAClC;AAEA,QAAM,QAAQ,KAAK,MAAM,KAAK,IAAO;AACrC,QAAM,UAAU,KAAK,MAAO,KAAK,OAAW,GAAK;AACjD,QAAM,WAAY,KAAK,MAAS,KAAM,QAAQ,CAAC;AAE/C,MAAI,QAAQ,GAAG;AACb,WAAO,GAAG,KAAK,KAAK,OAAO,KAAK,OAAO;AAAA,EACzC;AACA,MAAI,UAAU,GAAG;AACf,WAAO,GAAG,OAAO,KAAK,OAAO;AAAA,EAC/B;AACA,SAAO,GAAG,OAAO;AACnB;AAEO,SAAS,aAAa,QAAwB;AACnD,SAAO,IAAI,KAAK,aAAa,MAAM;AAAA,IACjC,UAAU;AAAA,IACV,uBAAuB;AAAA,EACzB,CAAC,EACE,OAAO,MAAM,EACb,YAAY;AACjB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createRequire as __newcrawCreateRequire } from "node:module";
|
|
2
|
+
const require = __newcrawCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
PRODUCT_NAME,
|
|
5
|
+
init_product
|
|
6
|
+
} from "./chunk-UYWZQVH5.js";
|
|
7
|
+
|
|
8
|
+
// src/core/identity.ts
|
|
9
|
+
init_product();
|
|
10
|
+
var DEFAULT_IDENTITY = {
|
|
11
|
+
name: PRODUCT_NAME,
|
|
12
|
+
description: "an AI assistant that helps with coding, research, planning, and daily tasks",
|
|
13
|
+
domain: "coding",
|
|
14
|
+
tone: "concise"
|
|
15
|
+
};
|
|
16
|
+
var currentIdentity = { ...DEFAULT_IDENTITY };
|
|
17
|
+
function getIdentity() {
|
|
18
|
+
return currentIdentity;
|
|
19
|
+
}
|
|
20
|
+
function setIdentity(identity) {
|
|
21
|
+
currentIdentity = { ...currentIdentity, ...identity };
|
|
22
|
+
}
|
|
23
|
+
function resetIdentity() {
|
|
24
|
+
currentIdentity = { ...DEFAULT_IDENTITY };
|
|
25
|
+
}
|
|
26
|
+
function getIdentityPrompt() {
|
|
27
|
+
const { name, description } = currentIdentity;
|
|
28
|
+
return `You are ${name}, ${description}.`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export {
|
|
32
|
+
getIdentity,
|
|
33
|
+
setIdentity,
|
|
34
|
+
resetIdentity,
|
|
35
|
+
getIdentityPrompt
|
|
36
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/identity.ts"],
|
|
4
|
+
"sourcesContent": ["import { PRODUCT_NAME } from '@constants/product'\r\n\r\nexport type AgentTone = 'concise' | 'friendly' | 'professional'\r\nexport type AgentDomain = 'coding' | 'general' | string\r\n\r\nexport interface AgentIdentity {\r\n name: string\r\n description: string\r\n domain: AgentDomain\r\n tone?: AgentTone\r\n language?: string\r\n}\r\n\r\nconst DEFAULT_IDENTITY: AgentIdentity = {\r\n name: PRODUCT_NAME,\r\n description: \"an AI assistant that helps with coding, research, planning, and daily tasks\",\r\n domain: 'coding',\r\n tone: 'concise',\r\n}\r\n\r\nlet currentIdentity: AgentIdentity = { ...DEFAULT_IDENTITY }\r\n\r\nexport function getIdentity(): AgentIdentity {\r\n return currentIdentity\r\n}\r\n\r\nexport function setIdentity(identity: Partial<AgentIdentity>): void {\r\n currentIdentity = { ...currentIdentity, ...identity }\r\n}\r\n\r\nexport function resetIdentity(): void {\r\n currentIdentity = { ...DEFAULT_IDENTITY }\r\n}\r\n\r\nexport function getIdentityPrompt(): string {\r\n const { name, description } = currentIdentity\r\n return `You are ${name}, ${description}.`\r\n}\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;AAAA;AAaA,IAAM,mBAAkC;AAAA,EACtC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,MAAM;AACR;AAEA,IAAI,kBAAiC,EAAE,GAAG,iBAAiB;AAEpD,SAAS,cAA6B;AAC3C,SAAO;AACT;AAEO,SAAS,YAAY,UAAwC;AAClE,oBAAkB,EAAE,GAAG,iBAAiB,GAAG,SAAS;AACtD;AAEO,SAAS,gBAAsB;AACpC,oBAAkB,EAAE,GAAG,iBAAiB;AAC1C;AAEO,SAAS,oBAA4B;AAC1C,QAAM,EAAE,MAAM,YAAY,IAAI;AAC9B,SAAO,WAAW,IAAI,KAAK,WAAW;AACxC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|