@kya-os/cli 1.7.0 → 1.8.3

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 (390) hide show
  1. package/dist/commands/agent.d.ts +35 -0
  2. package/dist/commands/agent.d.ts.map +1 -0
  3. package/dist/commands/agent.js +321 -0
  4. package/dist/commands/agent.js.map +1 -0
  5. package/dist/commands/build.js +2 -2
  6. package/dist/commands/build.js.map +1 -1
  7. package/dist/commands/check.js +3 -3
  8. package/dist/commands/check.js.map +1 -1
  9. package/dist/commands/checkpoint-init.d.ts +32 -0
  10. package/dist/commands/checkpoint-init.d.ts.map +1 -0
  11. package/dist/commands/checkpoint-init.js +521 -0
  12. package/dist/commands/checkpoint-init.js.map +1 -0
  13. package/dist/commands/claim.js +2 -2
  14. package/dist/commands/claim.js.map +1 -1
  15. package/dist/commands/dco.d.ts +59 -0
  16. package/dist/commands/dco.d.ts.map +1 -1
  17. package/dist/commands/dco.js +280 -5
  18. package/dist/commands/dco.js.map +1 -1
  19. package/dist/commands/dev.js +1 -1
  20. package/dist/commands/dev.js.map +1 -1
  21. package/dist/commands/doctor.d.ts.map +1 -1
  22. package/dist/commands/doctor.js +18 -24
  23. package/dist/commands/doctor.js.map +1 -1
  24. package/dist/commands/env.js +6 -6
  25. package/dist/commands/env.js.map +1 -1
  26. package/dist/commands/identity.js +3 -3
  27. package/dist/commands/identity.js.map +1 -1
  28. package/dist/commands/init-stages.d.ts +141 -0
  29. package/dist/commands/init-stages.d.ts.map +1 -0
  30. package/dist/commands/init-stages.js +684 -0
  31. package/dist/commands/init-stages.js.map +1 -0
  32. package/dist/commands/init.d.ts +46 -16
  33. package/dist/commands/init.d.ts.map +1 -1
  34. package/dist/commands/init.js +229 -279
  35. package/dist/commands/init.js.map +1 -1
  36. package/dist/commands/orchestrator.d.ts +18 -0
  37. package/dist/commands/orchestrator.d.ts.map +1 -0
  38. package/dist/commands/orchestrator.js +251 -0
  39. package/dist/commands/orchestrator.js.map +1 -0
  40. package/dist/commands/register.d.ts +1 -1
  41. package/dist/commands/register.d.ts.map +1 -1
  42. package/dist/commands/register.js +35 -7
  43. package/dist/commands/register.js.map +1 -1
  44. package/dist/commands/review.d.ts +48 -0
  45. package/dist/commands/review.d.ts.map +1 -0
  46. package/dist/commands/review.js +220 -0
  47. package/dist/commands/review.js.map +1 -0
  48. package/dist/commands/rotate.js +4 -4
  49. package/dist/commands/rotate.js.map +1 -1
  50. package/dist/commands/score.d.ts +15 -0
  51. package/dist/commands/score.d.ts.map +1 -0
  52. package/dist/commands/score.js +471 -0
  53. package/dist/commands/score.js.map +1 -0
  54. package/dist/commands/start.js +3 -3
  55. package/dist/commands/start.js.map +1 -1
  56. package/dist/commands/status.js +1 -1
  57. package/dist/commands/status.js.map +1 -1
  58. package/dist/commands/verify.js +6 -6
  59. package/dist/commands/verify.js.map +1 -1
  60. package/dist/dco.d.ts +4 -0
  61. package/dist/dco.d.ts.map +1 -0
  62. package/dist/dco.js +23 -0
  63. package/dist/dco.js.map +1 -0
  64. package/dist/index.js +62 -11
  65. package/dist/orchestrator/daemon.d.ts +137 -0
  66. package/dist/orchestrator/daemon.d.ts.map +1 -0
  67. package/dist/orchestrator/daemon.js +242 -0
  68. package/dist/orchestrator/daemon.js.map +1 -0
  69. package/dist/orchestrator/db/dispatches.d.ts +108 -0
  70. package/dist/orchestrator/db/dispatches.d.ts.map +1 -0
  71. package/dist/orchestrator/db/dispatches.js +122 -0
  72. package/dist/orchestrator/db/dispatches.js.map +1 -0
  73. package/dist/orchestrator/db/index.d.ts +50 -0
  74. package/dist/orchestrator/db/index.d.ts.map +1 -0
  75. package/dist/orchestrator/db/index.js +116 -0
  76. package/dist/orchestrator/db/index.js.map +1 -0
  77. package/dist/orchestrator/db/journal.d.ts +93 -0
  78. package/dist/orchestrator/db/journal.d.ts.map +1 -0
  79. package/dist/orchestrator/db/journal.js +91 -0
  80. package/dist/orchestrator/db/journal.js.map +1 -0
  81. package/dist/orchestrator/db/liveness.d.ts +97 -0
  82. package/dist/orchestrator/db/liveness.d.ts.map +1 -0
  83. package/dist/orchestrator/db/liveness.js +105 -0
  84. package/dist/orchestrator/db/liveness.js.map +1 -0
  85. package/dist/orchestrator/db/mission.d.ts +78 -0
  86. package/dist/orchestrator/db/mission.d.ts.map +1 -0
  87. package/dist/orchestrator/db/mission.js +99 -0
  88. package/dist/orchestrator/db/mission.js.map +1 -0
  89. package/dist/orchestrator/db/schema.d.ts +14 -0
  90. package/dist/orchestrator/db/schema.d.ts.map +1 -0
  91. package/dist/orchestrator/db/schema.js +169 -0
  92. package/dist/orchestrator/db/schema.js.map +1 -0
  93. package/dist/orchestrator/db/tickets.d.ts +147 -0
  94. package/dist/orchestrator/db/tickets.d.ts.map +1 -0
  95. package/dist/orchestrator/db/tickets.js +238 -0
  96. package/dist/orchestrator/db/tickets.js.map +1 -0
  97. package/dist/orchestrator/db/verdicts.d.ts +187 -0
  98. package/dist/orchestrator/db/verdicts.d.ts.map +1 -0
  99. package/dist/orchestrator/db/verdicts.js +197 -0
  100. package/dist/orchestrator/db/verdicts.js.map +1 -0
  101. package/dist/orchestrator/events.d.ts +69 -0
  102. package/dist/orchestrator/events.d.ts.map +1 -0
  103. package/dist/orchestrator/events.js +20 -0
  104. package/dist/orchestrator/events.js.map +1 -0
  105. package/dist/orchestrator/github-credential-anchor-sender.d.ts +159 -0
  106. package/dist/orchestrator/github-credential-anchor-sender.d.ts.map +1 -0
  107. package/dist/orchestrator/github-credential-anchor-sender.js +313 -0
  108. package/dist/orchestrator/github-credential-anchor-sender.js.map +1 -0
  109. package/dist/orchestrator/hub-dispatch.d.ts +120 -0
  110. package/dist/orchestrator/hub-dispatch.d.ts.map +1 -0
  111. package/dist/orchestrator/hub-dispatch.js +257 -0
  112. package/dist/orchestrator/hub-dispatch.js.map +1 -0
  113. package/dist/orchestrator/hub-observer.d.ts +201 -0
  114. package/dist/orchestrator/hub-observer.d.ts.map +1 -0
  115. package/dist/orchestrator/hub-observer.js +474 -0
  116. package/dist/orchestrator/hub-observer.js.map +1 -0
  117. package/dist/orchestrator/journal-writer.d.ts +80 -0
  118. package/dist/orchestrator/journal-writer.d.ts.map +1 -0
  119. package/dist/orchestrator/journal-writer.js +113 -0
  120. package/dist/orchestrator/journal-writer.js.map +1 -0
  121. package/dist/orchestrator/mcp/server.d.ts +136 -0
  122. package/dist/orchestrator/mcp/server.d.ts.map +1 -0
  123. package/dist/orchestrator/mcp/server.js +582 -0
  124. package/dist/orchestrator/mcp/server.js.map +1 -0
  125. package/dist/orchestrator/mcp/stdio.d.ts +22 -0
  126. package/dist/orchestrator/mcp/stdio.d.ts.map +1 -0
  127. package/dist/orchestrator/mcp/stdio.js +51 -0
  128. package/dist/orchestrator/mcp/stdio.js.map +1 -0
  129. package/dist/orchestrator/review.d.ts +131 -0
  130. package/dist/orchestrator/review.d.ts.map +1 -0
  131. package/dist/orchestrator/review.js +322 -0
  132. package/dist/orchestrator/review.js.map +1 -0
  133. package/dist/tui/app.d.ts +33 -0
  134. package/dist/tui/app.d.ts.map +1 -0
  135. package/dist/tui/app.js +71 -0
  136. package/dist/tui/app.js.map +1 -0
  137. package/dist/tui/components.d.ts +110 -0
  138. package/dist/tui/components.d.ts.map +1 -0
  139. package/dist/tui/components.js +118 -0
  140. package/dist/tui/components.js.map +1 -0
  141. package/dist/tui/index.d.ts +30 -0
  142. package/dist/tui/index.d.ts.map +1 -0
  143. package/dist/tui/index.js +95 -0
  144. package/dist/tui/index.js.map +1 -0
  145. package/dist/tui/keymap.d.ts +33 -0
  146. package/dist/tui/keymap.d.ts.map +1 -0
  147. package/dist/tui/keymap.js +49 -0
  148. package/dist/tui/keymap.js.map +1 -0
  149. package/dist/tui/nav.d.ts +29 -0
  150. package/dist/tui/nav.d.ts.map +1 -0
  151. package/dist/tui/nav.js +39 -0
  152. package/dist/tui/nav.js.map +1 -0
  153. package/dist/tui/sanitize.d.ts +25 -0
  154. package/dist/tui/sanitize.d.ts.map +1 -0
  155. package/dist/tui/sanitize.js +36 -0
  156. package/dist/tui/sanitize.js.map +1 -0
  157. package/dist/tui/theme.d.ts +32 -0
  158. package/dist/tui/theme.d.ts.map +1 -0
  159. package/dist/tui/theme.js +63 -0
  160. package/dist/tui/theme.js.map +1 -0
  161. package/dist/tui/views/agents.d.ts +67 -0
  162. package/dist/tui/views/agents.d.ts.map +1 -0
  163. package/dist/tui/views/agents.js +231 -0
  164. package/dist/tui/views/agents.js.map +1 -0
  165. package/dist/tui/views/index.d.ts +93 -0
  166. package/dist/tui/views/index.d.ts.map +1 -0
  167. package/dist/tui/views/index.js +150 -0
  168. package/dist/tui/views/index.js.map +1 -0
  169. package/dist/tui/views/registry.d.ts +22 -0
  170. package/dist/tui/views/registry.d.ts.map +1 -0
  171. package/dist/tui/views/registry.js +110 -0
  172. package/dist/tui/views/registry.js.map +1 -0
  173. package/dist/utils/agent/backoff.d.ts +31 -0
  174. package/dist/utils/agent/backoff.d.ts.map +1 -0
  175. package/dist/utils/agent/backoff.js +51 -0
  176. package/dist/utils/agent/backoff.js.map +1 -0
  177. package/dist/utils/agent/markers.d.ts +87 -0
  178. package/dist/utils/agent/markers.d.ts.map +1 -0
  179. package/dist/utils/agent/markers.js +147 -0
  180. package/dist/utils/agent/markers.js.map +1 -0
  181. package/dist/utils/agent/review.d.ts +67 -0
  182. package/dist/utils/agent/review.d.ts.map +1 -0
  183. package/dist/utils/agent/review.js +305 -0
  184. package/dist/utils/agent/review.js.map +1 -0
  185. package/dist/utils/agent/spawn-agent.d.ts +117 -0
  186. package/dist/utils/agent/spawn-agent.d.ts.map +1 -0
  187. package/dist/utils/agent/spawn-agent.js +177 -0
  188. package/dist/utils/agent/spawn-agent.js.map +1 -0
  189. package/dist/utils/agent/task.d.ts +101 -0
  190. package/dist/utils/agent/task.d.ts.map +1 -0
  191. package/dist/utils/agent/task.js +357 -0
  192. package/dist/utils/agent/task.js.map +1 -0
  193. package/dist/utils/agent/verify.d.ts +47 -0
  194. package/dist/utils/agent/verify.d.ts.map +1 -0
  195. package/dist/utils/agent/verify.js +144 -0
  196. package/dist/utils/agent/verify.js.map +1 -0
  197. package/dist/utils/agent-detector.d.ts +48 -0
  198. package/dist/utils/agent-detector.d.ts.map +1 -0
  199. package/dist/utils/agent-detector.js +74 -0
  200. package/dist/utils/agent-detector.js.map +1 -0
  201. package/dist/utils/agent-profile-stage.d.ts +70 -0
  202. package/dist/utils/agent-profile-stage.d.ts.map +1 -0
  203. package/dist/utils/agent-profile-stage.js +153 -0
  204. package/dist/utils/agent-profile-stage.js.map +1 -0
  205. package/dist/utils/agent-profiles.d.ts +27 -0
  206. package/dist/utils/agent-profiles.d.ts.map +1 -0
  207. package/dist/utils/agent-profiles.js +61 -0
  208. package/dist/utils/agent-profiles.js.map +1 -0
  209. package/dist/utils/checkpoint-api.d.ts +86 -0
  210. package/dist/utils/checkpoint-api.d.ts.map +1 -0
  211. package/dist/utils/checkpoint-api.js +196 -0
  212. package/dist/utils/checkpoint-api.js.map +1 -0
  213. package/dist/utils/checkpoint-env.d.ts +23 -0
  214. package/dist/utils/checkpoint-env.d.ts.map +1 -0
  215. package/dist/utils/checkpoint-env.js +59 -0
  216. package/dist/utils/checkpoint-env.js.map +1 -0
  217. package/dist/utils/checkpoint-scaffold.d.ts +61 -0
  218. package/dist/utils/checkpoint-scaffold.d.ts.map +1 -0
  219. package/dist/utils/checkpoint-scaffold.js +268 -0
  220. package/dist/utils/checkpoint-scaffold.js.map +1 -0
  221. package/dist/utils/cli-kit/browser.d.ts +24 -0
  222. package/dist/utils/cli-kit/browser.d.ts.map +1 -0
  223. package/dist/utils/cli-kit/browser.js +58 -0
  224. package/dist/utils/cli-kit/browser.js.map +1 -0
  225. package/dist/utils/cli-kit/claim-polling.d.ts +18 -0
  226. package/dist/utils/cli-kit/claim-polling.d.ts.map +1 -0
  227. package/dist/utils/{claim-polling.js → cli-kit/claim-polling.js} +19 -26
  228. package/dist/utils/cli-kit/claim-polling.js.map +1 -0
  229. package/dist/utils/cli-kit/diagnostics.d.ts +9 -0
  230. package/dist/utils/cli-kit/diagnostics.d.ts.map +1 -0
  231. package/dist/utils/cli-kit/diagnostics.js +11 -0
  232. package/dist/utils/cli-kit/diagnostics.js.map +1 -0
  233. package/dist/utils/cli-kit/fs-safe.d.ts +14 -0
  234. package/dist/utils/cli-kit/fs-safe.d.ts.map +1 -0
  235. package/dist/utils/cli-kit/fs-safe.js +20 -0
  236. package/dist/utils/cli-kit/fs-safe.js.map +1 -0
  237. package/dist/utils/cli-kit/index.d.ts +15 -0
  238. package/dist/utils/cli-kit/index.d.ts.map +1 -0
  239. package/dist/utils/cli-kit/index.js +10 -0
  240. package/dist/utils/cli-kit/index.js.map +1 -0
  241. package/dist/utils/cli-kit/json-file.d.ts +21 -0
  242. package/dist/utils/cli-kit/json-file.d.ts.map +1 -0
  243. package/dist/utils/cli-kit/json-file.js +51 -0
  244. package/dist/utils/cli-kit/json-file.js.map +1 -0
  245. package/dist/utils/cli-kit/marker-block.d.ts +26 -0
  246. package/dist/utils/cli-kit/marker-block.d.ts.map +1 -0
  247. package/dist/utils/cli-kit/marker-block.js +61 -0
  248. package/dist/utils/cli-kit/marker-block.js.map +1 -0
  249. package/dist/utils/cli-kit/paths.d.ts +15 -0
  250. package/dist/utils/cli-kit/paths.d.ts.map +1 -0
  251. package/dist/utils/cli-kit/paths.js +21 -0
  252. package/dist/utils/cli-kit/paths.js.map +1 -0
  253. package/dist/utils/cli-kit/secure-storage.d.ts +14 -0
  254. package/dist/utils/cli-kit/secure-storage.d.ts.map +1 -0
  255. package/dist/utils/cli-kit/secure-storage.js +20 -0
  256. package/dist/utils/cli-kit/secure-storage.js.map +1 -0
  257. package/dist/utils/cli-kit/step-report.d.ts +16 -0
  258. package/dist/utils/cli-kit/step-report.d.ts.map +1 -0
  259. package/dist/utils/cli-kit/step-report.js +36 -0
  260. package/dist/utils/cli-kit/step-report.js.map +1 -0
  261. package/dist/utils/dco/agent-metadata.d.ts +1 -1
  262. package/dist/utils/dco/agent-metadata.js +1 -1
  263. package/dist/utils/dco/agent-metadata.js.map +1 -1
  264. package/dist/utils/dco/claude-config.d.ts +18 -8
  265. package/dist/utils/dco/claude-config.d.ts.map +1 -1
  266. package/dist/utils/dco/claude-config.js +33 -79
  267. package/dist/utils/dco/claude-config.js.map +1 -1
  268. package/dist/utils/dco/dispatch.d.ts +134 -0
  269. package/dist/utils/dco/dispatch.d.ts.map +1 -0
  270. package/dist/utils/dco/dispatch.js +399 -0
  271. package/dist/utils/dco/dispatch.js.map +1 -0
  272. package/dist/utils/dco/fix.d.ts +122 -0
  273. package/dist/utils/dco/fix.d.ts.map +1 -0
  274. package/dist/utils/dco/fix.js +560 -0
  275. package/dist/utils/dco/fix.js.map +1 -0
  276. package/dist/utils/dco/git-config.d.ts.map +1 -1
  277. package/dist/utils/dco/git-config.js +5 -3
  278. package/dist/utils/dco/git-config.js.map +1 -1
  279. package/dist/utils/dco/github.d.ts +101 -0
  280. package/dist/utils/dco/github.d.ts.map +1 -1
  281. package/dist/utils/dco/github.js +133 -0
  282. package/dist/utils/dco/github.js.map +1 -1
  283. package/dist/utils/dco/paths.d.ts +1 -8
  284. package/dist/utils/dco/paths.d.ts.map +1 -1
  285. package/dist/utils/dco/paths.js +3 -12
  286. package/dist/utils/dco/paths.js.map +1 -1
  287. package/dist/utils/dco/render.d.ts +1 -1
  288. package/dist/utils/dco/render.d.ts.map +1 -1
  289. package/dist/utils/dco/render.js +4 -21
  290. package/dist/utils/dco/render.js.map +1 -1
  291. package/dist/utils/dco/resolve-agent.d.ts +54 -0
  292. package/dist/utils/dco/resolve-agent.d.ts.map +1 -0
  293. package/dist/utils/dco/resolve-agent.js +164 -0
  294. package/dist/utils/dco/resolve-agent.js.map +1 -0
  295. package/dist/utils/dco/setup.d.ts +10 -7
  296. package/dist/utils/dco/setup.d.ts.map +1 -1
  297. package/dist/utils/dco/setup.js +264 -199
  298. package/dist/utils/dco/setup.js.map +1 -1
  299. package/dist/utils/dco/signing-key-writer.d.ts +40 -0
  300. package/dist/utils/dco/signing-key-writer.d.ts.map +1 -0
  301. package/dist/utils/dco/signing-key-writer.js +76 -0
  302. package/dist/utils/dco/signing-key-writer.js.map +1 -0
  303. package/dist/utils/dco/ssh-key.d.ts +50 -0
  304. package/dist/utils/dco/ssh-key.d.ts.map +1 -1
  305. package/dist/utils/dco/ssh-key.js +129 -8
  306. package/dist/utils/dco/ssh-key.js.map +1 -1
  307. package/dist/utils/dco/status.d.ts +1 -1
  308. package/dist/utils/dco/status.d.ts.map +1 -1
  309. package/dist/utils/dco/status.js +3 -3
  310. package/dist/utils/dco/status.js.map +1 -1
  311. package/dist/utils/dco/verify.d.ts +170 -0
  312. package/dist/utils/dco/verify.d.ts.map +1 -0
  313. package/dist/utils/dco/verify.js +550 -0
  314. package/dist/utils/dco/verify.js.map +1 -0
  315. package/dist/utils/dependency-installer.d.ts +37 -0
  316. package/dist/utils/dependency-installer.d.ts.map +1 -0
  317. package/dist/utils/dependency-installer.js +32 -0
  318. package/dist/utils/dependency-installer.js.map +1 -0
  319. package/dist/utils/github-credential-stage.d.ts +87 -0
  320. package/dist/utils/github-credential-stage.d.ts.map +1 -0
  321. package/dist/utils/github-credential-stage.js +168 -0
  322. package/dist/utils/github-credential-stage.js.map +1 -0
  323. package/dist/utils/github-credential.d.ts +160 -0
  324. package/dist/utils/github-credential.d.ts.map +1 -0
  325. package/dist/utils/github-credential.js +308 -0
  326. package/dist/utils/github-credential.js.map +1 -0
  327. package/dist/utils/gitignore.d.ts +17 -0
  328. package/dist/utils/gitignore.d.ts.map +1 -0
  329. package/dist/utils/gitignore.js +40 -0
  330. package/dist/utils/gitignore.js.map +1 -0
  331. package/dist/utils/hub-config.d.ts +21 -0
  332. package/dist/utils/hub-config.d.ts.map +1 -0
  333. package/dist/utils/hub-config.js +28 -0
  334. package/dist/utils/hub-config.js.map +1 -0
  335. package/dist/utils/identity-heal.d.ts +16 -0
  336. package/dist/utils/identity-heal.d.ts.map +1 -0
  337. package/dist/utils/identity-heal.js +37 -0
  338. package/dist/utils/identity-heal.js.map +1 -0
  339. package/dist/utils/init/pipeline.d.ts +74 -0
  340. package/dist/utils/init/pipeline.d.ts.map +1 -0
  341. package/dist/utils/init/pipeline.js +96 -0
  342. package/dist/utils/init/pipeline.js.map +1 -0
  343. package/dist/utils/poll.d.ts +64 -0
  344. package/dist/utils/poll.d.ts.map +1 -0
  345. package/dist/utils/poll.js +76 -0
  346. package/dist/utils/poll.js.map +1 -0
  347. package/dist/utils/register-agent-identity.d.ts +67 -0
  348. package/dist/utils/register-agent-identity.d.ts.map +1 -0
  349. package/dist/utils/register-agent-identity.js +34 -0
  350. package/dist/utils/register-agent-identity.js.map +1 -0
  351. package/dist/utils/review/did-web-key.d.ts +34 -0
  352. package/dist/utils/review/did-web-key.d.ts.map +1 -0
  353. package/dist/utils/review/did-web-key.js +104 -0
  354. package/dist/utils/review/did-web-key.js.map +1 -0
  355. package/dist/utils/review/load-registry.d.ts +33 -0
  356. package/dist/utils/review/load-registry.d.ts.map +1 -0
  357. package/dist/utils/review/load-registry.js +62 -0
  358. package/dist/utils/review/load-registry.js.map +1 -0
  359. package/dist/utils/review/verdict-verify.d.ts +43 -0
  360. package/dist/utils/review/verdict-verify.d.ts.map +1 -0
  361. package/dist/utils/review/verdict-verify.js +53 -0
  362. package/dist/utils/review/verdict-verify.js.map +1 -0
  363. package/dist/utils/review-registry-writer.d.ts +52 -0
  364. package/dist/utils/review-registry-writer.d.ts.map +1 -0
  365. package/dist/utils/review-registry-writer.js +79 -0
  366. package/dist/utils/review-registry-writer.js.map +1 -0
  367. package/dist/utils/should-install-dependency.d.ts +17 -0
  368. package/dist/utils/should-install-dependency.d.ts.map +1 -0
  369. package/dist/utils/should-install-dependency.js +25 -0
  370. package/dist/utils/should-install-dependency.js.map +1 -0
  371. package/dist/utils/tool-readiness.d.ts +57 -0
  372. package/dist/utils/tool-readiness.d.ts.map +1 -0
  373. package/dist/utils/tool-readiness.js +114 -0
  374. package/dist/utils/tool-readiness.js.map +1 -0
  375. package/dist/utils/which.d.ts +2 -0
  376. package/dist/utils/which.d.ts.map +1 -0
  377. package/dist/utils/which.js +22 -0
  378. package/dist/utils/which.js.map +1 -0
  379. package/dist/version.d.ts +15 -0
  380. package/dist/version.d.ts.map +1 -0
  381. package/dist/version.js +29 -0
  382. package/dist/version.js.map +1 -0
  383. package/package.json +19 -6
  384. package/dist/utils/claim-polling.d.ts +0 -21
  385. package/dist/utils/claim-polling.d.ts.map +0 -1
  386. package/dist/utils/claim-polling.js.map +0 -1
  387. package/dist/utils/dco/fs-safe.d.ts +0 -14
  388. package/dist/utils/dco/fs-safe.d.ts.map +0 -1
  389. package/dist/utils/dco/fs-safe.js +0 -20
  390. package/dist/utils/dco/fs-safe.js.map +0 -1
