@ken-jo/agent-connector 0.4.75 → 0.4.91

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 (192) hide show
  1. package/README.md +3 -3
  2. package/dist/{action-TCKBTTZX.js → action-L44DXFHT.js} +14 -14
  3. package/dist/{amazon-q-CB4XFX7T.js → amazon-q-B52EY2SV.js} +5 -5
  4. package/dist/{amp-6Q5OYHNW.js → amp-UXABVUKC.js} +5 -5
  5. package/dist/{antigravity-WIK3XBN5.js → antigravity-RZHN53VB.js} +6 -6
  6. package/dist/antigravity-cli-JO6GUTV7.js +436 -0
  7. package/dist/antigravity-cli-JO6GUTV7.js.map +1 -0
  8. package/dist/{chunk-Q5LECKZL.js → chunk-25CPWJA7.js} +116 -36
  9. package/dist/chunk-25CPWJA7.js.map +1 -0
  10. package/dist/{chunk-D6ZJS4ND.js → chunk-4FWETID5.js} +2 -2
  11. package/dist/{chunk-Q42SEI7W.js → chunk-4HVQ7IUM.js} +3 -3
  12. package/dist/{chunk-IU42THN7.js → chunk-4NSU3KWX.js} +2 -2
  13. package/dist/{chunk-7CZKXXBD.js → chunk-56R2ER7K.js} +2 -2
  14. package/dist/{chunk-HKM3HUOK.js → chunk-7HUUINPB.js} +18 -18
  15. package/dist/{chunk-TZ5KGCE2.js → chunk-AY3RGRTT.js} +2 -2
  16. package/dist/{chunk-MHDQWZ4A.js → chunk-BLTVZACS.js} +23 -13
  17. package/dist/chunk-BLTVZACS.js.map +1 -0
  18. package/dist/{chunk-7ITLLYWB.js → chunk-G4CEELKO.js} +5 -5
  19. package/dist/{chunk-TO57WYBB.js → chunk-HORHRHNG.js} +9 -3
  20. package/dist/chunk-HORHRHNG.js.map +1 -0
  21. package/dist/{chunk-2HCJV6UO.js → chunk-IXOQDZWC.js} +9 -2
  22. package/dist/chunk-IXOQDZWC.js.map +1 -0
  23. package/dist/{chunk-2L6LTQ6L.js → chunk-KIRCPLM4.js} +21 -10
  24. package/dist/chunk-KIRCPLM4.js.map +1 -0
  25. package/dist/{chunk-24K6JOKV.js → chunk-LAIITCMW.js} +8 -8
  26. package/dist/{chunk-OEQJGBBW.js → chunk-LF76VPGQ.js} +9 -9
  27. package/dist/{chunk-7QRUZAUG.js → chunk-LN76OGNR.js} +2 -2
  28. package/dist/{chunk-DI6OWKH2.js → chunk-NBUEL74R.js} +3 -3
  29. package/dist/{chunk-IRUYJD23.js → chunk-NLE2J5P4.js} +1 -1
  30. package/dist/{chunk-5LAFKXFM.js → chunk-NWLRJNXM.js} +3 -3
  31. package/dist/{chunk-ECSRTK4M.js → chunk-QARPXSIV.js} +4 -4
  32. package/dist/{chunk-AXAHW2KU.js → chunk-QKLJU4JX.js} +2 -2
  33. package/dist/{chunk-MDZG5QHB.js → chunk-R6LML2YS.js} +2 -2
  34. package/dist/{chunk-FUXUEXDP.js → chunk-UBB7T54N.js} +3 -3
  35. package/dist/{chunk-NUGMVVV2.js → chunk-VVFDU4IX.js} +4 -4
  36. package/dist/{chunk-ALVXORZM.js → chunk-YYNXIUR2.js} +2 -2
  37. package/dist/{chunk-TW4DVR4V.js → chunk-ZMLVR4J7.js} +7 -2
  38. package/dist/chunk-ZMLVR4J7.js.map +1 -0
  39. package/dist/{claude-code-HFBAAVWS.js → claude-code-WS4NAGZT.js} +9 -9
  40. package/dist/cli/sdk.js +7 -7
  41. package/dist/cli.js +1 -1
  42. package/dist/{cline-26W4FEZ6.js → cline-NNMVCECA.js} +5 -5
  43. package/dist/codebuddy-RBEZGXBG.js +643 -0
  44. package/dist/codebuddy-RBEZGXBG.js.map +1 -0
  45. package/dist/{codebuff-J5KEEBIL.js → codebuff-RJIDSEU3.js} +5 -5
  46. package/dist/{codex-JKQ6TLRI.js → codex-ZZ434GYR.js} +8 -8
  47. package/dist/{continue-KQSJUSWX.js → continue-MNM7YVJY.js} +6 -6
  48. package/dist/{copilot-cli-YBNKLYUB.js → copilot-cli-SMTX5F65.js} +5 -5
  49. package/dist/{crush-JTWTZIPB.js → crush-NYDBHIJE.js} +5 -5
  50. package/dist/{cursor-2NIZSDZ4.js → cursor-AOELDNZU.js} +6 -6
  51. package/dist/{detect-CWEIQCRC.js → detect-3S46RUMK.js} +4 -4
  52. package/dist/devin-PRJY2TTD.js +510 -0
  53. package/dist/devin-PRJY2TTD.js.map +1 -0
  54. package/dist/{doctor-AC437ZAW.js → doctor-3CUBPQKU.js} +22 -22
  55. package/dist/{droid-HF2AIFB2.js → droid-PTCH2K7Y.js} +5 -5
  56. package/dist/{gemini-cli-2EOK26S2.js → gemini-cli-QGLN2UMS.js} +5 -5
  57. package/dist/{goose-55JOTXS5.js → goose-DQ6GSZ5O.js} +6 -6
  58. package/dist/grok-cli-5QD235UB.js +482 -0
  59. package/dist/grok-cli-5QD235UB.js.map +1 -0
  60. package/dist/{hermes-QVZOZU4B.js → hermes-E47IG63A.js} +6 -6
  61. package/dist/{hook-VYD3OCLM.js → hook-P6EKDINW.js} +14 -14
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.js +5 -5
  64. package/dist/{install-S6BYIJ62.js → install-7DMK53SB.js} +18 -18
  65. package/dist/{introspect-5o5ick0_.d.ts → introspect-DYOIX8Ov.d.ts} +1 -1
  66. package/dist/{jetbrains-copilot-DZ2ATXFN.js → jetbrains-copilot-T2EPKROP.js} +13 -7
  67. package/dist/jetbrains-copilot-T2EPKROP.js.map +1 -0
  68. package/dist/junie-SQ4SDLGK.js +227 -0
  69. package/dist/junie-SQ4SDLGK.js.map +1 -0
  70. package/dist/{kilo-GJNSBWVV.js → kilo-OU2ZLZKB.js} +8 -8
  71. package/dist/{kilo-cli-2CCB3DBI.js → kilo-cli-NMWGYF4F.js} +8 -8
  72. package/dist/{kimi-YRPCSB6N.js → kimi-Z7L2LEEI.js} +5 -5
  73. package/dist/{kiro-BUOQFASX.js → kiro-4IN5IH46.js} +81 -6
  74. package/dist/kiro-4IN5IH46.js.map +1 -0
  75. package/dist/{leaderboard-SUSUDKHR.js → leaderboard-LF5SP6X2.js} +7 -7
  76. package/dist/{mimo-code-V4FP5PUJ.js → mimo-code-G2CBZ4M6.js} +5 -5
  77. package/dist/mistral-vibe-TRQDHAWV.js +300 -0
  78. package/dist/mistral-vibe-TRQDHAWV.js.map +1 -0
  79. package/dist/{mux-CMJSM42O.js → mux-JNM3F2NW.js} +5 -5
  80. package/dist/{nemoclaw-VP56PGKC.js → nemoclaw-SHA4IUML.js} +6 -6
  81. package/dist/{omp-OOFGD3GG.js → omp-OOVUNXME.js} +5 -5
  82. package/dist/open-interpreter-4PKL56AA.js +264 -0
  83. package/dist/open-interpreter-4PKL56AA.js.map +1 -0
  84. package/dist/openclaw-BD56E5MV.js +17 -0
  85. package/dist/{opencode-MKLHSQRD.js → opencode-W2RK4M7G.js} +5 -5
  86. package/dist/openhands-5LNH3BKB.js +384 -0
  87. package/dist/openhands-5LNH3BKB.js.map +1 -0
  88. package/dist/{package-KOAAVKHH.js → package-2EAIYSJ4.js} +13 -13
  89. package/dist/{pi-NMVL7OFL.js → pi-BUADR5MJ.js} +143 -6
  90. package/dist/pi-BUADR5MJ.js.map +1 -0
  91. package/dist/{qwen-code-2XE2T6F4.js → qwen-code-TUJNHKNI.js} +9 -9
  92. package/dist/{roo-code-YJOIKCCS.js → roo-code-L5F7S6QH.js} +5 -5
  93. package/dist/runtime/index.d.ts +12 -1
  94. package/dist/runtime/index.js +12 -12
  95. package/dist/sdk/index.d.ts +3 -3
  96. package/dist/sdk/index.js +6 -6
  97. package/dist/sdk/test.d.ts +2 -2
  98. package/dist/sdk/test.js +10 -10
  99. package/dist/{serve-BU23QUSJ.js → serve-K62FW3V7.js} +24 -17
  100. package/dist/serve-K62FW3V7.js.map +1 -0
  101. package/dist/{status-N5LCQQ3R.js → status-E5MCFZM6.js} +11 -11
  102. package/dist/{statusline-442XOF7R.js → statusline-LIPF2KVP.js} +13 -13
  103. package/dist/{telemetry-V4YQL2NU.js → telemetry-4OC56NTM.js} +10 -10
  104. package/dist/{trae-QSV2JZFT.js → trae-Z7CQ2A2Q.js} +5 -5
  105. package/dist/{types-D6RWGXm1.d.ts → types-C4qMgbJn.d.ts} +10 -9
  106. package/dist/{uninstall-WGEKTCDZ.js → uninstall-2YYKN5DX.js} +18 -18
  107. package/dist/{upgrade-IH7CKPTO.js → upgrade-55AFPJEF.js} +18 -18
  108. package/dist/{usage-DI7XRCKM.js → usage-3PB3WZSL.js} +3 -3
  109. package/dist/{usage-event-2FCU55AN.js → usage-event-KD5FW6W4.js} +13 -13
  110. package/dist/{vscode-copilot-R23RTVST.js → vscode-copilot-LU5NC4ZS.js} +5 -5
  111. package/dist/{warp-B72XSQ5G.js → warp-4PPG5LOM.js} +5 -5
  112. package/dist/{windsurf-642VBMQ2.js → windsurf-3T3RVXKM.js} +5 -5
  113. package/dist/{zed-6UJS7JKB.js → zed-ZF2OQ75O.js} +123 -7
  114. package/dist/zed-ZF2OQ75O.js.map +1 -0
  115. package/package.json +1 -1
  116. package/dist/antigravity-cli-L3RZMF6V.js +0 -87
  117. package/dist/antigravity-cli-L3RZMF6V.js.map +0 -1
  118. package/dist/chunk-2HCJV6UO.js.map +0 -1
  119. package/dist/chunk-2L6LTQ6L.js.map +0 -1
  120. package/dist/chunk-MHDQWZ4A.js.map +0 -1
  121. package/dist/chunk-Q5LECKZL.js.map +0 -1
  122. package/dist/chunk-TO57WYBB.js.map +0 -1
  123. package/dist/chunk-TW4DVR4V.js.map +0 -1
  124. package/dist/jetbrains-copilot-DZ2ATXFN.js.map +0 -1
  125. package/dist/kiro-BUOQFASX.js.map +0 -1
  126. package/dist/openclaw-V73XHPXP.js +0 -17
  127. package/dist/pi-NMVL7OFL.js.map +0 -1
  128. package/dist/serve-BU23QUSJ.js.map +0 -1
  129. package/dist/zed-6UJS7JKB.js.map +0 -1
  130. /package/dist/{action-TCKBTTZX.js.map → action-L44DXFHT.js.map} +0 -0
  131. /package/dist/{amazon-q-CB4XFX7T.js.map → amazon-q-B52EY2SV.js.map} +0 -0
  132. /package/dist/{amp-6Q5OYHNW.js.map → amp-UXABVUKC.js.map} +0 -0
  133. /package/dist/{antigravity-WIK3XBN5.js.map → antigravity-RZHN53VB.js.map} +0 -0
  134. /package/dist/{chunk-D6ZJS4ND.js.map → chunk-4FWETID5.js.map} +0 -0
  135. /package/dist/{chunk-Q42SEI7W.js.map → chunk-4HVQ7IUM.js.map} +0 -0
  136. /package/dist/{chunk-IU42THN7.js.map → chunk-4NSU3KWX.js.map} +0 -0
  137. /package/dist/{chunk-7CZKXXBD.js.map → chunk-56R2ER7K.js.map} +0 -0
  138. /package/dist/{chunk-HKM3HUOK.js.map → chunk-7HUUINPB.js.map} +0 -0
  139. /package/dist/{chunk-TZ5KGCE2.js.map → chunk-AY3RGRTT.js.map} +0 -0
  140. /package/dist/{chunk-7ITLLYWB.js.map → chunk-G4CEELKO.js.map} +0 -0
  141. /package/dist/{chunk-24K6JOKV.js.map → chunk-LAIITCMW.js.map} +0 -0
  142. /package/dist/{chunk-OEQJGBBW.js.map → chunk-LF76VPGQ.js.map} +0 -0
  143. /package/dist/{chunk-7QRUZAUG.js.map → chunk-LN76OGNR.js.map} +0 -0
  144. /package/dist/{chunk-DI6OWKH2.js.map → chunk-NBUEL74R.js.map} +0 -0
  145. /package/dist/{chunk-IRUYJD23.js.map → chunk-NLE2J5P4.js.map} +0 -0
  146. /package/dist/{chunk-5LAFKXFM.js.map → chunk-NWLRJNXM.js.map} +0 -0
  147. /package/dist/{chunk-ECSRTK4M.js.map → chunk-QARPXSIV.js.map} +0 -0
  148. /package/dist/{chunk-AXAHW2KU.js.map → chunk-QKLJU4JX.js.map} +0 -0
  149. /package/dist/{chunk-MDZG5QHB.js.map → chunk-R6LML2YS.js.map} +0 -0
  150. /package/dist/{chunk-FUXUEXDP.js.map → chunk-UBB7T54N.js.map} +0 -0
  151. /package/dist/{chunk-NUGMVVV2.js.map → chunk-VVFDU4IX.js.map} +0 -0
  152. /package/dist/{chunk-ALVXORZM.js.map → chunk-YYNXIUR2.js.map} +0 -0
  153. /package/dist/{claude-code-HFBAAVWS.js.map → claude-code-WS4NAGZT.js.map} +0 -0
  154. /package/dist/{cline-26W4FEZ6.js.map → cline-NNMVCECA.js.map} +0 -0
  155. /package/dist/{codebuff-J5KEEBIL.js.map → codebuff-RJIDSEU3.js.map} +0 -0
  156. /package/dist/{codex-JKQ6TLRI.js.map → codex-ZZ434GYR.js.map} +0 -0
  157. /package/dist/{continue-KQSJUSWX.js.map → continue-MNM7YVJY.js.map} +0 -0
  158. /package/dist/{copilot-cli-YBNKLYUB.js.map → copilot-cli-SMTX5F65.js.map} +0 -0
  159. /package/dist/{crush-JTWTZIPB.js.map → crush-NYDBHIJE.js.map} +0 -0
  160. /package/dist/{cursor-2NIZSDZ4.js.map → cursor-AOELDNZU.js.map} +0 -0
  161. /package/dist/{detect-CWEIQCRC.js.map → detect-3S46RUMK.js.map} +0 -0
  162. /package/dist/{doctor-AC437ZAW.js.map → doctor-3CUBPQKU.js.map} +0 -0
  163. /package/dist/{droid-HF2AIFB2.js.map → droid-PTCH2K7Y.js.map} +0 -0
  164. /package/dist/{gemini-cli-2EOK26S2.js.map → gemini-cli-QGLN2UMS.js.map} +0 -0
  165. /package/dist/{goose-55JOTXS5.js.map → goose-DQ6GSZ5O.js.map} +0 -0
  166. /package/dist/{hermes-QVZOZU4B.js.map → hermes-E47IG63A.js.map} +0 -0
  167. /package/dist/{hook-VYD3OCLM.js.map → hook-P6EKDINW.js.map} +0 -0
  168. /package/dist/{install-S6BYIJ62.js.map → install-7DMK53SB.js.map} +0 -0
  169. /package/dist/{kilo-GJNSBWVV.js.map → kilo-OU2ZLZKB.js.map} +0 -0
  170. /package/dist/{kilo-cli-2CCB3DBI.js.map → kilo-cli-NMWGYF4F.js.map} +0 -0
  171. /package/dist/{kimi-YRPCSB6N.js.map → kimi-Z7L2LEEI.js.map} +0 -0
  172. /package/dist/{leaderboard-SUSUDKHR.js.map → leaderboard-LF5SP6X2.js.map} +0 -0
  173. /package/dist/{mimo-code-V4FP5PUJ.js.map → mimo-code-G2CBZ4M6.js.map} +0 -0
  174. /package/dist/{mux-CMJSM42O.js.map → mux-JNM3F2NW.js.map} +0 -0
  175. /package/dist/{nemoclaw-VP56PGKC.js.map → nemoclaw-SHA4IUML.js.map} +0 -0
  176. /package/dist/{omp-OOFGD3GG.js.map → omp-OOVUNXME.js.map} +0 -0
  177. /package/dist/{openclaw-V73XHPXP.js.map → openclaw-BD56E5MV.js.map} +0 -0
  178. /package/dist/{opencode-MKLHSQRD.js.map → opencode-W2RK4M7G.js.map} +0 -0
  179. /package/dist/{package-KOAAVKHH.js.map → package-2EAIYSJ4.js.map} +0 -0
  180. /package/dist/{qwen-code-2XE2T6F4.js.map → qwen-code-TUJNHKNI.js.map} +0 -0
  181. /package/dist/{roo-code-YJOIKCCS.js.map → roo-code-L5F7S6QH.js.map} +0 -0
  182. /package/dist/{status-N5LCQQ3R.js.map → status-E5MCFZM6.js.map} +0 -0
  183. /package/dist/{statusline-442XOF7R.js.map → statusline-LIPF2KVP.js.map} +0 -0
  184. /package/dist/{telemetry-V4YQL2NU.js.map → telemetry-4OC56NTM.js.map} +0 -0
  185. /package/dist/{trae-QSV2JZFT.js.map → trae-Z7CQ2A2Q.js.map} +0 -0
  186. /package/dist/{uninstall-WGEKTCDZ.js.map → uninstall-2YYKN5DX.js.map} +0 -0
  187. /package/dist/{upgrade-IH7CKPTO.js.map → upgrade-55AFPJEF.js.map} +0 -0
  188. /package/dist/{usage-DI7XRCKM.js.map → usage-3PB3WZSL.js.map} +0 -0
  189. /package/dist/{usage-event-2FCU55AN.js.map → usage-event-KD5FW6W4.js.map} +0 -0
  190. /package/dist/{vscode-copilot-R23RTVST.js.map → vscode-copilot-LU5NC4ZS.js.map} +0 -0
  191. /package/dist/{warp-B72XSQ5G.js.map → warp-4PPG5LOM.js.map} +0 -0
  192. /package/dist/{windsurf-642VBMQ2.js.map → windsurf-3T3RVXKM.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/codebuddy/index.ts"],"sourcesContent":["/**\n * adapters/codebuddy — Tencent CodeBuddy Code platform adapter for agent-connector.\n *\n * CodeBuddy Code (`@tencent-ai/codebuddy-code`, bin `codebuddy`) is Tencent's\n * terminal AI assistant and a CLOSE Claude Code fork: same json-stdio hook\n * paradigm, same hook event names, same snake_case stdin fields, and the same\n * `hookSpecificOutput` reply envelope — so it reuses claude-code's wire module\n * (parseEvent/formatReply contract) verbatim. The fork rebrands every storage\n * path from `.claude*` to `.codebuddy*`:\n * - MCP servers: user scope → `~/.codebuddy.json` (\"mcpServers\"); project\n * scope → `<projectDir>/.mcp.json` (\"mcpServers\").\n * - Hooks: `<configDir>/settings.json` under \"hooks\", keyed by event name,\n * each value an array of { matcher, hooks:[{ type:\"command\", command }] }.\n * - Config dir: `~/.codebuddy` (override `$CODEBUDDY_CONFIG_DIR`); project\n * `<projectDir>/.codebuddy`. Content surfaces live under\n * `<configDir>/{commands,skills,agents}`.\n * - Memory: `CODEBUDDY.md` (the fork renames CLAUDE.md; it does NOT read\n * AGENTS.md by default — verified against the v2.109.0 bundle, which lists\n * `.codebuddy/settings*.json`, `CODEBUDDY.md`, `CODEBUDDY.local.md`,\n * `.codebuddy.json`, `.codebuddy/rules/`, `.codebuddy/hooks`).\n * - Reply: a `hookSpecificOutput` object (permissionDecision allow|deny|ask +\n * reason, additionalContext, updatedInput) on stdout with exit 0; Stop-class\n * blocks use the top-level {\"decision\":\"block\",\"reason\"} — identical to\n * Claude Code.\n *\n * Every fact above is BYTE-CONFIRMED against the official npm bundle\n * `@tencent-ai/codebuddy-code@2.109.0` (dist/codebuddy.js): bin `codebuddy`,\n * `.codebuddy.json`/`.mcp.json` + root key `mcpServers`, `.codebuddy/settings.json`\n * hooks, the 13 Claude hook event names, the snake_case stdin fields, and the\n * `hookSpecificOutput`/`permissionDecision` reply shape. CodeBuddy needs Tencent\n * auth, so this is NOT live-verifiable locally — placement + byte-oracle ceiling.\n *\n * SCOPE: the byte-confirmed core surfaces (MCP stdio+http, the 13 normalized\n * hooks + nativeHooks passthrough, commands/skills/subagents, CODEBUDDY.md\n * memory). The claude-code-v1-only surfaces (configPatch sensitive-key denylist,\n * statusLine wiring, the agents-import bridge) are NOT ported — their CodeBuddy\n * behavior is not byte-confirmed, and the instruction is to enable only\n * byte-confirmed flags.\n */\n\nimport { existsSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport { BaseAdapter, type HookMergeDescriptor } from \"../base.js\";\nimport type { Adapter, HookReply, InstallContext, MemoryTarget, NormalizedEvent } from \"../spi.js\";\nimport type {\n ChangeRecord,\n CommandDef,\n DetectedPlatform,\n HealthCheck,\n HookEventName,\n HookParadigm,\n HookResponse,\n NotificationEvent,\n PermissionRequestEvent,\n PlatformCapabilities,\n PlatformId,\n PostCompactEvent,\n PostToolUseEvent,\n PostToolUseFailureEvent,\n PreCompactEvent,\n PreToolUseEvent,\n SessionEndEvent,\n SessionStartEvent,\n ServerDef,\n SkillDef,\n StopEvent,\n SubagentDef,\n SubagentStartEvent,\n SubagentStopEvent,\n Transport,\n UserPromptSubmitEvent,\n} from \"../../core/types.js\";\nimport { resolveEnvRefsDeep, rewriteEnvRefs } from \"../../core/interpolate.js\";\nimport { buildWrappedStdio, isHomeBinHookCommand } from \"../../core/spawn.js\";\nimport {\n type ClaudeHookEvent,\n type ClaudeWireInput,\n extractSessionId,\n normalizeSessionSource,\n toolResponseToString,\n} from \"../claude-code/wire.js\";\nimport { renderCommandMd, renderSkillMd, renderSubagentMd } from \"../claude-code/render.js\";\n\nconst HOST: PlatformId = \"codebuddy\";\nconst MCP_ROOT_KEY = \"mcpServers\";\n\n/** The config-dir env override CodeBuddy honors (verified in the bundle). */\nconst CONFIG_DIR_ENV = \"CODEBUDDY_CONFIG_DIR\";\n\n/** A single hook registration entry as CodeBuddy stores it in settings.json. */\ninterface CodeBuddyHookEntry {\n matcher: string;\n hooks: Array<{ type: \"command\"; command: string }>;\n}\n\n/** Native MCP server entry shapes CodeBuddy accepts under `mcpServers`. */\ninterface CodeBuddyStdioServer {\n type: \"stdio\";\n command: string;\n args: string[];\n env?: Record<string, string>;\n cwd?: string;\n}\ninterface CodeBuddyHttpServer {\n type: \"http\";\n url: string;\n headers?: Record<string, string>;\n}\n\nexport class CodeBuddyAdapter extends BaseAdapter implements Adapter {\n readonly id: PlatformId = HOST;\n readonly name = \"CodeBuddy\";\n readonly paradigm: HookParadigm = \"json-stdio\";\n\n readonly capabilities: PlatformCapabilities = {\n // CodeBuddy ships the full Claude hook set (bundle-confirmed event names).\n preToolUse: true,\n postToolUse: true,\n preCompact: true,\n sessionStart: true,\n sessionEnd: true,\n userPromptSubmit: true,\n stop: true,\n notification: true,\n permissionRequest: true,\n postToolUseFailure: true,\n subagentStart: true,\n subagentStop: true,\n // Claude-fork reply envelope: PreToolUse can rewrite input (updatedInput);\n // a PostToolUse hook cannot rewrite already-emitted output.\n canModifyArgs: true,\n canModifyOutput: false,\n canInjectSessionContext: true,\n // settings.json hook keys are free-form event names, so any host event\n // declared under platforms[\"codebuddy\"].nativeHooks installs verbatim.\n supportsNativeHooks: true,\n transports: [\"stdio\", \"http\"],\n // CodeBuddy preserves Claude's native ${VAR} interpolation in mcpServers\n // env/url, so secret-bearing fields survive into the config (never baked).\n nativeServerEnvInterpolation: true,\n // Content surfaces under <configDir>/{commands,skills,agents}.\n supportsCommands: true,\n supportsSkills: true,\n supportsSubagents: true,\n // Memory surface — EXCEPTION host: CodeBuddy reads CODEBUDDY.md (the fork's\n // CLAUDE.md rename), NOT AGENTS.md, so memoryTargets below overrides the base\n // AGENTS.md-first default.\n supportsMemory: true,\n };\n\n // ── Detection ────────────────────────────────────────────────────────────\n\n detectInstalled(projectDir: string): DetectedPlatform {\n const userDir = this.userConfigDir();\n const userSettings = join(userDir, \"settings.json\");\n const userServers = join(homedir(), \".codebuddy.json\");\n const projectServers = join(projectDir, \".mcp.json\");\n const userInstalled =\n existsSync(userDir) || existsSync(userSettings) || existsSync(userServers);\n const projInstalled = existsSync(projectServers);\n const installed = userInstalled || projInstalled;\n const scope = projInstalled && !userInstalled ? \"project\" : \"user\";\n const configPath = scope === \"project\" ? projectServers : userSettings;\n return {\n id: this.id,\n name: this.name,\n installed,\n paradigm: this.paradigm,\n capabilities: this.capabilities,\n configPath,\n scope,\n reason: installed\n ? scope === \"project\"\n ? `found project CodeBuddy config at ${projectServers}`\n : `found CodeBuddy config under ${userDir}`\n : `no CodeBuddy config at ${userDir}`,\n confidence: installed ? \"high\" : \"low\",\n };\n }\n\n // ── Native paths ─────────────────────────────────────────────────────────\n\n /** User config dir: `$CODEBUDDY_CONFIG_DIR` || `~/.codebuddy`. */\n private userConfigDir(): string {\n const override = process.env[CONFIG_DIR_ENV];\n return override && override.trim() !== \"\" ? override : join(homedir(), \".codebuddy\");\n }\n\n getConfigDir(ctx: InstallContext): string {\n return ctx.scope === \"project\"\n ? join(ctx.projectDir, \".codebuddy\")\n : this.userConfigDir();\n }\n\n getServerConfigPath(ctx: InstallContext): string {\n return ctx.scope === \"project\"\n ? join(ctx.projectDir, \".mcp.json\")\n : join(homedir(), \".codebuddy.json\");\n }\n\n getHookConfigPath(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"settings.json\");\n }\n\n // ── MCP server install / uninstall ───────────────────────────────────────\n\n installServer(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n const override = connector.platforms[HOST]?.server;\n if (!connector.server || override === false) {\n return [\n {\n platform: this.id,\n action: \"skip\",\n detail: connector.server\n ? \"server registration disabled for codebuddy\"\n : \"connector declares no MCP server\",\n },\n ];\n }\n\n const server: ServerDef =\n override && typeof override === \"object\"\n ? { ...connector.server, ...override }\n : connector.server;\n\n const serverPath = this.getServerConfigPath(ctx);\n const entry = this.renderServerEntry(ctx, server);\n\n return [\n this.upsertServerInJson(serverPath, MCP_ROOT_KEY, connector.id, entry, ctx.dryRun),\n ];\n }\n\n uninstallServer(ctx: InstallContext): ChangeRecord[] {\n const serverPath = this.getServerConfigPath(ctx);\n return [\n this.removeServerFromJson(serverPath, MCP_ROOT_KEY, ctx.connector.id, ctx.dryRun),\n ];\n }\n\n /** Render a normalized ServerDef into CodeBuddy's native mcpServers entry. */\n private renderServerEntry(\n ctx: InstallContext,\n server: ServerDef,\n ): CodeBuddyStdioServer | CodeBuddyHttpServer {\n const transport: Transport = server.transport;\n\n if (transport === \"stdio\") {\n let command = server.command ?? \"\";\n let args = [...(server.args ?? [])];\n\n // Transparent telemetry wrapping: route the real command through\n // `<homeBin> serve --connector <id> -- <command> <args...>`.\n ({ command, args } = buildWrappedStdio(ctx, server, this.id, command, args));\n\n const entry: CodeBuddyStdioServer = { type: \"stdio\", command, args };\n const env = this.renderEnv(server.env);\n if (env) entry.env = env;\n if (server.cwd) entry.cwd = resolveEnvRefsDeep(server.cwd);\n return entry;\n }\n\n // http (and any other remote transport we surface) — register a URL.\n const entry: CodeBuddyHttpServer = {\n type: \"http\",\n url: rewriteEnvRefs(server.url ?? \"\", codebuddyEnvToken),\n };\n if (server.headers) {\n entry.headers = this.renderEnv(server.headers) ?? {};\n }\n return entry;\n }\n\n /**\n * Render env/header values using CodeBuddy's native `${VAR}` interpolation\n * (inherited from Claude Code), so `${env:VAR}` refs survive into the config\n * rather than baking a secret. Literals pass through unchanged.\n */\n private renderEnv(\n env: Record<string, string> | undefined,\n ): Record<string, string> | undefined {\n if (!env || Object.keys(env).length === 0) return undefined;\n const out: Record<string, string> = {};\n for (const [k, v] of Object.entries(env)) {\n out[k] = rewriteEnvRefs(v, codebuddyEnvToken);\n }\n return out;\n }\n\n // ── Hook install / uninstall ─────────────────────────────────────────────\n\n installHooks(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n const override = connector.platforms[HOST];\n\n // `hooks: false` disables only the NORMALIZED hooks; nativeHooks is a\n // sibling declaration that installs regardless.\n const normalizedEvents = override?.hooks === false ? [] : connector.hookEvents;\n const nativeHooks = override?.nativeHooks ?? {};\n const nativeEvents = Object.keys(nativeHooks);\n\n if (normalizedEvents.length === 0 && nativeEvents.length === 0) {\n return [\n {\n platform: this.id,\n action: \"skip\",\n detail:\n override?.hooks === false\n ? \"hooks disabled for codebuddy\"\n : \"connector declares no hooks\",\n },\n ];\n }\n\n const settingsPath = this.getHookConfigPath(ctx);\n\n const pending: Array<{ event: string; matcher: string }> = [\n ...normalizedEvents.map((event) => ({\n event: event as string,\n matcher: connector.hooks[event]?.matcher ?? \"\",\n })),\n ...nativeEvents.map((event) => ({\n event,\n matcher: nativeHooks[event]?.matcher ?? \"\",\n })),\n ];\n\n return this.upsertHookEntries(ctx, settingsPath, pending, this.hookDescriptor());\n }\n\n uninstallHooks(ctx: InstallContext): ChangeRecord[] {\n return this.removeHookEntries(ctx, this.getHookConfigPath(ctx), this.hookDescriptor());\n }\n\n /**\n * CodeBuddy's hook-merge descriptor — the Claude NESTED shape\n * `{ matcher, hooks: [...] }`: install find = THIS command present in the\n * entry's inner `hooks`; uninstall is inner-strip only (drop entries left\n * empty); never remove a whole entry by ownership.\n */\n private hookDescriptor(): HookMergeDescriptor<CodeBuddyHookEntry> {\n return {\n renderEntry: (_event, matcher, command) => ({\n matcher,\n hooks: [{ type: \"command\", command }],\n }),\n entryOwnsCommand: (entry, command) =>\n (entry.hooks ?? []).some((h) => h.command === command),\n ownsEntryForRemove: () => () => false,\n stripInner: (ctx) => (entry) => {\n const innerBefore = entry.hooks?.length ?? 0;\n const inner = (entry.hooks ?? []).filter((h) => !this.isOurCommand(h.command, ctx));\n return {\n next: inner.length > 0 ? { matcher: entry.matcher ?? \"\", hooks: inner } : null,\n removed: innerBefore - inner.length,\n };\n },\n skipDetail: (event) => `hooks.${event} already registered`,\n removeDetail: (event, removed) => `hooks.${event} (${removed})`,\n absentDetail: \"no hooks section present\",\n noMatchDetail: \"no matching hook entries\",\n };\n }\n\n /** True when a hook command references our home binary AND this connector id. */\n private isOurCommand(command: string | undefined, ctx: InstallContext): boolean {\n return isHomeBinHookCommand(command, ctx.homeBinPath, ctx.connector.id);\n }\n\n // ── Content surfaces: commands / skills / subagents ──────────────────────\n // Pure native-file writers under <configDir>/{commands,skills,agents}, the\n // fork's confirmed surface dirs. Idempotent (byte-identical → skip) and\n // reversible. Honors platforms[\"codebuddy\"] per-surface `false` to skip.\n\n private commandsDir(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"commands\");\n }\n private skillsDir(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"skills\");\n }\n private agentsDir(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"agents\");\n }\n\n private commandPath(ctx: InstallContext, name: string): string {\n return join(this.commandsDir(ctx), `${name}.md`);\n }\n private skillDir(ctx: InstallContext, name: string): string {\n return join(this.skillsDir(ctx), name);\n }\n private subagentPath(ctx: InstallContext, name: string): string {\n return join(this.agentsDir(ctx), `${name}.md`);\n }\n\n override installCommands(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n if (connector.platforms[HOST]?.commands === false) {\n return [{ platform: this.id, action: \"skip\", detail: \"commands disabled for codebuddy\" }];\n }\n if (connector.commands.length === 0) {\n return [{ platform: this.id, action: \"skip\", detail: \"connector declares no commands\" }];\n }\n return connector.commands.map((cmd) =>\n this.writeContentFile(this.commandPath(ctx, cmd.name), this.renderCommand(cmd), ctx.dryRun),\n );\n }\n\n override uninstallCommands(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n if (connector.commands.length === 0) {\n return [{ platform: this.id, action: \"skip\", detail: \"connector declares no commands\" }];\n }\n return connector.commands.map((cmd) =>\n this.removeContentFile(this.commandPath(ctx, cmd.name), ctx.dryRun),\n );\n }\n\n private renderCommand(cmd: CommandDef): string {\n return renderCommandMd(cmd);\n }\n\n override installSkills(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n if (connector.platforms[HOST]?.skills === false) {\n return [{ platform: this.id, action: \"skip\", detail: \"skills disabled for codebuddy\" }];\n }\n if (connector.skills.length === 0) {\n return [{ platform: this.id, action: \"skip\", detail: \"connector declares no skills\" }];\n }\n const changes: ChangeRecord[] = [];\n for (const skill of connector.skills) {\n const dir = this.skillDir(ctx, skill.name);\n changes.push(\n this.writeContentFile(join(dir, \"SKILL.md\"), this.renderSkill(skill), ctx.dryRun),\n );\n for (const [rel, contents] of Object.entries(skill.resources ?? {})) {\n const target = this.resolveWithin(dir, rel);\n if (target === null) {\n changes.push({\n platform: this.id,\n action: \"warn\",\n detail: `skill resource \"${rel}\" escapes the skill dir; skipped`,\n });\n continue;\n }\n changes.push(this.writeContentFile(target, contents, ctx.dryRun));\n }\n }\n return changes;\n }\n\n override uninstallSkills(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n if (connector.skills.length === 0) {\n return [{ platform: this.id, action: \"skip\", detail: \"connector declares no skills\" }];\n }\n const changes: ChangeRecord[] = [];\n for (const skill of connector.skills) {\n const dir = this.skillDir(ctx, skill.name);\n changes.push(this.removeContentFile(join(dir, \"SKILL.md\"), ctx.dryRun));\n for (const rel of Object.keys(skill.resources ?? {})) {\n const target = this.resolveWithin(dir, rel);\n if (target === null) continue;\n changes.push(this.removeContentFile(target, ctx.dryRun));\n }\n changes.push(this.removeDirIfEmpty(dir, ctx.dryRun));\n }\n return changes;\n }\n\n private renderSkill(skill: SkillDef): string {\n return renderSkillMd(skill);\n }\n\n override installSubagents(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n if (connector.platforms[HOST]?.subagents === false) {\n return [{ platform: this.id, action: \"skip\", detail: \"subagents disabled for codebuddy\" }];\n }\n if (connector.subagents.length === 0) {\n return [{ platform: this.id, action: \"skip\", detail: \"connector declares no subagents\" }];\n }\n return connector.subagents.map((agent) =>\n this.writeContentFile(this.subagentPath(ctx, agent.name), this.renderSubagent(agent), ctx.dryRun),\n );\n }\n\n override uninstallSubagents(ctx: InstallContext): ChangeRecord[] {\n const { connector } = ctx;\n if (connector.subagents.length === 0) {\n return [{ platform: this.id, action: \"skip\", detail: \"connector declares no subagents\" }];\n }\n return connector.subagents.map((agent) =>\n this.removeContentFile(this.subagentPath(ctx, agent.name), ctx.dryRun),\n );\n }\n\n private renderSubagent(agent: SubagentDef): string {\n return renderSubagentMd(agent);\n }\n\n // ── Memory surface: CODEBUDDY.md managed block ────────────────────────────\n // EXCEPTION host. CodeBuddy reads CODEBUDDY.md (the fork's CLAUDE.md rename),\n // NOT AGENTS.md (bundle-confirmed path list), so the base AGENTS.md-first\n // default is overridden. HTML-comment markers are correct here for the same\n // reason as Claude Code (comment-stripped before context injection). Unlike\n // claude-code this adapter does NOT ship the opt-in agents-import bridge —\n // only the canonical block in the host's own memory file.\n\n private memoryFilePath(ctx: InstallContext): string {\n return ctx.scope === \"project\"\n ? join(ctx.projectDir, \"CODEBUDDY.md\")\n : join(this.userConfigDir(), \"CODEBUDDY.md\");\n }\n\n protected override memoryTargets(ctx: InstallContext): MemoryTarget[] {\n // An explicit path override keeps the base resolution (escape hatch wins).\n if (this.memoryOverride(ctx)?.path) return super.memoryTargets(ctx);\n if (ctx.scope !== \"project\" && ctx.scope !== \"user\") return [];\n return [\n {\n path: this.memoryFilePath(ctx),\n reason:\n \"CODEBUDDY.md (CodeBuddy reads CODEBUDDY.md, not AGENTS.md; \" +\n \"HTML-comment markers are stripped from the model's context)\",\n },\n ];\n }\n\n // ── Diagnostics ──────────────────────────────────────────────────────────\n\n override getHealthChecks(ctx: InstallContext): readonly HealthCheck[] {\n const settingsPath = this.getHookConfigPath(ctx);\n const connectorId = ctx.connector.id;\n const homeBin = ctx.homeBinPath;\n const declaredHookCount =\n ctx.connector.hookEvents.length +\n Object.keys(ctx.connector.platforms[HOST]?.nativeHooks ?? {}).length;\n const checks: HealthCheck[] = [\n {\n name: `${this.name}: settings.json present`,\n check: () => {\n if (declaredHookCount === 0) {\n return { status: \"OK\", detail: \"no hooks declared\" };\n }\n return existsSync(settingsPath)\n ? { status: \"OK\", detail: settingsPath }\n : { status: \"FAIL\", detail: `not found: ${settingsPath}` };\n },\n },\n {\n name: `${this.name}: hook command registered`,\n check: () => {\n if (declaredHookCount === 0) {\n return { status: \"OK\", detail: \"no hooks declared\" };\n }\n const settings = this.readJson<{ hooks?: Record<string, CodeBuddyHookEntry[]> }>(\n settingsPath,\n );\n if (!settings) return { status: \"FAIL\", detail: `cannot read ${settingsPath}` };\n const hooks = settings.hooks ?? {};\n const registered = Object.values(hooks).some((entries) =>\n (entries ?? []).some((e) =>\n (e.hooks ?? []).some((h) => isHomeBinHookCommand(h.command, homeBin, connectorId)),\n ),\n );\n return registered\n ? { status: \"OK\", detail: \"hook command present\" }\n : { status: \"FAIL\", detail: `no hook for ${connectorId} in ${settingsPath}` };\n },\n },\n ];\n\n for (const cmd of ctx.connector.commands) {\n const p = this.commandPath(ctx, cmd.name);\n checks.push({\n name: `${this.name}: command ${cmd.name} present`,\n check: () =>\n existsSync(p) ? { status: \"OK\", detail: p } : { status: \"FAIL\", detail: `not found: ${p}` },\n });\n }\n for (const skill of ctx.connector.skills) {\n const p = join(this.skillDir(ctx, skill.name), \"SKILL.md\");\n checks.push({\n name: `${this.name}: skill ${skill.name} present`,\n check: () =>\n existsSync(p) ? { status: \"OK\", detail: p } : { status: \"FAIL\", detail: `not found: ${p}` },\n });\n }\n for (const agent of ctx.connector.subagents) {\n const p = this.subagentPath(ctx, agent.name);\n checks.push({\n name: `${this.name}: subagent ${agent.name} present`,\n check: () =>\n existsSync(p) ? { status: \"OK\", detail: p } : { status: \"FAIL\", detail: `not found: ${p}` },\n });\n }\n return checks;\n }\n\n // ── Runtime: parse CodeBuddy stdin JSON → normalized event ────────────────\n // CodeBuddy's wire is the Claude shape (snake_case fields, PascalCase events),\n // so the claude-code/wire helpers (extractSessionId, toolResponseToString,\n // normalizeSessionSource) apply 1:1.\n\n parseEvent(event: HookEventName, raw: unknown): NormalizedEvent {\n const input = (raw ?? {}) as ClaudeWireInput;\n const connectorId = typeof input.connector === \"string\" ? input.connector : \"\";\n const sessionId = extractSessionId(input);\n const projectDir = typeof input.cwd === \"string\" ? input.cwd : undefined;\n\n const base = {\n hostPlatform: HOST,\n connectorId,\n sessionId,\n raw,\n ...(projectDir !== undefined ? { projectDir } : {}),\n } as const;\n\n switch (event) {\n case \"PreToolUse\": {\n const ev: PreToolUseEvent = {\n ...base,\n toolName: input.tool_name ?? \"\",\n toolInput: input.tool_input ?? {},\n };\n return ev;\n }\n case \"PostToolUse\": {\n const ev: PostToolUseEvent = {\n ...base,\n toolName: input.tool_name ?? \"\",\n toolInput: input.tool_input ?? {},\n ...(toolResponseToString(input.tool_response) !== undefined\n ? { toolOutput: toolResponseToString(input.tool_response) }\n : {}),\n };\n return ev;\n }\n case \"SessionStart\": {\n const ev: SessionStartEvent = { ...base, source: normalizeSessionSource(input.source) };\n return ev;\n }\n case \"SessionEnd\": {\n const ev: SessionEndEvent = {\n ...base,\n ...(typeof input.reason === \"string\" ? { reason: input.reason } : {}),\n };\n return ev;\n }\n case \"UserPromptSubmit\": {\n const ev: UserPromptSubmitEvent = {\n ...base,\n prompt: typeof input.prompt === \"string\" ? input.prompt : \"\",\n };\n return ev;\n }\n case \"PreCompact\": {\n const ev: PreCompactEvent = {\n ...base,\n ...(input.trigger === \"auto\" || input.trigger === \"manual\"\n ? { trigger: input.trigger }\n : {}),\n };\n return ev;\n }\n case \"Stop\": {\n const ev: StopEvent = {\n ...base,\n ...(typeof input.stop_hook_active === \"boolean\"\n ? { stopHookActive: input.stop_hook_active }\n : {}),\n };\n return ev;\n }\n case \"Notification\": {\n const ev: NotificationEvent = {\n ...base,\n message: typeof input.message === \"string\" ? input.message : \"\",\n };\n return ev;\n }\n case \"PermissionRequest\": {\n const ev: PermissionRequestEvent = {\n ...base,\n toolName: input.tool_name ?? \"\",\n toolInput: input.tool_input ?? {},\n ...(Array.isArray(input.permission_suggestions)\n ? { permissionSuggestions: input.permission_suggestions }\n : {}),\n };\n return ev;\n }\n case \"PostToolUseFailure\": {\n const ev: PostToolUseFailureEvent = {\n ...base,\n toolName: input.tool_name ?? \"\",\n toolInput: input.tool_input ?? {},\n error: typeof input.error === \"string\" ? input.error : \"\",\n ...(typeof input.tool_use_id === \"string\" ? { toolUseId: input.tool_use_id } : {}),\n ...(typeof input.is_interrupt === \"boolean\" ? { isInterrupt: input.is_interrupt } : {}),\n ...(typeof input.duration_ms === \"number\" ? { durationMs: input.duration_ms } : {}),\n };\n return ev;\n }\n case \"SubagentStart\": {\n const ev: SubagentStartEvent = {\n ...base,\n ...(typeof input.agent_id === \"string\" ? { agentId: input.agent_id } : {}),\n ...(typeof input.agent_type === \"string\" ? { agentType: input.agent_type } : {}),\n };\n return ev;\n }\n case \"SubagentStop\": {\n const ev: SubagentStopEvent = {\n ...base,\n ...(typeof input.agent_id === \"string\" ? { agentId: input.agent_id } : {}),\n ...(typeof input.agent_type === \"string\" ? { agentType: input.agent_type } : {}),\n ...(typeof input.agent_transcript_path === \"string\"\n ? { agentTranscriptPath: input.agent_transcript_path }\n : {}),\n ...(typeof input.last_assistant_message === \"string\"\n ? { lastAssistantMessage: input.last_assistant_message }\n : {}),\n ...(typeof input.stop_hook_active === \"boolean\"\n ? { stopHookActive: input.stop_hook_active }\n : {}),\n };\n return ev;\n }\n case \"PostCompact\": {\n // Not wired as a normalized lifecycle hook (capabilities.postCompact is\n // unset), but the exhaustive guard requires an arm; mirror PreCompact.\n const ev: PostCompactEvent = {\n ...base,\n ...(input.trigger === \"auto\" || input.trigger === \"manual\"\n ? { trigger: input.trigger }\n : {}),\n };\n return ev;\n }\n default: {\n const _never: never = event;\n throw new Error(`unsupported codebuddy hook event: ${String(_never)}`);\n }\n }\n }\n\n // ── Runtime: normalized response → CodeBuddy native hook reply ────────────\n // Identical envelope to Claude Code (bundle-confirmed: hookSpecificOutput,\n // permissionDecision/permissionDecisionReason, additionalContext,\n // updatedInput; Stop-class blocks use the top-level decision:\"block\").\n\n formatReply(event: HookEventName, response: HookResponse): HookReply {\n const hookEventName = event as ClaudeHookEvent;\n const decision = response.decision ?? \"allow\";\n\n if (event === \"PermissionRequest\") {\n if (response.decision === \"deny\") {\n return this.stdout({\n hookSpecificOutput: {\n hookEventName,\n decision: { behavior: \"deny\", message: response.reason ?? \"Blocked by hook\" },\n },\n });\n }\n if (\n response.decision === \"allow\" ||\n (response.decision === \"modify\" && response.updatedInput)\n ) {\n return this.stdout({\n hookSpecificOutput: {\n hookEventName,\n decision: {\n behavior: \"allow\",\n ...(response.updatedInput ? { updatedInput: response.updatedInput } : {}),\n },\n },\n });\n }\n return { exitCode: 0 };\n }\n\n // PostToolUseFailure / SubagentStart are observe/context-only.\n if (event === \"PostToolUseFailure\" || event === \"SubagentStart\") {\n const context =\n decision === \"context\"\n ? response.additionalContext\n : decision === \"deny\"\n ? response.reason ?? response.additionalContext\n : undefined;\n if (context) {\n return this.stdout({ hookSpecificOutput: { hookEventName, additionalContext: context } });\n }\n return { exitCode: 0 };\n }\n\n // deny → block. Stop-class events honor only the TOP-LEVEL decision:\"block\".\n if (decision === \"deny\") {\n if (\n event === \"Stop\" ||\n event === \"SubagentStop\" ||\n event === \"UserPromptSubmit\" ||\n event === \"PostToolUse\"\n ) {\n return this.stdout({ decision: \"block\", reason: response.reason ?? \"Blocked by hook\" });\n }\n return this.stdout({\n hookSpecificOutput: {\n hookEventName,\n permissionDecision: \"deny\",\n permissionDecisionReason: response.reason ?? \"Blocked by hook\",\n },\n });\n }\n\n if (decision === \"ask\") {\n return this.stdout({\n hookSpecificOutput: {\n hookEventName,\n permissionDecision: \"ask\",\n permissionDecisionReason: response.reason ?? \"Confirmation required by hook\",\n },\n });\n }\n\n if (decision === \"modify\") {\n if (event === \"PreToolUse\" && response.updatedInput) {\n return this.stdout({\n hookSpecificOutput: { hookEventName, updatedInput: response.updatedInput },\n });\n }\n // Output rewrite is unsupported; fall through to allow.\n }\n\n if (decision === \"context\" && response.additionalContext) {\n return this.stdout({\n hookSpecificOutput: { hookEventName, additionalContext: response.additionalContext },\n });\n }\n\n return { exitCode: 0 };\n }\n\n private stdout(payload: unknown): HookReply {\n return { exitCode: 0, stdout: JSON.stringify(payload) };\n }\n}\n\n/** CodeBuddy native interpolation token: `${env:VAR}` → `${VAR}`. */\nfunction codebuddyEnvToken(name: string): string {\n return `\\${${name}}`;\n}\n\nexport const adapter = new CodeBuddyAdapter();\nexport default adapter;\n"],"mappings":"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","names":["entry"]}
