@ken-jo/agent-connector 0.4.75 → 0.4.79

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 (162) hide show
  1. package/dist/{action-TCKBTTZX.js → action-OHGFVKMC.js} +14 -14
  2. package/dist/{amazon-q-CB4XFX7T.js → amazon-q-B52EY2SV.js} +5 -5
  3. package/dist/{amp-6Q5OYHNW.js → amp-UXABVUKC.js} +5 -5
  4. package/dist/{antigravity-WIK3XBN5.js → antigravity-RZHN53VB.js} +6 -6
  5. package/dist/{antigravity-cli-L3RZMF6V.js → antigravity-cli-KODEKUTM.js} +6 -6
  6. package/dist/{chunk-D6ZJS4ND.js → chunk-4FWETID5.js} +2 -2
  7. package/dist/{chunk-Q42SEI7W.js → chunk-4HVQ7IUM.js} +3 -3
  8. package/dist/{chunk-IU42THN7.js → chunk-4NSU3KWX.js} +2 -2
  9. package/dist/{chunk-7CZKXXBD.js → chunk-56R2ER7K.js} +2 -2
  10. package/dist/{chunk-5LAFKXFM.js → chunk-7NXEHZAK.js} +3 -3
  11. package/dist/{chunk-MDZG5QHB.js → chunk-AMK2K6XZ.js} +2 -2
  12. package/dist/{chunk-TZ5KGCE2.js → chunk-AY3RGRTT.js} +2 -2
  13. package/dist/{chunk-TO57WYBB.js → chunk-HORHRHNG.js} +9 -3
  14. package/dist/chunk-HORHRHNG.js.map +1 -0
  15. package/dist/{chunk-2HCJV6UO.js → chunk-IXOQDZWC.js} +9 -2
  16. package/dist/chunk-IXOQDZWC.js.map +1 -0
  17. package/dist/{chunk-MHDQWZ4A.js → chunk-LKAVD4HP.js} +20 -10
  18. package/dist/chunk-LKAVD4HP.js.map +1 -0
  19. package/dist/{chunk-7QRUZAUG.js → chunk-LN76OGNR.js} +2 -2
  20. package/dist/{chunk-DI6OWKH2.js → chunk-NBUEL74R.js} +3 -3
  21. package/dist/{chunk-7ITLLYWB.js → chunk-PZHB5TVA.js} +5 -5
  22. package/dist/{chunk-AXAHW2KU.js → chunk-QKLJU4JX.js} +2 -2
  23. package/dist/{chunk-TW4DVR4V.js → chunk-S4E6QQEM.js} +2 -2
  24. package/dist/{chunk-FUXUEXDP.js → chunk-UBB7T54N.js} +3 -3
  25. package/dist/{chunk-OEQJGBBW.js → chunk-UYZ53KWS.js} +6 -6
  26. package/dist/{chunk-2L6LTQ6L.js → chunk-VD4EG6SG.js} +21 -10
  27. package/dist/chunk-VD4EG6SG.js.map +1 -0
  28. package/dist/{chunk-HKM3HUOK.js → chunk-VKRGQLY4.js} +18 -18
  29. package/dist/{chunk-NUGMVVV2.js → chunk-VVFDU4IX.js} +4 -4
  30. package/dist/{chunk-Q5LECKZL.js → chunk-X457NOFE.js} +36 -36
  31. package/dist/{chunk-ECSRTK4M.js → chunk-YJP3KGLM.js} +4 -4
  32. package/dist/{chunk-ALVXORZM.js → chunk-YYNXIUR2.js} +2 -2
  33. package/dist/{chunk-24K6JOKV.js → chunk-ZXX5DVSE.js} +5 -5
  34. package/dist/{claude-code-HFBAAVWS.js → claude-code-T6ZRCMA7.js} +9 -9
  35. package/dist/cli/sdk.js +7 -7
  36. package/dist/cli.js +1 -1
  37. package/dist/{cline-26W4FEZ6.js → cline-NNMVCECA.js} +5 -5
  38. package/dist/{codebuff-J5KEEBIL.js → codebuff-RJIDSEU3.js} +5 -5
  39. package/dist/{codex-JKQ6TLRI.js → codex-RHKQKNNG.js} +5 -5
  40. package/dist/{continue-KQSJUSWX.js → continue-MNM7YVJY.js} +6 -6
  41. package/dist/{copilot-cli-YBNKLYUB.js → copilot-cli-SMTX5F65.js} +5 -5
  42. package/dist/{crush-JTWTZIPB.js → crush-NYDBHIJE.js} +5 -5
  43. package/dist/{cursor-2NIZSDZ4.js → cursor-AOELDNZU.js} +6 -6
  44. package/dist/{detect-CWEIQCRC.js → detect-ALAKE54S.js} +4 -4
  45. package/dist/{doctor-AC437ZAW.js → doctor-UNF7FCF4.js} +20 -20
  46. package/dist/{droid-HF2AIFB2.js → droid-PTCH2K7Y.js} +5 -5
  47. package/dist/{gemini-cli-2EOK26S2.js → gemini-cli-QGLN2UMS.js} +5 -5
  48. package/dist/{goose-55JOTXS5.js → goose-DQ6GSZ5O.js} +6 -6
  49. package/dist/{hermes-QVZOZU4B.js → hermes-E47IG63A.js} +6 -6
  50. package/dist/{hook-VYD3OCLM.js → hook-GM2IDA3C.js} +14 -14
  51. package/dist/index.js +5 -5
  52. package/dist/{install-S6BYIJ62.js → install-7O4XWH7T.js} +16 -16
  53. package/dist/{jetbrains-copilot-DZ2ATXFN.js → jetbrains-copilot-4IOT3I2Y.js} +5 -5
  54. package/dist/{kilo-GJNSBWVV.js → kilo-TAHOPT2Q.js} +5 -5
  55. package/dist/{kilo-cli-2CCB3DBI.js → kilo-cli-X4NPJWGX.js} +5 -5
  56. package/dist/{kimi-YRPCSB6N.js → kimi-Z7L2LEEI.js} +5 -5
  57. package/dist/{kiro-BUOQFASX.js → kiro-YZ4TTZGD.js} +5 -5
  58. package/dist/{leaderboard-SUSUDKHR.js → leaderboard-DVW4WYJ6.js} +5 -5
  59. package/dist/{mimo-code-V4FP5PUJ.js → mimo-code-G2CBZ4M6.js} +5 -5
  60. package/dist/{mux-CMJSM42O.js → mux-JNM3F2NW.js} +5 -5
  61. package/dist/{nemoclaw-VP56PGKC.js → nemoclaw-SHA4IUML.js} +6 -6
  62. package/dist/{omp-OOFGD3GG.js → omp-OOVUNXME.js} +5 -5
  63. package/dist/openclaw-BD56E5MV.js +17 -0
  64. package/dist/{opencode-MKLHSQRD.js → opencode-W2RK4M7G.js} +5 -5
  65. package/dist/{package-KOAAVKHH.js → package-H5V3AZHR.js} +12 -12
  66. package/dist/{pi-NMVL7OFL.js → pi-I7BLL4EI.js} +5 -5
  67. package/dist/{qwen-code-2XE2T6F4.js → qwen-code-JG7AF442.js} +6 -6
  68. package/dist/{roo-code-YJOIKCCS.js → roo-code-L5F7S6QH.js} +5 -5
  69. package/dist/runtime/index.d.ts +11 -0
  70. package/dist/runtime/index.js +12 -12
  71. package/dist/sdk/index.js +6 -6
  72. package/dist/sdk/test.js +10 -10
  73. package/dist/{serve-BU23QUSJ.js → serve-WMO2TUW3.js} +24 -17
  74. package/dist/serve-WMO2TUW3.js.map +1 -0
  75. package/dist/{status-N5LCQQ3R.js → status-WRLBTBRE.js} +10 -10
  76. package/dist/{statusline-442XOF7R.js → statusline-EUD4DMIP.js} +13 -13
  77. package/dist/{telemetry-V4YQL2NU.js → telemetry-U3LGMR3D.js} +10 -10
  78. package/dist/{trae-QSV2JZFT.js → trae-Z7CQ2A2Q.js} +5 -5
  79. package/dist/{uninstall-WGEKTCDZ.js → uninstall-TWPUEJEC.js} +16 -16
  80. package/dist/{upgrade-IH7CKPTO.js → upgrade-EM6Y7QLH.js} +16 -16
  81. package/dist/{usage-DI7XRCKM.js → usage-3HQDTXGY.js} +2 -2
  82. package/dist/{usage-event-2FCU55AN.js → usage-event-DWIGKO7V.js} +13 -13
  83. package/dist/{vscode-copilot-R23RTVST.js → vscode-copilot-LU5NC4ZS.js} +5 -5
  84. package/dist/{warp-B72XSQ5G.js → warp-4PPG5LOM.js} +5 -5
  85. package/dist/{windsurf-642VBMQ2.js → windsurf-3T3RVXKM.js} +5 -5
  86. package/dist/{zed-6UJS7JKB.js → zed-LLOAUXSA.js} +5 -5
  87. package/package.json +1 -1
  88. package/dist/chunk-2HCJV6UO.js.map +0 -1
  89. package/dist/chunk-2L6LTQ6L.js.map +0 -1
  90. package/dist/chunk-MHDQWZ4A.js.map +0 -1
  91. package/dist/chunk-TO57WYBB.js.map +0 -1
  92. package/dist/openclaw-V73XHPXP.js +0 -17
  93. package/dist/serve-BU23QUSJ.js.map +0 -1
  94. /package/dist/{action-TCKBTTZX.js.map → action-OHGFVKMC.js.map} +0 -0
  95. /package/dist/{amazon-q-CB4XFX7T.js.map → amazon-q-B52EY2SV.js.map} +0 -0
  96. /package/dist/{amp-6Q5OYHNW.js.map → amp-UXABVUKC.js.map} +0 -0
  97. /package/dist/{antigravity-WIK3XBN5.js.map → antigravity-RZHN53VB.js.map} +0 -0
  98. /package/dist/{antigravity-cli-L3RZMF6V.js.map → antigravity-cli-KODEKUTM.js.map} +0 -0
  99. /package/dist/{chunk-D6ZJS4ND.js.map → chunk-4FWETID5.js.map} +0 -0
  100. /package/dist/{chunk-Q42SEI7W.js.map → chunk-4HVQ7IUM.js.map} +0 -0
  101. /package/dist/{chunk-IU42THN7.js.map → chunk-4NSU3KWX.js.map} +0 -0
  102. /package/dist/{chunk-7CZKXXBD.js.map → chunk-56R2ER7K.js.map} +0 -0
  103. /package/dist/{chunk-5LAFKXFM.js.map → chunk-7NXEHZAK.js.map} +0 -0
  104. /package/dist/{chunk-MDZG5QHB.js.map → chunk-AMK2K6XZ.js.map} +0 -0
  105. /package/dist/{chunk-TZ5KGCE2.js.map → chunk-AY3RGRTT.js.map} +0 -0
  106. /package/dist/{chunk-7QRUZAUG.js.map → chunk-LN76OGNR.js.map} +0 -0
  107. /package/dist/{chunk-DI6OWKH2.js.map → chunk-NBUEL74R.js.map} +0 -0
  108. /package/dist/{chunk-7ITLLYWB.js.map → chunk-PZHB5TVA.js.map} +0 -0
  109. /package/dist/{chunk-AXAHW2KU.js.map → chunk-QKLJU4JX.js.map} +0 -0
  110. /package/dist/{chunk-TW4DVR4V.js.map → chunk-S4E6QQEM.js.map} +0 -0
  111. /package/dist/{chunk-FUXUEXDP.js.map → chunk-UBB7T54N.js.map} +0 -0
  112. /package/dist/{chunk-OEQJGBBW.js.map → chunk-UYZ53KWS.js.map} +0 -0
  113. /package/dist/{chunk-HKM3HUOK.js.map → chunk-VKRGQLY4.js.map} +0 -0
  114. /package/dist/{chunk-NUGMVVV2.js.map → chunk-VVFDU4IX.js.map} +0 -0
  115. /package/dist/{chunk-Q5LECKZL.js.map → chunk-X457NOFE.js.map} +0 -0
  116. /package/dist/{chunk-ECSRTK4M.js.map → chunk-YJP3KGLM.js.map} +0 -0
  117. /package/dist/{chunk-ALVXORZM.js.map → chunk-YYNXIUR2.js.map} +0 -0
  118. /package/dist/{chunk-24K6JOKV.js.map → chunk-ZXX5DVSE.js.map} +0 -0
  119. /package/dist/{claude-code-HFBAAVWS.js.map → claude-code-T6ZRCMA7.js.map} +0 -0
  120. /package/dist/{cline-26W4FEZ6.js.map → cline-NNMVCECA.js.map} +0 -0
  121. /package/dist/{codebuff-J5KEEBIL.js.map → codebuff-RJIDSEU3.js.map} +0 -0
  122. /package/dist/{codex-JKQ6TLRI.js.map → codex-RHKQKNNG.js.map} +0 -0
  123. /package/dist/{continue-KQSJUSWX.js.map → continue-MNM7YVJY.js.map} +0 -0
  124. /package/dist/{copilot-cli-YBNKLYUB.js.map → copilot-cli-SMTX5F65.js.map} +0 -0
  125. /package/dist/{crush-JTWTZIPB.js.map → crush-NYDBHIJE.js.map} +0 -0
  126. /package/dist/{cursor-2NIZSDZ4.js.map → cursor-AOELDNZU.js.map} +0 -0
  127. /package/dist/{detect-CWEIQCRC.js.map → detect-ALAKE54S.js.map} +0 -0
  128. /package/dist/{doctor-AC437ZAW.js.map → doctor-UNF7FCF4.js.map} +0 -0
  129. /package/dist/{droid-HF2AIFB2.js.map → droid-PTCH2K7Y.js.map} +0 -0
  130. /package/dist/{gemini-cli-2EOK26S2.js.map → gemini-cli-QGLN2UMS.js.map} +0 -0
  131. /package/dist/{goose-55JOTXS5.js.map → goose-DQ6GSZ5O.js.map} +0 -0
  132. /package/dist/{hermes-QVZOZU4B.js.map → hermes-E47IG63A.js.map} +0 -0
  133. /package/dist/{hook-VYD3OCLM.js.map → hook-GM2IDA3C.js.map} +0 -0
  134. /package/dist/{install-S6BYIJ62.js.map → install-7O4XWH7T.js.map} +0 -0
  135. /package/dist/{jetbrains-copilot-DZ2ATXFN.js.map → jetbrains-copilot-4IOT3I2Y.js.map} +0 -0
  136. /package/dist/{kilo-GJNSBWVV.js.map → kilo-TAHOPT2Q.js.map} +0 -0
  137. /package/dist/{kilo-cli-2CCB3DBI.js.map → kilo-cli-X4NPJWGX.js.map} +0 -0
  138. /package/dist/{kimi-YRPCSB6N.js.map → kimi-Z7L2LEEI.js.map} +0 -0
  139. /package/dist/{kiro-BUOQFASX.js.map → kiro-YZ4TTZGD.js.map} +0 -0
  140. /package/dist/{leaderboard-SUSUDKHR.js.map → leaderboard-DVW4WYJ6.js.map} +0 -0
  141. /package/dist/{mimo-code-V4FP5PUJ.js.map → mimo-code-G2CBZ4M6.js.map} +0 -0
  142. /package/dist/{mux-CMJSM42O.js.map → mux-JNM3F2NW.js.map} +0 -0
  143. /package/dist/{nemoclaw-VP56PGKC.js.map → nemoclaw-SHA4IUML.js.map} +0 -0
  144. /package/dist/{omp-OOFGD3GG.js.map → omp-OOVUNXME.js.map} +0 -0
  145. /package/dist/{openclaw-V73XHPXP.js.map → openclaw-BD56E5MV.js.map} +0 -0
  146. /package/dist/{opencode-MKLHSQRD.js.map → opencode-W2RK4M7G.js.map} +0 -0
  147. /package/dist/{package-KOAAVKHH.js.map → package-H5V3AZHR.js.map} +0 -0
  148. /package/dist/{pi-NMVL7OFL.js.map → pi-I7BLL4EI.js.map} +0 -0
  149. /package/dist/{qwen-code-2XE2T6F4.js.map → qwen-code-JG7AF442.js.map} +0 -0
  150. /package/dist/{roo-code-YJOIKCCS.js.map → roo-code-L5F7S6QH.js.map} +0 -0
  151. /package/dist/{status-N5LCQQ3R.js.map → status-WRLBTBRE.js.map} +0 -0
  152. /package/dist/{statusline-442XOF7R.js.map → statusline-EUD4DMIP.js.map} +0 -0
  153. /package/dist/{telemetry-V4YQL2NU.js.map → telemetry-U3LGMR3D.js.map} +0 -0
  154. /package/dist/{trae-QSV2JZFT.js.map → trae-Z7CQ2A2Q.js.map} +0 -0
  155. /package/dist/{uninstall-WGEKTCDZ.js.map → uninstall-TWPUEJEC.js.map} +0 -0
  156. /package/dist/{upgrade-IH7CKPTO.js.map → upgrade-EM6Y7QLH.js.map} +0 -0
  157. /package/dist/{usage-DI7XRCKM.js.map → usage-3HQDTXGY.js.map} +0 -0
  158. /package/dist/{usage-event-2FCU55AN.js.map → usage-event-DWIGKO7V.js.map} +0 -0
  159. /package/dist/{vscode-copilot-R23RTVST.js.map → vscode-copilot-LU5NC4ZS.js.map} +0 -0
  160. /package/dist/{warp-B72XSQ5G.js.map → warp-4PPG5LOM.js.map} +0 -0
  161. /package/dist/{windsurf-642VBMQ2.js.map → windsurf-3T3RVXKM.js.map} +0 -0
  162. /package/dist/{zed-6UJS7JKB.js.map → zed-LLOAUXSA.js.map} +0 -0
