@de-otio/chaoskb-client 0.2.0

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 (355) hide show
  1. package/dist/cli/agent-registry/config-merger.d.ts +28 -0
  2. package/dist/cli/agent-registry/config-merger.d.ts.map +1 -0
  3. package/dist/cli/agent-registry/config-merger.js +90 -0
  4. package/dist/cli/agent-registry/config-merger.js.map +1 -0
  5. package/dist/cli/agent-registry/detector.d.ts +7 -0
  6. package/dist/cli/agent-registry/detector.d.ts.map +1 -0
  7. package/dist/cli/agent-registry/detector.js +100 -0
  8. package/dist/cli/agent-registry/detector.js.map +1 -0
  9. package/dist/cli/agent-registry/index.d.ts +26 -0
  10. package/dist/cli/agent-registry/index.d.ts.map +1 -0
  11. package/dist/cli/agent-registry/index.js +77 -0
  12. package/dist/cli/agent-registry/index.js.map +1 -0
  13. package/dist/cli/agent-registry/path-validator.d.ts +11 -0
  14. package/dist/cli/agent-registry/path-validator.d.ts.map +1 -0
  15. package/dist/cli/agent-registry/path-validator.js +69 -0
  16. package/dist/cli/agent-registry/path-validator.js.map +1 -0
  17. package/dist/cli/agent-registry/registry.json +108 -0
  18. package/dist/cli/agent-registry/types.d.ts +29 -0
  19. package/dist/cli/agent-registry/types.d.ts.map +1 -0
  20. package/dist/cli/agent-registry/types.js +2 -0
  21. package/dist/cli/agent-registry/types.js.map +1 -0
  22. package/dist/cli/bootstrap-lock.d.ts +7 -0
  23. package/dist/cli/bootstrap-lock.d.ts.map +1 -0
  24. package/dist/cli/bootstrap-lock.js +62 -0
  25. package/dist/cli/bootstrap-lock.js.map +1 -0
  26. package/dist/cli/bootstrap.d.ts +23 -0
  27. package/dist/cli/bootstrap.d.ts.map +1 -0
  28. package/dist/cli/bootstrap.js +438 -0
  29. package/dist/cli/bootstrap.js.map +1 -0
  30. package/dist/cli/commands/config.d.ts +13 -0
  31. package/dist/cli/commands/config.d.ts.map +1 -0
  32. package/dist/cli/commands/config.js +244 -0
  33. package/dist/cli/commands/config.js.map +1 -0
  34. package/dist/cli/commands/devices.d.ts +21 -0
  35. package/dist/cli/commands/devices.d.ts.map +1 -0
  36. package/dist/cli/commands/devices.js +229 -0
  37. package/dist/cli/commands/devices.js.map +1 -0
  38. package/dist/cli/commands/export.d.ts +12 -0
  39. package/dist/cli/commands/export.d.ts.map +1 -0
  40. package/dist/cli/commands/export.js +183 -0
  41. package/dist/cli/commands/export.js.map +1 -0
  42. package/dist/cli/commands/import.d.ts +26 -0
  43. package/dist/cli/commands/import.d.ts.map +1 -0
  44. package/dist/cli/commands/import.js +311 -0
  45. package/dist/cli/commands/import.js.map +1 -0
  46. package/dist/cli/commands/kb.d.ts +39 -0
  47. package/dist/cli/commands/kb.d.ts.map +1 -0
  48. package/dist/cli/commands/kb.js +138 -0
  49. package/dist/cli/commands/kb.js.map +1 -0
  50. package/dist/cli/commands/project.d.ts +6 -0
  51. package/dist/cli/commands/project.d.ts.map +1 -0
  52. package/dist/cli/commands/project.js +115 -0
  53. package/dist/cli/commands/project.js.map +1 -0
  54. package/dist/cli/commands/projects.d.ts +33 -0
  55. package/dist/cli/commands/projects.d.ts.map +1 -0
  56. package/dist/cli/commands/projects.js +189 -0
  57. package/dist/cli/commands/projects.js.map +1 -0
  58. package/dist/cli/commands/register.d.ts +8 -0
  59. package/dist/cli/commands/register.d.ts.map +1 -0
  60. package/dist/cli/commands/register.js +146 -0
  61. package/dist/cli/commands/register.js.map +1 -0
  62. package/dist/cli/commands/rotate-key.d.ts +16 -0
  63. package/dist/cli/commands/rotate-key.d.ts.map +1 -0
  64. package/dist/cli/commands/rotate-key.js +197 -0
  65. package/dist/cli/commands/rotate-key.js.map +1 -0
  66. package/dist/cli/commands/setup-sync.d.ts +2 -0
  67. package/dist/cli/commands/setup-sync.d.ts.map +1 -0
  68. package/dist/cli/commands/setup-sync.js +165 -0
  69. package/dist/cli/commands/setup-sync.js.map +1 -0
  70. package/dist/cli/commands/setup.d.ts +12 -0
  71. package/dist/cli/commands/setup.d.ts.map +1 -0
  72. package/dist/cli/commands/setup.js +39 -0
  73. package/dist/cli/commands/setup.js.map +1 -0
  74. package/dist/cli/commands/status.d.ts +5 -0
  75. package/dist/cli/commands/status.d.ts.map +1 -0
  76. package/dist/cli/commands/status.js +96 -0
  77. package/dist/cli/commands/status.js.map +1 -0
  78. package/dist/cli/commands/uninstall.d.ts +4 -0
  79. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  80. package/dist/cli/commands/uninstall.js +85 -0
  81. package/dist/cli/commands/uninstall.js.map +1 -0
  82. package/dist/cli/commands/unregister.d.ts +2 -0
  83. package/dist/cli/commands/unregister.d.ts.map +1 -0
  84. package/dist/cli/commands/unregister.js +46 -0
  85. package/dist/cli/commands/unregister.js.map +1 -0
  86. package/dist/cli/device-metadata.d.ts +15 -0
  87. package/dist/cli/device-metadata.d.ts.map +1 -0
  88. package/dist/cli/device-metadata.js +58 -0
  89. package/dist/cli/device-metadata.js.map +1 -0
  90. package/dist/cli/github.d.ts +38 -0
  91. package/dist/cli/github.d.ts.map +1 -0
  92. package/dist/cli/github.js +159 -0
  93. package/dist/cli/github.js.map +1 -0
  94. package/dist/cli/guide-hashes.json +13 -0
  95. package/dist/cli/index.d.ts +3 -0
  96. package/dist/cli/index.d.ts.map +1 -0
  97. package/dist/cli/index.js +226 -0
  98. package/dist/cli/index.js.map +1 -0
  99. package/dist/cli/mcp-server.d.ts +205 -0
  100. package/dist/cli/mcp-server.d.ts.map +1 -0
  101. package/dist/cli/mcp-server.js +366 -0
  102. package/dist/cli/mcp-server.js.map +1 -0
  103. package/dist/cli/tools/kb-delete.d.ts +10 -0
  104. package/dist/cli/tools/kb-delete.d.ts.map +1 -0
  105. package/dist/cli/tools/kb-delete.js +28 -0
  106. package/dist/cli/tools/kb-delete.js.map +1 -0
  107. package/dist/cli/tools/kb-ingest.d.ts +13 -0
  108. package/dist/cli/tools/kb-ingest.d.ts.map +1 -0
  109. package/dist/cli/tools/kb-ingest.js +72 -0
  110. package/dist/cli/tools/kb-ingest.js.map +1 -0
  111. package/dist/cli/tools/kb-list.d.ts +20 -0
  112. package/dist/cli/tools/kb-list.d.ts.map +1 -0
  113. package/dist/cli/tools/kb-list.js +24 -0
  114. package/dist/cli/tools/kb-list.js.map +1 -0
  115. package/dist/cli/tools/kb-query-shared.d.ts +27 -0
  116. package/dist/cli/tools/kb-query-shared.d.ts.map +1 -0
  117. package/dist/cli/tools/kb-query-shared.js +28 -0
  118. package/dist/cli/tools/kb-query-shared.js.map +1 -0
  119. package/dist/cli/tools/kb-query.d.ts +20 -0
  120. package/dist/cli/tools/kb-query.d.ts.map +1 -0
  121. package/dist/cli/tools/kb-query.js +109 -0
  122. package/dist/cli/tools/kb-query.js.map +1 -0
  123. package/dist/cli/tools/kb-summary.d.ts +29 -0
  124. package/dist/cli/tools/kb-summary.d.ts.map +1 -0
  125. package/dist/cli/tools/kb-summary.js +89 -0
  126. package/dist/cli/tools/kb-summary.js.map +1 -0
  127. package/dist/cli/tools/kb-sync-status.d.ts +7 -0
  128. package/dist/cli/tools/kb-sync-status.d.ts.map +1 -0
  129. package/dist/cli/tools/kb-sync-status.js +48 -0
  130. package/dist/cli/tools/kb-sync-status.js.map +1 -0
  131. package/dist/crypto/aad.d.ts +8 -0
  132. package/dist/crypto/aad.d.ts.map +1 -0
  133. package/dist/crypto/aad.js +11 -0
  134. package/dist/crypto/aad.js.map +1 -0
  135. package/dist/crypto/aead.d.ts +21 -0
  136. package/dist/crypto/aead.d.ts.map +1 -0
  137. package/dist/crypto/aead.js +43 -0
  138. package/dist/crypto/aead.js.map +1 -0
  139. package/dist/crypto/argon2.d.ts +11 -0
  140. package/dist/crypto/argon2.d.ts.map +1 -0
  141. package/dist/crypto/argon2.js +33 -0
  142. package/dist/crypto/argon2.js.map +1 -0
  143. package/dist/crypto/blob-id.d.ts +6 -0
  144. package/dist/crypto/blob-id.d.ts.map +1 -0
  145. package/dist/crypto/blob-id.js +33 -0
  146. package/dist/crypto/blob-id.js.map +1 -0
  147. package/dist/crypto/canonical-json.d.ts +6 -0
  148. package/dist/crypto/canonical-json.d.ts.map +1 -0
  149. package/dist/crypto/canonical-json.js +88 -0
  150. package/dist/crypto/canonical-json.js.map +1 -0
  151. package/dist/crypto/commitment.d.ts +12 -0
  152. package/dist/crypto/commitment.d.ts.map +1 -0
  153. package/dist/crypto/commitment.js +37 -0
  154. package/dist/crypto/commitment.js.map +1 -0
  155. package/dist/crypto/encryption-service.d.ts +19 -0
  156. package/dist/crypto/encryption-service.d.ts.map +1 -0
  157. package/dist/crypto/encryption-service.js +38 -0
  158. package/dist/crypto/encryption-service.js.map +1 -0
  159. package/dist/crypto/envelope-cbor.d.ts +37 -0
  160. package/dist/crypto/envelope-cbor.d.ts.map +1 -0
  161. package/dist/crypto/envelope-cbor.js +124 -0
  162. package/dist/crypto/envelope-cbor.js.map +1 -0
  163. package/dist/crypto/envelope.d.ts +34 -0
  164. package/dist/crypto/envelope.d.ts.map +1 -0
  165. package/dist/crypto/envelope.js +160 -0
  166. package/dist/crypto/envelope.js.map +1 -0
  167. package/dist/crypto/hkdf.d.ts +16 -0
  168. package/dist/crypto/hkdf.d.ts.map +1 -0
  169. package/dist/crypto/hkdf.js +33 -0
  170. package/dist/crypto/hkdf.js.map +1 -0
  171. package/dist/crypto/index.d.ts +15 -0
  172. package/dist/crypto/index.d.ts.map +1 -0
  173. package/dist/crypto/index.js +15 -0
  174. package/dist/crypto/index.js.map +1 -0
  175. package/dist/crypto/invite.d.ts +31 -0
  176. package/dist/crypto/invite.d.ts.map +1 -0
  177. package/dist/crypto/invite.js +137 -0
  178. package/dist/crypto/invite.js.map +1 -0
  179. package/dist/crypto/keyring.d.ts +37 -0
  180. package/dist/crypto/keyring.d.ts.map +1 -0
  181. package/dist/crypto/keyring.js +219 -0
  182. package/dist/crypto/keyring.js.map +1 -0
  183. package/dist/crypto/known-keys.d.ts +34 -0
  184. package/dist/crypto/known-keys.d.ts.map +1 -0
  185. package/dist/crypto/known-keys.js +106 -0
  186. package/dist/crypto/known-keys.js.map +1 -0
  187. package/dist/crypto/project-keys.d.ts +26 -0
  188. package/dist/crypto/project-keys.d.ts.map +1 -0
  189. package/dist/crypto/project-keys.js +69 -0
  190. package/dist/crypto/project-keys.js.map +1 -0
  191. package/dist/crypto/secure-buffer.d.ts +31 -0
  192. package/dist/crypto/secure-buffer.d.ts.map +1 -0
  193. package/dist/crypto/secure-buffer.js +61 -0
  194. package/dist/crypto/secure-buffer.js.map +1 -0
  195. package/dist/crypto/ssh-agent.d.ts +16 -0
  196. package/dist/crypto/ssh-agent.d.ts.map +1 -0
  197. package/dist/crypto/ssh-agent.js +225 -0
  198. package/dist/crypto/ssh-agent.js.map +1 -0
  199. package/dist/crypto/ssh-keys.d.ts +19 -0
  200. package/dist/crypto/ssh-keys.d.ts.map +1 -0
  201. package/dist/crypto/ssh-keys.js +121 -0
  202. package/dist/crypto/ssh-keys.js.map +1 -0
  203. package/dist/crypto/tiers/enhanced.d.ts +25 -0
  204. package/dist/crypto/tiers/enhanced.d.ts.map +1 -0
  205. package/dist/crypto/tiers/enhanced.js +56 -0
  206. package/dist/crypto/tiers/enhanced.js.map +1 -0
  207. package/dist/crypto/tiers/maximum.d.ts +19 -0
  208. package/dist/crypto/tiers/maximum.d.ts.map +1 -0
  209. package/dist/crypto/tiers/maximum.js +25 -0
  210. package/dist/crypto/tiers/maximum.js.map +1 -0
  211. package/dist/crypto/tiers/standard.d.ts +27 -0
  212. package/dist/crypto/tiers/standard.d.ts.map +1 -0
  213. package/dist/crypto/tiers/standard.js +147 -0
  214. package/dist/crypto/tiers/standard.js.map +1 -0
  215. package/dist/crypto/types.d.ts +169 -0
  216. package/dist/crypto/types.d.ts.map +1 -0
  217. package/dist/crypto/types.js +11 -0
  218. package/dist/crypto/types.js.map +1 -0
  219. package/dist/pipeline/chunker.d.ts +27 -0
  220. package/dist/pipeline/chunker.d.ts.map +1 -0
  221. package/dist/pipeline/chunker.js +96 -0
  222. package/dist/pipeline/chunker.js.map +1 -0
  223. package/dist/pipeline/content-pipeline.d.ts +24 -0
  224. package/dist/pipeline/content-pipeline.d.ts.map +1 -0
  225. package/dist/pipeline/content-pipeline.js +49 -0
  226. package/dist/pipeline/content-pipeline.js.map +1 -0
  227. package/dist/pipeline/embedder.d.ts +49 -0
  228. package/dist/pipeline/embedder.d.ts.map +1 -0
  229. package/dist/pipeline/embedder.js +195 -0
  230. package/dist/pipeline/embedder.js.map +1 -0
  231. package/dist/pipeline/extract.d.ts +17 -0
  232. package/dist/pipeline/extract.d.ts.map +1 -0
  233. package/dist/pipeline/extract.js +70 -0
  234. package/dist/pipeline/extract.js.map +1 -0
  235. package/dist/pipeline/fetch.d.ts +26 -0
  236. package/dist/pipeline/fetch.d.ts.map +1 -0
  237. package/dist/pipeline/fetch.js +91 -0
  238. package/dist/pipeline/fetch.js.map +1 -0
  239. package/dist/pipeline/index.d.ts +10 -0
  240. package/dist/pipeline/index.d.ts.map +1 -0
  241. package/dist/pipeline/index.js +10 -0
  242. package/dist/pipeline/index.js.map +1 -0
  243. package/dist/pipeline/model-manager.d.ts +57 -0
  244. package/dist/pipeline/model-manager.d.ts.map +1 -0
  245. package/dist/pipeline/model-manager.js +234 -0
  246. package/dist/pipeline/model-manager.js.map +1 -0
  247. package/dist/pipeline/search.d.ts +37 -0
  248. package/dist/pipeline/search.d.ts.map +1 -0
  249. package/dist/pipeline/search.js +65 -0
  250. package/dist/pipeline/search.js.map +1 -0
  251. package/dist/pipeline/tokenizer.d.ts +29 -0
  252. package/dist/pipeline/tokenizer.d.ts.map +1 -0
  253. package/dist/pipeline/tokenizer.js +54 -0
  254. package/dist/pipeline/tokenizer.js.map +1 -0
  255. package/dist/pipeline/types.d.ts +86 -0
  256. package/dist/pipeline/types.d.ts.map +1 -0
  257. package/dist/pipeline/types.js +2 -0
  258. package/dist/pipeline/types.js.map +1 -0
  259. package/dist/pipeline/wordpiece-tokenizer.d.ts +60 -0
  260. package/dist/pipeline/wordpiece-tokenizer.d.ts.map +1 -0
  261. package/dist/pipeline/wordpiece-tokenizer.js +251 -0
  262. package/dist/pipeline/wordpiece-tokenizer.js.map +1 -0
  263. package/dist/storage/chunk-repo.d.ts +29 -0
  264. package/dist/storage/chunk-repo.d.ts.map +1 -0
  265. package/dist/storage/chunk-repo.js +115 -0
  266. package/dist/storage/chunk-repo.js.map +1 -0
  267. package/dist/storage/database-manager.d.ts +17 -0
  268. package/dist/storage/database-manager.d.ts.map +1 -0
  269. package/dist/storage/database-manager.js +100 -0
  270. package/dist/storage/database-manager.js.map +1 -0
  271. package/dist/storage/database.d.ts +10 -0
  272. package/dist/storage/database.d.ts.map +1 -0
  273. package/dist/storage/database.js +34 -0
  274. package/dist/storage/database.js.map +1 -0
  275. package/dist/storage/embedding-index.d.ts +22 -0
  276. package/dist/storage/embedding-index.d.ts.map +1 -0
  277. package/dist/storage/embedding-index.js +78 -0
  278. package/dist/storage/embedding-index.js.map +1 -0
  279. package/dist/storage/index.d.ts +10 -0
  280. package/dist/storage/index.d.ts.map +1 -0
  281. package/dist/storage/index.js +10 -0
  282. package/dist/storage/index.js.map +1 -0
  283. package/dist/storage/kb-database.d.ts +11 -0
  284. package/dist/storage/kb-database.d.ts.map +1 -0
  285. package/dist/storage/kb-database.js +24 -0
  286. package/dist/storage/kb-database.js.map +1 -0
  287. package/dist/storage/schema.d.ts +6 -0
  288. package/dist/storage/schema.d.ts.map +1 -0
  289. package/dist/storage/schema.js +122 -0
  290. package/dist/storage/schema.js.map +1 -0
  291. package/dist/storage/source-repo.d.ts +20 -0
  292. package/dist/storage/source-repo.d.ts.map +1 -0
  293. package/dist/storage/source-repo.js +120 -0
  294. package/dist/storage/source-repo.js.map +1 -0
  295. package/dist/storage/sync-status-repo.d.ts +15 -0
  296. package/dist/storage/sync-status-repo.d.ts.map +1 -0
  297. package/dist/storage/sync-status-repo.js +40 -0
  298. package/dist/storage/sync-status-repo.js.map +1 -0
  299. package/dist/storage/types.d.ts +139 -0
  300. package/dist/storage/types.d.ts.map +1 -0
  301. package/dist/storage/types.js +9 -0
  302. package/dist/storage/types.js.map +1 -0
  303. package/dist/sync/canary.d.ts +14 -0
  304. package/dist/sync/canary.d.ts.map +1 -0
  305. package/dist/sync/canary.js +53 -0
  306. package/dist/sync/canary.js.map +1 -0
  307. package/dist/sync/full-sync.d.ts +16 -0
  308. package/dist/sync/full-sync.d.ts.map +1 -0
  309. package/dist/sync/full-sync.js +91 -0
  310. package/dist/sync/full-sync.js.map +1 -0
  311. package/dist/sync/http-client.d.ts +28 -0
  312. package/dist/sync/http-client.d.ts.map +1 -0
  313. package/dist/sync/http-client.js +90 -0
  314. package/dist/sync/http-client.js.map +1 -0
  315. package/dist/sync/incremental-sync.d.ts +17 -0
  316. package/dist/sync/incremental-sync.d.ts.map +1 -0
  317. package/dist/sync/incremental-sync.js +155 -0
  318. package/dist/sync/incremental-sync.js.map +1 -0
  319. package/dist/sync/index.d.ts +12 -0
  320. package/dist/sync/index.d.ts.map +1 -0
  321. package/dist/sync/index.js +12 -0
  322. package/dist/sync/index.js.map +1 -0
  323. package/dist/sync/quota.d.ts +17 -0
  324. package/dist/sync/quota.d.ts.map +1 -0
  325. package/dist/sync/quota.js +48 -0
  326. package/dist/sync/quota.js.map +1 -0
  327. package/dist/sync/sequence.d.ts +21 -0
  328. package/dist/sync/sequence.d.ts.map +1 -0
  329. package/dist/sync/sequence.js +49 -0
  330. package/dist/sync/sequence.js.map +1 -0
  331. package/dist/sync/ssh-signer.d.ts +59 -0
  332. package/dist/sync/ssh-signer.d.ts.map +1 -0
  333. package/dist/sync/ssh-signer.js +241 -0
  334. package/dist/sync/ssh-signer.js.map +1 -0
  335. package/dist/sync/sync-service.d.ts +48 -0
  336. package/dist/sync/sync-service.d.ts.map +1 -0
  337. package/dist/sync/sync-service.js +116 -0
  338. package/dist/sync/sync-service.js.map +1 -0
  339. package/dist/sync/types.d.ts +106 -0
  340. package/dist/sync/types.d.ts.map +1 -0
  341. package/dist/sync/types.js +2 -0
  342. package/dist/sync/types.js.map +1 -0
  343. package/dist/sync/upload-queue.d.ts +40 -0
  344. package/dist/sync/upload-queue.d.ts.map +1 -0
  345. package/dist/sync/upload-queue.js +148 -0
  346. package/dist/sync/upload-queue.js.map +1 -0
  347. package/dist/sync/verification.d.ts +17 -0
  348. package/dist/sync/verification.d.ts.map +1 -0
  349. package/dist/sync/verification.js +25 -0
  350. package/dist/sync/verification.js.map +1 -0
  351. package/dist/vitest.config.d.ts +3 -0
  352. package/dist/vitest.config.d.ts.map +1 -0
  353. package/dist/vitest.config.js +16 -0
  354. package/dist/vitest.config.js.map +1 -0
  355. package/package.json +68 -0