@@ -5,12 +5,12 @@ import {
5
5
  import {
6
6
  BaseAdapter,
7
7
  renderSkillMd
8
- } from "./chunk-NUGMVVV2.js";
8
+ } from "./chunk-VVFDU4IX.js";
9
9
  import {
10
10
  buildWrappedStdio
11
- } from "./chunk-TO57WYBB.js";
12
- import "./chunk-ALVXORZM.js";
13
- import "./chunk-2HCJV6UO.js";
11
+ } from "./chunk-HORHRHNG.js";
12
+ import "./chunk-YYNXIUR2.js";
13
+ import "./chunk-IXOQDZWC.js";
14
14
 
15
15
  // src/adapters/codebuff/index.ts
16
16
  import { existsSync } from "fs";
@@ -417,4 +417,4 @@ export {
417
417
  adapter,
418
418
  codebuff_default as default
419
419
  };
420
- //# sourceMappingURL=codebuff-J5KEEBIL.js.map
420
+ //# sourceMappingURL=codebuff-RJIDSEU3.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- writeTomlString
4
- } from "./chunk-OPXAP3AC.js";
5
2
  import {
6
3
  codexConfigHome
7
4
  } from "./chunk-UM5S7DKK.js";
5
+ import {
6
+ writeTomlString
7
+ } from "./chunk-OPXAP3AC.js";
8
8
  import {
9
9
  normalizeSessionSource
10
10
  } from "./chunk-H53QZQJI.js";