@@ -1,20 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runUsageEvent
4
- } from "./chunk-MHDQWZ4A.js";
4
+ } from "./chunk-LKAVD4HP.js";
5
5
  import "./chunk-OP4KBXUO.js";
6
- import "./chunk-7QRUZAUG.js";
7
- import "./chunk-TW4DVR4V.js";
8
- import "./chunk-24K6JOKV.js";
9
- import "./chunk-D6ZJS4ND.js";
6
+ import "./chunk-LN76OGNR.js";
7
+ import "./chunk-S4E6QQEM.js";
8
+ import "./chunk-ZXX5DVSE.js";
9
+ import "./chunk-4FWETID5.js";
10
10
  import "./chunk-KHO5WNTP.js";
11
- import "./chunk-5LAFKXFM.js";
12
- import "./chunk-7ITLLYWB.js";
13
- import "./chunk-Q5LECKZL.js";
14
- import "./chunk-7CZKXXBD.js";
15
- import "./chunk-TO57WYBB.js";
16
- import "./chunk-ALVXORZM.js";
17
- import "./chunk-2HCJV6UO.js";
11
+ import "./chunk-7NXEHZAK.js";
12
+ import "./chunk-PZHB5TVA.js";
13
+ import "./chunk-X457NOFE.js";
14
+ import "./chunk-56R2ER7K.js";
15
+ import "./chunk-HORHRHNG.js";
16
+ import "./chunk-YYNXIUR2.js";
17
+ import "./chunk-IXOQDZWC.js";
18
18
 
