pybao-cli 1.5.51 → 1.5.52

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 (217) hide show
  1. package/dist/REPL-CDBGUX7H.js +53 -0
  2. package/dist/{acp-OGXPDTPB.js → acp-KC4VUW7Q.js} +47 -47
  3. package/dist/{agentsValidate-7USQLEWU.js → agentsValidate-YGJMW4T4.js} +9 -9
  4. package/dist/{ask-KTRDNR5F.js → ask-YHWMV475.js} +46 -46
  5. package/dist/{autoUpdater-YTVTFZKD.js → autoUpdater-76RMCNA7.js} +4 -4
  6. package/dist/{blockParser-QPLEX5NJ.js → blockParser-RZPICWAA.js} +2 -2
  7. package/dist/{chunk-D2MHLZDN.js → chunk-2EQA5NLL.js} +1 -1
  8. package/dist/{chunk-A2QSQWOQ.js → chunk-33EYH7S3.js} +5 -5
  9. package/dist/{chunk-I6GA6HKT.js → chunk-3I35GELX.js} +5 -5
  10. package/dist/{chunk-OLQLK3UC.js → chunk-4MAX5UNY.js} +1 -1
  11. package/dist/{chunk-CXWYHX64.js → chunk-4UQCXDKA.js} +4 -4
  12. package/dist/{chunk-WZDDUIIK.js → chunk-6QSG5OON.js} +5 -5
  13. package/dist/{chunk-TKU3UJXS.js → chunk-AZF3LTDE.js} +3 -3
  14. package/dist/{chunk-726GW5OD.js → chunk-CBDJJ2WQ.js} +2 -2
  15. package/dist/{chunk-56FKUXNO.js → chunk-DPE2QUR4.js} +4 -4
  16. package/dist/{chunk-UMOI4SIG.js → chunk-DYLRL3GG.js} +1 -1
  17. package/dist/{chunk-F4AXICO7.js → chunk-EXNV3ROJ.js} +1 -1
  18. package/dist/{chunk-QHRHQ4TE.js → chunk-FNMZKMUC.js} +2 -2
  19. package/dist/{chunk-RDDHG7KT.js → chunk-HSOB4XJ2.js} +1 -1
  20. package/dist/{chunk-PWHPXHNR.js → chunk-I42N2MZA.js} +3 -3
  21. package/dist/{chunk-5C3V4WBH.js → chunk-JGECWVPT.js} +1160 -65
  22. package/dist/{chunk-LG4DZXZE.js → chunk-KPZ4UMNV.js} +1 -1
  23. package/dist/{chunk-FTPQJIPL.js → chunk-KQBUAEA5.js} +4 -4
  24. package/dist/{chunk-UIKYSSZX.js → chunk-L2JZIHLB.js} +6 -6
  25. package/dist/{chunk-X6MCOKYP.js → chunk-NQJAXQZX.js} +3 -3
  26. package/dist/{chunk-PGRCNKEQ.js → chunk-O6CVVWZV.js} +1 -1
  27. package/dist/{chunk-HM2PO36Q.js → chunk-OEHXDSEI.js} +4 -4
  28. package/dist/{chunk-GZOD5652.js → chunk-PA5FTBIQ.js} +2 -2
  29. package/dist/{chunk-YEUUN3PW.js → chunk-QEPBMPEE.js} +1 -1
  30. package/dist/{chunk-5AGDLQAW.js → chunk-QQ27ECXF.js} +1 -1
  31. package/dist/{chunk-NXWVCWZU.js → chunk-QYVB7FJ4.js} +1 -1
  32. package/dist/{chunk-EEOIMMFC.js → chunk-R64GVTIZ.js} +3 -3
  33. package/dist/{chunk-276WD5RN.js → chunk-RETS7G2B.js} +6 -6
  34. package/dist/{chunk-TGGCRPZR.js → chunk-SZS6SEDB.js} +1 -1
  35. package/dist/{chunk-GUNRUYLP.js → chunk-UCNZU6OO.js} +2 -2
  36. package/dist/{chunk-TZGJRTAC.js → chunk-UG7ZFONK.js} +4 -4
  37. package/dist/{chunk-XTFXKDRC.js → chunk-VFFYWI27.js} +4 -4
  38. package/dist/{chunk-OMELVAJD.js → chunk-YQ6JLMLS.js} +1 -1
  39. package/dist/{chunk-ESKGSE6G.js → chunk-ZFLQSIXD.js} +3 -3
  40. package/dist/{chunk-CLYWO4WT.js → chunk-ZWTGVUTI.js} +3 -3
  41. package/dist/{cli-KFO36PW7.js → cli-JMJIGYNF.js} +120 -120
  42. package/dist/commands-N4RLEJU6.js +57 -0
  43. package/dist/{config-UGXKX5W7.js → config-6AW7SYEB.js} +6 -6
  44. package/dist/{context-TDXVLXJZ.js → context-VGBWHZ57.js} +9 -9
  45. package/dist/{conversationPersistence-ATHSGPCA.js → conversationPersistence-AAJPHPUT.js} +4 -4
  46. package/dist/{conversationTracker-IGKMS7I2.js → conversationTracker-MVX6VQG2.js} +5 -5
  47. package/dist/{costTracker-DJVFVAVZ.js → costTracker-KBXHS4NS.js} +2 -2
  48. package/dist/{customCommands-5MIZHJIB.js → customCommands-PJI43HDH.js} +6 -6
  49. package/dist/{env-3KNLQRPA.js → env-JEHV2OD5.js} +3 -3
  50. package/dist/{file-DFXDFI6W.js → file-G3IOPSJE.js} +5 -5
  51. package/dist/index.js +4 -4
  52. package/dist/{llm-MRDYTVAB.js → llm-CVILTZMI.js} +50 -50
  53. package/dist/{llmLazy-2O7VC463.js → llmLazy-TS22QBZC.js} +2 -2
  54. package/dist/{loader-FZWD5WHH.js → loader-DA33SOZU.js} +7 -7
  55. package/dist/{lsp-2TM75CW4.js → lsp-M5NJ7YC7.js} +9 -9
  56. package/dist/{lspAnchor-XGTUMZDM.js → lspAnchor-LUE27QI2.js} +10 -10
  57. package/dist/{mcp-FITQROXI.js → mcp-3R7KNW6M.js} +10 -10
  58. package/dist/{mentionProcessor-L5WCXBIE.js → mentionProcessor-KM7DJSIF.js} +8 -8
  59. package/dist/{messages-4S23AYLZ.js → messages-EUS4CRVP.js} +3 -3
  60. package/dist/{model-ECABFXED.js → model-3GE72U3P.js} +7 -7
  61. package/dist/{openai-AAHVW6AQ.js → openai-3TL5XAIV.js} +8 -8
  62. package/dist/{outputStyles-2QWBQSS4.js → outputStyles-7FC4BJZX.js} +7 -7
  63. package/dist/{pluginRuntime-TDH3JKLN.js → pluginRuntime-IWKORZEI.js} +8 -8
  64. package/dist/{pluginValidation-FBGQ4JDV.js → pluginValidation-DC2PWTS3.js} +8 -8
  65. package/dist/prompts-X5RHKH65.js +59 -0
  66. package/dist/{pybAgentSessionId-EPCAMQ25.js → pybAgentSessionId-3LL4RMFU.js} +2 -2
  67. package/dist/{pybAgentSessionLoad-WEEMBEOX.js → pybAgentSessionLoad-DCESKISD.js} +6 -6
  68. package/dist/{pybAgentSessionResume-FXJA5YEY.js → pybAgentSessionResume-CIJIMHTT.js} +8 -8
  69. package/dist/{pybAgentStreamJson-EQPO52B6.js → pybAgentStreamJson-K7E4VEFE.js} +2 -2
  70. package/dist/{pybAgentStreamJsonSession-I3QVTPS4.js → pybAgentStreamJsonSession-SZMCWTVW.js} +4 -4
  71. package/dist/{pybAgentStructuredStdio-ROCSOGNT.js → pybAgentStructuredStdio-T6JJLJVC.js} +3 -3
  72. package/dist/{pybHooks-QVFTX2NF.js → pybHooks-CYAJNZ6G.js} +7 -7
  73. package/dist/query-7PFFQCW2.js +57 -0
  74. package/dist/{registry-R642XWSX.js → registry-HF5Y4WZS.js} +6 -6
  75. package/dist/{replSessionBridge-EBXNFUAD.js → replSessionBridge-4XEXXNRH.js} +3 -3
  76. package/dist/{responsesStreaming-NPGJLPV3.js → responsesStreaming-RZW2QVJU.js} +3 -3
  77. package/dist/{ripgrep-ZCE3BIKN.js → ripgrep-W5ULQHU4.js} +4 -4
  78. package/dist/{skillMarketplace-O2RFNXT4.js → skillMarketplace-WKOGEWIO.js} +4 -4
  79. package/dist/{smart-edit-AWHJDSU6.js → smart-edit-EQBEMPKQ.js} +2 -2
  80. package/dist/{state-GMP5BAO3.js → state-GWKESQ7O.js} +3 -3
  81. package/dist/theme-VRKM2HNU.js +14 -0
  82. package/dist/{toolPermissionContext-BSFV23IL.js → toolPermissionContext-TAUII5GX.js} +2 -2
  83. package/dist/{toolPermissionSettings-SLI774QB.js → toolPermissionSettings-Z2I77LVO.js} +9 -9
  84. package/dist/tools-VM7IZKXZ.js +57 -0
  85. package/dist/{userInput-73ASWIUB.js → userInput-Q2HIIFPM.js} +49 -49
  86. package/dist/{uuid-CVHEFGW4.js → uuid-EJN2AIBK.js} +2 -2
  87. package/package.json +3 -3
  88. package/dist/REPL-VQEZ7GBU.js +0 -53
  89. package/dist/REPL-VQEZ7GBU.js.map +0 -7
  90. package/dist/acp-OGXPDTPB.js.map +0 -7
  91. package/dist/agentsValidate-7USQLEWU.js.map +0 -7
  92. package/dist/ask-KTRDNR5F.js.map +0 -7
  93. package/dist/autoUpdater-YTVTFZKD.js.map +0 -7
  94. package/dist/blockParser-QPLEX5NJ.js.map +0 -7
  95. package/dist/chunk-276WD5RN.js.map +0 -7
  96. package/dist/chunk-2RXKUCFS.js.map +0 -7
  97. package/dist/chunk-3DFBSQIT.js.map +0 -7
  98. package/dist/chunk-56FKUXNO.js.map +0 -7
  99. package/dist/chunk-5AGDLQAW.js.map +0 -7
  100. package/dist/chunk-5C3V4WBH.js.map +0 -7
  101. package/dist/chunk-5JHD6MUL.js.map +0 -7
  102. package/dist/chunk-5P7HBXTD.js.map +0 -7
  103. package/dist/chunk-726GW5OD.js.map +0 -7
  104. package/dist/chunk-A2QSQWOQ.js.map +0 -7
  105. package/dist/chunk-A3BVXXA3.js.map +0 -7
  106. package/dist/chunk-B6IMQJZM.js.map +0 -7
  107. package/dist/chunk-BJSWTHRM.js.map +0 -7
  108. package/dist/chunk-BKCAVW2G.js.map +0 -7
  109. package/dist/chunk-CLYWO4WT.js.map +0 -7
  110. package/dist/chunk-CXWYHX64.js.map +0 -7
  111. package/dist/chunk-CZZKRPE2.js.map +0 -7
  112. package/dist/chunk-D2MHLZDN.js.map +0 -7
  113. package/dist/chunk-EEOIMMFC.js.map +0 -7
  114. package/dist/chunk-ESKGSE6G.js.map +0 -7
  115. package/dist/chunk-F4AXICO7.js.map +0 -7
  116. package/dist/chunk-FTPQJIPL.js.map +0 -7
  117. package/dist/chunk-GUNRUYLP.js.map +0 -7
  118. package/dist/chunk-GZOD5652.js.map +0 -7
  119. package/dist/chunk-HM2PO36Q.js.map +0 -7
  120. package/dist/chunk-I3J4JYES.js.map +0 -7
  121. package/dist/chunk-I6GA6HKT.js.map +0 -7
  122. package/dist/chunk-KFEHHKZ2.js.map +0 -7
  123. package/dist/chunk-LG4DZXZE.js.map +0 -7
  124. package/dist/chunk-MWPFU2KU.js.map +0 -7
  125. package/dist/chunk-NXWVCWZU.js.map +0 -7
  126. package/dist/chunk-OLQLK3UC.js.map +0 -7
  127. package/dist/chunk-OMELVAJD.js.map +0 -7
  128. package/dist/chunk-OUXHGDLH.js.map +0 -7
  129. package/dist/chunk-PGRCNKEQ.js.map +0 -7
  130. package/dist/chunk-PWHPXHNR.js.map +0 -7
  131. package/dist/chunk-QHRHQ4TE.js.map +0 -7
  132. package/dist/chunk-QWIBSCDN.js.map +0 -7
  133. package/dist/chunk-RDDHG7KT.js.map +0 -7
  134. package/dist/chunk-RQVLBMP7.js.map +0 -7
  135. package/dist/chunk-TFHFYID3.js.map +0 -7
  136. package/dist/chunk-TGGCRPZR.js.map +0 -7
  137. package/dist/chunk-TKU3UJXS.js.map +0 -7
  138. package/dist/chunk-TZGJRTAC.js.map +0 -7
  139. package/dist/chunk-UIKYSSZX.js.map +0 -7
  140. package/dist/chunk-UMOI4SIG.js.map +0 -7
  141. package/dist/chunk-UNNVICVU.js.map +0 -7
  142. package/dist/chunk-UZ34JEUK.js.map +0 -7
  143. package/dist/chunk-WZDDUIIK.js.map +0 -7
  144. package/dist/chunk-X6MCOKYP.js.map +0 -7
  145. package/dist/chunk-XKYHFZEC.js.map +0 -7
  146. package/dist/chunk-XTFXKDRC.js.map +0 -7
  147. package/dist/chunk-YEUUN3PW.js.map +0 -7
  148. package/dist/cli-KFO36PW7.js.map +0 -7
  149. package/dist/commands-DKTG7VIQ.js +0 -57
  150. package/dist/commands-DKTG7VIQ.js.map +0 -7
  151. package/dist/config-UGXKX5W7.js.map +0 -7
  152. package/dist/context-TDXVLXJZ.js.map +0 -7
  153. package/dist/conversationPersistence-ATHSGPCA.js.map +0 -7
  154. package/dist/conversationTracker-IGKMS7I2.js.map +0 -7
  155. package/dist/costTracker-DJVFVAVZ.js.map +0 -7
  156. package/dist/customCommands-5MIZHJIB.js.map +0 -7
  157. package/dist/env-3KNLQRPA.js.map +0 -7
  158. package/dist/file-DFXDFI6W.js.map +0 -7
  159. package/dist/index.js.map +0 -7
  160. package/dist/llm-MRDYTVAB.js.map +0 -7
  161. package/dist/llmLazy-2O7VC463.js.map +0 -7
  162. package/dist/loader-FZWD5WHH.js.map +0 -7
  163. package/dist/lsp-2TM75CW4.js.map +0 -7
  164. package/dist/lspAnchor-XGTUMZDM.js.map +0 -7
  165. package/dist/mcp-FITQROXI.js.map +0 -7
  166. package/dist/mentionProcessor-L5WCXBIE.js.map +0 -7
  167. package/dist/messages-4S23AYLZ.js.map +0 -7
  168. package/dist/model-ECABFXED.js.map +0 -7
  169. package/dist/openai-AAHVW6AQ.js.map +0 -7
  170. package/dist/outputStyles-2QWBQSS4.js.map +0 -7
  171. package/dist/pluginRuntime-TDH3JKLN.js.map +0 -7
  172. package/dist/pluginValidation-FBGQ4JDV.js.map +0 -7
  173. package/dist/prompts-PLA42YDC.js +0 -59
  174. package/dist/prompts-PLA42YDC.js.map +0 -7
  175. package/dist/pybAgentSessionId-EPCAMQ25.js.map +0 -7
  176. package/dist/pybAgentSessionLoad-WEEMBEOX.js.map +0 -7
  177. package/dist/pybAgentSessionResume-FXJA5YEY.js.map +0 -7
  178. package/dist/pybAgentStreamJson-EQPO52B6.js.map +0 -7
  179. package/dist/pybAgentStreamJsonSession-I3QVTPS4.js.map +0 -7
  180. package/dist/pybAgentStructuredStdio-ROCSOGNT.js.map +0 -7
  181. package/dist/pybHooks-QVFTX2NF.js.map +0 -7
  182. package/dist/query-GEX7UFS4.js +0 -57
  183. package/dist/query-GEX7UFS4.js.map +0 -7
  184. package/dist/registry-R642XWSX.js.map +0 -7
  185. package/dist/replSessionBridge-EBXNFUAD.js.map +0 -7
  186. package/dist/responsesStreaming-NPGJLPV3.js.map +0 -7
  187. package/dist/ripgrep-ZCE3BIKN.js.map +0 -7
  188. package/dist/skillMarketplace-O2RFNXT4.js.map +0 -7
  189. package/dist/smart-edit-AWHJDSU6.js.map +0 -7
  190. package/dist/state-GMP5BAO3.js.map +0 -7
  191. package/dist/theme-BXH5IJVI.js +0 -14
  192. package/dist/theme-BXH5IJVI.js.map +0 -7
  193. package/dist/toolPermissionContext-BSFV23IL.js.map +0 -7
  194. package/dist/toolPermissionSettings-SLI774QB.js.map +0 -7
  195. package/dist/tools-GEQDCFN6.js +0 -57
  196. package/dist/tools-GEQDCFN6.js.map +0 -7
  197. package/dist/userInput-73ASWIUB.js.map +0 -7
  198. package/dist/uuid-CVHEFGW4.js.map +0 -7
  199. /package/dist/{chunk-UZ34JEUK.js → chunk-7HEKZ73X.js} +0 -0
  200. /package/dist/{chunk-5JHD6MUL.js → chunk-ADD7XJ5F.js} +0 -0
  201. /package/dist/{chunk-B6IMQJZM.js → chunk-DRSLDSBY.js} +0 -0
  202. /package/dist/{chunk-KFEHHKZ2.js → chunk-F3JSDBR6.js} +0 -0
  203. /package/dist/{chunk-QWIBSCDN.js → chunk-GEEDQS2I.js} +0 -0
  204. /package/dist/{chunk-2RXKUCFS.js → chunk-ISMRCABJ.js} +0 -0
  205. /package/dist/{chunk-MWPFU2KU.js → chunk-JVKJ7J5H.js} +0 -0
  206. /package/dist/{chunk-BJSWTHRM.js → chunk-KNUG3M6O.js} +0 -0
  207. /package/dist/{chunk-UNNVICVU.js → chunk-LG65MFKB.js} +0 -0
  208. /package/dist/{chunk-CZZKRPE2.js → chunk-MGN3VYPN.js} +0 -0
  209. /package/dist/{chunk-A3BVXXA3.js → chunk-OQEZC7X2.js} +0 -0
  210. /package/dist/{chunk-I3J4JYES.js → chunk-OYT6EI36.js} +0 -0
  211. /package/dist/{chunk-RQVLBMP7.js → chunk-PDH2QHLY.js} +0 -0
  212. /package/dist/{chunk-5P7HBXTD.js → chunk-QAMAR4LW.js} +0 -0
  213. /package/dist/{chunk-TFHFYID3.js → chunk-TNCBVAVV.js} +0 -0
  214. /package/dist/{chunk-XKYHFZEC.js → chunk-U6BMHOQT.js} +0 -0
  215. /package/dist/{chunk-OUXHGDLH.js → chunk-VEHLCRJN.js} +0 -0
  216. /package/dist/{chunk-3DFBSQIT.js → chunk-XZG5WCDK.js} +0 -0
  217. /package/dist/{chunk-BKCAVW2G.js → chunk-ZY2PESP4.js} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/config/settingsFiles.ts"],
