@kindgi/cli 0.0.0-bootstrap.0 → 0.1.1

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 (516) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +738 -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 +48 -0
  8. package/dist/build/bundle.d.ts.map +1 -0
  9. package/dist/build/bundle.js +125 -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 +197 -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 +597 -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 +100 -0
  28. package/dist/build/host-install.d.ts.map +1 -0
  29. package/dist/build/host-install.js +443 -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 +25 -0
  88. package/dist/commands/auth.d.ts.map +1 -0
  89. package/dist/commands/auth.js +283 -0
  90. package/dist/commands/auth.js.map +1 -0
  91. package/dist/commands/build.d.ts +46 -0
  92. package/dist/commands/build.d.ts.map +1 -0
  93. package/dist/commands/build.js +902 -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 +43 -0
  108. package/dist/commands/dev.d.ts.map +1 -0
  109. package/dist/commands/dev.js +1110 -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 +48 -0
  132. package/dist/commands/helpers.d.ts.map +1 -0
  133. package/dist/commands/helpers.js +110 -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 +454 -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 +212 -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 +223 -0
  178. package/dist/commands/runs.js.map +1 -0
  179. package/dist/commands/secrets.d.ts +18 -0
  180. package/dist/commands/secrets.d.ts.map +1 -0
  181. package/dist/commands/secrets.js +702 -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 +162 -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 +22 -0
  204. package/dist/commands/unwired.d.ts.map +1 -0
  205. package/dist/commands/unwired.js +52 -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 +162 -0
  216. package/dist/context.d.ts.map +1 -0
  217. package/dist/context.js +45 -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 +10 -0
  240. package/dist/dev/bundler.d.ts.map +1 -0
  241. package/dist/dev/bundler.js +235 -0
  242. package/dist/dev/bundler.js.map +1 -0
  243. package/dist/dev/defaults.d.ts +140 -0
  244. package/dist/dev/defaults.d.ts.map +1 -0
  245. package/dist/dev/defaults.js +709 -0
  246. package/dist/dev/defaults.js.map +1 -0
  247. package/dist/dev/dev-only-imports.d.ts +15 -0
  248. package/dist/dev/dev-only-imports.d.ts.map +1 -0
  249. package/dist/dev/dev-only-imports.js +57 -0
  250. package/dist/dev/dev-only-imports.js.map +1 -0
  251. package/dist/dev/docker-compose.dev.yml +68 -0
  252. package/dist/dev/index-child.d.ts +2 -0
  253. package/dist/dev/index-child.d.ts.map +1 -0
  254. package/dist/dev/index-child.js +53 -0
  255. package/dist/dev/index-child.js.map +1 -0
  256. package/dist/dev/pack-code.d.ts +36 -0
  257. package/dist/dev/pack-code.d.ts.map +1 -0
  258. package/dist/dev/pack-code.js +129 -0
  259. package/dist/dev/pack-code.js.map +1 -0
  260. package/dist/dev/pack-env.d.ts +13 -0
  261. package/dist/dev/pack-env.d.ts.map +1 -0
  262. package/dist/dev/pack-env.js +36 -0
  263. package/dist/dev/pack-env.js.map +1 -0
  264. package/dist/dev/pack-service.d.ts +40 -0
  265. package/dist/dev/pack-service.d.ts.map +1 -0
  266. package/dist/dev/pack-service.js +189 -0
  267. package/dist/dev/pack-service.js.map +1 -0
  268. package/dist/dev/paths.d.ts +22 -0
  269. package/dist/dev/paths.d.ts.map +1 -0
  270. package/dist/dev/paths.js +35 -0
  271. package/dist/dev/paths.js.map +1 -0
  272. package/dist/dev/postgres-container.d.ts +77 -0
  273. package/dist/dev/postgres-container.d.ts.map +1 -0
  274. package/dist/dev/postgres-container.js +346 -0
  275. package/dist/dev/postgres-container.js.map +1 -0
  276. package/dist/dev/python-builder.d.ts +16 -0
  277. package/dist/dev/python-builder.d.ts.map +1 -0
  278. package/dist/dev/python-builder.js +122 -0
  279. package/dist/dev/python-builder.js.map +1 -0
  280. package/dist/dev/register.d.ts +71 -0
  281. package/dist/dev/register.d.ts.map +1 -0
  282. package/dist/dev/register.js +54 -0
  283. package/dist/dev/register.js.map +1 -0
  284. package/dist/dev/runners.d.ts +312 -0
  285. package/dist/dev/runners.d.ts.map +1 -0
  286. package/dist/dev/runners.js +4 -0
  287. package/dist/dev/runners.js.map +1 -0
  288. package/dist/dev/runtime-container.d.ts +71 -0
  289. package/dist/dev/runtime-container.d.ts.map +1 -0
  290. package/dist/dev/runtime-container.js +173 -0
  291. package/dist/dev/runtime-container.js.map +1 -0
  292. package/dist/dev/runtime-env.d.ts +62 -0
  293. package/dist/dev/runtime-env.d.ts.map +1 -0
  294. package/dist/dev/runtime-env.js +100 -0
  295. package/dist/dev/runtime-env.js.map +1 -0
  296. package/dist/dev/runtime-image.d.ts +26 -0
  297. package/dist/dev/runtime-image.d.ts.map +1 -0
  298. package/dist/dev/runtime-image.js +44 -0
  299. package/dist/dev/runtime-image.js.map +1 -0
  300. package/dist/dev/runtime-registry.d.ts +73 -0
  301. package/dist/dev/runtime-registry.d.ts.map +1 -0
  302. package/dist/dev/runtime-registry.js +111 -0
  303. package/dist/dev/runtime-registry.js.map +1 -0
  304. package/dist/env/defaults.d.ts +3 -0
  305. package/dist/env/defaults.d.ts.map +1 -0
  306. package/dist/env/defaults.js +22 -0
  307. package/dist/env/defaults.js.map +1 -0
  308. package/dist/env/pack-env-plan.d.ts +70 -0
  309. package/dist/env/pack-env-plan.d.ts.map +1 -0
  310. package/dist/env/pack-env-plan.js +236 -0
  311. package/dist/env/pack-env-plan.js.map +1 -0
  312. package/dist/env/parser.d.ts +9 -0
  313. package/dist/env/parser.d.ts.map +1 -0
  314. package/dist/env/parser.js +11 -0
  315. package/dist/env/parser.js.map +1 -0
  316. package/dist/env/project-env.d.ts +34 -0
  317. package/dist/env/project-env.d.ts.map +1 -0
  318. package/dist/env/project-env.js +45 -0
  319. package/dist/env/project-env.js.map +1 -0
  320. package/dist/env/runners.d.ts +22 -0
  321. package/dist/env/runners.d.ts.map +1 -0
  322. package/dist/env/runners.js +4 -0
  323. package/dist/env/runners.js.map +1 -0
  324. package/dist/env/writer.d.ts +7 -0
  325. package/dist/env/writer.d.ts.map +1 -0
  326. package/dist/env/writer.js +9 -0
  327. package/dist/env/writer.js.map +1 -0
  328. package/dist/errors.d.ts +31 -0
  329. package/dist/errors.d.ts.map +1 -0
  330. package/dist/errors.js +111 -0
  331. package/dist/errors.js.map +1 -0
  332. package/dist/help.d.ts +5 -0
  333. package/dist/help.d.ts.map +1 -0
  334. package/dist/help.js +61 -0
  335. package/dist/help.js.map +1 -0
  336. package/dist/index.d.ts +13 -0
  337. package/dist/index.d.ts.map +1 -0
  338. package/dist/index.js +13 -0
  339. package/dist/index.js.map +1 -0
  340. package/dist/init/augment-scaffolder.d.ts +86 -0
  341. package/dist/init/augment-scaffolder.d.ts.map +1 -0
  342. package/dist/init/augment-scaffolder.js +538 -0
  343. package/dist/init/augment-scaffolder.js.map +1 -0
  344. package/dist/init/dependency-specs.d.ts +58 -0
  345. package/dist/init/dependency-specs.d.ts.map +1 -0
  346. package/dist/init/dependency-specs.js +153 -0
  347. package/dist/init/dependency-specs.js.map +1 -0
  348. package/dist/init/gitignore-patcher.d.ts +23 -0
  349. package/dist/init/gitignore-patcher.d.ts.map +1 -0
  350. package/dist/init/gitignore-patcher.js +103 -0
  351. package/dist/init/gitignore-patcher.js.map +1 -0
  352. package/dist/init/mode-detect.d.ts +34 -0
  353. package/dist/init/mode-detect.d.ts.map +1 -0
  354. package/dist/init/mode-detect.js +115 -0
  355. package/dist/init/mode-detect.js.map +1 -0
  356. package/dist/init/package-json-patcher.d.ts +36 -0
  357. package/dist/init/package-json-patcher.d.ts.map +1 -0
  358. package/dist/init/package-json-patcher.js +128 -0
  359. package/dist/init/package-json-patcher.js.map +1 -0
  360. package/dist/init/pnpm-workspace-patcher.d.ts +55 -0
  361. package/dist/init/pnpm-workspace-patcher.d.ts.map +1 -0
  362. package/dist/init/pnpm-workspace-patcher.js +248 -0
  363. package/dist/init/pnpm-workspace-patcher.js.map +1 -0
  364. package/dist/init/pyproject-patcher.d.ts +56 -0
  365. package/dist/init/pyproject-patcher.d.ts.map +1 -0
  366. package/dist/init/pyproject-patcher.js +324 -0
  367. package/dist/init/pyproject-patcher.js.map +1 -0
  368. package/dist/init/python-augment.d.ts +22 -0
  369. package/dist/init/python-augment.d.ts.map +1 -0
  370. package/dist/init/python-augment.js +300 -0
  371. package/dist/init/python-augment.js.map +1 -0
  372. package/dist/init/template-files.d.ts +18 -0
  373. package/dist/init/template-files.d.ts.map +1 -0
  374. package/dist/init/template-files.js +53 -0
  375. package/dist/init/template-files.js.map +1 -0
  376. package/dist/key/defaults.d.ts +3 -0
  377. package/dist/key/defaults.d.ts.map +1 -0
  378. package/dist/key/defaults.js +60 -0
  379. package/dist/key/defaults.js.map +1 -0
  380. package/dist/key/fingerprint.d.ts +6 -0
  381. package/dist/key/fingerprint.d.ts.map +1 -0
  382. package/dist/key/fingerprint.js +25 -0
  383. package/dist/key/fingerprint.js.map +1 -0
  384. package/dist/key/paths.d.ts +30 -0
  385. package/dist/key/paths.d.ts.map +1 -0
  386. package/dist/key/paths.js +51 -0
  387. package/dist/key/paths.js.map +1 -0
  388. package/dist/key/runners.d.ts +60 -0
  389. package/dist/key/runners.d.ts.map +1 -0
  390. package/dist/key/runners.js +4 -0
  391. package/dist/key/runners.js.map +1 -0
  392. package/dist/main.d.ts +113 -0
  393. package/dist/main.d.ts.map +1 -0
  394. package/dist/main.js +199 -0
  395. package/dist/main.js.map +1 -0
  396. package/dist/mcp/launcher.d.ts +143 -0
  397. package/dist/mcp/launcher.d.ts.map +1 -0
  398. package/dist/mcp/launcher.js +393 -0
  399. package/dist/mcp/launcher.js.map +1 -0
  400. package/dist/mcp/preset-loader.d.ts +29 -0
  401. package/dist/mcp/preset-loader.d.ts.map +1 -0
  402. package/dist/mcp/preset-loader.js +217 -0
  403. package/dist/mcp/preset-loader.js.map +1 -0
  404. package/dist/mcp/preset-types.d.ts +71 -0
  405. package/dist/mcp/preset-types.d.ts.map +1 -0
  406. package/dist/mcp/preset-types.js +4 -0
  407. package/dist/mcp/preset-types.js.map +1 -0
  408. package/dist/mcp/presets/README.md +68 -0
  409. package/dist/mcp/presets/postgres.json +15 -0
  410. package/dist/output.d.ts +26 -0
  411. package/dist/output.d.ts.map +1 -0
  412. package/dist/output.js +46 -0
  413. package/dist/output.js.map +1 -0
  414. package/dist/pack-config.d.ts +37 -0
  415. package/dist/pack-config.d.ts.map +1 -0
  416. package/dist/pack-config.js +65 -0
  417. package/dist/pack-config.js.map +1 -0
  418. package/dist/package-manager.d.ts +33 -0
  419. package/dist/package-manager.d.ts.map +1 -0
  420. package/dist/package-manager.js +129 -0
  421. package/dist/package-manager.js.map +1 -0
  422. package/dist/parse.d.ts +88 -0
  423. package/dist/parse.d.ts.map +1 -0
  424. package/dist/parse.js +100 -0
  425. package/dist/parse.js.map +1 -0
  426. package/dist/providers/preset-loader.d.ts +47 -0
  427. package/dist/providers/preset-loader.d.ts.map +1 -0
  428. package/dist/providers/preset-loader.js +107 -0
  429. package/dist/providers/preset-loader.js.map +1 -0
  430. package/dist/providers/presets/anthropic.json +47 -0
  431. package/dist/providers/presets/gemini.json +40 -0
  432. package/dist/reference.d.ts +28 -0
  433. package/dist/reference.d.ts.map +1 -0
  434. package/dist/reference.js +52 -0
  435. package/dist/reference.js.map +1 -0
  436. package/dist/sdk-package.d.ts +9 -0
  437. package/dist/sdk-package.d.ts.map +1 -0
  438. package/dist/sdk-package.js +20 -0
  439. package/dist/sdk-package.js.map +1 -0
  440. package/dist/sdk-skills/kindgi-authoring-agents/SKILL.md +252 -0
  441. package/dist/sdk-skills/kindgi-authoring-flows/SKILL.md +302 -0
  442. package/dist/sdk-skills/kindgi-authoring-guardrails/SKILL.md +297 -0
  443. package/dist/sdk-skills/kindgi-authoring-mcp-servers/SKILL.md +289 -0
  444. package/dist/sdk-skills/kindgi-authoring-providers/SKILL.md +705 -0
  445. package/dist/sdk-skills/kindgi-authoring-tools/SKILL.md +298 -0
  446. package/dist/sdk-skills/kindgi-framework-feedback/SKILL.md +211 -0
  447. package/dist/sdk-skills/kindgi-getting-started/SKILL.md +189 -0
  448. package/dist/sdk-skills/kindgi-python-authoring-agents/SKILL.md +205 -0
  449. package/dist/sdk-skills/kindgi-python-authoring-flows/SKILL.md +325 -0
  450. package/dist/sdk-skills/kindgi-python-authoring-guardrails/SKILL.md +176 -0
  451. package/dist/sdk-skills/kindgi-python-authoring-tools/SKILL.md +305 -0
  452. package/dist/sdk-skills/kindgi-python-getting-started/SKILL.md +242 -0
  453. package/dist/stop-signal.d.ts +15 -0
  454. package/dist/stop-signal.d.ts.map +1 -0
  455. package/dist/stop-signal.js +16 -0
  456. package/dist/stop-signal.js.map +1 -0
  457. package/dist/templates/minimal/.nvmrc +1 -0
  458. package/dist/templates/minimal/AGENTS.md +23 -0
  459. package/dist/templates/minimal/README.md.tmpl +69 -0
  460. package/dist/templates/minimal/agents/.gitkeep +0 -0
  461. package/dist/templates/minimal/flows/.gitkeep +0 -0
  462. package/dist/templates/minimal/gitignore +8 -0
  463. package/dist/templates/minimal/guardrails/.gitkeep +0 -0
  464. package/dist/templates/minimal/kindgi.config.ts.tmpl +44 -0
  465. package/dist/templates/minimal/package.json.tmpl +25 -0
  466. package/dist/templates/minimal/pnpm-workspace.yaml +8 -0
  467. package/dist/templates/minimal/tools/.gitkeep +0 -0
  468. package/dist/templates/minimal/tsconfig.json.tmpl +27 -0
  469. package/dist/templates/minimal/vitest.config.ts.tmpl +14 -0
  470. package/dist/templates/python/AGENTS.md +30 -0
  471. package/dist/templates/python/README.md.tmpl +56 -0
  472. package/dist/templates/python/agents/echo_agent.py.tmpl +23 -0
  473. package/dist/templates/python/flows/echo_flow.py.tmpl +17 -0
  474. package/dist/templates/python/gitignore +9 -0
  475. package/dist/templates/python/guardrails/response_not_empty.py.tmpl +27 -0
  476. package/dist/templates/python/pyproject.toml.tmpl +42 -0
  477. package/dist/templates/python/tests/test_tools.py.tmpl +22 -0
  478. package/dist/templates/python/tools/echo.py.tmpl +27 -0
  479. package/dist/templates/python/tools/greet.py.tmpl +20 -0
  480. package/dist/templates/sample/.nvmrc +1 -0
  481. package/dist/templates/sample/AGENTS.md +23 -0
  482. package/dist/templates/sample/README.md.tmpl +85 -0
  483. package/dist/templates/sample/agents/echo-agent/index.ts.tmpl +34 -0
  484. package/dist/templates/sample/flows/echo-flow/index.ts.tmpl +59 -0
  485. package/dist/templates/sample/gitignore +8 -0
  486. package/dist/templates/sample/guardrails/response-not-empty/index.ts.tmpl +58 -0
  487. package/dist/templates/sample/kindgi.config.ts.tmpl +41 -0
  488. package/dist/templates/sample/package.json.tmpl +25 -0
  489. package/dist/templates/sample/pnpm-workspace.yaml +8 -0
  490. package/dist/templates/sample/tools/echo/index.test.ts.tmpl +31 -0
  491. package/dist/templates/sample/tools/echo/index.ts.tmpl +37 -0
  492. package/dist/templates/sample/tools/fetch-httpbin/index.ts.tmpl +60 -0
  493. package/dist/templates/sample/tools/greet/index.ts.tmpl +35 -0
  494. package/dist/templates/sample/tsconfig.json.tmpl +27 -0
  495. package/dist/templates/sample/vitest.config.ts.tmpl +14 -0
  496. package/dist/terminal-input.d.ts +17 -0
  497. package/dist/terminal-input.d.ts.map +1 -0
  498. package/dist/terminal-input.js +88 -0
  499. package/dist/terminal-input.js.map +1 -0
  500. package/dist/test/defaults.d.ts +3 -0
  501. package/dist/test/defaults.d.ts.map +1 -0
  502. package/dist/test/defaults.js +104 -0
  503. package/dist/test/defaults.js.map +1 -0
  504. package/dist/test/runners.d.ts +60 -0
  505. package/dist/test/runners.d.ts.map +1 -0
  506. package/dist/test/runners.js +4 -0
  507. package/dist/test/runners.js.map +1 -0
  508. package/dist/version-info.d.ts +9 -0
  509. package/dist/version-info.d.ts.map +1 -0
  510. package/dist/version-info.js +27 -0
  511. package/dist/version-info.js.map +1 -0
  512. package/dist/write-fully.d.ts +13 -0
  513. package/dist/write-fully.d.ts.map +1 -0
  514. package/dist/write-fully.js +17 -0
  515. package/dist/write-fully.js.map +1 -0
  516. package/package.json +63 -4