@@ -17,15 +17,15 @@ import {
17
17
  renderCommandMd,
18
18
  renderSkillMd,
19
19
  upsertInObjectMap
20
- } from "./chunk-NUGMVVV2.js";
20
+ } from "./chunk-VVFDU4IX.js";
21
21
  import {
22
22
  buildHomeBinHookCommand,
23
23
  buildWrappedStdio
24
- } from "./chunk-TO57WYBB.js";
25
- import "./chunk-ALVXORZM.js";
24
+ } from "./chunk-HORHRHNG.js";
25
+ import "./chunk-YYNXIUR2.js";
26
26
  import {
27
27
  ensureDir
28
- } from "./chunk-2HCJV6UO.js";
28
+ } from "./chunk-IXOQDZWC.js";
29
29
 
30
30
  // src/adapters/codex/index.ts
31
31
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -756,4 +756,4 @@ export {
756
756
  adapter,
757
757
  codex_default as default
758
758
  };
759
- //# sourceMappingURL=codex-JKQ6TLRI.js.map
759
+ //# sourceMappingURL=codex-ZZ434GYR.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readYaml,
4
4
  writeYaml
5
- } from "./chunk-IU42THN7.js";
5
+ } from "./chunk-4NSU3KWX.js";
6
6
  import {
7
7
  extractSessionId,
8
8
  normalizeSessionSource,
@@ -13,14 +13,14 @@ import {
13
13
  } from "./chunk-BEFVJ2OE.js";
14
14
  import {
15
15
  BaseAdapter
16
- } from "./chunk-NUGMVVV2.js";
16
+ } from "./chunk-VVFDU4IX.js";
17
17
  import {
18
18
  buildHomeBinHookCommand,
19
19
  buildWrappedStdio,
20
20
  isHomeBinHookCommand
21
- } from "./chunk-TO57WYBB.js";
22
- import "./chunk-ALVXORZM.js";
23
- import "./chunk-2HCJV6UO.js";
21
+ } from "./chunk-HORHRHNG.js";
22
+ import "./chunk-YYNXIUR2.js";
23
+ import "./chunk-IXOQDZWC.js";
24
24
 
