newcraw 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/REPL-DECTPCL5.js +50 -0
  2. package/dist/{acp-J4WDYGRX.js → acp-HA476EHW.js} +69 -40
  3. package/dist/acp-HA476EHW.js.map +7 -0
  4. package/dist/{agentsValidate-UBOER2IN.js → agentsValidate-EDPFUUMG.js} +13 -10
  5. package/dist/{agentsValidate-UBOER2IN.js.map → agentsValidate-EDPFUUMG.js.map} +1 -1
  6. package/dist/{ask-MGUO3L35.js → ask-5SP4YYRD.js} +62 -52
  7. package/dist/ask-5SP4YYRD.js.map +7 -0
  8. package/dist/{autoUpdater-2GS6LRPK.js → autoUpdater-FFMM2DR7.js} +5 -4
  9. package/dist/chunk-2BVCVKKB.js +135 -0
  10. package/dist/chunk-2BVCVKKB.js.map +7 -0
  11. package/dist/{chunk-2C43OXE7.js → chunk-2JCTO2EY.js} +38 -59
  12. package/dist/chunk-2JCTO2EY.js.map +7 -0
  13. package/dist/{chunk-OJIMOLIC.js → chunk-3CKC4ABU.js} +3631 -7464
  14. package/dist/chunk-3CKC4ABU.js.map +7 -0
  15. package/dist/chunk-ARCEUG3V.js +88 -0
  16. package/dist/chunk-ARCEUG3V.js.map +7 -0
  17. package/dist/{chunk-RUXIBQ3B.js → chunk-BJYXLCRS.js} +4 -4
  18. package/dist/{chunk-VKI7ORIO.js → chunk-BMKE6FT5.js} +37 -18
  19. package/dist/{chunk-VKI7ORIO.js.map → chunk-BMKE6FT5.js.map} +1 -1
  20. package/dist/chunk-BQCOSNM3.js +93 -0
  21. package/dist/chunk-BQCOSNM3.js.map +7 -0
  22. package/dist/chunk-CHB5K4GI.js +107 -0
  23. package/dist/chunk-CHB5K4GI.js.map +7 -0
  24. package/dist/chunk-D4OZACS2.js +35 -0
  25. package/dist/chunk-EHQ2M5B4.js +166 -0
  26. package/dist/{chunk-ZYSVG4X3.js.map → chunk-EHQ2M5B4.js.map} +2 -2
  27. package/dist/chunk-EUBZGAIN.js +372 -0
  28. package/dist/chunk-EUBZGAIN.js.map +7 -0
  29. package/dist/{chunk-UYRR6F5S.js → chunk-FIMCETCB.js} +9 -3
  30. package/dist/{chunk-UYRR6F5S.js.map → chunk-FIMCETCB.js.map} +1 -1
  31. package/dist/{chunk-DEF3KFP7.js → chunk-GVLJUD6R.js} +4 -2
  32. package/dist/{chunk-DEF3KFP7.js.map → chunk-GVLJUD6R.js.map} +1 -1
  33. package/dist/chunk-HLBLZKZH.js +45 -0
  34. package/dist/chunk-HLBLZKZH.js.map +7 -0
  35. package/dist/{chunk-XS6PU75S.js → chunk-IVWPPTDM.js} +1 -1
  36. package/dist/{chunk-A7X6OCZE.js → chunk-IXFBUXQW.js} +1 -1
  37. package/dist/{chunk-HSJ6HYAO.js → chunk-IZZTKEZH.js} +18 -10
  38. package/dist/chunk-IZZTKEZH.js.map +7 -0
  39. package/dist/{chunk-2EFL22PV.js → chunk-JI4HCLK7.js} +7 -3
  40. package/dist/chunk-JI4HCLK7.js.map +7 -0
  41. package/dist/chunk-JLVECHVJ.js +36 -0
  42. package/dist/chunk-JLVECHVJ.js.map +7 -0
  43. package/dist/{chunk-XXU2NVOE.js → chunk-KJTPUTU7.js} +30 -6
  44. package/dist/chunk-KJTPUTU7.js.map +7 -0
  45. package/dist/{chunk-V5U6BHT2.js → chunk-KS646CDL.js} +7 -3
  46. package/dist/{chunk-V5U6BHT2.js.map → chunk-KS646CDL.js.map} +1 -1
  47. package/dist/{chunk-53A4JHFW.js → chunk-MJ3MLGVB.js} +23 -4
  48. package/dist/chunk-MJ3MLGVB.js.map +7 -0
  49. package/dist/chunk-MJLWBVZP.js +822 -0
  50. package/dist/chunk-MJLWBVZP.js.map +7 -0
  51. package/dist/chunk-MMF5RMLU.js +65 -0
  52. package/dist/chunk-MMF5RMLU.js.map +7 -0
  53. package/dist/{chunk-QH2M65BR.js → chunk-MUW3J7CP.js} +7 -3
  54. package/dist/{chunk-QH2M65BR.js.map → chunk-MUW3J7CP.js.map} +1 -1
  55. package/dist/{chunk-3LMXSKZ7.js → chunk-NFXLN6FJ.js} +1 -1
  56. package/dist/chunk-NT7RDVDA.js +33 -0
  57. package/dist/{chunk-KQSHIOZK.js.map → chunk-NT7RDVDA.js.map} +1 -1
  58. package/dist/{chunk-OZHBEG7U.js → chunk-O4EKE3YR.js} +15 -5
  59. package/dist/{chunk-OZHBEG7U.js.map → chunk-O4EKE3YR.js.map} +1 -1
  60. package/dist/chunk-Q2OBTLBI.js +5473 -0
  61. package/dist/chunk-Q2OBTLBI.js.map +7 -0
  62. package/dist/{chunk-WWDVA4NV.js → chunk-QJ7MQIHN.js} +22 -6
  63. package/dist/{chunk-WWDVA4NV.js.map → chunk-QJ7MQIHN.js.map} +1 -1
  64. package/dist/{chunk-N5OHRWG2.js → chunk-QSRXXZO7.js} +4 -2
  65. package/dist/{chunk-N5OHRWG2.js.map → chunk-QSRXXZO7.js.map} +1 -1
  66. package/dist/{chunk-GZTCXXSS.js → chunk-QT5GS374.js} +57 -46
  67. package/dist/{chunk-GZTCXXSS.js.map → chunk-QT5GS374.js.map} +1 -1
  68. package/dist/chunk-QX5Y5CE5.js +683 -0
  69. package/dist/{chunk-F3COCCAE.js.map → chunk-QX5Y5CE5.js.map} +1 -1
  70. package/dist/{chunk-IIFUDVGS.js → chunk-U6IF5D3J.js} +310 -177
  71. package/dist/chunk-U6IF5D3J.js.map +7 -0
  72. package/dist/{chunk-VQSCECTS.js → chunk-UPRKGNBR.js} +6 -4
  73. package/dist/{chunk-VQSCECTS.js.map → chunk-UPRKGNBR.js.map} +1 -1
  74. package/dist/chunk-UUCRNFMH.js +62 -0
  75. package/dist/chunk-UUCRNFMH.js.map +7 -0
  76. package/dist/chunk-UYWZQVH5.js +35 -0
  77. package/dist/chunk-UYWZQVH5.js.map +7 -0
  78. package/dist/{chunk-XMGUQHMF.js → chunk-VSSVN6WG.js} +11 -1
  79. package/dist/chunk-VSSVN6WG.js.map +7 -0
  80. package/dist/{chunk-VHS2MZQS.js → chunk-W7Q3VYAB.js} +9 -6
  81. package/dist/{chunk-VHS2MZQS.js.map → chunk-W7Q3VYAB.js.map} +1 -1
  82. package/dist/{chunk-JWXQNBBA.js → chunk-WAXMRSVR.js} +7 -1
  83. package/dist/{chunk-JWXQNBBA.js.map → chunk-WAXMRSVR.js.map} +1 -1
  84. package/dist/{chunk-BWYKUDJR.js → chunk-X3NER6FY.js} +14 -8
  85. package/dist/{chunk-BWYKUDJR.js.map → chunk-X3NER6FY.js.map} +1 -1
  86. package/dist/{chunk-IM33F5CM.js → chunk-XYQZLDRB.js} +1668 -1623
  87. package/dist/chunk-XYQZLDRB.js.map +7 -0
  88. package/dist/{chunk-LOIZNQOU.js → chunk-ZM5FMRLS.js} +9 -3
  89. package/dist/{chunk-LOIZNQOU.js.map → chunk-ZM5FMRLS.js.map} +1 -1
  90. package/dist/{chunk-755HIAI3.js → chunk-ZMO4E7IW.js} +3 -42
  91. package/dist/chunk-ZMO4E7IW.js.map +7 -0
  92. package/dist/{cli-KZGF3FV5.js → cli-4KO6TA5J.js} +251 -485
  93. package/dist/cli-4KO6TA5J.js.map +7 -0
  94. package/dist/commands-JSY7CGSU.js +54 -0
  95. package/dist/{config-GTJWCNPF.js → config-DQEFVW3Y.js} +9 -6
  96. package/dist/{context-WF3TTXQU.js → context-HVQCTO5R.js} +8 -7
  97. package/dist/{costTracker-2G3ZI2JF.js → costTracker-VSWW7SRT.js} +3 -2
  98. package/dist/{customCommands-QOWK57EX.js → customCommands-XCINU5TG.js} +6 -5
  99. package/dist/{env-37BAP7QF.js → env-ZOPEXWMF.js} +10 -7
  100. package/dist/{gateway-IZYO6YFJ.js → gateway-SUXSILQL.js} +542 -96
  101. package/dist/gateway-SUXSILQL.js.map +7 -0
  102. package/dist/identity-3KZQQVBG.js +16 -0
  103. package/dist/index.js +8 -6
  104. package/dist/index.js.map +1 -1
  105. package/dist/{kodeAgentSessionId-KTGFX2BE.js → kodeAgentSessionId-4SH24DVH.js} +1 -1
  106. package/dist/{kodeAgentSessionLoad-6F7SJXBC.js → kodeAgentSessionLoad-HB3BYVNG.js} +6 -5
  107. package/dist/{kodeAgentSessionResume-UEEDRJ3N.js → kodeAgentSessionResume-IGSZZY3G.js} +6 -5
  108. package/dist/{kodeAgentStreamJson-VIXFTYL5.js → kodeAgentStreamJson-4ZKIWKS3.js} +4 -2
  109. package/dist/{kodeAgentStreamJsonSession-XC3IPREZ.js → kodeAgentStreamJsonSession-4L76UC75.js} +15 -4
  110. package/dist/kodeAgentStreamJsonSession-4L76UC75.js.map +7 -0
  111. package/dist/{kodeAgentStructuredStdio-SI5C7AAD.js → kodeAgentStructuredStdio-5DCUC6V6.js} +3 -3
  112. package/dist/{kodeHooks-V36SHCTC.js → kodeHooks-H6DMC3XX.js} +6 -5
  113. package/dist/{llm-CYUDKJNR.js → llm-OJZ6DZVC.js} +306 -60
  114. package/dist/llm-OJZ6DZVC.js.map +7 -0
  115. package/dist/{llmLazy-IXVVBRTN.js → llmLazy-TDLZZDPL.js} +2 -2
  116. package/dist/{loader-OEJ6C3TN.js → loader-MOVYZ76M.js} +6 -5
  117. package/dist/{mcp-KE3SILMX.js → mcp-DUYSIR5L.js} +10 -9
  118. package/dist/{mentionProcessor-GAU2WAYB.js → mentionProcessor-EKVLXJN4.js} +14 -7
  119. package/dist/{mentionProcessor-GAU2WAYB.js.map → mentionProcessor-EKVLXJN4.js.map} +1 -1
  120. package/dist/{messages-WCSGGSEU.js → messages-23ICFVMC.js} +2 -2
  121. package/dist/{model-4TQIV5J2.js → model-FUBCTRTV.js} +10 -7
  122. package/dist/{openai-KTZV6F7N.js → openai-SMYIAIO4.js} +8 -7
  123. package/dist/{outputStyles-WX5RYQOA.js → outputStyles-HBOYJFBE.js} +6 -5
  124. package/dist/{pluginRuntime-JXMJZ2LC.js → pluginRuntime-ATZMDZA7.js} +11 -8
  125. package/dist/{pluginRuntime-JXMJZ2LC.js.map → pluginRuntime-ATZMDZA7.js.map} +1 -1
  126. package/dist/{pluginValidation-JNQZYLUP.js → pluginValidation-7CGOMT6F.js} +8 -7
  127. package/dist/prompts-MFESKNYZ.js +58 -0
  128. package/dist/query-BFEFOX4S.js +58 -0
  129. package/dist/{responsesStreaming-2AIT6GHG.js → responsesStreaming-JORGEFQC.js} +1 -1
  130. package/dist/{ripgrep-KDPQAMB2.js → ripgrep-KNJBCJIQ.js} +5 -4
  131. package/dist/sandbox-P3FR4G4D.js +63 -0
  132. package/dist/{skillMarketplace-IXAGP3Q2.js → skillMarketplace-PCMKVV4O.js} +5 -4
  133. package/dist/{state-MSCYLB6Y.js → state-XBYIQ7R4.js} +6 -3
  134. package/dist/structuredOutput-KAVFUV2Z.js +9 -0
  135. package/dist/theme-4ZSXUILR.js +15 -0
  136. package/dist/thinking-TTNUZUB3.js +18 -0
  137. package/dist/{toolPermissionContext-I3IXPVED.js → toolPermissionContext-JCQ5MFUT.js} +1 -1
  138. package/dist/toolPermissionContext-JCQ5MFUT.js.map +7 -0
  139. package/dist/toolPermissionContextState-R6ZGMKP6.js +24 -0
  140. package/dist/toolPermissionContextState-R6ZGMKP6.js.map +7 -0
  141. package/dist/{toolPermissionSettings-EUZKGZU2.js → toolPermissionSettings-GMEYTJEA.js} +9 -8
  142. package/dist/toolPermissionSettings-GMEYTJEA.js.map +7 -0
  143. package/dist/tools-7FVKB7BG.js +55 -0
  144. package/dist/tools-7FVKB7BG.js.map +7 -0
  145. package/dist/{userInput-LJL4CVOB.js → userInput-SZEUY5J6.js} +49 -34
  146. package/dist/{userInput-LJL4CVOB.js.map → userInput-SZEUY5J6.js.map} +1 -1
  147. package/dist/{uuid-VA3KVASX.js → uuid-RQH3OZ3W.js} +1 -1
  148. package/dist/uuid-RQH3OZ3W.js.map +7 -0
  149. package/dist/workspace-EP63OB5S.js +21 -0
  150. package/dist/workspace-EP63OB5S.js.map +7 -0
  151. package/package.json +2 -2
  152. package/web/dist/assets/index-XuLVvSQF.js +251 -0
  153. package/web/dist/assets/index-pSid9IlY.css +10 -0
  154. package/web/dist/index.html +2 -2
  155. package/dist/REPL-IAK7ZN2Z.js +0 -42
  156. package/dist/acp-J4WDYGRX.js.map +0 -7
  157. package/dist/ask-MGUO3L35.js.map +0 -7
  158. package/dist/chunk-2C43OXE7.js.map +0 -7
  159. package/dist/chunk-2EFL22PV.js.map +0 -7
  160. package/dist/chunk-53A4JHFW.js.map +0 -7
  161. package/dist/chunk-755HIAI3.js.map +0 -7
  162. package/dist/chunk-AXWJI6N5.js +0 -11
  163. package/dist/chunk-F3COCCAE.js +0 -654
  164. package/dist/chunk-HSJ6HYAO.js.map +0 -7
  165. package/dist/chunk-IIFUDVGS.js.map +0 -7
  166. package/dist/chunk-IM33F5CM.js.map +0 -7
  167. package/dist/chunk-KQSHIOZK.js +0 -24
  168. package/dist/chunk-OJIMOLIC.js.map +0 -7
  169. package/dist/chunk-XMGUQHMF.js.map +0 -7
  170. package/dist/chunk-XXU2NVOE.js.map +0 -7
  171. package/dist/chunk-ZYSVG4X3.js +0 -151
  172. package/dist/cli-KZGF3FV5.js.map +0 -7
  173. package/dist/commands-AVEBLFVS.js +0 -46
  174. package/dist/gateway-IZYO6YFJ.js.map +0 -7
  175. package/dist/kodeAgentStreamJsonSession-XC3IPREZ.js.map +0 -7
  176. package/dist/llm-CYUDKJNR.js.map +0 -7
  177. package/dist/prompts-LE6GK75N.js +0 -48
  178. package/dist/query-GGIP6PWG.js +0 -50
  179. package/dist/theme-GAMFOLBW.js +0 -14
  180. package/dist/tools-3HOUIDM3.js +0 -47
  181. package/web/dist/assets/index-COAJqX1Z.css +0 -1
  182. package/web/dist/assets/index-CzS_4LmC.js +0 -179
  183. /package/dist/{REPL-IAK7ZN2Z.js.map → REPL-DECTPCL5.js.map} +0 -0
  184. /package/dist/{autoUpdater-2GS6LRPK.js.map → autoUpdater-FFMM2DR7.js.map} +0 -0
  185. /package/dist/{chunk-RUXIBQ3B.js.map → chunk-BJYXLCRS.js.map} +0 -0
  186. /package/dist/{chunk-AXWJI6N5.js.map → chunk-D4OZACS2.js.map} +0 -0
  187. /package/dist/{chunk-XS6PU75S.js.map → chunk-IVWPPTDM.js.map} +0 -0
  188. /package/dist/{chunk-A7X6OCZE.js.map → chunk-IXFBUXQW.js.map} +0 -0
  189. /package/dist/{chunk-3LMXSKZ7.js.map → chunk-NFXLN6FJ.js.map} +0 -0
  190. /package/dist/{commands-AVEBLFVS.js.map → commands-JSY7CGSU.js.map} +0 -0
  191. /package/dist/{config-GTJWCNPF.js.map → config-DQEFVW3Y.js.map} +0 -0
  192. /package/dist/{context-WF3TTXQU.js.map → context-HVQCTO5R.js.map} +0 -0
  193. /package/dist/{costTracker-2G3ZI2JF.js.map → costTracker-VSWW7SRT.js.map} +0 -0
  194. /package/dist/{customCommands-QOWK57EX.js.map → customCommands-XCINU5TG.js.map} +0 -0
  195. /package/dist/{env-37BAP7QF.js.map → env-ZOPEXWMF.js.map} +0 -0
  196. /package/dist/{kodeAgentSessionId-KTGFX2BE.js.map → identity-3KZQQVBG.js.map} +0 -0
  197. /package/dist/{kodeAgentSessionLoad-6F7SJXBC.js.map → kodeAgentSessionId-4SH24DVH.js.map} +0 -0
  198. /package/dist/{kodeAgentSessionResume-UEEDRJ3N.js.map → kodeAgentSessionLoad-HB3BYVNG.js.map} +0 -0
  199. /package/dist/{kodeAgentStreamJson-VIXFTYL5.js.map → kodeAgentSessionResume-IGSZZY3G.js.map} +0 -0
  200. /package/dist/{kodeAgentStructuredStdio-SI5C7AAD.js.map → kodeAgentStreamJson-4ZKIWKS3.js.map} +0 -0
  201. /package/dist/{kodeHooks-V36SHCTC.js.map → kodeAgentStructuredStdio-5DCUC6V6.js.map} +0 -0
  202. /package/dist/{llmLazy-IXVVBRTN.js.map → kodeHooks-H6DMC3XX.js.map} +0 -0
  203. /package/dist/{loader-OEJ6C3TN.js.map → llmLazy-TDLZZDPL.js.map} +0 -0
  204. /package/dist/{mcp-KE3SILMX.js.map → loader-MOVYZ76M.js.map} +0 -0
  205. /package/dist/{messages-WCSGGSEU.js.map → mcp-DUYSIR5L.js.map} +0 -0
  206. /package/dist/{model-4TQIV5J2.js.map → messages-23ICFVMC.js.map} +0 -0
  207. /package/dist/{openai-KTZV6F7N.js.map → model-FUBCTRTV.js.map} +0 -0
  208. /package/dist/{outputStyles-WX5RYQOA.js.map → openai-SMYIAIO4.js.map} +0 -0
  209. /package/dist/{pluginValidation-JNQZYLUP.js.map → outputStyles-HBOYJFBE.js.map} +0 -0
  210. /package/dist/{prompts-LE6GK75N.js.map → pluginValidation-7CGOMT6F.js.map} +0 -0
  211. /package/dist/{query-GGIP6PWG.js.map → prompts-MFESKNYZ.js.map} +0 -0
  212. /package/dist/{responsesStreaming-2AIT6GHG.js.map → query-BFEFOX4S.js.map} +0 -0
  213. /package/dist/{ripgrep-KDPQAMB2.js.map → responsesStreaming-JORGEFQC.js.map} +0 -0
  214. /package/dist/{skillMarketplace-IXAGP3Q2.js.map → ripgrep-KNJBCJIQ.js.map} +0 -0
  215. /package/dist/{state-MSCYLB6Y.js.map → sandbox-P3FR4G4D.js.map} +0 -0
  216. /package/dist/{theme-GAMFOLBW.js.map → skillMarketplace-PCMKVV4O.js.map} +0 -0
  217. /package/dist/{toolPermissionContext-I3IXPVED.js.map → state-XBYIQ7R4.js.map} +0 -0
  218. /package/dist/{toolPermissionSettings-EUZKGZU2.js.map → structuredOutput-KAVFUV2Z.js.map} +0 -0
  219. /package/dist/{tools-3HOUIDM3.js.map → theme-4ZSXUILR.js.map} +0 -0
  220. /package/dist/{uuid-VA3KVASX.js.map → thinking-TTNUZUB3.js.map} +0 -0