19
19
  // src/cli/commands/usage-event.ts
20
20
  import { parseArgs } from "util";
@@ -50,4 +50,4 @@ async function run(argv) {
50
50
  export {
51
51
  run
52
52
  };
53
- //# sourceMappingURL=usage-event-2FCU55AN.js.map
53
+ //# sourceMappingURL=usage-event-DWIGKO7V.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/vscode-copilot/index.ts
22
22
  import { existsSync } from "fs";
@@ -748,4 +748,4 @@ export {
748
748
  adapter,
749
749
  vscode_copilot_default as default
750
750
  };
751
- //# sourceMappingURL=vscode-copilot-R23RTVST.js.map
751
+ //# sourceMappingURL=vscode-copilot-LU5NC4ZS.js.map
@@ -5,13 +5,13 @@ 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
11
  isHomeBinHookCommand
12
- } from "./chunk-TO57WYBB.js";
13
- import "./chunk-ALVXORZM.js";
14
- import "./chunk-2HCJV6UO.js";
12
+ } from "./chunk-HORHRHNG.js";
13
+ import "./chunk-YYNXIUR2.js";
14
+ import "./chunk-IXOQDZWC.js";
15
15
 
16
16
  // src/adapters/warp/index.ts
17
17
  import { existsSync } from "fs";