25
25
  // src/adapters/continue/index.ts
26
26
  import { existsSync, statSync } from "fs";
@@ -769,4 +769,4 @@ export {
769
769
  adapter,
770
770
  continue_default as default
771
771
  };
772
- //# sourceMappingURL=continue-KQSJUSWX.js.map
772
+ //# sourceMappingURL=continue-MNM7YVJY.js.map
@@ -9,14 +9,14 @@ import {
9
9
  BaseAdapter,
10
10
  renderSkillMd,
11
11
  renderSubagentMd
12
- } from "./chunk-NUGMVVV2.js";
12
+ } from "./chunk-VVFDU4IX.js";
13
13
  import {
14
14
  buildHomeBinHookCommand,
15
15
  buildWrappedStdio,
16
16
  isHomeBinHookCommand
17
- } from "./chunk-TO57WYBB.js";
18
- import "./chunk-ALVXORZM.js";
19
- import "./chunk-2HCJV6UO.js";
17
+ } from "./chunk-HORHRHNG.js";
18
+ import "./chunk-YYNXIUR2.js";
19
+ import "./chunk-IXOQDZWC.js";
20
20
 
21
21
  // src/adapters/copilot-cli/index.ts
22
22
  import { existsSync } from "fs";
@@ -819,4 +819,4 @@ export {
819
819
  adapter,
820
820
  copilot_cli_default as default
821
821
  };
