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
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/model/index.ts"],
|
|
4
4
|
"sourcesContent": ["import { memoize } from 'lodash-es'\r\n\r\nimport { logError } from '@utils/log'\r\nimport { debug as debugLogger } from '@utils/log/debugLogger'\r\nimport {\r\n getGlobalConfig,\r\n ModelProfile,\r\n ModelPointerType,\r\n saveGlobalConfig,\r\n} from '@utils/config'\r\n\r\nexport const USE_BEDROCK = !!(\r\n process.env.NEWCRAW_USE_BEDROCK ?? process.env.CLAUDE_CODE_USE_BEDROCK\r\n)\r\nexport const USE_VERTEX = !!(\r\n process.env.NEWCRAW_USE_VERTEX ?? process.env.CLAUDE_CODE_USE_VERTEX\r\n)\r\n\r\nexport interface ModelConfig {\r\n bedrock: string\r\n vertex: string\r\n firstParty: string\r\n}\r\n\r\nconst DEFAULT_MODEL_CONFIG: ModelConfig = {\r\n bedrock: 'us.anthropic.claude-3-7-sonnet-20250219-v1:0',\r\n vertex: 'claude-3-7-sonnet@20250219',\r\n firstParty: 'claude-sonnet-4-20250514',\r\n}\r\n\r\nasync function getModelConfig(): Promise<ModelConfig> {\r\n return DEFAULT_MODEL_CONFIG\r\n}\r\n\r\nexport const getSlowAndCapableModel = memoize(async (): Promise<string> => {\r\n const config = await getGlobalConfig()\r\n\r\n const modelManager = new ModelManager(config)\r\n const model = modelManager.getMainAgentModel()\r\n\r\n if (model) {\r\n return model\r\n }\r\n\r\n const modelConfig = await getModelConfig()\r\n if (USE_BEDROCK) return modelConfig.bedrock\r\n if (USE_VERTEX) return modelConfig.vertex\r\n return modelConfig.firstParty\r\n})\r\n\r\nexport async function isDefaultSlowAndCapableModel(): Promise<boolean> {\r\n return (\r\n !process.env.ANTHROPIC_MODEL ||\r\n process.env.ANTHROPIC_MODEL === (await getSlowAndCapableModel())\r\n )\r\n}\r\n\r\nexport function getVertexRegionForModel(\r\n model: string | undefined,\r\n): string | undefined {\r\n if (model?.startsWith('claude-3-5-haiku')) {\r\n return process.env.VERTEX_REGION_CLAUDE_3_5_HAIKU\r\n } else if (model?.startsWith('claude-3-5-sonnet')) {\r\n return process.env.VERTEX_REGION_CLAUDE_3_5_SONNET\r\n } else if (model?.startsWith('claude-3-7-sonnet')) {\r\n return process.env.VERTEX_REGION_CLAUDE_3_7_SONNET\r\n }\r\n}\r\n\r\nexport class ModelManager {\r\n private config: any\r\n private modelProfiles: ModelProfile[]\r\n\r\n constructor(config: any) {\r\n this.config = config\r\n this.modelProfiles = config.modelProfiles || []\r\n }\r\n\r\n getCurrentModel(): string | null {\r\n const mainModelName = this.config.modelPointers?.main\r\n if (mainModelName) {\r\n const profile = this.findModelProfile(mainModelName)\r\n if (profile && profile.isActive) {\r\n return profile.modelName\r\n }\r\n }\r\n\r\n return this.getMainAgentModel()\r\n }\r\n\r\n getMainAgentModel(): string | null {\r\n const mainModelName = this.config.modelPointers?.main\r\n if (mainModelName) {\r\n const profile = this.findModelProfile(mainModelName)\r\n if (profile && profile.isActive) {\r\n return profile.modelName\r\n }\r\n }\r\n\r\n const activeProfile = this.modelProfiles.find(p => p.isActive)\r\n if (activeProfile) {\r\n return activeProfile.modelName\r\n }\r\n\r\n return null\r\n }\r\n\r\n getTaskToolModel(): string | null {\r\n const taskModelName = this.config.modelPointers?.task\r\n if (taskModelName) {\r\n const profile = this.findModelProfile(taskModelName)\r\n if (profile && profile.isActive) {\r\n return profile.modelName\r\n }\r\n }\r\n\r\n return this.getMainAgentModel()\r\n }\r\n\r\n switchToNextModelWithContextCheck(currentContextTokens: number = 0): {\r\n success: boolean\r\n modelName: string | null\r\n previousModelName: string | null\r\n contextOverflow: boolean\r\n usagePercentage: number\r\n currentContextTokens: number\r\n skippedModels?: Array<{\r\n name: string\r\n provider: string\r\n contextLength: number\r\n budgetTokens: number | null\r\n usagePercentage: number\r\n }>\r\n } {\r\n const allProfiles = this.getAllConfiguredModels()\r\n if (allProfiles.length === 0) {\r\n return {\r\n success: false,\r\n modelName: null,\r\n previousModelName: null,\r\n contextOverflow: false,\r\n usagePercentage: 0,\r\n currentContextTokens,\r\n }\r\n }\r\n\r\n allProfiles.sort((a, b) => a.createdAt - b.createdAt)\r\n\r\n const currentMainModelName = this.config.modelPointers?.main\r\n const currentModel = currentMainModelName\r\n ? this.findModelProfile(currentMainModelName)\r\n : null\r\n const previousModelName = currentModel?.name || null\r\n\r\n const budgetForModel = (\r\n model: ModelProfile,\r\n ): {\r\n budgetTokens: number | null\r\n usagePercentage: number\r\n compatible: boolean\r\n } => {\r\n const contextLength = Number(model.contextLength)\r\n if (!Number.isFinite(contextLength) || contextLength <= 0) {\r\n return { budgetTokens: null, usagePercentage: 0, compatible: true }\r\n }\r\n const budgetTokens = Math.floor(contextLength * 0.9)\r\n const usagePercentage =\r\n budgetTokens > 0 ? (currentContextTokens / budgetTokens) * 100 : 0\r\n return {\r\n budgetTokens,\r\n usagePercentage,\r\n compatible:\r\n budgetTokens > 0 ? currentContextTokens <= budgetTokens : true,\r\n }\r\n }\r\n\r\n const currentIndex = currentMainModelName\r\n ? allProfiles.findIndex(p => p.modelName === currentMainModelName)\r\n : -1\r\n const startIndex = currentIndex >= 0 ? currentIndex : -1\r\n\r\n if (allProfiles.length === 1) {\r\n return {\r\n success: false,\r\n modelName: null,\r\n previousModelName,\r\n contextOverflow: false,\r\n usagePercentage: 0,\r\n currentContextTokens,\r\n }\r\n }\r\n\r\n const maxOffsets =\r\n startIndex === -1 ? allProfiles.length : allProfiles.length - 1\r\n const skippedModels: NonNullable<\r\n ReturnType<\r\n ModelManager['switchToNextModelWithContextCheck']\r\n >['skippedModels']\r\n > = []\r\n\r\n let selected: ModelProfile | null = null\r\n let selectedUsagePercentage = 0\r\n\r\n for (let offset = 1; offset <= maxOffsets; offset++) {\r\n const candidateIndex =\r\n (startIndex + offset + allProfiles.length) % allProfiles.length\r\n const candidate = allProfiles[candidateIndex]\r\n if (!candidate) continue\r\n\r\n const { budgetTokens, usagePercentage, compatible } =\r\n budgetForModel(candidate)\r\n if (compatible) {\r\n selected = candidate\r\n selectedUsagePercentage = usagePercentage\r\n break\r\n }\r\n skippedModels.push({\r\n name: candidate.name,\r\n provider: candidate.provider,\r\n contextLength: candidate.contextLength,\r\n budgetTokens,\r\n usagePercentage,\r\n })\r\n }\r\n\r\n if (!selected) {\r\n const firstSkipped = skippedModels[0]\r\n return {\r\n success: false,\r\n modelName: null,\r\n previousModelName,\r\n contextOverflow: true,\r\n usagePercentage: firstSkipped?.usagePercentage ?? 0,\r\n currentContextTokens,\r\n skippedModels,\r\n }\r\n }\r\n\r\n if (!selected.isActive) {\r\n selected.isActive = true\r\n }\r\n\r\n this.setPointer('main', selected.modelName)\r\n this.updateLastUsed(selected.modelName)\r\n\r\n return {\r\n success: true,\r\n modelName: selected.name,\r\n previousModelName,\r\n contextOverflow: false,\r\n usagePercentage: selectedUsagePercentage,\r\n currentContextTokens,\r\n skippedModels,\r\n }\r\n }\r\n\r\n switchToNextModel(currentContextTokens: number = 0): {\r\n success: boolean\r\n modelName: string | null\r\n blocked?: boolean\r\n message?: string\r\n } {\r\n const result = this.switchToNextModelWithContextCheck(currentContextTokens)\r\n\r\n const formatTokens = (tokens: number): string => {\r\n if (!Number.isFinite(tokens)) return 'unknown'\r\n if (tokens >= 1000) return `${Math.round(tokens / 1000)}k`\r\n return String(Math.round(tokens))\r\n }\r\n\r\n const allModels = this.getAllConfiguredModels()\r\n if (allModels.length === 0) {\r\n return {\r\n success: false,\r\n modelName: null,\r\n blocked: false,\r\n message: '\u274C No models configured. Use /model to add models.',\r\n }\r\n }\r\n if (allModels.length === 1) {\r\n return {\r\n success: false,\r\n modelName: null,\r\n blocked: false,\r\n message: `\u26A0\uFE0F Only one model configured (${allModels[0].modelName}). Use /model to add more models for switching.`,\r\n }\r\n }\r\n\r\n const currentModel = this.findModelProfile(this.config.modelPointers?.main)\r\n const modelsSorted = [...allModels].sort(\r\n (a, b) => a.createdAt - b.createdAt,\r\n )\r\n const currentIndex = modelsSorted.findIndex(\r\n m => m.modelName === currentModel?.modelName,\r\n )\r\n const totalModels = modelsSorted.length\r\n\r\n if (result.success && result.modelName) {\r\n const skippedCount = result.skippedModels?.length ?? 0\r\n const skippedSuffix =\r\n skippedCount > 0 ? ` \u00B7 skipped ${skippedCount} incompatible` : ''\r\n const contextSuffix =\r\n currentModel?.contextLength && result.currentContextTokens\r\n ? ` \u00B7 context ~${formatTokens(result.currentContextTokens)}/${formatTokens(currentModel.contextLength)}`\r\n : ''\r\n\r\n return {\r\n success: true,\r\n modelName: result.modelName,\r\n blocked: false,\r\n message: `\u2705 Switched to ${result.modelName} (${currentIndex + 1}/${totalModels})${currentModel?.provider ? ` [${currentModel.provider}]` : ''}${skippedSuffix}${contextSuffix}`,\r\n }\r\n }\r\n\r\n if (result.contextOverflow) {\r\n const attempted = result.skippedModels?.[0]\r\n const attemptedContext = attempted?.contextLength\r\n const attemptedBudget = attempted?.budgetTokens\r\n const currentLabel =\r\n currentModel?.name || currentModel?.modelName || 'current model'\r\n\r\n const attemptedText = attempted\r\n ? `Can't switch to ${attempted.name}: current ~${formatTokens(result.currentContextTokens)} tokens exceeds safe budget (~${formatTokens(attemptedBudget ?? 0)} tokens, 90% of ${formatTokens(attemptedContext ?? 0)}).`\r\n : `Can't switch models due to context size (~${formatTokens(result.currentContextTokens)} tokens).`\r\n\r\n return {\r\n success: false,\r\n modelName: null,\r\n blocked: true,\r\n message: `\u26A0\uFE0F ${attemptedText} Keeping ${currentLabel}.`,\r\n }\r\n }\r\n\r\n return {\r\n success: false,\r\n modelName: null,\r\n blocked: false,\r\n message: '\u274C Failed to switch models',\r\n }\r\n }\r\n\r\n revertToPreviousModel(previousModelName: string): boolean {\r\n const previousModel = this.modelProfiles.find(\r\n p => p.name === previousModelName && p.isActive,\r\n )\r\n if (!previousModel) {\r\n return false\r\n }\r\n\r\n this.setPointer('main', previousModel.modelName)\r\n this.updateLastUsed(previousModel.modelName)\r\n return true\r\n }\r\n\r\n analyzeContextCompatibility(\r\n model: ModelProfile,\r\n contextTokens: number,\r\n ): {\r\n compatible: boolean\r\n severity: 'safe' | 'warning' | 'critical'\r\n usagePercentage: number\r\n recommendation: string\r\n } {\r\n const usableContext = Math.floor(model.contextLength * 0.8)\r\n const usagePercentage = (contextTokens / usableContext) * 100\r\n\r\n if (usagePercentage <= 70) {\r\n return {\r\n compatible: true,\r\n severity: 'safe',\r\n usagePercentage,\r\n recommendation: 'Full context preserved',\r\n }\r\n } else if (usagePercentage <= 90) {\r\n return {\r\n compatible: true,\r\n severity: 'warning',\r\n usagePercentage,\r\n recommendation: 'Context usage high, consider compression',\r\n }\r\n } else {\r\n return {\r\n compatible: false,\r\n severity: 'critical',\r\n usagePercentage,\r\n recommendation: 'Auto-compression or message truncation required',\r\n }\r\n }\r\n }\r\n\r\n switchToNextModelWithAnalysis(currentContextTokens: number = 0): {\r\n modelName: string | null\r\n contextAnalysis: ReturnType<typeof this.analyzeContextCompatibility> | null\r\n requiresCompression: boolean\r\n estimatedTokensAfterSwitch: number\r\n } {\r\n const result = this.switchToNextModel(currentContextTokens)\r\n\r\n if (!result.success || !result.modelName) {\r\n return {\r\n modelName: null,\r\n contextAnalysis: null,\r\n requiresCompression: false,\r\n estimatedTokensAfterSwitch: 0,\r\n }\r\n }\r\n\r\n const newModel = this.getModel('main')\r\n if (!newModel) {\r\n return {\r\n modelName: result.modelName,\r\n contextAnalysis: null,\r\n requiresCompression: false,\r\n estimatedTokensAfterSwitch: currentContextTokens,\r\n }\r\n }\r\n\r\n const analysis = this.analyzeContextCompatibility(\r\n newModel,\r\n currentContextTokens,\r\n )\r\n\r\n return {\r\n modelName: result.modelName,\r\n contextAnalysis: analysis,\r\n requiresCompression: analysis.severity === 'critical',\r\n estimatedTokensAfterSwitch: currentContextTokens,\r\n }\r\n }\r\n\r\n canModelHandleContext(model: ModelProfile, contextTokens: number): boolean {\r\n const analysis = this.analyzeContextCompatibility(model, contextTokens)\r\n return analysis.compatible\r\n }\r\n\r\n findModelWithSufficientContext(\r\n models: ModelProfile[],\r\n contextTokens: number,\r\n ): ModelProfile | null {\r\n return (\r\n models.find(model => this.canModelHandleContext(model, contextTokens)) ||\r\n null\r\n )\r\n }\r\n\r\n getModelForContext(\r\n contextType: 'terminal' | 'main-agent' | 'task-tool',\r\n ): string | null {\r\n switch (contextType) {\r\n case 'terminal':\r\n return this.getCurrentModel()\r\n case 'main-agent':\r\n return this.getMainAgentModel()\r\n case 'task-tool':\r\n return this.getTaskToolModel()\r\n default:\r\n return this.getMainAgentModel()\r\n }\r\n }\r\n\r\n getActiveModelProfiles(): ModelProfile[] {\r\n return this.modelProfiles.filter(p => p.isActive)\r\n }\r\n\r\n hasConfiguredModels(): boolean {\r\n return this.getActiveModelProfiles().length > 0\r\n }\r\n\r\n\r\n getModel(pointer: ModelPointerType): ModelProfile | null {\r\n const pointerId = this.config.modelPointers?.[pointer]\r\n if (!pointerId) {\r\n return this.getDefaultModel()\r\n }\r\n\r\n const profile = this.findModelProfile(pointerId)\r\n return profile && profile.isActive ? profile : this.getDefaultModel()\r\n }\r\n\r\n getModelName(pointer: ModelPointerType): string | null {\r\n const profile = this.getModel(pointer)\r\n return profile ? profile.modelName : null\r\n }\r\n\r\n getCompactModel(): string | null {\r\n return this.getModelName('compact') || this.getModelName('main')\r\n }\r\n\r\n getQuickModel(): string | null {\r\n return (\r\n this.getModelName('quick') ||\r\n this.getModelName('task') ||\r\n this.getModelName('main')\r\n )\r\n }\r\n\r\n async addModel(\r\n config: Omit<ModelProfile, 'createdAt' | 'isActive'>,\r\n ): Promise<string> {\r\n const existingByModelName = this.modelProfiles.find(\r\n p => p.modelName === config.modelName,\r\n )\r\n if (existingByModelName) {\r\n throw new Error(\r\n `Model with modelName '${config.modelName}' already exists: ${existingByModelName.name}`,\r\n )\r\n }\r\n\r\n const existingByName = this.modelProfiles.find(p => p.name === config.name)\r\n if (existingByName) {\r\n throw new Error(`Model with name '${config.name}' already exists`)\r\n }\r\n\r\n const newModel: ModelProfile = {\r\n ...config,\r\n createdAt: Date.now(),\r\n isActive: true,\r\n }\r\n\r\n this.modelProfiles.push(newModel)\r\n\r\n if (this.modelProfiles.length === 1) {\r\n this.config.modelPointers = {\r\n main: config.modelName,\r\n task: config.modelName,\r\n compact: config.modelName,\r\n quick: config.modelName,\r\n }\r\n this.config.defaultModelName = config.modelName\r\n } else {\r\n if (!this.config.modelPointers) {\r\n this.config.modelPointers = {\r\n main: config.modelName,\r\n task: '',\r\n compact: '',\r\n quick: '',\r\n }\r\n } else {\r\n this.config.modelPointers.main = config.modelName\r\n }\r\n }\r\n\r\n this.saveConfig()\r\n return config.modelName\r\n }\r\n\r\n setPointer(pointer: ModelPointerType, modelName: string): void {\r\n if (!this.findModelProfile(modelName)) {\r\n throw new Error(`Model '${modelName}' not found`)\r\n }\r\n\r\n if (!this.config.modelPointers) {\r\n this.config.modelPointers = {\r\n main: '',\r\n task: '',\r\n compact: '',\r\n quick: '',\r\n }\r\n }\r\n\r\n this.config.modelPointers[pointer] = modelName\r\n this.saveConfig()\r\n }\r\n\r\n getAvailableModels(): ModelProfile[] {\r\n return this.modelProfiles.filter(p => p.isActive)\r\n }\r\n\r\n getAllConfiguredModels(): ModelProfile[] {\r\n return this.modelProfiles\r\n }\r\n\r\n getAllAvailableModelNames(): string[] {\r\n return this.getAvailableModels().map(p => p.modelName)\r\n }\r\n\r\n getAllConfiguredModelNames(): string[] {\r\n return this.getAllConfiguredModels().map(p => p.modelName)\r\n }\r\n\r\n getModelSwitchingDebugInfo(): {\r\n totalModels: number\r\n activeModels: number\r\n inactiveModels: number\r\n currentMainModel: string | null\r\n availableModels: Array<{\r\n name: string\r\n modelName: string\r\n provider: string\r\n isActive: boolean\r\n lastUsed?: number\r\n }>\r\n modelPointers: Record<string, string | undefined>\r\n } {\r\n const availableModels = this.getAvailableModels()\r\n const currentMainModelName = this.config.modelPointers?.main\r\n\r\n return {\r\n totalModels: this.modelProfiles.length,\r\n activeModels: availableModels.length,\r\n inactiveModels: this.modelProfiles.length - availableModels.length,\r\n currentMainModel: currentMainModelName || null,\r\n availableModels: this.modelProfiles.map(p => ({\r\n name: p.name,\r\n modelName: p.modelName,\r\n provider: p.provider,\r\n isActive: p.isActive,\r\n lastUsed: p.lastUsed,\r\n })),\r\n modelPointers: this.config.modelPointers || {},\r\n }\r\n }\r\n\r\n removeModel(modelName: string): void {\r\n this.modelProfiles = this.modelProfiles.filter(\r\n p => p.modelName !== modelName,\r\n )\r\n\r\n if (this.config.modelPointers) {\r\n Object.keys(this.config.modelPointers).forEach(pointer => {\r\n if (\r\n this.config.modelPointers[pointer as ModelPointerType] === modelName\r\n ) {\r\n this.config.modelPointers[pointer as ModelPointerType] =\r\n this.config.defaultModelName || ''\r\n }\r\n })\r\n }\r\n\r\n this.saveConfig()\r\n }\r\n\r\n private getDefaultModel(): ModelProfile | null {\r\n if (this.config.defaultModelId) {\r\n const profile = this.findModelProfile(this.config.defaultModelId)\r\n if (profile && profile.isActive) {\r\n return profile\r\n }\r\n }\r\n return this.modelProfiles.find(p => p.isActive) || null\r\n }\r\n\r\n private saveConfig(): void {\r\n const updatedConfig = {\r\n ...this.config,\r\n modelProfiles: this.modelProfiles,\r\n }\r\n saveGlobalConfig(updatedConfig)\r\n }\r\n\r\n async getFallbackModel(): Promise<string> {\r\n const modelConfig = await getModelConfig()\r\n if (USE_BEDROCK) return modelConfig.bedrock\r\n if (USE_VERTEX) return modelConfig.vertex\r\n return modelConfig.firstParty\r\n }\r\n\r\n resolveModel(modelParam: string | ModelPointerType): ModelProfile | null {\r\n if (['main', 'task', 'compact', 'quick'].includes(modelParam)) {\r\n const pointerId =\r\n this.config.modelPointers?.[modelParam as ModelPointerType]\r\n if (pointerId) {\r\n let profile = this.findModelProfile(pointerId)\r\n if (!profile) {\r\n profile = this.findModelProfileByModelName(pointerId)\r\n }\r\n if (profile && profile.isActive) {\r\n return profile\r\n }\r\n }\r\n return this.getDefaultModel()\r\n }\r\n\r\n let profile = this.findModelProfile(modelParam)\r\n if (profile && profile.isActive) {\r\n return profile\r\n }\r\n\r\n profile = this.findModelProfileByModelName(modelParam)\r\n if (profile && profile.isActive) {\r\n return profile\r\n }\r\n\r\n profile = this.findModelProfileByName(modelParam)\r\n if (profile && profile.isActive) {\r\n return profile\r\n }\r\n\r\n if (typeof modelParam === 'string') {\r\n const qualified = this.resolveProviderQualifiedModel(modelParam)\r\n if (qualified && qualified.isActive) {\r\n return qualified\r\n }\r\n }\r\n\r\n return this.getDefaultModel()\r\n }\r\n\r\n resolveModelWithInfo(modelParam: string | ModelPointerType): {\r\n success: boolean\r\n profile: ModelProfile | null\r\n error?: string\r\n } {\r\n const isPointer = ['main', 'task', 'compact', 'quick'].includes(modelParam)\r\n\r\n if (isPointer) {\r\n const pointerId =\r\n this.config.modelPointers?.[modelParam as ModelPointerType]\r\n if (!pointerId) {\r\n return {\r\n success: false,\r\n profile: null,\r\n error: `Model pointer '${modelParam}' is not configured. Use /model to set up models.`,\r\n }\r\n }\r\n\r\n let profile = this.findModelProfile(pointerId)\r\n if (!profile) {\r\n profile = this.findModelProfileByModelName(pointerId)\r\n }\r\n\r\n if (!profile) {\r\n return {\r\n success: false,\r\n profile: null,\r\n error: `Model pointer '${modelParam}' points to invalid model '${pointerId}'. Use /model to reconfigure.`,\r\n }\r\n }\r\n\r\n if (!profile.isActive) {\r\n return {\r\n success: false,\r\n profile: null,\r\n error: `Model '${profile.name}' (pointed by '${modelParam}') is inactive. Use /model to activate it.`,\r\n }\r\n }\r\n\r\n return {\r\n success: true,\r\n profile,\r\n }\r\n } else {\r\n let profile = this.findModelProfile(modelParam)\r\n if (!profile) {\r\n profile = this.findModelProfileByModelName(modelParam)\r\n }\r\n if (!profile) {\r\n profile = this.findModelProfileByName(modelParam)\r\n }\r\n\r\n if (!profile && typeof modelParam === 'string') {\r\n profile = this.resolveProviderQualifiedModel(modelParam)\r\n }\r\n\r\n if (!profile) {\r\n return {\r\n success: false,\r\n profile: null,\r\n error: `Model '${modelParam}' not found. Use /model to add models, or run 'newcraw models list' to see configured profiles.`,\r\n }\r\n }\r\n\r\n if (!profile.isActive) {\r\n return {\r\n success: false,\r\n profile: null,\r\n error: `Model '${profile.name}' is inactive. Use /model to activate it.`,\r\n }\r\n }\r\n\r\n return {\r\n success: true,\r\n profile,\r\n }\r\n }\r\n }\r\n\r\n private resolveProviderQualifiedModel(input: string): ModelProfile | null {\r\n const trimmed = input.trim()\r\n const colonIndex = trimmed.indexOf(':')\r\n if (colonIndex <= 0 || colonIndex >= trimmed.length - 1) return null\r\n\r\n const provider = trimmed.slice(0, colonIndex).trim().toLowerCase()\r\n const modelOrName = trimmed.slice(colonIndex + 1).trim()\r\n if (!provider || !modelOrName) return null\r\n\r\n const providerProfiles = this.modelProfiles.filter(\r\n p => String(p.provider).trim().toLowerCase() === provider,\r\n )\r\n if (providerProfiles.length === 0) return null\r\n\r\n const byModelName = providerProfiles.find(p => p.modelName === modelOrName)\r\n if (byModelName) return byModelName\r\n\r\n const byName = providerProfiles.find(p => p.name === modelOrName)\r\n if (byName) return byName\r\n\r\n return null\r\n }\r\n\r\n private findModelProfile(modelName: string): ModelProfile | null {\r\n return this.modelProfiles.find(p => p.modelName === modelName) || null\r\n }\r\n\r\n private findModelProfileByModelName(modelName: string): ModelProfile | null {\r\n return this.modelProfiles.find(p => p.modelName === modelName) || null\r\n }\r\n\r\n private findModelProfileByName(name: string): ModelProfile | null {\r\n return this.modelProfiles.find(p => p.name === name) || null\r\n }\r\n\r\n private updateLastUsed(modelName: string): void {\r\n const profile = this.findModelProfile(modelName)\r\n if (profile) {\r\n profile.lastUsed = Date.now()\r\n }\r\n }\r\n}\r\n\r\nlet globalModelManager: ModelManager | null = null\r\n\r\nexport const getModelManager = (): ModelManager => {\r\n try {\r\n if (!globalModelManager) {\r\n const config = getGlobalConfig()\r\n if (!config) {\r\n debugLogger.warn('MODEL_MANAGER_GLOBAL_CONFIG_MISSING', {})\r\n globalModelManager = new ModelManager({\r\n modelProfiles: [],\r\n modelPointers: { main: '', task: '', compact: '', quick: '' },\r\n })\r\n } else {\r\n globalModelManager = new ModelManager(config)\r\n }\r\n }\r\n return globalModelManager\r\n } catch (error) {\r\n logError(error)\r\n debugLogger.error('MODEL_MANAGER_CREATE_FAILED', {\r\n error: error instanceof Error ? error.message : String(error),\r\n })\r\n return new ModelManager({\r\n modelProfiles: [],\r\n modelPointers: { main: '', task: '', compact: '', quick: '' },\r\n })\r\n }\r\n}\r\n\r\nexport const reloadModelManager = (): void => {\r\n globalModelManager = null\r\n getModelManager()\r\n}\r\n\r\nexport const getQuickModel = (): string => {\r\n const manager = getModelManager()\r\n const quickModel = manager.getModel('quick')\r\n return quickModel?.modelName || 'quick'\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["profile"]
|
|
7
7
|
}
|
|
@@ -5,16 +5,20 @@ import {
|
|
|
5
5
|
} from "./chunk-7ZFLZNOW.js";
|
|
6
6
|
import {
|
|
7
7
|
loadSettingsWithLegacyFallback
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ADJ4YEII.js";
|
|
9
9
|
import {
|
|
10
10
|
getSessionPlugins
|
|
11
11
|
} from "./chunk-2UO3BFZH.js";
|
|
12
12
|
import {
|
|
13
13
|
getCwd,
|
|
14
|
+
init_log,
|
|
15
|
+
init_state,
|
|
14
16
|
logError
|
|
15
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-BMJ5XGFR.js";
|
|
16
18
|
|
|
17
19
|
// src/utils/session/kodeHooks.ts
|
|
20
|
+
init_log();
|
|
21
|
+
init_state();
|
|
18
22
|
import { spawn } from "child_process";
|
|
19
23
|
import { readFileSync, statSync } from "fs";
|
|
20
24
|
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "fs";
|
|
@@ -502,7 +506,7 @@ async function runPromptHook(args) {
|
|
|
502
506
|
fallbackTimeoutMs: args.fallbackTimeoutMs
|
|
503
507
|
});
|
|
504
508
|
try {
|
|
505
|
-
const { queryQuick } = await import("./llmLazy-
|
|
509
|
+
const { queryQuick } = await import("./llmLazy-I7SO67YA.js");
|
|
506
510
|
const systemPrompt = [
|
|
507
511
|
"You are executing a NewCraw prompt hook.",
|
|
508
512
|
"Return a single JSON object only (no markdown, no prose).",
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/session/kodeHooks.ts"],
|
|
4
4
|
"sourcesContent": ["import { spawn } from 'child_process'\r\nimport { existsSync, readFileSync, statSync } from 'fs'\r\nimport { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'fs'\r\nimport { tmpdir } from 'os'\r\nimport { join } from 'path'\r\nimport { minimatch } from 'minimatch'\r\nimport { logError } from '@utils/log'\r\nimport { getCwd } from '@utils/state'\r\nimport { getKodeAgentSessionId } from '@utils/protocol/kodeAgentSessionId'\r\nimport { getSessionPlugins } from '@utils/session/sessionPlugins'\r\nimport { loadSettingsWithLegacyFallback } from '@utils/config/settingsFiles'\r\n\r\ntype HookEventName =\r\n | 'PreToolUse'\r\n | 'PostToolUse'\r\n | 'Stop'\r\n | 'SubagentStop'\r\n | 'UserPromptSubmit'\r\n | 'SessionStart'\r\n | 'SessionEnd'\r\n\r\ntype CommandHook = {\r\n type: 'command'\r\n command: string\r\n timeout?: number\r\n pluginRoot?: string\r\n}\r\n\r\ntype PromptHook = {\r\n type: 'prompt'\r\n prompt: string\r\n timeout?: number\r\n pluginRoot?: string\r\n}\r\n\r\ntype Hook = CommandHook | PromptHook\r\n\r\ntype HookMatcher = {\r\n matcher: string\r\n hooks: Hook[]\r\n}\r\n\r\ntype HookFileEnvelope = {\r\n description?: unknown\r\n hooks?: unknown\r\n [key: string]: unknown\r\n}\r\n\r\ntype HooksSettings = Partial<Record<HookEventName, HookMatcher[]>> & {\r\n [key: string]: unknown\r\n}\r\n\r\ntype SettingsFileWithHooks = {\r\n hooks?: HooksSettings\r\n [key: string]: unknown\r\n}\r\n\r\nexport type PreToolUseHookOutcome =\r\n | {\r\n kind: 'allow'\r\n warnings: string[]\r\n permissionDecision?: 'allow' | 'ask'\r\n updatedInput?: Record<string, unknown>\r\n systemMessages?: string[]\r\n additionalContexts?: string[]\r\n }\r\n | {\r\n kind: 'block'\r\n message: string\r\n systemMessages?: string[]\r\n additionalContexts?: string[]\r\n }\r\n\r\ntype CachedHooks = {\r\n mtimeMs: number\r\n byEvent: Partial<Record<HookEventName, HookMatcher[]>>\r\n}\r\n\r\nconst cache = new Map<string, CachedHooks>()\r\nconst pluginHooksCache = new Map<string, CachedHooks>()\r\nconst sessionStartCache = new Map<string, { additionalContext: string }>()\r\n\r\ntype HookRuntimeState = {\r\n transcriptPath?: string\r\n queuedSystemMessages: string[]\r\n queuedAdditionalContexts: string[]\r\n}\r\n\r\nconst HOOK_RUNTIME_STATE_KEY = '__kodeHookRuntimeState'\r\n\r\nfunction getHookRuntimeState(toolUseContext: any): HookRuntimeState {\r\n const existing = toolUseContext?.[HOOK_RUNTIME_STATE_KEY]\r\n if (\r\n existing &&\r\n typeof existing === 'object' &&\r\n Array.isArray((existing as any).queuedSystemMessages) &&\r\n Array.isArray((existing as any).queuedAdditionalContexts)\r\n ) {\r\n return existing as HookRuntimeState\r\n }\r\n const created: HookRuntimeState = {\r\n transcriptPath: undefined,\r\n queuedSystemMessages: [],\r\n queuedAdditionalContexts: [],\r\n }\r\n if (toolUseContext && typeof toolUseContext === 'object') {\r\n ;(toolUseContext as any)[HOOK_RUNTIME_STATE_KEY] = created\r\n }\r\n return created\r\n}\r\n\r\nexport function updateHookTranscriptForMessages(\r\n toolUseContext: any,\r\n messages: any[],\r\n): void {\r\n const state = getHookRuntimeState(toolUseContext)\r\n const sessionId = getKodeAgentSessionId()\r\n\r\n const dir = join(tmpdir(), 'newcraw-hooks-transcripts')\r\n try {\r\n mkdirSync(dir, { recursive: true })\r\n } catch {}\r\n\r\n if (!state.transcriptPath) {\r\n state.transcriptPath = join(dir, `${sessionId}.transcript.txt`)\r\n }\r\n\r\n const lines: string[] = []\r\n for (const msg of Array.isArray(messages) ? messages : []) {\r\n if (!msg || typeof msg !== 'object') continue\r\n if (msg.type !== 'user' && msg.type !== 'assistant') continue\r\n\r\n if (msg.type === 'user') {\r\n const content = (msg as any)?.message?.content\r\n if (typeof content === 'string') {\r\n lines.push(`user: ${content}`)\r\n continue\r\n }\r\n if (Array.isArray(content)) {\r\n const parts: string[] = []\r\n for (const block of content) {\r\n if (!block || typeof block !== 'object') continue\r\n if (block.type === 'text') parts.push(String(block.text ?? ''))\r\n if (block.type === 'tool_result')\r\n parts.push(`[tool_result] ${String(block.content ?? '')}`)\r\n }\r\n lines.push(`user: ${parts.join('')}`)\r\n }\r\n continue\r\n }\r\n\r\n const content = (msg as any)?.message?.content\r\n if (typeof content === 'string') {\r\n lines.push(`assistant: ${content}`)\r\n continue\r\n }\r\n if (!Array.isArray(content)) continue\r\n\r\n const parts: string[] = []\r\n for (const block of content) {\r\n if (!block || typeof block !== 'object') continue\r\n if (block.type === 'text') parts.push(String(block.text ?? ''))\r\n if (block.type === 'tool_use' || block.type === 'server_tool_use') {\r\n parts.push(\r\n `[tool_use:${String(block.name ?? '')}] ${hookValueForPrompt(block.input)}`,\r\n )\r\n }\r\n if (block.type === 'mcp_tool_use') {\r\n parts.push(\r\n `[mcp_tool_use:${String(block.name ?? '')}] ${hookValueForPrompt(block.input)}`,\r\n )\r\n }\r\n }\r\n lines.push(`assistant: ${parts.join('')}`)\r\n }\r\n\r\n try {\r\n writeFileSync(state.transcriptPath, lines.join('\\n') + '\\n', 'utf8')\r\n } catch {}\r\n}\r\n\r\nexport function drainHookSystemPromptAdditions(toolUseContext: any): string[] {\r\n const state = getHookRuntimeState(toolUseContext)\r\n const systemMessages = state.queuedSystemMessages.splice(\r\n 0,\r\n state.queuedSystemMessages.length,\r\n )\r\n const contexts = state.queuedAdditionalContexts.splice(\r\n 0,\r\n state.queuedAdditionalContexts.length,\r\n )\r\n\r\n const additions: string[] = []\r\n if (systemMessages.length > 0) {\r\n additions.push(\r\n ['\\n# Hook system messages', ...systemMessages.map(m => m.trim())]\r\n .filter(Boolean)\r\n .join('\\n\\n'),\r\n )\r\n }\r\n if (contexts.length > 0) {\r\n additions.push(\r\n ['\\n# Hook additional context', ...contexts.map(m => m.trim())]\r\n .filter(Boolean)\r\n .join('\\n\\n'),\r\n )\r\n }\r\n return additions\r\n}\r\n\r\nexport function getHookTranscriptPath(toolUseContext: any): string | undefined {\r\n return getHookRuntimeState(toolUseContext).transcriptPath\r\n}\r\n\r\nexport function queueHookSystemMessages(\r\n toolUseContext: any,\r\n messages: string[],\r\n): void {\r\n const state = getHookRuntimeState(toolUseContext)\r\n for (const msg of messages) {\r\n const trimmed = String(msg ?? '').trim()\r\n if (trimmed) state.queuedSystemMessages.push(trimmed)\r\n }\r\n}\r\n\r\nexport function queueHookAdditionalContexts(\r\n toolUseContext: any,\r\n contexts: string[],\r\n): void {\r\n const state = getHookRuntimeState(toolUseContext)\r\n for (const ctx of contexts) {\r\n const trimmed = String(ctx ?? '').trim()\r\n if (trimmed) state.queuedAdditionalContexts.push(trimmed)\r\n }\r\n}\r\n\r\nfunction isCommandHook(value: unknown): value is CommandHook {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n (value as any).type === 'command' &&\r\n typeof (value as any).command === 'string' &&\r\n Boolean((value as any).command.trim())\r\n )\r\n}\r\n\r\nfunction isPromptHook(value: unknown): value is PromptHook {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n (value as any).type === 'prompt' &&\r\n typeof (value as any).prompt === 'string' &&\r\n Boolean((value as any).prompt.trim())\r\n )\r\n}\r\n\r\nfunction isHook(value: unknown): value is Hook {\r\n return isCommandHook(value) || isPromptHook(value)\r\n}\r\n\r\nfunction parseHookMatchers(value: unknown): HookMatcher[] {\r\n if (!Array.isArray(value)) return []\r\n\r\n const out: HookMatcher[] = []\r\n for (const item of value) {\r\n if (!item || typeof item !== 'object') continue\r\n const matcher =\r\n typeof (item as any).matcher === 'string'\r\n ? (item as any).matcher.trim()\r\n : ''\r\n const effectiveMatcher = matcher || '*'\r\n const hooksRaw = (item as any).hooks\r\n const hooks = Array.isArray(hooksRaw) ? hooksRaw.filter(isHook) : []\r\n if (hooks.length === 0) continue\r\n out.push({ matcher: effectiveMatcher, hooks })\r\n }\r\n return out\r\n}\r\n\r\nfunction parseHooksByEvent(\r\n rawHooks: unknown,\r\n): Partial<Record<HookEventName, HookMatcher[]>> {\r\n if (!rawHooks || typeof rawHooks !== 'object') return {}\r\n const hooks: any = rawHooks\r\n return {\r\n PreToolUse: parseHookMatchers(hooks.PreToolUse),\r\n PostToolUse: parseHookMatchers(hooks.PostToolUse),\r\n Stop: parseHookMatchers(hooks.Stop),\r\n SubagentStop: parseHookMatchers(hooks.SubagentStop),\r\n UserPromptSubmit: parseHookMatchers(hooks.UserPromptSubmit),\r\n SessionStart: parseHookMatchers(hooks.SessionStart),\r\n SessionEnd: parseHookMatchers(hooks.SessionEnd),\r\n }\r\n}\r\n\r\nfunction loadInlinePluginHooksByEvent(plugin: {\r\n manifestPath: string\r\n manifest: unknown\r\n}): Partial<Record<HookEventName, HookMatcher[]>> | null {\r\n const manifestHooks = (plugin.manifest as any)?.hooks\r\n if (\r\n !manifestHooks ||\r\n typeof manifestHooks !== 'object' ||\r\n Array.isArray(manifestHooks)\r\n )\r\n return null\r\n\r\n const hookObj =\r\n (manifestHooks as any).hooks &&\r\n typeof (manifestHooks as any).hooks === 'object' &&\r\n !Array.isArray((manifestHooks as any).hooks)\r\n ? (manifestHooks as any).hooks\r\n : manifestHooks\r\n\r\n const cacheKey = `${plugin.manifestPath}#inlineHooks`\r\n try {\r\n const stat = statSync(plugin.manifestPath)\r\n const cached = pluginHooksCache.get(cacheKey)\r\n if (cached && cached.mtimeMs === stat.mtimeMs) return cached.byEvent\r\n\r\n const byEvent = parseHooksByEvent(hookObj)\r\n pluginHooksCache.set(cacheKey, { mtimeMs: stat.mtimeMs, byEvent })\r\n return byEvent\r\n } catch (err) {\r\n logError(err)\r\n pluginHooksCache.delete(cacheKey)\r\n return null\r\n }\r\n}\r\n\r\nfunction loadPreToolUseMatchers(projectDir: string): HookMatcher[] {\r\n const loaded = loadSettingsWithLegacyFallback({\r\n destination: 'projectSettings',\r\n projectDir,\r\n migrateToPrimary: true,\r\n })\r\n const settingsPath = loaded.usedPath\r\n if (!settingsPath) return []\r\n try {\r\n const stat = statSync(settingsPath)\r\n const cached = cache.get(settingsPath)\r\n if (cached && cached.mtimeMs === stat.mtimeMs)\r\n return cached.byEvent.PreToolUse ?? []\r\n\r\n const parsed = loaded.settings as SettingsFileWithHooks | null\r\n const byEvent = parseHooksByEvent(parsed?.hooks)\r\n cache.set(settingsPath, { mtimeMs: stat.mtimeMs, byEvent })\r\n return byEvent.PreToolUse ?? []\r\n } catch {\r\n cache.delete(settingsPath)\r\n return []\r\n }\r\n}\r\n\r\nfunction loadSettingsMatchers(\r\n projectDir: string,\r\n event: HookEventName,\r\n): HookMatcher[] {\r\n const loaded = loadSettingsWithLegacyFallback({\r\n destination: 'projectSettings',\r\n projectDir,\r\n migrateToPrimary: true,\r\n })\r\n const settingsPath = loaded.usedPath\r\n if (!settingsPath) return []\r\n try {\r\n const stat = statSync(settingsPath)\r\n const cached = cache.get(settingsPath)\r\n if (cached && cached.mtimeMs === stat.mtimeMs)\r\n return cached.byEvent[event] ?? []\r\n\r\n const parsed = loaded.settings as SettingsFileWithHooks | null\r\n const byEvent = parseHooksByEvent(parsed?.hooks)\r\n cache.set(settingsPath, { mtimeMs: stat.mtimeMs, byEvent })\r\n return byEvent[event] ?? []\r\n } catch {\r\n cache.delete(settingsPath)\r\n return []\r\n }\r\n}\r\n\r\nfunction matcherMatchesTool(matcher: string, toolName: string): boolean {\r\n if (!matcher) return false\r\n if (matcher === '*' || matcher === 'all') return true\r\n if (matcher === toolName) return true\r\n try {\r\n if (minimatch(toolName, matcher, { dot: true, nocase: false })) return true\r\n } catch {\r\n }\r\n try {\r\n if (new RegExp(matcher).test(toolName)) return true\r\n } catch {\r\n }\r\n return false\r\n}\r\n\r\nfunction buildShellCommand(command: string): string[] {\r\n if (process.platform === 'win32') {\r\n return ['cmd.exe', '/d', '/s', '/c', command]\r\n }\r\n return ['/bin/sh', '-c', command]\r\n}\r\n\r\nasync function runCommandHook(args: {\r\n command: string\r\n stdinJson: unknown\r\n cwd: string\r\n env?: Record<string, string>\r\n signal?: AbortSignal\r\n}): Promise<{ exitCode: number; stdout: string; stderr: string }> {\r\n const cmd = buildShellCommand(args.command)\r\n const proc = spawn(cmd[0], cmd.slice(1), {\r\n cwd: args.cwd,\r\n env: { ...(process.env as any), ...(args.env ?? {}) },\r\n stdio: ['pipe', 'pipe', 'pipe'],\r\n windowsHide: true,\r\n })\r\n\r\n let wasAborted = false\r\n const onAbort = () => {\r\n wasAborted = true\r\n try {\r\n proc.kill()\r\n } catch {}\r\n }\r\n if (args.signal) {\r\n if (args.signal.aborted) onAbort()\r\n args.signal.addEventListener('abort', onAbort, { once: true })\r\n }\r\n\r\n try {\r\n const input = JSON.stringify(args.stdinJson)\r\n try {\r\n proc.stdin?.write(input)\r\n proc.stdin?.end()\r\n } catch {}\r\n\r\n let stdout = ''\r\n let stderr = ''\r\n\r\n const collect = (\r\n stream: NodeJS.ReadableStream | null,\r\n append: (chunk: string) => void,\r\n ): { done: Promise<void>; cleanup: () => void } => {\r\n if (!stream) {\r\n return { done: Promise.resolve(), cleanup: () => {} }\r\n }\r\n try {\r\n ;(stream as any).setEncoding?.('utf8')\r\n } catch {}\r\n\r\n let resolveDone: (() => void) | null = null\r\n const done = new Promise<void>(resolve => {\r\n resolveDone = resolve\r\n })\r\n\r\n const finish = () => {\r\n cleanup()\r\n if (!resolveDone) return\r\n resolveDone()\r\n resolveDone = null\r\n }\r\n\r\n const onData = (chunk: unknown) => {\r\n append(\r\n typeof chunk === 'string'\r\n ? chunk\r\n : Buffer.isBuffer(chunk)\r\n ? chunk.toString('utf8')\r\n : String(chunk),\r\n )\r\n }\r\n\r\n const onError = () => finish()\r\n\r\n const cleanup = () => {\r\n stream.off('data', onData)\r\n stream.off('end', finish)\r\n stream.off('close', finish)\r\n stream.off('error', onError)\r\n }\r\n\r\n stream.on('data', onData)\r\n stream.once('end', finish)\r\n stream.once('close', finish)\r\n stream.once('error', onError)\r\n\r\n return { done, cleanup }\r\n }\r\n\r\n const stdoutCollector = collect(proc.stdout, chunk => {\r\n stdout += chunk\r\n })\r\n const stderrCollector = collect(proc.stderr, chunk => {\r\n stderr += chunk\r\n })\r\n\r\n const exitCode = await new Promise<number>(resolve => {\r\n proc.once('exit', (code, signal) => {\r\n if (typeof code === 'number') return resolve(code)\r\n if (signal) return resolve(143)\r\n return resolve(0)\r\n })\r\n proc.once('error', () => resolve(1))\r\n })\r\n\r\n await Promise.race([\r\n Promise.allSettled([stdoutCollector.done, stderrCollector.done]),\r\n new Promise(resolve => setTimeout(resolve, 250)),\r\n ])\r\n stdoutCollector.cleanup()\r\n stderrCollector.cleanup()\r\n\r\n return {\r\n exitCode: wasAborted && exitCode === 0 ? 143 : exitCode,\r\n stdout,\r\n stderr,\r\n }\r\n } finally {\r\n if (args.signal) {\r\n try {\r\n args.signal.removeEventListener('abort', onAbort)\r\n } catch {}\r\n }\r\n }\r\n}\r\n\r\nfunction mergeAbortSignals(signals: Array<AbortSignal | undefined>): {\r\n signal: AbortSignal\r\n cleanup: () => void\r\n} {\r\n const controller = new AbortController()\r\n const onAbort = () => controller.abort()\r\n\r\n const cleanups: Array<() => void> = []\r\n for (const signal of signals) {\r\n if (!signal) continue\r\n if (signal.aborted) {\r\n controller.abort()\r\n continue\r\n }\r\n signal.addEventListener('abort', onAbort, { once: true })\r\n cleanups.push(() => {\r\n try {\r\n signal.removeEventListener('abort', onAbort)\r\n } catch {}\r\n })\r\n }\r\n\r\n return {\r\n signal: controller.signal,\r\n cleanup: () => cleanups.forEach(fn => fn()),\r\n }\r\n}\r\n\r\nfunction withHookTimeout(args: {\r\n timeoutSeconds?: number\r\n parentSignal?: AbortSignal\r\n fallbackTimeoutMs: number\r\n}): { signal: AbortSignal; cleanup: () => void } {\r\n const timeoutMs =\r\n typeof args.timeoutSeconds === 'number' &&\r\n Number.isFinite(args.timeoutSeconds)\r\n ? Math.max(0, Math.floor(args.timeoutSeconds * 1000))\r\n : args.fallbackTimeoutMs\r\n\r\n const timeoutSignal =\r\n typeof AbortSignal !== 'undefined' &&\r\n typeof (AbortSignal as any).timeout === 'function'\r\n ? (AbortSignal as any).timeout(timeoutMs)\r\n : (() => {\r\n const controller = new AbortController()\r\n const timer = setTimeout(() => controller.abort(), timeoutMs)\r\n const signal = controller.signal\r\n ;(signal as any).__cleanup = () => clearTimeout(timer)\r\n return signal\r\n })()\r\n\r\n const merged = mergeAbortSignals([args.parentSignal, timeoutSignal])\r\n const timeoutCleanup =\r\n typeof (timeoutSignal as any).__cleanup === 'function'\r\n ? (timeoutSignal as any).__cleanup\r\n : () => {}\r\n\r\n return {\r\n signal: merged.signal,\r\n cleanup: () => {\r\n merged.cleanup()\r\n timeoutCleanup()\r\n },\r\n }\r\n}\r\n\r\nfunction coerceHookMessage(stdout: string, stderr: string): string {\r\n const s = (stderr || '').trim()\r\n if (s) return s\r\n const o = (stdout || '').trim()\r\n if (o) return o\r\n return 'Hook blocked the tool call.'\r\n}\r\n\r\nfunction coerceHookPermissionMode(mode: unknown): 'ask' | 'allow' {\r\n if (mode === 'acceptEdits' || mode === 'bypassPermissions') return 'allow'\r\n return 'ask'\r\n}\r\n\r\nfunction extractFirstJsonObject(text: string): string | null {\r\n let start = -1\r\n let depth = 0\r\n let inString = false\r\n let escaped = false\r\n\r\n for (let i = 0; i < text.length; i++) {\r\n const ch = text[i]\r\n\r\n if (start === -1) {\r\n if (ch === '{') {\r\n start = i\r\n depth = 1\r\n }\r\n continue\r\n }\r\n\r\n if (inString) {\r\n if (escaped) {\r\n escaped = false\r\n continue\r\n }\r\n if (ch === '\\\\') {\r\n escaped = true\r\n continue\r\n }\r\n if (ch === '\"') {\r\n inString = false\r\n }\r\n continue\r\n }\r\n\r\n if (ch === '\"') {\r\n inString = true\r\n continue\r\n }\r\n\r\n if (ch === '{') {\r\n depth++\r\n continue\r\n }\r\n if (ch === '}') {\r\n depth--\r\n if (depth === 0) return text.slice(start, i + 1)\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nfunction parseSessionStartAdditionalContext(stdout: string): string | null {\r\n const trimmed = String(stdout ?? '').trim()\r\n if (!trimmed) return null\r\n\r\n const jsonStr = extractFirstJsonObject(trimmed) ?? trimmed\r\n try {\r\n const parsed = JSON.parse(jsonStr)\r\n const additional =\r\n parsed &&\r\n typeof parsed === 'object' &&\r\n (parsed as any).hookSpecificOutput &&\r\n typeof (parsed as any).hookSpecificOutput.additionalContext === 'string'\r\n ? String((parsed as any).hookSpecificOutput.additionalContext)\r\n : null\r\n return additional && additional.trim() ? additional : null\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nfunction tryParseHookJson(stdout: string): any | null {\r\n const trimmed = String(stdout ?? '').trim()\r\n if (!trimmed) return null\r\n const jsonStr = extractFirstJsonObject(trimmed) ?? trimmed\r\n try {\r\n const parsed = JSON.parse(jsonStr)\r\n return parsed && typeof parsed === 'object' ? parsed : null\r\n } catch {\r\n return null\r\n }\r\n}\r\n\r\nfunction normalizePermissionDecision(\r\n value: unknown,\r\n): 'allow' | 'deny' | 'ask' | 'passthrough' | null {\r\n if (typeof value !== 'string') return null\r\n const normalized = value.trim().toLowerCase()\r\n if (normalized === 'allow' || normalized === 'approve') return 'allow'\r\n if (normalized === 'deny' || normalized === 'block') return 'deny'\r\n if (normalized === 'ask') return 'ask'\r\n if (normalized === 'passthrough' || normalized === 'continue')\r\n return 'passthrough'\r\n return null\r\n}\r\n\r\nfunction normalizeStopDecision(value: unknown): 'approve' | 'block' | null {\r\n if (typeof value !== 'string') return null\r\n const normalized = value.trim().toLowerCase()\r\n if (normalized === 'approve' || normalized === 'allow') return 'approve'\r\n if (normalized === 'block' || normalized === 'deny') return 'block'\r\n return null\r\n}\r\n\r\nfunction hookValueForPrompt(value: unknown): string {\r\n if (value === null || value === undefined) return ''\r\n if (typeof value === 'string') return value\r\n try {\r\n return JSON.stringify(value, null, 2)\r\n } catch {\r\n return String(value)\r\n }\r\n}\r\n\r\nfunction interpolatePromptHookTemplate(\r\n template: string,\r\n hookInput: Record<string, unknown>,\r\n): string {\r\n return String(template ?? '')\r\n .replaceAll('$TOOL_INPUT', hookValueForPrompt(hookInput.tool_input))\r\n .replaceAll('$TOOL_RESULT', hookValueForPrompt(hookInput.tool_result))\r\n .replaceAll('$TOOL_RESPONSE', hookValueForPrompt(hookInput.tool_response))\r\n .replaceAll('$USER_PROMPT', hookValueForPrompt(hookInput.user_prompt))\r\n .replaceAll('$PROMPT', hookValueForPrompt(hookInput.prompt))\r\n .replaceAll('$REASON', hookValueForPrompt(hookInput.reason))\r\n}\r\n\r\nfunction extractAssistantText(message: any): string {\r\n const content = (message as any)?.message?.content\r\n if (typeof content === 'string') return content\r\n if (!Array.isArray(content)) return ''\r\n return content\r\n .filter((b: any) => b && typeof b === 'object' && b.type === 'text')\r\n .map((b: any) => String(b.text ?? ''))\r\n .join('')\r\n}\r\n\r\nasync function runPromptHook(args: {\r\n hook: PromptHook\r\n hookEvent: HookEventName\r\n hookInput: Record<string, unknown>\r\n safeMode: boolean\r\n parentSignal?: AbortSignal\r\n fallbackTimeoutMs: number\r\n}): Promise<{ exitCode: number; stdout: string; stderr: string }> {\r\n const { signal, cleanup } = withHookTimeout({\r\n timeoutSeconds: args.hook.timeout,\r\n parentSignal: args.parentSignal,\r\n fallbackTimeoutMs: args.fallbackTimeoutMs,\r\n })\r\n\r\n try {\r\n const { queryQuick } = await import('@services/llmLazy')\r\n\r\n const systemPrompt = [\r\n 'You are executing a NewCraw prompt hook.',\r\n 'Return a single JSON object only (no markdown, no prose).',\r\n `hook_event_name: ${args.hookEvent}`,\r\n 'Valid fields include:',\r\n '- systemMessage: string',\r\n '- decision: \\\"approve\\\" | \\\"block\\\" (Stop/SubagentStop only)',\r\n '- reason: string (Stop/SubagentStop only)',\r\n '- hookSpecificOutput.permissionDecision: \\\"allow\\\" | \\\"deny\\\" | \\\"ask\\\" | \\\"passthrough\\\" (PreToolUse only)',\r\n '- hookSpecificOutput.updatedInput: object (PreToolUse only)',\r\n '- hookSpecificOutput.additionalContext: string (SessionStart/any)',\r\n ]\r\n\r\n const promptText = interpolatePromptHookTemplate(\r\n args.hook.prompt,\r\n args.hookInput,\r\n )\r\n const userPrompt = `${promptText}\\n\\n# Hook input JSON\\n${hookValueForPrompt(args.hookInput)}`\r\n\r\n const response = await queryQuick({\r\n systemPrompt,\r\n userPrompt,\r\n signal,\r\n })\r\n\r\n return { exitCode: 0, stdout: extractAssistantText(response), stderr: '' }\r\n } catch (err) {\r\n return {\r\n exitCode: 1,\r\n stdout: '',\r\n stderr: err instanceof Error ? err.message : String(err),\r\n }\r\n } finally {\r\n cleanup()\r\n }\r\n}\r\n\r\nfunction applyEnvFileToProcessEnv(envFilePath: string): void {\r\n let raw: string\r\n try {\r\n raw = readFileSync(envFilePath, 'utf8')\r\n } catch {\r\n return\r\n }\r\n\r\n const lines = raw.split(/\\r?\\n/)\r\n for (const line of lines) {\r\n const trimmed = line.trim()\r\n if (!trimmed || trimmed.startsWith('#')) continue\r\n\r\n const withoutExport = trimmed.startsWith('export ')\r\n ? trimmed.slice('export '.length).trim()\r\n : trimmed\r\n\r\n const eq = withoutExport.indexOf('=')\r\n if (eq <= 0) continue\r\n\r\n const key = withoutExport.slice(0, eq).trim()\r\n let value = withoutExport.slice(eq + 1).trim()\r\n if (!key) continue\r\n\r\n if (\r\n (value.startsWith('\"') && value.endsWith('\"')) ||\r\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\r\n ) {\r\n value = value.slice(1, -1)\r\n }\r\n\r\n process.env[key] = value\r\n }\r\n}\r\n\r\nfunction loadPluginPreToolUseMatchers(projectDir: string): HookMatcher[] {\r\n const plugins = getSessionPlugins()\r\n if (plugins.length === 0) return []\r\n\r\n const out: HookMatcher[] = []\r\n for (const plugin of plugins) {\r\n for (const hookPath of plugin.hooksFiles ?? []) {\r\n try {\r\n const stat = statSync(hookPath)\r\n const cached = pluginHooksCache.get(hookPath)\r\n if (cached && cached.mtimeMs === stat.mtimeMs) {\r\n out.push(\r\n ...(cached.byEvent.PreToolUse ?? []).map(m => ({\r\n matcher: m.matcher,\r\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\r\n })),\r\n )\r\n continue\r\n }\r\n\r\n const raw = readFileSync(hookPath, 'utf8')\r\n const parsed = JSON.parse(raw) as HookFileEnvelope\r\n const hookObj =\r\n parsed && typeof parsed === 'object' && parsed.hooks\r\n ? parsed.hooks\r\n : parsed\r\n const byEvent = parseHooksByEvent(hookObj)\r\n pluginHooksCache.set(hookPath, { mtimeMs: stat.mtimeMs, byEvent })\r\n out.push(\r\n ...(byEvent.PreToolUse ?? []).map(m => ({\r\n matcher: m.matcher,\r\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\r\n })),\r\n )\r\n } catch (err) {\r\n logError(err)\r\n continue\r\n }\r\n }\r\n\r\n const inlineByEvent = loadInlinePluginHooksByEvent(plugin)\r\n if (inlineByEvent?.PreToolUse) {\r\n out.push(\r\n ...inlineByEvent.PreToolUse.map(m => ({\r\n matcher: m.matcher,\r\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\r\n })),\r\n )\r\n }\r\n }\r\n\r\n return out\r\n}\r\n\r\nfunction loadPluginMatchers(\r\n projectDir: string,\r\n event: HookEventName,\r\n): HookMatcher[] {\r\n const plugins = getSessionPlugins()\r\n if (plugins.length === 0) return []\r\n\r\n const out: HookMatcher[] = []\r\n for (const plugin of plugins) {\r\n for (const hookPath of plugin.hooksFiles ?? []) {\r\n try {\r\n const stat = statSync(hookPath)\r\n const cached = pluginHooksCache.get(hookPath)\r\n if (cached && cached.mtimeMs === stat.mtimeMs) {\r\n out.push(\r\n ...(cached.byEvent[event] ?? []).map(m => ({\r\n matcher: m.matcher,\r\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\r\n })),\r\n )\r\n continue\r\n }\r\n\r\n const raw = readFileSync(hookPath, 'utf8')\r\n const parsed = JSON.parse(raw) as HookFileEnvelope\r\n const hookObj =\r\n parsed && typeof parsed === 'object' && parsed.hooks\r\n ? parsed.hooks\r\n : parsed\r\n const byEvent = parseHooksByEvent(hookObj)\r\n pluginHooksCache.set(hookPath, { mtimeMs: stat.mtimeMs, byEvent })\r\n out.push(\r\n ...(byEvent[event] ?? []).map(m => ({\r\n matcher: m.matcher,\r\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\r\n })),\r\n )\r\n } catch (err) {\r\n logError(err)\r\n continue\r\n }\r\n }\r\n\r\n const inlineByEvent = loadInlinePluginHooksByEvent(plugin)\r\n if (inlineByEvent?.[event]) {\r\n out.push(\r\n ...(inlineByEvent[event] ?? []).map(m => ({\r\n matcher: m.matcher,\r\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\r\n })),\r\n )\r\n }\r\n }\r\n return out\r\n}\r\n\r\nfunction parseSessionStartHooks(value: unknown): CommandHook[] {\r\n if (!Array.isArray(value)) return []\r\n const out: CommandHook[] = []\r\n for (const item of value) {\r\n if (!item || typeof item !== 'object') continue\r\n const hooksRaw = (item as any).hooks\r\n const hooks = Array.isArray(hooksRaw) ? hooksRaw.filter(isCommandHook) : []\r\n out.push(...hooks)\r\n }\r\n return out\r\n}\r\n\r\nexport async function getSessionStartAdditionalContext(args?: {\r\n permissionMode?: unknown\r\n cwd?: string\r\n signal?: AbortSignal\r\n}): Promise<string> {\r\n const sessionId = getKodeAgentSessionId()\r\n const cached = sessionStartCache.get(sessionId)\r\n if (cached) return cached.additionalContext\r\n\r\n const projectDir = args?.cwd ?? getCwd()\r\n const plugins = getSessionPlugins()\r\n if (plugins.length === 0) {\r\n sessionStartCache.set(sessionId, { additionalContext: '' })\r\n return ''\r\n }\r\n\r\n const envFileDir = mkdtempSync(join(tmpdir(), 'newcraw-env-'))\r\n const envFilePath = join(envFileDir, `${sessionId}.env`)\r\n try {\r\n writeFileSync(envFilePath, '', 'utf8')\r\n } catch {\r\n }\r\n\r\n const additionalContexts: string[] = []\r\n\r\n try {\r\n for (const plugin of plugins) {\r\n for (const hookPath of plugin.hooksFiles ?? []) {\r\n let hookObj: any\r\n try {\r\n const raw = readFileSync(hookPath, 'utf8')\r\n const parsed = JSON.parse(raw) as HookFileEnvelope\r\n hookObj =\r\n parsed && typeof parsed === 'object' && parsed.hooks\r\n ? parsed.hooks\r\n : parsed\r\n } catch {\r\n continue\r\n }\r\n\r\n const hooks = parseSessionStartHooks(hookObj?.SessionStart).map(h => ({\r\n ...h,\r\n pluginRoot: plugin.rootDir,\r\n }))\r\n if (hooks.length === 0) continue\r\n\r\n for (const hook of hooks) {\r\n const payload = {\r\n session_id: sessionId,\r\n cwd: projectDir,\r\n hook_event_name: 'SessionStart',\r\n permission_mode: coerceHookPermissionMode(args?.permissionMode),\r\n }\r\n\r\n const result = await runCommandHook({\r\n command: hook.command,\r\n stdinJson: payload,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot\r\n ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot }\r\n : {}),\r\n CLAUDE_ENV_FILE: envFilePath,\r\n },\r\n signal: args?.signal,\r\n })\r\n\r\n if (result.exitCode !== 0) continue\r\n const injected = parseSessionStartAdditionalContext(result.stdout)\r\n if (injected) additionalContexts.push(injected)\r\n }\r\n }\r\n\r\n const inlineHooks = (plugin.manifest as any)?.hooks\r\n if (\r\n inlineHooks &&\r\n typeof inlineHooks === 'object' &&\r\n !Array.isArray(inlineHooks)\r\n ) {\r\n const hookObj =\r\n (inlineHooks as any).hooks &&\r\n typeof (inlineHooks as any).hooks === 'object' &&\r\n !Array.isArray((inlineHooks as any).hooks)\r\n ? (inlineHooks as any).hooks\r\n : inlineHooks\r\n\r\n const hooks = parseSessionStartHooks(\r\n (hookObj as any)?.SessionStart,\r\n ).map(h => ({\r\n ...h,\r\n pluginRoot: plugin.rootDir,\r\n }))\r\n if (hooks.length > 0) {\r\n for (const hook of hooks) {\r\n const payload = {\r\n session_id: sessionId,\r\n cwd: projectDir,\r\n hook_event_name: 'SessionStart',\r\n permission_mode: coerceHookPermissionMode(args?.permissionMode),\r\n }\r\n\r\n const result = await runCommandHook({\r\n command: hook.command,\r\n stdinJson: payload,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot\r\n ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot }\r\n : {}),\r\n CLAUDE_ENV_FILE: envFilePath,\r\n },\r\n signal: args?.signal,\r\n })\r\n\r\n if (result.exitCode !== 0) continue\r\n const injected = parseSessionStartAdditionalContext(result.stdout)\r\n if (injected) additionalContexts.push(injected)\r\n }\r\n }\r\n }\r\n }\r\n } finally {\r\n applyEnvFileToProcessEnv(envFilePath)\r\n try {\r\n rmSync(envFileDir, { recursive: true, force: true })\r\n } catch {}\r\n }\r\n\r\n const additionalContext = additionalContexts.filter(Boolean).join('\\n\\n')\r\n sessionStartCache.set(sessionId, { additionalContext })\r\n return additionalContext\r\n}\r\n\r\nexport async function runPreToolUseHooks(args: {\r\n toolName: string\r\n toolInput: Record<string, unknown>\r\n toolUseId: string\r\n permissionMode?: unknown\r\n cwd?: string\r\n transcriptPath?: string\r\n safeMode?: boolean\r\n signal?: AbortSignal\r\n}): Promise<PreToolUseHookOutcome> {\r\n const projectDir = args.cwd ?? getCwd()\r\n const matchers = [\r\n ...loadSettingsMatchers(projectDir, 'PreToolUse'),\r\n ...loadPluginMatchers(projectDir, 'PreToolUse'),\r\n ]\r\n if (matchers.length === 0) return { kind: 'allow', warnings: [] }\r\n\r\n const applicable = matchers.filter(m =>\r\n matcherMatchesTool(m.matcher, args.toolName),\r\n )\r\n if (applicable.length === 0) return { kind: 'allow', warnings: [] }\r\n\r\n const hookInput: Record<string, unknown> = {\r\n session_id: getKodeAgentSessionId(),\r\n transcript_path: args.transcriptPath,\r\n cwd: projectDir,\r\n hook_event_name: 'PreToolUse',\r\n permission_mode: coerceHookPermissionMode(args.permissionMode),\r\n tool_name: args.toolName,\r\n tool_input: args.toolInput,\r\n tool_use_id: args.toolUseId,\r\n }\r\n\r\n const warnings: string[] = []\r\n const systemMessages: string[] = []\r\n const additionalContexts: string[] = []\r\n\r\n let mergedUpdatedInput: Record<string, unknown> | undefined\r\n let permissionDecision: 'allow' | 'ask' | null = null\r\n\r\n const executions: Array<\r\n Promise<{\r\n hook: Hook\r\n result: { exitCode: number; stdout: string; stderr: string }\r\n }>\r\n > = []\r\n\r\n for (const entry of applicable) {\r\n for (const hook of entry.hooks) {\r\n if (hook.type === 'prompt') {\r\n executions.push(\r\n runPromptHook({\r\n hook,\r\n hookEvent: 'PreToolUse',\r\n hookInput,\r\n safeMode: args.safeMode ?? false,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 30_000,\r\n }).then(result => ({ hook, result })),\r\n )\r\n continue\r\n }\r\n\r\n const { signal, cleanup } = withHookTimeout({\r\n timeoutSeconds: hook.timeout,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 60_000,\r\n })\r\n executions.push(\r\n runCommandHook({\r\n command: hook.command,\r\n stdinJson: hookInput,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot } : {}),\r\n },\r\n signal,\r\n })\r\n .then(result => ({ hook, result }))\r\n .finally(cleanup),\r\n )\r\n }\r\n }\r\n\r\n const settled = await Promise.allSettled(executions)\r\n for (const item of settled) {\r\n if (item.status === 'rejected') {\r\n logError(item.reason)\r\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\r\n continue\r\n }\r\n\r\n const { hook, result } = item.value\r\n\r\n if (result.exitCode === 2) {\r\n return {\r\n kind: 'block',\r\n message: coerceHookMessage(result.stdout, result.stderr),\r\n }\r\n }\r\n\r\n if (result.exitCode !== 0) {\r\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\r\n continue\r\n }\r\n\r\n const json = tryParseHookJson(result.stdout)\r\n if (!json) continue\r\n\r\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\r\n systemMessages.push(json.systemMessage.trim())\r\n }\r\n\r\n const additional =\r\n json.hookSpecificOutput &&\r\n typeof json.hookSpecificOutput === 'object' &&\r\n typeof json.hookSpecificOutput.additionalContext === 'string'\r\n ? String(json.hookSpecificOutput.additionalContext)\r\n : null\r\n if (additional && additional.trim()) {\r\n additionalContexts.push(additional.trim())\r\n }\r\n\r\n const decision = normalizePermissionDecision(\r\n json.hookSpecificOutput?.permissionDecision,\r\n )\r\n if (decision === 'deny') {\r\n const msg =\r\n systemMessages.length > 0\r\n ? systemMessages.join('\\n\\n')\r\n : coerceHookMessage(result.stdout, result.stderr)\r\n return {\r\n kind: 'block',\r\n message: msg,\r\n systemMessages,\r\n additionalContexts,\r\n }\r\n }\r\n\r\n if (decision === 'ask') {\r\n permissionDecision = 'ask'\r\n } else if (decision === 'allow') {\r\n if (!permissionDecision) permissionDecision = 'allow'\r\n }\r\n\r\n const updated =\r\n json.hookSpecificOutput &&\r\n typeof json.hookSpecificOutput === 'object' &&\r\n json.hookSpecificOutput.updatedInput &&\r\n typeof json.hookSpecificOutput.updatedInput === 'object'\r\n ? (json.hookSpecificOutput.updatedInput as Record<string, unknown>)\r\n : null\r\n if (updated) {\r\n mergedUpdatedInput = { ...(mergedUpdatedInput ?? {}), ...updated }\r\n }\r\n }\r\n\r\n return {\r\n kind: 'allow',\r\n warnings,\r\n permissionDecision:\r\n permissionDecision === 'allow'\r\n ? 'allow'\r\n : permissionDecision === 'ask'\r\n ? 'ask'\r\n : undefined,\r\n updatedInput:\r\n permissionDecision === 'allow' ? mergedUpdatedInput : undefined,\r\n systemMessages,\r\n additionalContexts,\r\n }\r\n}\r\n\r\nexport async function runPostToolUseHooks(args: {\r\n toolName: string\r\n toolInput: Record<string, unknown>\r\n toolResult: unknown\r\n toolUseId: string\r\n permissionMode?: unknown\r\n cwd?: string\r\n transcriptPath?: string\r\n safeMode?: boolean\r\n signal?: AbortSignal\r\n}): Promise<{\r\n warnings: string[]\r\n systemMessages: string[]\r\n additionalContexts: string[]\r\n}> {\r\n const projectDir = args.cwd ?? getCwd()\r\n const matchers = [\r\n ...loadSettingsMatchers(projectDir, 'PostToolUse'),\r\n ...loadPluginMatchers(projectDir, 'PostToolUse'),\r\n ]\r\n if (matchers.length === 0) {\r\n return { warnings: [], systemMessages: [], additionalContexts: [] }\r\n }\r\n\r\n const applicable = matchers.filter(m =>\r\n matcherMatchesTool(m.matcher, args.toolName),\r\n )\r\n if (applicable.length === 0) {\r\n return { warnings: [], systemMessages: [], additionalContexts: [] }\r\n }\r\n\r\n const hookInput: Record<string, unknown> = {\r\n session_id: getKodeAgentSessionId(),\r\n transcript_path: args.transcriptPath,\r\n cwd: projectDir,\r\n hook_event_name: 'PostToolUse',\r\n permission_mode: coerceHookPermissionMode(args.permissionMode),\r\n tool_name: args.toolName,\r\n tool_input: args.toolInput,\r\n tool_result: args.toolResult,\r\n tool_response: args.toolResult,\r\n tool_use_id: args.toolUseId,\r\n }\r\n\r\n const warnings: string[] = []\r\n const systemMessages: string[] = []\r\n const additionalContexts: string[] = []\r\n\r\n const executions: Array<\r\n Promise<{\r\n hook: Hook\r\n result: { exitCode: number; stdout: string; stderr: string }\r\n }>\r\n > = []\r\n\r\n for (const entry of applicable) {\r\n for (const hook of entry.hooks) {\r\n if (hook.type === 'prompt') {\r\n executions.push(\r\n runPromptHook({\r\n hook,\r\n hookEvent: 'PostToolUse',\r\n hookInput,\r\n safeMode: args.safeMode ?? false,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 30_000,\r\n }).then(result => ({ hook, result })),\r\n )\r\n continue\r\n }\r\n\r\n const { signal, cleanup } = withHookTimeout({\r\n timeoutSeconds: hook.timeout,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 60_000,\r\n })\r\n executions.push(\r\n runCommandHook({\r\n command: hook.command,\r\n stdinJson: hookInput,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot } : {}),\r\n },\r\n signal,\r\n })\r\n .then(result => ({ hook, result }))\r\n .finally(cleanup),\r\n )\r\n }\r\n }\r\n\r\n const settled = await Promise.allSettled(executions)\r\n for (const item of settled) {\r\n if (item.status === 'rejected') {\r\n logError(item.reason)\r\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\r\n continue\r\n }\r\n\r\n const { result } = item.value\r\n if (result.exitCode !== 0) {\r\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\r\n continue\r\n }\r\n\r\n const json = tryParseHookJson(result.stdout)\r\n if (!json) continue\r\n\r\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\r\n systemMessages.push(json.systemMessage.trim())\r\n }\r\n\r\n const additional =\r\n json.hookSpecificOutput &&\r\n typeof json.hookSpecificOutput === 'object' &&\r\n typeof json.hookSpecificOutput.additionalContext === 'string'\r\n ? String(json.hookSpecificOutput.additionalContext)\r\n : null\r\n if (additional && additional.trim()) {\r\n additionalContexts.push(additional.trim())\r\n }\r\n }\r\n\r\n return { warnings, systemMessages, additionalContexts }\r\n}\r\n\r\nexport type StopHookOutcome =\r\n | {\r\n decision: 'approve'\r\n warnings: string[]\r\n systemMessages: string[]\r\n additionalContexts: string[]\r\n }\r\n | {\r\n decision: 'block'\r\n message: string\r\n warnings: string[]\r\n systemMessages: string[]\r\n additionalContexts: string[]\r\n }\r\n\r\nexport async function runStopHooks(args: {\r\n hookEvent: 'Stop' | 'SubagentStop'\r\n reason?: string\r\n agentId?: string\r\n permissionMode?: unknown\r\n cwd?: string\r\n transcriptPath?: string\r\n safeMode?: boolean\r\n stopHookActive?: boolean\r\n signal?: AbortSignal\r\n}): Promise<StopHookOutcome> {\r\n const projectDir = args.cwd ?? getCwd()\r\n const matchers = [\r\n ...loadSettingsMatchers(projectDir, args.hookEvent),\r\n ...loadPluginMatchers(projectDir, args.hookEvent),\r\n ]\r\n if (matchers.length === 0) {\r\n return {\r\n decision: 'approve',\r\n warnings: [],\r\n systemMessages: [],\r\n additionalContexts: [],\r\n }\r\n }\r\n\r\n const applicable = matchers.filter(m => matcherMatchesTool(m.matcher, '*'))\r\n if (applicable.length === 0) {\r\n return {\r\n decision: 'approve',\r\n warnings: [],\r\n systemMessages: [],\r\n additionalContexts: [],\r\n }\r\n }\r\n\r\n const hookInput: Record<string, unknown> = {\r\n session_id: getKodeAgentSessionId(),\r\n transcript_path: args.transcriptPath,\r\n cwd: projectDir,\r\n hook_event_name: args.hookEvent,\r\n permission_mode: coerceHookPermissionMode(args.permissionMode),\r\n reason: args.reason,\r\n stop_hook_active: args.stopHookActive === true,\r\n ...(args.hookEvent === 'SubagentStop'\r\n ? { agent_id: args.agentId, agent_transcript_path: args.transcriptPath }\r\n : {}),\r\n }\r\n\r\n const warnings: string[] = []\r\n const systemMessages: string[] = []\r\n const additionalContexts: string[] = []\r\n\r\n const executions: Array<\r\n Promise<{\r\n hook: Hook\r\n result: { exitCode: number; stdout: string; stderr: string }\r\n }>\r\n > = []\r\n\r\n for (const entry of applicable) {\r\n for (const hook of entry.hooks) {\r\n if (hook.type === 'prompt') {\r\n executions.push(\r\n runPromptHook({\r\n hook,\r\n hookEvent: args.hookEvent,\r\n hookInput,\r\n safeMode: args.safeMode ?? false,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 30_000,\r\n }).then(result => ({ hook, result })),\r\n )\r\n continue\r\n }\r\n\r\n const { signal, cleanup } = withHookTimeout({\r\n timeoutSeconds: hook.timeout,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 60_000,\r\n })\r\n executions.push(\r\n runCommandHook({\r\n command: hook.command,\r\n stdinJson: hookInput,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot } : {}),\r\n },\r\n signal,\r\n })\r\n .then(result => ({ hook, result }))\r\n .finally(cleanup),\r\n )\r\n }\r\n }\r\n\r\n const settled = await Promise.allSettled(executions)\r\n for (const item of settled) {\r\n if (item.status === 'rejected') {\r\n logError(item.reason)\r\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\r\n continue\r\n }\r\n\r\n const { result } = item.value\r\n\r\n if (result.exitCode === 2) {\r\n return {\r\n decision: 'block',\r\n message: coerceHookMessage(result.stdout, result.stderr),\r\n warnings,\r\n systemMessages,\r\n additionalContexts,\r\n }\r\n }\r\n\r\n if (result.exitCode !== 0) {\r\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\r\n continue\r\n }\r\n\r\n const json = tryParseHookJson(result.stdout)\r\n if (!json) continue\r\n\r\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\r\n systemMessages.push(json.systemMessage.trim())\r\n }\r\n\r\n const additional =\r\n json.hookSpecificOutput &&\r\n typeof json.hookSpecificOutput === 'object' &&\r\n typeof json.hookSpecificOutput.additionalContext === 'string'\r\n ? String(json.hookSpecificOutput.additionalContext)\r\n : null\r\n if (additional && additional.trim()) {\r\n additionalContexts.push(additional.trim())\r\n }\r\n\r\n const stopDecision = normalizeStopDecision(json.decision)\r\n if (stopDecision === 'block') {\r\n const reason =\r\n typeof json.reason === 'string' && json.reason.trim()\r\n ? json.reason.trim()\r\n : null\r\n const msg =\r\n reason ||\r\n (systemMessages.length > 0\r\n ? systemMessages.join('\\n\\n')\r\n : coerceHookMessage(result.stdout, result.stderr))\r\n return {\r\n decision: 'block',\r\n message: msg,\r\n warnings,\r\n systemMessages,\r\n additionalContexts,\r\n }\r\n }\r\n }\r\n\r\n return { decision: 'approve', warnings, systemMessages, additionalContexts }\r\n}\r\n\r\nexport type UserPromptHookOutcome =\r\n | {\r\n decision: 'allow'\r\n warnings: string[]\r\n systemMessages: string[]\r\n additionalContexts: string[]\r\n }\r\n | {\r\n decision: 'block'\r\n message: string\r\n warnings: string[]\r\n systemMessages: string[]\r\n additionalContexts: string[]\r\n }\r\n\r\nexport async function runUserPromptSubmitHooks(args: {\r\n prompt: string\r\n permissionMode?: unknown\r\n cwd?: string\r\n transcriptPath?: string\r\n safeMode?: boolean\r\n signal?: AbortSignal\r\n}): Promise<UserPromptHookOutcome> {\r\n const projectDir = args.cwd ?? getCwd()\r\n const matchers = [\r\n ...loadSettingsMatchers(projectDir, 'UserPromptSubmit'),\r\n ...loadPluginMatchers(projectDir, 'UserPromptSubmit'),\r\n ]\r\n if (matchers.length === 0) {\r\n return {\r\n decision: 'allow',\r\n warnings: [],\r\n systemMessages: [],\r\n additionalContexts: [],\r\n }\r\n }\r\n\r\n const applicable = matchers.filter(m => matcherMatchesTool(m.matcher, '*'))\r\n if (applicable.length === 0) {\r\n return {\r\n decision: 'allow',\r\n warnings: [],\r\n systemMessages: [],\r\n additionalContexts: [],\r\n }\r\n }\r\n\r\n const hookInput: Record<string, unknown> = {\r\n session_id: getKodeAgentSessionId(),\r\n transcript_path: args.transcriptPath,\r\n cwd: projectDir,\r\n hook_event_name: 'UserPromptSubmit',\r\n permission_mode: coerceHookPermissionMode(args.permissionMode),\r\n user_prompt: args.prompt,\r\n prompt: args.prompt,\r\n }\r\n\r\n const warnings: string[] = []\r\n const systemMessages: string[] = []\r\n const additionalContexts: string[] = []\r\n\r\n const executions: Array<\r\n Promise<{\r\n hook: Hook\r\n result: { exitCode: number; stdout: string; stderr: string }\r\n }>\r\n > = []\r\n\r\n for (const entry of applicable) {\r\n for (const hook of entry.hooks) {\r\n if (hook.type === 'prompt') {\r\n executions.push(\r\n runPromptHook({\r\n hook,\r\n hookEvent: 'UserPromptSubmit',\r\n hookInput,\r\n safeMode: args.safeMode ?? false,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 30_000,\r\n }).then(result => ({ hook, result })),\r\n )\r\n continue\r\n }\r\n\r\n const { signal, cleanup } = withHookTimeout({\r\n timeoutSeconds: hook.timeout,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 60_000,\r\n })\r\n executions.push(\r\n runCommandHook({\r\n command: hook.command,\r\n stdinJson: hookInput,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot } : {}),\r\n },\r\n signal,\r\n })\r\n .then(result => ({ hook, result }))\r\n .finally(cleanup),\r\n )\r\n }\r\n }\r\n\r\n const settled = await Promise.allSettled(executions)\r\n for (const item of settled) {\r\n if (item.status === 'rejected') {\r\n logError(item.reason)\r\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\r\n continue\r\n }\r\n\r\n const { result } = item.value\r\n\r\n if (result.exitCode === 2) {\r\n return {\r\n decision: 'block',\r\n message: coerceHookMessage(result.stdout, result.stderr),\r\n warnings,\r\n systemMessages,\r\n additionalContexts,\r\n }\r\n }\r\n\r\n if (result.exitCode !== 0) {\r\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\r\n continue\r\n }\r\n\r\n const json = tryParseHookJson(result.stdout)\r\n if (!json) continue\r\n\r\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\r\n systemMessages.push(json.systemMessage.trim())\r\n }\r\n\r\n const additional =\r\n json.hookSpecificOutput &&\r\n typeof json.hookSpecificOutput === 'object' &&\r\n typeof json.hookSpecificOutput.additionalContext === 'string'\r\n ? String(json.hookSpecificOutput.additionalContext)\r\n : null\r\n if (additional && additional.trim()) {\r\n additionalContexts.push(additional.trim())\r\n }\r\n\r\n const stopDecision = normalizeStopDecision(json.decision)\r\n if (stopDecision === 'block') {\r\n const reason =\r\n typeof json.reason === 'string' && json.reason.trim()\r\n ? json.reason.trim()\r\n : null\r\n const msg =\r\n reason ||\r\n (systemMessages.length > 0\r\n ? systemMessages.join('\\n\\n')\r\n : coerceHookMessage(result.stdout, result.stderr))\r\n return {\r\n decision: 'block',\r\n message: msg,\r\n warnings,\r\n systemMessages,\r\n additionalContexts,\r\n }\r\n }\r\n }\r\n\r\n return { decision: 'allow', warnings, systemMessages, additionalContexts }\r\n}\r\n\r\nexport async function runSessionEndHooks(args: {\r\n reason: string\r\n permissionMode?: unknown\r\n cwd?: string\r\n transcriptPath?: string\r\n safeMode?: boolean\r\n signal?: AbortSignal\r\n}): Promise<{ warnings: string[]; systemMessages: string[] }> {\r\n const projectDir = args.cwd ?? getCwd()\r\n const matchers = [\r\n ...loadSettingsMatchers(projectDir, 'SessionEnd'),\r\n ...loadPluginMatchers(projectDir, 'SessionEnd'),\r\n ]\r\n if (matchers.length === 0) return { warnings: [], systemMessages: [] }\r\n\r\n const applicable = matchers.filter(m => matcherMatchesTool(m.matcher, '*'))\r\n if (applicable.length === 0) return { warnings: [], systemMessages: [] }\r\n\r\n const hookInput: Record<string, unknown> = {\r\n session_id: getKodeAgentSessionId(),\r\n transcript_path: args.transcriptPath,\r\n cwd: projectDir,\r\n hook_event_name: 'SessionEnd',\r\n permission_mode: coerceHookPermissionMode(args.permissionMode),\r\n reason: args.reason,\r\n }\r\n\r\n const warnings: string[] = []\r\n const systemMessages: string[] = []\r\n\r\n const executions: Array<\r\n Promise<{\r\n hook: Hook\r\n result: { exitCode: number; stdout: string; stderr: string }\r\n }>\r\n > = []\r\n\r\n for (const entry of applicable) {\r\n for (const hook of entry.hooks) {\r\n if (hook.type === 'prompt') {\r\n executions.push(\r\n runPromptHook({\r\n hook,\r\n hookEvent: 'SessionEnd',\r\n hookInput,\r\n safeMode: args.safeMode ?? false,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 30_000,\r\n }).then(result => ({ hook, result })),\r\n )\r\n continue\r\n }\r\n\r\n const { signal, cleanup } = withHookTimeout({\r\n timeoutSeconds: hook.timeout,\r\n parentSignal: args.signal,\r\n fallbackTimeoutMs: 60_000,\r\n })\r\n executions.push(\r\n runCommandHook({\r\n command: hook.command,\r\n stdinJson: hookInput,\r\n cwd: projectDir,\r\n env: {\r\n CLAUDE_PROJECT_DIR: projectDir,\r\n ...(hook.pluginRoot ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot } : {}),\r\n },\r\n signal,\r\n })\r\n .then(result => ({ hook, result }))\r\n .finally(cleanup),\r\n )\r\n }\r\n }\r\n\r\n const settled = await Promise.allSettled(executions)\r\n for (const item of settled) {\r\n if (item.status === 'rejected') {\r\n logError(item.reason)\r\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\r\n continue\r\n }\r\n\r\n const { result } = item.value\r\n if (result.exitCode !== 0) {\r\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\r\n continue\r\n }\r\n\r\n const json = tryParseHookJson(result.stdout)\r\n if (!json) continue\r\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\r\n systemMessages.push(json.systemMessage.trim())\r\n }\r\n }\r\n\r\n return { warnings, systemMessages }\r\n}\r\n\r\nexport function __resetKodeHooksCacheForTests(): void {\r\n cache.clear()\r\n pluginHooksCache.clear()\r\n sessionStartCache.clear()\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["content", "parts"]
|
|
7
7
|
}
|
|
@@ -2,7 +2,7 @@ import { createRequire as __newcrawCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __newcrawCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
getSessionProjectDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PC6QOCGI.js";
|
|
6
6
|
import {
|
|
7
7
|
isUuid
|
|
8
8
|
} from "./chunk-JX5ZQYTQ.js";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createRequire as __newcrawCreateRequire } from "node:module";
|
|
2
|
+
const require = __newcrawCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
__esm
|
|
5
|
+
} from "./chunk-D4OZACS2.js";
|
|
6
|
+
|
|
7
|
+
// src/utils/text/errors.ts
|
|
8
|
+
var MalformedCommandError, AbortError, ConfigParseError;
|
|
9
|
+
var init_errors = __esm({
|
|
10
|
+
"src/utils/text/errors.ts"() {
|
|
11
|
+
MalformedCommandError = class extends TypeError {
|
|
12
|
+
};
|
|
13
|
+
AbortError = class extends Error {
|
|
14
|
+
};
|
|
15
|
+
ConfigParseError = class extends Error {
|
|
16
|
+
filePath;
|
|
17
|
+
defaultConfig;
|
|
18
|
+
constructor(message, filePath, defaultConfig) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = "ConfigParseError";
|
|
21
|
+
this.filePath = filePath;
|
|
22
|
+
this.defaultConfig = defaultConfig;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
MalformedCommandError,
|
|
30
|
+
AbortError,
|
|
31
|
+
ConfigParseError,
|
|
32
|
+
init_errors
|
|
33
|
+
};
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/text/errors.ts"],
|
|
4
4
|
"sourcesContent": ["export class MalformedCommandError extends TypeError {}\r\n\r\nexport class DeprecatedCommandError extends Error {}\r\n\r\nexport class AbortError extends Error {}\r\n\r\nexport class ConfigParseError extends Error {\r\n filePath: string\r\n defaultConfig: unknown\r\n\r\n constructor(message: string, filePath: string, defaultConfig: unknown) {\r\n super(message)\r\n this.name = 'ConfigParseError'\r\n this.filePath = filePath\r\n this.defaultConfig = defaultConfig\r\n }\r\n}\r\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": ";;;;;;;AAAA,IAAa,uBAIA,YAEA;AANb;AAAA;AAAO,IAAM,wBAAN,cAAoC,UAAU;AAAA,IAAC;AAI/C,IAAM,aAAN,cAAyB,MAAM;AAAA,IAAC;AAEhC,IAAM,mBAAN,cAA+B,MAAM;AAAA,MAC1C;AAAA,MACA;AAAA,MAEA,YAAY,SAAiB,UAAkB,eAAwB;AACrE,cAAM,OAAO;AACb,aAAK,OAAO;AACZ,aAAK,WAAW;AAChB,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|