@kindgi/cli 0.0.0-bootstrap.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +690 -1
  3. package/dist/build/apt.d.ts +16 -0
  4. package/dist/build/apt.d.ts.map +1 -0
  5. package/dist/build/apt.js +50 -0
  6. package/dist/build/apt.js.map +1 -0
  7. package/dist/build/bundle.d.ts +45 -0
  8. package/dist/build/bundle.d.ts.map +1 -0
  9. package/dist/build/bundle.js +121 -0
  10. package/dist/build/bundle.js.map +1 -0
  11. package/dist/build/containerfile.d.ts +27 -0
  12. package/dist/build/containerfile.d.ts.map +1 -0
  13. package/dist/build/containerfile.js +196 -0
  14. package/dist/build/containerfile.js.map +1 -0
  15. package/dist/build/context-files.d.ts +24 -0
  16. package/dist/build/context-files.d.ts.map +1 -0
  17. package/dist/build/context-files.js +99 -0
  18. package/dist/build/context-files.js.map +1 -0
  19. package/dist/build/defaults.d.ts +66 -0
  20. package/dist/build/defaults.d.ts.map +1 -0
  21. package/dist/build/defaults.js +586 -0
  22. package/dist/build/defaults.js.map +1 -0
  23. package/dist/build/envelope.d.ts +72 -0
  24. package/dist/build/envelope.d.ts.map +1 -0
  25. package/dist/build/envelope.js +76 -0
  26. package/dist/build/envelope.js.map +1 -0
  27. package/dist/build/host-install.d.ts +48 -0
  28. package/dist/build/host-install.d.ts.map +1 -0
  29. package/dist/build/host-install.js +375 -0
  30. package/dist/build/host-install.js.map +1 -0
  31. package/dist/build/image-config.d.ts +32 -0
  32. package/dist/build/image-config.d.ts.map +1 -0
  33. package/dist/build/image-config.js +129 -0
  34. package/dist/build/image-config.js.map +1 -0
  35. package/dist/build/integrity.d.ts +51 -0
  36. package/dist/build/integrity.d.ts.map +1 -0
  37. package/dist/build/integrity.js +75 -0
  38. package/dist/build/integrity.js.map +1 -0
  39. package/dist/build/node-image.d.ts +18 -0
  40. package/dist/build/node-image.d.ts.map +1 -0
  41. package/dist/build/node-image.js +46 -0
  42. package/dist/build/node-image.js.map +1 -0
  43. package/dist/build/pack-root.d.ts +69 -0
  44. package/dist/build/pack-root.d.ts.map +1 -0
  45. package/dist/build/pack-root.js +102 -0
  46. package/dist/build/pack-root.js.map +1 -0
  47. package/dist/build/poetry-requirements.d.ts +5 -0
  48. package/dist/build/poetry-requirements.d.ts.map +1 -0
  49. package/dist/build/poetry-requirements.js +8 -0
  50. package/dist/build/poetry-requirements.js.map +1 -0
  51. package/dist/build/python-image.d.ts +40 -0
  52. package/dist/build/python-image.d.ts.map +1 -0
  53. package/dist/build/python-image.js +197 -0
  54. package/dist/build/python-image.js.map +1 -0
  55. package/dist/build/runners.d.ts +259 -0
  56. package/dist/build/runners.d.ts.map +1 -0
  57. package/dist/build/runners.js +4 -0
  58. package/dist/build/runners.js.map +1 -0
  59. package/dist/build/version-specifier.d.ts +2 -0
  60. package/dist/build/version-specifier.d.ts.map +1 -0
  61. package/dist/build/version-specifier.js +70 -0
  62. package/dist/build/version-specifier.js.map +1 -0
  63. package/dist/cli-package.d.ts +15 -0
  64. package/dist/cli-package.d.ts.map +1 -0
  65. package/dist/cli-package.js +37 -0
  66. package/dist/cli-package.js.map +1 -0
  67. package/dist/cli.d.ts +3 -0
  68. package/dist/cli.d.ts.map +1 -0
  69. package/dist/cli.js +26 -0
  70. package/dist/cli.js.map +1 -0
  71. package/dist/commands/adapters.d.ts +3 -0
  72. package/dist/commands/adapters.d.ts.map +1 -0
  73. package/dist/commands/adapters.js +148 -0
  74. package/dist/commands/adapters.js.map +1 -0
  75. package/dist/commands/agents.d.ts +3 -0
  76. package/dist/commands/agents.d.ts.map +1 -0
  77. package/dist/commands/agents.js +82 -0
  78. package/dist/commands/agents.js.map +1 -0
  79. package/dist/commands/approvals.d.ts +3 -0
  80. package/dist/commands/approvals.d.ts.map +1 -0
  81. package/dist/commands/approvals.js +92 -0
  82. package/dist/commands/approvals.js.map +1 -0
  83. package/dist/commands/artifacts.d.ts +3 -0
  84. package/dist/commands/artifacts.d.ts.map +1 -0
  85. package/dist/commands/artifacts.js +87 -0
  86. package/dist/commands/artifacts.js.map +1 -0
  87. package/dist/commands/auth.d.ts +3 -0
  88. package/dist/commands/auth.d.ts.map +1 -0
  89. package/dist/commands/auth.js +88 -0
  90. package/dist/commands/auth.js.map +1 -0
  91. package/dist/commands/build.d.ts +39 -0
  92. package/dist/commands/build.d.ts.map +1 -0
  93. package/dist/commands/build.js +872 -0
  94. package/dist/commands/build.js.map +1 -0
  95. package/dist/commands/capabilities.d.ts +3 -0
  96. package/dist/commands/capabilities.d.ts.map +1 -0
  97. package/dist/commands/capabilities.js +38 -0
  98. package/dist/commands/capabilities.js.map +1 -0
  99. package/dist/commands/conversations.d.ts +3 -0
  100. package/dist/commands/conversations.d.ts.map +1 -0
  101. package/dist/commands/conversations.js +75 -0
  102. package/dist/commands/conversations.js.map +1 -0
  103. package/dist/commands/deploy.d.ts +7 -0
  104. package/dist/commands/deploy.d.ts.map +1 -0
  105. package/dist/commands/deploy.js +697 -0
  106. package/dist/commands/deploy.js.map +1 -0
  107. package/dist/commands/dev.d.ts +44 -0
  108. package/dist/commands/dev.d.ts.map +1 -0
  109. package/dist/commands/dev.js +1032 -0
  110. package/dist/commands/dev.js.map +1 -0
  111. package/dist/commands/env.d.ts +27 -0
  112. package/dist/commands/env.d.ts.map +1 -0
  113. package/dist/commands/env.js +816 -0
  114. package/dist/commands/env.js.map +1 -0
  115. package/dist/commands/feedback.d.ts +33 -0
  116. package/dist/commands/feedback.d.ts.map +1 -0
  117. package/dist/commands/feedback.js +374 -0
  118. package/dist/commands/feedback.js.map +1 -0
  119. package/dist/commands/flows.d.ts +3 -0
  120. package/dist/commands/flows.d.ts.map +1 -0
  121. package/dist/commands/flows.js +60 -0
  122. package/dist/commands/flows.js.map +1 -0
  123. package/dist/commands/guardrails.d.ts +3 -0
  124. package/dist/commands/guardrails.d.ts.map +1 -0
  125. package/dist/commands/guardrails.js +89 -0
  126. package/dist/commands/guardrails.js.map +1 -0
  127. package/dist/commands/health.d.ts +8 -0
  128. package/dist/commands/health.d.ts.map +1 -0
  129. package/dist/commands/health.js +40 -0
  130. package/dist/commands/health.js.map +1 -0
  131. package/dist/commands/helpers.d.ts +37 -0
  132. package/dist/commands/helpers.d.ts.map +1 -0
  133. package/dist/commands/helpers.js +93 -0
  134. package/dist/commands/helpers.js.map +1 -0
  135. package/dist/commands/index.d.ts +7 -0
  136. package/dist/commands/index.d.ts.map +1 -0
  137. package/dist/commands/index.js +90 -0
  138. package/dist/commands/index.js.map +1 -0
  139. package/dist/commands/init.d.ts +46 -0
  140. package/dist/commands/init.d.ts.map +1 -0
  141. package/dist/commands/init.js +455 -0
  142. package/dist/commands/init.js.map +1 -0
  143. package/dist/commands/key.d.ts +3 -0
  144. package/dist/commands/key.d.ts.map +1 -0
  145. package/dist/commands/key.js +322 -0
  146. package/dist/commands/key.js.map +1 -0
  147. package/dist/commands/mcp.d.ts +43 -0
  148. package/dist/commands/mcp.d.ts.map +1 -0
  149. package/dist/commands/mcp.js +433 -0
  150. package/dist/commands/mcp.js.map +1 -0
  151. package/dist/commands/memory.d.ts +3 -0
  152. package/dist/commands/memory.d.ts.map +1 -0
  153. package/dist/commands/memory.js +82 -0
  154. package/dist/commands/memory.js.map +1 -0
  155. package/dist/commands/observations.d.ts +3 -0
  156. package/dist/commands/observations.d.ts.map +1 -0
  157. package/dist/commands/observations.js +27 -0
  158. package/dist/commands/observations.js.map +1 -0
  159. package/dist/commands/proposals.d.ts +3 -0
  160. package/dist/commands/proposals.d.ts.map +1 -0
  161. package/dist/commands/proposals.js +116 -0
  162. package/dist/commands/proposals.js.map +1 -0
  163. package/dist/commands/provenance.d.ts +3 -0
  164. package/dist/commands/provenance.d.ts.map +1 -0
  165. package/dist/commands/provenance.js +53 -0
  166. package/dist/commands/provenance.js.map +1 -0
  167. package/dist/commands/providers.d.ts +3 -0
  168. package/dist/commands/providers.d.ts.map +1 -0
  169. package/dist/commands/providers.js +202 -0
  170. package/dist/commands/providers.js.map +1 -0
  171. package/dist/commands/reviewers.d.ts +3 -0
  172. package/dist/commands/reviewers.d.ts.map +1 -0
  173. package/dist/commands/reviewers.js +78 -0
  174. package/dist/commands/reviewers.js.map +1 -0
  175. package/dist/commands/runs.d.ts +3 -0
  176. package/dist/commands/runs.d.ts.map +1 -0
  177. package/dist/commands/runs.js +221 -0
  178. package/dist/commands/runs.js.map +1 -0
  179. package/dist/commands/secrets.d.ts +21 -0
  180. package/dist/commands/secrets.d.ts.map +1 -0
  181. package/dist/commands/secrets.js +750 -0
  182. package/dist/commands/secrets.js.map +1 -0
  183. package/dist/commands/skills.d.ts +64 -0
  184. package/dist/commands/skills.d.ts.map +1 -0
  185. package/dist/commands/skills.js +430 -0
  186. package/dist/commands/skills.js.map +1 -0
  187. package/dist/commands/test.d.ts +5 -0
  188. package/dist/commands/test.d.ts.map +1 -0
  189. package/dist/commands/test.js +181 -0
  190. package/dist/commands/test.js.map +1 -0
  191. package/dist/commands/tokens.d.ts +3 -0
  192. package/dist/commands/tokens.d.ts.map +1 -0
  193. package/dist/commands/tokens.js +33 -0
  194. package/dist/commands/tokens.js.map +1 -0
  195. package/dist/commands/tools.d.ts +3 -0
  196. package/dist/commands/tools.d.ts.map +1 -0
  197. package/dist/commands/tools.js +153 -0
  198. package/dist/commands/tools.js.map +1 -0
  199. package/dist/commands/types.d.ts +54 -0
  200. package/dist/commands/types.d.ts.map +1 -0
  201. package/dist/commands/types.js +4 -0
  202. package/dist/commands/types.js.map +1 -0
  203. package/dist/commands/unwired.d.ts +17 -0
  204. package/dist/commands/unwired.d.ts.map +1 -0
  205. package/dist/commands/unwired.js +41 -0
  206. package/dist/commands/unwired.js.map +1 -0
  207. package/dist/commands/version.d.ts +8 -0
  208. package/dist/commands/version.d.ts.map +1 -0
  209. package/dist/commands/version.js +41 -0
  210. package/dist/commands/version.js.map +1 -0
  211. package/dist/config.d.ts +42 -0
  212. package/dist/config.d.ts.map +1 -0
  213. package/dist/config.js +83 -0
  214. package/dist/config.js.map +1 -0
  215. package/dist/context.d.ts +153 -0
  216. package/dist/context.d.ts.map +1 -0
  217. package/dist/context.js +44 -0
  218. package/dist/context.js.map +1 -0
  219. package/dist/deploy/defaults.d.ts +14 -0
  220. package/dist/deploy/defaults.d.ts.map +1 -0
  221. package/dist/deploy/defaults.js +37 -0
  222. package/dist/deploy/defaults.js.map +1 -0
  223. package/dist/deploy/envelope-loader.d.ts +24 -0
  224. package/dist/deploy/envelope-loader.d.ts.map +1 -0
  225. package/dist/deploy/envelope-loader.js +141 -0
  226. package/dist/deploy/envelope-loader.js.map +1 -0
  227. package/dist/deploy/post.d.ts +48 -0
  228. package/dist/deploy/post.d.ts.map +1 -0
  229. package/dist/deploy/post.js +210 -0
  230. package/dist/deploy/post.js.map +1 -0
  231. package/dist/deploy/response.d.ts +42 -0
  232. package/dist/deploy/response.d.ts.map +1 -0
  233. package/dist/deploy/response.js +128 -0
  234. package/dist/deploy/response.js.map +1 -0
  235. package/dist/deploy/runners.d.ts +218 -0
  236. package/dist/deploy/runners.d.ts.map +1 -0
  237. package/dist/deploy/runners.js +4 -0
  238. package/dist/deploy/runners.js.map +1 -0
  239. package/dist/dev/bundler.d.ts +8 -0
  240. package/dist/dev/bundler.d.ts.map +1 -0
  241. package/dist/dev/bundler.js +154 -0
  242. package/dist/dev/bundler.js.map +1 -0
  243. package/dist/dev/defaults.d.ts +138 -0
  244. package/dist/dev/defaults.d.ts.map +1 -0
  245. package/dist/dev/defaults.js +691 -0
  246. package/dist/dev/defaults.js.map +1 -0
  247. package/dist/dev/docker-compose.dev.yml +56 -0
  248. package/dist/dev/index-child.d.ts +2 -0
  249. package/dist/dev/index-child.d.ts.map +1 -0
  250. package/dist/dev/index-child.js +53 -0
  251. package/dist/dev/index-child.js.map +1 -0
  252. package/dist/dev/pack-code.d.ts +36 -0
  253. package/dist/dev/pack-code.d.ts.map +1 -0
  254. package/dist/dev/pack-code.js +129 -0
  255. package/dist/dev/pack-code.js.map +1 -0
  256. package/dist/dev/pack-env.d.ts +13 -0
  257. package/dist/dev/pack-env.d.ts.map +1 -0
  258. package/dist/dev/pack-env.js +36 -0
  259. package/dist/dev/pack-env.js.map +1 -0
  260. package/dist/dev/pack-service.d.ts +32 -0
  261. package/dist/dev/pack-service.d.ts.map +1 -0
  262. package/dist/dev/pack-service.js +188 -0
  263. package/dist/dev/pack-service.js.map +1 -0
  264. package/dist/dev/paths.d.ts +22 -0
  265. package/dist/dev/paths.d.ts.map +1 -0
  266. package/dist/dev/paths.js +35 -0
  267. package/dist/dev/paths.js.map +1 -0
  268. package/dist/dev/python-builder.d.ts +16 -0
  269. package/dist/dev/python-builder.d.ts.map +1 -0
  270. package/dist/dev/python-builder.js +122 -0
  271. package/dist/dev/python-builder.js.map +1 -0
  272. package/dist/dev/register.d.ts +71 -0
  273. package/dist/dev/register.d.ts.map +1 -0
  274. package/dist/dev/register.js +54 -0
  275. package/dist/dev/register.js.map +1 -0
  276. package/dist/dev/runners.d.ts +287 -0
  277. package/dist/dev/runners.d.ts.map +1 -0
  278. package/dist/dev/runners.js +4 -0
  279. package/dist/dev/runners.js.map +1 -0
  280. package/dist/dev/runtime-container.d.ts +62 -0
  281. package/dist/dev/runtime-container.d.ts.map +1 -0
  282. package/dist/dev/runtime-container.js +164 -0
  283. package/dist/dev/runtime-container.js.map +1 -0
  284. package/dist/dev/runtime-env.d.ts +62 -0
  285. package/dist/dev/runtime-env.d.ts.map +1 -0
  286. package/dist/dev/runtime-env.js +100 -0
  287. package/dist/dev/runtime-env.js.map +1 -0
  288. package/dist/dev/runtime-image.d.ts +13 -0
  289. package/dist/dev/runtime-image.d.ts.map +1 -0
  290. package/dist/dev/runtime-image.js +15 -0
  291. package/dist/dev/runtime-image.js.map +1 -0
  292. package/dist/env/defaults.d.ts +3 -0
  293. package/dist/env/defaults.d.ts.map +1 -0
  294. package/dist/env/defaults.js +22 -0
  295. package/dist/env/defaults.js.map +1 -0
  296. package/dist/env/pack-env-plan.d.ts +70 -0
  297. package/dist/env/pack-env-plan.d.ts.map +1 -0
  298. package/dist/env/pack-env-plan.js +236 -0
  299. package/dist/env/pack-env-plan.js.map +1 -0
  300. package/dist/env/parser.d.ts +9 -0
  301. package/dist/env/parser.d.ts.map +1 -0
  302. package/dist/env/parser.js +11 -0
  303. package/dist/env/parser.js.map +1 -0
  304. package/dist/env/project-env.d.ts +34 -0
  305. package/dist/env/project-env.d.ts.map +1 -0
  306. package/dist/env/project-env.js +45 -0
  307. package/dist/env/project-env.js.map +1 -0
  308. package/dist/env/runners.d.ts +22 -0
  309. package/dist/env/runners.d.ts.map +1 -0
  310. package/dist/env/runners.js +4 -0
  311. package/dist/env/runners.js.map +1 -0
  312. package/dist/env/writer.d.ts +7 -0
  313. package/dist/env/writer.d.ts.map +1 -0
  314. package/dist/env/writer.js +9 -0
  315. package/dist/env/writer.js.map +1 -0
  316. package/dist/errors.d.ts +31 -0
  317. package/dist/errors.d.ts.map +1 -0
  318. package/dist/errors.js +107 -0
  319. package/dist/errors.js.map +1 -0
  320. package/dist/help.d.ts +5 -0
  321. package/dist/help.d.ts.map +1 -0
  322. package/dist/help.js +61 -0
  323. package/dist/help.js.map +1 -0
  324. package/dist/index.d.ts +13 -0
  325. package/dist/index.d.ts.map +1 -0
  326. package/dist/index.js +13 -0
  327. package/dist/index.js.map +1 -0
  328. package/dist/init/augment-scaffolder.d.ts +74 -0
  329. package/dist/init/augment-scaffolder.d.ts.map +1 -0
  330. package/dist/init/augment-scaffolder.js +459 -0
  331. package/dist/init/augment-scaffolder.js.map +1 -0
  332. package/dist/init/dependency-specs.d.ts +58 -0
  333. package/dist/init/dependency-specs.d.ts.map +1 -0
  334. package/dist/init/dependency-specs.js +153 -0
  335. package/dist/init/dependency-specs.js.map +1 -0
  336. package/dist/init/gitignore-patcher.d.ts +23 -0
  337. package/dist/init/gitignore-patcher.d.ts.map +1 -0
  338. package/dist/init/gitignore-patcher.js +103 -0
  339. package/dist/init/gitignore-patcher.js.map +1 -0
  340. package/dist/init/mode-detect.d.ts +34 -0
  341. package/dist/init/mode-detect.d.ts.map +1 -0
  342. package/dist/init/mode-detect.js +115 -0
  343. package/dist/init/mode-detect.js.map +1 -0
  344. package/dist/init/package-json-patcher.d.ts +36 -0
  345. package/dist/init/package-json-patcher.d.ts.map +1 -0
  346. package/dist/init/package-json-patcher.js +128 -0
  347. package/dist/init/package-json-patcher.js.map +1 -0
  348. package/dist/init/pyproject-patcher.d.ts +56 -0
  349. package/dist/init/pyproject-patcher.d.ts.map +1 -0
  350. package/dist/init/pyproject-patcher.js +324 -0
  351. package/dist/init/pyproject-patcher.js.map +1 -0
  352. package/dist/init/python-augment.d.ts +22 -0
  353. package/dist/init/python-augment.d.ts.map +1 -0
  354. package/dist/init/python-augment.js +300 -0
  355. package/dist/init/python-augment.js.map +1 -0
  356. package/dist/init/template-files.d.ts +16 -0
  357. package/dist/init/template-files.d.ts.map +1 -0
  358. package/dist/init/template-files.js +38 -0
  359. package/dist/init/template-files.js.map +1 -0
  360. package/dist/key/defaults.d.ts +3 -0
  361. package/dist/key/defaults.d.ts.map +1 -0
  362. package/dist/key/defaults.js +60 -0
  363. package/dist/key/defaults.js.map +1 -0
  364. package/dist/key/fingerprint.d.ts +6 -0
  365. package/dist/key/fingerprint.d.ts.map +1 -0
  366. package/dist/key/fingerprint.js +25 -0
  367. package/dist/key/fingerprint.js.map +1 -0
  368. package/dist/key/paths.d.ts +30 -0
  369. package/dist/key/paths.d.ts.map +1 -0
  370. package/dist/key/paths.js +51 -0
  371. package/dist/key/paths.js.map +1 -0
  372. package/dist/key/runners.d.ts +60 -0
  373. package/dist/key/runners.d.ts.map +1 -0
  374. package/dist/key/runners.js +4 -0
  375. package/dist/key/runners.js.map +1 -0
  376. package/dist/main.d.ts +106 -0
  377. package/dist/main.d.ts.map +1 -0
  378. package/dist/main.js +198 -0
  379. package/dist/main.js.map +1 -0
  380. package/dist/mcp/launcher.d.ts +143 -0
  381. package/dist/mcp/launcher.d.ts.map +1 -0
  382. package/dist/mcp/launcher.js +393 -0
  383. package/dist/mcp/launcher.js.map +1 -0
  384. package/dist/mcp/preset-loader.d.ts +29 -0
  385. package/dist/mcp/preset-loader.d.ts.map +1 -0
  386. package/dist/mcp/preset-loader.js +217 -0
  387. package/dist/mcp/preset-loader.js.map +1 -0
  388. package/dist/mcp/preset-types.d.ts +71 -0
  389. package/dist/mcp/preset-types.d.ts.map +1 -0
  390. package/dist/mcp/preset-types.js +4 -0
  391. package/dist/mcp/preset-types.js.map +1 -0
  392. package/dist/mcp/presets/README.md +68 -0
  393. package/dist/mcp/presets/postgres.json +15 -0
  394. package/dist/output.d.ts +26 -0
  395. package/dist/output.d.ts.map +1 -0
  396. package/dist/output.js +46 -0
  397. package/dist/output.js.map +1 -0
  398. package/dist/pack-config.d.ts +37 -0
  399. package/dist/pack-config.d.ts.map +1 -0
  400. package/dist/pack-config.js +65 -0
  401. package/dist/pack-config.js.map +1 -0
  402. package/dist/package-manager.d.ts +33 -0
  403. package/dist/package-manager.d.ts.map +1 -0
  404. package/dist/package-manager.js +129 -0
  405. package/dist/package-manager.js.map +1 -0
  406. package/dist/parse.d.ts +82 -0
  407. package/dist/parse.d.ts.map +1 -0
  408. package/dist/parse.js +99 -0
  409. package/dist/parse.js.map +1 -0
  410. package/dist/providers/preset-loader.d.ts +47 -0
  411. package/dist/providers/preset-loader.d.ts.map +1 -0
  412. package/dist/providers/preset-loader.js +107 -0
  413. package/dist/providers/preset-loader.js.map +1 -0
  414. package/dist/providers/presets/anthropic.json +47 -0
  415. package/dist/providers/presets/gemini.json +40 -0
  416. package/dist/reference.d.ts +28 -0
  417. package/dist/reference.d.ts.map +1 -0
  418. package/dist/reference.js +52 -0
  419. package/dist/reference.js.map +1 -0
  420. package/dist/sdk-package.d.ts +9 -0
  421. package/dist/sdk-package.d.ts.map +1 -0
  422. package/dist/sdk-package.js +20 -0
  423. package/dist/sdk-package.js.map +1 -0
  424. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +253 -0
  425. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +299 -0
  426. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +291 -0
  427. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +289 -0
  428. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +704 -0
  429. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +288 -0
  430. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +211 -0
  431. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +181 -0
  432. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +205 -0
  433. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +322 -0
  434. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +173 -0
  435. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +299 -0
  436. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +240 -0
  437. package/dist/stop-signal.d.ts +15 -0
  438. package/dist/stop-signal.d.ts.map +1 -0
  439. package/dist/stop-signal.js +16 -0
  440. package/dist/stop-signal.js.map +1 -0
  441. package/dist/templates/minimal/.gitignore +8 -0
  442. package/dist/templates/minimal/.nvmrc +1 -0
  443. package/dist/templates/minimal/AGENTS.md +23 -0
  444. package/dist/templates/minimal/README.md.tmpl +69 -0
  445. package/dist/templates/minimal/agents/.gitkeep +0 -0
  446. package/dist/templates/minimal/flows/.gitkeep +0 -0
  447. package/dist/templates/minimal/guardrails/.gitkeep +0 -0
  448. package/dist/templates/minimal/kindgi.config.ts.tmpl +44 -0
  449. package/dist/templates/minimal/package.json.tmpl +25 -0
  450. package/dist/templates/minimal/pnpm-workspace.yaml +6 -0
  451. package/dist/templates/minimal/tools/.gitkeep +0 -0
  452. package/dist/templates/minimal/tsconfig.json.tmpl +27 -0
  453. package/dist/templates/minimal/vitest.config.ts.tmpl +14 -0
  454. package/dist/templates/python/.gitignore +9 -0
  455. package/dist/templates/python/AGENTS.md +30 -0
  456. package/dist/templates/python/README.md.tmpl +56 -0
  457. package/dist/templates/python/agents/echo_agent.py.tmpl +23 -0
  458. package/dist/templates/python/flows/echo_flow.py.tmpl +17 -0
  459. package/dist/templates/python/guardrails/response_not_empty.py.tmpl +27 -0
  460. package/dist/templates/python/pyproject.toml.tmpl +42 -0
  461. package/dist/templates/python/tests/test_tools.py.tmpl +22 -0
  462. package/dist/templates/python/tools/echo.py.tmpl +27 -0
  463. package/dist/templates/python/tools/greet.py.tmpl +20 -0
  464. package/dist/templates/sample/.gitignore +8 -0
  465. package/dist/templates/sample/.nvmrc +1 -0
  466. package/dist/templates/sample/AGENTS.md +23 -0
  467. package/dist/templates/sample/README.md.tmpl +85 -0
  468. package/dist/templates/sample/agents/echo-agent/index.ts.tmpl +34 -0
  469. package/dist/templates/sample/flows/echo-flow/index.ts.tmpl +59 -0
  470. package/dist/templates/sample/guardrails/response-not-empty/index.ts.tmpl +50 -0
  471. package/dist/templates/sample/kindgi.config.ts.tmpl +41 -0
  472. package/dist/templates/sample/package.json.tmpl +25 -0
  473. package/dist/templates/sample/pnpm-workspace.yaml +6 -0
  474. package/dist/templates/sample/tools/echo/index.test.ts.tmpl +31 -0
  475. package/dist/templates/sample/tools/echo/index.ts.tmpl +37 -0
  476. package/dist/templates/sample/tools/fetch-httpbin/index.ts.tmpl +60 -0
  477. package/dist/templates/sample/tools/greet/index.ts.tmpl +35 -0
  478. package/dist/templates/sample/tsconfig.json.tmpl +27 -0
  479. package/dist/templates/sample/vitest.config.ts.tmpl +14 -0
  480. package/dist/test/defaults.d.ts +3 -0
  481. package/dist/test/defaults.d.ts.map +1 -0
  482. package/dist/test/defaults.js +104 -0
  483. package/dist/test/defaults.js.map +1 -0
  484. package/dist/test/runners.d.ts +60 -0
  485. package/dist/test/runners.d.ts.map +1 -0
  486. package/dist/test/runners.js +4 -0
  487. package/dist/test/runners.js.map +1 -0
  488. package/dist/version-info.d.ts +9 -0
  489. package/dist/version-info.d.ts.map +1 -0
  490. package/dist/version-info.js +27 -0
  491. package/dist/version-info.js.map +1 -0
  492. package/dist/write-fully.d.ts +13 -0
  493. package/dist/write-fully.d.ts.map +1 -0
  494. package/dist/write-fully.js +17 -0
  495. package/dist/write-fully.js.map +1 -0
  496. package/package.json +63 -4