822
- //# sourceMappingURL=copilot-cli-YBNKLYUB.js.map
822
+ //# sourceMappingURL=copilot-cli-SMTX5F65.js.map
@@ -9,14 +9,14 @@ import {
9
9
  import {
10
10
  BaseAdapter,
11
11
  renderSkillMd
12
- } from "./chunk-NUGMVVV2.js";
12
+ } from "./chunk-VVFDU4IX.js";
13
13
  import {
14
14
  buildHomeBinHookCommand,
15
15
  buildWrappedStdio,
16
16
  isHomeBinHookCommand
17
- } from "./chunk-TO57WYBB.js";
18
- import "./chunk-ALVXORZM.js";
19
- import "./chunk-2HCJV6UO.js";
17
+ } from "./chunk-HORHRHNG.js";
18
+ import "./chunk-YYNXIUR2.js";
19
+ import "./chunk-IXOQDZWC.js";
20
20
 
21
21
  // src/adapters/crush/index.ts
22
22
  import { existsSync, statSync } from "fs";
@@ -495,4 +495,4 @@ export {
495
495
  adapter,
496
496
  crush_default as default
497
497
  };
498
- //# sourceMappingURL=crush-JTWTZIPB.js.map
498
+ //# sourceMappingURL=crush-NYDBHIJE.js.map
@@ -5,13 +5,13 @@ import {
5
5
  CursorAdapter,
6
6
  adapter,
7
7
  cursor_default
8
- } from "./chunk-DI6OWKH2.js";
8
+ } from "./chunk-NBUEL74R.js";
9
9
  import "./chunk-H53QZQJI.js";