@@ -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
  }
@@ -4,20 +4,31 @@ import {
4
4
  getCurrentProjectConfig,
5
5
  getGlobalConfig,
6
6
  getOrCreateUserID,
7
+ init_config,
7
8
  saveCurrentProjectConfig
8
- } from "./chunk-IIFUDVGS.js";
9
+ } from "./chunk-U6IF5D3J.js";
9
10
  import {
10
11
  SESSION_ID,
11
12
  env,
12
13
  execFileNoThrow,
13
14
  getCwd,
15
+ init_env,
16
+ init_execFileNoThrow,
17
+ init_log,
18
+ init_state,
14
19
  logError
15
- } from "./chunk-IM33F5CM.js";
20
+ } from "./chunk-XYQZLDRB.js";
16
21
  import {
17
- MACRO
18
- } from "./chunk-ZYSVG4X3.js";
22
+ MACRO,
23
+ init_macros
24
+ } from "./chunk-EHQ2M5B4.js";
25
+
26
+ // src/context/index.ts
27
+ init_config();
28
+ init_log();
19
29
 
20
30
  // src/utils/config/style.ts
31
+ init_state();
21
32
  import { readFileSync as readFileSync2 } from "fs";
22
33
  import { memoize } from "lodash-es";
23
34
 
@@ -181,9 +192,11 @@ ${styles.join("\n\n")}`;
181
192
  });
182
193
 
183
194
  // src/context/index.ts
195
+ init_state();
184
196
  import { memoize as memoize4, omit } from "lodash-es";
185
197
 
186
198
  // src/utils/system/git.ts
199
+ init_execFileNoThrow();
187
200
  import { memoize as memoize2 } from "lodash-es";
188
201
  var getIsGit = memoize2(async () => {
189
202
  const { code } = await execFileNoThrow("git", [
@@ -258,11 +271,17 @@ async function getGitState() {
258
271
  }
259
272
 
260
273
  // src/context/index.ts
274
+ init_execFileNoThrow();
261
275
  import { join as join2 } from "path";
262
276
  import { readFile } from "fs/promises";
263
277
  import { existsSync as existsSync2, readdirSync } from "fs";
264
278
 
265
279
  // src/utils/identity/user.ts
280
+ init_config();
281
+ init_env();
282
+ init_execFileNoThrow();
283
+ init_log();
284
+ init_macros();
266
285
  import { memoize as memoize3 } from "lodash-es";
267
286
  var getGitEmail = memoize3(async () => {
268
287
  const result = await execFileNoThrow("git", ["config", "user.email"]);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/context/index.ts", "../src/utils/config/style.ts", "../src/utils/config/projectInstructions.ts", "../src/utils/system/git.ts", "../src/utils/identity/user.ts"],
4
+ "sourcesContent": ["import {\r\n getCurrentProjectConfig,\r\n saveCurrentProjectConfig,\r\n} from '@utils/config'\r\nimport { logError } from '@utils/log'\r\nimport { getCodeStyle } from '@utils/config/style'\r\nimport { getCwd } from '@utils/state'\r\nimport { memoize, omit } from 'lodash-es'\r\nimport { getIsGit } from '@utils/system/git'\r\nimport { execFileNoThrow } from '@utils/system/execFileNoThrow'\r\nimport { join } from 'path'\r\nimport { readFile } from 'fs/promises'\r\nimport { existsSync, readdirSync } from 'fs'\r\nimport { getModelManager } from '@utils/model'\r\nimport { lastX } from '@utils/text/generators'\r\nimport { getGitEmail } from '@utils/identity/user'\r\nimport {\r\n getProjectInstructionFiles,\r\n readAndConcatProjectInstructionFiles,\r\n} from '@utils/config/projectInstructions'\r\nexport async function getInstructionFilesNote(): Promise<string | null> {\r\n try {\r\n const cwd = getCwd()\r\n const instructionFiles = getProjectInstructionFiles(cwd)\r\n const legacyPath = join(cwd, 'CLAUDE.md')\r\n const hasLegacy = existsSync(legacyPath)\r\n\r\n if (instructionFiles.length === 0 && !hasLegacy) {\r\n return null\r\n }\r\n\r\n const fileTypes = new Set<string>()\r\n for (const f of instructionFiles) fileTypes.add(f.filename)\r\n if (hasLegacy) fileTypes.add('CLAUDE.md (legacy)')\r\n\r\n const allFiles = [\r\n ...instructionFiles.map(f => f.absolutePath),\r\n ...(hasLegacy ? [legacyPath] : []),\r\n ]\r\n\r\n return `NOTE: Additional project instruction files (${Array.from(fileTypes).join(', ')}) were found. When working in these directories, make sure to read and follow the instructions in the corresponding files:\\n${allFiles\r\n .map(_ => `- ${_}`)\r\n .join('\\n')}`\r\n } catch (error) {\r\n logError(error)\r\n return null\r\n }\r\n}\r\n\r\nexport function setContext(key: string, value: string): void {\r\n const projectConfig = getCurrentProjectConfig()\r\n const context = omit(\r\n { ...projectConfig.context, [key]: value },\r\n 'codeStyle',\r\n 'directoryStructure',\r\n )\r\n saveCurrentProjectConfig({ ...projectConfig, context })\r\n}\r\n\r\nexport function removeContext(key: string): void {\r\n const projectConfig = getCurrentProjectConfig()\r\n const context = omit(\r\n projectConfig.context,\r\n key,\r\n 'codeStyle',\r\n 'directoryStructure',\r\n )\r\n saveCurrentProjectConfig({ ...projectConfig, context })\r\n}\r\n\r\nexport const getReadme = memoize(async (): Promise<string | null> => {\r\n try {\r\n const readmePath = join(getCwd(), 'README.md')\r\n if (!existsSync(readmePath)) {\r\n return null\r\n }\r\n const content = await readFile(readmePath, 'utf-8')\r\n return content\r\n } catch (e) {\r\n logError(e)\r\n return null\r\n }\r\n})\r\n\r\nexport async function getProjectDocsForCwd(\r\n cwd: string,\r\n): Promise<string | null> {\r\n try {\r\n const instructionFiles = getProjectInstructionFiles(cwd)\r\n const legacyPath = join(cwd, 'CLAUDE.md')\r\n\r\n const docs = []\r\n\r\n if (instructionFiles.length > 0) {\r\n const { content } = readAndConcatProjectInstructionFiles(\r\n instructionFiles,\r\n { includeHeadings: true },\r\n )\r\n if (content.trim().length > 0) docs.push(content)\r\n }\r\n\r\n if (existsSync(legacyPath)) {\r\n try {\r\n const content = await readFile(legacyPath, 'utf-8')\r\n docs.push(\r\n `# Legacy instructions (CLAUDE.md)\\n\\n${content}`,\r\n )\r\n } catch (e) {\r\n logError(e)\r\n }\r\n }\r\n\r\n return docs.length > 0 ? docs.join('\\n\\n---\\n\\n') : null\r\n } catch (e) {\r\n logError(e)\r\n return null\r\n }\r\n}\r\n\r\nexport const getProjectDocs = memoize(async (): Promise<string | null> => {\r\n return getProjectDocsForCwd(getCwd())\r\n})\r\n\r\nexport const getGitStatus = memoize(async (): Promise<string | null> => {\r\n if (process.env.NODE_ENV === 'test') {\r\n return null\r\n }\r\n if (!(await getIsGit())) {\r\n return null\r\n }\r\n\r\n try {\r\n const [branch, mainBranch, status, log, authorLog] = await Promise.all([\r\n execFileNoThrow(\r\n 'git',\r\n ['branch', '--show-current'],\r\n undefined,\r\n undefined,\r\n false,\r\n ).then(({ stdout }) => stdout.trim()),\r\n execFileNoThrow(\r\n 'git',\r\n ['rev-parse', '--abbrev-ref', 'origin/HEAD'],\r\n undefined,\r\n undefined,\r\n false,\r\n ).then(({ stdout }) => stdout.replace('origin/', '').trim()),\r\n execFileNoThrow(\r\n 'git',\r\n ['status', '--short'],\r\n undefined,\r\n undefined,\r\n false,\r\n ).then(({ stdout }) => stdout.trim()),\r\n execFileNoThrow(\r\n 'git',\r\n ['log', '--oneline', '-n', '5'],\r\n undefined,\r\n undefined,\r\n false,\r\n ).then(({ stdout }) => stdout.trim()),\r\n execFileNoThrow(\r\n 'git',\r\n [\r\n 'log',\r\n '--oneline',\r\n '-n',\r\n '5',\r\n '--author',\r\n (await getGitEmail()) || '',\r\n ],\r\n undefined,\r\n undefined,\r\n false,\r\n ).then(({ stdout }) => stdout.trim()),\r\n ])\r\n const statusLines = status.split('\\n').length\r\n const truncatedStatus =\r\n statusLines > 200\r\n ? status.split('\\n').slice(0, 200).join('\\n') +\r\n '\\n... (truncated because there are more than 200 lines. If you need more information, run \"git status\" using BashTool)'\r\n : status\r\n\r\n return `This is the git status at the start of the conversation. Note that this status is a snapshot in time, and will not update during the conversation.\\nCurrent branch: ${branch}\\n\\nMain branch (you will usually use this for PRs): ${mainBranch}\\n\\nStatus:\\n${truncatedStatus || '(clean)'}\\n\\nRecent commits:\\n${log}\\n\\nYour recent commits:\\n${authorLog || '(no recent commits)'}`\r\n } catch (error) {\r\n logError(error)\r\n return null\r\n }\r\n})\r\n\r\nexport const getContext = memoize(\r\n async (): Promise<{\r\n [k: string]: string\r\n }> => {\r\n const codeStyle = getCodeStyle()\r\n const projectConfig = getCurrentProjectConfig()\r\n const dontCrawl = projectConfig.dontCrawlDirectory\r\n const [\r\n gitStatus,\r\n directoryStructure,\r\n instructionFilesNote,\r\n readme,\r\n projectDocs,\r\n ] = await Promise.all([\r\n getGitStatus(),\r\n dontCrawl ? Promise.resolve('') : getDirectoryStructure(),\r\n dontCrawl ? Promise.resolve('') : getInstructionFilesNote(),\r\n getReadme(),\r\n getProjectDocs(),\r\n ])\r\n return {\r\n ...projectConfig.context,\r\n ...(directoryStructure ? { directoryStructure } : {}),\r\n ...(gitStatus ? { gitStatus } : {}),\r\n ...(codeStyle ? { codeStyle } : {}),\r\n ...(instructionFilesNote ? { instructionFilesNote } : {}),\r\n ...(readme ? { readme } : {}),\r\n ...(projectDocs ? { projectDocs } : {}),\r\n }\r\n },\r\n)\r\n\r\nexport const getDirectoryStructure = memoize(\r\n async function (): Promise<string> {\r\n let lines: string\r\n try {\r\n const entries = readdirSync(getCwd(), { withFileTypes: true })\r\n lines = entries\r\n .map(entry => `${entry.isDirectory() ? 'd' : 'f'} ${entry.name}`)\r\n .join('\\n')\r\n } catch (error) {\r\n logError(error)\r\n return ''\r\n }\r\n\r\n return `Below is a snapshot of this project's file structure at the start of the conversation. This snapshot will NOT update during the conversation.\r\n\r\n${lines}`\r\n },\r\n)\r\n", "import { readFileSync } from 'fs'\r\nimport { memoize } from 'lodash-es'\r\nimport { getCwd } from '@utils/state'\r\nimport { getProjectInstructionFiles } from './projectInstructions'\r\n\r\nconst STYLE_PROMPT =\r\n 'The codebase follows strict style guidelines shown below. All code changes must strictly adhere to these guidelines to maintain consistency and quality.'\r\n\r\nexport const getCodeStyle = memoize((): string => {\r\n const styles: string[] = []\r\n\r\n const instructionFiles = getProjectInstructionFiles(getCwd())\r\n for (const file of instructionFiles) {\r\n try {\r\n styles.push(\r\n `Contents of ${file.absolutePath}:\\n\\n${readFileSync(file.absolutePath, 'utf-8')}`,\r\n )\r\n } catch {\r\n }\r\n }\r\n\r\n if (styles.length === 0) {\r\n return ''\r\n }\r\n\r\n return `${STYLE_PROMPT}\\n\\n${styles.join('\\n\\n')}`\r\n})\r\n", "import { existsSync, readFileSync } from 'fs'\r\nimport { dirname, join, parse, relative, resolve, sep } from 'path'\r\n\r\nexport type ProjectInstructionFile = {\r\n absolutePath: string\r\n relativePathFromGitRoot: string\r\n filename: 'AGENTS.override.md' | 'AGENTS.md'\r\n}\r\n\r\nconst DEFAULT_PROJECT_DOC_MAX_BYTES = 32 * 1024\r\n\r\nfunction isRegularFile(path: string): boolean {\r\n try {\r\n return existsSync(path)\r\n } catch {\r\n return false\r\n }\r\n}\r\n\r\nexport function findGitRoot(startDir: string): string | null {\r\n let currentDir = resolve(startDir)\r\n const fsRoot = parse(currentDir).root\r\n\r\n while (true) {\r\n const dotGitPath = join(currentDir, '.git')\r\n if (existsSync(dotGitPath)) {\r\n return currentDir\r\n }\r\n if (currentDir === fsRoot) {\r\n return null\r\n }\r\n currentDir = dirname(currentDir)\r\n }\r\n}\r\n\r\nfunction getDirsFromGitRootToCwd(gitRoot: string, cwd: string): string[] {\r\n const absoluteGitRoot = resolve(gitRoot)\r\n const absoluteCwd = resolve(cwd)\r\n\r\n const rel = relative(absoluteGitRoot, absoluteCwd)\r\n if (!rel || rel === '.') {\r\n return [absoluteGitRoot]\r\n }\r\n\r\n const parts = rel.split(sep).filter(Boolean)\r\n const dirs: string[] = [absoluteGitRoot]\r\n for (let i = 0; i < parts.length; i++) {\r\n dirs.push(join(absoluteGitRoot, ...parts.slice(0, i + 1)))\r\n }\r\n return dirs\r\n}\r\n\r\nexport function getProjectInstructionFiles(\r\n cwd: string,\r\n): ProjectInstructionFile[] {\r\n const gitRoot = findGitRoot(cwd)\r\n const root = gitRoot ?? resolve(cwd)\r\n const dirs = getDirsFromGitRootToCwd(root, cwd)\r\n\r\n const results: ProjectInstructionFile[] = []\r\n for (const dir of dirs) {\r\n const overridePath = join(dir, 'AGENTS.override.md')\r\n const agentsPath = join(dir, 'AGENTS.md')\r\n\r\n if (isRegularFile(overridePath)) {\r\n results.push({\r\n absolutePath: overridePath,\r\n relativePathFromGitRoot:\r\n relative(root, overridePath) || 'AGENTS.override.md',\r\n filename: 'AGENTS.override.md',\r\n })\r\n continue\r\n }\r\n\r\n if (isRegularFile(agentsPath)) {\r\n results.push({\r\n absolutePath: agentsPath,\r\n relativePathFromGitRoot: relative(root, agentsPath) || 'AGENTS.md',\r\n filename: 'AGENTS.md',\r\n })\r\n }\r\n }\r\n\r\n return results\r\n}\r\n\r\nexport function getProjectDocMaxBytes(): number {\r\n const raw = process.env.NEWCRAW_PROJECT_DOC_MAX_BYTES\r\n if (!raw) return DEFAULT_PROJECT_DOC_MAX_BYTES\r\n const parsed = Number.parseInt(raw, 10)\r\n if (!Number.isFinite(parsed) || parsed <= 0)\r\n return DEFAULT_PROJECT_DOC_MAX_BYTES\r\n return parsed\r\n}\r\n\r\nexport function readAndConcatProjectInstructionFiles(\r\n files: ProjectInstructionFile[],\r\n {\r\n maxBytes = getProjectDocMaxBytes(),\r\n includeHeadings = true,\r\n }: { maxBytes?: number; includeHeadings?: boolean } = {},\r\n): { content: string; truncated: boolean } {\r\n let totalBytes = 0\r\n let truncated = false\r\n\r\n const parts: string[] = []\r\n\r\n const truncateUtf8ToBytes = (value: string, bytes: number): string => {\r\n const buf = Buffer.from(value, 'utf8')\r\n if (buf.length <= bytes) return value\r\n return buf.subarray(0, Math.max(0, bytes)).toString('utf8')\r\n }\r\n\r\n for (const file of files) {\r\n if (totalBytes >= maxBytes) {\r\n truncated = true\r\n break\r\n }\r\n\r\n let raw: string\r\n try {\r\n raw = readFileSync(file.absolutePath, 'utf-8')\r\n } catch {\r\n continue\r\n }\r\n\r\n if (!raw.trim()) continue\r\n\r\n const separator = parts.length > 0 ? '\\n\\n' : ''\r\n const separatorBytes = Buffer.byteLength(separator, 'utf8')\r\n const remainingAfterSeparator = maxBytes - totalBytes - separatorBytes\r\n if (remainingAfterSeparator <= 0) {\r\n truncated = true\r\n break\r\n }\r\n\r\n const heading = includeHeadings\r\n ? `# ${file.filename}\\n\\n_Path: ${file.relativePathFromGitRoot}_\\n\\n`\r\n : ''\r\n\r\n const block = `${heading}${raw}`.trimEnd()\r\n const blockBytes = Buffer.byteLength(block, 'utf8')\r\n\r\n if (blockBytes <= remainingAfterSeparator) {\r\n parts.push(`${separator}${block}`)\r\n totalBytes += separatorBytes + blockBytes\r\n continue\r\n }\r\n\r\n truncated = true\r\n const suffix = `\\n\\n... (truncated: project instruction files exceeded ${maxBytes} bytes)`\r\n const suffixBytes = Buffer.byteLength(suffix, 'utf8')\r\n\r\n let finalBlock = ''\r\n if (suffixBytes >= remainingAfterSeparator) {\r\n finalBlock = truncateUtf8ToBytes(suffix, remainingAfterSeparator)\r\n } else {\r\n const prefixBudget = remainingAfterSeparator - suffixBytes\r\n const prefix = truncateUtf8ToBytes(block, prefixBudget)\r\n finalBlock = `${prefix}${suffix}`\r\n }\r\n\r\n parts.push(`${separator}${finalBlock}`)\r\n totalBytes += separatorBytes + Buffer.byteLength(finalBlock, 'utf8')\r\n break\r\n }\r\n\r\n return { content: parts.join(''), truncated }\r\n}\r\n", "import { memoize } from 'lodash-es'\r\nimport { execFileNoThrow } from './execFileNoThrow'\r\n\r\nexport const getIsGit = memoize(async (): Promise<boolean> => {\r\n const { code } = await execFileNoThrow('git', [\r\n 'rev-parse',\r\n '--is-inside-work-tree',\r\n ])\r\n return code === 0\r\n})\r\n\r\nexport const getHead = async (): Promise<string> => {\r\n const { stdout } = await execFileNoThrow('git', ['rev-parse', 'HEAD'])\r\n return stdout.trim()\r\n}\r\n\r\nexport const getBranch = async (): Promise<string> => {\r\n const { stdout } = await execFileNoThrow(\r\n 'git',\r\n ['rev-parse', '--abbrev-ref', 'HEAD'],\r\n undefined,\r\n undefined,\r\n false,\r\n )\r\n return stdout.trim()\r\n}\r\n\r\nexport const getRemoteUrl = async (): Promise<string | null> => {\r\n const { stdout, code } = await execFileNoThrow(\r\n 'git',\r\n ['remote', 'get-url', 'origin'],\r\n undefined,\r\n undefined,\r\n false,\r\n )\r\n return code === 0 ? stdout.trim() : null\r\n}\r\n\r\nexport const getIsHeadOnRemote = async (): Promise<boolean> => {\r\n const { code } = await execFileNoThrow(\r\n 'git',\r\n ['rev-parse', '@{u}'],\r\n undefined,\r\n undefined,\r\n false,\r\n )\r\n return code === 0\r\n}\r\n\r\nexport const getIsClean = async (): Promise<boolean> => {\r\n const { stdout } = await execFileNoThrow(\r\n 'git',\r\n ['status', '--porcelain'],\r\n undefined,\r\n undefined,\r\n false,\r\n )\r\n return stdout.trim().length === 0\r\n}\r\n\r\nexport interface GitRepoState {\r\n commitHash: string\r\n branchName: string\r\n remoteUrl: string | null\r\n isHeadOnRemote: boolean\r\n isClean: boolean\r\n}\r\n\r\nexport async function getGitState(): Promise<GitRepoState | null> {\r\n try {\r\n const [commitHash, branchName, remoteUrl, isHeadOnRemote, isClean] =\r\n await Promise.all([\r\n getHead(),\r\n getBranch(),\r\n getRemoteUrl(),\r\n getIsHeadOnRemote(),\r\n getIsClean(),\r\n ])\r\n\r\n return {\r\n commitHash,\r\n branchName,\r\n remoteUrl,\r\n isHeadOnRemote,\r\n isClean,\r\n }\r\n } catch (_) {\r\n return null\r\n }\r\n}\r\n", "import { getGlobalConfig, getOrCreateUserID } from '@utils/config'\r\nimport { memoize } from 'lodash-es'\r\nimport { env } from '@utils/config/env'\r\nimport { execFileNoThrow } from '@utils/system/execFileNoThrow'\r\nimport { logError, SESSION_ID } from '@utils/log'\r\nimport { MACRO } from '@constants/macros'\r\nexport const getGitEmail = memoize(async (): Promise<string | undefined> => {\r\n const result = await execFileNoThrow('git', ['config', 'user.email'])\r\n if (result.code !== 0) {\r\n logError(`Failed to get git email: ${result.stdout} ${result.stderr}`)\r\n return undefined\r\n }\r\n return result.stdout.trim() || undefined\r\n})\r\n\r\ntype SimpleUser = {\r\n customIDs?: Record<string, string>\r\n userID: string\r\n appVersion?: string\r\n userAgent?: string\r\n email?: string\r\n custom?: Record<string, unknown>\r\n}\r\n\r\nexport const getUser = memoize(async (): Promise<SimpleUser> => {\r\n const userID = getOrCreateUserID()\r\n const config = getGlobalConfig()\r\n const email = undefined\r\n return {\r\n customIDs: {\r\n sessionId: SESSION_ID,\r\n },\r\n userID,\r\n appVersion: MACRO.VERSION,\r\n userAgent: env.platform,\r\n email,\r\n custom: {\r\n nodeVersion: env.nodeVersion,\r\n userType: process.env.USER_TYPE,\r\n organizationUuid: config.oauthAccount?.organizationUuid,\r\n accountUuid: config.oauthAccount?.accountUuid,\r\n },\r\n }\r\n})\r\n"],
5
+ "mappings": "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",
6
+ "names": ["readFileSync", "readFileSync", "memoize", "memoize", "join", "existsSync", "memoize", "join", "existsSync", "memoize"]
7
+ }