@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 @@
1
+ {"version":3,"file":"host-install.js","sourceRoot":"","sources":["../../src/build/host-install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `image` in a TypeScript pack's `kindgi.config.*` (`@kindgi/sdk/build`),
3
+ * checked and resolved into what the Containerfile renders:
4
+ * - the Debian packages, the config's and the extensions', deduplicated;
5
+ * - the build env, the extensions' merged under the config's own;
6
+ * - the files the steps read, relative to the pack folder;
7
+ * - the steps, in extension order.
8
+ * A config that isn't the documented shape fails the build, naming the
9
+ * field — never a silently different image.
10
+ */
11
+ import type { BuildStep } from '@kindgi/handler-runtime/build-extensions';
12
+ export interface ResolvedImage {
13
+ readonly systemPackages: readonly string[];
14
+ readonly buildEnv: Readonly<Record<string, string>>;
15
+ /** Relative to the pack folder, sorted. */
16
+ readonly contextFiles: readonly string[];
17
+ readonly steps: readonly (BuildStep & {
18
+ readonly extension: string;
19
+ })[];
20
+ /** The extensions' names, in order. */
21
+ readonly extensions: readonly string[];
22
+ }
23
+ export type ImageConfigOutcome = {
24
+ readonly kind: 'ok';
25
+ readonly image: ResolvedImage;
26
+ } | {
27
+ readonly kind: 'invalid';
28
+ readonly message: string;
29
+ };
30
+ /** `image` from the loaded config (absent: nothing beyond the install). */
31
+ export declare function readImageConfig(config: Readonly<Record<string, unknown>>): ImageConfigOutcome;
32
+ //# sourceMappingURL=image-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-config.d.ts","sourceRoot":"","sources":["../../src/build/image-config.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAkB,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAK1F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IACxE,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAK3D,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,kBAAkB,CA0D7F"}
@@ -0,0 +1,129 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ import { checkAptPackages } from './apt.js';
4
+ import { forbiddenReason } from './context-files.js';
5
+ const ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
6
+ const BIN = /^[A-Za-z0-9@._/-]+$/;
7
+ /** `image` from the loaded config (absent: nothing beyond the install). */
8
+ export function readImageConfig(config) {
9
+ const image = config.image;
10
+ if (image === undefined) {
11
+ return {
12
+ kind: 'ok',
13
+ image: { systemPackages: [], buildEnv: {}, contextFiles: [], steps: [], extensions: [] },
14
+ };
15
+ }
16
+ if (image === null || typeof image !== 'object' || Array.isArray(image)) {
17
+ return invalid('`image` in kindgi.config must be an object: { systemPackages?, extensions?, buildEnv? }.');
18
+ }
19
+ const { systemPackages, extensions, buildEnv, ...rest } = image;
20
+ const unknown = Object.keys(rest);
21
+ if (unknown.length > 0) {
22
+ return invalid(`\`image\` in kindgi.config has ${unknown.map((k) => `\`${k}\``).join(', ')}: it takes systemPackages, extensions and buildEnv.`);
23
+ }
24
+ if (extensions !== undefined && !Array.isArray(extensions)) {
25
+ return invalid('`image.extensions` must be a list of build extensions (`@kindgi/sdk/build`).');
26
+ }
27
+ const packages = [];
28
+ if (systemPackages !== undefined) {
29
+ if (!Array.isArray(systemPackages))
30
+ return invalid('`image.systemPackages` must be a list of Debian package names.');
31
+ packages.push(...systemPackages);
32
+ }
33
+ const env = {};
34
+ const files = new Set();
35
+ const steps = [];
36
+ const names = [];
37
+ for (const [i, raw] of (extensions ?? []).entries()) {
38
+ const checked = checkExtension(raw, `image.extensions[${i}]`);
39
+ if (checked.kind === 'invalid')
40
+ return checked;
41
+ const extension = checked.extension;
42
+ names.push(extension.name);
43
+ packages.push(...(extension.systemPackages ?? []));
44
+ for (const file of extension.contextFiles ?? [])
45
+ files.add(file);
46
+ for (const step of extension.postInstall ?? [])
47
+ steps.push({ ...step, extension: extension.name });
48
+ Object.assign(env, extension.buildEnv ?? {});
49
+ }
50
+ const ownEnv = checkEnv(buildEnv, 'image.buildEnv');
51
+ if (ownEnv.kind === 'invalid')
52
+ return ownEnv;
53
+ Object.assign(env, ownEnv.env);
54
+ const apt = checkAptPackages(packages, 'image.systemPackages');
55
+ if (apt.kind === 'err')
56
+ return invalid(`${apt.message}.`);
57
+ return {
58
+ kind: 'ok',
59
+ image: {
60
+ systemPackages: apt.packages,
61
+ buildEnv: env,
62
+ contextFiles: [...files].sort(),
63
+ steps,
64
+ extensions: names,
65
+ },
66
+ };
67
+ }
68
+ function checkExtension(raw, where) {
69
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
70
+ return invalid(`${where} must be a build extension (\`@kindgi/sdk/build\`).`);
71
+ }
72
+ const ext = raw;
73
+ if (typeof ext.name !== 'string' || ext.name === '')
74
+ return invalid(`${where} has no \`name\`.`);
75
+ const label = `${where} (${ext.name})`;
76
+ const files = ext.contextFiles;
77
+ if (files !== undefined) {
78
+ if (!Array.isArray(files) || !files.every((f) => typeof f === 'string' && f !== '')) {
79
+ return invalid(`${label}: \`contextFiles\` must be a list of paths relative to the pack folder.`);
80
+ }
81
+ for (const file of files) {
82
+ if (file.startsWith('/') || file.split('/').includes('..')) {
83
+ return invalid(`${label}: ${file} isn't inside the pack folder.`);
84
+ }
85
+ const reason = forbiddenReason(file);
86
+ if (reason !== undefined)
87
+ return invalid(`${label}: refusing to put ${file} in the image (${reason}).`);
88
+ }
89
+ }
90
+ const steps = ext.postInstall;
91
+ if (steps !== undefined) {
92
+ if (!Array.isArray(steps))
93
+ return invalid(`${label}: \`postInstall\` must be a list of { bin, args }.`);
94
+ for (const step of steps) {
95
+ const s = step;
96
+ if (s === null || typeof s.bin !== 'string' || !BIN.test(s.bin)) {
97
+ return invalid(`${label}: each \`postInstall\` step needs a \`bin\`, a package's executable name.`);
98
+ }
99
+ if (s.args !== undefined && (!Array.isArray(s.args) || !s.args.every((a) => typeof a === 'string'))) {
100
+ return invalid(`${label}: \`postInstall\` args must be strings.`);
101
+ }
102
+ }
103
+ }
104
+ if (ext.systemPackages !== undefined && !Array.isArray(ext.systemPackages)) {
105
+ return invalid(`${label}: \`systemPackages\` must be a list of Debian package names.`);
106
+ }
107
+ const env = checkEnv(ext.buildEnv, `${label} buildEnv`);
108
+ if (env.kind === 'invalid')
109
+ return env;
110
+ return { kind: 'ok', extension: ext };
111
+ }
112
+ function checkEnv(raw, where) {
113
+ if (raw === undefined)
114
+ return { kind: 'ok', env: {} };
115
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
116
+ return invalid(`${where} must be an object of NAME → value.`);
117
+ }
118
+ for (const [name, value] of Object.entries(raw)) {
119
+ if (!ENV_NAME.test(name))
120
+ return invalid(`${where}: ${JSON.stringify(name)} isn't an env name.`);
121
+ if (typeof value !== 'string')
122
+ return invalid(`${where}: ${name} must be a string.`);
123
+ }
124
+ return { kind: 'ok', env: raw };
125
+ }
126
+ function invalid(message) {
127
+ return { kind: 'invalid', message };
128
+ }
129
+ //# sourceMappingURL=image-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-config.js","sourceRoot":"","sources":["../../src/build/image-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Local integrity gate — the single most important step in the deploy
3
+ * pipeline for an auditable deployment.
4
+ * The CLI does not trust the build service; before signing, it must
5
+ * verify byte-for-byte that the server's `index.json` matches what the
6
+ * CLI's own indexer produced against the same source.
7
+ *
8
+ * Two comparison paths — the CLI runs both (or a subset via
9
+ * `--skip-*` flags):
10
+ *
11
+ * 1. **Hash comparison** — sha256 of the CLI's expected-index.json
12
+ * MUST equal `indexHash` from the server's terminal payload.
13
+ * Cheap (no docker daemon needed) and catches most tampering.
14
+ *
15
+ * 2. **Docker-pull-and-diff** — pull `imageRef@imageDigest`, extract
16
+ * `/app/index.json` from the image via `docker create/cp/rm`
17
+ * (mirror of `packages/build-server/src/docker-wrapper.ts:
18
+ * extractFileFromImage`), byte-compare against expected. Requires
19
+ * Docker on the developer's machine. Skippable via
20
+ * `--skip-image-pull` for CI environments without Docker.
21
+ *
22
+ * Both diffs failing → abort deploy; print a helpful diff line
23
+ * identifying what changed. The CLI refuses to sign a mismatched
24
+ * build.
25
+ */
26
+ /** Fixed-width string diff — a hex-safe first-diff-byte report. */
27
+ export interface ByteDiff {
28
+ readonly offset: number;
29
+ readonly expected: string;
30
+ readonly actual: string;
31
+ readonly context: string;
32
+ }
33
+ export declare function firstByteDiff(expected: Uint8Array, actual: Uint8Array): ByteDiff | null;
34
+ export interface IntegrityCheckInputs {
35
+ readonly expectedBytes: Uint8Array;
36
+ readonly expectedHash: string;
37
+ readonly serverReportedHash: string;
38
+ readonly serverBytes?: Uint8Array;
39
+ }
40
+ export interface IntegrityCheckResult {
41
+ readonly ok: boolean;
42
+ readonly hashMatches: boolean;
43
+ readonly byteDiff: ByteDiff | null;
44
+ readonly reason?: string;
45
+ }
46
+ /**
47
+ * Run the two-diff comparison. `serverBytes` optional — when omitted
48
+ * (CI or `--skip-image-pull`), only the hash comparison runs.
49
+ */
50
+ export declare function checkIntegrity(inputs: IntegrityCheckInputs): IntegrityCheckResult;
51
+ //# sourceMappingURL=integrity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.d.ts","sourceRoot":"","sources":["../../src/build/integrity.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,IAAI,CAwBvF;AAiBD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CA8BjF"}
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ export function firstByteDiff(expected, actual) {
4
+ const min = Math.min(expected.length, actual.length);
5
+ for (let i = 0; i < min; i += 1) {
6
+ if (expected[i] !== actual[i]) {
7
+ return {
8
+ offset: i,
9
+ expected: `0x${(expected[i] ?? 0).toString(16).padStart(2, '0')}`,
10
+ actual: `0x${(actual[i] ?? 0).toString(16).padStart(2, '0')}`,
11
+ context: renderContext(expected, actual, i),
12
+ };
13
+ }
14
+ }
15
+ if (expected.length !== actual.length) {
16
+ return {
17
+ offset: min,
18
+ expected: `<length ${expected.length}>`,
19
+ actual: `<length ${actual.length}>`,
20
+ context: expected.length > actual.length
21
+ ? 'server bytes truncated relative to expected'
22
+ : 'server bytes longer than expected',
23
+ };
24
+ }
25
+ return null;
26
+ }
27
+ function renderContext(a, b, offset) {
28
+ const start = Math.max(0, offset - 32);
29
+ const end = Math.min(Math.max(a.length, b.length), offset + 32);
30
+ const toStr = (buf) => {
31
+ let out = '';
32
+ for (let i = start; i < Math.min(buf.length, end); i += 1) {
33
+ const c = buf[i];
34
+ if (c === undefined)
35
+ break;
36
+ out += c >= 0x20 && c < 0x7f ? String.fromCharCode(c) : '.';
37
+ }
38
+ return out;
39
+ };
40
+ return `expected: "${toStr(a)}" | actual: "${toStr(b)}"`;
41
+ }
42
+ /**
43
+ * Run the two-diff comparison. `serverBytes` optional — when omitted
44
+ * (CI or `--skip-image-pull`), only the hash comparison runs.
45
+ */
46
+ export function checkIntegrity(inputs) {
47
+ const hashMatches = inputs.expectedHash === inputs.serverReportedHash;
48
+ if (!hashMatches) {
49
+ return {
50
+ ok: false,
51
+ hashMatches: false,
52
+ byteDiff: null,
53
+ reason: `indexHash mismatch: local ${inputs.expectedHash} vs server ${inputs.serverReportedHash}. ` +
54
+ `Build service produced a different index.json than the CLI's local indexer. ` +
55
+ `Refusing to sign a mismatched build.`,
56
+ };
57
+ }
58
+ if (inputs.serverBytes === undefined) {
59
+ return { ok: true, hashMatches: true, byteDiff: null };
60
+ }
61
+ const byteDiff = firstByteDiff(inputs.expectedBytes, inputs.serverBytes);
62
+ if (byteDiff !== null) {
63
+ return {
64
+ ok: false,
65
+ hashMatches: true,
66
+ byteDiff,
67
+ reason: `byte-level diff at offset ${byteDiff.offset}: ` +
68
+ `${byteDiff.expected} != ${byteDiff.actual}. ` +
69
+ `Hashes matched but bytes diverged — this is a bug on either side. ` +
70
+ `Refusing to sign.`,
71
+ };
72
+ }
73
+ return { ok: true, hashMatches: true, byteDiff: null };
74
+ }
75
+ //# sourceMappingURL=integrity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.js","sourceRoot":"","sources":["../../src/build/integrity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface NodeBaseImage {
2
+ readonly major: number;
3
+ /** The Node version the pinned image runs. */
4
+ readonly version: string;
5
+ readonly ref: string;
6
+ }
7
+ /** `node:<major>-bookworm-slim`, pinned (image index digests, verified 2026-10-02), oldest first. */
8
+ export declare const NODE_BASE_IMAGES: readonly NodeBaseImage[];
9
+ export type NodeBaseImageOutcome = {
10
+ readonly kind: 'ok';
11
+ readonly image: NodeBaseImage;
12
+ } | {
13
+ readonly kind: 'err';
14
+ readonly message: string;
15
+ };
16
+ /** The base image for a host whose `engines.node` is `range` (absent: none declared). */
17
+ export declare function nodeBaseImageFor(range: string | undefined): NodeBaseImageOutcome;
18
+ //# sourceMappingURL=node-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-image.d.ts","sourceRoot":"","sources":["../../src/build/node-image.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qGAAqG;AACrG,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAWpD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,oBAAoB,CAahF"}
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * The base image of a TypeScript pack image: `node:<major>-bookworm-slim`,
5
+ * pinned by its image index digest (every platform: amd64 for Cloud
6
+ * Run, arm64 for a laptop), for each Node major the CLI supports.
7
+ *
8
+ * The image is the oldest pinned one whose Node satisfies the host's
9
+ * `engines.node`, so the image runs a Node the app declares (and an
10
+ * `engine-strict` install accepts). No `engines.node`: the oldest.
11
+ *
12
+ * Refresh the table with `node scripts/refresh-node-digests.mjs`.
13
+ */
14
+ import semver from 'semver';
15
+ /** `node:<major>-bookworm-slim`, pinned (image index digests, verified 2026-10-02), oldest first. */
16
+ export const NODE_BASE_IMAGES = [
17
+ {
18
+ major: 22,
19
+ version: '22.23.3',
20
+ ref: 'node:22-bookworm-slim@sha256:43ac6c60b8f89723f746e8a92ce91abd5017e627ce1ddfe4238355d3a30b772c',
21
+ },
22
+ {
23
+ major: 24,
24
+ version: '24.21.0',
25
+ ref: 'node:24-bookworm-slim@sha256:0e0ff40c39bc087845bfb27465a0df4ea419520094bc35842ff83dd8cbe6f9b6',
26
+ },
27
+ ];
28
+ /** The base image for a host whose `engines.node` is `range` (absent: none declared). */
29
+ export function nodeBaseImageFor(range) {
30
+ const [oldest] = NODE_BASE_IMAGES;
31
+ if (oldest === undefined)
32
+ throw new Error('NODE_BASE_IMAGES is empty');
33
+ if (range === undefined || range.trim() === '')
34
+ return { kind: 'ok', image: oldest };
35
+ if (semver.validRange(range) === null) {
36
+ return { kind: 'err', message: `engines.node is "${range}", which isn't a semver range.` };
37
+ }
38
+ const image = NODE_BASE_IMAGES.find((i) => semver.satisfies(i.version, range));
39
+ if (image !== undefined)
40
+ return { kind: 'ok', image };
41
+ return {
42
+ kind: 'err',
43
+ message: `engines.node is "${range}": a pack image runs Node ${NODE_BASE_IMAGES.map((i) => i.version).join(' or ')}, and the range admits neither.`,
44
+ };
45
+ }
46
+ //# sourceMappingURL=node-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-image.js","sourceRoot":"","sources":["../../src/build/node-image.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC;;;;;;;;;;GAUG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAS5B,qGAAqG;AACrG,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD;QACE,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,+FAA+F;KACrG;IACD;QACE,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,+FAA+F;KACrG;CACF,CAAC;AAMF,yFAAyF;AACzF,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC;IAClC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACrF,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,KAAK,gCAAgC,EAAE,CAAC;IAC7F,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACtD,OAAO;QACL,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,oBAAoB,KAAK,6BAA6B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC;KACpJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Resolve the pack + repo roots for `kindgi build` and adjacent
3
+ * commands. Distinguishes two layouts:
4
+ *
5
+ * - **standalone** — `kindgi.config.ts` and `package.json` live in
6
+ * the SAME directory. This is the classical shape produced by
7
+ * `kindgi init <pack-name>` (fresh scaffold). `packDir` and
8
+ * `repoRoot` are the same absolute path.
9
+ *
10
+ * - **augment** — `kindgi.config.ts` sits inside a subdirectory of
11
+ * a larger repo (e.g. `<repo>/kindgi/`) whose `package.json` lives
12
+ * UP the tree. `packDir` is where the pack config is; `repoRoot`
13
+ * is where the surrounding repo's `package.json` lives. This is
14
+ * the trigger.dev-shaped "add Kindgi to my existing app" layout.
15
+ *
16
+ * Auto-detection algorithm:
17
+ *
18
+ * 1. Resolve `packDir` from `--path` flag (absolute or cwd-relative)
19
+ * or default to `cwd`.
20
+ * 2. Verify at least one of `kindgi.config.{ts,mjs,js,cjs}` exists
21
+ * at `packDir`. If not, error.
22
+ * 3. Walk up from `packDir` looking for a `package.json`. First
23
+ * ancestor (including `packDir` itself) that has one is `repoRoot`.
24
+ * 4. If `packDir === repoRoot` → `standalone`, else `augment`.
25
+ * 5. If no `package.json` found up to filesystem root, error.
26
+ *
27
+ * Never prompts. Never guesses beyond the algorithm. Explicit
28
+ * override for the corner case where auto-detect gets it wrong is
29
+ * deferred until a real user reports one.
30
+ */
31
+ import { type PackLanguage } from '@kindgi/handler-runtime';
32
+ export type PackMode = 'standalone' | 'augment';
33
+ /**
34
+ * The resolved layout roots. `packDir === repoRoot` iff `mode ===
35
+ * 'standalone'`. Callers that need to bundle from the pack should use
36
+ * `packDir`; callers that need the repo's `package.json` /
37
+ * `pnpm-lock.yaml` / etc. should use `repoRoot`.
38
+ */
39
+ export interface PackRoots {
40
+ readonly packDir: string;
41
+ readonly repoRoot: string;
42
+ readonly mode: PackMode;
43
+ /** The pack's code language — a Python pack has no Node project around it. */
44
+ readonly language: PackLanguage;
45
+ }
46
+ export type ResolveResult = {
47
+ readonly kind: 'ok';
48
+ readonly roots: PackRoots;
49
+ } | {
50
+ readonly kind: 'err';
51
+ readonly code: ResolveErrorCode;
52
+ readonly message: string;
53
+ };
54
+ export type ResolveErrorCode = 'no-config' | 'no-package-json';
55
+ /**
56
+ * Recognized config filenames, in preference order — the indexer's own
57
+ * list, so every command finds the same config.
58
+ */
59
+ export declare const CONFIG_FILENAMES: readonly string[];
60
+ export interface ResolveInputs {
61
+ /** Current working directory when the CLI invoked. */
62
+ readonly cwd: string;
63
+ /** `--path=<dir>` flag value if the caller passed one. */
64
+ readonly pathFlag?: string;
65
+ /** Injectable existence check for tests. Default uses `fs/promises`. */
66
+ readonly fileExists?: (path: string) => Promise<boolean>;
67
+ }
68
+ export declare function resolvePackRoots(inputs: ResolveInputs): Promise<ResolveResult>;
69
+ //# sourceMappingURL=pack-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-root.d.ts","sourceRoot":"","sources":["../../src/build/pack-root.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAA2B,KAAK,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAGvG,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAA4B,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAYD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAqCpF"}
@@ -0,0 +1,102 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Copyright (C) 2026 Kindgi Inc.
3
+ /**
4
+ * Resolve the pack + repo roots for `kindgi build` and adjacent
5
+ * commands. Distinguishes two layouts:
6
+ *
7
+ * - **standalone** — `kindgi.config.ts` and `package.json` live in
8
+ * the SAME directory. This is the classical shape produced by
9
+ * `kindgi init <pack-name>` (fresh scaffold). `packDir` and
10
+ * `repoRoot` are the same absolute path.
11
+ *
12
+ * - **augment** — `kindgi.config.ts` sits inside a subdirectory of
13
+ * a larger repo (e.g. `<repo>/kindgi/`) whose `package.json` lives
14
+ * UP the tree. `packDir` is where the pack config is; `repoRoot`
15
+ * is where the surrounding repo's `package.json` lives. This is
16
+ * the trigger.dev-shaped "add Kindgi to my existing app" layout.
17
+ *
18
+ * Auto-detection algorithm:
19
+ *
20
+ * 1. Resolve `packDir` from `--path` flag (absolute or cwd-relative)
21
+ * or default to `cwd`.
22
+ * 2. Verify at least one of `kindgi.config.{ts,mjs,js,cjs}` exists
23
+ * at `packDir`. If not, error.
24
+ * 3. Walk up from `packDir` looking for a `package.json`. First
25
+ * ancestor (including `packDir` itself) that has one is `repoRoot`.
26
+ * 4. If `packDir === repoRoot` → `standalone`, else `augment`.
27
+ * 5. If no `package.json` found up to filesystem root, error.
28
+ *
29
+ * Never prompts. Never guesses beyond the algorithm. Explicit
30
+ * override for the corner case where auto-detect gets it wrong is
31
+ * deferred until a real user reports one.
32
+ */
33
+ import { KINDGI_CONFIG_FILENAMES, findKindgiConfig } from '@kindgi/handler-runtime';
34
+ import { dirname, isAbsolute, join, parse, resolve } from 'node:path';
35
+ /**
36
+ * Recognized config filenames, in preference order — the indexer's own
37
+ * list, so every command finds the same config.
38
+ */
39
+ export const CONFIG_FILENAMES = KINDGI_CONFIG_FILENAMES;
40
+ const defaultFileExists = async (path) => {
41
+ const { stat } = await import('node:fs/promises');
42
+ try {
43
+ const s = await stat(path);
44
+ return s.isFile();
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ };
50
+ export async function resolvePackRoots(inputs) {
51
+ const fileExists = inputs.fileExists ?? defaultFileExists;
52
+ const rawPath = inputs.pathFlag !== undefined && inputs.pathFlag !== ''
53
+ ? inputs.pathFlag
54
+ : inputs.cwd;
55
+ const packDir = isAbsolute(rawPath) ? rawPath : resolve(inputs.cwd, rawPath);
56
+ // 1. Verify a kindgi.config.* exists at packDir — or a Python pack's
57
+ // [tool.kindgi] in pyproject.toml, whose root is the pack itself.
58
+ const hasConfig = await hasAnyConfig(packDir, fileExists);
59
+ if (!hasConfig && (await findKindgiConfig(packDir))?.format === 'pyproject') {
60
+ return {
61
+ kind: 'ok',
62
+ roots: { packDir, repoRoot: packDir, mode: 'standalone', language: 'python' },
63
+ };
64
+ }
65
+ if (!hasConfig) {
66
+ return {
67
+ kind: 'err',
68
+ code: 'no-config',
69
+ message: `No kindgi.config.{ts,mts,mjs,js,cjs} (or pyproject.toml with a [tool.kindgi] table) at ${packDir}. Run \`kindgi init\` to scaffold one, or pass \`--path=<pack-dir>\` if you meant a different directory.`,
70
+ };
71
+ }
72
+ // 2. Walk up from packDir looking for package.json.
73
+ const repoRoot = await findAncestorWithPackageJson(packDir, fileExists);
74
+ if (repoRoot === null) {
75
+ return {
76
+ kind: 'err',
77
+ code: 'no-package-json',
78
+ message: `No package.json found at or above ${packDir}. A pack (standalone or embedded) must live inside a Node.js project.`,
79
+ };
80
+ }
81
+ const mode = packDir === repoRoot ? 'standalone' : 'augment';
82
+ return { kind: 'ok', roots: { packDir, repoRoot, mode, language: 'node' } };
83
+ }
84
+ async function hasAnyConfig(dir, fileExists) {
85
+ for (const name of CONFIG_FILENAMES) {
86
+ if (await fileExists(join(dir, name)))
87
+ return true;
88
+ }
89
+ return false;
90
+ }
91
+ async function findAncestorWithPackageJson(start, fileExists) {
92
+ let current = start;
93
+ const rootMarker = parse(current).root;
94
+ while (true) {
95
+ if (await fileExists(join(current, 'package.json')))
96
+ return current;
97
+ if (current === rootMarker)
98
+ return null;
99
+ current = dirname(current);
100
+ }
101
+ }
102
+ //# sourceMappingURL=pack-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-root.js","sourceRoot":"","sources":["../../src/build/pack-root.ts"],"names":[],"mappings":"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"}