@@ -0,0 +1,28 @@
1
+ export declare const MCP_SCRIPT_PATH: string;
2
+ interface McpServerEntry {
3
+ command: string;
4
+ args: string[];
5
+ env?: Record<string, string>;
6
+ }
7
+ export interface ConfigPreview {
8
+ configFilePath: string;
9
+ before: McpServerEntry | undefined;
10
+ after: McpServerEntry;
11
+ isNew: boolean;
12
+ }
13
+ /**
14
+ * Preview what mergeAgentConfig would write, without actually writing anything.
15
+ */
16
+ export declare function previewAgentConfig(configFilePath: string, args?: string[]): ConfigPreview;
17
+ /**
18
+ * Add or update the ChaosKB MCP server entry in an agent's config file.
19
+ * Preserves all other entries in the config.
20
+ */
21
+ export declare function mergeAgentConfig(configFilePath: string, args?: string[]): Promise<void>;
22
+ /**
23
+ * Remove the ChaosKB MCP server entry from an agent's config file.
24
+ * Preserves all other entries.
25
+ */
26
+ export declare function removeAgentConfig(configFilePath: string): Promise<void>;
27
+ export {};
28
+ //# sourceMappingURL=config-merger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-merger.d.ts","sourceRoot":"","sources":["../../../cli/agent-registry/config-merger.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AA2CD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,aAAa,CAQ7F;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,MAAM,EAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E"}
@@ -0,0 +1,90 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { validateConfigPath } from './path-validator.js';
5
+ // Resolve the MCP server script path relative to this file at build time.
6
+ // config-merger lives at dist/cli/agent-registry/, MCP entry is at dist/cli/index.js
7
+ export const MCP_SCRIPT_PATH = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'index.js');
8
+ /**
9
+ * Read and parse an agent's MCP config file.
10
+ * Returns the parsed config, or a new empty config if the file doesn't exist or is malformed.
11
+ */
12
+ function readConfig(configFilePath) {
13
+ try {
14
+ const raw = fs.readFileSync(configFilePath, 'utf-8');
15
+ const config = JSON.parse(raw);
16
+ if (typeof config !== 'object' || config === null || Array.isArray(config)) {
17
+ console.warn(` Warning: ${configFilePath} contains invalid config, creating new.`);
18
+ return { config: {}, wasCreated: true };
19
+ }
20
+ return { config, wasCreated: false };
21
+ }
22
+ catch (err) {
23
+ if (err.code === 'ENOENT') {
24
+ return { config: {}, wasCreated: true };
25
+ }
26
+ // Malformed JSON
27
+ console.warn(` Warning: ${configFilePath} has malformed JSON, creating new.`);
28
+ return { config: {}, wasCreated: true };
29
+ }
30
+ }
31
+ /**
32
+ * Write config back to file, preserving pretty formatting.
33
+ */
34
+ function writeConfig(configFilePath, config) {
35
+ const dir = path.dirname(configFilePath);
36
+ if (!fs.existsSync(dir)) {
37
+ fs.mkdirSync(dir, { recursive: true });
38
+ }
39
+ fs.writeFileSync(configFilePath, JSON.stringify(config, null, 2) + '\n', {
40
+ mode: 0o600,
41
+ });
42
+ }
43
+ /**
44
+ * Preview what mergeAgentConfig would write, without actually writing anything.
45
+ */
46
+ export function previewAgentConfig(configFilePath, args = []) {
47
+ const { config } = readConfig(configFilePath);
48
+ const before = config.mcpServers?.chaoskb;
49
+ const after = {
50
+ command: process.execPath,
51
+ args: [MCP_SCRIPT_PATH, ...args],
52
+ };
53
+ return { configFilePath, before, after, isNew: before === undefined };
54
+ }
55
+ /**
56
+ * Add or update the ChaosKB MCP server entry in an agent's config file.
57
+ * Preserves all other entries in the config.
58
+ */
59
+ export async function mergeAgentConfig(configFilePath, args = []) {
60
+ // Validate the config path is within allowed directories
61
+ validateConfigPath(configFilePath);
62
+ const { config } = readConfig(configFilePath);
63
+ // Ensure mcpServers exists
64
+ if (!config.mcpServers) {
65
+ config.mcpServers = {};
66
+ }
67
+ // Add/update chaoskb entry.
68
+ // Use the absolute node binary path + script path to avoid picking up the wrong
69
+ // Node.js version from PATH (e.g. Claude Desktop may inject old NVM paths first).
70
+ config.mcpServers.chaoskb = {
71
+ command: process.execPath,
72
+ args: [MCP_SCRIPT_PATH, ...args],
73
+ };
74
+ writeConfig(configFilePath, config);
75
+ }
76
+ /**
77
+ * Remove the ChaosKB MCP server entry from an agent's config file.
78
+ * Preserves all other entries.
79
+ */
80
+ export async function removeAgentConfig(configFilePath) {
81
+ validateConfigPath(configFilePath);
82
+ const { config } = readConfig(configFilePath);
83
+ if (config.mcpServers && 'chaoskb' in config.mcpServers) {
84
+ delete config.mcpServers.chaoskb;
85
+ // If mcpServers is now empty, keep the key but as empty object
86
+ // so the config file format remains valid for the agent
87
+ writeConfig(configFilePath, config);
88
+ }
89
+ }
90
+ //# sourceMappingURL=config-merger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-merger.js","sourceRoot":"","sources":["../../../cli/agent-registry/config-merger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { DetectedAgent } from './types.js';
2
+ /**
3
+ * Detect all installed agents and their registration status.
4
+ * Filters by the current platform.
5
+ */
6
+ export declare function detectAgents(): Promise<DetectedAgent[]>;
7
+ //# sourceMappingURL=detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../cli/agent-registry/detector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,YAAY,CAAC;AAyE7D;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAiC7D"}
@@ -0,0 +1,100 @@
1
+ import * as fs from 'node:fs';
2
+ import * as os from 'node:os';
3
+ import * as path from 'node:path';
4
+ import { loadAgentRegistry } from './index.js';
5
+ /**
6
+ * Expand ~ to the user's home directory in a path.
7
+ */
8
+ function expandHome(p) {
9
+ if (p.startsWith('~/') || p === '~') {
10
+ return path.join(os.homedir(), p.slice(1));
11
+ }
12
+ return p;
13
+ }
14
+ /**
15
+ * Check if a path exists on the filesystem.
16
+ * Handles glob-style wildcards in win32 paths by checking the literal path only.
17
+ */
18
+ function pathExists(p) {
19
+ try {
20
+ const expanded = expandHome(p);
21
+ fs.accessSync(expanded, fs.constants.F_OK);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ /**
29
+ * Check if an agent is installed by checking its install paths for the current platform.
30
+ */
31
+ function isAgentInstalled(agent) {
32
+ const platform = process.platform;
33
+ const paths = agent.installPaths[platform];
34
+ if (!paths || paths.length === 0) {
35
+ // For agents like Continue.dev with no install paths,
36
+ // check if the config file exists instead
37
+ const configPath = agent.configPath[platform];
38
+ if (configPath) {
39
+ return pathExists(configPath);
40
+ }
41
+ return false;
42
+ }
43
+ return paths.some((p) => pathExists(p));
44
+ }
45
+ /**
46
+ * Get the resolved config file path for an agent on the current platform.
47
+ */
48
+ function getConfigFilePath(agent) {
49
+ const platform = process.platform;
50
+ const configPath = agent.configPath[platform];
51
+ if (!configPath) {
52
+ return '';
53
+ }
54
+ return expandHome(configPath);
55
+ }
56
+ /**
57
+ * Check if ChaosKB is already registered in an agent's config file.
58
+ */
59
+ function isChaosKBRegistered(configFilePath) {
60
+ try {
61
+ const raw = fs.readFileSync(configFilePath, 'utf-8');
62
+ const config = JSON.parse(raw);
63
+ const mcpServers = config.mcpServers;
64
+ return mcpServers !== undefined && 'chaoskb' in mcpServers;
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ }
70
+ /**
71
+ * Detect all installed agents and their registration status.
72
+ * Filters by the current platform.
73
+ */
74
+ export async function detectAgents() {
75
+ const { agents, staleWarning } = loadAgentRegistry();
76
+ if (staleWarning) {
77
+ console.warn(' Warning: Agent registry cache is over 90 days old. Run `chaoskb-mcp setup` to refresh.');
78
+ }
79
+ const platform = process.platform;
80
+ const detected = [];
81
+ for (const agent of agents) {
82
+ // Skip agents not available on this platform
83
+ if (!agent.platforms.includes(platform)) {
84
+ continue;
85
+ }
86
+ const configFilePath = getConfigFilePath(agent);
87
+ const installed = isAgentInstalled(agent);
88
+ const configExists = configFilePath ? pathExists(configFilePath) : false;
89
+ const registered = configExists ? isChaosKBRegistered(configFilePath) : false;
90
+ detected.push({
91
+ config: agent,
92
+ installed,
93
+ configExists,
94
+ configFilePath,
95
+ registered,
96
+ });
97
+ }
98
+ return detected;
99
+ }
100
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../cli/agent-registry/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { AgentConfig, AgentRegistry } from './types.js';
2
+ /**
3
+ * Load the embedded registry from the bundled JSON file.
4
+ */
5
+ export declare function loadEmbeddedRegistry(): AgentRegistry;
6
+ /**
7
+ * Load the cached remote registry from ~/.chaoskb/agent-registry.json, if it exists.
8
+ */
9
+ export declare function loadCachedRegistry(): AgentRegistry | null;
10
+ /**
11
+ * Check if the cached registry is stale (>90 days old).
12
+ */
13
+ export declare function isRegistryStale(registry: AgentRegistry): boolean;
14
+ /**
15
+ * Merge embedded and cached registries. Remote takes precedence if newer.
16
+ * Returns the merged list of agent configs and warns if the cache is stale.
17
+ */
18
+ export declare function loadAgentRegistry(): {
19
+ agents: AgentConfig[];
20
+ staleWarning: boolean;
21
+ };
22
+ /**
23
+ * Save a fetched registry to the cache file.
24
+ */
25
+ export declare function saveCachedRegistry(registry: AgentRegistry): void;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../cli/agent-registry/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQ7D;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,aAAa,CAEpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,GAAG,IAAI,CAOzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAMhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAiCpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGhE"}
@@ -0,0 +1,77 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import { createRequire } from 'node:module';
5
+ const require = createRequire(import.meta.url);
6
+ const CHAOSKB_DIR = path.join(os.homedir(), '.chaoskb');
7
+ const CACHED_REGISTRY_PATH = path.join(CHAOSKB_DIR, 'agent-registry.json');
8
+ const STALENESS_THRESHOLD_DAYS = 90;
9
+ /**
10
+ * Load the embedded registry from the bundled JSON file.
11
+ */
12
+ export function loadEmbeddedRegistry() {
13
+ return require('./registry.json');
14
+ }
15
+ /**
16
+ * Load the cached remote registry from ~/.chaoskb/agent-registry.json, if it exists.
17
+ */
18
+ export function loadCachedRegistry() {
19
+ try {
20
+ const raw = fs.readFileSync(CACHED_REGISTRY_PATH, 'utf-8');
21
+ return JSON.parse(raw);
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ /**
28
+ * Check if the cached registry is stale (>90 days old).
29
+ */
30
+ export function isRegistryStale(registry) {
31
+ const updatedAt = new Date(registry.updatedAt);
32
+ const now = new Date();
33
+ const diffMs = now.getTime() - updatedAt.getTime();
34
+ const diffDays = diffMs / (1000 * 60 * 60 * 24);
35
+ return diffDays > STALENESS_THRESHOLD_DAYS;
36
+ }
37
+ /**
38
+ * Merge embedded and cached registries. Remote takes precedence if newer.
39
+ * Returns the merged list of agent configs and warns if the cache is stale.
40
+ */
41
+ export function loadAgentRegistry() {
42
+ const embedded = loadEmbeddedRegistry();
43
+ const cached = loadCachedRegistry();
44
+ let staleWarning = false;
45
+ if (!cached) {
46
+ return { agents: embedded.agents, staleWarning: false };
47
+ }
48
+ // Check staleness of cached registry
49
+ if (isRegistryStale(cached)) {
50
+ staleWarning = true;
51
+ }
52
+ // If cached is newer, use it as the base and merge
53
+ if (cached.version > embedded.version) {
54
+ // Cached is newer: use cached agents, but keep any embedded-only agents
55
+ const cachedNames = new Set(cached.agents.map((a) => a.name));
56
+ const embeddedOnly = embedded.agents.filter((a) => !cachedNames.has(a.name));
57
+ return {
58
+ agents: [...cached.agents, ...embeddedOnly],
59
+ staleWarning,
60
+ };
61
+ }
62
+ // Embedded is same version or newer: use embedded as base, overlay cached extras
63
+ const embeddedNames = new Set(embedded.agents.map((a) => a.name));
64
+ const cachedOnly = cached.agents.filter((a) => !embeddedNames.has(a.name));
65
+ return {
66
+ agents: [...embedded.agents, ...cachedOnly],
67
+ staleWarning,
68
+ };
69
+ }
70
+ /**
71
+ * Save a fetched registry to the cache file.
72
+ */
73
+ export function saveCachedRegistry(registry) {
74
+ fs.mkdirSync(CHAOSKB_DIR, { recursive: true });
75
+ fs.writeFileSync(CACHED_REGISTRY_PATH, JSON.stringify(registry, null, 2));
76
+ }
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../cli/agent-registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACxD,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAC3E,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,iBAAiB,CAAkB,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAuB;IACrD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,OAAO,QAAQ,GAAG,wBAAwB,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,qCAAqC;IACrC,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,mDAAmD;IACnD,IAAI,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,wEAAwE;QACxE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7E,OAAO;YACL,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC;YAC3C,YAAY;SACb,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,OAAO;QACL,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;QAC3C,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAuB;IACxD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Validate that a config file path is within the allowed directories.
3
+ * Throws an error if the path is not allowed.
4
+ *
5
+ * Rules:
6
+ * - Reject any path containing '..' (directory traversal)
7
+ * - Reject absolute paths not in the allowlist
8
+ * - Allow relative paths only if they match project config patterns
9
+ */
10
+ export declare function validateConfigPath(configFilePath: string): void;
11
+ //# sourceMappingURL=path-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validator.d.ts","sourceRoot":"","sources":["../../../cli/agent-registry/path-validator.ts"],"names":[],"mappings":"AAgCA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CA4C/D"}
@@ -0,0 +1,69 @@
1
+ import * as os from 'node:os';
2
+ import * as path from 'node:path';
3
+ /**
4
+ * Allowlisted directory prefixes for agent config files.
5
+ * These are the only locations where ChaosKB will read/write agent configs.
6
+ */
7
+ const ALLOWED_PREFIXES = [
8
+ '~/.config/',
9
+ '~/.cursor/',
10
+ '~/Library/Application Support/',
11
+ '~/.claude.json',
12
+ '~/.continue/',
13
+ '~/.codeium/',
14
+ '~/.vscode/',
15
+ ];
16
+ /**
17
+ * Allowlisted relative paths for project-level config.
18
+ */
19
+ const ALLOWED_RELATIVE_PREFIXES = [
20
+ '.vscode/',
21
+ '.cursor/',
22
+ ];
23
+ function expandHome(p) {
24
+ if (p.startsWith('~/') || p === '~') {
25
+ return path.join(os.homedir(), p.slice(1));
26
+ }
27
+ return p;
28
+ }
29
+ /**
30
+ * Validate that a config file path is within the allowed directories.
31
+ * Throws an error if the path is not allowed.
32
+ *
33
+ * Rules:
34
+ * - Reject any path containing '..' (directory traversal)
35
+ * - Reject absolute paths not in the allowlist
36
+ * - Allow relative paths only if they match project config patterns
37
+ */
38
+ export function validateConfigPath(configFilePath) {
39
+ // Reject directory traversal
40
+ if (configFilePath.includes('..')) {
41
+ throw new Error(`Rejected config path with directory traversal: ${configFilePath}`);
42
+ }
43
+ // Resolve the path to an absolute path for comparison
44
+ const resolved = path.resolve(configFilePath);
45
+ const _home = os.homedir();
46
+ // Check if it's a relative project config path
47
+ if (!path.isAbsolute(configFilePath)) {
48
+ const isAllowedRelative = ALLOWED_RELATIVE_PREFIXES.some((prefix) => configFilePath.startsWith(prefix));
49
+ if (isAllowedRelative) {
50
+ return;
51
+ }
52
+ throw new Error(`Rejected relative config path not in allowlist: ${configFilePath}`);
53
+ }
54
+ // For absolute paths, check against the allowlist
55
+ const isAllowed = ALLOWED_PREFIXES.some((prefix) => {
56
+ const expandedPrefix = expandHome(prefix);
57
+ // Handle exact file matches (e.g., ~/.claude.json)
58
+ if (!prefix.endsWith('/')) {
59
+ return resolved === expandedPrefix;
60
+ }
61
+ // Handle directory prefix matches
62
+ return resolved.startsWith(expandedPrefix);
63
+ });
64
+ if (!isAllowed) {
65
+ throw new Error(`Rejected config path outside allowlist: ${configFilePath}. ` +
66
+ `Path must be within one of: ${ALLOWED_PREFIXES.join(', ')}`);
67
+ }
68
+ }
69
+ //# sourceMappingURL=path-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validator.js","sourceRoot":"","sources":["../../../cli/agent-registry/path-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;GAGG;AACH,MAAM,gBAAgB,GAAG;IACvB,YAAY;IACZ,YAAY;IACZ,gCAAgC;IAChC,gBAAgB;IAChB,cAAc;IACd,aAAa;IACb,YAAY;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,yBAAyB,GAAG;IAChC,UAAU;IACV,UAAU;CACX,CAAC;AAEF,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAsB;IACvD,6BAA6B;IAC7B,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,kDAAkD,cAAc,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE3B,+CAA+C;IAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACrC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAClE,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAClC,CAAC;QACF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mDAAmD,cAAc,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1C,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,KAAK,cAAc,CAAC;QACrC,CAAC;QAED,kCAAkC;QAClC,OAAO,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2CAA2C,cAAc,IAAI;YAC7D,+BAA+B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,108 @@
1
+ {
2
+ "version": 1,
3
+ "updatedAt": "2026-03-21T00:00:00Z",
4
+ "agents": [
5
+ {
6
+ "name": "claude-desktop",
7
+ "displayName": "Claude Desktop",
8
+ "platforms": ["darwin", "linux"],
9
+ "installPaths": {
10
+ "darwin": ["/Applications/Claude.app"],
11
+ "linux": ["/usr/bin/claude-desktop", "/opt/claude-desktop"]
12
+ },
13
+ "configPath": {
14
+ "darwin": "~/Library/Application Support/Claude/claude_desktop_config.json",
15
+ "linux": "~/.config/Claude/claude_desktop_config.json"
16
+ },
17
+ "configFormat": "json",
18
+ "supportsProjectConfig": false
19
+ },
20
+ {
21
+ "name": "claude-code",
22
+ "displayName": "Claude Code",
23
+ "platforms": ["darwin", "linux", "win32"],
24
+ "installPaths": {
25
+ "darwin": ["/usr/local/bin/claude"],
26
+ "linux": ["/usr/local/bin/claude", "/usr/bin/claude"],
27
+ "win32": ["C:\\Program Files\\Claude\\claude.exe"]
28
+ },
29
+ "configPath": {
30
+ "darwin": "~/.claude.json",
31
+ "linux": "~/.claude.json",
32
+ "win32": "~/.claude.json"
33
+ },
34
+ "configFormat": "json",
35
+ "supportsProjectConfig": false
36
+ },
37
+ {
38
+ "name": "cursor",
39
+ "displayName": "Cursor",
40
+ "platforms": ["darwin", "linux", "win32"],
41
+ "installPaths": {
42
+ "darwin": ["/Applications/Cursor.app"],
43
+ "linux": ["/usr/bin/cursor", "/opt/cursor/cursor"],
44
+ "win32": ["C:\\Users\\*\\AppData\\Local\\Programs\\Cursor\\Cursor.exe"]
45
+ },
46
+ "configPath": {
47
+ "darwin": "~/.cursor/mcp.json",
48
+ "linux": "~/.cursor/mcp.json",
49
+ "win32": "~/.cursor/mcp.json"
50
+ },
51
+ "configFormat": "json",
52
+ "supportsProjectConfig": true,
53
+ "projectConfigPath": ".cursor/mcp.json"
54
+ },
55
+ {
56
+ "name": "vscode",
57
+ "displayName": "VS Code",
58
+ "platforms": ["darwin", "linux", "win32"],
59
+ "installPaths": {
60
+ "darwin": ["/Applications/Visual Studio Code.app"],
61
+ "linux": ["/usr/bin/code", "/usr/share/code/code"],
62
+ "win32": ["C:\\Users\\*\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"]
63
+ },
64
+ "configPath": {
65
+ "darwin": "~/.vscode/mcp.json",
66
+ "linux": "~/.vscode/mcp.json",
67
+ "win32": "~/.vscode/mcp.json"
68
+ },
69
+ "configFormat": "json",
70
+ "supportsProjectConfig": true,
71
+ "projectConfigPath": ".vscode/mcp.json"
72
+ },
73
+ {
74
+ "name": "windsurf",
75
+ "displayName": "Windsurf",
76
+ "platforms": ["darwin", "linux", "win32"],
77
+ "installPaths": {
78
+ "darwin": ["/Applications/Windsurf.app"],
79
+ "linux": ["/usr/bin/windsurf"],
80
+ "win32": ["C:\\Users\\*\\AppData\\Local\\Programs\\Windsurf\\Windsurf.exe"]
81
+ },
82
+ "configPath": {
83
+ "darwin": "~/.codeium/windsurf/mcp_config.json",
84
+ "linux": "~/.codeium/windsurf/mcp_config.json",
85
+ "win32": "~/.codeium/windsurf/mcp_config.json"
86
+ },
87
+ "configFormat": "json",
88
+ "supportsProjectConfig": false
89
+ },
90
+ {
91
+ "name": "continue-dev",
92
+ "displayName": "Continue.dev",
93
+ "platforms": ["darwin", "linux", "win32"],
94
+ "installPaths": {
95
+ "darwin": [],
96
+ "linux": [],
97
+ "win32": []
98
+ },
99
+ "configPath": {
100
+ "darwin": "~/.continue/config.json",
101
+ "linux": "~/.continue/config.json",
102
+ "win32": "~/.continue/config.json"
103
+ },
104
+ "configFormat": "json",
105
+ "supportsProjectConfig": false
106
+ }
107
+ ]
108
+ }
@@ -0,0 +1,29 @@
1
+ export interface AgentConfig {
2
+ name: string;
3
+ displayName: string;
4
+ /** Platforms this agent is available on */
5
+ platforms: ('darwin' | 'linux' | 'win32')[];
6
+ /** Paths to check for agent installation */
7
+ installPaths: Record<string, string[]>;
8
+ /** Path to MCP config file */
9
+ configPath: Record<string, string>;
10
+ /** MCP config format */
11
+ configFormat: 'json';
12
+ /** Whether agent supports project-level config */
13
+ supportsProjectConfig: boolean;
14
+ /** Project config file path pattern */
15
+ projectConfigPath?: string;
16
+ }
17
+ export interface DetectedAgent {
18
+ config: AgentConfig;
19
+ installed: boolean;
20
+ configExists: boolean;
21
+ configFilePath: string;
22
+ registered: boolean;
23
+ }
24
+ export interface AgentRegistry {
25
+ version: number;
26
+ updatedAt: string;
27
+ agents: AgentConfig[];
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../cli/agent-registry/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;IAC5C,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../cli/agent-registry/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Acquire an exclusive file lock for bootstrap.
3
+ * Uses O_CREAT | O_EXCL for atomic creation.
4
+ * Returns a release function.
5
+ */
6
+ export declare function acquireBootstrapLock(baseDir?: string): Promise<() => void>;
7
+ //# sourceMappingURL=bootstrap-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap-lock.d.ts","sourceRoot":"","sources":["../../cli/bootstrap-lock.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAmDhF"}