@ken-jo/agent-connector 0.4.26 → 0.4.44

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 (152) hide show
  1. package/dist/{action-AZRZ3V7E.js → action-72J2TCKQ.js} +8 -8
  2. package/dist/{amazon-q-BWSOHTW5.js → amazon-q-UFLBUSHG.js} +15 -16
  3. package/dist/amazon-q-UFLBUSHG.js.map +1 -0
  4. package/dist/{amp-TF5X6OGH.js → amp-5DJK7VAL.js} +3 -5
  5. package/dist/{amp-TF5X6OGH.js.map → amp-5DJK7VAL.js.map} +1 -1
  6. package/dist/{antigravity-3XHBPXZK.js → antigravity-NWP2TUG6.js} +3 -4
  7. package/dist/{antigravity-cli-TJGOBUPK.js → antigravity-cli-KPNLE7X4.js} +3 -4
  8. package/dist/{antigravity-cli-TJGOBUPK.js.map → antigravity-cli-KPNLE7X4.js.map} +1 -1
  9. package/dist/{chunk-YRBFSZ2G.js → chunk-3Q6YEDCG.js} +3 -5
  10. package/dist/{chunk-YRBFSZ2G.js.map → chunk-3Q6YEDCG.js.map} +1 -1
  11. package/dist/{chunk-Q5HR4ADS.js → chunk-5M2SMDA4.js} +2 -2
  12. package/dist/{chunk-3I7UG52L.js → chunk-A767JFHW.js} +65 -4
  13. package/dist/chunk-A767JFHW.js.map +1 -0
  14. package/dist/{chunk-JLMD3IGK.js → chunk-ASHAMORS.js} +2 -2
  15. package/dist/{chunk-YKVNI44Y.js → chunk-B47MDOV3.js} +3 -3
  16. package/dist/{chunk-ZVTPSV5Z.js → chunk-CFM3JKIR.js} +5 -5
  17. package/dist/{chunk-HZDU3J4U.js → chunk-E3GWKJU5.js} +20 -4
  18. package/dist/chunk-E3GWKJU5.js.map +1 -0
  19. package/dist/{chunk-KD4BE5MW.js → chunk-ERV4TKRV.js} +3 -5
  20. package/dist/{chunk-KD4BE5MW.js.map → chunk-ERV4TKRV.js.map} +1 -1
  21. package/dist/{chunk-25BNMXPP.js → chunk-IKEXNI2W.js} +18 -18
  22. package/dist/{chunk-HU6DZZBG.js → chunk-SBV2QJ5C.js} +36 -36
  23. package/dist/{chunk-OLI5SD6I.js → chunk-UXG64P6R.js} +2 -2
  24. package/dist/{chunk-IW46JIQM.js → chunk-VPSHGDDQ.js} +5 -5
  25. package/dist/{chunk-YEJCNOET.js → chunk-WZWK4ICE.js} +2 -2
  26. package/dist/{cursor-R5QB4YR4.js → chunk-XW46WVR2.js} +11 -12
  27. package/dist/chunk-XW46WVR2.js.map +1 -0
  28. package/dist/{claude-code-JLPFUZ4V.js → claude-code-HXIVRZCY.js} +6 -8
  29. package/dist/{claude-code-JLPFUZ4V.js.map → claude-code-HXIVRZCY.js.map} +1 -1
  30. package/dist/cli/sdk.js +4 -4
  31. package/dist/cli.js +1 -1
  32. package/dist/{cline-GBP3EVSX.js → cline-AGFJF4AC.js} +3 -5
  33. package/dist/{cline-GBP3EVSX.js.map → cline-AGFJF4AC.js.map} +1 -1
  34. package/dist/{codebuff-WMKFUVER.js → codebuff-YUQ4PN7G.js} +3 -5
  35. package/dist/{codebuff-WMKFUVER.js.map → codebuff-YUQ4PN7G.js.map} +1 -1
  36. package/dist/{codex-5CZR5XKX.js → codex-FLU37DV3.js} +26 -11
  37. package/dist/codex-FLU37DV3.js.map +1 -0
  38. package/dist/{continue-3AGXWM5W.js → continue-ZMI4YN75.js} +2 -3
  39. package/dist/{continue-3AGXWM5W.js.map → continue-ZMI4YN75.js.map} +1 -1
  40. package/dist/{copilot-cli-IH4P3GRZ.js → copilot-cli-XPRJ5MQB.js} +29 -5
  41. package/dist/copilot-cli-XPRJ5MQB.js.map +1 -0
  42. package/dist/{crush-FDBL3JEK.js → crush-3OB5ZTCC.js} +11 -10
  43. package/dist/crush-3OB5ZTCC.js.map +1 -0
  44. package/dist/cursor-F4HYO2FP.js +22 -0
  45. package/dist/{detect-L5OZPVFO.js → detect-L3NJTBO5.js} +4 -4
  46. package/dist/{doctor-WDIQ2YFE.js → doctor-PUE4HO3N.js} +13 -10
  47. package/dist/{doctor-WDIQ2YFE.js.map → doctor-PUE4HO3N.js.map} +1 -1
  48. package/dist/{droid-X2QHQL7D.js → droid-NZCKYKOV.js} +3 -5
  49. package/dist/{droid-X2QHQL7D.js.map → droid-NZCKYKOV.js.map} +1 -1
  50. package/dist/{gemini-cli-HCN7XKSX.js → gemini-cli-3ZGCXUDD.js} +3 -5
  51. package/dist/{gemini-cli-HCN7XKSX.js.map → gemini-cli-3ZGCXUDD.js.map} +1 -1
  52. package/dist/{goose-ILMM76JP.js → goose-MGGNVXJP.js} +56 -9
  53. package/dist/goose-MGGNVXJP.js.map +1 -0
  54. package/dist/{hermes-YX2ODUZL.js → hermes-L3CBJ37L.js} +8 -6
  55. package/dist/hermes-L3CBJ37L.js.map +1 -0
  56. package/dist/{hook-JRDQ56BN.js → hook-S3DNNGZX.js} +8 -8
  57. package/dist/index.js +2 -2
  58. package/dist/{install-HRCVPRAQ.js → install-7SUJFRYO.js} +13 -10
  59. package/dist/{install-HRCVPRAQ.js.map → install-7SUJFRYO.js.map} +1 -1
  60. package/dist/{jetbrains-copilot-QESFUN6W.js → jetbrains-copilot-M2LHJBAW.js} +3 -5
  61. package/dist/{jetbrains-copilot-QESFUN6W.js.map → jetbrains-copilot-M2LHJBAW.js.map} +1 -1
  62. package/dist/{kilo-POTCYIRG.js → kilo-RMRP2EL7.js} +3 -5
  63. package/dist/{kilo-POTCYIRG.js.map → kilo-RMRP2EL7.js.map} +1 -1
  64. package/dist/{kilo-cli-MO6FSMH2.js → kilo-cli-6ITBNHTH.js} +14 -10
  65. package/dist/kilo-cli-6ITBNHTH.js.map +1 -0
  66. package/dist/{kimi-RXS36OJP.js → kimi-QYHWAY54.js} +65 -25
  67. package/dist/kimi-QYHWAY54.js.map +1 -0
  68. package/dist/{kiro-VTLX7CMF.js → kiro-2K5UJVGC.js} +11 -16
  69. package/dist/kiro-2K5UJVGC.js.map +1 -0
  70. package/dist/{leaderboard-ASGR3E2U.js → leaderboard-2VAAOK3D.js} +2 -2
  71. package/dist/{mimo-code-F4BWMESO.js → mimo-code-K7AMX2QW.js} +3 -5
  72. package/dist/{mimo-code-F4BWMESO.js.map → mimo-code-K7AMX2QW.js.map} +1 -1
  73. package/dist/{mux-2YFCYFM7.js → mux-GT7FWVLH.js} +3 -5
  74. package/dist/{mux-2YFCYFM7.js.map → mux-GT7FWVLH.js.map} +1 -1
  75. package/dist/{nemoclaw-QDB6O22A.js → nemoclaw-GQMS6CUM.js} +3 -4
  76. package/dist/{nemoclaw-QDB6O22A.js.map → nemoclaw-GQMS6CUM.js.map} +1 -1
  77. package/dist/{omp-P2JNAEPN.js → omp-2RPYIZUF.js} +2 -3
  78. package/dist/{omp-P2JNAEPN.js.map → omp-2RPYIZUF.js.map} +1 -1
  79. package/dist/{openclaw-3UMBSSZM.js → openclaw-P5GMEEGC.js} +3 -4
  80. package/dist/openclaw-P5GMEEGC.js.map +1 -0
  81. package/dist/{opencode-Q6H4YT66.js → opencode-5D2SK3EX.js} +3 -5
  82. package/dist/{opencode-Q6H4YT66.js.map → opencode-5D2SK3EX.js.map} +1 -1
  83. package/dist/{package-IXBSG7HD.js → package-VUX663ET.js} +10 -7
  84. package/dist/{package-IXBSG7HD.js.map → package-VUX663ET.js.map} +1 -1
  85. package/dist/{pi-GW25LPC3.js → pi-ZMM4KJTO.js} +2 -3
  86. package/dist/{pi-GW25LPC3.js.map → pi-ZMM4KJTO.js.map} +1 -1
  87. package/dist/{qwen-code-R6XXEEHJ.js → qwen-code-4ZLVGN2C.js} +9 -11
  88. package/dist/qwen-code-4ZLVGN2C.js.map +1 -0
  89. package/dist/{roo-code-EZPNFC5V.js → roo-code-67QGLQRM.js} +4 -5
  90. package/dist/roo-code-67QGLQRM.js.map +1 -0
  91. package/dist/runtime/index.js +6 -6
  92. package/dist/sdk/index.js +3 -3
  93. package/dist/sdk/test.js +5 -5
  94. package/dist/{serve-CFBQYKRB.js → serve-MOIIYFER.js} +8 -8
  95. package/dist/{status-ASBFEFQQ.js → status-SCBCWS7H.js} +6 -6
  96. package/dist/{statusline-WKLWSM7I.js → statusline-NRPDOPGA.js} +7 -7
  97. package/dist/{telemetry-64GCGNIW.js → telemetry-Q55B5NSZ.js} +5 -5
  98. package/dist/{trae-6VQW2UVP.js → trae-TMJPHWZ5.js} +3 -5
  99. package/dist/{trae-6VQW2UVP.js.map → trae-TMJPHWZ5.js.map} +1 -1
  100. package/dist/{uninstall-KDJYE5ET.js → uninstall-SNI7GPQD.js} +13 -10
  101. package/dist/{uninstall-KDJYE5ET.js.map → uninstall-SNI7GPQD.js.map} +1 -1
  102. package/dist/{upgrade-YQRVYR5U.js → upgrade-ZUNBJWJ7.js} +13 -10
  103. package/dist/{upgrade-YQRVYR5U.js.map → upgrade-ZUNBJWJ7.js.map} +1 -1
  104. package/dist/{usage-OV2BDZKF.js → usage-UQDBIU42.js} +2 -2
  105. package/dist/{usage-event-KPI3NEX3.js → usage-event-HPG2BIAY.js} +7 -7
  106. package/dist/{vscode-copilot-UOEEV4P3.js → vscode-copilot-H7JKUKLZ.js} +19 -8
  107. package/dist/vscode-copilot-H7JKUKLZ.js.map +1 -0
  108. package/dist/{warp-LUK2BPCU.js → warp-SVDVKQQI.js} +3 -5
  109. package/dist/{warp-LUK2BPCU.js.map → warp-SVDVKQQI.js.map} +1 -1
  110. package/dist/{windsurf-NZ3G42NQ.js → windsurf-H36YKOMR.js} +3 -5
  111. package/dist/{windsurf-NZ3G42NQ.js.map → windsurf-H36YKOMR.js.map} +1 -1
  112. package/dist/{zed-LGWGZ4EO.js → zed-LHWJALLZ.js} +3 -5
  113. package/dist/{zed-LGWGZ4EO.js.map → zed-LHWJALLZ.js.map} +1 -1
  114. package/package.json +1 -1
  115. package/dist/amazon-q-BWSOHTW5.js.map +0 -1
  116. package/dist/chunk-3I7UG52L.js.map +0 -1
  117. package/dist/chunk-HZDU3J4U.js.map +0 -1
  118. package/dist/chunk-IEGR4TP3.js +0 -70
  119. package/dist/chunk-IEGR4TP3.js.map +0 -1
  120. package/dist/codex-5CZR5XKX.js.map +0 -1
  121. package/dist/copilot-cli-IH4P3GRZ.js.map +0 -1
  122. package/dist/crush-FDBL3JEK.js.map +0 -1
  123. package/dist/cursor-R5QB4YR4.js.map +0 -1
  124. package/dist/goose-ILMM76JP.js.map +0 -1
  125. package/dist/hermes-YX2ODUZL.js.map +0 -1
  126. package/dist/kilo-cli-MO6FSMH2.js.map +0 -1
  127. package/dist/kimi-RXS36OJP.js.map +0 -1
  128. package/dist/kiro-VTLX7CMF.js.map +0 -1
  129. package/dist/qwen-code-R6XXEEHJ.js.map +0 -1
  130. package/dist/roo-code-EZPNFC5V.js.map +0 -1
  131. package/dist/vscode-copilot-UOEEV4P3.js.map +0 -1
  132. /package/dist/{action-AZRZ3V7E.js.map → action-72J2TCKQ.js.map} +0 -0
  133. /package/dist/{antigravity-3XHBPXZK.js.map → antigravity-NWP2TUG6.js.map} +0 -0
  134. /package/dist/{chunk-Q5HR4ADS.js.map → chunk-5M2SMDA4.js.map} +0 -0
  135. /package/dist/{chunk-JLMD3IGK.js.map → chunk-ASHAMORS.js.map} +0 -0
  136. /package/dist/{chunk-YKVNI44Y.js.map → chunk-B47MDOV3.js.map} +0 -0
  137. /package/dist/{chunk-ZVTPSV5Z.js.map → chunk-CFM3JKIR.js.map} +0 -0
  138. /package/dist/{chunk-25BNMXPP.js.map → chunk-IKEXNI2W.js.map} +0 -0
  139. /package/dist/{chunk-HU6DZZBG.js.map → chunk-SBV2QJ5C.js.map} +0 -0
  140. /package/dist/{chunk-OLI5SD6I.js.map → chunk-UXG64P6R.js.map} +0 -0
  141. /package/dist/{chunk-IW46JIQM.js.map → chunk-VPSHGDDQ.js.map} +0 -0
  142. /package/dist/{chunk-YEJCNOET.js.map → chunk-WZWK4ICE.js.map} +0 -0
  143. /package/dist/{openclaw-3UMBSSZM.js.map → cursor-F4HYO2FP.js.map} +0 -0
  144. /package/dist/{detect-L5OZPVFO.js.map → detect-L3NJTBO5.js.map} +0 -0
  145. /package/dist/{hook-JRDQ56BN.js.map → hook-S3DNNGZX.js.map} +0 -0
  146. /package/dist/{leaderboard-ASGR3E2U.js.map → leaderboard-2VAAOK3D.js.map} +0 -0
  147. /package/dist/{serve-CFBQYKRB.js.map → serve-MOIIYFER.js.map} +0 -0
  148. /package/dist/{status-ASBFEFQQ.js.map → status-SCBCWS7H.js.map} +0 -0
  149. /package/dist/{statusline-WKLWSM7I.js.map → statusline-NRPDOPGA.js.map} +0 -0
  150. /package/dist/{telemetry-64GCGNIW.js.map → telemetry-Q55B5NSZ.js.map} +0 -0
  151. /package/dist/{usage-OV2BDZKF.js.map → usage-UQDBIU42.js.map} +0 -0
  152. /package/dist/{usage-event-KPI3NEX3.js.map → usage-event-HPG2BIAY.js.map} +0 -0