@@ -339,4 +339,4 @@ export {
339
339
  adapter,
340
340
  warp_default as default
341
341
  };
342
- //# sourceMappingURL=warp-B72XSQ5G.js.map
342
+ //# sourceMappingURL=warp-4PPG5LOM.js.map
@@ -6,12 +6,12 @@ import {
6
6
  BaseAdapter,
7
7
  renderCommandMd,
8
8
  renderSkillMd
9
- } from "./chunk-NUGMVVV2.js";
9
+ } from "./chunk-VVFDU4IX.js";
10
10
  import {
11
11
  buildWrappedStdio
12
- } from "./chunk-TO57WYBB.js";
13
- import "./chunk-ALVXORZM.js";
14
- import "./chunk-2HCJV6UO.js";
12
+ } from "./chunk-HORHRHNG.js";
13
+ import "./chunk-YYNXIUR2.js";
14
+ import "./chunk-IXOQDZWC.js";
15
15
 
16
16
  // src/adapters/windsurf/index.ts
17
17
  import { existsSync, statSync } from "fs";
@@ -426,4 +426,4 @@ export {
426
426
  adapter,
427
427
  windsurf_default as default
428
428
  };
429
- //# sourceMappingURL=windsurf-642VBMQ2.js.map
429
+ //# sourceMappingURL=windsurf-3T3RVXKM.js.map
@@ -8,12 +8,12 @@ import {
8
8
  import {
9
9
  BaseAdapter,
10
10
  renderSkillMd
11
- } from "./chunk-NUGMVVV2.js";
11
+ } from "./chunk-VVFDU4IX.js";
12
12
  import {
13
13
  buildWrappedStdio
14
- } from "./chunk-TO57WYBB.js";
15
- import "./chunk-ALVXORZM.js";
16
- import "./chunk-2HCJV6UO.js";
14
+ } from "./chunk-HORHRHNG.js";
15
+ import "./chunk-YYNXIUR2.js";
16
+ import "./chunk-IXOQDZWC.js";
17
17
 