@@ -0,0 +1,298 @@
1
+ ---
2
+ name: kindgi-authoring-tools
3
+ description: >
4
+ Covers writing tools for a Kindgi pack with @kindgi/sdk:
5
+ defining tools via defineTool with either an imperative handler or a
6
+ declarative HTTP spec, choosing between Zod v4 and JSON Schema for
7
+ input/output, tool id naming conventions, handling the Result return
8
+ shape, and how tools reach agents via ToolRef versioning. Load this
9
+ whenever you are authoring or editing code inside a pack's tools/
10
+ directory, defining a tool, or wiring a tool onto an agent. Getting
11
+ started with a new pack is covered by kindgi-getting-started;
12
+ authoring agents is covered by kindgi-authoring-agents.
13
+ type: core
14
+ library: "@kindgi/sdk"
15
+ version: "0.4.3"
16
+ sdk_version: "0.1.1"
17
+ pack_languages: [node]
18
+ sources:
19
+ - packages/tools/src/types.ts
20
+ - packages/tools/src/define.ts
21
+ ---
22
+
23
+ # Authoring Kindgi tools
24
+
25
+ > **Running `kindgi`:** the CLI is a devDependency of the project (`@kindgi/cli`),
26
+ > not a global command. Run it through the project's package manager —
27
+ > `pnpm exec kindgi …`, `npx --no kindgi …` (npm), `yarn kindgi …` or
28
+ > `bun run kindgi …`. Commands below are written `kindgi …` for brevity.
29
+
30
+ A **tool** is a callable unit of work an agent invokes: a function with a
31
+ typed input, a typed output, and either author-written logic or a
32
+ declarative spec the framework synthesizes into logic. Tools live at
33
+ `tools/<name>/index.ts` inside a pack; the pack indexer discovers
34
+ them by folder convention.
35
+
36
+ Before writing a tool, establish what it should DO — its purpose,
37
+ inputs, outputs, and whether it extends an existing tool or is fresh.
38
+ Requests like "add a tool" without a purpose are conversation openers,
39
+ not tickets. Ask what it should compute or fetch, what shape the caller
40
+ provides, what shape it returns. The pack's existing tools are examples
41
+ that prove the framework runs end-to-end — they are NOT the shape you
42
+ imitate unless the user explicitly asks for that.
43
+
44
+ ## Two authoring modes
45
+
46
+ Both use `defineTool` from `@kindgi/sdk/define`. Pick based on where the
47
+ logic lives:
48
+
49
+ - **`handler`** — imperative TS function. Use when the tool computes,
50
+ transforms, calls a proprietary library, or has non-trivial logic
51
+ that lives in the pack's source.
52
+ - **`spec`** — declarative descriptor. Use when the tool is a
53
+ straightforward remote call. `spec: {kind: 'http', ...}` is the kind
54
+ that ships with the framework; other kinds can be added with
55
+ `registerToolSpecSynthesizer`. The framework synthesizes the handler
56
+ from the spec — URL substitution, timeout, abort propagation, secret
57
+ resolution and the status check are handled for you (there is no
58
+ automatic retry).
59
+
60
+ `handler` and `spec` are MUTUALLY EXCLUSIVE. Setting both (or neither)
61
+ makes `defineTool` return an `invalid-tool-definition` error.
62
+
63
+ ## Imperative handler
64
+
65
+ ```ts
66
+ // tools/verify-citation/index.ts
67
+ import { defineTool } from '@kindgi/sdk/define';
68
+ import type { ToolId } from '@kindgi/sdk/types';
69
+ import { z } from 'zod';
70
+
71
+ const Input = z.object({
72
+ citation: z.string().min(1),
73
+ jurisdiction: z.enum(['US', 'UK', 'EU']),
74
+ });
75
+
76
+ const Output = z.object({
77
+ found: z.boolean(),
78
+ canonicalCite: z.string().optional(),
79
+ });
80
+
81
+ const defined = defineTool({
82
+ id: 'acme.verify-citation' as ToolId,
83
+ description:
84
+ 'Verify a legal citation against the jurisdictional citator. Returns whether the citation resolves and the canonical form.',
85
+ version: '0.1.0',
86
+ input: Input,
87
+ output: Output,
88
+ effects: [],
89
+ mutating: false,
90
+ handler: async (input, ctx) => {
91
+ // ctx.tenantId, ctx.abortSignal, ctx.secrets (what needsSpec declares) available
92
+ // Return type MUST match Output schema (validated at invoke time)
93
+ return { found: true, canonicalCite: '...' };
94
+ },
95
+ });
96
+
97
+ if (defined.kind === 'err') {
98
+ throw new Error(`acme.verify-citation failed to compile: ${defined.error.message}`);
99
+ }
100
+
101
+ export default defined.value;
102
+ ```
103
+
104
+ A handler must return a Promise; one with nothing to `await` can return `Promise.resolve({ … })` instead of being `async`, which keeps lint rules like `require-await` quiet.
105
+
106
+ ### What the handler receives
107
+
108
+ The handler gets the **parsed** input, typed `z.infer` of `input` (Zod's output type):
109
+
110
+ - **Defaults.** A `.default()` field is optional to the caller, the model included. The tool's advertised schema doesn't list it as required, and the handler always gets a value.
111
+ - **Transforms and refinements.** `.transform()` results and `.refine()` checks apply before the handler runs. A failed refinement comes back as `input-validation-failed`.
112
+ - **Extra keys.** A plain `z.object` accepts them and strips them. Use `z.strictObject` to reject them.
113
+ - **JSON-Schema-authored tools** get each property's `default` filled in the same way.
114
+
115
+ The output side is the reverse: the advertised output schema requires every field, defaulted ones included. Return them all.
116
+
117
+ ### Configuration and secrets
118
+
119
+ A secret that belongs to the tenant — an API key a customer gives you — is declared, and read from `ctx.secrets`:
120
+
121
+ ```ts
122
+ const defined = defineTool({
123
+ // …id, description, version, input, output, effects…
124
+ needsSpec: { secrets: { CITATOR_KEY: { type: 'string', minLength: 20 } } },
125
+ handler: async (input, ctx) => {
126
+ const key = ctx.secrets?.CITATOR_KEY;
127
+ // …
128
+ },
129
+ });
130
+ ```
131
+
132
+ The runtime resolves every declared secret on every call, for the call's tenant, in its env (`KINDGI_ENV`; in `kindgi dev`, `local`: the pack's `.env` and `.env.local`). It checks each value against its schema, and fails the call, naming the secret, when one is missing or doesn't match. Every declared secret is required, so in a runtime call `ctx.secrets` holds them all; it's optional in the type because a unit test builds its own context and passes `secrets: { CITATOR_KEY: '…' }`.
133
+
134
+ Everything else comes from the process environment: `process.env.CITATOR_URL`. The pack service runs with the pack's env files in `kindgi dev`, and with the container's environment in an image. Declare the names your code reads in `kindgi.config.ts`, `env: { required: ['CITATOR_URL'], optional: [...] }`: a deployment injects exactly those, a pack service missing a required one isn't ready and says which, and `kindgi dev` warns about it. Values per environment go in `environments.<name>.env`, secrets only as references.
135
+
136
+ ## Declarative HTTP spec
137
+
138
+ ```ts
139
+ // tools/fetch-order/index.ts
140
+ import { defineTool } from '@kindgi/sdk/define';
141
+ import type { ToolId } from '@kindgi/sdk/types';
142
+ import { z } from 'zod';
143
+
144
+ const defined = defineTool({
145
+ id: 'shop.fetch-order' as ToolId,
146
+ description: 'Fetch an order by id from the storefront API.',
147
+ version: '0.1.0',
148
+ input: z.object({ orderId: z.string() }),
149
+ output: z.object({ id: z.string(), status: z.string(), total: z.number() }),
150
+ effects: [],
151
+ mutating: false,
152
+ spec: {
153
+ kind: 'http',
154
+ method: 'GET',
155
+ urlTemplate: 'https://api.shop.example/orders/{orderId}',
156
+ // Every {placeholder} MUST be a key on the input schema
157
+ authorization: {
158
+ kind: 'bearer',
159
+ secretRef: { envName: 'production', name: 'shop-api-token' },
160
+ },
161
+ successStatus: { min: 200, max: 299 },
162
+ },
163
+ });
164
+
165
+ if (defined.kind === 'err') throw new Error(defined.error.message);
166
+ export default defined.value;
167
+ ```
168
+
169
+ ## Read-only tools: `mutating`
170
+
171
+ `mutating: false` declares that the tool changes nothing outside Kindgi; it only reads. Leaving `mutating` out counts as mutating, the same as `true`. It decides two things, in both authoring modes:
172
+
173
+ - **Dry runs.** `kindgi runs start --dry-run` runs a tool only if it's `mutating: false` and its `effects` declare no `writes`, `deletes`, `spawns-run`, `emits-event` or `external-side-effect`. The first other tool stops the run with `dry-run-effectful-tool`.
174
+ - **Approval gates.** When an agent turns tool gates on (`conversationPolicy.hitl.tools`) and sets neither an override for the tool nor a `default`, a `mutating: false` tool runs straight through, and any other tool asks for approval on its first use.
175
+
176
+ So declare `mutating: false` on every tool that only reads, and never on one that writes.
177
+
178
+ ## Tool id convention
179
+
180
+ `<pack-id>.<tool-name>` — kebab-case, dot-namespaced. The `<pack-id>`
181
+ prefix scopes the tool to its pack; `<tool-name>` names the operation.
182
+ Enforced by `defineTool` at author time. Examples:
183
+ `acme.verify-citation`, `shop.fetch-order`, `demo.echo`.
184
+
185
+ ## Iterating on a tool
186
+
187
+ Edit the source file (`tools/<tool>/index.ts`), save. The next
188
+ `kindgi runs start` sees the change — new input/output schema, new
189
+ description, new handler behavior. No version bump, no restart, no
190
+ re-registration ceremony. Source is truth in dev.
191
+
192
+ The `version` field is a **semver contract for humans** — it declares
193
+ what callers can rely on. Bump it because the *contract with
194
+ downstream callers* changed (removed a field, tightened a type,
195
+ narrowed enum values), not because you saved the file. If you're
196
+ iterating in dev and the shape isn't finalized, leave `version`
197
+ alone.
198
+
199
+ **When version matters:** `kindgi deploy` publishes to a durable
200
+ production registry that enforces the immutable `(id, version)`
201
+ contract — a re-publish of the same version with different bytes
202
+ gets rejected. That's when semver discipline kicks in. The deploy
203
+ tooling surfaces the check; you don't have to think about it while
204
+ authoring.
205
+
206
+ **Downstream callers still pin ranges.** An agent's `tools: [{id,
207
+ version: '^0.1.0'}]` picks the highest active version matching the
208
+ range at run start. Compatible tool updates (patch, minor) reach the
209
+ agent without editing agent source; breaking updates (major) require
210
+ the agent-author to opt in.
211
+
212
+ ## Wiring the tool onto an agent
213
+
214
+ Agents reference tools via `ToolRef[]`, NOT `string[]`. Each entry is
215
+ `{id, version}` where `version` is an npm-style semver **range**:
216
+
217
+ ```ts
218
+ // agents/brief-writer/index.ts
219
+ tools: [
220
+ { id: 'acme.verify-citation' as ToolId, version: '^0.1.0' },
221
+ { id: 'acme.fetch-precedent' as ToolId, version: '~0.2.0' },
222
+ ],
223
+ ```
224
+
225
+ The resolver picks the highest active version matching the range at
226
+ run start via `semver.maxSatisfying`. No implicit `:latest`.
227
+
228
+ ## Common mistakes
229
+
230
+ 1. **Copying another tool's shape without user intent.** The pack may
231
+ ship `tools/echo/` as a starter example. Copying its skeleton to
232
+ make `tools/lookup/` produces plausible-looking code that solves
233
+ the wrong problem. Ask the user what the new tool should DO first.
234
+
235
+ 2. **Passing bare strings to `agent.tools`.** `tools: ['acme.verify-citation']`
236
+ doesn't type-check (`tools` is `ToolRef[]`), and `defineAgent`
237
+ returns `invalid-agent` for a bare string that slips through. Use
238
+ `[{id: 'acme.verify-citation', version: '^0.1.0'}]`.
239
+
240
+ 3. **Forgetting the `Result` unwrap.** `defineTool` returns
241
+ `Result<DefinedTool, ToolError>` — a bad schema doesn't throw at import
242
+ time unless you check `defined.kind === 'err'`. Always unwrap at
243
+ module load so a broken pack fails LOUDLY, not on first invocation.
244
+
245
+ 4. **`handler` and `spec` together.** Mutually exclusive.
246
+ `defineTool` returns `invalid-tool-definition` with both set.
247
+
248
+ 5. **`{placeholder}` in `urlTemplate` without a matching input key.**
249
+ HTTP tools substitute placeholders from the input at invoke time.
250
+ Missing keys throw a clear error at invoke time — check both sides
251
+ line up.
252
+
253
+ 6. **An HTTP tool's `secretRef` in the wrong env.** The runtime
254
+ resolves `authorization.secretRef` itself, on every call, in the env
255
+ the ref names: `{ envName: 'local', … }` is the pack's `.env` /
256
+ `.env.local` under `kindgi dev`, while `'production'` reads
257
+ `.env.production`. A secret it can't find fails the call with
258
+ `secret-unavailable`, naming it. Only a harness of your own that
259
+ calls `invokeTool` directly has to pass `ctx.resolveSecret`.
260
+ 7. **Reading a secret from `process.env` in a tool that runs for many
261
+ tenants.** The pack service's environment is one for all of them.
262
+ Declare the secret in `needsSpec.secrets` and read `ctx.secrets`.
263
+
264
+ 8. **Bumping `version` on every dev save.** Old habit from
265
+ frameworks that stored manifests immutably by `(id, version)`.
266
+ Kindgi's dev mode reads tool manifests directly from source —
267
+ version doesn't gate iteration. Bump it when the *contract*
268
+ changes (breaking schema shape, semantic behavior), not when you
269
+ save. See the "Iterating on a tool" section above.
270
+
271
+ 9. **A package a tool imports, listed only in `devDependencies`.** The
272
+ deployed pack installs the app's production dependencies only, so the
273
+ import works under `kindgi dev` and fails in the image. When a tool
274
+ imports a new package (an ORM client such as `@prisma/client`, an API
275
+ SDK), check that the app's `package.json` lists it under
276
+ `dependencies`. Build-time tools (the `prisma` CLI, `typescript`) stay
277
+ in `devDependencies`. `kindgi dev` warns as soon as a tool imports one
278
+ ("⚠ The pack imports @prisma/client (in kindgi/tools/…), which
279
+ package.json lists only in devDependencies: …"), and `kindgi build`
280
+ refuses the pack until it moves.
281
+
282
+ ## References
283
+
284
+ - Type surface: `hover any @kindgi/sdk/define export` in your editor
285
+ for full JSDoc — every field on `DefineToolSpec` / `ToolManifest`
286
+ documents purpose, when to set it, and gotchas.
287
+ - API reference: https://docs.kindgi.com/v0.1/reference/typescript/sdk/kindgi/sdk/define/ (every `define*` spec, field by field).
288
+ - Common patterns: check the `sample` template (`kindgi init
289
+ --template=sample`) for working examples of both authoring modes.
290
+
291
+ ## When the framework itself is the problem
292
+
293
+ If you diagnose that the bug lives in Kindgi/`@kindgi/sdk` itself (SDK
294
+ type drift, wire schema silently dropping a field, indexer allowlist
295
+ gap, misleading error, CLI friction) — not in the pack's own code —
296
+ load the `kindgi-framework-feedback` skill and file a structured report
297
+ with `kindgi feedback write`. That diagnostic is high-signal input the
298
+ maintainers can act on; don't let it disappear into the transcript.
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: kindgi-framework-feedback
3
+ description: >
4
+ Capture framework-level feedback about Kindgi/@kindgi/sdk when you
5
+ diagnose a problem that isn't in the pack's own code — SDK type
6
+ drift, API wire schema gaps, adapter regressions, CLI
7
+ friction, skill/code mismatches, misleading errors, UX cliffs.
8
+ Load whenever you have just diagnosed such a problem during pack
9
+ authoring. Also load when the pack author asks you to remove,
10
+ mark-fixed, or re-order entries in FEEDBACK.md — the file is a
11
+ simple markdown list you edit directly with the Edit tool. Distinct
12
+ from authoring skills (which help you build packs) and from
13
+ getting-started (which onboards new packs); this skill turns your
14
+ diagnostic output into durable input for framework improvement.
15
+ type: core
16
+ library: "@kindgi/sdk"
17
+ version: "0.4.0"
18
+ sdk_version: "0.1.1"
19
+ pack_languages: [node, python]
20
+ ---
21
+
22
+ # Capturing framework feedback
23
+
24
+ > **Running `kindgi`:** in a Node project the CLI is a devDependency
25
+ > (`@kindgi/cli`), not a global command. Run it through the project's
26
+ > package manager — `pnpm exec kindgi …`, `npx --no kindgi …` (npm),
27
+ > `yarn kindgi …` or `bun run kindgi …`. A Python pack (`[tool.kindgi]` in
28
+ > `pyproject.toml`) has no Node project: run the `kindgi` on `PATH`.
29
+ > Commands below are written `kindgi …` for brevity.
30
+
31
+ You just spent time diagnosing a Kindgi-framework issue. That diagnostic
32
+ is exactly the kind of report the framework maintainers need — file:line
33
+ pointers, exact reproducers, honest severity, what you expected vs. what
34
+ you observed. **This skill exists to make sure that value doesn't get
35
+ lost in the transcript.**
36
+
37
+ ## The mechanism is deliberately simple
38
+
39
+ One file: `FEEDBACK.md` at the pack root. Each entry is a markdown
40
+ section with two identifiers:
41
+
42
+ - **`id: YYYY-MM-DD.N`** — per-day counter, unique within this pack.
43
+ Used for local navigation and hand-editing ("remove 2026-09-25.3").
44
+ - **`hash: feedback-<8-hex>`** — deterministic hash of the
45
+ normalized title. Two packs (or two peers) filing the same issue
46
+ produce the same hash, so p2p sync and framework-side clustering
47
+ work without a central registry.
48
+
49
+ `kindgi feedback write` appends new entries with both stamps. To mark
50
+ an item fixed, add a `> **Fixed:** <note>` line right after its
51
+ header. To remove an item, delete the section (including the
52
+ trailing `---` separator). All of that is plain markdown editing —
53
+ no `kindgi feedback update`, no `kindgi feedback delete`, no
54
+ separate tracking database.
55
+
56
+ ## When to file
57
+
58
+ File an entry when you diagnose:
59
+
60
+ - **SDK type drift** — a skill or docs claim a field that the SDK's
61
+ `.d.ts` doesn't have (or vice versa).
62
+ - **Wire schema gaps** — the API silently drops a field you sent
63
+ (usually `additionalProperties: false` missing a property).
64
+ - **Adapter regressions** — behavior changed between rebuilds.
65
+ - **CLI friction** — command failures with unhelpful error messages,
66
+ missing verbs, stubs that pretend to work.
67
+ - **Skill/code mismatches** — the skill example doesn't work as
68
+ written.
69
+ - **Misleading errors** — the error message points at the wrong
70
+ thing.
71
+ - **UX cliffs** — the "obvious next step" fails and the recovery
72
+ isn't documented.
73
+
74
+ Do NOT file when:
75
+
76
+ - The bug is in the pack's own code (that's a normal debug loop).
77
+ - You haven't actually reproduced it — file with `--kind=question`
78
+ instead so it's flagged as unconfirmed.
79
+
80
+ ## How to file — the command
81
+
82
+ ```sh
83
+ kindgi feedback write \
84
+ --kind=bug \
85
+ --severity=high \
86
+ --title="preferredProvider silently dropped by wire schema" \
87
+ --authored-by=claude-code \
88
+ --body=@/tmp/report.md
89
+ ```
90
+
91
+ Body-input modes:
92
+
93
+ - `--body=@<file>` — reads the file at path.
94
+ - `--body="<literal text>"` — literal content inline. Useful for
95
+ short entries.
96
+ - `--body-stdin` — reads from stdin (`diagnose | kindgi feedback write ...`).
97
+ - `--interactive` (or omit all of the above) — opens `$EDITOR` with
98
+ a template.
99
+
100
+ The entry lands as a new `## <title>` section appended to
101
+ `FEEDBACK.md`, stamped with a fresh `id: YYYY-MM-DD.N`. The file is
102
+ created with a header if it doesn't yet exist.
103
+
104
+ ## Entry shape (what the CLI produces)
105
+
106
+ ```md
107
+ ## preferredProvider silently dropped by wire schema
108
+
109
+ - **id:** 2026-09-25.3
110
+ - **hash:** feedback-a3f2c1d0
111
+ - **kind:** bug
112
+ - **severity:** high
113
+ - **date:** 2026-09-25T14:32:07.104Z
114
+ - **sdk:** 0.1.2 · **cli:** 0.1.2 · **by:** claude-code
115
+
116
+ ### Summary
117
+ One-line: what the report is about.
118
+
119
+ ### Observed
120
+ What happened, with file:line pointers when possible.
121
+
122
+ ### Expected
123
+ What should have happened.
124
+
125
+ ### Reproducer
126
+ Exact commands, spec files, output.
127
+
128
+ ### Suggested fix
129
+ Optional; leave blank if you don't have one.
130
+
131
+ ---
132
+ ```
133
+
134
+ ## Editing FEEDBACK.md directly
135
+
136
+ Entries are referenced locally by their `id` (e.g. `2026-09-25.3`)
137
+ or by their title; across packs (or between peers) they are referenced
138
+ by their `hash` (e.g. `feedback-a3f2c1d0`). When the pack author says
139
+ something like:
140
+
141
+ - **"Remove 2026-09-25.3"** / **"Remove the preferredProvider
142
+ entry"** → find the section whose `id` matches (or whose `##
143
+ <title>` matches), delete from the header down through the next
144
+ `---` separator (inclusive). Do NOT renumber other entries — ids
145
+ are historical identifiers, gaps are expected.
146
+ - **"Mark 2026-09-25.3 fixed"** / **"That preferredProvider one
147
+ landed in commit abc123"** → find the section, insert a line
148
+ right after the header:
149
+ ```md
150
+ > **Fixed:** landed in commit abc123 (2026-09-25). <optional context>
151
+ ```
152
+ - **"Note that 2026-09-25.5 is a duplicate of feedback-a3f2c1d0"** /
153
+ **"Merge these — same hash"** → find the section, insert:
154
+ ```md
155
+ > **Duplicate of:** feedback-a3f2c1d0 (<optional context>)
156
+ ```
157
+ Prefer the `hash` when the duplicate lives in another pack (peer /
158
+ framework side); prefer the `id` when it's a local duplicate.
159
+ - **Restructuring / re-ordering** → use the Edit tool to move the
160
+ section; keep the header + `- **id:** …` + `- **hash:** …` lines
161
+ intact so both identifiers stay stable.
162
+
163
+ Do NOT try to re-file the same item through `kindgi feedback write`
164
+ — that would create a new entry with a new id (though the hash
165
+ would match, which is exactly the p2p-dedup signal). Always edit
166
+ directly for maintenance operations within one pack.
167
+
168
+ ## Fields to fill precisely
169
+
170
+ - **`kind`** — honest classification.
171
+ - `bug` — the framework did the wrong thing (crashed, silently
172
+ dropped a field, contradicted its own docs).
173
+ - `friction` — the framework did the "right" thing but the UX cost
174
+ more time than the task warranted.
175
+ - `question` — you don't understand something and the docs don't
176
+ answer it.
177
+ - `design` — you observed something that works as designed but the
178
+ design might be wrong.
179
+
180
+ - **`severity`** — honest impact.
181
+ - `blocker` — nothing useful can happen until this is fixed.
182
+ - `high` — a common workflow is broken; users will hit this.
183
+ - `medium` — real friction, but there's a documented workaround.
184
+ - `low` — cosmetic, tiny annoyance, or affects one obscure path.
185
+
186
+ - **`authored_by`** — `claude-code` when the diagnostic came entirely
187
+ from an AI coding assistant; `human` when the pack author wrote
188
+ it; `mixed` when it's a combination.
189
+
190
+ ## Common mistakes
191
+
192
+ 1. **File-path-only entries** ("bug in router.ts").
193
+ Without a reproducer + expected behavior, the maintainer has to
194
+ reverse-engineer your session. File:line is necessary but not
195
+ sufficient.
196
+ 2. **Skipping "Suggested fix" when you have one.** If you diagnosed
197
+ the root cause, name it. "Add `preferredProvider` to `AgentSchema`
198
+ in `packages/api/src/openapi/schemas.ts:667`" is worth a dozen
199
+ back-and-forth clarifications.
200
+ 3. **Bundling multiple bugs into one entry.** Run `kindgi feedback
201
+ write` once per bug. Each gets its own number, its own fix
202
+ status, its own removal path.
203
+ 4. **Sensitive state in reproducers.** Reproducer sections sometimes
204
+ contain API keys, tenant IDs, secrets — review before committing.
205
+ 5. **Filing "the way I'd design it" as a bug.** Design disagreements
206
+ are `--kind=design`, not `--kind=bug`. Both are welcome; the
207
+ classification helps prioritization.
208
+
209
+ ## References
210
+
211
+ - `FEEDBACK.md` at the pack root — the running list itself.