@kya-os/cli 1.8.1 → 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 (385) 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 +1 -1
  10. package/dist/commands/checkpoint-init.d.ts.map +1 -1
  11. package/dist/commands/checkpoint-init.js +8 -41
  12. package/dist/commands/checkpoint-init.js.map +1 -1
  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 +52 -9
  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 +1 -1
  210. package/dist/utils/checkpoint-api.js +1 -1
  211. package/dist/utils/checkpoint-env.d.ts +1 -1
  212. package/dist/utils/checkpoint-env.js +2 -2
  213. package/dist/utils/checkpoint-env.js.map +1 -1
  214. package/dist/utils/checkpoint-scaffold.d.ts +1 -1
  215. package/dist/utils/checkpoint-scaffold.js +1 -1
  216. package/dist/utils/cli-kit/browser.d.ts +24 -0
  217. package/dist/utils/cli-kit/browser.d.ts.map +1 -0
  218. package/dist/utils/cli-kit/browser.js +58 -0
  219. package/dist/utils/cli-kit/browser.js.map +1 -0
  220. package/dist/utils/cli-kit/claim-polling.d.ts +18 -0
  221. package/dist/utils/cli-kit/claim-polling.d.ts.map +1 -0
  222. package/dist/utils/{claim-polling.js → cli-kit/claim-polling.js} +19 -26
  223. package/dist/utils/cli-kit/claim-polling.js.map +1 -0
  224. package/dist/utils/cli-kit/diagnostics.d.ts +9 -0
  225. package/dist/utils/cli-kit/diagnostics.d.ts.map +1 -0
  226. package/dist/utils/cli-kit/diagnostics.js +11 -0
  227. package/dist/utils/cli-kit/diagnostics.js.map +1 -0
  228. package/dist/utils/cli-kit/fs-safe.d.ts +14 -0
  229. package/dist/utils/cli-kit/fs-safe.d.ts.map +1 -0
  230. package/dist/utils/cli-kit/fs-safe.js +20 -0
  231. package/dist/utils/cli-kit/fs-safe.js.map +1 -0
  232. package/dist/utils/cli-kit/index.d.ts +15 -0
  233. package/dist/utils/cli-kit/index.d.ts.map +1 -0
  234. package/dist/utils/cli-kit/index.js +10 -0
  235. package/dist/utils/cli-kit/index.js.map +1 -0
  236. package/dist/utils/cli-kit/json-file.d.ts +21 -0
  237. package/dist/utils/cli-kit/json-file.d.ts.map +1 -0
  238. package/dist/utils/cli-kit/json-file.js +51 -0
  239. package/dist/utils/cli-kit/json-file.js.map +1 -0
  240. package/dist/utils/cli-kit/marker-block.d.ts +26 -0
  241. package/dist/utils/cli-kit/marker-block.d.ts.map +1 -0
  242. package/dist/utils/cli-kit/marker-block.js +61 -0
  243. package/dist/utils/cli-kit/marker-block.js.map +1 -0
  244. package/dist/utils/cli-kit/paths.d.ts +15 -0
  245. package/dist/utils/cli-kit/paths.d.ts.map +1 -0
  246. package/dist/utils/cli-kit/paths.js +21 -0
  247. package/dist/utils/cli-kit/paths.js.map +1 -0
  248. package/dist/utils/cli-kit/secure-storage.d.ts +14 -0
  249. package/dist/utils/cli-kit/secure-storage.d.ts.map +1 -0
  250. package/dist/utils/cli-kit/secure-storage.js +20 -0
  251. package/dist/utils/cli-kit/secure-storage.js.map +1 -0
  252. package/dist/utils/cli-kit/step-report.d.ts +16 -0
  253. package/dist/utils/cli-kit/step-report.d.ts.map +1 -0
  254. package/dist/utils/cli-kit/step-report.js +36 -0
  255. package/dist/utils/cli-kit/step-report.js.map +1 -0
  256. package/dist/utils/dco/agent-metadata.d.ts +1 -1
  257. package/dist/utils/dco/agent-metadata.js +1 -1
  258. package/dist/utils/dco/agent-metadata.js.map +1 -1
  259. package/dist/utils/dco/claude-config.d.ts +18 -14
  260. package/dist/utils/dco/claude-config.d.ts.map +1 -1
  261. package/dist/utils/dco/claude-config.js +31 -97
  262. package/dist/utils/dco/claude-config.js.map +1 -1
  263. package/dist/utils/dco/dispatch.d.ts +134 -0
  264. package/dist/utils/dco/dispatch.d.ts.map +1 -0
  265. package/dist/utils/dco/dispatch.js +399 -0
  266. package/dist/utils/dco/dispatch.js.map +1 -0
  267. package/dist/utils/dco/fix.d.ts +122 -0
  268. package/dist/utils/dco/fix.d.ts.map +1 -0
  269. package/dist/utils/dco/fix.js +560 -0
  270. package/dist/utils/dco/fix.js.map +1 -0
  271. package/dist/utils/dco/git-config.d.ts.map +1 -1
  272. package/dist/utils/dco/git-config.js +5 -3
  273. package/dist/utils/dco/git-config.js.map +1 -1
  274. package/dist/utils/dco/github.d.ts +101 -0
  275. package/dist/utils/dco/github.d.ts.map +1 -1
  276. package/dist/utils/dco/github.js +133 -0
  277. package/dist/utils/dco/github.js.map +1 -1
  278. package/dist/utils/dco/paths.d.ts +1 -8
  279. package/dist/utils/dco/paths.d.ts.map +1 -1
  280. package/dist/utils/dco/paths.js +3 -12
  281. package/dist/utils/dco/paths.js.map +1 -1
  282. package/dist/utils/dco/render.d.ts +1 -1
  283. package/dist/utils/dco/render.d.ts.map +1 -1
  284. package/dist/utils/dco/render.js +4 -21
  285. package/dist/utils/dco/render.js.map +1 -1
  286. package/dist/utils/dco/resolve-agent.d.ts +54 -0
  287. package/dist/utils/dco/resolve-agent.d.ts.map +1 -0
  288. package/dist/utils/dco/resolve-agent.js +164 -0
  289. package/dist/utils/dco/resolve-agent.js.map +1 -0
  290. package/dist/utils/dco/setup.d.ts +10 -7
  291. package/dist/utils/dco/setup.d.ts.map +1 -1
  292. package/dist/utils/dco/setup.js +264 -200
  293. package/dist/utils/dco/setup.js.map +1 -1
  294. package/dist/utils/dco/signing-key-writer.d.ts +40 -0
  295. package/dist/utils/dco/signing-key-writer.d.ts.map +1 -0
  296. package/dist/utils/dco/signing-key-writer.js +76 -0
  297. package/dist/utils/dco/signing-key-writer.js.map +1 -0
  298. package/dist/utils/dco/ssh-key.d.ts +50 -0
  299. package/dist/utils/dco/ssh-key.d.ts.map +1 -1
  300. package/dist/utils/dco/ssh-key.js +129 -8
  301. package/dist/utils/dco/ssh-key.js.map +1 -1
  302. package/dist/utils/dco/status.d.ts +1 -1
  303. package/dist/utils/dco/status.d.ts.map +1 -1
  304. package/dist/utils/dco/status.js +3 -3
  305. package/dist/utils/dco/status.js.map +1 -1
  306. package/dist/utils/dco/verify.d.ts +170 -0
  307. package/dist/utils/dco/verify.d.ts.map +1 -0
  308. package/dist/utils/dco/verify.js +550 -0
  309. package/dist/utils/dco/verify.js.map +1 -0
  310. package/dist/utils/dependency-installer.d.ts +37 -0
  311. package/dist/utils/dependency-installer.d.ts.map +1 -0
  312. package/dist/utils/dependency-installer.js +32 -0
  313. package/dist/utils/dependency-installer.js.map +1 -0
  314. package/dist/utils/github-credential-stage.d.ts +87 -0
  315. package/dist/utils/github-credential-stage.d.ts.map +1 -0
  316. package/dist/utils/github-credential-stage.js +168 -0
  317. package/dist/utils/github-credential-stage.js.map +1 -0
  318. package/dist/utils/github-credential.d.ts +160 -0
  319. package/dist/utils/github-credential.d.ts.map +1 -0
  320. package/dist/utils/github-credential.js +308 -0
  321. package/dist/utils/github-credential.js.map +1 -0
  322. package/dist/utils/gitignore.d.ts +17 -0
  323. package/dist/utils/gitignore.d.ts.map +1 -0
  324. package/dist/utils/gitignore.js +40 -0
  325. package/dist/utils/gitignore.js.map +1 -0
  326. package/dist/utils/hub-config.d.ts +21 -0
  327. package/dist/utils/hub-config.d.ts.map +1 -0
  328. package/dist/utils/hub-config.js +28 -0
  329. package/dist/utils/hub-config.js.map +1 -0
  330. package/dist/utils/identity-heal.d.ts +16 -0
  331. package/dist/utils/identity-heal.d.ts.map +1 -0
  332. package/dist/utils/identity-heal.js +37 -0
  333. package/dist/utils/identity-heal.js.map +1 -0
  334. package/dist/utils/init/pipeline.d.ts +74 -0
  335. package/dist/utils/init/pipeline.d.ts.map +1 -0
  336. package/dist/utils/init/pipeline.js +96 -0
  337. package/dist/utils/init/pipeline.js.map +1 -0
  338. package/dist/utils/poll.d.ts +15 -1
  339. package/dist/utils/poll.d.ts.map +1 -1
  340. package/dist/utils/poll.js +6 -3
  341. package/dist/utils/poll.js.map +1 -1
  342. package/dist/utils/register-agent-identity.d.ts +67 -0
  343. package/dist/utils/register-agent-identity.d.ts.map +1 -0
  344. package/dist/utils/register-agent-identity.js +34 -0
  345. package/dist/utils/register-agent-identity.js.map +1 -0
  346. package/dist/utils/review/did-web-key.d.ts +34 -0
  347. package/dist/utils/review/did-web-key.d.ts.map +1 -0
  348. package/dist/utils/review/did-web-key.js +104 -0
  349. package/dist/utils/review/did-web-key.js.map +1 -0
  350. package/dist/utils/review/load-registry.d.ts +33 -0
  351. package/dist/utils/review/load-registry.d.ts.map +1 -0
  352. package/dist/utils/review/load-registry.js +62 -0
  353. package/dist/utils/review/load-registry.js.map +1 -0
  354. package/dist/utils/review/verdict-verify.d.ts +43 -0
  355. package/dist/utils/review/verdict-verify.d.ts.map +1 -0
  356. package/dist/utils/review/verdict-verify.js +53 -0
  357. package/dist/utils/review/verdict-verify.js.map +1 -0
  358. package/dist/utils/review-registry-writer.d.ts +52 -0
  359. package/dist/utils/review-registry-writer.d.ts.map +1 -0
  360. package/dist/utils/review-registry-writer.js +79 -0
  361. package/dist/utils/review-registry-writer.js.map +1 -0
  362. package/dist/utils/should-install-dependency.d.ts +17 -0
  363. package/dist/utils/should-install-dependency.d.ts.map +1 -0
  364. package/dist/utils/should-install-dependency.js +25 -0
  365. package/dist/utils/should-install-dependency.js.map +1 -0
  366. package/dist/utils/tool-readiness.d.ts +57 -0
  367. package/dist/utils/tool-readiness.d.ts.map +1 -0
  368. package/dist/utils/tool-readiness.js +114 -0
  369. package/dist/utils/tool-readiness.js.map +1 -0
  370. package/dist/utils/which.d.ts +2 -0
  371. package/dist/utils/which.d.ts.map +1 -0
  372. package/dist/utils/which.js +22 -0
  373. package/dist/utils/which.js.map +1 -0
  374. package/dist/version.d.ts +15 -0
  375. package/dist/version.d.ts.map +1 -0
  376. package/dist/version.js +29 -0
  377. package/dist/version.js.map +1 -0
  378. package/package.json +19 -6
  379. package/dist/utils/claim-polling.d.ts +0 -21
  380. package/dist/utils/claim-polling.d.ts.map +0 -1
  381. package/dist/utils/claim-polling.js.map +0 -1
  382. package/dist/utils/dco/fs-safe.d.ts +0 -14
  383. package/dist/utils/dco/fs-safe.d.ts.map +0 -1
  384. package/dist/utils/dco/fs-safe.js +0 -20
  385. 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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EACL,eAAe,EACf,WAAW,EACX,QAAQ,EACR,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAsB5B,sEAAsE;AACtE,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,oDAAoD,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED,wFAAwF;AACxF,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;QACzB,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QACjC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;QAC1D,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC5D,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CACxE,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5E,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;QACxE,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,OAAqB;IAC/C,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/B,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAe;IAC/C,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * HTTP client for the `mcpi checkpoint init` claim-token flow (KYA-1037).
