@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
package/dist/help.js ADDED
@@ -0,0 +1,61 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ import { ROOT_COMMANDS } from './commands/index.js';
4
+ import { wiredCommands } from './commands/unwired.js';
5
+ import { GLOBAL_OPTION_SPEC } from './parse.js';
6
+ export function rootHelpText() {
7
+ const lines = [];
8
+ lines.push('kindgi — command-line interface for Kindgi™ — the sovereign AI OS');
9
+ lines.push('');
10
+ lines.push('Usage: kindgi <command> [<subcommand>] [args] [flags]');
11
+ lines.push('');
12
+ lines.push('Commands:');
13
+ for (const c of wiredCommands(ROOT_COMMANDS)) {
14
+ lines.push(` ${c.name.padEnd(16, ' ')} ${c.description}`);
15
+ }
16
+ lines.push('');
17
+ lines.push('Global flags:');
18
+ lines.push(...flagLines(GLOBAL_OPTION_SPEC));
19
+ lines.push('');
20
+ lines.push('Config precedence: --flag > env var > .kindgirc.json (this directory) > ~/.kindgi/config.json.');
21
+ return `${lines.join('\n')}\n`;
22
+ }
23
+ /** `path`: the command's words from the root, so a group lists only its wired subcommands. */
24
+ export function commandHelpText(command, path = [command.name]) {
25
+ const lines = [];
26
+ lines.push(command.description);
27
+ lines.push('');
28
+ if (command.kind === 'leaf') {
29
+ lines.push(`Usage: ${command.usage}`);
30
+ const flags = flagLines(command.optionSpec ?? {});
31
+ if (flags.length > 0) {
32
+ lines.push('');
33
+ lines.push('Flags:');
34
+ lines.push(...flags);
35
+ }
36
+ lines.push('');
37
+ lines.push('Global flags (--json, --url, --token, …): kindgi --help');
38
+ }
39
+ else {
40
+ lines.push(`Usage: kindgi ${command.name} <subcommand> [args] [flags]`);
41
+ lines.push('');
42
+ lines.push('Subcommands:');
43
+ for (const sub of wiredCommands(command.subcommands, path)) {
44
+ lines.push(` ${sub.name.padEnd(16, ' ')} ${sub.description}`);
45
+ }
46
+ }
47
+ return `${lines.join('\n')}\n`;
48
+ }
49
+ /** ` --name <value>, -n What it does.`, one line per flag, by name. */
50
+ function flagLines(spec) {
51
+ const rows = Object.entries(spec)
52
+ .sort(([a], [b]) => a.localeCompare(b))
53
+ .map(([name, option]) => {
54
+ const value = option.type === 'string' ? (option.optionalValue ? '[=<value>]' : ' <value>') : '';
55
+ const short = option.short ? `, -${option.short}` : '';
56
+ return [`--${name}${value}${short}`, option.description ?? ''];
57
+ });
58
+ const width = Math.max(0, ...rows.map(([label]) => label.length));
59
+ return rows.map(([label, description]) => ` ${label.padEnd(width)} ${description}`.trimEnd());
60
+ }
61
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @kindgi/cli — the `kindgi` command-line interface.
3
+ *
4
+ * Projects add it as a devDependency and run `kindgi` through their
5
+ * package manager (`pnpm exec kindgi …`). The programmatic surface below
6
+ * is exposed for tests and for tools that embed CLI behavior without
7
+ * spawning a subprocess.
8
+ */
9
+ export { runCli } from './main.js';
10
+ export type { CliOutcome, RunCliInputs } from './main.js';
11
+ export { describeCommands, describeGlobalFlags } from './reference.js';
12
+ export type { CommandReference, FlagReference } from './reference.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * @kindgi/cli — the `kindgi` command-line interface.
5
+ *
6
+ * Projects add it as a devDependency and run `kindgi` through their
7
+ * package manager (`pnpm exec kindgi …`). The programmatic surface below
8
+ * is exposed for tests and for tools that embed CLI behavior without
9
+ * spawning a subprocess.
10
+ */
11
+ export { runCli } from './main.js';
12
+ export { describeCommands, describeGlobalFlags } from './reference.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { CommandResult } from '../commands/types.js';
2
+ import { type PackageManager } from '../package-manager.js';
3
+ import { type KindgiDependencySpecs } from './dependency-specs.js';
4
+ export interface RunInitAugmentInputs {
5
+ readonly targetDir: string;
6
+ /**
7
+ * Optional root containing shipped skill folders (each with a
8
+ * `SKILL.md`). If undefined, no skills are copied. Production
9
+ * wiring passes `defaultSdkSkillsRoot()`; tests inject a fixture
10
+ * dir.
11
+ */
12
+ readonly skillsRoot?: string;
13
+ /** Override the derived pack id (e.g. when name normalization can't produce a valid PACK_ID). */
14
+ readonly packIdOverride?: string;
15
+ /**
16
+ * Overwrite existing `kindgi.config.ts` + shipped skill files under
17
+ * `.claude/skills/kindgi-<name>/SKILL.md`. Non-force default:
18
+ * refuse when `kindgi.config.ts` exists; merge (skip) any
19
+ * pre-existing skill files.
20
+ */
21
+ readonly force: boolean;
22
+ /** `--link-local`: link the Kindgi checkout even when the target is inside its workspace. */
23
+ readonly linkLocal?: boolean;
24
+ /**
25
+ * `--template`: `sample` adds the sample pack's primitives (tools, a
26
+ * guardrail, an agent, a flow) under `kindgi/`, read from
27
+ * `templatesRoot`. Default `minimal`: the config and empty folders.
28
+ */
29
+ readonly template?: 'minimal' | 'sample';
30
+ readonly templatesRoot?: string;
31
+ /** Test seams. */
32
+ readonly ioOverrides?: AugmentIOOverrides;
33
+ readonly packageManager?: PackageManager;
34
+ readonly dependencySpecs?: KindgiDependencySpecs;
35
+ }
36
+ export interface AugmentIOOverrides {
37
+ readonly readFile?: (path: string) => Promise<string>;
38
+ readonly writeFile?: (path: string, contents: string) => Promise<void>;
39
+ readonly mkdir?: (path: string) => Promise<void>;
40
+ readonly fileExists?: (path: string) => Promise<boolean>;
41
+ readonly listDir?: (path: string) => Promise<readonly string[]>;
42
+ }
43
+ /**
44
+ * Derive a `PACK_ID_REGEX`-valid id from a `package.json` name. Rules:
45
+ * - `my-app` -> `my-app`
46
+ * - `@acme/legal` -> `acme.legal`
47
+ * - `@ACME/Legal` -> `acme.legal` (lowercased)
48
+ * - `my_app` -> error (underscores not allowed; explicit override required)
49
+ * - `x` (single char, valid) -> `x`
50
+ */
51
+ export declare function derivePackId(name: string): {
52
+ readonly kind: 'ok';
53
+ readonly id: string;
54
+ } | {
55
+ readonly kind: 'err';
56
+ readonly message: string;
57
+ };
58
+ /**
59
+ * Render the augment-mode `kindgi.config.ts` file. Compact — no
60
+ * `environments` block (user fills that in when ready to deploy;
61
+ * `kindgi dev` doesn't need it).
62
+ */
63
+ export declare function renderAugmentConfig(inputs: {
64
+ readonly packId: string;
65
+ readonly packVersion: string;
66
+ readonly packName: string;
67
+ }): string;
68
+ export declare function runInitAugment(inputs: RunInitAugmentInputs): Promise<CommandResult>;
69
+ /**
70
+ * What to run next — in the project's own package manager, with its own
71
+ * `kindgi`. With the sample's `packId`, how to try its agent too.
72
+ */
73
+ export declare function augmentNextSteps(pm: PackageManager, samplePackId?: string): readonly string[];
74
+ //# sourceMappingURL=augment-scaffolder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augment-scaffolder.d.ts","sourceRoot":"","sources":["../../src/init/augment-scaffolder.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAgC,MAAM,uBAAuB,CAAC;AAUjG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iGAAiG;IACjG,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAC;CAClD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACjE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,GAEV;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkBrD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CA6BT;AAuCD,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC,CAmHzF;AAwCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAmB7F"}
@@ -0,0 +1,459 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * Augment-mode scaffolder — writes Kindgi files ALONGSIDE an existing
5
+ * Node.js project. Called from `runInit` when `detectInitMode` returns
6
+ * `mode: 'augment'`.
7
+ *
8
+ * What augment mode writes:
9
+ * - `kindgi.config.ts` at project root — `kindgi.config.mts` when the
10
+ * app is CommonJS (no `"type": "module"`), plus a one-line
11
+ * `kindgi/package.json` marking `kindgi/` as ES modules, so Node
12
+ * never reparses Kindgi's files with a warning (pack id derived from
13
+ * `package.json` `name`, discovery paths point at `kindgi/**`)
14
+ * - `kindgi/agents/.gitkeep`
15
+ * - `kindgi/tools/.gitkeep`
16
+ * - `kindgi/guardrails/.gitkeep`
17
+ * - `kindgi/flows/.gitkeep`
18
+ * - `.claude/skills/kindgi-<name>/SKILL.md` for each shipped skill —
19
+ * merge-not-overwrite: skips files that already exist so user
20
+ * customizations survive
21
+ * - `package.json`: `@kindgi/sdk` (dependency) + `@kindgi/cli`
22
+ * (devDependency), specs from `resolveKindgiDependencySpecs` — the
23
+ * project runs its own pinned `kindgi`
24
+ * - `.gitignore`: Kindgi's local-state patterns
25
+ *
26
+ * What augment mode does NOT write:
27
+ * - env files — `kindgi dev` reads the project's own `.env` /
28
+ * `.env.local`; nothing needs creating
29
+ * - `pnpm-workspace.yaml`, `tsconfig.json`, `vitest.config.ts`,
30
+ * `.nvmrc`, `AGENTS.md`, `README.md` — the surrounding repo owns
31
+ * these; we don't touch them
32
+ *
33
+ * @related packages/cli/src/init/mode-detect.ts (the branch)
34
+ * @related packages/cli/src/commands/init.ts (the caller)
35
+ */
36
+ import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';
37
+ import { dirname, join } from 'node:path';
38
+ import { KINDGI_CONFIG_FILENAMES } from '@kindgi/handler-runtime';
39
+ import { PACK_ID_REGEX } from '../commands/init.js';
40
+ import { syncSkills } from '../commands/skills.js';
41
+ import { renderJson } from '../output.js';
42
+ import { binDisplay, detectPackageManager, installCommand, } from '../package-manager.js';
43
+ import { resolveKindgiDependencySpecs } from './dependency-specs.js';
44
+ import { patchGitignore, patchPrettierignore } from './gitignore-patcher.js';
45
+ import { patchPackageJson } from './package-json-patcher.js';
46
+ import { collectTemplateFiles, substitute } from './template-files.js';
47
+ const DEFAULT_PACK_ID_FALLBACK = 'kindgi-pack';
48
+ const DEFAULT_PACK_VERSION_FALLBACK = '0.1.0';
49
+ const AUGMENT_SUBDIRS = ['agents', 'tools', 'guardrails', 'flows'];
50
+ /**
51
+ * Derive a `PACK_ID_REGEX`-valid id from a `package.json` name. Rules:
52
+ * - `my-app` -> `my-app`
53
+ * - `@acme/legal` -> `acme.legal`
54
+ * - `@ACME/Legal` -> `acme.legal` (lowercased)
55
+ * - `my_app` -> error (underscores not allowed; explicit override required)
56
+ * - `x` (single char, valid) -> `x`
57
+ */
58
+ export function derivePackId(name) {
59
+ if (name === '') {
60
+ return {
61
+ kind: 'err',
62
+ message: 'package.json name is empty. Pass `--pack-id=<id>` explicitly.',
63
+ };
64
+ }
65
+ const lower = name.toLowerCase();
66
+ // Scoped: `@scope/pkg` → `scope.pkg`
67
+ const scopedMatch = lower.match(/^@([^/]+)\/(.+)$/);
68
+ const candidate = scopedMatch !== null ? `${scopedMatch[1]}.${scopedMatch[2]}` : lower;
69
+ if (!PACK_ID_REGEX.test(candidate)) {
70
+ return {
71
+ kind: 'err',
72
+ message: `Cannot derive a valid pack id from package.json name "${name}" (candidate: "${candidate}").\nPack ids must match ${PACK_ID_REGEX.source} — lowercase kebab, optionally dot-namespaced.\nPass \`--pack-id=<id>\` to override, e.g. \`--pack-id=my-pack\`.\n`,
73
+ };
74
+ }
75
+ return { kind: 'ok', id: candidate };
76
+ }
77
+ /**
78
+ * Render the augment-mode `kindgi.config.ts` file. Compact — no
79
+ * `environments` block (user fills that in when ready to deploy;
80
+ * `kindgi dev` doesn't need it).
81
+ */
82
+ export function renderAugmentConfig(inputs) {
83
+ return `// Kindgi pack config — added by \`kindgi init\` (augment mode).
84
+ // The pack lives alongside your existing code; discovery paths below
85
+ // scope Kindgi to \`kindgi/**\` so authoring stays isolated from the
86
+ // surrounding app's code.
87
+
88
+ const config = {
89
+ pack: {
90
+ id: '${inputs.packId}',
91
+ version: '${inputs.packVersion}',
92
+ description: 'Kindgi pack embedded in ${inputs.packName}.',
93
+ },
94
+ discovery: {
95
+ tools: 'kindgi/tools/**/*.ts',
96
+ guardrails: 'kindgi/guardrails/**/*.ts',
97
+ agents: 'kindgi/agents/**/*.ts',
98
+ flows: 'kindgi/flows/**/*.ts',
99
+ },
100
+ // ---------------------------------------------------------------
101
+ // Environments — fill in when you're ready to push a build off the
102
+ // laptop. See the minimal template's kindgi.config.ts for the full
103
+ // shape (endpoint / build / registry / signingKey / tenantId per
104
+ // environment). Local \`kindgi dev\` doesn't read this block.
105
+ // ---------------------------------------------------------------
106
+ environments: {},
107
+ } as const;
108
+
109
+ export default config;
110
+ `;
111
+ }
112
+ const defaultIO = {
113
+ readFile: (path) => readFile(path, 'utf8'),
114
+ writeFile: async (path, contents) => {
115
+ await mkdir(dirname(path), { recursive: true });
116
+ await writeFile(path, contents, 'utf8');
117
+ },
118
+ mkdir: (path) => mkdir(path, { recursive: true }).then(() => undefined),
119
+ fileExists: async (path) => {
120
+ try {
121
+ const s = await stat(path);
122
+ return s.isFile();
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ },
128
+ listDir: async (path) => {
129
+ const { readdir } = await import('node:fs/promises');
130
+ try {
131
+ return await readdir(path);
132
+ }
133
+ catch {
134
+ return [];
135
+ }
136
+ },
137
+ };
138
+ export async function runInitAugment(inputs) {
139
+ const io = { ...defaultIO, ...inputs.ioOverrides };
140
+ const pkgJsonPath = join(inputs.targetDir, 'package.json');
141
+ const readResult = await readSourcePackageJson(io, pkgJsonPath);
142
+ if (readResult.kind === 'err') {
143
+ return { kind: 'error', stderr: readResult.stderr, exitCode: 1 };
144
+ }
145
+ const pkgJson = readResult.pkg;
146
+ const rawName = typeof pkgJson.name === 'string' ? pkgJson.name : '';
147
+ const packName = rawName === '' ? DEFAULT_PACK_ID_FALLBACK : rawName;
148
+ const packVersion = typeof pkgJson.version === 'string' && pkgJson.version !== ''
149
+ ? pkgJson.version
150
+ : DEFAULT_PACK_VERSION_FALLBACK;
151
+ const packIdResult = resolvePackId(rawName, inputs.packIdOverride);
152
+ if (packIdResult.kind === 'err') {
153
+ return { kind: 'error', stderr: packIdResult.stderr, exitCode: 1 };
154
+ }
155
+ const packId = packIdResult.id;
156
+ const existing = await findExistingConfig(io, inputs.targetDir);
157
+ if (existing !== undefined && !inputs.force) {
158
+ return {
159
+ kind: 'error',
160
+ stderr: `${existing} already exists.\nRe-run with --force to overwrite the pack config (skills are always merged, not overwritten, unless --force is also set).\n`,
161
+ exitCode: 1,
162
+ };
163
+ }
164
+ // A CommonJS app (no `"type": "module"`) would make Node reparse a
165
+ // `.ts` config / primitive as ESM with a warning on every run.
166
+ const esmApp = pkgJson.type === 'module';
167
+ const configPath = existing ?? join(inputs.targetDir, esmApp ? 'kindgi.config.ts' : 'kindgi.config.mts');
168
+ // Resolve how the project will depend on Kindgi BEFORE writing
169
+ // anything, so a failure leaves the repo untouched.
170
+ const deps = await resolveProjectDeps(inputs);
171
+ if (deps.kind === 'err')
172
+ return { kind: 'error', stderr: deps.stderr, exitCode: 1 };
173
+ const filesWritten = await writeAugmentFiles({
174
+ io,
175
+ targetDir: inputs.targetDir,
176
+ configPath,
177
+ packId,
178
+ packVersion,
179
+ packName,
180
+ skillsRoot: inputs.skillsRoot,
181
+ force: inputs.force,
182
+ esmApp,
183
+ });
184
+ const created = [...filesWritten.created];
185
+ const skipped = [...filesWritten.skipped];
186
+ const sample = inputs.template === 'sample' && inputs.templatesRoot !== undefined;
187
+ if (sample) {
188
+ const primitives = await writeSamplePrimitives({
189
+ io,
190
+ sampleDir: join(inputs.templatesRoot, 'sample'),
191
+ targetDir: inputs.targetDir,
192
+ substitutions: { PACK_NAME: packName, PACK_ID: packId, PACK_VERSION: packVersion },
193
+ force: inputs.force,
194
+ });
195
+ created.push(...primitives.created);
196
+ skipped.push(...primitives.skipped);
197
+ }
198
+ const patchResult = await applyAugmentPatches({
199
+ targetDir: inputs.targetDir,
200
+ pkgJsonPath,
201
+ specs: deps.specs,
202
+ // The sample tools' schemas are Zod. An app with Zod keeps its own.
203
+ ...(sample && { extraDependencies: [SAMPLE_ZOD_DEPENDENCY] }),
204
+ });
205
+ if (patchResult.kind === 'err') {
206
+ return { kind: 'error', stderr: patchResult.stderr, exitCode: 1 };
207
+ }
208
+ created.push(...patchResult.created);
209
+ skipped.push(...patchResult.skipped);
210
+ const nextSteps = augmentNextSteps(deps.packageManager, sample ? packId : undefined);
211
+ const summary = {
212
+ kind: 'augment',
213
+ targetDir: inputs.targetDir,
214
+ packId,
215
+ packVersion,
216
+ packageManager: deps.packageManager,
217
+ dependencies: deps.specs,
218
+ created,
219
+ skipped,
220
+ nextSteps,
221
+ };
222
+ const rendered = renderJson(summary, 'json');
223
+ return {
224
+ kind: 'ok',
225
+ rendered: {
226
+ stdout: rendered.stdout,
227
+ stderr: [
228
+ '',
229
+ ` Kindgi added to ${inputs.targetDir} (augment mode).`,
230
+ ` Pack id: ${packId} Version: ${packVersion}`,
231
+ ` Wrote ${created.length} file${created.length === 1 ? '' : 's'}; skipped ${skipped.length}.`,
232
+ '',
233
+ ' Next steps:',
234
+ ...nextSteps.map((step) => ` ${step}`),
235
+ '',
236
+ '',
237
+ ].join('\n'),
238
+ },
239
+ };
240
+ }
241
+ // ---------------------------------------------------------------------
242
+ // Extracted helpers — keep runInitAugment under the complexity ceiling.
243
+ // ---------------------------------------------------------------------
244
+ /** The first `kindgi.config.*` already at the root, if any. */
245
+ async function findExistingConfig(io, targetDir) {
246
+ for (const name of KINDGI_CONFIG_FILENAMES) {
247
+ const path = join(targetDir, name);
248
+ if (await io.fileExists(path))
249
+ return path;
250
+ }
251
+ return undefined;
252
+ }
253
+ async function resolveProjectDeps(inputs) {
254
+ const packageManager = inputs.packageManager ?? (await detectPackageManager(inputs.targetDir));
255
+ if (inputs.dependencySpecs !== undefined) {
256
+ return { kind: 'ok', packageManager, specs: inputs.dependencySpecs };
257
+ }
258
+ const resolved = await resolveKindgiDependencySpecs({
259
+ targetDir: inputs.targetDir,
260
+ packageManager,
261
+ ...(inputs.linkLocal === true && { forceLocal: true }),
262
+ });
263
+ if (resolved.kind === 'error')
264
+ return { kind: 'err', stderr: `${resolved.message}\n` };
265
+ return { kind: 'ok', packageManager, specs: resolved.specs };
266
+ }
267
+ /**
268
+ * What to run next — in the project's own package manager, with its own
269
+ * `kindgi`. With the sample's `packId`, how to try its agent too.
270
+ */
271
+ export function augmentNextSteps(pm, samplePackId) {
272
+ const setSecret = binDisplay(pm, 'kindgi', [
273
+ 'secrets',
274
+ 'set',
275
+ '<NAME>',
276
+ '--env=local',
277
+ '--scope=tenant',
278
+ ]);
279
+ return [
280
+ `Install: ${installCommand(pm)}`,
281
+ `Boot the dev server: ${binDisplay(pm, 'kindgi', ['dev'])}`,
282
+ `Secrets: kindgi dev reads your .env and .env.local — keys there are available, or run ${setSecret}`,
283
+ `Model provider: agents answer with the dev-echo fallback until you register one — e.g. ${binDisplay(pm, 'kindgi', ['providers', 'register', '--preset=anthropic'])} (ANTHROPIC_API_KEY in .env); more in .claude/skills/kindgi-authoring-providers/SKILL.md`,
284
+ ...(samplePackId === undefined
285
+ ? []
286
+ : [
287
+ `Try the sample agent: ${binDisplay(pm, 'kindgi', ['runs', 'start', `--agent=${samplePackId}.echo-agent`, `--input='{"userMessage":"hi"}'`])}`,
288
+ ]),
289
+ ];
290
+ }
291
+ /** The sample's primitive folders, as augment mode lays them out under `kindgi/`. */
292
+ const SAMPLE_PRIMITIVE_DIRS = ['agents', 'flows', 'guardrails', 'tools'];
293
+ const SAMPLE_ZOD_DEPENDENCY = { name: 'zod', spec: '^4.0.0', section: 'dependencies' };
294
+ /**
295
+ * Copy the sample pack's primitives into `kindgi/<kind>/`, rendered as a
296
+ * fresh sample pack renders them. The sample's tests stay out: the app
297
+ * has its own test setup. A file already there is kept unless `force`.
298
+ */
299
+ async function writeSamplePrimitives(args) {
300
+ const created = [];
301
+ const skipped = [];
302
+ for (const kind of SAMPLE_PRIMITIVE_DIRS) {
303
+ const files = await collectTemplateFiles(join(args.sampleDir, kind));
304
+ for (const rel of files.sort()) {
305
+ if (/\.test\.ts(\.tmpl)?$/.test(rel))
306
+ continue;
307
+ const targetRel = rel.endsWith('.tmpl') ? rel.slice(0, -'.tmpl'.length) : rel;
308
+ const dest = join(args.targetDir, 'kindgi', kind, targetRel);
309
+ if (!args.force && (await args.io.fileExists(dest))) {
310
+ skipped.push(dest);
311
+ continue;
312
+ }
313
+ const raw = await args.io.readFile(join(args.sampleDir, kind, rel));
314
+ await args.io.writeFile(dest, rel.endsWith('.tmpl') ? substitute(raw, args.substitutions) : raw);
315
+ created.push(dest);
316
+ }
317
+ }
318
+ return { created, skipped };
319
+ }
320
+ async function readSourcePackageJson(io, pkgJsonPath) {
321
+ let raw;
322
+ try {
323
+ raw = await io.readFile(pkgJsonPath);
324
+ }
325
+ catch (err) {
326
+ return { kind: 'err', stderr: `Failed to read ${pkgJsonPath}: ${err.message}\n` };
327
+ }
328
+ let parsed;
329
+ try {
330
+ parsed = JSON.parse(raw);
331
+ }
332
+ catch (err) {
333
+ return {
334
+ kind: 'err',
335
+ stderr: `Failed to parse ${pkgJsonPath}: ${err.message}\n`,
336
+ };
337
+ }
338
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
339
+ return { kind: 'err', stderr: `${pkgJsonPath} is not a JSON object.\n` };
340
+ }
341
+ return { kind: 'ok', pkg: parsed };
342
+ }
343
+ function resolvePackId(rawName, override) {
344
+ if (override !== undefined && override !== '') {
345
+ if (!PACK_ID_REGEX.test(override)) {
346
+ return {
347
+ kind: 'err',
348
+ stderr: `Invalid --pack-id: ${override}. Must match ${PACK_ID_REGEX.source}.\n`,
349
+ };
350
+ }
351
+ return { kind: 'ok', id: override };
352
+ }
353
+ const derived = derivePackId(rawName);
354
+ if (derived.kind === 'err')
355
+ return { kind: 'err', stderr: derived.message };
356
+ return { kind: 'ok', id: derived.id };
357
+ }
358
+ /**
359
+ * Write the deterministic parts of the augment scaffold: config,
360
+ * subdirs, skills (merge/force respected). Returns the (created,
361
+ * skipped) split so the caller can still append patcher results.
362
+ */
363
+ async function writeAugmentFiles(args) {
364
+ const created = [];
365
+ const skipped = [];
366
+ // Config.
367
+ await args.io.writeFile(args.configPath, renderAugmentConfig({
368
+ packId: args.packId,
369
+ packVersion: args.packVersion,
370
+ packName: args.packName,
371
+ }));
372
+ created.push(args.configPath);
373
+ // Subdirs.
374
+ for (const sub of AUGMENT_SUBDIRS) {
375
+ const gitkeep = join(args.targetDir, 'kindgi', sub, '.gitkeep');
376
+ await args.io.writeFile(gitkeep, '');
377
+ created.push(gitkeep);
378
+ }
379
+ // In a CommonJS app, mark `kindgi/` as ES modules so primitives stay
380
+ // plain `.ts`. Never overwrite one the author already has.
381
+ if (!args.esmApp) {
382
+ const marker = join(args.targetDir, 'kindgi', 'package.json');
383
+ if (await args.io.fileExists(marker)) {
384
+ skipped.push(marker);
385
+ }
386
+ else {
387
+ await args.io.writeFile(marker, `${JSON.stringify({ type: 'module' }, null, 2)}\n`);
388
+ created.push(marker);
389
+ }
390
+ }
391
+ // Skills — through `kindgi skills sync`'s own path, so the manifest
392
+ // it keeps is written too (without it, `kindgi dev` reports every
393
+ // freshly installed skill as out of date). Local edits are kept
394
+ // unless --force.
395
+ if (args.skillsRoot !== undefined) {
396
+ const report = await syncSkills({
397
+ skillsRoot: args.skillsRoot,
398
+ targetDir: args.targetDir,
399
+ language: 'node',
400
+ force: args.force,
401
+ dryRun: false,
402
+ });
403
+ for (const o of report.outcomes) {
404
+ const target = join(args.targetDir, '.claude', 'skills', o.name, 'SKILL.md');
405
+ if (o.status === 'added' || o.status === 'updated')
406
+ created.push(target);
407
+ else if (o.status !== 'local-only')
408
+ skipped.push(target);
409
+ }
410
+ }
411
+ return { created, skipped };
412
+ }
413
+ /**
414
+ * Apply the two file patchers (package.json + .gitignore) and turn
415
+ * their outcomes into (created, skipped) rows for the summary.
416
+ * Extracted so `runInitAugment` stays under the complexity ceiling.
417
+ */
418
+ async function applyAugmentPatches(args) {
419
+ const created = [];
420
+ const skipped = [];
421
+ const patchPkg = await patchPackageJson(args.pkgJsonPath, args.specs, args.extraDependencies);
422
+ if (patchPkg.kind === 'error') {
423
+ return { kind: 'err', stderr: `Failed to patch ${args.pkgJsonPath}: ${patchPkg.message}\n` };
424
+ }
425
+ if (patchPkg.kind === 'patched') {
426
+ created.push(`${args.pkgJsonPath} (patched: +${patchPkg.added.join(', +')})`);
427
+ }
428
+ else {
429
+ skipped.push(`${args.pkgJsonPath} (dependencies already declared)`);
430
+ }
431
+ const gitignorePath = join(args.targetDir, '.gitignore');
432
+ const patchGit = await patchGitignore(gitignorePath);
433
+ if (patchGit.kind === 'error') {
434
+ return {
435
+ kind: 'err',
436
+ stderr: `Failed to patch ${gitignorePath}: ${patchGit.message ?? 'unknown error'}\n`,
437
+ };
438
+ }
439
+ if (patchGit.kind === 'patched') {
440
+ created.push(`${gitignorePath} (patched: +${patchGit.appended.join(', +')})`);
441
+ }
442
+ else {
443
+ skipped.push(`${gitignorePath} (Kindgi patterns already present)`);
444
+ }
445
+ // The app's formatter must not rewrite the Kindgi-managed skills.
446
+ const prettierignorePath = join(args.targetDir, '.prettierignore');
447
+ const patchPrettier = await patchPrettierignore(prettierignorePath);
448
+ if (patchPrettier.kind === 'error') {
449
+ return {
450
+ kind: 'err',
451
+ stderr: `Failed to patch ${prettierignorePath}: ${patchPrettier.message}\n`,
452
+ };
453
+ }
454
+ if (patchPrettier.kind === 'patched') {
455
+ created.push(`${prettierignorePath} (patched: +${patchPrettier.appended.join(', +')})`);
456
+ }
457
+ return { kind: 'ok', created, skipped };
458
+ }
459
+ //# sourceMappingURL=augment-scaffolder.js.map