@@ -73,36 +73,36 @@ function renderInstallResult(result, verb) {
73
73
  return lines.join("\n");
74
74
  }
75
75
  var COMMANDS = {
76
- detect: () => import("./detect-L5OZPVFO.js"),
77
- install: () => import("./install-HRCVPRAQ.js"),
78
- uninstall: () => import("./uninstall-KDJYE5ET.js"),
76
+ detect: () => import("./detect-L3NJTBO5.js"),
77
+ install: () => import("./install-7SUJFRYO.js"),
78
+ uninstall: () => import("./uninstall-SNI7GPQD.js"),
79
79
  // `upgrade` is the single "bring everything current" verb (re-render host
80
80
  // config + refresh the home pointer + managed channel guidance). `sync` and
81
81
  // `update` are kept as back-compat aliases that route to the same module so
82
82
  // existing scripts/docs keep working without a second concept to learn.
83
- upgrade: () => import("./upgrade-YQRVYR5U.js"),
84
- sync: () => import("./upgrade-YQRVYR5U.js"),
85
- update: () => import("./upgrade-YQRVYR5U.js"),
86
- package: () => import("./package-IXBSG7HD.js"),
87
- doctor: () => import("./doctor-WDIQ2YFE.js"),
88
- status: () => import("./status-ASBFEFQQ.js"),
89
- telemetry: () => import("./telemetry-64GCGNIW.js"),
90
- usage: () => import("./usage-OV2BDZKF.js"),
91
- leaderboard: () => import("./leaderboard-ASGR3E2U.js"),
92
- hook: () => import("./hook-JRDQ56BN.js"),
83
+ upgrade: () => import("./upgrade-ZUNBJWJ7.js"),
84
+ sync: () => import("./upgrade-ZUNBJWJ7.js"),
85
+ update: () => import("./upgrade-ZUNBJWJ7.js"),
86
+ package: () => import("./package-VUX663ET.js"),
87
+ doctor: () => import("./doctor-PUE4HO3N.js"),
88
+ status: () => import("./status-SCBCWS7H.js"),
89
+ telemetry: () => import("./telemetry-Q55B5NSZ.js"),
90
+ usage: () => import("./usage-UQDBIU42.js"),
91
+ leaderboard: () => import("./leaderboard-2VAAOK3D.js"),
92
+ hook: () => import("./hook-S3DNNGZX.js"),
93
93
  // Internal (omitted from USAGE): the statusline (HUD) entrypoint a host's
94
94
  // status line config points at. Fail-safe: always exits 0 with at most a
95
95
  // rendered line. See cli/commands/statusline.ts.
96
- statusline: () => import("./statusline-WKLWSM7I.js"),
96
+ statusline: () => import("./statusline-NRPDOPGA.js"),
97
97
  // Internal (omitted from USAGE): the user-invokable action entrypoint a future
98
98
  // host affordance points at. USER-TRIGGERED: surfaces errors (exit 1 + stderr),
99
99
  // unlike the fail-open hook / fail-safe statusline. See cli/commands/action.ts.
100
- action: () => import("./action-AZRZ3V7E.js"),
101
- serve: () => import("./serve-CFBQYKRB.js"),
100
+ action: () => import("./action-72J2TCKQ.js"),
101
+ serve: () => import("./serve-MOIIYFER.js"),
102
102
  // Hidden (omitted from USAGE): the opt-in host-native turn-usage entrypoint an
103
103
  // AfterModel / PostInvocation hook points at. Always exits 0; records a
104
104
  // distinct `model_turn` row. See cli/commands/usage-event.ts.
105
- "usage-event": () => import("./usage-event-KPI3NEX3.js")
105
+ "usage-event": () => import("./usage-event-HPG2BIAY.js")
106
106
  };