10
10
  import "./chunk-BEFVJ2OE.js";
11
- import "./chunk-NUGMVVV2.js";
12
- import "./chunk-TO57WYBB.js";
13
- import "./chunk-ALVXORZM.js";
14
- import "./chunk-2HCJV6UO.js";
11
+ import "./chunk-VVFDU4IX.js";
12
+ import "./chunk-HORHRHNG.js";
13
+ import "./chunk-YYNXIUR2.js";
14
+ import "./chunk-IXOQDZWC.js";
15
15
  export {
16
16
  CURSOR_EVENT_MAP,
17
17
  CURSOR_HOOKS_VERSION,
@@ -19,4 +19,4 @@ export {
19
19
  adapter,
20
20
  cursor_default as default
21
21
  };
22
- //# sourceMappingURL=cursor-2NIZSDZ4.js.map
22
+ //# sourceMappingURL=cursor-AOELDNZU.js.map
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  print
4
- } from "./chunk-HKM3HUOK.js";
4
+ } from "./chunk-7HUUINPB.js";
5
5
  import {
6
6
  detectInstalledPlatforms
7
- } from "./chunk-TW4DVR4V.js";
8
- import "./chunk-Q5LECKZL.js";
7
+ } from "./chunk-ZMLVR4J7.js";
8
+ import "./chunk-25CPWJA7.js";
9
9
 
10
10
  // src/cli/commands/detect.ts
11
11
  import { parseArgs } from "util";
@@ -71,4 +71,4 @@ async function run(argv) {
71
71
  export {
72
72
  run
73
73
  };
74
- //# sourceMappingURL=detect-CWEIQCRC.js.map
74
+ //# sourceMappingURL=detect-3S46RUMK.js.map