4
- "sourcesContent": ["import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs'\nimport { homedir } from 'os'\nimport { dirname, join, resolve } from 'path'\nimport { getCwd } from '@utils/state'\nimport { logError } from '@utils/log'\n\nexport type SettingsDestination =\n | 'localSettings'\n | 'projectSettings'\n | 'userSettings'\n\nexport type SettingsFile = {\n [key: string]: unknown\n}\n\nfunction normalizeOverride(value: unknown): string | null {\n if (typeof value !== 'string') return null\n const trimmed = value.trim()\n return trimmed ? resolve(trimmed) : null\n}\n\nfunction dedupeStrings(values: string[]): string[] {\n const out: string[] = []\n const seen = new Set<string>()\n for (const value of values) {\n if (!value) continue\n if (seen.has(value)) continue\n seen.add(value)\n out.push(value)\n }\n return out\n}\n\nfunction getDefaultHomeDir(): string {\n const envHome =\n typeof process.env.HOME === 'string'\n ? process.env.HOME\n : typeof process.env.USERPROFILE === 'string'\n ? process.env.USERPROFILE\n : ''\n const trimmed = envHome.trim()\n if (trimmed) return trimmed\n return homedir()\n}\n\nfunction getUserPybBaseDir(options?: {\n homeDir?: string\n respectEnvOverride?: boolean\n}): string {\n const respectEnvOverride = options?.respectEnvOverride ?? true\n if (respectEnvOverride) {\n const override = normalizeOverride(\n process.env.PYB_CONFIG_DIR ?? process.env.CLAUDE_CONFIG_DIR,\n )\n if (override) return override\n }\n const home = options?.homeDir ?? getDefaultHomeDir()\n return join(home, '.pyb')\n}\n\nfunction getUserLegacyBaseDir(options?: {\n homeDir?: string\n respectEnvOverride?: boolean\n}): string {\n const respectEnvOverride = options?.respectEnvOverride ?? true\n if (respectEnvOverride) {\n const override = normalizeOverride(process.env.CLAUDE_CONFIG_DIR)\n if (override) return override\n }\n const home = options?.homeDir ?? getDefaultHomeDir()\n return join(home, '.claude')\n}\n\nexport function getSettingsFileCandidates(options: {\n destination: SettingsDestination\n projectDir?: string\n homeDir?: string\n}): { primary: string; legacy: string[] } | null {\n const projectDir = options.projectDir ?? getCwd()\n const homeDir = options.homeDir ?? getDefaultHomeDir()\n const respectEnvOverride = options.homeDir === undefined\n\n switch (options.destination) {\n case 'localSettings': {\n const primary = join(projectDir, '.pyb', 'settings.local.json')\n const legacy = [join(projectDir, '.claude', 'settings.local.json')]\n return { primary, legacy }\n }\n case 'projectSettings': {\n const primary = join(projectDir, '.pyb', 'settings.json')\n const legacy = [join(projectDir, '.claude', 'settings.json')]\n return { primary, legacy }\n }\n case 'userSettings': {\n const primary = join(\n getUserPybBaseDir({ homeDir, respectEnvOverride }),\n 'settings.json',\n )\n const legacy = dedupeStrings([\n join(\n getUserLegacyBaseDir({ homeDir, respectEnvOverride }),\n 'settings.json',\n ),\n join(homeDir, '.claude', 'settings.json'),\n ])\n return { primary, legacy }\n }\n default:\n return null\n }\n}\n\nexport function readSettingsFile(filePath: string): SettingsFile | null {\n if (!existsSync(filePath)) return null\n try {\n const raw = readFileSync(filePath, 'utf-8')\n const parsed = JSON.parse(raw)\n if (!parsed || typeof parsed !== 'object') return null\n return parsed as SettingsFile\n } catch (error) {\n logError(error)\n return null\n }\n}\n\nexport function writeSettingsFile(\n filePath: string,\n settings: SettingsFile,\n): void {\n mkdirSync(dirname(filePath), { recursive: true })\n writeFileSync(filePath, JSON.stringify(settings, null, 2) + '\\n', 'utf-8')\n}\n\nexport function loadSettingsWithLegacyFallback(options: {\n destination: SettingsDestination\n projectDir?: string\n homeDir?: string\n migrateToPrimary?: boolean\n}): { settings: SettingsFile | null; usedPath: string | null } {\n const candidates = getSettingsFileCandidates(options)\n if (!candidates) return { settings: null, usedPath: null }\n\n const primarySettings = readSettingsFile(candidates.primary)\n if (primarySettings)\n return { settings: primarySettings, usedPath: candidates.primary }\n\n for (const legacyPath of candidates.legacy) {\n const legacySettings = readSettingsFile(legacyPath)\n if (!legacySettings) continue\n\n if (options.migrateToPrimary && legacyPath !== candidates.primary) {\n try {\n if (!existsSync(candidates.primary)) {\n writeSettingsFile(candidates.primary, legacySettings)\n }\n } catch (error) {\n logError(error)\n }\n }\n\n return { settings: legacySettings, usedPath: legacyPath }\n }\n\n return { settings: null, usedPath: null }\n}\n\nexport function saveSettingsToPrimaryAndSyncLegacy(options: {\n destination: SettingsDestination\n settings: SettingsFile\n projectDir?: string\n homeDir?: string\n syncLegacyIfExists?: boolean\n}): void {\n const candidates = getSettingsFileCandidates(options)\n if (!candidates) return\n\n writeSettingsFile(candidates.primary, options.settings)\n\n if (!options.syncLegacyIfExists) return\n for (const legacyPath of candidates.legacy) {\n if (legacyPath === candidates.primary) continue\n if (!existsSync(legacyPath)) continue\n try {\n writeSettingsFile(legacyPath, options.settings)\n } catch (error) {\n logError(error)\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/types/toolPermissionContext.ts"],
4
- "sourcesContent": ["import type { PermissionMode } from './permissionMode'\n\n\nexport type ToolPermissionUpdateDestination =\n | 'session'\n | 'localSettings'\n | 'userSettings'\n | 'projectSettings'\n | 'flagSettings'\n | 'policySettings'\n | 'cliArg'\n | 'command'\n\nexport type ToolPermissionRuleBehavior = 'allow' | 'deny' | 'ask'\n\nexport type AdditionalWorkingDirectoryEntry = {\n path: string\n source: ToolPermissionUpdateDestination\n}\n\nexport type ToolPermissionContext = {\n mode: PermissionMode\n additionalWorkingDirectories: Map<string, AdditionalWorkingDirectoryEntry>\n alwaysAllowRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n alwaysDenyRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n alwaysAskRules: Partial<Record<ToolPermissionUpdateDestination, string[]>>\n isBypassPermissionsModeAvailable: boolean\n}\n\nexport type ToolPermissionContextUpdate =\n | {\n type: 'setMode'\n mode: PermissionMode\n destination: ToolPermissionUpdateDestination\n }\n | {\n type: 'addRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'replaceRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'removeRules'\n destination: ToolPermissionUpdateDestination\n behavior: ToolPermissionRuleBehavior\n rules: string[]\n }\n | {\n type: 'addDirectories'\n destination: ToolPermissionUpdateDestination\n directories: string[]\n }\n | {\n type: 'removeDirectories'\n destination: ToolPermissionUpdateDestination\n directories: string[]\n }\n\nexport function createDefaultToolPermissionContext(options?: {\n isBypassPermissionsModeAvailable?: boolean\n}): ToolPermissionContext {\n return {\n mode: 'default',\n additionalWorkingDirectories: new Map(),\n alwaysAllowRules: {},\n alwaysDenyRules: {},\n alwaysAskRules: {},\n isBypassPermissionsModeAvailable:\n options?.isBypassPermissionsModeAvailable ?? false,\n }\n}\n\nexport function applyToolPermissionContextUpdate(\n context: ToolPermissionContext,\n update: ToolPermissionContextUpdate,\n): ToolPermissionContext {\n switch (update.type) {\n case 'setMode':\n return { ...context, mode: update.mode }\n case 'addRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n const existing = context[key][update.destination] ?? []\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: [...existing, ...update.rules],\n },\n }\n }\n case 'replaceRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: [...update.rules],\n },\n }\n }\n case 'removeRules': {\n const key =\n update.behavior === 'allow'\n ? 'alwaysAllowRules'\n : update.behavior === 'deny'\n ? 'alwaysDenyRules'\n : 'alwaysAskRules'\n const current = context[key][update.destination] ?? []\n const toRemove = new Set(update.rules)\n const next = current.filter(rule => !toRemove.has(rule))\n return {\n ...context,\n [key]: {\n ...context[key],\n [update.destination]: next,\n },\n }\n }\n case 'addDirectories': {\n const nextDirs = new Map(context.additionalWorkingDirectories)\n for (const dir of update.directories) {\n nextDirs.set(dir, { path: dir, source: update.destination })\n }\n return { ...context, additionalWorkingDirectories: nextDirs }\n }\n case 'removeDirectories': {\n const nextDirs = new Map(context.additionalWorkingDirectories)\n for (const dir of update.directories) {\n nextDirs.delete(dir)\n }\n return { ...context, additionalWorkingDirectories: nextDirs }\n }\n default:\n return context\n }\n}\n\nexport function applyToolPermissionContextUpdates(\n context: ToolPermissionContext,\n updates: ToolPermissionContextUpdate[],\n): ToolPermissionContext {\n let next = context\n for (const update of updates) {\n next = applyToolPermissionContextUpdate(next, update)\n }\n return next\n}\n\nexport function isPersistableToolPermissionDestination(\n destination: ToolPermissionUpdateDestination,\n): destination is 'localSettings' | 'userSettings' | 'projectSettings' {\n return (\n destination === 'localSettings' ||\n destination === 'userSettings' ||\n destination === 'projectSettings'\n )\n}\n\nexport function canUserModifyToolPermissionUpdate(\n update: ToolPermissionContextUpdate,\n): boolean {\n if (update.destination !== 'policySettings') return true\n if (update.type === 'removeRules') return false\n if (update.type === 'replaceRules') return false\n if (update.type === 'removeDirectories') return false\n return true\n}\n"],
5
- "mappings": ";;;;AAgEO,SAAS,mCAAmC,SAEzB;AACxB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,8BAA8B,oBAAI,IAAI;AAAA,IACtC,kBAAkB,CAAC;AAAA,IACnB,iBAAiB,CAAC;AAAA,IAClB,gBAAgB,CAAC;AAAA,IACjB,kCACE,SAAS,oCAAoC;AAAA,EACjD;AACF;AAEO,SAAS,iCACd,SACA,QACuB;AACvB,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,GAAG,SAAS,MAAM,OAAO,KAAK;AAAA,IACzC,KAAK,YAAY;AACf,YAAM,MACJ,OAAO,aAAa,UAChB,qBACA,OAAO,aAAa,SAClB,oBACA;AACR,YAAM,WAAW,QAAQ,GAAG,EAAE,OAAO,WAAW,KAAK,CAAC;AACtD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG;AAAA,UACL,GAAG,QAAQ,GAAG;AAAA,UACd,CAAC,OAAO,WAAW,GAAG,CAAC,GAAG,UAAU,GAAG,OAAO,KAAK;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,YAAM,MACJ,OAAO,aAAa,UAChB,qBACA,OAAO,aAAa,SAClB,oBACA;AACR,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG;AAAA,UACL,GAAG,QAAQ,GAAG;AAAA,UACd,CAAC,OAAO,WAAW,GAAG,CAAC,GAAG,OAAO,KAAK;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,eAAe;AAClB,YAAM,MACJ,OAAO,aAAa,UAChB,qBACA,OAAO,aAAa,SAClB,oBACA;AACR,YAAM,UAAU,QAAQ,GAAG,EAAE,OAAO,WAAW,KAAK,CAAC;AACrD,YAAM,WAAW,IAAI,IAAI,OAAO,KAAK;AACrC,YAAM,OAAO,QAAQ,OAAO,UAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;AACvD,aAAO;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG;AAAA,UACL,GAAG,QAAQ,GAAG;AAAA,UACd,CAAC,OAAO,WAAW,GAAG;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AACrB,YAAM,WAAW,IAAI,IAAI,QAAQ,4BAA4B;AAC7D,iBAAW,OAAO,OAAO,aAAa;AACpC,iBAAS,IAAI,KAAK,EAAE,MAAM,KAAK,QAAQ,OAAO,YAAY,CAAC;AAAA,MAC7D;AACA,aAAO,EAAE,GAAG,SAAS,8BAA8B,SAAS;AAAA,IAC9D;AAAA,IACA,KAAK,qBAAqB;AACxB,YAAM,WAAW,IAAI,IAAI,QAAQ,4BAA4B;AAC7D,iBAAW,OAAO,OAAO,aAAa;AACpC,iBAAS,OAAO,GAAG;AAAA,MACrB;AACA,aAAO,EAAE,GAAG,SAAS,8BAA8B,SAAS;AAAA,IAC9D;AAAA,IACA;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,kCACd,SACA,SACuB;AACvB,MAAI,OAAO;AACX,aAAW,UAAU,SAAS;AAC5B,WAAO,iCAAiC,MAAM,MAAM;AAAA,EACtD;AACA,SAAO;AACT;AAEO,SAAS,uCACd,aACqE;AACrE,SACE,gBAAgB,mBAChB,gBAAgB,kBAChB,gBAAgB;AAEpB;AAEO,SAAS,kCACd,QACS;AACT,MAAI,OAAO,gBAAgB,iBAAkB,QAAO;AACpD,MAAI,OAAO,SAAS,cAAe,QAAO;AAC1C,MAAI,OAAO,SAAS,eAAgB,QAAO;AAC3C,MAAI,OAAO,SAAS,oBAAqB,QAAO;AAChD,SAAO;AACT;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/text/smart-edit/levenshtein.ts"],
4
- "sourcesContent": ["export function levenshtein(a: string, b: string): number {\n if (a === \"\" || b === \"\") {\n return Math.max(a.length, b.length)\n }\n const matrix = Array.from({ length: a.length + 1 }, (_, i) =>\n Array.from({ length: b.length + 1 }, (_, j) => (i === 0 ? j : j === 0 ? i : 0)),\n )\n\n for (let i = 1; i <= a.length; i++) {\n for (let j = 1; j <= b.length; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1\n matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost)\n }\n }\n return matrix[a.length][b.length]\n}\n"],
5
- "mappings": ";;;;AAAO,SAAS,YAAY,GAAW,GAAmB;AACxD,MAAI,MAAM,MAAM,MAAM,IAAI;AACxB,WAAO,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AAAA,EACpC;AACA,QAAM,SAAS,MAAM;AAAA,IAAK,EAAE,QAAQ,EAAE,SAAS,EAAE;AAAA,IAAG,CAAC,GAAG,MACtD,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAACA,IAAG,MAAO,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,CAAE;AAAA,EAChF;AAEA,WAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,aAAS,IAAI,GAAG,KAAK,EAAE,QAAQ,KAAK;AAClC,YAAM,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI;AACzC,aAAO,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI;AAAA,IACjG;AAAA,EACF;AACA,SAAO,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM;AAClC;",
6
- "names": ["_"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/session/pybHooks.ts"],
4
- "sourcesContent": ["import { spawn } from 'child_process'\nimport { existsSync, readFileSync, statSync } from 'fs'\nimport { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'fs'\nimport { tmpdir } from 'os'\nimport { join } from 'path'\nimport { minimatch } from 'minimatch'\nimport { logError } from '@utils/log'\nimport { getCwd } from '@utils/state'\nimport { getPybAgentSessionId } from '@utils/protocol/pybAgentSessionId'\nimport { getSessionPlugins } from '@utils/session/sessionPlugins'\nimport { loadSettingsWithLegacyFallback } from '@utils/config/settingsFiles'\n\ntype HookEventName =\n | 'PreToolUse'\n | 'PostToolUse'\n | 'Stop'\n | 'SubagentStop'\n | 'UserPromptSubmit'\n | 'SessionStart'\n | 'SessionEnd'\n\ntype CommandHook = {\n type: 'command'\n command: string\n timeout?: number\n pluginRoot?: string\n}\n\ntype PromptHook = {\n type: 'prompt'\n prompt: string\n timeout?: number\n pluginRoot?: string\n}\n\ntype Hook = CommandHook | PromptHook\n\ntype HookMatcher = {\n matcher: string\n hooks: Hook[]\n}\n\ntype HookFileEnvelope = {\n description?: unknown\n hooks?: unknown\n [key: string]: unknown\n}\n\ntype HooksSettings = Partial<Record<HookEventName, HookMatcher[]>> & {\n [key: string]: unknown\n}\n\ntype SettingsFileWithHooks = {\n hooks?: HooksSettings\n [key: string]: unknown\n}\n\nexport type PreToolUseHookOutcome =\n | {\n kind: 'allow'\n warnings: string[]\n permissionDecision?: 'allow' | 'ask'\n updatedInput?: Record<string, unknown>\n systemMessages?: string[]\n additionalContexts?: string[]\n }\n | {\n kind: 'block'\n message: string\n systemMessages?: string[]\n additionalContexts?: string[]\n }\n\ntype CachedHooks = {\n mtimeMs: number\n byEvent: Partial<Record<HookEventName, HookMatcher[]>>\n}\n\nconst cache = new Map<string, CachedHooks>()\nconst pluginHooksCache = new Map<string, CachedHooks>()\nconst sessionStartCache = new Map<string, { additionalContext: string }>()\n\ntype HookRuntimeState = {\n transcriptPath?: string\n queuedSystemMessages: string[]\n queuedAdditionalContexts: string[]\n}\n\nconst HOOK_RUNTIME_STATE_KEY = '__pybHookRuntimeState'\n\nfunction getHookRuntimeState(toolUseContext: any): HookRuntimeState {\n const existing = toolUseContext?.[HOOK_RUNTIME_STATE_KEY]\n if (\n existing &&\n typeof existing === 'object' &&\n Array.isArray((existing as any).queuedSystemMessages) &&\n Array.isArray((existing as any).queuedAdditionalContexts)\n ) {\n return existing as HookRuntimeState\n }\n const created: HookRuntimeState = {\n transcriptPath: undefined,\n queuedSystemMessages: [],\n queuedAdditionalContexts: [],\n }\n if (toolUseContext && typeof toolUseContext === 'object') {\n ;(toolUseContext as any)[HOOK_RUNTIME_STATE_KEY] = created\n }\n return created\n}\n\nexport function updateHookTranscriptForMessages(\n toolUseContext: any,\n messages: any[],\n): void {\n const state = getHookRuntimeState(toolUseContext)\n const sessionId = getPybAgentSessionId()\n\n const dir = join(tmpdir(), 'pyb-hooks-transcripts')\n try {\n mkdirSync(dir, { recursive: true })\n } catch {}\n\n if (!state.transcriptPath) {\n state.transcriptPath = join(dir, `${sessionId}.transcript.txt`)\n }\n\n const lines: string[] = []\n for (const msg of Array.isArray(messages) ? messages : []) {\n if (!msg || typeof msg !== 'object') continue\n if (msg.type !== 'user' && msg.type !== 'assistant') continue\n\n if (msg.type === 'user') {\n const content = (msg as any)?.message?.content\n if (typeof content === 'string') {\n lines.push(`user: ${content}`)\n continue\n }\n if (Array.isArray(content)) {\n const parts: string[] = []\n for (const block of content) {\n if (!block || typeof block !== 'object') continue\n if (block.type === 'text') parts.push(String(block.text ?? ''))\n if (block.type === 'tool_result')\n parts.push(`[tool_result] ${String(block.content ?? '')}`)\n }\n lines.push(`user: ${parts.join('')}`)\n }\n continue\n }\n\n const content = (msg as any)?.message?.content\n if (typeof content === 'string') {\n lines.push(`assistant: ${content}`)\n continue\n }\n if (!Array.isArray(content)) continue\n\n const parts: string[] = []\n for (const block of content) {\n if (!block || typeof block !== 'object') continue\n if (block.type === 'text') parts.push(String(block.text ?? ''))\n if (block.type === 'tool_use' || block.type === 'server_tool_use') {\n parts.push(\n `[tool_use:${String(block.name ?? '')}] ${hookValueForPrompt(block.input)}`,\n )\n }\n if (block.type === 'mcp_tool_use') {\n parts.push(\n `[mcp_tool_use:${String(block.name ?? '')}] ${hookValueForPrompt(block.input)}`,\n )\n }\n }\n lines.push(`assistant: ${parts.join('')}`)\n }\n\n try {\n writeFileSync(state.transcriptPath, lines.join('\\n') + '\\n', 'utf8')\n } catch {}\n}\n\nexport function drainHookSystemPromptAdditions(toolUseContext: any): string[] {\n const state = getHookRuntimeState(toolUseContext)\n const systemMessages = state.queuedSystemMessages.splice(\n 0,\n state.queuedSystemMessages.length,\n )\n const contexts = state.queuedAdditionalContexts.splice(\n 0,\n state.queuedAdditionalContexts.length,\n )\n\n const additions: string[] = []\n if (systemMessages.length > 0) {\n additions.push(\n ['\\n# Hook system messages', ...systemMessages.map(m => m.trim())]\n .filter(Boolean)\n .join('\\n\\n'),\n )\n }\n if (contexts.length > 0) {\n additions.push(\n ['\\n# Hook additional context', ...contexts.map(m => m.trim())]\n .filter(Boolean)\n .join('\\n\\n'),\n )\n }\n return additions\n}\n\nexport function getHookTranscriptPath(toolUseContext: any): string | undefined {\n return getHookRuntimeState(toolUseContext).transcriptPath\n}\n\nexport function queueHookSystemMessages(\n toolUseContext: any,\n messages: string[],\n): void {\n const state = getHookRuntimeState(toolUseContext)\n for (const msg of messages) {\n const trimmed = String(msg ?? '').trim()\n if (trimmed) state.queuedSystemMessages.push(trimmed)\n }\n}\n\nexport function queueHookAdditionalContexts(\n toolUseContext: any,\n contexts: string[],\n): void {\n const state = getHookRuntimeState(toolUseContext)\n for (const ctx of contexts) {\n const trimmed = String(ctx ?? '').trim()\n if (trimmed) state.queuedAdditionalContexts.push(trimmed)\n }\n}\n\nfunction isCommandHook(value: unknown): value is CommandHook {\n return (\n value !== null &&\n typeof value === 'object' &&\n (value as any).type === 'command' &&\n typeof (value as any).command === 'string' &&\n Boolean((value as any).command.trim())\n )\n}\n\nfunction isPromptHook(value: unknown): value is PromptHook {\n return (\n value !== null &&\n typeof value === 'object' &&\n (value as any).type === 'prompt' &&\n typeof (value as any).prompt === 'string' &&\n Boolean((value as any).prompt.trim())\n )\n}\n\nfunction isHook(value: unknown): value is Hook {\n return isCommandHook(value) || isPromptHook(value)\n}\n\nfunction parseHookMatchers(value: unknown): HookMatcher[] {\n if (!Array.isArray(value)) return []\n\n const out: HookMatcher[] = []\n for (const item of value) {\n if (!item || typeof item !== 'object') continue\n const matcher =\n typeof (item as any).matcher === 'string'\n ? (item as any).matcher.trim()\n : ''\n const effectiveMatcher = matcher || '*'\n const hooksRaw = (item as any).hooks\n const hooks = Array.isArray(hooksRaw) ? hooksRaw.filter(isHook) : []\n if (hooks.length === 0) continue\n out.push({ matcher: effectiveMatcher, hooks })\n }\n return out\n}\n\nfunction parseHooksByEvent(\n rawHooks: unknown,\n): Partial<Record<HookEventName, HookMatcher[]>> {\n if (!rawHooks || typeof rawHooks !== 'object') return {}\n const hooks: any = rawHooks\n return {\n PreToolUse: parseHookMatchers(hooks.PreToolUse),\n PostToolUse: parseHookMatchers(hooks.PostToolUse),\n Stop: parseHookMatchers(hooks.Stop),\n SubagentStop: parseHookMatchers(hooks.SubagentStop),\n UserPromptSubmit: parseHookMatchers(hooks.UserPromptSubmit),\n SessionStart: parseHookMatchers(hooks.SessionStart),\n SessionEnd: parseHookMatchers(hooks.SessionEnd),\n }\n}\n\nfunction loadInlinePluginHooksByEvent(plugin: {\n manifestPath: string\n manifest: unknown\n}): Partial<Record<HookEventName, HookMatcher[]>> | null {\n const manifestHooks = (plugin.manifest as any)?.hooks\n if (\n !manifestHooks ||\n typeof manifestHooks !== 'object' ||\n Array.isArray(manifestHooks)\n )\n return null\n\n const hookObj =\n (manifestHooks as any).hooks &&\n typeof (manifestHooks as any).hooks === 'object' &&\n !Array.isArray((manifestHooks as any).hooks)\n ? (manifestHooks as any).hooks\n : manifestHooks\n\n const cacheKey = `${plugin.manifestPath}#inlineHooks`\n try {\n const stat = statSync(plugin.manifestPath)\n const cached = pluginHooksCache.get(cacheKey)\n if (cached && cached.mtimeMs === stat.mtimeMs) return cached.byEvent\n\n const byEvent = parseHooksByEvent(hookObj)\n pluginHooksCache.set(cacheKey, { mtimeMs: stat.mtimeMs, byEvent })\n return byEvent\n } catch (err) {\n logError(err)\n pluginHooksCache.delete(cacheKey)\n return null\n }\n}\n\nfunction loadPreToolUseMatchers(projectDir: string): HookMatcher[] {\n const loaded = loadSettingsWithLegacyFallback({\n destination: 'projectSettings',\n projectDir,\n migrateToPrimary: true,\n })\n const settingsPath = loaded.usedPath\n if (!settingsPath) {\n console.error('DEBUG: No settings path found for', projectDir)\n return []\n }\n try {\n const stat = statSync(settingsPath)\n const cached = cache.get(settingsPath)\n if (cached && cached.mtimeMs === stat.mtimeMs)\n return cached.byEvent.PreToolUse ?? []\n\n const parsed = loaded.settings as SettingsFileWithHooks | null\n const byEvent = parseHooksByEvent(parsed?.hooks)\n cache.set(settingsPath, { mtimeMs: stat.mtimeMs, byEvent })\n return byEvent.PreToolUse ?? []\n } catch {\n cache.delete(settingsPath)\n return []\n }\n}\n\nfunction loadSettingsMatchers(\n projectDir: string,\n event: HookEventName,\n): HookMatcher[] {\n const loaded = loadSettingsWithLegacyFallback({\n destination: 'projectSettings',\n projectDir,\n migrateToPrimary: true,\n })\n const settingsPath = loaded.usedPath\n if (!settingsPath) return []\n try {\n const stat = statSync(settingsPath)\n const cached = cache.get(settingsPath)\n if (cached && cached.mtimeMs === stat.mtimeMs)\n return cached.byEvent[event] ?? []\n\n const parsed = loaded.settings as SettingsFileWithHooks | null\n const byEvent = parseHooksByEvent(parsed?.hooks)\n cache.set(settingsPath, { mtimeMs: stat.mtimeMs, byEvent })\n return byEvent[event] ?? []\n } catch {\n cache.delete(settingsPath)\n return []\n }\n}\n\nfunction matcherMatchesTool(matcher: string, toolName: string): boolean {\n if (!matcher) return false\n if (matcher === '*' || matcher === 'all') return true\n if (matcher === toolName) return true\n try {\n if (minimatch(toolName, matcher, { dot: true, nocase: false })) return true\n } catch {\n }\n try {\n if (new RegExp(matcher).test(toolName)) return true\n } catch {\n }\n return false\n}\n\nasync function runCommandHook(args: {\n command: string\n stdinJson: unknown\n cwd: string\n env?: Record<string, string>\n signal?: AbortSignal\n}): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n const proc = spawn(args.command, [], {\n cwd: args.cwd,\n env: { ...(process.env as any), ...(args.env ?? {}) },\n stdio: ['pipe', 'pipe', 'pipe'],\n windowsHide: true,\n shell: true,\n })\n\n let wasAborted = false\n const onAbort = () => {\n wasAborted = true\n try {\n proc.kill()\n } catch {}\n }\n if (args.signal) {\n if (args.signal.aborted) onAbort()\n args.signal.addEventListener('abort', onAbort, { once: true })\n }\n\n try {\n const input = JSON.stringify(args.stdinJson)\n try {\n proc.stdin?.write(input)\n proc.stdin?.end()\n } catch {}\n\n let stdout = ''\n let stderr = ''\n\n const collect = (\n stream: NodeJS.ReadableStream | null,\n append: (chunk: string) => void,\n ): { done: Promise<void>; cleanup: () => void } => {\n if (!stream) {\n return { done: Promise.resolve(), cleanup: () => {} }\n }\n try {\n ;(stream as any).setEncoding?.('utf8')\n } catch {}\n\n let resolveDone: (() => void) | null = null\n const done = new Promise<void>(resolve => {\n resolveDone = resolve\n })\n\n const finish = () => {\n cleanup()\n if (!resolveDone) return\n resolveDone()\n resolveDone = null\n }\n\n const onData = (chunk: unknown) => {\n append(\n typeof chunk === 'string'\n ? chunk\n : Buffer.isBuffer(chunk)\n ? chunk.toString('utf8')\n : String(chunk),\n )\n }\n\n const onError = () => finish()\n\n const cleanup = () => {\n stream.off('data', onData)\n stream.off('end', finish)\n stream.off('close', finish)\n stream.off('error', onError)\n }\n\n stream.on('data', onData)\n stream.once('end', finish)\n stream.once('close', finish)\n stream.once('error', onError)\n\n return { done, cleanup }\n }\n\n const stdoutCollector = collect(proc.stdout, chunk => {\n stdout += chunk\n })\n const stderrCollector = collect(proc.stderr, chunk => {\n stderr += chunk\n })\n\n const exitCode = await new Promise<number>(resolve => {\n proc.once('exit', (code, signal) => {\n if (typeof code === 'number') return resolve(code)\n if (signal) return resolve(143)\n return resolve(0)\n })\n proc.once('error', () => resolve(1))\n })\n\n await Promise.race([\n Promise.allSettled([stdoutCollector.done, stderrCollector.done]),\n new Promise(resolve => setTimeout(resolve, 250)),\n ])\n stdoutCollector.cleanup()\n stderrCollector.cleanup()\n\n return {\n exitCode: wasAborted && exitCode === 0 ? 143 : exitCode,\n stdout,\n stderr,\n }\n } finally {\n if (args.signal) {\n try {\n args.signal.removeEventListener('abort', onAbort)\n } catch {}\n }\n }\n}\n\nfunction mergeAbortSignals(signals: Array<AbortSignal | undefined>): {\n signal: AbortSignal\n cleanup: () => void\n} {\n const controller = new AbortController()\n const onAbort = () => controller.abort()\n\n const cleanups: Array<() => void> = []\n for (const signal of signals) {\n if (!signal) continue\n if (signal.aborted) {\n controller.abort()\n continue\n }\n signal.addEventListener('abort', onAbort, { once: true })\n cleanups.push(() => {\n try {\n signal.removeEventListener('abort', onAbort)\n } catch {}\n })\n }\n\n return {\n signal: controller.signal,\n cleanup: () => cleanups.forEach(fn => fn()),\n }\n}\n\nfunction withHookTimeout(args: {\n timeoutSeconds?: number\n parentSignal?: AbortSignal\n fallbackTimeoutMs: number\n}): { signal: AbortSignal; cleanup: () => void } {\n const timeoutMs =\n typeof args.timeoutSeconds === 'number' &&\n Number.isFinite(args.timeoutSeconds)\n ? Math.max(0, Math.floor(args.timeoutSeconds * 1000))\n : args.fallbackTimeoutMs\n\n const timeoutSignal =\n typeof AbortSignal !== 'undefined' &&\n typeof (AbortSignal as any).timeout === 'function'\n ? (AbortSignal as any).timeout(timeoutMs)\n : (() => {\n const controller = new AbortController()\n const timer = setTimeout(() => controller.abort(), timeoutMs)\n const signal = controller.signal\n ;(signal as any).__cleanup = () => clearTimeout(timer)\n return signal\n })()\n\n const merged = mergeAbortSignals([args.parentSignal, timeoutSignal])\n const timeoutCleanup =\n typeof (timeoutSignal as any).__cleanup === 'function'\n ? (timeoutSignal as any).__cleanup\n : () => {}\n\n return {\n signal: merged.signal,\n cleanup: () => {\n merged.cleanup()\n timeoutCleanup()\n },\n }\n}\n\nfunction coerceHookMessage(stdout: string, stderr: string): string {\n const s = (stderr || '').trim()\n if (s) return s\n const o = (stdout || '').trim()\n if (o) return o\n return 'Hook blocked the tool call.'\n}\n\nfunction coerceHookPermissionMode(mode: unknown): 'ask' | 'allow' {\n if (mode === 'acceptEdits' || mode === 'bypassPermissions') return 'allow'\n return 'ask'\n}\n\nfunction extractFirstJsonObject(text: string): string | null {\n let start = -1\n let depth = 0\n let inString = false\n let escaped = false\n\n for (let i = 0; i < text.length; i++) {\n const ch = text[i]\n\n if (start === -1) {\n if (ch === '{') {\n start = i\n depth = 1\n }\n continue\n }\n\n if (inString) {\n if (escaped) {\n escaped = false\n continue\n }\n if (ch === '\\\\') {\n escaped = true\n continue\n }\n if (ch === '\"') {\n inString = false\n }\n continue\n }\n\n if (ch === '\"') {\n inString = true\n continue\n }\n\n if (ch === '{') {\n depth++\n continue\n }\n if (ch === '}') {\n depth--\n if (depth === 0) return text.slice(start, i + 1)\n }\n }\n\n return null\n}\n\nfunction parseSessionStartAdditionalContext(stdout: string): string | null {\n const trimmed = String(stdout ?? '').trim()\n if (!trimmed) return null\n\n const jsonStr = extractFirstJsonObject(trimmed) ?? trimmed\n try {\n const parsed = JSON.parse(jsonStr)\n const additional =\n parsed &&\n typeof parsed === 'object' &&\n (parsed as any).hookSpecificOutput &&\n typeof (parsed as any).hookSpecificOutput.additionalContext === 'string'\n ? String((parsed as any).hookSpecificOutput.additionalContext)\n : null\n return additional && additional.trim() ? additional : null\n } catch {\n return null\n }\n}\n\nfunction tryParseHookJson(stdout: string): any | null {\n const trimmed = String(stdout ?? '').trim()\n if (!trimmed) return null\n const jsonStr = extractFirstJsonObject(trimmed) ?? trimmed\n try {\n const parsed = JSON.parse(jsonStr)\n return parsed && typeof parsed === 'object' ? parsed : null\n } catch {\n return null\n }\n}\n\nfunction normalizePermissionDecision(\n value: unknown,\n): 'allow' | 'deny' | 'ask' | 'passthrough' | null {\n if (typeof value !== 'string') return null\n const normalized = value.trim().toLowerCase()\n if (normalized === 'allow' || normalized === 'approve') return 'allow'\n if (normalized === 'deny' || normalized === 'block') return 'deny'\n if (normalized === 'ask') return 'ask'\n if (normalized === 'passthrough' || normalized === 'continue')\n return 'passthrough'\n return null\n}\n\nfunction normalizeStopDecision(value: unknown): 'approve' | 'block' | null {\n if (typeof value !== 'string') return null\n const normalized = value.trim().toLowerCase()\n if (normalized === 'approve' || normalized === 'allow') return 'approve'\n if (normalized === 'block' || normalized === 'deny') return 'block'\n return null\n}\n\nfunction hookValueForPrompt(value: unknown): string {\n if (value === null || value === undefined) return ''\n if (typeof value === 'string') return value\n try {\n return JSON.stringify(value, null, 2)\n } catch {\n return String(value)\n }\n}\n\nfunction interpolatePromptHookTemplate(\n template: string,\n hookInput: Record<string, unknown>,\n): string {\n return String(template ?? '')\n .replaceAll('$TOOL_INPUT', hookValueForPrompt(hookInput.tool_input))\n .replaceAll('$TOOL_RESULT', hookValueForPrompt(hookInput.tool_result))\n .replaceAll('$TOOL_RESPONSE', hookValueForPrompt(hookInput.tool_response))\n .replaceAll('$USER_PROMPT', hookValueForPrompt(hookInput.user_prompt))\n .replaceAll('$PROMPT', hookValueForPrompt(hookInput.prompt))\n .replaceAll('$REASON', hookValueForPrompt(hookInput.reason))\n}\n\nfunction extractAssistantText(message: any): string {\n const content = (message as any)?.message?.content\n if (typeof content === 'string') return content\n if (!Array.isArray(content)) return ''\n return content\n .filter((b: any) => b && typeof b === 'object' && b.type === 'text')\n .map((b: any) => String(b.text ?? ''))\n .join('')\n}\n\nasync function runPromptHook(args: {\n hook: PromptHook\n hookEvent: HookEventName\n hookInput: Record<string, unknown>\n safeMode: boolean\n parentSignal?: AbortSignal\n fallbackTimeoutMs: number\n}): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n const { signal, cleanup } = withHookTimeout({\n timeoutSeconds: args.hook.timeout,\n parentSignal: args.parentSignal,\n fallbackTimeoutMs: args.fallbackTimeoutMs,\n })\n\n try {\n const { queryQuick } = await import('@services/llmLazy')\n\n const systemPrompt = [\n 'You are executing a Pyb prompt hook.',\n 'Return a single JSON object only (no markdown, no prose).',\n `hook_event_name: ${args.hookEvent}`,\n 'Valid fields include:',\n '- systemMessage: string',\n '- decision: \\\"approve\\\" | \\\"block\\\" (Stop/SubagentStop only)',\n '- reason: string (Stop/SubagentStop only)',\n '- hookSpecificOutput.permissionDecision: \\\"allow\\\" | \\\"deny\\\" | \\\"ask\\\" | \\\"passthrough\\\" (PreToolUse only)',\n '- hookSpecificOutput.updatedInput: object (PreToolUse only)',\n '- hookSpecificOutput.additionalContext: string (SessionStart/any)',\n ]\n\n const promptText = interpolatePromptHookTemplate(\n args.hook.prompt,\n args.hookInput,\n )\n const userPrompt = `${promptText}\\n\\n# Hook input JSON\\n${hookValueForPrompt(args.hookInput)}`\n\n const response = await queryQuick({\n systemPrompt,\n userPrompt,\n signal,\n })\n\n return { exitCode: 0, stdout: extractAssistantText(response), stderr: '' }\n } catch (err) {\n return {\n exitCode: 1,\n stdout: '',\n stderr: err instanceof Error ? err.message : String(err),\n }\n } finally {\n cleanup()\n }\n}\n\nfunction applyEnvFileToProcessEnv(envFilePath: string): void {\n let raw: string\n try {\n raw = readFileSync(envFilePath, 'utf8')\n } catch {\n return\n }\n\n const lines = raw.split(/\\r?\\n/)\n for (const line of lines) {\n const trimmed = line.trim()\n if (!trimmed || trimmed.startsWith('#')) continue\n\n const withoutExport = trimmed.startsWith('export ')\n ? trimmed.slice('export '.length).trim()\n : trimmed\n\n const eq = withoutExport.indexOf('=')\n if (eq <= 0) continue\n\n const key = withoutExport.slice(0, eq).trim()\n let value = withoutExport.slice(eq + 1).trim()\n if (!key) continue\n\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n value = value.slice(1, -1)\n }\n\n process.env[key] = value\n }\n}\n\nfunction loadPluginPreToolUseMatchers(projectDir: string): HookMatcher[] {\n const plugins = getSessionPlugins()\n if (plugins.length === 0) return []\n\n const out: HookMatcher[] = []\n for (const plugin of plugins) {\n for (const hookPath of plugin.hooksFiles ?? []) {\n try {\n const stat = statSync(hookPath)\n const cached = pluginHooksCache.get(hookPath)\n if (cached && cached.mtimeMs === stat.mtimeMs) {\n out.push(\n ...(cached.byEvent.PreToolUse ?? []).map(m => ({\n matcher: m.matcher,\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\n })),\n )\n continue\n }\n\n const raw = readFileSync(hookPath, 'utf8')\n const parsed = JSON.parse(raw) as HookFileEnvelope\n const hookObj =\n parsed && typeof parsed === 'object' && parsed.hooks\n ? parsed.hooks\n : parsed\n const byEvent = parseHooksByEvent(hookObj)\n pluginHooksCache.set(hookPath, { mtimeMs: stat.mtimeMs, byEvent })\n out.push(\n ...(byEvent.PreToolUse ?? []).map(m => ({\n matcher: m.matcher,\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\n })),\n )\n } catch (err) {\n logError(err)\n continue\n }\n }\n\n const inlineByEvent = loadInlinePluginHooksByEvent(plugin)\n if (inlineByEvent?.PreToolUse) {\n out.push(\n ...inlineByEvent.PreToolUse.map(m => ({\n matcher: m.matcher,\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\n })),\n )\n }\n }\n\n return out\n}\n\nfunction loadPluginMatchers(\n projectDir: string,\n event: HookEventName,\n): HookMatcher[] {\n const plugins = getSessionPlugins()\n if (plugins.length === 0) return []\n\n const out: HookMatcher[] = []\n for (const plugin of plugins) {\n for (const hookPath of plugin.hooksFiles ?? []) {\n try {\n const stat = statSync(hookPath)\n const cached = pluginHooksCache.get(hookPath)\n if (cached && cached.mtimeMs === stat.mtimeMs) {\n out.push(\n ...(cached.byEvent[event] ?? []).map(m => ({\n matcher: m.matcher,\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\n })),\n )\n continue\n }\n\n const raw = readFileSync(hookPath, 'utf8')\n const parsed = JSON.parse(raw) as HookFileEnvelope\n const hookObj =\n parsed && typeof parsed === 'object' && parsed.hooks\n ? parsed.hooks\n : parsed\n const byEvent = parseHooksByEvent(hookObj)\n pluginHooksCache.set(hookPath, { mtimeMs: stat.mtimeMs, byEvent })\n out.push(\n ...(byEvent[event] ?? []).map(m => ({\n matcher: m.matcher,\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\n })),\n )\n } catch (err) {\n logError(err)\n continue\n }\n }\n\n const inlineByEvent = loadInlinePluginHooksByEvent(plugin)\n if (inlineByEvent?.[event]) {\n out.push(\n ...(inlineByEvent[event] ?? []).map(m => ({\n matcher: m.matcher,\n hooks: m.hooks.map(h => ({ ...h, pluginRoot: plugin.rootDir })),\n })),\n )\n }\n }\n return out\n}\n\nfunction parseSessionStartHooks(value: unknown): CommandHook[] {\n if (!Array.isArray(value)) return []\n const out: CommandHook[] = []\n for (const item of value) {\n if (!item || typeof item !== 'object') continue\n const hooksRaw = (item as any).hooks\n const hooks = Array.isArray(hooksRaw) ? hooksRaw.filter(isCommandHook) : []\n out.push(...hooks)\n }\n return out\n}\n\nexport async function getSessionStartAdditionalContext(args?: {\n permissionMode?: unknown\n cwd?: string\n signal?: AbortSignal\n}): Promise<string> {\n const sessionId = getPybAgentSessionId()\n const cached = sessionStartCache.get(sessionId)\n if (cached) return cached.additionalContext\n\n const projectDir = args?.cwd ?? getCwd()\n const plugins = getSessionPlugins()\n if (plugins.length === 0) {\n sessionStartCache.set(sessionId, { additionalContext: '' })\n return ''\n }\n\n const envFileDir = mkdtempSync(join(tmpdir(), 'pyb-env-'))\n const envFilePath = join(envFileDir, `${sessionId}.env`)\n try {\n writeFileSync(envFilePath, '', 'utf8')\n } catch {\n }\n\n const additionalContexts: string[] = []\n\n try {\n for (const plugin of plugins) {\n for (const hookPath of plugin.hooksFiles ?? []) {\n let hookObj: any\n try {\n const raw = readFileSync(hookPath, 'utf8')\n const parsed = JSON.parse(raw) as HookFileEnvelope\n hookObj =\n parsed && typeof parsed === 'object' && parsed.hooks\n ? parsed.hooks\n : parsed\n } catch {\n continue\n }\n\n const hooks = parseSessionStartHooks(hookObj?.SessionStart).map(h => ({\n ...h,\n pluginRoot: plugin.rootDir,\n }))\n if (hooks.length === 0) continue\n\n for (const hook of hooks) {\n const payload = {\n session_id: sessionId,\n cwd: projectDir,\n hook_event_name: 'SessionStart',\n permission_mode: coerceHookPermissionMode(args?.permissionMode),\n }\n\n const result = await runCommandHook({\n command: hook.command,\n stdinJson: payload,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot\n ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot }\n : {}),\n PYB_ENV_FILE: envFilePath,\n },\n signal: args?.signal,\n })\n\n if (result.exitCode !== 0) continue\n const injected = parseSessionStartAdditionalContext(result.stdout)\n if (injected) additionalContexts.push(injected)\n }\n }\n\n const inlineHooks = (plugin.manifest as any)?.hooks\n if (\n inlineHooks &&\n typeof inlineHooks === 'object' &&\n !Array.isArray(inlineHooks)\n ) {\n const hookObj =\n (inlineHooks as any).hooks &&\n typeof (inlineHooks as any).hooks === 'object' &&\n !Array.isArray((inlineHooks as any).hooks)\n ? (inlineHooks as any).hooks\n : inlineHooks\n\n const hooks = parseSessionStartHooks(\n (hookObj as any)?.SessionStart,\n ).map(h => ({\n ...h,\n pluginRoot: plugin.rootDir,\n }))\n if (hooks.length > 0) {\n for (const hook of hooks) {\n const payload = {\n session_id: sessionId,\n cwd: projectDir,\n hook_event_name: 'SessionStart',\n permission_mode: coerceHookPermissionMode(args?.permissionMode),\n }\n\n const result = await runCommandHook({\n command: hook.command,\n stdinJson: payload,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot\n ? { CLAUDE_PLUGIN_ROOT: hook.pluginRoot }\n : {}),\n PYB_ENV_FILE: envFilePath,\n },\n signal: args?.signal,\n })\n\n if (result.exitCode !== 0) continue\n const injected = parseSessionStartAdditionalContext(result.stdout)\n if (injected) additionalContexts.push(injected)\n }\n }\n }\n }\n } finally {\n applyEnvFileToProcessEnv(envFilePath)\n try {\n rmSync(envFileDir, { recursive: true, force: true })\n } catch {}\n }\n\n const additionalContext = additionalContexts.filter(Boolean).join('\\n\\n')\n sessionStartCache.set(sessionId, { additionalContext })\n return additionalContext\n}\n\nexport async function runPreToolUseHooks(args: {\n toolName: string\n toolInput: Record<string, unknown>\n toolUseId: string\n retryEntryKey?: string\n retryAttempt?: number\n sessionId?: string\n parentSessionId?: string\n childSessionId?: string\n agentId?: string\n permissionMode?: unknown\n cwd?: string\n transcriptPath?: string\n safeMode?: boolean\n signal?: AbortSignal\n}): Promise<PreToolUseHookOutcome> {\n const projectDir = args.cwd ?? getCwd()\n const matchers = [\n ...loadSettingsMatchers(projectDir, 'PreToolUse'),\n ...loadPluginMatchers(projectDir, 'PreToolUse'),\n ]\n if (matchers.length === 0) return { kind: 'allow', warnings: [] }\n\n const applicable = matchers.filter(m =>\n matcherMatchesTool(m.matcher, args.toolName),\n )\n if (applicable.length === 0) return { kind: 'allow', warnings: [] }\n\n const hookInput: Record<string, unknown> = {\n session_id: args.sessionId ?? getPybAgentSessionId(),\n parent_session_id: args.parentSessionId,\n child_session_id: args.childSessionId,\n agent_id: args.agentId,\n retry_entry_key: args.retryEntryKey,\n retry_attempt: args.retryAttempt ?? 0,\n transcript_path: args.transcriptPath,\n cwd: projectDir,\n hook_event_name: 'PreToolUse',\n permission_mode: coerceHookPermissionMode(args.permissionMode),\n tool_name: args.toolName,\n tool_input: args.toolInput,\n tool_use_id: args.toolUseId,\n }\n\n const warnings: string[] = []\n const systemMessages: string[] = []\n const additionalContexts: string[] = []\n\n let mergedUpdatedInput: Record<string, unknown> | undefined\n let permissionDecision: 'allow' | 'ask' | null = null\n\n const executions: Array<\n Promise<{\n hook: Hook\n result: { exitCode: number; stdout: string; stderr: string }\n }>\n > = []\n\n for (const entry of applicable) {\n for (const hook of entry.hooks) {\n if (hook.type === 'prompt') {\n executions.push(\n runPromptHook({\n hook,\n hookEvent: 'PreToolUse',\n hookInput,\n safeMode: args.safeMode ?? false,\n parentSignal: args.signal,\n fallbackTimeoutMs: 30_000,\n }).then(result => ({ hook, result })),\n )\n continue\n }\n\n const { signal, cleanup } = withHookTimeout({\n timeoutSeconds: hook.timeout,\n parentSignal: args.signal,\n fallbackTimeoutMs: 60_000,\n })\n executions.push(\n runCommandHook({\n command: hook.command,\n stdinJson: hookInput,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot ? { PYB_PLUGIN_ROOT: hook.pluginRoot } : {}),\n },\n signal,\n })\n .then(result => ({ hook, result }))\n .finally(cleanup),\n )\n }\n }\n\n const settled = await Promise.allSettled(executions)\n for (const item of settled) {\n if (item.status === 'rejected') {\n logError(item.reason)\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\n continue\n }\n\n const { hook, result } = item.value\n\n if (result.exitCode === 2) {\n return {\n kind: 'block',\n message: coerceHookMessage(result.stdout, result.stderr),\n }\n }\n\n if (result.exitCode !== 0) {\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\n continue\n }\n\n const json = tryParseHookJson(result.stdout)\n if (!json) continue\n\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\n systemMessages.push(json.systemMessage.trim())\n }\n\n const additional =\n json.hookSpecificOutput &&\n typeof json.hookSpecificOutput === 'object' &&\n typeof json.hookSpecificOutput.additionalContext === 'string'\n ? String(json.hookSpecificOutput.additionalContext)\n : null\n if (additional && additional.trim()) {\n additionalContexts.push(additional.trim())\n }\n\n const decision = normalizePermissionDecision(\n json.hookSpecificOutput?.permissionDecision,\n )\n if (decision === 'deny') {\n const msg =\n systemMessages.length > 0\n ? systemMessages.join('\\n\\n')\n : coerceHookMessage(result.stdout, result.stderr)\n return {\n kind: 'block',\n message: msg,\n systemMessages,\n additionalContexts,\n }\n }\n\n if (decision === 'ask') {\n permissionDecision = 'ask'\n } else if (decision === 'allow') {\n if (!permissionDecision) permissionDecision = 'allow'\n }\n\n const updated =\n json.hookSpecificOutput &&\n typeof json.hookSpecificOutput === 'object' &&\n json.hookSpecificOutput.updatedInput &&\n typeof json.hookSpecificOutput.updatedInput === 'object'\n ? (json.hookSpecificOutput.updatedInput as Record<string, unknown>)\n : null\n if (updated) {\n mergedUpdatedInput = { ...(mergedUpdatedInput ?? {}), ...updated }\n }\n }\n\n return {\n kind: 'allow',\n warnings,\n permissionDecision:\n permissionDecision === 'allow'\n ? 'allow'\n : permissionDecision === 'ask'\n ? 'ask'\n : undefined,\n updatedInput:\n permissionDecision === 'allow' ? mergedUpdatedInput : undefined,\n systemMessages,\n additionalContexts,\n }\n}\n\nexport async function runPostToolUseHooks(args: {\n toolName: string\n toolInput: Record<string, unknown>\n toolResult: unknown\n toolUseId: string\n retryEntryKey?: string\n retryAttempt?: number\n sessionId?: string\n parentSessionId?: string\n childSessionId?: string\n agentId?: string\n permissionMode?: unknown\n cwd?: string\n transcriptPath?: string\n safeMode?: boolean\n signal?: AbortSignal\n}): Promise<{\n warnings: string[]\n systemMessages: string[]\n additionalContexts: string[]\n}> {\n const projectDir = args.cwd ?? getCwd()\n const matchers = [\n ...loadSettingsMatchers(projectDir, 'PostToolUse'),\n ...loadPluginMatchers(projectDir, 'PostToolUse'),\n ]\n if (matchers.length === 0) {\n return { warnings: [], systemMessages: [], additionalContexts: [] }\n }\n\n const applicable = matchers.filter(m =>\n matcherMatchesTool(m.matcher, args.toolName),\n )\n if (applicable.length === 0) {\n return { warnings: [], systemMessages: [], additionalContexts: [] }\n }\n\n const hookInput: Record<string, unknown> = {\n session_id: args.sessionId ?? getPybAgentSessionId(),\n parent_session_id: args.parentSessionId,\n child_session_id: args.childSessionId,\n agent_id: args.agentId,\n retry_entry_key: args.retryEntryKey,\n retry_attempt: args.retryAttempt ?? 0,\n transcript_path: args.transcriptPath,\n cwd: projectDir,\n hook_event_name: 'PostToolUse',\n permission_mode: coerceHookPermissionMode(args.permissionMode),\n tool_name: args.toolName,\n tool_input: args.toolInput,\n tool_result: args.toolResult,\n tool_response: args.toolResult,\n tool_use_id: args.toolUseId,\n }\n\n const warnings: string[] = []\n const systemMessages: string[] = []\n const additionalContexts: string[] = []\n\n const executions: Array<\n Promise<{\n hook: Hook\n result: { exitCode: number; stdout: string; stderr: string }\n }>\n > = []\n\n for (const entry of applicable) {\n for (const hook of entry.hooks) {\n if (hook.type === 'prompt') {\n executions.push(\n runPromptHook({\n hook,\n hookEvent: 'PostToolUse',\n hookInput,\n safeMode: args.safeMode ?? false,\n parentSignal: args.signal,\n fallbackTimeoutMs: 30_000,\n }).then(result => ({ hook, result })),\n )\n continue\n }\n\n const { signal, cleanup } = withHookTimeout({\n timeoutSeconds: hook.timeout,\n parentSignal: args.signal,\n fallbackTimeoutMs: 60_000,\n })\n executions.push(\n runCommandHook({\n command: hook.command,\n stdinJson: hookInput,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot ? { PYB_PLUGIN_ROOT: hook.pluginRoot } : {}),\n },\n signal,\n })\n .then(result => ({ hook, result }))\n .finally(cleanup),\n )\n }\n }\n\n const settled = await Promise.allSettled(executions)\n for (const item of settled) {\n if (item.status === 'rejected') {\n logError(item.reason)\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\n continue\n }\n\n const { result } = item.value\n if (result.exitCode !== 0) {\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\n continue\n }\n\n const json = tryParseHookJson(result.stdout)\n if (!json) continue\n\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\n systemMessages.push(json.systemMessage.trim())\n }\n\n const additional =\n json.hookSpecificOutput &&\n typeof json.hookSpecificOutput === 'object' &&\n typeof json.hookSpecificOutput.additionalContext === 'string'\n ? String(json.hookSpecificOutput.additionalContext)\n : null\n if (additional && additional.trim()) {\n additionalContexts.push(additional.trim())\n }\n }\n\n return { warnings, systemMessages, additionalContexts }\n}\n\nexport type StopHookOutcome =\n | {\n decision: 'approve'\n warnings: string[]\n systemMessages: string[]\n additionalContexts: string[]\n }\n | {\n decision: 'block'\n message: string\n warnings: string[]\n systemMessages: string[]\n additionalContexts: string[]\n }\n\nexport async function runStopHooks(args: {\n hookEvent: 'Stop' | 'SubagentStop'\n reason?: string\n retryEntryKey?: string\n retryAttempt?: number\n sessionId?: string\n parentSessionId?: string\n childSessionId?: string\n agentId?: string\n permissionMode?: unknown\n cwd?: string\n transcriptPath?: string\n safeMode?: boolean\n stopHookActive?: boolean\n signal?: AbortSignal\n}): Promise<StopHookOutcome> {\n const projectDir = args.cwd ?? getCwd()\n const matchers = [\n ...loadSettingsMatchers(projectDir, args.hookEvent),\n ...loadPluginMatchers(projectDir, args.hookEvent),\n ]\n if (matchers.length === 0) {\n return {\n decision: 'approve',\n warnings: [],\n systemMessages: [],\n additionalContexts: [],\n }\n }\n\n const applicable = matchers.filter(m => matcherMatchesTool(m.matcher, '*'))\n console.error('DEBUG: applicable stop hooks', applicable.length)\n if (applicable.length === 0) {\n return {\n decision: 'approve',\n warnings: [],\n systemMessages: [],\n additionalContexts: [],\n }\n }\n\n const hookInput: Record<string, unknown> = {\n session_id: args.sessionId ?? getPybAgentSessionId(),\n parent_session_id: args.parentSessionId,\n child_session_id: args.childSessionId,\n retry_entry_key: args.retryEntryKey,\n retry_attempt: args.retryAttempt ?? 0,\n transcript_path: args.transcriptPath,\n cwd: projectDir,\n hook_event_name: args.hookEvent,\n permission_mode: coerceHookPermissionMode(args.permissionMode),\n reason: args.reason,\n stop_hook_active: args.stopHookActive === true,\n ...(args.hookEvent === 'SubagentStop'\n ? { agent_id: args.agentId, agent_transcript_path: args.transcriptPath }\n : {}),\n }\n\n const warnings: string[] = []\n const systemMessages: string[] = []\n const additionalContexts: string[] = []\n\n const executions: Array<\n Promise<{\n hook: Hook\n result: { exitCode: number; stdout: string; stderr: string }\n }>\n > = []\n\n for (const entry of applicable) {\n for (const hook of entry.hooks) {\n if (hook.type === 'prompt') {\n executions.push(\n runPromptHook({\n hook,\n hookEvent: args.hookEvent,\n hookInput,\n safeMode: args.safeMode ?? false,\n parentSignal: args.signal,\n fallbackTimeoutMs: 30_000,\n }).then(result => ({ hook, result })),\n )\n continue\n }\n\n const { signal, cleanup } = withHookTimeout({\n timeoutSeconds: hook.timeout,\n parentSignal: args.signal,\n fallbackTimeoutMs: 60_000,\n })\n executions.push(\n runCommandHook({\n command: hook.command,\n stdinJson: hookInput,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot ? { PYB_PLUGIN_ROOT: hook.pluginRoot } : {}),\n },\n signal,\n })\n .then(result => ({ hook, result }))\n .finally(cleanup),\n )\n }\n }\n\n const settled = await Promise.allSettled(executions)\n for (const item of settled) {\n if (item.status === 'rejected') {\n logError(item.reason)\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\n continue\n }\n\n const { result } = item.value\n\n if (result.exitCode === 2) {\n return {\n decision: 'block',\n message: coerceHookMessage(result.stdout, result.stderr),\n warnings,\n systemMessages,\n additionalContexts,\n }\n }\n\n if (result.exitCode !== 0) {\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\n continue\n }\n\n const json = tryParseHookJson(result.stdout)\n if (!json) continue\n\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\n systemMessages.push(json.systemMessage.trim())\n }\n\n const additional =\n json.hookSpecificOutput &&\n typeof json.hookSpecificOutput === 'object' &&\n typeof json.hookSpecificOutput.additionalContext === 'string'\n ? String(json.hookSpecificOutput.additionalContext)\n : null\n if (additional && additional.trim()) {\n additionalContexts.push(additional.trim())\n }\n\n const stopDecision = normalizeStopDecision(json.decision)\n if (stopDecision === 'block') {\n const reason =\n typeof json.reason === 'string' && json.reason.trim()\n ? json.reason.trim()\n : null\n const msg =\n reason ||\n (systemMessages.length > 0\n ? systemMessages.join('\\n\\n')\n : coerceHookMessage(result.stdout, result.stderr))\n return {\n decision: 'block',\n message: msg,\n warnings,\n systemMessages,\n additionalContexts,\n }\n }\n }\n\n return { decision: 'approve', warnings, systemMessages, additionalContexts }\n}\n\nexport type UserPromptHookOutcome =\n | {\n decision: 'allow'\n warnings: string[]\n systemMessages: string[]\n additionalContexts: string[]\n }\n | {\n decision: 'block'\n message: string\n warnings: string[]\n systemMessages: string[]\n additionalContexts: string[]\n }\n\nexport async function runUserPromptSubmitHooks(args: {\n prompt: string\n permissionMode?: unknown\n cwd?: string\n transcriptPath?: string\n safeMode?: boolean\n signal?: AbortSignal\n}): Promise<UserPromptHookOutcome> {\n const projectDir = args.cwd ?? getCwd()\n const matchers = [\n ...loadSettingsMatchers(projectDir, 'UserPromptSubmit'),\n ...loadPluginMatchers(projectDir, 'UserPromptSubmit'),\n ]\n if (matchers.length === 0) {\n return {\n decision: 'allow',\n warnings: [],\n systemMessages: [],\n additionalContexts: [],\n }\n }\n\n const applicable = matchers.filter(m => matcherMatchesTool(m.matcher, '*'))\n if (applicable.length === 0) {\n return {\n decision: 'allow',\n warnings: [],\n systemMessages: [],\n additionalContexts: [],\n }\n }\n\n const hookInput: Record<string, unknown> = {\n session_id: getPybAgentSessionId(),\n transcript_path: args.transcriptPath,\n cwd: projectDir,\n hook_event_name: 'UserPromptSubmit',\n permission_mode: coerceHookPermissionMode(args.permissionMode),\n user_prompt: args.prompt,\n prompt: args.prompt,\n }\n\n const warnings: string[] = []\n const systemMessages: string[] = []\n const additionalContexts: string[] = []\n\n const executions: Array<\n Promise<{\n hook: Hook\n result: { exitCode: number; stdout: string; stderr: string }\n }>\n > = []\n\n for (const entry of applicable) {\n for (const hook of entry.hooks) {\n if (hook.type === 'prompt') {\n executions.push(\n runPromptHook({\n hook,\n hookEvent: 'UserPromptSubmit',\n hookInput,\n safeMode: args.safeMode ?? false,\n parentSignal: args.signal,\n fallbackTimeoutMs: 30_000,\n }).then(result => ({ hook, result })),\n )\n continue\n }\n\n const { signal, cleanup } = withHookTimeout({\n timeoutSeconds: hook.timeout,\n parentSignal: args.signal,\n fallbackTimeoutMs: 60_000,\n })\n executions.push(\n runCommandHook({\n command: hook.command,\n stdinJson: hookInput,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot ? { PYB_PLUGIN_ROOT: hook.pluginRoot } : {}),\n },\n signal,\n })\n .then(result => ({ hook, result }))\n .finally(cleanup),\n )\n }\n }\n\n const settled = await Promise.allSettled(executions)\n for (const item of settled) {\n if (item.status === 'rejected') {\n logError(item.reason)\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\n continue\n }\n\n const { result } = item.value\n\n if (result.exitCode === 2) {\n return {\n decision: 'block',\n message: coerceHookMessage(result.stdout, result.stderr),\n warnings,\n systemMessages,\n additionalContexts,\n }\n }\n\n if (result.exitCode !== 0) {\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\n continue\n }\n\n const json = tryParseHookJson(result.stdout)\n if (!json) continue\n\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\n systemMessages.push(json.systemMessage.trim())\n }\n\n const additional =\n json.hookSpecificOutput &&\n typeof json.hookSpecificOutput === 'object' &&\n typeof json.hookSpecificOutput.additionalContext === 'string'\n ? String(json.hookSpecificOutput.additionalContext)\n : null\n if (additional && additional.trim()) {\n additionalContexts.push(additional.trim())\n }\n\n const stopDecision = normalizeStopDecision(json.decision)\n if (stopDecision === 'block') {\n const reason =\n typeof json.reason === 'string' && json.reason.trim()\n ? json.reason.trim()\n : null\n const msg =\n reason ||\n (systemMessages.length > 0\n ? systemMessages.join('\\n\\n')\n : coerceHookMessage(result.stdout, result.stderr))\n return {\n decision: 'block',\n message: msg,\n warnings,\n systemMessages,\n additionalContexts,\n }\n }\n }\n\n return { decision: 'allow', warnings, systemMessages, additionalContexts }\n}\n\nexport async function runSessionEndHooks(args: {\n reason: string\n permissionMode?: unknown\n cwd?: string\n transcriptPath?: string\n safeMode?: boolean\n signal?: AbortSignal\n}): Promise<{ warnings: string[]; systemMessages: string[] }> {\n const projectDir = args.cwd ?? getCwd()\n const matchers = [\n ...loadSettingsMatchers(projectDir, 'SessionEnd'),\n ...loadPluginMatchers(projectDir, 'SessionEnd'),\n ]\n if (matchers.length === 0) return { warnings: [], systemMessages: [] }\n\n const applicable = matchers.filter(m => matcherMatchesTool(m.matcher, '*'))\n if (applicable.length === 0) return { warnings: [], systemMessages: [] }\n\n const hookInput: Record<string, unknown> = {\n session_id: getPybAgentSessionId(),\n transcript_path: args.transcriptPath,\n cwd: projectDir,\n hook_event_name: 'SessionEnd',\n permission_mode: coerceHookPermissionMode(args.permissionMode),\n reason: args.reason,\n }\n\n const warnings: string[] = []\n const systemMessages: string[] = []\n\n const executions: Array<\n Promise<{\n hook: Hook\n result: { exitCode: number; stdout: string; stderr: string }\n }>\n > = []\n\n for (const entry of applicable) {\n for (const hook of entry.hooks) {\n if (hook.type === 'prompt') {\n executions.push(\n runPromptHook({\n hook,\n hookEvent: 'SessionEnd',\n hookInput,\n safeMode: args.safeMode ?? false,\n parentSignal: args.signal,\n fallbackTimeoutMs: 30_000,\n }).then(result => ({ hook, result })),\n )\n continue\n }\n\n const { signal, cleanup } = withHookTimeout({\n timeoutSeconds: hook.timeout,\n parentSignal: args.signal,\n fallbackTimeoutMs: 60_000,\n })\n executions.push(\n runCommandHook({\n command: hook.command,\n stdinJson: hookInput,\n cwd: projectDir,\n env: {\n PYB_PROJECT_DIR: projectDir,\n ...(hook.pluginRoot ? { PYB_PLUGIN_ROOT: hook.pluginRoot } : {}),\n },\n signal,\n })\n .then(result => ({ hook, result }))\n .finally(cleanup),\n )\n }\n }\n\n const settled = await Promise.allSettled(executions)\n for (const item of settled) {\n if (item.status === 'rejected') {\n logError(item.reason)\n warnings.push(`Hook failed to run: ${String(item.reason ?? '')}`)\n continue\n }\n\n const { result } = item.value\n if (result.exitCode !== 0) {\n warnings.push(coerceHookMessage(result.stdout, result.stderr))\n continue\n }\n\n const json = tryParseHookJson(result.stdout)\n if (!json) continue\n if (typeof json.systemMessage === 'string' && json.systemMessage.trim()) {\n systemMessages.push(json.systemMessage.trim())\n }\n }\n\n return { warnings, systemMessages }\n}\n\nexport function __resetPybHooksCacheForTests(): void {\n cache.clear()\n pluginHooksCache.clear()\n sessionStartCache.clear()\n}\n"],
5
- "mappings": "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",
6
- "names": ["content", "parts"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../package.json", "../src/constants/macros.ts"],
4
- "sourcesContent": ["{\n \"name\": \"pybao-cli\",\n \"version\": \"1.5.51\",\n \"bin\": {\n \"pyb\": \"cli.js\",\n \"pyb-acp\": \"cli-acp.js\"\n },\n \"engines\": {\n \"node\": \">=20.18.1\"\n },\n \"main\": \"cli.js\",\n \"author\": \"PYB-XC\",\n \"license\": \"MIT\",\n \"description\": \"PYB-CLI - Minimal AI Agent with multi-model support and CLI interface\",\n \"keywords\": [\n \"ai\",\n \"agent\",\n \"minimal\",\n \"claude\"\n ],\n \"homepage\": \"https://github.com/pyb-xc/pyb-ts\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/pyb-xc/pyb-ts.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/pyb-xc/pyb-ts/issues\"\n },\n \"files\": [\n \"cli.js\",\n \"cli-acp.js\",\n \"yoga.wasm\",\n \"dist/**/*\",\n \"scripts/binary-utils.cjs\",\n \"scripts/cli-wrapper.cjs\",\n \"scripts/cli-acp-wrapper.cjs\",\n \"scripts/postinstall.js\",\n \"scripts/typed-sql-release-gate.mjs\",\n \"scripts/typed-sql-schema-guard.mjs\",\n \"scripts/typed-sql-install-smoke.mjs\",\n \"scripts/typed-sql-no-fallback-gate.mjs\",\n \"scripts/typed-part-baseline-benchmark.mjs\",\n \"scripts/typed-part-performance-gate.mjs\",\n \"scripts/session-contract-gate.mjs\",\n \"scripts/session-behavior-invariant-gate.mjs\",\n \"scripts/session-project-gate.mjs\",\n \"scripts/protected-tool-names-gate.mjs\",\n \".npmrc\",\n \"resources/**/*\"\n ],\n \"scripts\": {\n \"dev\": \"bun run ./src/entrypoints/cli.tsx --verbose\",\n \"dev:server\": \"bun run ./src/entrypoints/cli.tsx serve --port 4096\",\n \"build:npm\": \"bun scripts/build.mjs\",\n \"build\": \"npm run build:npm\",\n \"build:sdk\": \"npm --prefix ./packages/sdk run build\",\n \"generate:sdk\": \"node scripts/sdk-generate.mjs\",\n \"check:sdk-generated\": \"node scripts/sdk-check-generated.mjs\",\n \"check:compat-window\": \"node scripts/sdk-compat-window-gate.mjs\",\n \"generate:legacy-mapping\": \"node scripts/sdk-legacy-mapping-report.mjs\",\n \"check:legacy-usage\": \"node scripts/sdk-legacy-usage-gate.mjs\",\n \"report:legacy-usage-trend\": \"node scripts/sdk-legacy-usage-trend-report.mjs\",\n \"check:legacy-window\": \"node scripts/sdk-legacy-window-gate.mjs\",\n \"check:docs-consistency\": \"node scripts/sdk-docs-consistency-gate.mjs\",\n \"check:major-cutover\": \"node scripts/sdk-major-cutover-gate.mjs\",\n \"check:facade-closeout\": \"node scripts/sdk-facade-closeout-gate.mjs\",\n \"check:sdk-consistency\": \"node scripts/sdk-consistency-gate.mjs\",\n \"check:sdk-contract-consistency\": \"node scripts/sdk-contract-consistency-gate.mjs\",\n \"check:sdk-legacy-semantics\": \"node scripts/sdk-legacy-semantics-gate.mjs\",\n \"build:binary\": \"node scripts/build-binary.mjs\",\n \"build:native-lock\": \"node scripts/build-native-lock.mjs\",\n \"clean\": \"node scripts/clean.mjs\",\n \"prepublishOnly\": \"npm run build:npm && node scripts/prepublish-check.js\",\n \"postinstall\": \"node scripts/postinstall.js || true\",\n \"format\": \"prettier --write \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.{ts,tsx,js,jsx,json}\\\" \\\"tests/**/*.{ts,tsx,js,jsx,json}\\\"\",\n \"lint\": \"eslint . --ext .ts,.tsx,.js --max-warnings 0\",\n \"lint:fix\": \"eslint . --ext .ts,.tsx,.js --fix\",\n \"test\": \"bun test\",\n \"test:unit\": \"bun test --preload ./tests/setup/native-lock-test-setup.ts tests/unit\",\n \"test:integration\": \"bun test tests/integration\",\n \"test:e2e\": \"bun test tests/e2e\",\n \"test:server\": \"bun test tests/unit/sdk-batch-a-closure.test.ts tests/unit/sdk-batch-b-queryrunner.test.ts tests/unit/sdk-batch-c-sse.test.ts tests/unit/sdk-batch-d-openapi.test.ts tests/unit/sdk-batch-e-capability.test.ts tests/unit/sdk-batch-f-release.test.ts tests/unit/sdk-batch-g-generation.test.ts tests/unit/sdk-batch-h-facade.test.ts tests/unit/sdk-batch-i-lifecycle.test.ts tests/unit/sdk-batch-j-sse-first-class.test.ts tests/unit/sdk-batch-k-release-gate.test.ts tests/unit/sdk-batch-l-mapping-baseline.test.ts tests/unit/sdk-batch-m-docs-deprecate.test.ts tests/unit/sdk-batch-n-window-block.test.ts tests/unit/sdk-batch-o-major-cutover.test.ts tests/unit/sdk-batch-p-governance-closeout.test.ts tests/unit/sdk-batch-q1-runtime-guard.test.ts tests/unit/sdk-batch-q2-contract-capability.test.ts tests/unit/sdk-batch-q3-legacy-semantics.test.ts\",\n \"gate:runtime-assets\": \"bun run scripts/runtime-assets-gate-check.mjs\",\n \"preflight:runtime-assets\": \"node scripts/runtime-assets-preflight.mjs\",\n \"verify:runtime-assets\": \"node scripts/runtime-assets-verify.mjs\",\n \"validate:runtime-assets-contract\": \"node scripts/runtime-assets-schema-validate.mjs\",\n \"gate:runtime-assets-threshold\": \"node scripts/runtime-assets-threshold-gate.mjs\",\n \"gate:runtime-assets-trend-store\": \"node scripts/runtime-assets-trend-store.mjs\",\n \"gate:runtime-assets-trend\": \"node scripts/runtime-assets-trend-gate.mjs\",\n \"report:runtime-assets-trend\": \"node scripts/runtime-assets-trend-report.mjs\",\n \"gate:typed-compat-retirement\": \"node scripts/typed-compat-retirement-gate.mjs\",\n \"gate:query-adapter-boundary\": \"node scripts/query-adapter-boundary-gate.mjs\",\n \"gate:session-contract\": \"node scripts/session-contract-gate.mjs\",\n \"gate:session-behavior-invariant\": \"node scripts/session-behavior-invariant-gate.mjs\",\n \"gate:session-project\": \"node scripts/session-project-gate.mjs\",\n \"gate:protected-tool-names\": \"node scripts/protected-tool-names-gate.mjs\",\n \"gate:lsp-semantic-unknown-ratio\": \"node scripts/lsp-semantic-unknown-ratio-gate.mjs\",\n \"gate:lsp-a0-baseline\": \"node scripts/lsp-a0-baseline-gate.mjs --samples-file tests/fixtures/lsp/a0-baseline-samples.json --min-total 120 --min-per-operation 30\",\n \"gate:tool-name-a0-baseline\": \"node scripts/tool-name-a0-baseline-gate.mjs\",\n \"gate:lsp-a2prime-behavior-invariant\": \"node scripts/lsp-a2prime-behavior-invariant-gate.mjs --mode run\",\n \"plan:typed-compat-retirement\": \"node scripts/typed-compat-retirement-plan.mjs\",\n \"enforce:typed-compat-retirement\": \"node scripts/typed-compat-retirement-enforce.mjs\",\n \"gate:typed-sql-release\": \"node scripts/typed-sql-release-gate.mjs\",\n \"gate:typed-sql-schema\": \"node scripts/typed-sql-schema-guard.mjs\",\n \"smoke:typed-sql-install\": \"node scripts/typed-sql-install-smoke.mjs\",\n \"gate:typed-sql-no-fallback\": \"node scripts/typed-sql-no-fallback-gate.mjs\",\n \"benchmark:typed-part-baseline\": \"bun scripts/typed-part-baseline-benchmark.mjs\",\n \"gate:typed-part-performance\": \"node scripts/typed-part-performance-gate.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"release:gate\": \"npm run generate:sdk && npm run check:sdk-generated && npm run generate:legacy-mapping && npm run check:legacy-usage && npm run report:legacy-usage-trend && npm run check:legacy-window && npm run check:docs-consistency && npm run check:major-cutover && npm run check:facade-closeout && npm run check:sdk-consistency && npm run check:sdk-contract-consistency && npm run check:sdk-legacy-semantics && npm run check:compat-window && npm run build:sdk && npm run test:server && npm run lint && npm run typecheck\",\n \"prepare\": \"bun run scripts/install-hooks.mjs\",\n \"sync:native-lock\": \"node scripts/sync-native-lock-versions.mjs\",\n \"publish:native-lock\": \"node scripts/publish-native-lock.mjs\",\n \"verify:native-lock\": \"node scripts/verify-native-lock.mjs\",\n \"publish:dev\": \"bun run scripts/publish-dev.js\",\n \"publish:release\": \"bun run scripts/publish-release.js\"\n },\n \"dependencies\": {\n \"@anthropic-ai/bedrock-sdk\": \"^0.12.6\",\n \"@anthropic-ai/sdk\": \"^0.39.0\",\n \"@anthropic-ai/vertex-sdk\": \"^0.7.0\",\n \"@astrojs/language-server\": \"2.16.2\",\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@commander-js/extra-typings\": \"^13.1.0\",\n \"@inkjs/ui\": \"^2.0.0\",\n \"@modelcontextprotocol/sdk\": \"^1.15.1\",\n \"@prisma/language-server\": \"31.3.4\",\n \"@types/lodash-es\": \"^4.17.12\",\n \"@types/react\": \"^19.1.8\",\n \"@vscode/ripgrep\": \"^1.17.0\",\n \"@vue/language-server\": \"3.2.2\",\n \"ajv\": \"^8.17.1\",\n \"ansi-escapes\": \"^7.0.0\",\n \"bash-language-server\": \"5.6.0\",\n \"chalk\": \"^5.4.1\",\n \"cli-highlight\": \"^2.1.11\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^13.1.0\",\n \"debug\": \"^4.4.1\",\n \"diff\": \"^7.0.0\",\n \"dockerfile-language-server-nodejs\": \"0.15.0\",\n \"dotenv\": \"^16.6.1\",\n \"env-paths\": \"^3.0.0\",\n \"fflate\": \"^0.8.2\",\n \"figures\": \"^6.1.0\",\n \"glob\": \"^11.0.3\",\n \"graphql-language-service-cli\": \"3.5.0\",\n \"gray-matter\": \"^4.0.3\",\n \"highlight.js\": \"^11.11.1\",\n \"ignore\": \"^7.0.5\",\n \"ink\": \"5.2.1\",\n \"ink-link\": \"^4.1.0\",\n \"ink-select-input\": \"^6.2.0\",\n \"ink-text-input\": \"^6.0.0\",\n \"intelephense\": \"1.16.3\",\n \"js-yaml\": \"^4.1.1\",\n \"lodash-es\": \"^4.17.21\",\n \"lru-cache\": \"^11.1.0\",\n \"marked\": \"^15.0.12\",\n \"minimatch\": \"^10.1.1\",\n \"nanoid\": \"^5.1.5\",\n \"node-html-parser\": \"^7.0.1\",\n \"openai\": \"4.104.0\",\n \"pyright\": \"1.1.408\",\n \"react\": \"18.3.1\",\n \"semver\": \"^7.7.2\",\n \"shell-quote\": \"1.8.3\",\n \"spawn-rx\": \"^5.1.2\",\n \"string-width\": \"^7.2.0\",\n \"strip-ansi\": \"^7.1.0\",\n \"svelte-language-server\": \"0.17.23\",\n \"tsx\": \"^4.20.3\",\n \"typescript-language-server\": \"5.1.3\",\n \"undici\": \"^7.11.0\",\n \"vscode-jsonrpc\": \"8.2.1\",\n \"vscode-langservers-extracted\": \"4.10.0\",\n \"web-tree-sitter\": \"0.25.10\",\n \"which\": \"^6.0.0\",\n \"wrap-ansi\": \"^9.0.0\",\n \"yaml-language-server\": \"1.19.2\",\n \"zod\": \"^3.25.76\",\n \"zod-to-json-schema\": \"^3.24.6\"\n },\n \"devDependencies\": {\n \"@types/bun\": \"latest\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^24.1.0\",\n \"@types/which\": \"^3.0.4\",\n \"@typescript-eslint/eslint-plugin\": \"^8.50.1\",\n \"@typescript-eslint/parser\": \"^8.50.1\",\n \"abort-controller\": \"3.0.0\",\n \"bun-types\": \"latest\",\n \"cheerio\": \"1.1.2\",\n \"esbuild\": \"^0.25.9\",\n \"eslint\": \"8.57.0\",\n \"eslint-plugin-react-hooks\": \"^7.0.1\",\n \"ink-testing-library\": \"4.0.0\",\n \"node-fetch\": \"3.3.2\",\n \"prettier\": \"^3.6.2\",\n \"react-devtools-core\": \"^7.0.1\",\n \"tree-sitter-bash\": \"0.25.1\",\n \"tree-sitter-c-sharp\": \"0.23.1\",\n \"tree-sitter-clojure\": \"0.4.0\",\n \"tree-sitter-cpp\": \"0.23.4\",\n \"tree-sitter-go\": \"0.25.0\",\n \"tree-sitter-haskell\": \"0.23.1\",\n \"tree-sitter-java\": \"0.23.5\",\n \"tree-sitter-julia\": \"0.23.1\",\n \"tree-sitter-nix\": \"0.0.2\",\n \"tree-sitter-ocaml\": \"0.24.2\",\n \"tree-sitter-python\": \"0.25.0\",\n \"tree-sitter-rust\": \"0.24.0\",\n \"tree-sitter-scala\": \"0.24.0\",\n \"tree-sitter-swift\": \"0.7.1\",\n \"tree-sitter-typescript\": \"0.23.2\",\n \"turndown\": \"7.2.2\",\n \"typescript\": \"^5.9.2\"\n },\n \"overrides\": {\n \"@aws-sdk/client-bedrock-runtime\": \"3.797.0\",\n \"@smithy/smithy-client\": \"2.5.1\",\n \"parse5-htmlparser2-tree-adapter\": \"6.0.1\"\n },\n \"optionalDependencies\": {\n \"@puyib-cli/lock-win32-x64-msvc\": \"1.4.55\",\n \"@puyib-cli/lock-win32-arm64-msvc\": \"1.4.56\",\n \"@puyib-cli/lock-linux-x64-gnu\": \"1.4.56\",\n \"@puyib-cli/lock-linux-x64-musl\": \"1.4.56\",\n \"@puyib-cli/lock-linux-arm64-gnu\": \"1.4.56\",\n \"@puyib-cli/lock-linux-armv7-gnueabihf\": \"1.4.56\",\n \"@puyib-cli/lock-darwin-x64\": \"1.4.56\",\n \"@puyib-cli/lock-darwin-arm64\": \"1.4.56\"\n },\n \"pybNativeLockPlatforms\": [\n \"win32-x64-msvc\",\n \"win32-arm64-msvc\",\n \"linux-x64-gnu\",\n \"linux-x64-musl\",\n \"linux-arm64-gnu\",\n \"linux-armv7-gnueabihf\",\n \"darwin-x64\",\n \"darwin-arm64\"\n ]\n}\n", "import pkg from '../../package.json'\n\nexport const MACRO = {\n VERSION: pkg.version,\n README_URL: 'https://github.com/pyb-xc/pyb-ts#readme',\n PACKAGE_URL: 'pybao-cli',\n ISSUES_EXPLAINER:\n 'report the issue at https://github.com/pyb-xc/pyb-ts/issues',\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/session/sessionState.ts"],
4
- "sourcesContent": ["type SessionStateBase = {\n modelErrors: Record<string, unknown>\n currentError: string | null\n}\n\ntype SessionCoreStateShape<\n TMessage = unknown,\n TToolPermissionContext = unknown,\n TResponseState = Record<string, unknown>,\n TConversationTracker = unknown,\n TMode = string,\n> = {\n sessionId?: string\n cwd?: string\n messages?: TMessage[]\n toolPermissionContext?: TToolPermissionContext\n readFileTimestamps?: Record<string, number>\n responseState?: TResponseState\n currentModeId?: TMode\n conversationTracker?: TConversationTracker\n}\n\ntype SessionState = SessionStateBase & SessionCoreStateShape\n\nconst isDebug =\n process.argv.includes('--debug') ||\n process.argv.includes('-d') ||\n process.env.DEBUG === 'true'\n\nfunction createSessionStateBase(\n overrides?: Partial<SessionStateBase>,\n): SessionStateBase {\n return {\n modelErrors: {},\n currentError: null,\n ...(overrides ?? {}),\n }\n}\n\nfunction createSessionCoreState<\n TMessage = unknown,\n TToolPermissionContext = unknown,\n TResponseState = Record<string, unknown>,\n TConversationTracker = unknown,\n TMode = string,\n>(\n coreState: Required<\n SessionCoreStateShape<\n TMessage,\n TToolPermissionContext,\n TResponseState,\n TConversationTracker,\n TMode\n >\n >,\n baseState?: Partial<SessionStateBase>,\n): SessionStateBase &\n Required<\n SessionCoreStateShape<\n TMessage,\n TToolPermissionContext,\n TResponseState,\n TConversationTracker,\n TMode\n >\n > {\n return {\n ...createSessionStateBase(baseState),\n ...coreState,\n }\n}\n\nconst sessionStateStore = new Map<string, SessionState>()\nlet currentSessionId: string | null = null\n\nfunction getOrCreateDefaultState(sessionId?: string): SessionState {\n return {\n sessionId,\n ...createSessionStateBase(),\n }\n}\n\nfunction getActiveSessionState(): SessionState | undefined {\n if (!currentSessionId) return undefined\n return (\n sessionStateStore.get(currentSessionId) ??\n ensureSessionState(currentSessionId)\n )\n}\n\nfunction ensureSessionState(\n sessionId: string,\n initial?: Partial<SessionState>,\n): SessionState {\n const existing = sessionStateStore.get(sessionId)\n if (existing) {\n if (initial) Object.assign(existing, initial)\n return existing\n }\n const created: SessionState = {\n ...getOrCreateDefaultState(sessionId),\n ...(initial ?? {}),\n }\n sessionStateStore.set(sessionId, created)\n return created\n}\n\nfunction setCurrentSessionId(sessionId: string | null): void {\n currentSessionId = sessionId\n}\n\nfunction getCurrentSessionId(): string | null {\n return currentSessionId\n}\n\nfunction clearAllSessionStates(): void {\n sessionStateStore.clear()\n currentSessionId = null\n}\n\nfunction setSessionState<K extends keyof SessionState>(\n key: K,\n value: SessionState[K],\n): void\nfunction setSessionState(partialState: Partial<SessionState>): void\nfunction setSessionState(\n keyOrState: keyof SessionState | Partial<SessionState>,\n value?: any,\n): void {\n const active = getActiveSessionState()\n if (!active) return\n if (typeof keyOrState === 'string') {\n active[keyOrState] = value\n } else {\n Object.assign(active, keyOrState)\n }\n}\n\nfunction getSessionState(): SessionState\nfunction getSessionState<K extends keyof SessionState>(key: K): SessionState[K]\nfunction getSessionState<K extends keyof SessionState>(key?: K) {\n const active = getActiveSessionState()\n if (active) return key === undefined ? active : active[key]\n if (key === undefined) return createSessionStateBase() as SessionState\n if (key === 'modelErrors') return {} as SessionState[K]\n if (key === 'currentError') return null as SessionState[K]\n return undefined as SessionState[K]\n}\n\nexport type { SessionState, SessionStateBase, SessionCoreStateShape }\nexport {\n setSessionState,\n getSessionState,\n createSessionStateBase,\n createSessionCoreState,\n ensureSessionState,\n setCurrentSessionId,\n getCurrentSessionId,\n clearAllSessionStates,\n}\n"],
5
- "mappings": ";;;;AAwBA,IAAM,UACJ,QAAQ,KAAK,SAAS,SAAS,KAC/B,QAAQ,KAAK,SAAS,IAAI,KAC1B,QAAQ,IAAI,UAAU;AAExB,SAAS,uBACP,WACkB;AAClB,SAAO;AAAA,IACL,aAAa,CAAC;AAAA,IACd,cAAc;AAAA,IACd,GAAI,aAAa,CAAC;AAAA,EACpB;AACF;AAmCA,IAAM,oBAAoB,oBAAI,IAA0B;AACxD,IAAI,mBAAkC;AAEtC,SAAS,wBAAwB,WAAkC;AACjE,SAAO;AAAA,IACL;AAAA,IACA,GAAG,uBAAuB;AAAA,EAC5B;AACF;AAEA,SAAS,wBAAkD;AACzD,MAAI,CAAC,iBAAkB,QAAO;AAC9B,SACE,kBAAkB,IAAI,gBAAgB,KACtC,mBAAmB,gBAAgB;AAEvC;AAEA,SAAS,mBACP,WACA,SACc;AACd,QAAM,WAAW,kBAAkB,IAAI,SAAS;AAChD,MAAI,UAAU;AACZ,QAAI,QAAS,QAAO,OAAO,UAAU,OAAO;AAC5C,WAAO;AAAA,EACT;AACA,QAAM,UAAwB;AAAA,IAC5B,GAAG,wBAAwB,SAAS;AAAA,IACpC,GAAI,WAAW,CAAC;AAAA,EAClB;AACA,oBAAkB,IAAI,WAAW,OAAO;AACxC,SAAO;AACT;AAEA,SAAS,oBAAoB,WAAgC;AAC3D,qBAAmB;AACrB;AAEA,SAAS,sBAAqC;AAC5C,SAAO;AACT;AAYA,SAAS,gBACP,YACA,OACM;AACN,QAAM,SAAS,sBAAsB;AACrC,MAAI,CAAC,OAAQ;AACb,MAAI,OAAO,eAAe,UAAU;AAClC,WAAO,UAAU,IAAI;AAAA,EACvB,OAAO;AACL,WAAO,OAAO,QAAQ,UAAU;AAAA,EAClC;AACF;AAIA,SAAS,gBAA8C,KAAS;AAC9D,QAAM,SAAS,sBAAsB;AACrC,MAAI,OAAQ,QAAO,QAAQ,SAAY,SAAS,OAAO,GAAG;AAC1D,MAAI,QAAQ,OAAW,QAAO,uBAAuB;AACrD,MAAI,QAAQ,cAAe,QAAO,CAAC;AACnC,MAAI,QAAQ,eAAgB,QAAO;AACnC,SAAO;AACT;",
6
- "names": []
7
- }