107
107
  var DEFAULT_PROGRAM_NAME = "agent-connector";
108
108
  var COMMAND_USAGE = {
@@ -198,4 +198,4 @@ export {
198
198
  renderInstallResult,
199
199
  main
200
200
  };
201
- //# sourceMappingURL=chunk-25BNMXPP.js.map
201
+ //# sourceMappingURL=chunk-IKEXNI2W.js.map
@@ -4,39 +4,39 @@
4
4
  var ADAPTER_REGISTRY = [
5
5
  {
6
6
  id: "claude-code",
7
- load: () => import("./claude-code-JLPFUZ4V.js").then((m) => m.default)
7
+ load: () => import("./claude-code-HXIVRZCY.js").then((m) => m.default)
8
8
  },
9
9
  {
10
10
  id: "codex",
11
- load: () => import("./codex-5CZR5XKX.js").then((m) => m.default)
11
+ load: () => import("./codex-FLU37DV3.js").then((m) => m.default)
12
12
  },
13
13
  {
14
14
  id: "cursor",
15
- load: () => import("./cursor-R5QB4YR4.js").then((m) => m.default)
15
+ load: () => import("./cursor-F4HYO2FP.js").then((m) => m.default)
16
16
  },
17
17
  // vscode-copilot after cursor: cursor is a VS Code fork, so the fork's runtime
18
18
  // markers must be checked first during host detection.
19
19
  {
20
20
  id: "vscode-copilot",
21
- load: () => import("./vscode-copilot-UOEEV4P3.js").then((m) => m.default)
21
+ load: () => import("./vscode-copilot-H7JKUKLZ.js").then((m) => m.default)
22
22
  },
23
23
  {
24
24
  id: "copilot-cli",
25
- load: () => import("./copilot-cli-IH4P3GRZ.js").then((m) => m.default)
25
+ load: () => import("./copilot-cli-XPRJ5MQB.js").then((m) => m.default)
26
26
  },
27
27
  {
28
28
  id: "gemini-cli",
29
- load: () => import("./gemini-cli-HCN7XKSX.js").then((m) => m.default)
29
+ load: () => import("./gemini-cli-3ZGCXUDD.js").then((m) => m.default)
30
30
  },
31
31
  {
32
32
  id: "warp",
33
- load: () => import("./warp-LUK2BPCU.js").then((m) => m.default)
33
+ load: () => import("./warp-SVDVKQQI.js").then((m) => m.default)
34
34
  },
35
35
  // ts-plugin paradigm: OpenCode loads a generated plugin module that bridges
36
36
  // its in-process events to the universal hook entrypoint.
37
37
  {
38
38
  id: "opencode",
39
- load: () => import("./opencode-Q6H4YT66.js").then((m) => m.default)
39
+ load: () => import("./opencode-5D2SK3EX.js").then((m) => m.default)
40
40
  },
41
41
  // mimo-code is Xiaomi's MiMoCode (@mimo-ai/cli, bin `mimo`) — an OpenCode FORK
42
42
  // (ts-plugin, MCP root key "mcp", ~/.config/mimocode/mimocode.json). Grouped
@@ -45,7 +45,7 @@ var ADAPTER_REGISTRY = [
45
45
  // constraint vs opencode (no shared config file to disambiguate).
46
46
  {
47
47
  id: "mimo-code",
48
- load: () => import("./mimo-code-F4BWMESO.js").then((m) => m.default)
48
+ load: () => import("./mimo-code-K7AMX2QW.js").then((m) => m.default)
49
49
  },
50
50
  // kilo-cli is the SQLite-backed OpenCode FORK command-line product (ts-plugin,
51
51
  // loads @kilocode/plugin modules registered in kilo.jsonc's "plugin" array;
@@ -54,23 +54,23 @@ var ADAPTER_REGISTRY = [
54
54
  // the "kilo" extension so there is no fork-ordering constraint between them.
55
55
  {
56
56
  id: "kilo-cli",
57
- load: () => import("./kilo-cli-MO6FSMH2.js").then((m) => m.default)
57
+ load: () => import("./kilo-cli-6ITBNHTH.js").then((m) => m.default)
58
58
  },
59
59
  // Wave 1 — mcp-only adapters (no lifecycle hooks; MCP registration only).
60
60
  {
61
61
  id: "droid",
62
- load: () => import("./droid-X2QHQL7D.js").then((m) => m.default)
62
+ load: () => import("./droid-NZCKYKOV.js").then((m) => m.default)
63
63
  },
64
64
  {
65
65
  id: "roo-code",
66
- load: () => import("./roo-code-EZPNFC5V.js").then((m) => m.default)
66
+ load: () => import("./roo-code-67QGLQRM.js").then((m) => m.default)
67
67
  },
68
68
  // kilo is the Kilo Code VS Code extension (kilocode.kilo-code) — a Roo/Cline
69
69
  // fork, so it sits beside roo-code (mcp-only, root key "mcpServers", VS Code
70
70
  // globalStorage / .kilocode project scope). Distinct host from "kilo-cli".
71
71
  {
72
72
  id: "kilo",
73
- load: () => import("./kilo-POTCYIRG.js").then((m) => m.default)
73
+ load: () => import("./kilo-RMRP2EL7.js").then((m) => m.default)
74
74
  },
75
75
  // cline is the Cline VS Code extension (saoudrizwan.claude-dev) — the most-
76
76
  // installed AI coding extension and the PARENT that roo-code and kilo forked.
@@ -81,11 +81,11 @@ var ADAPTER_REGISTRY = [
81
81
  // is NO fork-before-parent ordering constraint here; it simply sits beside them.
82
82
  {
83
83
  id: "cline",
84
- load: () => import("./cline-GBP3EVSX.js").then((m) => m.default)
84
+ load: () => import("./cline-AGFJF4AC.js").then((m) => m.default)
85
85
  },
86
86
  {
87
87
  id: "trae",
88
- load: () => import("./trae-6VQW2UVP.js").then((m) => m.default)
88
+ load: () => import("./trae-TMJPHWZ5.js").then((m) => m.default)
89
89
  },
90
90
  // antigravity-cli BEFORE antigravity: the `agy` CLI is a fork of the IDE
91
91
  // adapter with its own runtime markers (the universal hook command tags the
@@ -93,69 +93,69 @@ var ADAPTER_REGISTRY = [
93
93
  // before the IDE/parent during host detection.
94
94
  {
95
95
  id: "antigravity-cli",
96
- load: () => import("./antigravity-cli-TJGOBUPK.js").then((m) => m.default)
96
+ load: () => import("./antigravity-cli-KPNLE7X4.js").then((m) => m.default)
97
97
  },
98
98
  {
99
99
  id: "antigravity",
100
- load: () => import("./antigravity-3XHBPXZK.js").then((m) => m.default)
100
+ load: () => import("./antigravity-NWP2TUG6.js").then((m) => m.default)
101
101
  },
102
102
  {
103
103
  id: "zed",
104
- load: () => import("./zed-LGWGZ4EO.js").then((m) => m.default)
104
+ load: () => import("./zed-LHWJALLZ.js").then((m) => m.default)
105
105
  },
106
106
  {
107
107
  id: "amp",
108
- load: () => import("./amp-TF5X6OGH.js").then((m) => m.default)
108
+ load: () => import("./amp-5DJK7VAL.js").then((m) => m.default)
109
109
  },
110
110
  {
111
111
  id: "codebuff",
112
- load: () => import("./codebuff-WMKFUVER.js").then((m) => m.default)
112
+ load: () => import("./codebuff-YUQ4PN7G.js").then((m) => m.default)
113
113
  },
114
114
  {
115
115
  id: "mux",
116
- load: () => import("./mux-2YFCYFM7.js").then((m) => m.default)
116
+ load: () => import("./mux-GT7FWVLH.js").then((m) => m.default)
117
117
  },
118
118
  // Pi — mcp-only host with no writable MCP config; drives the Agent Skills
119
119
  // surface only (writes <piDir>/skills/<name>/SKILL.md).
120
120
  {
121
121
  id: "pi",
122
- load: () => import("./pi-GW25LPC3.js").then((m) => m.default)
122
+ load: () => import("./pi-ZMM4KJTO.js").then((m) => m.default)
123
123
  },
124
124
  // Wave 2 — json-stdio adapters (full hook dispatch via the universal entrypoint).
125
125
  // jetbrains-copilot before vscode-copilot is unnecessary (distinct hosts); grouped here.
126
126
  {
127
127
  id: "jetbrains-copilot",
128
- load: () => import("./jetbrains-copilot-QESFUN6W.js").then((m) => m.default)
128
+ load: () => import("./jetbrains-copilot-M2LHJBAW.js").then((m) => m.default)
129
129
  },
130
130
  {
131
131
  id: "qwen-code",
132
- load: () => import("./qwen-code-R6XXEEHJ.js").then((m) => m.default)
132
+ load: () => import("./qwen-code-4ZLVGN2C.js").then((m) => m.default)
133
133
  },
134
134
  {
135
135
  id: "kiro",
136
- load: () => import("./kiro-VTLX7CMF.js").then((m) => m.default)
136
+ load: () => import("./kiro-2K5UJVGC.js").then((m) => m.default)
137
137
  },
138
138
  {
139
139
  id: "kimi",
140
- load: () => import("./kimi-RXS36OJP.js").then((m) => m.default)
140
+ load: () => import("./kimi-QYHWAY54.js").then((m) => m.default)
141
141
  },
142
142
  {
143
143
  id: "crush",
144
- load: () => import("./crush-FDBL3JEK.js").then((m) => m.default)
144
+ load: () => import("./crush-3OB5ZTCC.js").then((m) => m.default)
145
145
  },
146
146
  // Wave 3 — json-stdio adapters with YAML config (MCP in YAML; hooks per host).
147
147
  {
148
148
  id: "goose",
149
- load: () => import("./goose-ILMM76JP.js").then((m) => m.default)
149
+ load: () => import("./goose-MGGNVXJP.js").then((m) => m.default)
150
150
  },
151
151
  {
152
152
  id: "hermes",
153
- load: () => import("./hermes-YX2ODUZL.js").then((m) => m.default)
153
+ load: () => import("./hermes-L3CBJ37L.js").then((m) => m.default)
154
154
  },
155
155
  // Wave 4 — ts-plugin adapters (generate a bridge module to the universal entrypoint).
156
156
  {
157
157
  id: "omp",
158
- load: () => import("./omp-P2JNAEPN.js").then((m) => m.default)
158
+ load: () => import("./omp-2RPYIZUF.js").then((m) => m.default)
159
159
  },
160
160
  // nemoclaw BEFORE openclaw (fork-before-parent convention). NVIDIA NemoClaw
161
161
  // wraps OpenClaw and DRIVES the SAME ~/.openclaw/openclaw.json, so a NemoClaw
@@ -168,11 +168,11 @@ var ADAPTER_REGISTRY = [
168
168
  // lands in the wrapped openclaw.json.
169
169
  {
170
170
  id: "nemoclaw",
171
- load: () => import("./nemoclaw-QDB6O22A.js").then((m) => m.default)
171
+ load: () => import("./nemoclaw-GQMS6CUM.js").then((m) => m.default)
172
172
  },
173
173
  {
174
174
  id: "openclaw",
175
- load: () => import("./openclaw-3UMBSSZM.js").then((m) => m.default)
175
+ load: () => import("./openclaw-P5GMEEGC.js").then((m) => m.default)
176
176
  },
177
177
  // Wave 5 — mcp-only: Amazon Q Developer CLI. JSON MCP config under ~/.aws/amazonq/
178
178
  // (user) and .amazonq/ (project); root key "mcpServers"; bare stdio entry
@@ -182,7 +182,7 @@ var ADAPTER_REGISTRY = [
182
182
  // adapter installs MCP entries + the .amazonq/rules memory surface.
183
183
  {
184
184
  id: "amazon-q",
185
- load: () => import("./amazon-q-BWSOHTW5.js").then((m) => m.default)
185
+ load: () => import("./amazon-q-UFLBUSHG.js").then((m) => m.default)
186
186
  },
187
187
  // Continue (the `cn` terminal agent / Continue.dev, npm @continuedev/cli) —
188
188
  // json-stdio (Claude-compatible hooks). MCP config is YAML at ~/.continue/config.yaml (user) and
@@ -194,7 +194,7 @@ var ADAPTER_REGISTRY = [
194
194
  // fork-ordering constraint vs any sibling.
195
195
  {
196
196
  id: "continue",
197
- load: () => import("./continue-3AGXWM5W.js").then((m) => m.default)
197
+ load: () => import("./continue-ZMI4YN75.js").then((m) => m.default)
198
198
  },
199
199
  // Windsurf (Codeium / Cognition's Cascade agent) — mcp-only. USER/GLOBAL scope
200
200
  // ONLY: MCP config is JSON at ~/.codeium/windsurf/mcp_config.json (the docs
@@ -208,7 +208,7 @@ var ADAPTER_REGISTRY = [
208
208
  // memory surface. Distinct ~/.codeium marker — no fork-ordering constraint.
209
209
  {
210
210
  id: "windsurf",
211
- load: () => import("./windsurf-NZ3G42NQ.js").then((m) => m.default)
211
+ load: () => import("./windsurf-H36YKOMR.js").then((m) => m.default)
212
212
  }
213
213
  ];
214
214
  var REGISTRY_BY_ID = new Map(
@@ -234,4 +234,4 @@ export {
234
234
  loadAdapter,
235
235
  allAdapters
236
236
  };
237
- //# sourceMappingURL=chunk-HU6DZZBG.js.map
237
+ //# sourceMappingURL=chunk-SBV2QJ5C.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  defineConnector
4
- } from "./chunk-YEJCNOET.js";
4
+ } from "./chunk-WZWK4ICE.js";
5
5
  import {
6
6
  connectorDir,
7
7
  connectorsDir,
@@ -178,4 +178,4 @@ export {
178
178
  connectorFromMeta,
179
179
  listRegisteredConnectors
180
180
  };
181
- //# sourceMappingURL=chunk-OLI5SD6I.js.map
181
+ //# sourceMappingURL=chunk-UXG64P6R.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  installInstructions,
4
4
  packageConnector
5
- } from "./chunk-HZDU3J4U.js";
5
+ } from "./chunk-E3GWKJU5.js";
6
6
  import {
7
7
  MARKETPLACE_NAME,
8
8
  agyPluginInstalled,
@@ -44,7 +44,7 @@ import {
44
44
  } from "./chunk-7QRUZAUG.js";
45
45
  import {
46
46
  detectInstalledPlatforms
47
- } from "./chunk-Q5HR4ADS.js";
47
+ } from "./chunk-5M2SMDA4.js";
48
48
  import {
49
49
  log
50
50
  } from "./chunk-KHO5WNTP.js";
@@ -52,11 +52,11 @@ import {
52
52
  deregisterConnector,
53
53
  loadRegisteredConnector,
54
54
  registerConnector
55
- } from "./chunk-OLI5SD6I.js";
55
+ } from "./chunk-UXG64P6R.js";
56
56
  import {
57
57
  REGISTERED_PLATFORM_IDS,
58
58
  loadAdapter
59
- } from "./chunk-HU6DZZBG.js";
59
+ } from "./chunk-SBV2QJ5C.js";
60
60
  import {
61
61
  configPatchManualEdit
62
62
  } from "./chunk-L7ESV37V.js";
@@ -3022,4 +3022,4 @@ export {
3022
3022
  upgradeViaMarketplace,
3023
3023
  marketplaceDoctorChecks
3024
3024
  };
3025
- //# sourceMappingURL=chunk-IW46JIQM.js.map
3025
+ //# sourceMappingURL=chunk-VPSHGDDQ.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  REGISTERED_PLATFORM_IDS
4
- } from "./chunk-HU6DZZBG.js";
4
+ } from "./chunk-SBV2QJ5C.js";
5
5
  import {
6
6
  CONFIG_PATCH_SEGMENT_RE,
7
7
  configPatchNamespaceViolation,
@@ -495,4 +495,4 @@ export {
495
495
  defineConfigPatch,
496
496
  defineNativeHook
497
497
  };
498
- //# sourceMappingURL=chunk-YEJCNOET.js.map
498
+ //# sourceMappingURL=chunk-WZWK4ICE.js.map
@@ -6,17 +6,13 @@ import {
6
6
  rewriteEnvRefs
7
7
  } from "./chunk-DBQMX75U.js";
8
8
  import {
9
- BaseAdapter
10
- } from "./chunk-3I7UG52L.js";
11
- import {
9
+ BaseAdapter,
12
10
  renderSkillMd
13
- } from "./chunk-IEGR4TP3.js";
11
+ } from "./chunk-A767JFHW.js";
14
12
  import {
15
13
  buildWrappedStdio,
16
14
  isHomeBinHookCommand
17
15
  } from "./chunk-TO57WYBB.js";
18
- import "./chunk-ZY25RG4Y.js";
19
- import "./chunk-QY42WGBX.js";
20
16
 
21
17
  // src/adapters/cursor/index.ts
22
18
  import { existsSync } from "fs";
@@ -41,7 +37,7 @@ var CURSOR_EVENT = {
41
37
  PreCompact: "preCompact",
42
38
  UserPromptSubmit: "beforeSubmitPrompt"
43
39
  };
44
- var EVENT_MAP = {
40
+ var CURSOR_EVENT_MAP = {
45
41
  PreToolUse: CURSOR_EVENT.PreToolUse,
46
42
  PostToolUse: CURSOR_EVENT.PostToolUse,
47
43
  SessionStart: CURSOR_EVENT.SessionStart,
@@ -232,8 +228,8 @@ var CursorAdapter = class extends BaseAdapter {
232
228
  }
233
229
  /**
234
230
  * Cursor's hook-merge descriptor (FLAT shape `{ command, matcher? }`):
235
- * - mapEvent renames canonical → Cursor's lower-camel native key (EVENT_MAP);
236
- * an unmapped event warn-skips (no Cursor equivalent).
231
+ * - mapEvent renames canonical → Cursor's lower-camel native key
232
+ * (CURSOR_EVENT_MAP); an unmapped event warn-skips (no Cursor equivalent).
237
233
  * - renderEntry omits the `matcher` key when the matcher is falsy — this
238
234
  * `{command}` vs `{command,matcher}` distinction is load-bearing on-disk
239
235
  * bytes (Cursor's flat entry shape), reproduced exactly here.
@@ -246,7 +242,7 @@ var CursorAdapter = class extends BaseAdapter {
246
242
  */
247
243
  hookDescriptor(ctx) {
248
244
  return {
249
- mapEvent: (e) => EVENT_MAP[e],
245
+ mapEvent: (e) => CURSOR_EVENT_MAP[e],
250
246
  unmappedWarnDetail: (e) => `${e} has no Cursor hook equivalent \u2014 skipped`,
251
247
  renderEntry: (_event, matcher, command) => matcher ? { command, matcher } : { command },
252
248
  entryOwnsCommand: (entry, _command) => this.isOurCommand(entry.command, ctx),
@@ -637,9 +633,12 @@ function extractSessionId(input) {
637
633
  }
638
634
  var adapter = new CursorAdapter();
639
635
  var cursor_default = adapter;
636
+
640
637
  export {
638
+ CURSOR_HOOKS_VERSION,
639
+ CURSOR_EVENT_MAP,
641
640
  CursorAdapter,
642
641
  adapter,
643
- cursor_default as default
642
+ cursor_default
644
643
  };
645
- //# sourceMappingURL=cursor-R5QB4YR4.js.map
644
+ //# sourceMappingURL=chunk-XW46WVR2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/cursor/index.ts"],"sourcesContent":["/**\n * adapters/cursor — Cursor platform adapter for agent-connector.\n *\n * Generalized from context-mode's proven Cursor adapter: the served identity is\n * now `ctx.connector` (not a hardcoded \"context-mode\"), and every hook command\n * points at the single stable home binary (the shared hook-merge engine builds\n * the command) so one framework update propagates everywhere.\n *\n * Cursor is a json-stdio host:\n * - MCP servers: user scope → ~/.cursor/mcp.json (\"mcpServers\"); project scope\n * → <projectDir>/.cursor/mcp.json (\"mcpServers\").\n * - Hooks: <configDir>/hooks.json with shape `{ version, hooks: { <cursorEvent>:\n * [ { command, matcher? } ] } }`. Unlike Claude, each entry is a FLAT command\n * object (no `{ matcher, hooks:[...] }` wrapper).\n * - Reply: a JSON object on stdout (exit 0). deny/ask carry `permission` +\n * `user_message`; modify carries `updated_input`; context injects via\n * `agent_message` (PreToolUse) or `additional_context` (Post/SessionStart).\n *\n * Cursor supports its own `${env:VAR}` native interpolation, so env/header/url\n * values are rewritten to that native token rather than baked into the file.\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, NormalizedEvent } from \"../spi.js\";\nimport type {\n ChangeRecord,\n CommandDef,\n DetectedPlatform,\n HealthCheck,\n HookEventName,\n HookParadigm,\n HookResponse,\n PlatformCapabilities,\n PlatformId,\n PostToolUseEvent,\n PostToolUseFailureEvent,\n PreCompactEvent,\n PreToolUseEvent,\n ServerDef,\n SessionEndEvent,\n SessionStartEvent,\n StopEvent,\n SubagentDef,\n SubagentStartEvent,\n SubagentStopEvent,\n Transport,\n UserPromptSubmitEvent,\n} from \"../../core/types.js\";\nimport { rewriteEnvRefs } from \"../../core/interpolate.js\";\nimport {\n buildWrappedStdio,\n isHomeBinHookCommand,\n} from \"../../core/spawn.js\";\nimport { renderSkillMd } from \"../claude-code/render.js\";\nimport { normalizeSessionSource } from \"../claude-code/wire.js\";\n\nconst HOST: PlatformId = \"cursor\";\nconst MCP_ROOT_KEY = \"mcpServers\";\n\n/**\n * Native hooks.json version Cursor expects. Exported as the SINGLE source of\n * truth for Cursor's hooks-file version, shared with the `cursor-plugin`\n * package emitter so the live install + the packaged bundle can never stamp\n * different versions (see core/package-formats/cursor.ts).\n */\nexport const CURSOR_HOOKS_VERSION = 1;\n\n/**\n * Cursor-native hook event names, in the lower-camel form Cursor reads from\n * hooks.json. The first four are the events the proven context-mode adapter\n * registers; postToolUseFailure / subagentStart / subagentStop are Cursor's\n * documented \"Subagent (Task tool) lifecycle\" + tool-failure hooks.\n */\nconst CURSOR_EVENT = {\n PreToolUse: \"preToolUse\",\n PostToolUse: \"postToolUse\",\n SessionStart: \"sessionStart\",\n Stop: \"stop\",\n PostToolUseFailure: \"postToolUseFailure\",\n SubagentStart: \"subagentStart\",\n SubagentStop: \"subagentStop\",\n // Lifecycle/prompt events Cursor 1.7+ documents (cursor.com/docs/hooks):\n // sessionEnd is fire-and-forget; preCompact is observational (cannot block);\n // beforeSubmitPrompt fires before a prompt is sent and CAN prevent submission\n // (Cursor itself matches beforeSubmitPrompt against the value \"UserPromptSubmit\").\n SessionEnd: \"sessionEnd\",\n PreCompact: \"preCompact\",\n UserPromptSubmit: \"beforeSubmitPrompt\",\n} as const;\n\n/**\n * Map our normalized event names to Cursor's native hook event names. Only the\n * events Cursor actually supports are present; everything else has no Cursor\n * equivalent and is reported as a skip/warn at install time.\n *\n * PermissionRequest is deliberately ABSENT: Cursor has no permission-dialog\n * event — its permission gate is the OUTPUT field `permission: \"allow\"|\"deny\"|\n * \"ask\"` of the before* hooks (beforeShellExecution / beforeMCPExecution /\n * beforeReadFile / preToolUse), not an observable event. Install reports the\n * standard skip-warn for it.\n *\n * Exported as the SINGLE source of truth for canonical→Cursor-native event\n * mapping, shared with the `cursor-plugin` package emitter (see\n * core/package-formats/cursor.ts) so the packaged bundle's hooks.json keys can\n * never silently diverge from the live install adapter's.\n */\nexport const CURSOR_EVENT_MAP: Partial<Record<HookEventName, string>> = {\n PreToolUse: CURSOR_EVENT.PreToolUse,\n PostToolUse: CURSOR_EVENT.PostToolUse,\n SessionStart: CURSOR_EVENT.SessionStart,\n Stop: CURSOR_EVENT.Stop,\n PostToolUseFailure: CURSOR_EVENT.PostToolUseFailure,\n SubagentStart: CURSOR_EVENT.SubagentStart,\n SubagentStop: CURSOR_EVENT.SubagentStop,\n SessionEnd: CURSOR_EVENT.SessionEnd,\n PreCompact: CURSOR_EVENT.PreCompact,\n UserPromptSubmit: CURSOR_EVENT.UserPromptSubmit,\n};\n\n/** A single Cursor native hook entry — a flat command object. */\ninterface CursorHookEntry {\n command: string;\n matcher?: string;\n}\n\n/** Native MCP server entry shapes Cursor accepts under `mcpServers`. */\ninterface CursorStdioServer {\n command: string;\n args?: string[];\n env?: Record<string, string>;\n cwd?: string;\n}\ninterface CursorHttpServer {\n url: string;\n headers?: Record<string, string>;\n}\n\n/** Raw Cursor hook stdin payload (snake_case wire fields). */\ninterface CursorWireInput {\n connector?: unknown;\n tool_name?: string;\n tool_input?: Record<string, unknown>;\n tool_output?: string;\n error_message?: string;\n cwd?: string;\n workspace_roots?: string[];\n conversation_id?: string;\n session_id?: string;\n generation_id?: string;\n source?: string;\n trigger?: string;\n status?: string;\n loop_count?: number;\n stop_hook_active?: boolean;\n\n // beforeSubmitPrompt (UserPromptSubmit) — the submitted prompt text.\n // sessionEnd — the documented end reason. Both field names are taken\n // verbatim from cursor.com/docs/hooks (snake_case wire).\n prompt?: string;\n reason?: string;\n\n // postToolUseFailure — Cursor's existing error vocabulary is error_message;\n // the Claude-compatible names are accepted defensively (unverified wire).\n error?: string;\n tool_use_id?: string;\n is_interrupt?: boolean;\n duration_ms?: number;\n\n // subagentStart / subagentStop (Task-tool lifecycle). Both name families are\n // parsed defensively: agent_* (Claude-compatible) and subagent_* (Cursor-ish).\n agent_id?: string;\n agent_type?: string;\n subagent_id?: string;\n subagent_type?: string;\n last_assistant_message?: string;\n}\n\nexport class CursorAdapter extends BaseAdapter implements Adapter {\n readonly id: PlatformId = HOST;\n readonly name = \"Cursor\";\n readonly paradigm: HookParadigm = \"json-stdio\";\n\n readonly capabilities: PlatformCapabilities = {\n // Memory surface: AGENTS.md-first managed block via the BaseAdapter default\n // (memoryTargets: project <projectDir>/AGENTS.md; user scope where documented).\n supportsMemory: true,\n // Cursor natively supports pre/post tool-use, session start/end, prompt\n // submission, context compaction, and stop (cursor.com/docs/hooks, v1.7+).\n preToolUse: true,\n postToolUse: true,\n preCompact: true,\n sessionStart: true,\n sessionEnd: true,\n userPromptSubmit: true,\n stop: true,\n notification: false,\n // Newer events: Cursor has dedicated postToolUseFailure + subagentStart/\n // subagentStop hooks. permissionRequest stays unset — Cursor's permission\n // gate is an OUTPUT field of its before* hooks, not an observable event\n // (see the EVENT_MAP note).\n postToolUseFailure: true,\n subagentStart: true,\n subagentStop: true,\n // Cursor's preToolUse can rewrite tool input (updated_input) but cannot\n // rewrite already-emitted tool output.\n canModifyArgs: true,\n canModifyOutput: false,\n canInjectSessionContext: true,\n transports: [\"stdio\", \"http\"],\n // Content surfaces: Cursor supports all three (commands, skills, subagents).\n supportsCommands: true,\n supportsSkills: true,\n supportsSubagents: true,\n // Native passthrough hooks: Cursor documents many granular hooks with NO\n // canonical analog — beforeShellExecution / afterShellExecution /\n // beforeMCPExecution / afterMCPExecution / beforeReadFile / afterFileEdit /\n // beforeTabFileRead / afterTabFileEdit / workspaceOpen / afterAgentResponse /\n // afterAgentThought (cursor.com/docs/hooks). They are\n // host-specific (below the >=3-host core bar; see\n // docs/research/host-specific-hook-events-design.md). A connector reaches them\n // by declaring platforms[\"cursor\"].nativeHooks; installHooks writes those\n // event-name keys verbatim into hooks.json, and the generic uninstall reverses\n // them.\n supportsNativeHooks: true,\n // Cursor has a command-driven status line (`/statusline` → `statusLine` in\n // ~/.cursor/cli-config.json, GLOBAL scope only) per the Cursor changelog, but\n // the config-key shape + the Claude-parity stdin payload are sourced from a\n // community tool (agent-status-pills), not first-party Cursor docs — payload\n // field names unverified. Deferred pending a live cursor-agent capture; not a\n // permanent gap; user-scope only when wired.\n };\n\n // ── Detection ────────────────────────────────────────────────────────────\n\n detectInstalled(projectDir: string): DetectedPlatform {\n const userDir = join(homedir(), \".cursor\");\n const userMcp = join(userDir, \"mcp.json\");\n const userHooks = join(userDir, \"hooks.json\");\n const projectDirCursor = join(projectDir, \".cursor\");\n const installed =\n existsSync(userDir) ||\n existsSync(userMcp) ||\n existsSync(userHooks) ||\n existsSync(projectDirCursor);\n return {\n id: this.id,\n name: this.name,\n installed,\n paradigm: this.paradigm,\n capabilities: this.capabilities,\n configPath: userMcp,\n scope: \"user\",\n reason: installed\n ? `found Cursor config under ${userDir}`\n : `no Cursor config at ${userDir}`,\n confidence: installed ? \"high\" : \"low\",\n };\n }\n\n // ── Native paths ─────────────────────────────────────────────────────────\n\n getConfigDir(ctx: InstallContext): string {\n return ctx.scope === \"project\"\n ? join(ctx.projectDir, \".cursor\")\n : join(homedir(), \".cursor\");\n }\n\n getServerConfigPath(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"mcp.json\");\n }\n\n getHookConfigPath(ctx: InstallContext): string {\n return join(this.getConfigDir(ctx), \"hooks.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 cursor\"\n : \"connector declares no MCP server\",\n },\n ];\n }\n\n // Shallow-merge any per-platform server override into the base ServerDef.\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 Cursor's native mcpServers entry. */\n private renderServerEntry(\n ctx: InstallContext,\n server: ServerDef,\n ): CursorStdioServer | CursorHttpServer {\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: CursorStdioServer = { command: this.rewrite(command) };\n if (args.length > 0) entry.args = args.map((a) => this.rewrite(a));\n const env = this.renderEnv(server.env);\n if (env) entry.env = env;\n if (server.cwd) entry.cwd = this.rewrite(server.cwd);\n return entry;\n }\n\n // http (and any other remote transport we surface) — Cursor registers a URL.\n const entry: CursorHttpServer = { url: this.rewrite(server.url ?? \"\") };\n const headers = this.renderEnv(server.headers);\n if (headers) entry.headers = headers;\n return entry;\n }\n\n /**\n * Render env/header values. Cursor supports its own `${env:VAR}` native\n * interpolation, so translate `${env:VAR}` refs to that native token rather\n * than baking secrets into the file. 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)) out[k] = this.rewrite(v);\n return out;\n }\n\n /** Translate `${env:VAR(:-default)}` to Cursor's native `${env:VAR}` token. */\n private rewrite(value: string): string {\n return rewriteEnvRefs(value, cursorEnvToken);\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 events. nativeHooks is a\n // sibling, cursor-scoped declaration on the same override and installs\n // 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: override?.hooks === false ? \"hooks disabled for cursor\" : \"connector declares no hooks\",\n },\n ];\n }\n\n // Normalized events go through the engine's mapEvent/warn path; native\n // event-name keys ride the separate `native` pass (verbatim keys, EXACT\n // command, the `(native)` detail) — see the descriptor + base.upsertHookEntries.\n const pending = normalizedEvents.map((event) => ({\n event,\n matcher: connector.hooks[event]?.matcher ?? \"\",\n }));\n const native = nativeEvents.map((event) => ({\n event,\n matcher: nativeHooks[event]?.matcher ?? \"\",\n }));\n return this.upsertHookEntries(\n ctx,\n this.getHookConfigPath(ctx),\n pending,\n this.hookDescriptor(ctx),\n native,\n );\n }\n\n uninstallHooks(ctx: InstallContext): ChangeRecord[] {\n return this.removeHookEntries(ctx, this.getHookConfigPath(ctx), this.hookDescriptor(ctx));\n }\n\n /**\n * Cursor's hook-merge descriptor (FLAT shape `{ command, matcher? }`):\n * - mapEvent renames canonical → Cursor's lower-camel native key\n * (CURSOR_EVENT_MAP); an unmapped event warn-skips (no Cursor equivalent).\n * - renderEntry omits the `matcher` key when the matcher is falsy — this\n * `{command}` vs `{command,matcher}` distinction is load-bearing on-disk\n * bytes (Cursor's flat entry shape), reproduced exactly here.\n * - install find is connector-generic (ANY of our commands at the flat\n * `entry.command`); uninstall drops whole owned entries (flat — NO\n * stripInner). The version stamp is install-only via onMutate.\n * - the native pass uses EXACT-command ownership so a native key coinciding\n * with a normalized event's mapped key adds a SECOND distinct command\n * rather than clobbering the normalized entry.\n */\n private hookDescriptor(ctx: InstallContext): HookMergeDescriptor<CursorHookEntry> {\n return {\n mapEvent: (e) => CURSOR_EVENT_MAP[e as HookEventName],\n unmappedWarnDetail: (e) => `${e} has no Cursor hook equivalent — skipped`,\n renderEntry: (_event, matcher, command) =>\n matcher ? { command, matcher } : { command },\n entryOwnsCommand: (entry, _command) => this.isOurCommand(entry.command, ctx),\n ownsEntryForRemove: (c) => (entry) => this.isOurCommand(entry.command, c),\n skipDetail: (e) => `hooks.${e} already registered`,\n removeDetail: (e, n) => `hooks.${e} (${n})`,\n absentDetail: \"no hooks section present\",\n noMatchDetail: \"no matching hook entries\",\n onMutate: (file) => {\n (file as { version?: number }).version = CURSOR_HOOKS_VERSION;\n },\n nativeOwnsCommand: (entry, command) => entry.command === command,\n nativeSkipDetail: (e) => `hooks.${e} (native) already registered`,\n nativeMutateDetail: (e) => `hooks.${e} (native)`,\n };\n }\n\n /** True when a hook command references our home binary AND this connector id\n * (anchored so a shared-prefix id can't collide — see isHomeBinHookCommand). */\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 // CONTENT-ONLY: pure native-file writers under <configDir>/{commands,skills,\n // agents}. No runtime dispatch, no home-bin pointer, no telemetry wrap. Each\n // method is idempotent (byte-identical → skip) via BaseAdapter.writeContentFile\n // and reversible via removeContentFile. Honors platforms[\"cursor\"] per-surface\n // false to skip. Cursor commands are BODY-ONLY markdown (no frontmatter);\n // skills are the uniform <name>/SKILL.md + resources; subagents are md+fm.\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 /** Native command file path: <configDir>/commands/<name>.md. */\n private commandPath(ctx: InstallContext, name: string): string {\n return join(this.commandsDir(ctx), `${name}.md`);\n }\n /** Native skill dir: <configDir>/skills/<name>. */\n private skillDir(ctx: InstallContext, name: string): string {\n return join(this.skillsDir(ctx), name);\n }\n /** Native subagent file path: <configDir>/agents/<name>.md. */\n private subagentPath(ctx: InstallContext, name: string): string {\n return join(this.agentsDir(ctx), `${name}.md`);\n }\n\n // ── Commands ──────────────────────────────────────────────────────────────\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 cursor\" }];\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(\n this.commandPath(ctx, cmd.name),\n this.renderCommand(cmd),\n ctx.dryRun,\n ),\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 /**\n * Render a Cursor command: BODY-ONLY markdown (no frontmatter). Cursor reads\n * the file as the command prompt verbatim. We prepend the one-line description\n * as an HTML comment header when present so authoring intent survives the\n * round-trip without leaking into the rendered prompt. A description containing\n * \"-->\" would prematurely CLOSE the HTML comment and leak the remainder into\n * the prompt, so we neutralize that sequence before embedding it.\n */\n private renderCommand(cmd: CommandDef): string {\n if (!cmd.description) return `${cmd.prompt}\\n`;\n // Break any literal comment-close so it cannot terminate our header early.\n const safe = cmd.description.replace(/--+>/g, (m) => m.replace(/>/g, \"&gt;\"));\n return `<!-- ${safe} -->\\n\\n${cmd.prompt}\\n`;\n }\n\n // ── Skills ────────────────────────────────────────────────────────────────\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 cursor\" }];\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\"), renderSkillMd(skill), ctx.dryRun),\n );\n // Bundle any resource files beside SKILL.md (relative path → contents).\n // Defense-in-depth: skip+warn on any key that escapes the skill dir\n // (config-time validation already rejects these, but never trust input).\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 // Remove only the files we wrote (SKILL.md + declared resources), then the\n // skill dir itself when we own its full contents.\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; // never delete outside the skill dir\n changes.push(this.removeContentFile(target, ctx.dryRun));\n }\n // Only remove the skill dir when WE own its full contents — never rm -rf a\n // dir that still holds user-added / sibling-tool / shared files.\n changes.push(this.removeDirIfEmpty(dir, ctx.dryRun));\n }\n return changes;\n }\n\n // ── Subagents ───────────────────────────────────────────────────────────────\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 cursor\" }];\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(\n this.subagentPath(ctx, agent.name),\n this.renderSubagent(agent),\n ctx.dryRun,\n ),\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 /** Render a Cursor subagent to md+frontmatter (name, description, model, readonly) + prompt body. */\n private renderSubagent(agent: SubagentDef): string {\n const frontmatter: Record<string, unknown> = {\n name: agent.name,\n description: agent.description,\n };\n if (agent.model !== undefined) frontmatter.model = agent.model;\n if (agent.readonly !== undefined) frontmatter.readonly = agent.readonly;\n if (agent.extra) Object.assign(frontmatter, agent.extra);\n return this.renderFrontmatterMd(frontmatter, agent.prompt);\n }\n\n // ── Diagnostics ──────────────────────────────────────────────────────────\n\n override getHealthChecks(ctx: InstallContext): readonly HealthCheck[] {\n const mcpPath = this.getServerConfigPath(ctx);\n const hooksPath = this.getHookConfigPath(ctx);\n const checks: HealthCheck[] = [\n {\n name: `${this.name}: mcp.json present`,\n check: () =>\n existsSync(mcpPath)\n ? { status: \"OK\", detail: mcpPath }\n : { status: \"FAIL\", detail: `not found: ${mcpPath}` },\n },\n {\n name: `${this.name}: hooks.json present`,\n check: () => {\n // Same \"only assert what the connector declares\" rule as the\n // content-surface checks below: a hookless connector never writes\n // hooks.json, so its absence is healthy, not a failure.\n if (ctx.connector.hookEvents.length === 0) {\n return { status: \"OK\", detail: \"no hooks declared\" };\n }\n return existsSync(hooksPath)\n ? { status: \"OK\", detail: hooksPath }\n : { status: \"FAIL\", detail: `not found: ${hooksPath}` };\n },\n },\n ];\n\n // Content-surface checks: only assert presence of the files this connector\n // declares (skip silently for surfaces it never asked for).\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 Cursor stdin JSON → normalized event ──────────────────\n\n parseEvent(event: HookEventName, raw: unknown): NormalizedEvent {\n const input = (raw ?? {}) as CursorWireInput;\n const connectorId = typeof input.connector === \"string\" ? input.connector : \"\";\n const sessionId = extractSessionId(input);\n const projectDir = this.getProjectDir(input);\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 toolOutput = input.tool_output ?? input.error_message;\n const ev: PostToolUseEvent = {\n ...base,\n toolName: input.tool_name ?? \"\",\n toolInput: input.tool_input ?? {},\n ...(toolOutput !== undefined ? { toolOutput } : {}),\n ...(input.error_message ? { isError: true } : {}),\n };\n return ev;\n }\n case \"SessionStart\": {\n const ev: SessionStartEvent = {\n ...base,\n source: normalizeSessionSource(input.source ?? input.trigger),\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 \"SessionEnd\": {\n // Cursor sessionEnd: { session_id, reason, duration_ms, ... }. session_id\n // is already folded into base.sessionId via extractSessionId; only the\n // documented `reason` enum maps onto the normalized SessionEnd shape.\n const ev: SessionEndEvent = {\n ...base,\n ...(typeof input.reason === \"string\" ? { reason: input.reason } : {}),\n };\n return ev;\n }\n case \"UserPromptSubmit\": {\n // Cursor beforeSubmitPrompt: { prompt, attachments }. attachments has no\n // normalized field and is preserved via base.raw; only `prompt` maps.\n const ev: UserPromptSubmitEvent = {\n ...base,\n prompt: typeof input.prompt === \"string\" ? input.prompt : \"\",\n };\n return ev;\n }\n case \"PreCompact\": {\n // Cursor preCompact: { trigger: \"auto\"|\"manual\", context_*… }. Only the\n // documented `trigger` enum maps onto the normalized PreCompact shape.\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 \"PostToolUseFailure\": {\n // Cursor's established error field is error_message; fall back to the\n // Claude-compatible `error` defensively.\n const error = input.error_message ?? input.error ?? \"\";\n const ev: PostToolUseFailureEvent = {\n ...base,\n toolName: input.tool_name ?? \"\",\n toolInput: input.tool_input ?? {},\n error,\n ...(typeof input.tool_use_id === \"string\"\n ? { toolUseId: input.tool_use_id }\n : {}),\n ...(typeof input.is_interrupt === \"boolean\"\n ? { isInterrupt: input.is_interrupt }\n : {}),\n ...(typeof input.duration_ms === \"number\"\n ? { durationMs: input.duration_ms }\n : {}),\n };\n return ev;\n }\n case \"SubagentStart\": {\n const agentId = input.agent_id ?? input.subagent_id;\n const agentType = input.agent_type ?? input.subagent_type;\n const ev: SubagentStartEvent = {\n ...base,\n ...(typeof agentId === \"string\" ? { agentId } : {}),\n ...(typeof agentType === \"string\" ? { agentType } : {}),\n };\n return ev;\n }\n case \"SubagentStop\": {\n const agentId = input.agent_id ?? input.subagent_id;\n const agentType = input.agent_type ?? input.subagent_type;\n const ev: SubagentStopEvent = {\n ...base,\n ...(typeof agentId === \"string\" ? { agentId } : {}),\n ...(typeof agentType === \"string\" ? { agentType } : {}),\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 default: {\n // Cursor never delivers Notification / PermissionRequest (no native\n // equivalent — permission is an OUTPUT field of its before* hooks, not\n // an event). If the runtime dispatches one anyway, fail loudly.\n throw new Error(`unsupported cursor hook event: ${String(event)}`);\n }\n }\n }\n\n private getProjectDir(input: CursorWireInput): string | undefined {\n return input.cwd ?? input.workspace_roots?.[0] ?? undefined;\n }\n\n // ── Runtime: normalized response → Cursor native hook reply ──────────────\n\n formatReply(event: HookEventName, response: HookResponse): HookReply {\n const decision = response.decision ?? \"allow\";\n\n // postToolUseFailure (feedback beside the error) and subagentStart (context\n // injected into the SUBAGENT's conversation) are observe/context-only on\n // Cursor: \"context\" emits additional_context, and a \"deny\" DEGRADES to the\n // same shape carrying the reason (the tool already failed / the spawn is\n // not blockable). Everything else is a minimal no-op payload (Cursor\n // rejects empty stdout as \"no valid response\").\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 return this.stdout({ additional_context: context ?? \"\" });\n }\n\n // beforeSubmitPrompt (UserPromptSubmit) is a BLOCK gate, not a permission/\n // context surface: its only documented output is { continue, user_message }\n // (cursor.com/docs/hooks). A \"deny\" prevents submission (continue:false +\n // reason); it cannot inject context (no additional_context/agent_message\n // field), so every non-deny decision is a no-op continue:true.\n if (event === \"UserPromptSubmit\") {\n if (decision === \"deny\") {\n return this.stdout({\n continue: false,\n user_message: response.reason ?? \"Blocked by hook\",\n });\n }\n return this.stdout({ continue: true });\n }\n\n // sessionEnd is fire-and-forget (the response is logged but not used) and\n // preCompact is observational (cannot block or modify compaction) per\n // cursor.com/docs/hooks — neither carries a decision Cursor honors, so both\n // are an unconditional no-op passthrough (mirrors Stop).\n if (event === \"SessionEnd\" || event === \"PreCompact\") {\n return { exitCode: 0 };\n }\n\n // deny → block the action with a user-facing message. (On SubagentStop\n // this follows the adapter's Stop idiom — the deny carries Stop semantics.)\n if (decision === \"deny\") {\n return this.stdout({\n permission: \"deny\",\n user_message: response.reason ?? \"Blocked by hook\",\n });\n }\n\n // ask → prompt the user to confirm.\n if (decision === \"ask\") {\n return this.stdout({\n permission: \"ask\",\n user_message: response.reason ?? \"Confirmation required by hook\",\n });\n }\n\n // modify → rewrite PreToolUse input (only where Cursor supports it).\n if (decision === \"modify\") {\n if (event === \"PreToolUse\" && response.updatedInput) {\n return this.stdout({ updated_input: response.updatedInput });\n }\n // Output rewrite is unsupported on Cursor; fall through to allow.\n }\n\n // context → inject soft guidance. PreToolUse uses `agent_message`; Post and\n // SessionStart use `additional_context`.\n if (decision === \"context\" && response.additionalContext) {\n return event === \"PreToolUse\"\n ? this.stdout({ agent_message: response.additionalContext })\n : this.stdout({ additional_context: response.additionalContext });\n }\n\n // SessionStart always emits valid JSON even on a no-op (Cursor rejects empty\n // stdout as \"no valid response\").\n if (event === \"SessionStart\") {\n return this.stdout({ additional_context: response.additionalContext ?? \"\" });\n }\n\n // allow / void → minimal no-op payload (Cursor rejects empty stdout).\n if (event === \"PreToolUse\") return this.stdout({ agent_message: \"\" });\n if (event === \"PostToolUse\") return this.stdout({ additional_context: \"\" });\n return { exitCode: 0 };\n }\n\n private stdout(payload: unknown): HookReply {\n return { exitCode: 0, stdout: JSON.stringify(payload) };\n }\n}\n\n/** Cursor native interpolation token: `${env:VAR}` → `${env:VAR}` (passthrough). */\nfunction cursorEnvToken(name: string): string {\n return `\\${env:${name}}`;\n}\n\nfunction extractSessionId(input: CursorWireInput): string {\n if (typeof input.conversation_id === \"string\") return input.conversation_id;\n if (typeof input.session_id === \"string\") return input.session_id;\n return \"\";\n}\n\nexport const adapter = new CursorAdapter();\nexport default adapter;\n"],"mappings":"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","names":["entry"]}
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readRegisteredMeta
4
- } from "./chunk-OLI5SD6I.js";
5
- import "./chunk-YEJCNOET.js";
6
- import "./chunk-HU6DZZBG.js";
4
+ } from "./chunk-UXG64P6R.js";
5
+ import "./chunk-WZWK4ICE.js";
6
+ import "./chunk-SBV2QJ5C.js";
7
7
  import {
8
8
  addLedgerOwner,
9
9
  configPatchManualEdit,
@@ -30,13 +30,11 @@ import {
30
30
  rewriteEnvRefs
31
31
  } from "./chunk-DBQMX75U.js";
32
32
  import {
33
- BaseAdapter
34
- } from "./chunk-3I7UG52L.js";
35
- import {
33
+ BaseAdapter,
36
34
  renderCommandMd,
37
35
  renderSkillMd,
38
36
  renderSubagentMd
39
- } from "./chunk-IEGR4TP3.js";
37
+ } from "./chunk-A767JFHW.js";
40
38
  import {
41
39
  buildHomeBinStatuslineCommand,
42
40
  buildWrappedStdio,
@@ -1484,4 +1482,4 @@ export {
1484
1482
  claudeSensitiveKeyViolation,
1485
1483
  claude_code_default as default
1486
1484
  };
1487
- //# sourceMappingURL=claude-code-JLPFUZ4V.js.map
1485
+ //# sourceMappingURL=claude-code-HXIVRZCY.js.map