@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,96 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { loadConfig, CHAOSKB_DIR } from './setup.js';
4
+ import { detectAgents } from '../agent-registry/detector.js';
5
+ export async function statusCommand(options) {
6
+ const config = await loadConfig();
7
+ console.log('');
8
+ console.log(' ChaosKB Status');
9
+ console.log(' ==============');
10
+ console.log('');
11
+ if (!config) {
12
+ console.log(' Not configured. Run `chaoskb-mcp setup` first.');
13
+ console.log('');
14
+ return;
15
+ }
16
+ // Security tier
17
+ console.log(` Security tier: ${config.securityTier}`);
18
+ console.log('');
19
+ // Registered agents
20
+ console.log(' Registered agents:');
21
+ const agents = await detectAgents();
22
+ const registeredAgents = agents.filter((a) => a.registered);
23
+ if (registeredAgents.length === 0) {
24
+ console.log(' (none)');
25
+ }
26
+ else {
27
+ for (const agent of registeredAgents) {
28
+ console.log(` - ${agent.config.displayName}`);
29
+ }
30
+ }
31
+ console.log('');
32
+ // Storage usage
33
+ console.log(' Storage:');
34
+ const dbPath = path.join(CHAOSKB_DIR, 'local.db');
35
+ if (fs.existsSync(dbPath)) {
36
+ const stats = fs.statSync(dbPath);
37
+ const sizeMb = (stats.size / 1024 / 1024).toFixed(2);
38
+ console.log(` Database: ${dbPath} (${sizeMb} MB)`);
39
+ try {
40
+ const { DatabaseManager } = await import('../../storage/database-manager.js');
41
+ const dbManager = new DatabaseManager();
42
+ const db = options.projectName
43
+ ? dbManager.getProjectDb(options.projectName)
44
+ : dbManager.getPersonalDb();
45
+ const sourceCount = db.sources.count();
46
+ console.log(` Sources: ${sourceCount}`);
47
+ dbManager.closeAll();
48
+ }
49
+ catch {
50
+ console.log(' Sources: (unable to query)');
51
+ }
52
+ }
53
+ else {
54
+ console.log(' Database: not initialized');
55
+ }
56
+ console.log('');
57
+ // Sync endpoint
58
+ if (config.endpoint) {
59
+ console.log(` Sync endpoint: ${config.endpoint}`);
60
+ }
61
+ else {
62
+ console.log(' Sync endpoint: not configured (local-only mode)');
63
+ }
64
+ console.log('');
65
+ // Model
66
+ const modelsDir = path.join(CHAOSKB_DIR, 'models');
67
+ const modelFile = path.join(modelsDir, 'snowflake-arctic-embed-s.onnx');
68
+ if (fs.existsSync(modelFile)) {
69
+ const modelStats = fs.statSync(modelFile);
70
+ const modelMb = (modelStats.size / 1024 / 1024).toFixed(1);
71
+ console.log(` Model: snowflake-arctic-embed-s@384 (${modelMb} MB)`);
72
+ console.log(` Model path: ${modelFile}`);
73
+ }
74
+ else {
75
+ console.log(' Model: not downloaded (will download on first use)');
76
+ }
77
+ console.log('');
78
+ // Project KBs
79
+ console.log(' Project KBs:');
80
+ if (config.projects.length === 0) {
81
+ console.log(' (none)');
82
+ }
83
+ else {
84
+ for (const project of config.projects) {
85
+ const projectDbPath = path.join(CHAOSKB_DIR, `project-${project.name}.db`);
86
+ let sizeInfo = '';
87
+ if (fs.existsSync(projectDbPath)) {
88
+ const pStats = fs.statSync(projectDbPath);
89
+ sizeInfo = ` (${(pStats.size / 1024 / 1024).toFixed(2)} MB)`;
90
+ }
91
+ console.log(` - ${project.name}${sizeInfo} (created ${project.createdAt})`);
92
+ }
93
+ }
94
+ console.log('');
95
+ }
96
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function uninstallCommand(options?: {
2
+ dryRun?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../cli/commands/uninstall.ts"],"names":[],"mappings":"AAgBA,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EpF"}
@@ -0,0 +1,85 @@
1
+ import * as fs from 'node:fs';
2
+ import * as readline from 'node:readline';
3
+ import { detectAgents } from '../agent-registry/detector.js';
4
+ import { removeAgentConfig } from '../agent-registry/config-merger.js';
5
+ import { CHAOSKB_DIR } from './setup.js';
6
+ function prompt(question) {
7
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
8
+ return new Promise((resolve) => {
9
+ rl.question(question, (answer) => {
10
+ rl.close();
11
+ resolve(answer.trim().toLowerCase() === 'y');
12
+ });
13
+ });
14
+ }
15
+ export async function uninstallCommand(options) {
16
+ const dryRun = options?.dryRun ?? false;
17
+ console.log('');
18
+ console.log(' ChaosKB Uninstall');
19
+ console.log(' =================');
20
+ console.log('');
21
+ // 1. Check which agent configs will be modified
22
+ const agents = await detectAgents();
23
+ const registeredAgents = agents.filter((a) => a.registered);
24
+ // 2. Check if local data directory exists
25
+ const dataExists = fs.existsSync(CHAOSKB_DIR);
26
+ if (registeredAgents.length === 0 && !dataExists) {
27
+ console.log(' Nothing to uninstall — no agent registrations or local data found.');
28
+ console.log('');
29
+ return;
30
+ }
31
+ // 3. Show what will be removed
32
+ console.log(' The following will be permanently removed:');
33
+ console.log('');
34
+ if (registeredAgents.length > 0) {
35
+ console.log(' Agent registrations:');
36
+ for (const agent of registeredAgents) {
37
+ console.log(` - ${agent.config.displayName}`);
38
+ console.log(` ${agent.configFilePath}`);
39
+ }
40
+ console.log('');
41
+ }
42
+ if (dataExists) {
43
+ console.log(` Local data directory:`);
44
+ console.log(` ${CHAOSKB_DIR}`);
45
+ console.log('');
46
+ }
47
+ if (dryRun) {
48
+ console.log(' [dry-run] No changes made.');
49
+ console.log('');
50
+ return;
51
+ }
52
+ const confirmed = await prompt(' This cannot be undone. Proceed? [y/N] ');
53
+ if (!confirmed) {
54
+ console.log(' Cancelled.');
55
+ console.log('');
56
+ return;
57
+ }
58
+ console.log('');
59
+ // 4. Remove agent registrations
60
+ for (const agent of registeredAgents) {
61
+ try {
62
+ await removeAgentConfig(agent.configFilePath);
63
+ console.log(` Removed from ${agent.config.displayName}`);
64
+ }
65
+ catch (err) {
66
+ const message = err instanceof Error ? err.message : String(err);
67
+ console.log(` Failed to remove from ${agent.config.displayName}: ${message}`);
68
+ }
69
+ }
70
+ // 5. Delete local data directory
71
+ if (dataExists) {
72
+ try {
73
+ fs.rmSync(CHAOSKB_DIR, { recursive: true, force: true });
74
+ console.log(` Deleted ${CHAOSKB_DIR}`);
75
+ }
76
+ catch (err) {
77
+ const message = err instanceof Error ? err.message : String(err);
78
+ console.log(` Failed to delete ${CHAOSKB_DIR}: ${message}`);
79
+ }
80
+ }
81
+ console.log('');
82
+ console.log(' Uninstall complete.');
83
+ console.log('');
84
+ }
85
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../cli/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function unregisterCommand(): Promise<void>;
2
+ //# sourceMappingURL=unregister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unregister.d.ts","sourceRoot":"","sources":["../../../cli/commands/unregister.ts"],"names":[],"mappings":"AAGA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8CvD"}
@@ -0,0 +1,46 @@
1
+ import { detectAgents } from '../agent-registry/detector.js';
2
+ import { removeAgentConfig } from '../agent-registry/config-merger.js';
3
+ export async function unregisterCommand() {
4
+ console.log('');
5
+ console.log(' ChaosKB Agent Unregistration');
6
+ console.log(' ============================');
7
+ console.log('');
8
+ // 1. Detect agents that have ChaosKB registered
9
+ const agents = await detectAgents();
10
+ const registeredAgents = agents.filter((a) => a.registered);
11
+ if (registeredAgents.length === 0) {
12
+ console.log(' ChaosKB is not registered with any agents.');
13
+ console.log('');
14
+ return;
15
+ }
16
+ // 2. Remove from all registered agents
17
+ const removed = [];
18
+ const failed = [];
19
+ for (const agent of registeredAgents) {
20
+ try {
21
+ await removeAgentConfig(agent.configFilePath);
22
+ removed.push(agent.config.displayName);
23
+ console.log(` Removed from ${agent.config.displayName}`);
24
+ }
25
+ catch (err) {
26
+ const message = err instanceof Error ? err.message : String(err);
27
+ failed.push(`${agent.config.displayName}: ${message}`);
28
+ console.log(` Failed to remove from ${agent.config.displayName}: ${message}`);
29
+ }
30
+ }
31
+ console.log('');
32
+ if (removed.length > 0) {
33
+ console.log(` Removed from ${removed.length} agent(s):`);
34
+ for (const name of removed) {
35
+ console.log(` - ${name}`);
36
+ }
37
+ }
38
+ if (failed.length > 0) {
39
+ console.log(` Failed to remove from ${failed.length} agent(s):`);
40
+ for (const msg of failed) {
41
+ console.log(` - ${msg}`);
42
+ }
43
+ }
44
+ console.log('');
45
+ }
46
+ //# sourceMappingURL=unregister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unregister.js","sourceRoot":"","sources":["../../../cli/commands/unregister.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,gDAAgD;IAChD,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE5D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,uCAAuC;IACvC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QAClE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface DeviceMetadata {
2
+ hostname: string;
3
+ platform: string;
4
+ arch: string;
5
+ osVersion: string;
6
+ deviceModel: string | null;
7
+ }
8
+ /**
9
+ * E5: Collect device metadata for registration.
10
+ *
11
+ * Gathers hostname, OS, architecture, OS version, and device model.
12
+ * All fields degrade gracefully — never throws.
13
+ */
14
+ export declare function collectDeviceMetadata(): Promise<DeviceMetadata>;
15
+ //# sourceMappingURL=device-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-metadata.d.ts","sourceRoot":"","sources":["../../cli/device-metadata.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,cAAc,CAAC,CAQrE"}
@@ -0,0 +1,58 @@
1
+ import * as os from 'node:os';
2
+ import { execFile } from 'node:child_process';
3
+ /**
4
+ * E5: Collect device metadata for registration.
5
+ *
6
+ * Gathers hostname, OS, architecture, OS version, and device model.
7
+ * All fields degrade gracefully — never throws.
8
+ */
9
+ export async function collectDeviceMetadata() {
10
+ const hostname = os.hostname();
11
+ const platform = os.platform();
12
+ const arch = os.arch();
13
+ const osVersion = os.release();
14
+ const deviceModel = await detectDeviceModel(platform);
15
+ return { hostname, platform, arch, osVersion, deviceModel };
16
+ }
17
+ async function detectDeviceModel(platform) {
18
+ try {
19
+ if (platform === 'darwin') {
20
+ // macOS: use system_profiler
21
+ const output = await execCommand('system_profiler', ['SPHardwareDataType', '-detailLevel', 'mini']);
22
+ const match = output.match(/Model Name:\s*(.+)/);
23
+ return match ? match[1].trim() : null;
24
+ }
25
+ if (platform === 'linux') {
26
+ // Linux: read DMI product name
27
+ const { readFile } = await import('node:fs/promises');
28
+ try {
29
+ const model = await readFile('/sys/class/dmi/id/product_name', 'utf-8');
30
+ const trimmed = model.trim();
31
+ // Filter out generic values
32
+ if (trimmed && trimmed !== 'System Product Name' && trimmed !== 'To Be Filled By O.E.M.') {
33
+ return trimmed;
34
+ }
35
+ }
36
+ catch {
37
+ // File not readable (containers, VMs without DMI)
38
+ }
39
+ return null;
40
+ }
41
+ return null;
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ }
47
+ function execCommand(command, args) {
48
+ return new Promise((resolve, reject) => {
49
+ execFile(command, args, { timeout: 5000 }, (error, stdout) => {
50
+ if (error) {
51
+ reject(error);
52
+ return;
53
+ }
54
+ resolve(stdout);
55
+ });
56
+ });
57
+ }
58
+ //# sourceMappingURL=device-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-metadata.js","sourceRoot":"","sources":["../../cli/device-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAU9C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEtD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,6BAA6B;YAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,CAAC,oBAAoB,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;YACpG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACjD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,+BAA+B;YAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,4BAA4B;gBAC5B,IAAI,OAAO,IAAI,OAAO,KAAK,qBAAqB,IAAI,OAAO,KAAK,wBAAwB,EAAE,CAAC;oBACzF,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,IAAc;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,38 @@
1
+ export interface GitHubDetectionResult {
2
+ username: string | null;
3
+ accounts: string[];
4
+ }
5
+ export interface GitHubKeyMatch {
6
+ localKeyPath: string;
7
+ localKeyFingerprint: string;
8
+ githubKeyLine: string;
9
+ }
10
+ /**
11
+ * E1: Detect GitHub username via `gh auth status`.
12
+ *
13
+ * Parses the output to find the authenticated username. Supports multi-account
14
+ * GitHub CLI configurations. Returns null if gh is not installed or not authenticated.
15
+ */
16
+ export declare function detectGitHubUsername(): Promise<GitHubDetectionResult>;
17
+ /**
18
+ * Parse `gh auth status` output to extract username(s).
19
+ *
20
+ * Example output:
21
+ * github.com
22
+ * ✓ Logged in to github.com account rmyers (keyring)
23
+ * - Active account: true
24
+ */
25
+ export declare function parseGhAuthStatus(output: string): GitHubDetectionResult;
26
+ /**
27
+ * E2: Fetch GitHub SSH keys for a username and match against local keys.
28
+ *
29
+ * Fetches https://github.com/<username>.keys (one public key per line)
30
+ * and compares against SSH public keys in ~/.ssh/.
31
+ */
32
+ export declare function matchGitHubKeys(username: string): Promise<GitHubKeyMatch[]>;
33
+ /**
34
+ * Fetch SSH public keys from GitHub for a user.
35
+ * Returns one key per line, or empty array on error.
36
+ */
37
+ export declare function fetchGitHubKeys(username: string): Promise<string[]>;
38
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../cli/github.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAQ3E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAuBvE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqBjF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBzE"}
@@ -0,0 +1,159 @@
1
+ import { execFile } from 'node:child_process';
2
+ import { createHash } from 'node:crypto';
3
+ import * as fs from 'node:fs';
4
+ import * as os from 'node:os';
5
+ import * as path from 'node:path';
6
+ /**
7
+ * E1: Detect GitHub username via `gh auth status`.
8
+ *
9
+ * Parses the output to find the authenticated username. Supports multi-account
10
+ * GitHub CLI configurations. Returns null if gh is not installed or not authenticated.
11
+ */
12
+ export async function detectGitHubUsername() {
13
+ try {
14
+ const output = await execCommand('gh', ['auth', 'status']);
15
+ return parseGhAuthStatus(output);
16
+ }
17
+ catch {
18
+ // gh not installed, not authenticated, or command failed
19
+ return { username: null, accounts: [] };
20
+ }
21
+ }
22
+ /**
23
+ * Parse `gh auth status` output to extract username(s).
24
+ *
25
+ * Example output:
26
+ * github.com
27
+ * ✓ Logged in to github.com account rmyers (keyring)
28
+ * - Active account: true
29
+ */
30
+ export function parseGhAuthStatus(output) {
31
+ const accounts = [];
32
+ // Match patterns like "Logged in to github.com account <username>"
33
+ // or "Logged in to github.com as <username>"
34
+ const patterns = [
35
+ /Logged in to github\.com account (\S+)/g,
36
+ /Logged in to github\.com as (\S+)/g,
37
+ ];
38
+ for (const pattern of patterns) {
39
+ let match;
40
+ while ((match = pattern.exec(output)) !== null) {
41
+ const username = match[1].replace(/[()]/g, '');
42
+ if (!accounts.includes(username)) {
43
+ accounts.push(username);
44
+ }
45
+ }
46
+ }
47
+ return {
48
+ username: accounts.length > 0 ? accounts[0] : null,
49
+ accounts,
50
+ };
51
+ }
52
+ /**
53
+ * E2: Fetch GitHub SSH keys for a username and match against local keys.
54
+ *
55
+ * Fetches https://github.com/<username>.keys (one public key per line)
56
+ * and compares against SSH public keys in ~/.ssh/.
57
+ */
58
+ export async function matchGitHubKeys(username) {
59
+ const githubKeys = await fetchGitHubKeys(username);
60
+ if (githubKeys.length === 0)
61
+ return [];
62
+ const localKeys = listLocalSSHKeys();
63
+ const matches = [];
64
+ for (const local of localKeys) {
65
+ for (const ghKey of githubKeys) {
66
+ // Compare by key content (type + base64 blob), ignoring comments
67
+ if (keysMatch(local.content, ghKey)) {
68
+ matches.push({
69
+ localKeyPath: local.path,
70
+ localKeyFingerprint: local.fingerprint,
71
+ githubKeyLine: ghKey,
72
+ });
73
+ }
74
+ }
75
+ }
76
+ return matches;
77
+ }
78
+ /**
79
+ * Fetch SSH public keys from GitHub for a user.
80
+ * Returns one key per line, or empty array on error.
81
+ */
82
+ export async function fetchGitHubKeys(username) {
83
+ try {
84
+ const response = await fetch(`https://github.com/${encodeURIComponent(username)}.keys`, {
85
+ signal: AbortSignal.timeout(10_000),
86
+ });
87
+ if (!response.ok) {
88
+ return [];
89
+ }
90
+ const text = await response.text();
91
+ return text
92
+ .split('\n')
93
+ .map((line) => line.trim())
94
+ .filter((line) => line.length > 0);
95
+ }
96
+ catch {
97
+ return [];
98
+ }
99
+ }
100
+ /**
101
+ * List SSH public keys in ~/.ssh/.
102
+ */
103
+ function listLocalSSHKeys() {
104
+ const sshDir = path.join(os.homedir(), '.ssh');
105
+ const keys = [];
106
+ try {
107
+ const files = fs.readdirSync(sshDir);
108
+ for (const file of files) {
109
+ if (!file.endsWith('.pub'))
110
+ continue;
111
+ const filePath = path.join(sshDir, file);
112
+ try {
113
+ const content = fs.readFileSync(filePath, 'utf-8').trim();
114
+ const parts = content.split(/\s+/);
115
+ if (parts.length >= 2 && (parts[0].startsWith('ssh-') || parts[0].startsWith('ecdsa-'))) {
116
+ const blob = Buffer.from(parts[1], 'base64');
117
+ const hash = createHash('sha256').update(blob).digest('base64').replace(/=+$/, '');
118
+ keys.push({
119
+ path: filePath,
120
+ content,
121
+ fingerprint: `SHA256:${hash}`,
122
+ });
123
+ }
124
+ }
125
+ catch {
126
+ // Skip unreadable files
127
+ }
128
+ }
129
+ }
130
+ catch {
131
+ // ~/.ssh doesn't exist or isn't readable
132
+ }
133
+ return keys;
134
+ }
135
+ /**
136
+ * Compare two SSH public keys by their type and base64 blob.
137
+ * Ignores comments (the third field).
138
+ */
139
+ function keysMatch(localContent, githubLine) {
140
+ const localParts = localContent.split(/\s+/);
141
+ const ghParts = githubLine.split(/\s+/);
142
+ if (localParts.length < 2 || ghParts.length < 2)
143
+ return false;
144
+ // Compare key type and base64 blob
145
+ return localParts[0] === ghParts[0] && localParts[1] === ghParts[1];
146
+ }
147
+ function execCommand(command, args) {
148
+ return new Promise((resolve, reject) => {
149
+ execFile(command, args, { timeout: 10_000 }, (error, stdout, stderr) => {
150
+ if (error) {
151
+ reject(error);
152
+ return;
153
+ }
154
+ // gh auth status outputs to stderr
155
+ resolve(stdout + stderr);
156
+ });
157
+ });
158
+ }
159
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../cli/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ {
2
+ "description": "SHA-256 hashes of agent guide files served at chaoskb.com. Used to verify guide integrity after fetching.",
3
+ "baseUrl": "https://chaoskb.com",
4
+ "hashes": {
5
+ "/install-agent.md": "048fdd7a2b3c65a4f4d2043c5f18bc3999bd83a1b5fa6f16d97c35f9b9b7cee0",
6
+ "/agent-guide/sync.md": "c7d6e450856671c16f68abf09bb8f1611cec45d55c78bff4e9d1fb33e574a92e",
7
+ "/agent-guide/project-kbs.md": "d76ffea08781241703bcd1eeb2bd2b857548e922184458e534d4101868d962e4",
8
+ "/agent-guide/dual-identity.md": "acd58681f31916672937c7afb16a0da28f108b59a15689207818923ef4e61c93",
9
+ "/agent-guide/security.md": "8ff243960656ce24b37897c4a7351bcdaf77b5e50af9a24dc419767c197e37c5",
10
+ "/agent-guide/troubleshooting.md": "dcb5becfd4b72a1610a324195542d996f8736b7f63e6974923c099e32f232380",
11
+ "/agent-guide/uninstall.md": "fa4d9a75c31359972702d92ada6e3f4f7b1d609edd137f4cbe16ea32813dcb69"
12
+ }
13
+ }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../cli/index.ts"],"names":[],"mappings":""}