@@ -0,0 +1,74 @@
1
+ import { existsSync } from "fs";
2
+ import { homedir as osHomedir } from "os";
3
+ import { join } from "path";
4
+ import { defaultWhich } from "./which.js";
5
+ /**
6
+ * Detection table v1. Exported so tests enumerate every row and adding a
7
+ * later agent kind is a one-row addition, not a code change.
8
+ */
9
+ export const AGENT_DETECTION_TABLE = [
10
+ { kind: "claude-code", binNames: ["claude"], homeConfigDirs: [".claude"] },
11
+ { kind: "codex", binNames: ["codex"], homeConfigDirs: [".codex"] },
12
+ { kind: "gemini-cli", binNames: ["gemini"], homeConfigDirs: [".gemini"] },
13
+ {
14
+ kind: "cursor",
15
+ binNames: ["cursor"],
16
+ homeConfigDirs: [],
17
+ darwinAppPaths: ["/Applications/Cursor.app"],
18
+ },
19
+ { kind: "opencode", binNames: ["opencode"], homeConfigDirs: [".opencode"] },
20
+ { kind: "aider", binNames: ["aider"], homeConfigDirs: [] },
21
+ ];
22
+ function defaultDeps() {
23
+ return {
24
+ whichImpl: defaultWhich,
25
+ fsImpl: { existsSync },
26
+ homedir: osHomedir,
27
+ platform: process.platform,
28
+ };
29
+ }
30
+ /**
31
+ * Detect which agent harnesses are present. Returns only the kinds with at
32
+ * least one match; an empty array means nothing was detected (not an error).
33
+ */
34
+ export async function detectAgents(deps = {}) {
35
+ const { whichImpl, fsImpl, homedir, platform } = {
36
+ ...defaultDeps(),
37
+ ...deps,
38
+ };
39
+ const home = homedir();
40
+ const results = [];
41
+ for (const row of AGENT_DETECTION_TABLE) {
42
+ const evidence = [];
43
+ let binPath;
44
+ let configDir;
45
+ for (const bin of row.binNames) {
46
+ const found = await whichImpl(bin);
47
+ if (found) {
48
+ binPath = found;
49
+ evidence.push(`\`${bin}\` on PATH`);
50
+ break;
51
+ }
52
+ }
53
+ for (const dir of row.homeConfigDirs) {
54
+ const full = join(home, dir);
55
+ if (fsImpl.existsSync(full)) {
56
+ configDir = full;
57
+ evidence.push(`${full} exists`);
58
+ break;
59
+ }
60
+ }
61
+ if (platform === "darwin") {
62
+ for (const appPath of row.darwinAppPaths ?? []) {
63
+ if (fsImpl.existsSync(appPath)) {
64
+ evidence.push(`${appPath} exists`);
65
+ }
66
+ }
67
+ }
68
+ if (evidence.length > 0) {
69
+ results.push({ kind: row.kind, binPath, configDir, evidence });
70
+ }
71
+ }
72
+ return results;
73
+ }
74
+ //# sourceMappingURL=agent-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-detector.js","sourceRoot":"","sources":["../../src/utils/agent-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { type AgentKind, type DetectedAgent } from "./agent-detector.js";
2
+ import { type AgentProfile } from "./agent-profiles.js";
3
+ import { type WriteSigningKeyResult } from "./dco/signing-key-writer.js";
4
+ /**
5
+ * Orchestrates `kya-os init`'s agent-profile stage: detect harnesses,
6
+ * subtract ones that already have a profile, decide (via flag or prompt)
7
+ * which remainder to set up, register each, write its signing key, and save
8
+ * the profile. Every side effect (detection, the existing-profile check, the
9
+ * confirm prompt, registration, and the save itself) is an injectable seam
10
+ * so the whole stage runs in tests with zero real registration or network
11
+ * access -- `registerIdentity` in particular has NO default: a caller that
12
+ * forgets to wire it gets a type error, not an accidental real registration.
13
+ */
14
+ export interface RegisteredIdentity {
15
+ did: string;
16
+ claimUrl?: string;
17
+ agentSlug?: string;
18
+ privateKey: string;
19
+ publicKey?: string;
20
+ }
21
+ /**
22
+ * No `slug` field: the underlying registration API (`enableMCPIdentityCLI`)
23
+ * has no parameter for requesting a specific slug -- it assigns one
24
+ * server-side from `name`. A caller-supplied slug here would be silently
25
+ * ignored, which is exactly the bug this type used to invite (Bugbot,
26
+ * PR #699): local file naming would use one slug while the registered DID
27
+ * used another. `runAgentProfileStage` derives the slug it actually stores
28
+ * under from the registration RESULT (`agentSlug`), never from a request.
29
+ */
30
+ export type RegisterAgentIdentity = (input: {
31
+ kind: AgentKind;
32
+ name: string;
33
+ }) => Promise<RegisteredIdentity>;
34
+ export interface AgentProfileStageOptions {
35
+ interactive: boolean;
36
+ /** `--profiles <kind,kind,...>` in non-interactive mode. */
37
+ profilesFlag?: AgentKind[];
38
+ /** `--skip-profiles`. */
39
+ skipProfiles?: boolean;
40
+ /** Used to suggest `<githubLogin>-<kind>` slugs; falls back to `agent-<kind>`. */
41
+ githubLogin?: string;
42
+ /** Asked once per remaining detected agent in interactive mode. */
43
+ confirmImpl?: (agent: DetectedAgent) => Promise<boolean>;
44
+ registerIdentity: RegisterAgentIdentity;
45
+ detectAgentsImpl?: () => Promise<DetectedAgent[]>;
46
+ findProfileByKindImpl?: (kind: AgentKind) => AgentProfile | undefined;
47
+ saveProfileImpl?: (profile: AgentProfile) => void;
48
+ writeSigningKeyImpl?: (slug: string, identity: {
49
+ privateKey: string;
50
+ publicKey?: string;
51
+ }) => WriteSigningKeyResult;
52
+ now?: () => string;
53
+ }
54
+ export interface AgentProfileStageResult {
55
+ detected: DetectedAgent[];
56
+ createdProfiles: AgentProfile[];
57
+ /** Kinds that already had a profile before this run. */
58
+ skippedKinds: AgentKind[];
59
+ claimUrls: Array<{
60
+ kind: AgentKind;
61
+ slug: string;
62
+ claimUrl: string;
63
+ }>;
64
+ errors: Array<{
65
+ kind: AgentKind;
66
+ message: string;
67
+ }>;
68
+ }
69
+ export declare function runAgentProfileStage(options: AgentProfileStageOptions): Promise<AgentProfileStageResult>;
70
+ //# sourceMappingURL=agent-profile-stage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-profile-stage.d.ts","sourceRoot":"","sources":["../../src/utils/agent-profile-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AAGrC;;;;;;;;;GASG;AAEH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE;IAC1C,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAElC,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,yBAAyB;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAClD,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,YAAY,GAAG,SAAS,CAAC;IACtE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,CACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACjD,qBAAqB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,wDAAwD;IACxD,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAkCD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CA6HlC"}
@@ -0,0 +1,153 @@
1
+ import { detectAgents as defaultDetectAgents, } from "./agent-detector.js";
2
+ import { findProfileByKind as defaultFindProfileByKind, saveProfile as defaultSaveProfile, } from "./agent-profiles.js";
3
+ import { writeAgentSigningKey as defaultWriteAgentSigningKey, } from "./dco/signing-key-writer.js";
4
+ import { isValidSlug } from "./dco/paths.js";
5
+ /**
6
+ * Always returns a slug matching SLUG_PATTERN (packages/cli/src/utils/dco/
7
+ * paths.ts): sanitizes githubLogin down to the allowed charset and strips
8
+ * leading/trailing dashes, falling back to "agent" if that leaves nothing
9
+ * usable (e.g. a login that is punctuation-only). `kind` is always one of
10
+ * the fixed AgentKind values, already in that charset, so the result is
11
+ * guaranteed valid -- signingKeyPath/profilePath's own isValidSlug checks
12
+ * are defense-in-depth, not the only thing standing between a bad login
13
+ * and a thrown "Invalid agent slug" deep in the per-agent loop below.
14
+ */
15
+ function suggestSlug(githubLogin, kind) {
16
+ const sanitizedLogin = (githubLogin || "")
17
+ .toLowerCase()
18
+ .replace(/[^a-z0-9-]+/g, "-")
19
+ .replace(/^-+|-+$/g, "");
20
+ const base = sanitizedLogin || "agent";
21
+ return `${base}-${kind}`;
22
+ }
23
+ async function defaultConfirm(agent) {
24
+ const inquirer = (await import("inquirer")).default;
25
+ const { answer } = await inquirer.prompt([
26
+ {
27
+ type: "confirm",
28
+ name: "answer",
29
+ message: `Set up a KYA profile for ${agent.kind}?`,
30
+ default: true,
31
+ },
32
+ ]);
33
+ return answer;
34
+ }
35
+ export async function runAgentProfileStage(options) {
36
+ const detectAgentsImpl = options.detectAgentsImpl ?? defaultDetectAgents;
37
+ const findProfileByKindImpl = options.findProfileByKindImpl ?? defaultFindProfileByKind;
38
+ const saveProfileImpl = options.saveProfileImpl ?? defaultSaveProfile;
39
+ const writeSigningKeyImpl = options.writeSigningKeyImpl ?? defaultWriteAgentSigningKey;
40
+ const now = options.now ?? (() => new Date().toISOString());
41
+ const detected = await detectAgentsImpl();
42
+ const skippedKinds = [];
43
+ const remaining = [];
44
+ for (const agent of detected) {
45
+ if (findProfileByKindImpl(agent.kind)) {
46
+ skippedKinds.push(agent.kind);
47
+ }
48
+ else {
49
+ remaining.push(agent);
50
+ }
51
+ }
52
+ const result = {
53
+ detected,
54
+ createdProfiles: [],
55
+ skippedKinds,
56
+ claimUrls: [],
57
+ errors: [],
58
+ };
59
+ if (remaining.length === 0 || options.skipProfiles) {
60
+ return result;
61
+ }
62
+ let toSetUp;
63
+ if (options.interactive) {
64
+ const confirmImpl = options.confirmImpl ?? defaultConfirm;
65
+ toSetUp = [];
66
+ for (const agent of remaining) {
67
+ if (await confirmImpl(agent)) {
68
+ toSetUp.push(agent);
69
+ }
70
+ }
71
+ }
72
+ else if (options.profilesFlag && options.profilesFlag.length > 0) {
73
+ const wanted = new Set(options.profilesFlag);
74
+ toSetUp = remaining.filter((agent) => wanted.has(agent.kind));
75
+ }
76
+ else {
77
+ // Bare non-TTY: default to skip. `--yes` deliberately does NOT reach
78
+ // here -- creating identities always needs an explicit per-agent yes or
79
+ // an explicit --profiles listing.
80
+ toSetUp = [];
81
+ }
82
+ for (const agent of toSetUp) {
83
+ const suggestedSlug = suggestSlug(options.githubLogin, agent.kind);
84
+ let registered;
85
+ try {
86
+ registered = await options.registerIdentity({
87
+ kind: agent.kind,
88
+ name: `${options.githubLogin ?? "Agent"} (${agent.kind})`,
89
+ });
90
+ }
91
+ catch (error) {
92
+ result.errors.push({
93
+ kind: agent.kind,
94
+ message: error instanceof Error ? error.message : String(error),
95
+ });
96
+ continue;
97
+ }
98
+ // The slug used for local storage must be the one the SERVER actually
99
+ // assigned, not the one we suggested: registration has no parameter to
100
+ // request a specific slug, so `registered.agentSlug` is the only value
101
+ // that's guaranteed to match `registered.did`. Using the suggestion
102
+ // instead would write the signing key and profile under a slug that
103
+ // disagrees with the registered identity -- a later `dco setup <slug>`
104
+ // would sign as the wrong agent. Only trust it once validated (it's
105
+ // server-controlled data about to become a path segment); an invalid
106
+ // or absent value falls back to our own already-valid suggestion.
107
+ const slug = registered.agentSlug && isValidSlug(registered.agentSlug)
108
+ ? registered.agentSlug
109
+ : suggestedSlug;
110
+ // Write the signing key the way `dco setup` does (the shared, tested
111
+ // conversion in signing-key-writer.ts) before saving the profile: a
112
+ // profile whose key never made it to disk would be silently unusable.
113
+ // A registration already happened for this agent by this point (the
114
+ // registerIdentity call above succeeded), so any unexpected throw here
115
+ // (not just writeAgentSigningKey's own returned "failed" status) is
116
+ // caught too -- one agent's key-write bug must not abort the rest of
117
+ // the batch, matching the resilience already proven for registration
118
+ // failures above.
119
+ try {
120
+ const keyResult = writeSigningKeyImpl(slug, {
121
+ privateKey: registered.privateKey,
122
+ publicKey: registered.publicKey,
123
+ });
124
+ if (keyResult.status === "failed") {
125
+ result.errors.push({ kind: agent.kind, message: keyResult.detail });
126
+ continue;
127
+ }
128
+ const profile = {
129
+ slug,
130
+ kind: agent.kind,
131
+ did: registered.did,
132
+ binPath: agent.binPath,
133
+ createdAt: now(),
134
+ registryUrl: `https://knowthat.ai/agents/${slug}`,
135
+ claimUrl: registered.claimUrl,
136
+ commandAllowlist: [],
137
+ };
138
+ saveProfileImpl(profile);
139
+ result.createdProfiles.push(profile);
140
+ if (registered.claimUrl) {
141
+ result.claimUrls.push({ kind: agent.kind, slug, claimUrl: registered.claimUrl });
142
+ }
143
+ }
144
+ catch (error) {
145
+ result.errors.push({
146
+ kind: agent.kind,
147
+ message: error instanceof Error ? error.message : String(error),
148
+ });
149
+ }
150
+ }
151
+ return result;
152
+ }
153
+ //# sourceMappingURL=agent-profile-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-profile-stage.js","sourceRoot":"","sources":["../../src/utils/agent-profile-stage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { AgentKind } from "./agent-detector.js";
2
+ /**
3
+ * Local record of a per-agent KYA identity created by `kya-os init`'s agent
4
+ * profile stage. Holds NO key material -- keys stay under
5
+ * `~/.mcpi/keys/<slug>` (see `packages/cli/src/utils/dco/paths.ts`); this
6
+ * store carries only the slug that locates them.
7
+ */
8
+ export interface AgentProfile {
9
+ slug: string;
10
+ kind: AgentKind;
11
+ /** did:web:knowthat.ai:agents:<slug> */
12
+ did: string;
13
+ binPath?: string;
14
+ createdAt: string;
15
+ registryUrl: string;
16
+ claimUrl?: string;
17
+ /** Consumed by the harness wrapper; empty/absent means dispatch-disabled. */
18
+ commandAllowlist?: string[];
19
+ }
20
+ /** Absolute path to the profiles directory, e.g. ~/.mcpi/profiles. */
21
+ export declare function profilesDir(): string;
22
+ /** All saved profiles. An empty machine (no profiles dir yet) returns []. */
23
+ export declare function listProfiles(): AgentProfile[];
24
+ /** Persist a profile at 0600 inside a 0700 directory. Overwrites by slug. */
25
+ export declare function saveProfile(profile: AgentProfile): void;
26
+ export declare function findProfileByKind(kind: AgentKind): AgentProfile | undefined;
27
+ //# sourceMappingURL=agent-profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-profiles.d.ts","sourceRoot":"","sources":["../../src/utils/agent-profiles.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,sEAAsE;AACtE,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AA+BD,6EAA6E;AAC7E,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAkB7C;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAGvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAE3E"}
@@ -0,0 +1,61 @@
1
+ import { existsSync, readFileSync, readdirSync } from "fs";
2
+ import { join, resolve } from "path";
3
+ import { ensureSecureDir, isValidSlug, stateDir, writeSecureFile, } from "./cli-kit/index.js";
4
+ /** Absolute path to the profiles directory, e.g. ~/.mcpi/profiles. */
5
+ export function profilesDir() {
6
+ return resolve(process.env.MCPI_PROFILES_DIR || stateDir("mcpi", "profiles"));
7
+ }
8
+ function profilePath(slug) {
9
+ if (!isValidSlug(slug)) {
10
+ throw new Error(`Invalid agent slug "${slug}": must be lowercase letters, numbers, and dashes.`);
11
+ }
12
+ return join(profilesDir(), `${slug}.json`);
13
+ }
14
+ function isStringArray(value) {
15
+ return Array.isArray(value) && value.every((v) => typeof v === "string");
16
+ }
17
+ /** Runtime shape guard: a corrupt or hand-edited file must never crash listProfiles. */
18
+ function isAgentProfile(value) {
19
+ if (!value || typeof value !== "object")
20
+ return false;
21
+ const v = value;
22
+ return (typeof v.slug === "string" &&
23
+ typeof v.kind === "string" &&
24
+ typeof v.did === "string" &&
25
+ typeof v.createdAt === "string" &&
26
+ typeof v.registryUrl === "string" &&
27
+ (v.binPath === undefined || typeof v.binPath === "string") &&
28
+ (v.claimUrl === undefined || typeof v.claimUrl === "string") &&
29
+ (v.commandAllowlist === undefined || isStringArray(v.commandAllowlist)));
30
+ }
31
+ /** All saved profiles. An empty machine (no profiles dir yet) returns []. */
32
+ export function listProfiles() {
33
+ const dir = profilesDir();
34
+ if (!existsSync(dir)) {
35
+ return [];
36
+ }
37
+ const profiles = [];
38
+ for (const entry of readdirSync(dir)) {
39
+ if (!entry.endsWith(".json"))
40
+ continue;
41
+ try {
42
+ const parsed = JSON.parse(readFileSync(join(dir, entry), "utf-8"));
43
+ if (isAgentProfile(parsed)) {
44
+ profiles.push(parsed);
45
+ }
46
+ }
47
+ catch {
48
+ // Skip an unreadable/corrupt profile rather than fail the whole list.
49
+ }
50
+ }
51
+ return profiles;
52
+ }
53
+ /** Persist a profile at 0600 inside a 0700 directory. Overwrites by slug. */
54
+ export function saveProfile(profile) {
55
+ ensureSecureDir(profilesDir());
56
+ writeSecureFile(profilePath(profile.slug), JSON.stringify(profile, null, 2) + "\n");
57
+ }
58
+ export function findProfileByKind(kind) {
59
+ return listProfiles().find((p) => p.kind === kind);
60
+ }
61
+ //# sourceMappingURL=agent-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-profiles.js","sourceRoot":"","sources":["../../src/utils/agent-profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * HTTP client for the `kya-os checkpoint init` claim-token flow (KYA-1037).
3
+ *
4
+ * Talks to the three public Checkpoint dashboard endpoints added for this
5
+ * flow: register a claim token, poll its status, and exchange a claimed
6
+ * token for a project API key. Base URL is `CHECKPOINT_API_URL` when set,
7
+ * else the production dashboard origin, mirroring the `KTA_API_URL` /
8
+ * `KTA_BASE_URL` override pattern already used by `register.ts`/`claim.ts`
9
+ * for the sibling knowthat.ai claim flow.
10
+ */
11
+ /**
12
+ * Reconstructs the claim URL from a token alone, same shape the register
13
+ * endpoint itself builds (`/cli/claim?token=...` off the same base). Used
14
+ * only as a fallback for a marker written before this CLI persisted the
15
+ * server-issued `claimUrl` directly; a current run always reprints the
16
+ * value the server returned at register time.
17
+ */
18
+ export declare function buildCheckpointClaimUrl(claimToken: string): string;
19
+ /** The configured Checkpoint origin (protocol + host), to host-match a server-returned URL before acting on it. */
20
+ export declare function checkpointOrigin(): string;
21
+ /**
22
+ * True when CHECKPOINT_API_URL resolves to plain http on a non-localhost
23
+ * host: the claim token, and later the minted API key, cross that
24
+ * connection in the clear.
25
+ */
26
+ export declare function isInsecureCheckpointOrigin(): boolean;
27
+ export interface CheckpointRegisterHints {
28
+ domainHint?: string;
29
+ repoName?: string;
30
+ framework?: "nextjs" | "express" | "static" | "unknown";
31
+ }
32
+ export interface CheckpointRegisterResult {
33
+ registrationId: string;
34
+ claimToken: string;
35
+ claimUrl: string;
36
+ /**
37
+ * Short human-checkable code (`XXX-XXX`) derived from the registration
38
+ * id. The claim URL is first-claimer-wins with nothing binding it to
39
+ * the person who ran `checkpoint init`: if it leaks pre-claim (echoed
40
+ * into CI logs, shoulder-surfed), whoever opens it first claims it into
41
+ * THEIR org, and the real caller's CLI would otherwise proceed to
42
+ * install telemetry into the attacker's project. The claim page shows
43
+ * the same code so the human can cross-check terminal against browser
44
+ * before trusting a "claimed" status.
45
+ */
46
+ confirmationCode: string;
47
+ expiresAt: string;
48
+ }
49
+ export type CheckpointClaimStatus = "pending" | "claimed" | "expired";
50
+ export interface CheckpointExchangeResult {
51
+ projectId: string;
52
+ friendlyId: string | null;
53
+ organizationId: string;
54
+ apiKey: string;
55
+ dashboardUrl: string;
56
+ }
57
+ /** True for an http(s) URL only -- never file:, vscode:, or any other scheme an OS handler might act on unexpectedly. */
58
+ export declare function isHttpUrl(value: string): boolean;
59
+ export declare const CONFIRMATION_CODE_RE: RegExp;
60
+ export declare const API_KEY_RE: RegExp;
61
+ export declare const PROJECT_ID_RE: RegExp;
62
+ /**
63
+ * True only for an http(s) URL whose origin matches the configured
64
+ * Checkpoint origin. A same-shape check gated ONLY the open() call in
65
+ * checkpoint-init.ts (Bugbot, PR #658): announceClaim, the marker, and
66
+ * the --json payload still trusted and displayed any http(s) URL, so a
67
+ * compromised or misconfigured register response could still get a
68
+ * cross-origin, token-bearing link printed and persisted even though it
69
+ * was already judged unsafe to open. Validating at the source means
70
+ * every consumer of a parsed CheckpointRegisterResult gets the guarantee
71
+ * for free.
72
+ */
73
+ export declare function isTrustedClaimUrl(value: string): boolean;
74
+ /**
75
+ * `POST /api/cli/register`: mints a 24h claim token for this repo. The
76
+ * plaintext token is returned here and persisted (alongside
77
+ * `registrationId`) to `.checkpoint/registration.json` (0600, gitignored)
78
+ * by checkpoint-init.ts: a resumed run needs the token itself, not just
79
+ * the id, since the token IS the exchange credential.
80
+ */
81
+ export declare function registerCheckpointProject(hints: CheckpointRegisterHints, signal?: AbortSignal): Promise<CheckpointRegisterResult>;
82
+ /** `GET /api/cli/registrations/:id/status`: the poll target while waiting for the browser claim. */
83
+ export declare function fetchCheckpointClaimStatus(registrationId: string, signal?: AbortSignal): Promise<CheckpointClaimStatus>;
84
+ /** `POST /api/cli/exchange`: trades a claimed token for a project API key exactly once. */
85
+ export declare function exchangeCheckpointClaim(claimToken: string, signal?: AbortSignal): Promise<CheckpointExchangeResult>;
86
+ //# sourceMappingURL=checkpoint-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-api.d.ts","sourceRoot":"","sources":["../../src/utils/checkpoint-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkBH;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED,mHAAmH;AACnH,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAiBpD;AAOD,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;CACzD;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;OASG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAyBD,yHAAyH;AACzH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOhD;AAUD,eAAO,MAAM,oBAAoB,QAA8B,CAAC;AAGhE,eAAO,MAAM,UAAU,QAA8B,CAAC;AACtD,eAAO,MAAM,aAAa,QAAsB,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOxD;AAoDD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAED,oGAAoG;AACpG,wBAAsB,0BAA0B,CAC9C,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAUhC;AAED,2FAA2F;AAC3F,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,wBAAwB,CAAC,CAUnC"}