18
18
  // src/adapters/zed/index.ts
19
19
  import { existsSync } from "fs";
@@ -309,4 +309,4 @@ export {
309
309
  adapter,
310
310
  zed_default as default
311
311
  };
312
- //# sourceMappingURL=zed-6UJS7JKB.js.map
312
+ //# sourceMappingURL=zed-LLOAUXSA.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ken-jo/agent-connector",
3
- "version": "0.4.75",
3
+ "version": "0.4.79",
4
4
  "type": "module",
5
5
  "description": "Write your MCP server + hooks once; agent-connector installs and adapts them across every AI-agent platform (Claude Code, Codex, Cursor, OpenCode, Copilot, Gemini, Warp, …) and gives you default, platform-independent per-tool token telemetry.",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/ids.ts","../src/core/paths.ts"],"sourcesContent":["/** Shared connector-id grammar for author-time configs and runtime ids. */\nexport const CONNECTOR_ID_RE = /^[a-z0-9][a-z0-9-]*$/;\n\nexport function isValidConnectorId(id: unknown): id is string {\n return typeof id === \"string\" && CONNECTOR_ID_RE.test(id);\n}\n\nexport function assertConnectorId(id: unknown, label = \"connector id\"): string {\n if (isValidConnectorId(id)) return id;\n throw new Error(\n `${label} must be kebab-case matching ${CONNECTOR_ID_RE} (got ${JSON.stringify(id)})`,\n );\n}\n","/**\n * core/paths — home data-root, stable home binary, and project identity.\n *\n * Operating model (docs/ARCHITECTURE.md §3):\n * • One home data-root holds the single binary + shared telemetry + state.\n * Override with AGENT_CONNECTOR_DATA_DIR (the cross-agent shared-DB key).\n * This relocates FRAMEWORK state only — never platform-native config files.\n * • The home binary lives at a STABLE path so every host's pointer config\n * keeps working across updates (no versioned cache dir → no cache-heal bug).\n * • Per-project data is keyed by a stable project identity (git remote ||\n * normalized absolute path), hashed — not by code location.\n */\n\nimport { createHash } from \"node:crypto\";\nimport {\n chmodSync,\n existsSync,\n lstatSync,\n mkdirSync,\n readFileSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { basename, isAbsolute, join, parse, relative, resolve, sep } from \"node:path\";\n\nimport { assertConnectorId } from \"./ids.js\";\n\n/** Framework data-root: AGENT_CONNECTOR_DATA_DIR || ~/.agent-connector. */\nexport function dataRoot(): string {\n const override = process.env.AGENT_CONNECTOR_DATA_DIR;\n if (override && override.trim() !== \"\") return resolve(override);\n return join(homedir(), \".agent-connector\");\n}\n\nexport function connectorsDir(): string {\n return join(dataRoot(), \"connectors\");\n}\nexport function connectorDir(id: string): string {\n const root = resolve(connectorsDir());\n const safeId = assertConnectorId(id);\n const dir = resolve(root, safeId);\n const rel = relative(root, dir);\n if (rel === \"\" || rel.startsWith(\"..\") || isAbsolute(rel)) {\n throw new Error(`connector record path escapes ${root}: ${id}`);\n }\n return dir;\n}\nexport function backupsDir(): string {\n return join(dataRoot(), \"backups\");\n}\nexport function logsDir(): string {\n return join(dataRoot(), \"logs\");\n}\n\n/** Telemetry store path for the selected backend. */\nexport function telemetryPath(store: \"ndjson\" | \"sqlite\" = \"ndjson\"): string {\n return join(dataRoot(), store === \"sqlite\" ? \"telemetry.db\" : \"telemetry.ndjson\");\n}\n\n/** Stable, OS-correct path to the single home binary pointer. */\nexport function homeBinPath(): string {\n const name = process.platform === \"win32\" ? \"agent-connector.cmd\" : \"agent-connector\";\n return join(dataRoot(), \"bin\", name);\n}\n\nexport function ensureDir(dir: string): void {\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n}\n\n/**\n * Return the first existing symbolic-link component in `path`, or null when the\n * existing prefix is symlink-free. Stops at the first missing component so new\n * directories/files can still be created normally.\n */\nexport function firstSymlinkInPath(path: string): string | null {\n const abs = resolve(path);\n const root = parse(abs).root;\n const rest = relative(root, abs);\n if (rest === \"\") return null;\n\n let cur = root;\n for (const part of rest.split(sep)) {\n if (part === \"\") continue;\n cur = join(cur, part);\n try {\n if (lstatSync(cur).isSymbolicLink()) return cur;\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code;\n if (code === \"ENOENT\") return null;\n throw err;\n }\n }\n return null;\n}\n\nexport function assertNoSymlinkInPath(path: string): void {\n const symlink = firstSymlinkInPath(path);\n if (symlink !== null) {\n throw new Error(`${basename(path)} skipped: symbolic link in path (${symlink})`);\n }\n}\n\n/**\n * Write a stable launcher at homeBinPath() that execs the real CLI entry.\n * Avoids symlinks (Windows constraint) and versioned paths. Idempotent.\n *\n * @param cliEntry absolute path to the installed cli.js\n * @param nodePath node runtime to exec with (defaults to current process.execPath)\n * @returns the stable launcher path\n */\nexport function ensureHomeBin(cliEntry: string, nodePath: string = process.execPath): string {\n const binPath = homeBinPath();\n assertNoSymlinkInPath(binPath);\n ensureDir(join(dataRoot(), \"bin\"));\n const node = nodePath.replace(/\\\\/g, \"/\");\n const cli = cliEntry.replace(/\\\\/g, \"/\");\n if (process.platform === \"win32\") {\n writeFileSync(binPath, `@echo off\\r\\n\"${node}\" \"${cli}\" %*\\r\\n`, \"utf8\");\n } else {\n writeFileSync(binPath, `#!/bin/sh\\nexec \"${node}\" \"${cli}\" \"$@\"\\n`, \"utf8\");\n chmodSync(binPath, 0o755);\n }\n return binPath;\n}\n\n/** Read remote.origin.url from a project's .git/config without spawning git. */\nfunction gitRemoteUrl(projectDir: string): string | null {\n const cfg = join(projectDir, \".git\", \"config\");\n if (!existsSync(cfg)) return null;\n try {\n const text = readFileSync(cfg, \"utf8\");\n // Find [remote \"origin\"] ... url = X\n const lines = text.split(/\\r?\\n/);\n let inOrigin = false;\n for (const line of lines) {\n const s = line.trim();\n if (s.startsWith(\"[\")) inOrigin = /^\\[remote\\s+\"origin\"\\]$/.test(s);\n else if (inOrigin) {\n const m = s.match(/^url\\s*=\\s*(.+)$/);\n if (m && m[1]) return m[1].trim();\n }\n }\n } catch {\n /* ignore */\n }\n return null;\n}\n\nexport interface ProjectIdentity {\n /** Hashed stable key used to partition telemetry/state. */\n key: string;\n /** Human-readable label (git remote or directory name). */\n label: string;\n /** Absolute project directory. */\n dir: string;\n}\n\n/**\n * Derive a stable project identity. Prefers the git origin URL (stable across\n * clones/locations); falls back to the normalized absolute path.\n */\nexport function projectIdentity(projectDir: string): ProjectIdentity {\n const dir = resolve(projectDir);\n const remote = gitRemoteUrl(dir);\n const basis = remote ?? dir;\n const key = createHash(\"sha256\").update(basis).digest(\"hex\").slice(0, 16);\n return { key, label: remote ?? basename(dir), dir };\n}\n"],"mappings":"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","names":[]}