@@ -0,0 +1,181 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * `kindgi test` — run the pack's tests via vitest.
5
+ *
6
+ * Shells out to the pack's OWN installed vitest binary
7
+ * (either `pnpm exec vitest` or `npx --no-install vitest`, picked at
8
+ * production wire time). The CLI does NOT bundle a vitest version —
9
+ * that would force upgrades on downstream packs whenever the CLI
10
+ * upgrades.
11
+ *
12
+ * Ergonomic defaults:
13
+ * - Refuses to spawn without a `vitest.config.*` at the pack root
14
+ * (bare vitest would sweep the whole repo on dev machines).
15
+ * - `--watch` threads through as `--watch`. Everything else (except
16
+ * the CLI's own `--reporter` short-cut + `--path`) is verbatim
17
+ * pass-through after `--`.
18
+ * - Ctrl+C forwards to the child process (via `ctx.stopSignal`),
19
+ * matching `kindgi dev`.
20
+ *
21
+ * Every child-process side-effect flows through `TestRunners` so tests
22
+ * substitute stubs; production wiring lives at
23
+ * `packages/cli/src/test/defaults.ts`.
24
+ */
25
+ import { readFile } from 'node:fs/promises';
26
+ import { isAbsolute, join, resolve } from 'node:path';
27
+ import { KINDGI_CONFIG_FILENAMES } from '@kindgi/handler-runtime';
28
+ import { renderJson } from '../output.js';
29
+ export const testCommand = {
30
+ kind: 'leaf',
31
+ name: 'test',
32
+ description: "Run the pack's tests via vitest. Ergonomic wrapper over `vitest run`.",
33
+ usage: 'kindgi test [--watch] [--reporter <name>] [--path <dir>] [-- <vitest-args>...]',
34
+ optionSpec: {
35
+ watch: {
36
+ type: 'boolean',
37
+ description: 'Run vitest in watch mode. By default the tests run once (`vitest run`).',
38
+ },
39
+ reporter: {
40
+ type: 'string',
41
+ description: "The vitest reporter to use (vitest's `--reporter`), e.g. `verbose` or `json`.",
42
+ },
43
+ path: {
44
+ type: 'string',
45
+ description: 'The pack root, with a `kindgi.config.ts` and a `vitest.config.*`. Default: the current directory.',
46
+ },
47
+ },
48
+ run: async (ctx) => runTestCommand(ctx),
49
+ };
50
+ export async function runTestCommand(ctx) {
51
+ const runners = ctx.testRunners;
52
+ if (runners === undefined) {
53
+ return {
54
+ kind: 'error',
55
+ stderr: 'Internal error: kindgi test requires test runners to be wired. ' +
56
+ 'Rebuild the CLI (`pnpm --filter @kindgi/cli build`).\n',
57
+ exitCode: 1,
58
+ };
59
+ }
60
+ const args = resolveArgs(ctx);
61
+ // Confirm kindgi.config.ts sits at the pack root — same shape
62
+ // kindgi dev / build use. Failing loud beats a cryptic vitest
63
+ // error later.
64
+ const configOk = await ensurePackConfig(args.packDir);
65
+ if (!configOk) {
66
+ return {
67
+ kind: 'error',
68
+ stderr: `kindgi test could not find a kindgi.config.ts at ${args.packDir}.\nRun \`kindgi init <pack-name>\` to scaffold a pack, or pass --path=<dir>.\n`,
69
+ exitCode: 1,
70
+ };
71
+ }
72
+ const hasConfig = await runners.hasVitestConfig({ packDir: args.packDir });
73
+ if (!hasConfig) {
74
+ return {
75
+ kind: 'error',
76
+ stderr: `kindgi test could not find a vitest config at ${args.packDir}.\nCreate one (e.g. \`vitest.config.ts\`) or \`cd\` into your pack root.\nThe two templates shipped with \`kindgi init\` ship one out of the box.\n`,
77
+ exitCode: 1,
78
+ };
79
+ }
80
+ const forwarded = buildForwardedArgs(args);
81
+ const banner = [
82
+ '',
83
+ ` Running pack tests: ${args.packDir}`,
84
+ ` Runner: vitest (via pack's local install)`,
85
+ ` Mode: ${args.watch ? 'watch' : 'one-shot'}`,
86
+ ...(args.reporter !== undefined ? [` Reporter: ${args.reporter}`] : []),
87
+ ...(args.passthroughArgs.length > 0
88
+ ? [` Pass-through args: ${args.passthroughArgs.join(' ')}`]
89
+ : []),
90
+ '',
91
+ ];
92
+ const result = await runners.runTests({
93
+ packDir: args.packDir,
94
+ runner: 'vitest',
95
+ args: forwarded,
96
+ env: ctx.env,
97
+ ...(ctx.stopSignal !== undefined && { signal: ctx.stopSignal }),
98
+ onLog: (chunk) => {
99
+ // Forward child output to stderr so JSON stdout stays clean.
100
+ process.stderr.write(chunk);
101
+ },
102
+ });
103
+ if (!result.spawned) {
104
+ if (result.reason === 'runner-binary-not-found') {
105
+ return {
106
+ kind: 'error',
107
+ stderr: 'kindgi test could not find the vitest binary. ' +
108
+ 'Install it in your pack: `pnpm add -D vitest` (or `npm i -D vitest`).\n' +
109
+ `The CLI does NOT bundle vitest — it uses the pack's own install.\n`,
110
+ exitCode: 1,
111
+ };
112
+ }
113
+ return {
114
+ kind: 'error',
115
+ stderr: `kindgi test failed to spawn the vitest runner (${result.resolvedBinary ?? 'unknown'}). Check your pack's install (\`pnpm install\`) and re-run.\n`,
116
+ exitCode: 1,
117
+ };
118
+ }
119
+ const summary = {
120
+ packDir: args.packDir,
121
+ runner: 'vitest',
122
+ resolvedBinary: result.resolvedBinary,
123
+ watch: args.watch,
124
+ ...(args.reporter !== undefined && { reporter: args.reporter }),
125
+ passthroughArgs: args.passthroughArgs,
126
+ exitCode: result.exitCode,
127
+ };
128
+ const rendered = renderJson(summary, ctx.globals.format);
129
+ const stderr = `${banner.join('\n')}\n`;
130
+ if (result.exitCode === 0) {
131
+ return { kind: 'ok', rendered: { stdout: rendered.stdout, stderr } };
132
+ }
133
+ return {
134
+ kind: 'ok',
135
+ exitCode: result.exitCode,
136
+ rendered: { stdout: rendered.stdout, stderr },
137
+ };
138
+ }
139
+ function resolveArgs(ctx) {
140
+ const pathFlag = ctx.options.path;
141
+ const rawPath = typeof pathFlag === 'string' && pathFlag !== '' ? pathFlag : ctx.cwd;
142
+ const packDir = isAbsolute(rawPath) ? rawPath : resolve(ctx.cwd, rawPath);
143
+ const watch = ctx.options.watch === true;
144
+ const reporterFlag = ctx.options.reporter;
145
+ const reporter = typeof reporterFlag === 'string' && reporterFlag !== '' ? reporterFlag : undefined;
146
+ // node:util.parseArgs surfaces tokens after `--` as regular
147
+ // positionals when `allowPositionals: true`. `kindgi test` treats
148
+ // every positional as a pass-through vitest arg — the command has
149
+ // no positional inputs of its own.
150
+ const passthroughArgs = ctx.positionals;
151
+ return { packDir, watch, reporter, passthroughArgs };
152
+ }
153
+ function buildForwardedArgs(args) {
154
+ const out = [];
155
+ // vitest defaults to watch=true when invoked without subcommand; the
156
+ // CLI's contract is one-shot unless `--watch` is set.
157
+ if (args.watch) {
158
+ out.push('--watch');
159
+ }
160
+ else {
161
+ out.push('run');
162
+ }
163
+ if (args.reporter !== undefined) {
164
+ out.push('--reporter', args.reporter);
165
+ }
166
+ out.push(...args.passthroughArgs);
167
+ return out;
168
+ }
169
+ async function ensurePackConfig(packDir) {
170
+ for (const c of KINDGI_CONFIG_FILENAMES) {
171
+ try {
172
+ await readFile(join(packDir, c), 'utf8');
173
+ return true;
174
+ }
175
+ catch {
176
+ // try next
177
+ }
178
+ }
179
+ return false;
180
+ }
181
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const tokensCommand: Command;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/commands/tokens.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AA6BvD,eAAO,MAAM,aAAa,EAAE,OAK3B,CAAC"}
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ import { requiredPositional, runSdk, throwUnwired } from './helpers.js';
4
+ const create = {
5
+ kind: 'leaf',
6
+ name: 'create',
7
+ description: 'Create a new API token.',
8
+ usage: 'kindgi tokens create --spec=<json-or-@file>',
9
+ optionSpec: {
10
+ spec: {
11
+ type: 'string',
12
+ description: 'The token as inline JSON or `@<file>`, every field optional: `role` (`admin` or `member`, default `member`), `capabilities`, `label`, `expiresAt`, `projectId`.',
13
+ },
14
+ },
15
+ run: (ctx) => runSdk(ctx, 'tokens create', async () => throwUnwired('tokens.create')),
16
+ };
17
+ const revoke = {
18
+ kind: 'leaf',
19
+ name: 'revoke',
20
+ description: 'Revoke an API token.',
21
+ usage: 'kindgi tokens revoke <token-id>',
22
+ run: (ctx) => runSdk(ctx, 'tokens revoke', async () => {
23
+ requiredPositional(ctx, 0, 'token-id');
24
+ throwUnwired('tokens.revoke');
25
+ }),
26
+ };
27
+ export const tokensCommand = {
28
+ kind: 'group',
29
+ name: 'tokens',
30
+ description: 'Manage API tokens.',
31
+ subcommands: [create, revoke],
32
+ };
33
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/commands/tokens.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGxE,MAAM,MAAM,GAAgB;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,yBAAyB;IACtC,KAAK,EAAE,6CAA6C;IACpD,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,iKAAiK;SACpK;KACF;IACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CACtF,CAAC;AAEF,MAAM,MAAM,GAAgB;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,sBAAsB;IACnC,KAAK,EAAE,iCAAiC;IACxC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CACX,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,IAAI,EAAE;QACtC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,YAAY,CAAC,eAAe,CAAC,CAAC;IAChC,CAAC,CAAC;CACL,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from './types.js';
2
+ export declare const toolsCommand: Command;
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AA4JvD,eAAO,MAAM,YAAY,EAAE,OAK1B,CAAC"}
@@ -0,0 +1,153 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ import { requiredPositional, runSdk, stringFlag, throwUnwired } from './helpers.js';
4
+ const list = {
5
+ kind: 'leaf',
6
+ name: 'list',
7
+ description: 'List registered tools.',
8
+ usage: 'kindgi tools list [--name=<prefix>] [--limit=<n>] [--cursor=<c>]',
9
+ optionSpec: {
10
+ name: { type: 'string', description: 'Only the tools whose id starts with this prefix.' },
11
+ limit: {
12
+ type: 'string',
13
+ description: 'The most tools to return (default 25, at most 100).',
14
+ },
15
+ cursor: {
16
+ type: 'string',
17
+ description: "Resume after this cursor, from the previous page's `nextCursor`.",
18
+ },
19
+ },
20
+ run: (ctx) => runSdk(ctx, 'tools list', async () => {
21
+ const name = stringFlag(ctx, 'name');
22
+ const cursor = stringFlag(ctx, 'cursor');
23
+ const limitStr = stringFlag(ctx, 'limit');
24
+ const limit = limitStr !== undefined ? Number.parseInt(limitStr, 10) : undefined;
25
+ if (limit !== undefined && Number.isNaN(limit)) {
26
+ throw new Error(`--limit must be an integer, got "${limitStr}"`);
27
+ }
28
+ return await ctx.client().tools.list({
29
+ ...(name !== undefined && { name }),
30
+ ...(cursor !== undefined && { cursor: cursor }),
31
+ ...(limit !== undefined && { limit }),
32
+ });
33
+ }),
34
+ };
35
+ const get = {
36
+ kind: 'leaf',
37
+ name: 'get',
38
+ description: 'Fetch the latest active version of a tool.',
39
+ usage: 'kindgi tools get <tool-id>',
40
+ run: (ctx) => runSdk(ctx, 'tools get', async () => {
41
+ const toolId = requiredPositional(ctx, 0, 'tool-id');
42
+ return await ctx.client().tools.get(toolId);
43
+ }),
44
+ };
45
+ const publish = {
46
+ kind: 'leaf',
47
+ name: 'publish',
48
+ description: 'Publish a tool manifest at a specific version.',
49
+ usage: 'kindgi tools publish --manifest=<json-or-@file>',
50
+ optionSpec: {
51
+ manifest: {
52
+ type: 'string',
53
+ description: 'The tool manifest as JSON, or `@<file>` to read it from a file. Required.',
54
+ },
55
+ },
56
+ run: (ctx) => runSdk(ctx, 'tools publish', async () => throwUnwired('tools.publish')),
57
+ };
58
+ const unregister = {
59
+ kind: 'leaf',
60
+ name: 'unregister',
61
+ description: 'Unregister a specific tool version.',
62
+ usage: 'kindgi tools unregister <tool-id> --version=<semver>',
63
+ optionSpec: {
64
+ version: {
65
+ type: 'string',
66
+ description: 'The version to unregister (semver); `kindgi tools reinstate` brings it back. Required.',
67
+ },
68
+ },
69
+ run: (ctx) => runSdk(ctx, 'tools unregister', async () => {
70
+ const toolId = requiredPositional(ctx, 0, 'tool-id');
71
+ const version = stringFlag(ctx, 'version');
72
+ if (version === undefined)
73
+ throw new Error('--version=<semver> is required');
74
+ return await ctx.client().tools.unregisterVersion(toolId, version);
75
+ }),
76
+ };
77
+ const versions = {
78
+ kind: 'leaf',
79
+ name: 'versions',
80
+ description: 'List published versions of a tool (active + optionally tombstoned).',
81
+ usage: 'kindgi tools versions <tool-id> [--include-tombstoned] [--limit=<n>] [--cursor=<c>]',
82
+ optionSpec: {
83
+ 'include-tombstoned': {
84
+ type: 'boolean',
85
+ description: 'Include unregistered versions too, each with its `unregisteredAt`.',
86
+ },
87
+ limit: {
88
+ type: 'string',
89
+ description: 'The most versions to return (default 25, at most 100).',
90
+ },
91
+ cursor: {
92
+ type: 'string',
93
+ description: "Resume after this cursor, from the previous page's `nextCursor`.",
94
+ },
95
+ },
96
+ run: (ctx) => runSdk(ctx, 'tools versions', async () => {
97
+ const toolId = requiredPositional(ctx, 0, 'tool-id');
98
+ const cursor = stringFlag(ctx, 'cursor');
99
+ const limitStr = stringFlag(ctx, 'limit');
100
+ const limit = limitStr !== undefined ? Number.parseInt(limitStr, 10) : undefined;
101
+ if (limit !== undefined && Number.isNaN(limit)) {
102
+ throw new Error(`--limit must be an integer, got "${limitStr}"`);
103
+ }
104
+ const includeTombstoned = ctx.options['include-tombstoned'] === true;
105
+ return await ctx.client().tools.listVersions(toolId, {
106
+ ...(cursor !== undefined && { cursor: cursor }),
107
+ ...(limit !== undefined && { limit }),
108
+ ...(includeTombstoned && { includeTombstoned: true }),
109
+ });
110
+ }),
111
+ };
112
+ const getVersion = {
113
+ kind: 'leaf',
114
+ name: 'get-version',
115
+ description: 'Fetch a specific tool version by exact semver.',
116
+ usage: 'kindgi tools get-version <tool-id> --version=<semver>',
117
+ optionSpec: {
118
+ version: { type: 'string', description: 'The exact version to fetch (semver). Required.' },
119
+ },
120
+ run: (ctx) => runSdk(ctx, 'tools get-version', async () => {
121
+ const toolId = requiredPositional(ctx, 0, 'tool-id');
122
+ const version = stringFlag(ctx, 'version');
123
+ if (version === undefined)
124
+ throw new Error('--version=<semver> is required');
125
+ return await ctx.client().tools.getVersion(toolId, version);
126
+ }),
127
+ };
128
+ const reinstate = {
129
+ kind: 'leaf',
130
+ name: 'reinstate',
131
+ description: 'Un-tombstone a specific tool version.',
132
+ usage: 'kindgi tools reinstate <tool-id> --version=<semver>',
133
+ optionSpec: {
134
+ version: {
135
+ type: 'string',
136
+ description: 'The unregistered version to bring back (semver). Required.',
137
+ },
138
+ },
139
+ run: (ctx) => runSdk(ctx, 'tools reinstate', async () => {
140
+ const toolId = requiredPositional(ctx, 0, 'tool-id');
141
+ const version = stringFlag(ctx, 'version');
142
+ if (version === undefined)
143
+ throw new Error('--version=<semver> is required');
144
+ return await ctx.client().tools.reinstateVersion(toolId, version);
145
+ }),
146
+ };
147
+ export const toolsCommand = {
148
+ kind: 'group',
149
+ name: 'tools',
150
+ description: 'Manage tool registrations.',
151
+ subcommands: [list, get, publish, unregister, versions, getVersion, reinstate],
152
+ };
153
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { CommandContext } from '../context.js';
2
+ import type { Rendered } from '../output.js';
3
+ /**
4
+ * A leaf command handler. Returns either a rendered success payload or
5
+ * a rendered error. The dispatcher writes stdout/stderr and picks an
6
+ * exit code accordingly.
7
+ */
8
+ export type CommandResult = {
9
+ readonly kind: 'ok';
10
+ readonly rendered: Rendered;
11
+ readonly exitCode?: number;
12
+ } | {
13
+ readonly kind: 'error';
14
+ readonly stderr: string;
15
+ readonly exitCode: number;
16
+ };
17
+ export interface LeafCommand {
18
+ readonly kind: 'leaf';
19
+ readonly name: string;
20
+ readonly description: string;
21
+ readonly usage: string;
22
+ /** Option spec merged with the global spec by the parser. */
23
+ readonly optionSpec?: Readonly<Record<string, ParseArgsOption>>;
24
+ readonly run: (ctx: CommandContext) => Promise<CommandResult>;
25
+ }
26
+ export interface GroupCommand {
27
+ readonly kind: 'group';
28
+ readonly name: string;
29
+ readonly description: string;
30
+ readonly subcommands: readonly Command[];
31
+ }
32
+ export type Command = LeafCommand | GroupCommand;
33
+ export type ParseArgsOption = {
34
+ type: 'string';
35
+ multiple?: boolean;
36
+ short?: string;
37
+ default?: string;
38
+ /** What the flag does, in one sentence: `--help` and the docs show it. */
39
+ description?: string;
40
+ /**
41
+ * The value may be left out (`--push`, or `--push` before another
42
+ * flag): the option is then `''`. Given, it's the next token or
43
+ * `--push=<value>`.
44
+ */
45
+ optionalValue?: boolean;
46
+ } | {
47
+ type: 'boolean';
48
+ multiple?: boolean;
49
+ short?: string;
50
+ default?: boolean;
51
+ /** What the flag does, in one sentence: `--help` and the docs show it. */
52
+ description?: string;
53
+ };
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,OAAO,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC;AAEjD,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
@@ -0,0 +1,17 @@
1
+ import type { Command } from './types.js';
2
+ /**
3
+ * Commands whose API this release doesn't wire yet: they call
4
+ * `throwUnwired` and fail with "not yet wired". They stay callable, so a
5
+ * script gets an honest error rather than "unknown command", but `--help`
6
+ * and the generated reference leave them out until they work.
7
+ *
8
+ * A path is the command words (`'agents list'`); a group's path hides the
9
+ * whole group. Wiring a command means removing it here (a test counts the
10
+ * `throwUnwired` call sites against this list).
11
+ */
12
+ export declare const UNWIRED_COMMANDS: ReadonlySet<string>;
13
+ /** Whether the command at `path` (its words, from the root) is wired. */
14
+ export declare function isWired(path: readonly string[]): boolean;
15
+ /** The commands under `parent` (its words) that are wired, in order. */
16
+ export declare function wiredCommands(commands: readonly Command[], parent?: readonly string[]): readonly Command[];
17
+ //# sourceMappingURL=unwired.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwired.d.ts","sourceRoot":"","sources":["../../src/commands/unwired.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAe/C,CAAC;AAEH,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAKxD;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,GAAE,SAAS,MAAM,EAAO,GAC7B,SAAS,OAAO,EAAE,CAEpB"}
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * Commands whose API this release doesn't wire yet: they call
5
+ * `throwUnwired` and fail with "not yet wired". They stay callable, so a
6
+ * script gets an honest error rather than "unknown command", but `--help`
7
+ * and the generated reference leave them out until they work.
8
+ *
9
+ * A path is the command words (`'agents list'`); a group's path hides the
10
+ * whole group. Wiring a command means removing it here (a test counts the
11
+ * `throwUnwired` call sites against this list).
12
+ */
13
+ export const UNWIRED_COMMANDS = new Set([
14
+ 'artifacts',
15
+ 'capabilities',
16
+ 'conversations',
17
+ 'flows',
18
+ 'memory',
19
+ 'observations',
20
+ 'proposals',
21
+ 'provenance',
22
+ 'tokens',
23
+ 'agents list',
24
+ 'agents get',
25
+ 'agents unregister',
26
+ 'agents versions',
27
+ 'tools publish',
28
+ ]);
29
+ /** Whether the command at `path` (its words, from the root) is wired. */
30
+ export function isWired(path) {
31
+ for (let i = 1; i <= path.length; i += 1) {
32
+ if (UNWIRED_COMMANDS.has(path.slice(0, i).join(' ')))
33
+ return false;
34
+ }
35
+ return true;
36
+ }
37
+ /** The commands under `parent` (its words) that are wired, in order. */
38
+ export function wiredCommands(commands, parent = []) {
39
+ return commands.filter((command) => isWired([...parent, command.name]));
40
+ }
41
+ //# sourceMappingURL=unwired.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwired.js","sourceRoot":"","sources":["../../src/commands/unwired.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAIjC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IAC3D,WAAW;IACX,cAAc;IACd,eAAe;IACf,OAAO;IACP,QAAQ;IACR,cAAc;IACd,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;CAChB,CAAC,CAAC;AAEH,yEAAyE;AACzE,MAAM,UAAU,OAAO,CAAC,IAAuB;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,aAAa,CAC3B,QAA4B,EAC5B,SAA4B,EAAE;IAE9B,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { LeafCommand } from './types.js';
2
+ /**
3
+ * Print CLI + SDK versions, plus (if the API is reachable) the server's
4
+ * OpenAPI info block. Never requires an auth token — `/v1/openapi.json`
5
+ * is public.
6
+ */
7
+ export declare const versionCommand: LeafCommand;
8
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,WAiC5B,CAAC"}
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ import { renderJson } from '../output.js';
4
+ import { CLI_VERSION, SDK_VERSION } from '../version-info.js';
5
+ /**
6
+ * Print CLI + SDK versions, plus (if the API is reachable) the server's
7
+ * OpenAPI info block. Never requires an auth token — `/v1/openapi.json`
8
+ * is public.
9
+ */
10
+ export const versionCommand = {
11
+ kind: 'leaf',
12
+ name: 'version',
13
+ description: 'Print CLI + SDK versions (and API version if reachable).',
14
+ usage: 'kindgi version',
15
+ run: async (ctx) => {
16
+ const info = {
17
+ cli: CLI_VERSION,
18
+ sdk: SDK_VERSION,
19
+ };
20
+ if (ctx.config.apiUrl !== undefined) {
21
+ info.apiUrl = ctx.config.apiUrl;
22
+ try {
23
+ const url = `${ctx.config.apiUrl.replace(/\/+$/, '')}/v1/openapi.json`;
24
+ const res = await ctx.fetch(url, { method: 'GET' });
25
+ if (res.ok) {
26
+ const body = (await res.json());
27
+ if (body.info !== undefined)
28
+ info.api = body.info;
29
+ }
30
+ else {
31
+ info.apiUnreachable = `HTTP ${res.status}`;
32
+ }
33
+ }
34
+ catch (err) {
35
+ info.apiUnreachable = err.message;
36
+ }
37
+ }
38
+ return { kind: 'ok', rendered: renderJson(info, ctx.globals.format) };
39
+ },
40
+ };
41
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,0DAA0D;IACvE,KAAK,EAAE,gBAAgB;IACvB,GAAG,EAAE,KAAK,EAAE,GAAG,EAA0B,EAAE;QACzC,MAAM,IAAI,GAMN;YACF,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,WAAW;SACjB,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC;gBACvE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpD,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;oBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoD,CAAC;oBACnF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;wBAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,GAAI,GAAa,CAAC,OAAO,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACxE,CAAC;CACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Resolved configuration used by every command. Precedence at load
3
+ * time is: CLI flag (`--url`, `--token`) > env var
4
+ * (`KINDGI_API_URL`, `KINDGI_API_TOKEN`) > file
5
+ * (`.kindgirc.json` in cwd, then `~/.kindgi/config.json`).
6
+ */
7
+ export interface ResolvedConfig {
8
+ readonly apiUrl: string | undefined;
9
+ readonly token: string | undefined;
10
+ readonly source: {
11
+ readonly apiUrl: ConfigSource;
12
+ readonly token: ConfigSource;
13
+ };
14
+ }
15
+ export type ConfigSource = 'flag' | 'env' | 'file' | 'unset';
16
+ export interface ConfigInputs {
17
+ readonly flagUrl?: string | undefined;
18
+ readonly flagToken?: string | undefined;
19
+ readonly env?: Readonly<Record<string, string | undefined>>;
20
+ /** Directory used as cwd when looking for `.kindgirc.json`. */
21
+ readonly cwd?: string;
22
+ /** Directory used as `$HOME` when looking for `~/.kindgi/config.json`. */
23
+ readonly home?: string;
24
+ /**
25
+ * Optional file loader override for tests. Returns `null` when the
26
+ * file does not exist; throws for any other IO error.
27
+ */
28
+ readonly readFile?: (path: string) => Promise<string | null>;
29
+ }
30
+ interface FileConfig {
31
+ readonly apiUrl?: string;
32
+ readonly token?: string;
33
+ }
34
+ export declare function loadConfig(inputs?: ConfigInputs): Promise<ResolvedConfig>;
35
+ /**
36
+ * Persist a config file at `~/.kindgi/config.json`. Called by
37
+ * `kindgi auth login`. Merges with any existing file so a partial
38
+ * write does not clobber other keys.
39
+ */
40
+ export declare function saveHomeConfig(patch: FileConfig, home?: string | undefined): Promise<string>;
41
+ export {};
42
+ //# sourceMappingURL=config.d.ts.map