2
+ * HTTP client for the `kya-os checkpoint init` claim-token flow (KYA-1037).
3
3
  *
4
4
  * Talks to the three public Checkpoint dashboard endpoints added for this
5
5
  * flow: register a claim token, poll its status, and exchange a claimed
@@ -1,5 +1,5 @@
1
1
  /**
2
- * HTTP client for the `mcpi checkpoint init` claim-token flow (KYA-1037).
2
+ * HTTP client for the `kya-os checkpoint init` claim-token flow (KYA-1037).
3
3
  *
4
4
  * Talks to the three public Checkpoint dashboard endpoints added for this
5
5
  * flow: register a claim token, poll its status, and exchange a claimed
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Minimal, dedicated `.env.local` writer for `mcpi checkpoint init`'s two
2
+ * Minimal, dedicated `.env.local` writer for `kya-os checkpoint init`'s two
3
3
  * variables.
4
4
  *
5
5
  * `EnvManager` (env-manager.ts) is intentionally NOT reused here: its
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Minimal, dedicated `.env.local` writer for `mcpi checkpoint init`'s two
2
+ * Minimal, dedicated `.env.local` writer for `kya-os checkpoint init`'s two
3
3
  * variables.
4
4
  *
5
5
  * `EnvManager` (env-manager.ts) is intentionally NOT reused here: its
@@ -46,7 +46,7 @@ export function writeCheckpointEnv(projectRoot, vars) {
46
46
  updatedLines[updatedLines.length - 1] !== "") {
47
47
  updatedLines.push("");
48
48
  }
49
- updatedLines.push("# Added by `mcpi checkpoint init`");
49
+ updatedLines.push("# Added by `kya-os checkpoint init`");
50
50
  for (const key of missing) {
51
51
  updatedLines.push(`${key}=${vars[key]}`);
52
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint-env.js","sourceRoot":"","sources":["../../src/utils/checkpoint-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,MAAM,QAAQ,GAAgC;IAC5C,oBAAoB;IACpB,uBAAuB;CACxB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,IAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,2DAA2D;QAC3D,sEAAsE;QACtE,+DAA+D;QAC/D,mEAAmE;QACnE,gEAAgE;QAChE,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAwC,CAAC;QAC9D,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,GAAG,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IACE,YAAY,CAAC,MAAM,GAAG,CAAC;YACvB,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAC5C,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACvD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;IACnE,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"checkpoint-env.js","sourceRoot":"","sources":["../../src/utils/checkpoint-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,MAAM,QAAQ,GAAgC;IAC5C,oBAAoB;IACpB,uBAAuB;CACxB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,IAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,2DAA2D;QAC3D,sEAAsE;QACtE,+DAA+D;QAC/D,mEAAmE;QACnE,gEAAgE;QAChE,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAwC,CAAC;QAC9D,IAAI,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,GAAG,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IACE,YAAY,CAAC,MAAM,GAAG,CAAC;YACvB,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAC5C,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACzD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;IACnE,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAChC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Detect-layer scaffolding for `mcpi checkpoint init` (KYA-1037).
2
+ * Detect-layer scaffolding for `kya-os checkpoint init` (KYA-1037).
3
3
  *
4
4
  * Maps the repo's detected platform onto one of the three Detect layers
5
5
  * Checkpoint ships (Next.js middleware, Express snippet, the keyless
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Detect-layer scaffolding for `mcpi checkpoint init` (KYA-1037).
2
+ * Detect-layer scaffolding for `kya-os checkpoint init` (KYA-1037).
3
3
  *
4
4
  * Maps the repo's detected platform onto one of the three Detect layers
5
5
  * Checkpoint ships (Next.js middleware, Express snippet, the keyless
@@ -0,0 +1,24 @@
1
+ export interface OpenUrlInBrowserOptions {
2
+ /** Wait for the user to press Enter before opening, when attached to a TTY. Default true. */
3
+ waitForEnter?: boolean;
4
+ /** Max time to wait for Enter, in ms. Default 30000. */
5
+ enterTimeoutMs?: number;
6
+ }
7
+ export interface OpenUrlInBrowserResult {
8
+ opened: boolean;
9
+ /** Present when `opened` is false: "non-tty", or the `open()` failure message. */
10
+ reason?: string;
11
+ }
12
+ /**
13
+ * Open a URL in the user's browser, but only when attached to an
14
+ * interactive terminal.
15
+ *
16
+ * A non-TTY run (CI, Docker, a piped process) has no user present to
17
+ * consent to a browser launching, so this never attempts to open one
18
+ * there — it returns immediately with `{ opened: false, reason: "non-tty" }`
19
+ * so the caller can print the URL instead. Auto-opening anyway after a
20
+ * short delay was a real bug in the code this replaces: a non-interactive
21
+ * `init` run would pop a browser window with no user watching for it.
22
+ */
23
+ export declare function openUrlInBrowser(url: string, options?: OpenUrlInBrowserOptions): Promise<OpenUrlInBrowserResult>;
24
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/utils/cli-kit/browser.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CA+CjC"}
@@ -0,0 +1,58 @@
1
+ import chalk from "chalk";
2
+ /**
3
+ * Open a URL in the user's browser, but only when attached to an
4
+ * interactive terminal.
5
+ *
6
+ * A non-TTY run (CI, Docker, a piped process) has no user present to
7
+ * consent to a browser launching, so this never attempts to open one
8
+ * there — it returns immediately with `{ opened: false, reason: "non-tty" }`
9
+ * so the caller can print the URL instead. Auto-opening anyway after a
10
+ * short delay was a real bug in the code this replaces: a non-interactive
11
+ * `init` run would pop a browser window with no user watching for it.
12
+ */
13
+ export async function openUrlInBrowser(url, options = {}) {
14
+ const { waitForEnter = true, enterTimeoutMs = 30000 } = options;
15
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
16
+ return { opened: false, reason: "non-tty" };
17
+ }
18
+ if (waitForEnter) {
19
+ console.log(` ${chalk.gray("Press Enter to open in browser...")}`);
20
+ // The two arms must cancel each other: a leaked timer would later fire
21
+ // process.stdin.pause() and freeze any interactive prompt on screen at
22
+ // that moment.
23
+ const cleanup = () => {
24
+ process.stdin.pause();
25
+ process.stdin.removeAllListeners("data");
26
+ };
27
+ let enterTimeout;
28
+ await Promise.race([
29
+ new Promise((resolve) => {
30
+ process.stdin.once("data", () => {
31
+ if (enterTimeout)
32
+ clearTimeout(enterTimeout);
33
+ cleanup();
34
+ resolve();
35
+ });
36
+ process.stdin.resume();
37
+ }),
38
+ new Promise((resolve) => {
39
+ enterTimeout = setTimeout(() => {
40
+ cleanup();
41
+ resolve();
42
+ }, enterTimeoutMs);
43
+ }),
44
+ ]);
45
+ }
46
+ try {
47
+ const open = (await import("open")).default;
48
+ await open(url);
49
+ return { opened: true };
50
+ }
51
+ catch (error) {
52
+ return {
53
+ opened: false,
54
+ reason: error instanceof Error ? error.message : String(error),
55
+ };
56
+ }
57
+ }
58
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/utils/cli-kit/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAmC,EAAE;IAErC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEhE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;QAErE,uEAAuE;QACvE,uEAAuE;QACvE,eAAe;QACf,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,IAAI,YAAwC,CAAC;QAC7C,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;oBAC9B,IAAI,YAAY;wBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC7C,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC,CAAC;YACF,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC5B,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC7B,OAAO,EAAE,CAAC;oBACV,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,cAAc,CAAC,CAAC;YACrB,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface ClaimPollingOptions {
2
+ verbose?: boolean;
3
+ maxAttempts?: number;
4
+ pollInterval?: number;
5
+ }
6
+ /**
7
+ * Poll a claim-status endpoint until claimed, timed out, or interrupted.
8
+ *
9
+ * Endpoint-agnostic: `endpoint` is the base URL and `statusPath` builds the
10
+ * per-check path from it, so a caller can point this at knowthat.ai's
11
+ * `/api/agents/:slug` today or a Checkpoint `/api/v1/cli/claim-status`
12
+ * tomorrow without forking the polling logic. A response is "claimed" when
13
+ * `isClaimed` returns true for its parsed JSON body.
14
+ *
15
+ * Returns true when claimed, false on timeout or user interrupt (Ctrl+C).
16
+ */
17
+ export declare function pollForClaimStatus(statusUrl: string, isClaimed: (body: unknown) => boolean, options?: ClaimPollingOptions): Promise<boolean>;
18
+ //# sourceMappingURL=claim-polling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-polling.d.ts","sourceRoot":"","sources":["../../../src/utils/cli-kit/claim-polling.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,EACrC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,OAAO,CAAC,CA4FlB"}