outfitter 0.2.7 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/README.md +34 -7
  2. package/dist/actions/add.d.ts +18 -0
  3. package/dist/actions/add.js +14 -0
  4. package/dist/actions/check-automation.d.ts +20 -0
  5. package/dist/actions/check-automation.js +27 -0
  6. package/dist/actions/check.d.ts +34 -0
  7. package/dist/actions/check.js +19 -0
  8. package/dist/actions/demo.d.ts +12 -0
  9. package/dist/actions/demo.js +11 -0
  10. package/dist/actions/docs-output-mode.d.ts +4 -0
  11. package/dist/actions/docs-output-mode.js +8 -0
  12. package/dist/actions/docs.d.ts +25 -0
  13. package/dist/actions/docs.js +31 -0
  14. package/dist/actions/doctor.d.ts +10 -0
  15. package/dist/actions/doctor.js +15 -0
  16. package/dist/actions/init.d.ts +28 -0
  17. package/dist/actions/init.js +31 -0
  18. package/dist/actions/scaffold.d.ts +19 -0
  19. package/dist/actions/scaffold.js +21 -0
  20. package/dist/actions/shared.d.ts +61 -0
  21. package/dist/actions/shared.js +30 -0
  22. package/dist/actions/upgrade.d.ts +17 -0
  23. package/dist/actions/upgrade.js +21 -0
  24. package/dist/actions.d.ts +1 -1
  25. package/dist/actions.js +53 -22
  26. package/dist/cli.js +66 -4
  27. package/dist/commands/add.js +3 -3
  28. package/dist/commands/check-action-ceremony.d.ts +55 -0
  29. package/dist/commands/check-action-ceremony.js +15 -0
  30. package/dist/commands/check-docs-sentinel.d.ts +27 -0
  31. package/dist/commands/check-docs-sentinel.js +18 -0
  32. package/dist/commands/check-orchestrator.d.ts +2 -0
  33. package/dist/commands/check-orchestrator.js +17 -0
  34. package/dist/commands/check-preset-versions.d.ts +20 -0
  35. package/dist/commands/check-preset-versions.js +15 -0
  36. package/dist/commands/check-publish-guardrails.d.ts +38 -0
  37. package/dist/commands/check-publish-guardrails.js +19 -0
  38. package/dist/commands/check-surface-map-format.d.ts +29 -0
  39. package/dist/commands/check-surface-map-format.js +19 -0
  40. package/dist/commands/check-surface-map.d.ts +20 -0
  41. package/dist/commands/check-surface-map.js +15 -0
  42. package/dist/commands/check-tsdoc.d.ts +2 -21
  43. package/dist/commands/check-tsdoc.js +3 -2
  44. package/dist/commands/check.d.ts +2 -0
  45. package/dist/commands/check.js +3 -3
  46. package/dist/commands/demo.js +1 -1
  47. package/dist/commands/docs-api.d.ts +4 -0
  48. package/dist/commands/docs-api.js +13 -0
  49. package/dist/commands/docs-export.d.ts +4 -0
  50. package/dist/commands/docs-export.js +12 -0
  51. package/dist/commands/docs-list.d.ts +3 -0
  52. package/dist/commands/docs-list.js +13 -0
  53. package/dist/commands/docs-module-loader.d.ts +2 -2
  54. package/dist/commands/docs-module-loader.js +2 -2
  55. package/dist/commands/docs-search.d.ts +3 -0
  56. package/dist/commands/docs-search.js +13 -0
  57. package/dist/commands/docs-show.d.ts +3 -0
  58. package/dist/commands/docs-show.js +13 -0
  59. package/dist/commands/docs-types.d.ts +21 -0
  60. package/dist/commands/doctor.js +4 -12
  61. package/dist/commands/init-execution.d.ts +8 -0
  62. package/dist/commands/init-execution.js +11 -0
  63. package/dist/commands/init-option-resolution.d.ts +5 -0
  64. package/dist/commands/init-option-resolution.js +14 -0
  65. package/dist/commands/init-output.d.ts +9 -0
  66. package/dist/commands/init-output.js +11 -0
  67. package/dist/commands/init.d.ts +7 -5
  68. package/dist/commands/init.js +10 -18
  69. package/dist/commands/jq-utils.d.ts +17 -0
  70. package/dist/commands/jq-utils.js +8 -0
  71. package/dist/commands/repo.d.ts +3 -3
  72. package/dist/commands/repo.js +8 -4
  73. package/dist/commands/scaffold-output.d.ts +4 -0
  74. package/dist/commands/scaffold-output.js +11 -0
  75. package/dist/commands/scaffold-planning.d.ts +65 -0
  76. package/dist/commands/scaffold-planning.js +20 -0
  77. package/dist/commands/scaffold.d.ts +3 -3
  78. package/dist/commands/scaffold.js +10 -16
  79. package/dist/commands/shared-deps.d.ts +5 -4
  80. package/dist/commands/shared-deps.js +3 -3
  81. package/dist/commands/upgrade-apply.d.ts +14 -0
  82. package/dist/commands/upgrade-apply.js +8 -0
  83. package/dist/commands/upgrade-codemods.d.ts +5 -0
  84. package/dist/commands/upgrade-codemods.js +4 -5
  85. package/dist/commands/upgrade-latest-version.d.ts +8 -0
  86. package/dist/commands/upgrade-latest-version.js +8 -0
  87. package/dist/commands/upgrade-migration-docs.d.ts +3 -0
  88. package/dist/commands/upgrade-migration-docs.js +15 -0
  89. package/dist/commands/upgrade-migration-frontmatter.d.ts +2 -0
  90. package/dist/commands/upgrade-migration-frontmatter.js +10 -0
  91. package/dist/commands/upgrade-migration-guides.d.ts +5 -0
  92. package/dist/commands/upgrade-migration-guides.js +10 -0
  93. package/dist/commands/upgrade-output.d.ts +5 -0
  94. package/dist/commands/upgrade-output.js +11 -0
  95. package/dist/commands/upgrade-planner.js +1 -1
  96. package/dist/commands/upgrade-report.d.ts +5 -0
  97. package/dist/commands/upgrade-report.js +8 -0
  98. package/dist/commands/upgrade-workspace.js +2 -2
  99. package/dist/commands/upgrade.d.ts +4 -220
  100. package/dist/commands/upgrade.js +21 -9
  101. package/dist/create/index.d.ts +3 -3
  102. package/dist/create/index.js +2 -30
  103. package/dist/create/planner.d.ts +2 -2
  104. package/dist/create/planner.js +80 -17
  105. package/dist/create/presets.d.ts +2 -2
  106. package/dist/create/presets.js +2 -2
  107. package/dist/create/types.d.ts +1 -1
  108. package/dist/engine/blocks.d.ts +2 -2
  109. package/dist/engine/blocks.js +5 -5
  110. package/dist/engine/collector.d.ts +1 -1
  111. package/dist/engine/collector.js +1 -1
  112. package/dist/engine/config.d.ts +2 -2
  113. package/dist/engine/config.js +4 -4
  114. package/dist/engine/dependency-versions.d.ts +13 -8
  115. package/dist/engine/dependency-versions.js +4 -4
  116. package/dist/engine/executor.d.ts +2 -2
  117. package/dist/engine/executor.js +149 -12
  118. package/dist/engine/index.d.ts +9 -7
  119. package/dist/engine/index.js +17 -31
  120. package/dist/engine/names.js +1 -1
  121. package/dist/engine/post-scaffold.d.ts +2 -2
  122. package/dist/engine/post-scaffold.js +1 -1
  123. package/dist/engine/preset.d.ts +3 -0
  124. package/dist/engine/preset.js +17 -0
  125. package/dist/engine/render-plan.d.ts +1 -1
  126. package/dist/engine/render-plan.js +1 -1
  127. package/dist/engine/template.d.ts +3 -2
  128. package/dist/engine/template.js +24 -7
  129. package/dist/engine/types.d.ts +1 -1
  130. package/dist/engine/types.js +1 -1
  131. package/dist/engine/workspace.d.ts +2 -2
  132. package/dist/engine/workspace.js +1 -1
  133. package/dist/index.d.ts +17 -398
  134. package/dist/index.js +7 -164
  135. package/dist/manifest.js +2 -2
  136. package/dist/output-mode.js +1 -1
  137. package/dist/shared/{outfitter-6fgk6adm.d.ts → outfitter-1tfa9hke.d.ts} +16 -1
  138. package/dist/shared/{outfitter-6bkqjk86.d.ts → outfitter-2nx0k4b3.d.ts} +1 -0
  139. package/dist/shared/outfitter-2ysjerp6.d.ts +44 -0
  140. package/dist/shared/outfitter-2z61gp5w.js +29 -0
  141. package/dist/shared/outfitter-34vg353f.d.ts +82 -0
  142. package/dist/shared/{outfitter-5yjr404v.d.ts → outfitter-3dq4r10s.d.ts} +5 -3
  143. package/dist/shared/outfitter-3rcrvva8.js +103 -0
  144. package/dist/shared/{outfitter-79vfxt6y.js → outfitter-3tx3adgj.js} +12 -3
  145. package/dist/shared/{outfitter-63gse8fv.js → outfitter-507ra35w.js} +33 -64
  146. package/dist/shared/outfitter-56jq0rh2.d.ts +42 -0
  147. package/dist/shared/{outfitter-r419zfgs.d.ts → outfitter-58rn1sj1.d.ts} +1 -1
  148. package/dist/shared/outfitter-5d9wbzhh.d.ts +19 -0
  149. package/dist/shared/outfitter-5j7zee11.d.ts +180 -0
  150. package/dist/shared/{outfitter-s7jetkge.d.ts → outfitter-5r6q2749.d.ts} +1 -1
  151. package/dist/shared/outfitter-5vx1bp7h.js +41 -0
  152. package/dist/shared/outfitter-6ddf91vh.js +190 -0
  153. package/dist/shared/{outfitter-mt7d1ek2.js → outfitter-6mpkh3zn.js} +39 -305
  154. package/dist/shared/{outfitter-ybbazsxq.d.ts → outfitter-6rtcemk7.d.ts} +8 -4
  155. package/dist/shared/{outfitter-9x1brcmq.js → outfitter-6t7xeyg1.js} +13 -38
  156. package/dist/shared/outfitter-738z4c37.js +262 -0
  157. package/dist/shared/{outfitter-yvksv5qb.js → outfitter-76k25svs.js} +4 -4
  158. package/dist/shared/outfitter-7n7vsz95.js +101 -0
  159. package/dist/shared/outfitter-7q9fnbwa.js +60 -0
  160. package/dist/shared/outfitter-84chvazx.js +480 -0
  161. package/dist/shared/outfitter-8ggmja91.js +301 -0
  162. package/dist/shared/{outfitter-qakwgrrh.d.ts → outfitter-8kmak0wc.d.ts} +1 -1
  163. package/dist/shared/outfitter-940h0x7b.js +71 -0
  164. package/dist/shared/{outfitter-fn20r49x.d.ts → outfitter-954y4mzx.d.ts} +1 -1
  165. package/dist/shared/outfitter-b9cpnr7e.js +110 -0
  166. package/dist/shared/outfitter-c7sbs7es.js +92 -0
  167. package/dist/shared/outfitter-cyhzstz0.js +93 -0
  168. package/dist/shared/{outfitter-n9g1zk4x.d.ts → outfitter-cyvr4r8d.d.ts} +3 -2
  169. package/dist/shared/outfitter-d0kqashd.d.ts +98 -0
  170. package/dist/shared/outfitter-dx4hn4ta.js +325 -0
  171. package/dist/shared/{outfitter-bn9c8p2e.js → outfitter-e84cr97g.js} +37 -9
  172. package/dist/shared/outfitter-ec83h4v2.js +17 -0
  173. package/dist/shared/{outfitter-vh4xgb93.js → outfitter-ekb6t1zz.js} +4 -4
  174. package/dist/shared/outfitter-ex8gn945.js +51 -0
  175. package/dist/shared/outfitter-f3a70135.js +75 -0
  176. package/dist/shared/outfitter-fbvfd5zq.d.ts +13 -0
  177. package/dist/shared/outfitter-fj2v5ffz.js +165 -0
  178. package/dist/shared/outfitter-fx1m251y.js +122 -0
  179. package/dist/shared/outfitter-fxry5n58.js +254 -0
  180. package/dist/shared/outfitter-g3hvjshg.js +1 -0
  181. package/dist/shared/{outfitter-f9znfhkn.d.ts → outfitter-gdc7b7de.d.ts} +1 -1
  182. package/dist/shared/outfitter-gyayfx5r.js +156 -0
  183. package/dist/shared/outfitter-h0wmtxw8.d.ts +23 -0
  184. package/dist/shared/{outfitter-z5sx06qe.d.ts → outfitter-hcexcvxe.d.ts} +1 -1
  185. package/dist/shared/outfitter-hf5bj2gq.js +117 -0
  186. package/dist/shared/{outfitter-e9rrfekb.d.ts → outfitter-htx4asgr.d.ts} +4 -3
  187. package/dist/shared/outfitter-jkct38dh.js +53 -0
  188. package/dist/shared/outfitter-jwxggvz4.js +42 -0
  189. package/dist/shared/outfitter-k6zyvg2n.js +306 -0
  190. package/dist/shared/outfitter-mstr60zz.js +215 -0
  191. package/dist/shared/outfitter-n0ed012k.js +101 -0
  192. package/dist/shared/outfitter-n13pqaft.js +19 -0
  193. package/dist/shared/outfitter-nxvjxrmw.d.ts +48 -0
  194. package/dist/shared/outfitter-p2wn07b7.js +160 -0
  195. package/dist/shared/{outfitter-5y646xzk.js → outfitter-px5sv5gn.js} +29 -9
  196. package/dist/shared/outfitter-q1g58t85.js +8 -0
  197. package/dist/shared/{outfitter-pj9vp00r.js → outfitter-qsd5638j.js} +26 -249
  198. package/dist/shared/outfitter-qsrx7m4w.js +72 -0
  199. package/dist/shared/outfitter-r2awqszh.d.ts +52 -0
  200. package/dist/shared/outfitter-rdpw2sbp.d.ts +77 -0
  201. package/dist/shared/outfitter-rp89dafm.js +109 -0
  202. package/dist/shared/outfitter-s1c0whzj.js +121 -0
  203. package/dist/shared/{outfitter-w1j80j1r.js → outfitter-ssrtakh3.js} +21 -5
  204. package/dist/shared/outfitter-ssynegbs.js +167 -0
  205. package/dist/shared/{outfitter-zwyvewr1.js → outfitter-svts4wk2.js} +1 -1
  206. package/dist/shared/outfitter-tavatb5p.js +166 -0
  207. package/dist/shared/outfitter-tqznjgbm.js +44 -0
  208. package/dist/shared/{outfitter-yraebrmw.d.ts → outfitter-wcrp7d7m.d.ts} +1 -1
  209. package/dist/shared/outfitter-wkt0a0ra.js +67 -0
  210. package/dist/shared/{outfitter-ha89qf8q.js → outfitter-wrcqq29p.js} +4 -4
  211. package/dist/shared/outfitter-wyg1tpp5.d.ts +43 -0
  212. package/dist/shared/outfitter-x0vpb7tj.js +126 -0
  213. package/dist/shared/{outfitter-m44n0qzw.js → outfitter-x39awx8g.js} +11 -26
  214. package/dist/shared/outfitter-x4cc5xsq.js +168 -0
  215. package/dist/shared/outfitter-x8w5sjnd.d.ts +39 -0
  216. package/dist/shared/{outfitter-amc4jbs1.d.ts → outfitter-xr6g13nz.d.ts} +2 -2
  217. package/dist/shared/outfitter-xs94pkfe.js +106 -0
  218. package/dist/shared/outfitter-y37yfehn.d.ts +37 -0
  219. package/dist/shared/{outfitter-fhnjpjwc.d.ts → outfitter-y6ee0k45.d.ts} +1 -1
  220. package/dist/shared/{outfitter-j833sxws.js → outfitter-ydw7x6bh.js} +1 -1
  221. package/dist/shared/outfitter-yhb23pjc.js +89 -0
  222. package/dist/shared/{outfitter-mtbpabf3.js → outfitter-ypcvwg1s.js} +1 -1
  223. package/dist/shared/outfitter-znbqe5zy.d.ts +45 -0
  224. package/dist/shared/{outfitter-dpj9erew.d.ts → outfitter-zng6w0t9.d.ts} +1 -1
  225. package/dist/targets/index.d.ts +2 -2
  226. package/dist/targets/index.js +2 -3
  227. package/dist/targets/registry.d.ts +2 -2
  228. package/dist/targets/registry.js +207 -14
  229. package/dist/targets/types.d.ts +1 -1
  230. package/package.json +203 -40
  231. package/dist/shared/chunk-x6644tk8.js +0 -6491
  232. package/dist/shared/outfitter-20f6a2n4.js +0 -35
  233. package/dist/shared/outfitter-5akzvppx.js +0 -125
  234. package/dist/shared/outfitter-7ch26yq8.js +0 -885
  235. package/dist/shared/outfitter-ehp18x1n.js +0 -1
  236. package/dist/shared/outfitter-h3q6ae6d.d.ts +0 -48
  237. package/dist/shared/outfitter-hvsaxgcp.js +0 -1
  238. package/dist/shared/outfitter-p71qb0f0.js +0 -82
  239. package/dist/shared/outfitter-pcj9gg2g.js +0 -909
  240. package/dist/shared/outfitter-xe5mzgdc.js +0 -208
  241. package/dist/shared/outfitter-z0we32cp.d.ts +0 -63
  242. package/template-versions.json +0 -22
  243. package/templates/.gitkeep +0 -0
  244. package/templates/basic/.gitignore.template +0 -30
  245. package/templates/basic/.lefthook.yml.template +0 -26
  246. package/templates/basic/package.json.template +0 -46
  247. package/templates/basic/src/index.ts.template +0 -26
  248. package/templates/basic/tsconfig.json.template +0 -34
  249. package/templates/cli/.gitignore.template +0 -4
  250. package/templates/cli/.lefthook.yml.template +0 -26
  251. package/templates/cli/README.md.template +0 -35
  252. package/templates/cli/biome.json.template +0 -4
  253. package/templates/cli/package.json.template +0 -53
  254. package/templates/cli/src/cli.ts.template +0 -8
  255. package/templates/cli/src/index.ts.template +0 -7
  256. package/templates/cli/src/program.ts.template +0 -31
  257. package/templates/cli/tsconfig.json.template +0 -34
  258. package/templates/daemon/.gitignore.template +0 -4
  259. package/templates/daemon/.lefthook.yml.template +0 -26
  260. package/templates/daemon/README.md.template +0 -67
  261. package/templates/daemon/biome.json.template +0 -4
  262. package/templates/daemon/package.json.template +0 -56
  263. package/templates/daemon/src/cli.ts.template +0 -96
  264. package/templates/daemon/src/daemon-main.ts.template +0 -79
  265. package/templates/daemon/src/daemon.ts.template +0 -11
  266. package/templates/daemon/src/index.ts.template +0 -7
  267. package/templates/daemon/tsconfig.json.template +0 -23
  268. package/templates/full-stack/.gitignore.template +0 -30
  269. package/templates/full-stack/README.md.template +0 -30
  270. package/templates/full-stack/apps/cli/package.json.template +0 -39
  271. package/templates/full-stack/apps/cli/src/cli.ts.template +0 -24
  272. package/templates/full-stack/apps/cli/src/index.test.ts.template +0 -18
  273. package/templates/full-stack/apps/cli/src/index.ts.template +0 -5
  274. package/templates/full-stack/apps/cli/tsconfig.json.template +0 -37
  275. package/templates/full-stack/apps/mcp/package.json.template +0 -40
  276. package/templates/full-stack/apps/mcp/src/index.test.ts.template +0 -18
  277. package/templates/full-stack/apps/mcp/src/index.ts.template +0 -6
  278. package/templates/full-stack/apps/mcp/src/mcp.ts.template +0 -22
  279. package/templates/full-stack/apps/mcp/src/server.ts.template +0 -10
  280. package/templates/full-stack/apps/mcp/tsconfig.json.template +0 -37
  281. package/templates/full-stack/package.json.template +0 -16
  282. package/templates/full-stack/packages/core/package.json.template +0 -36
  283. package/templates/full-stack/packages/core/src/handlers.ts.template +0 -31
  284. package/templates/full-stack/packages/core/src/index.test.ts.template +0 -30
  285. package/templates/full-stack/packages/core/src/index.ts.template +0 -8
  286. package/templates/full-stack/packages/core/src/types.ts.template +0 -13
  287. package/templates/full-stack/packages/core/tsconfig.json.template +0 -34
  288. package/templates/library/.gitignore.template +0 -30
  289. package/templates/library/README.md.template +0 -29
  290. package/templates/library/bunup.config.ts.template +0 -20
  291. package/templates/library/package.json.template +0 -55
  292. package/templates/library/src/handlers.ts.template +0 -31
  293. package/templates/library/src/index.test.ts.template +0 -35
  294. package/templates/library/src/index.ts.template +0 -8
  295. package/templates/library/src/types.ts.template +0 -13
  296. package/templates/library/tsconfig.json.template +0 -34
  297. package/templates/mcp/.gitignore.template +0 -4
  298. package/templates/mcp/.lefthook.yml.template +0 -26
  299. package/templates/mcp/README.md.template +0 -54
  300. package/templates/mcp/biome.json.template +0 -4
  301. package/templates/mcp/package.json.template +0 -53
  302. package/templates/mcp/src/index.ts.template +0 -7
  303. package/templates/mcp/src/mcp.ts.template +0 -33
  304. package/templates/mcp/src/server.ts.template +0 -8
  305. package/templates/mcp/tsconfig.json.template +0 -23
  306. package/templates/minimal/.gitignore.template +0 -30
  307. package/templates/minimal/.lefthook.yml.template +0 -26
  308. package/templates/minimal/package.json.template +0 -53
  309. package/templates/minimal/src/index.ts.template +0 -26
  310. package/templates/minimal/tsconfig.json.template +0 -34
  311. /package/dist/{shared/outfitter-344t1r38.js → commands/docs-types.js} +0 -0
  312. /package/dist/shared/{outfitter-mdt37hqm.js → outfitter-eepj7rf7.js} +0 -0
@@ -1,37 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "compilerOptions": {
4
- "target": "ESNext",
5
- "module": "ESNext",
6
- "moduleResolution": "bundler",
7
- "lib": ["ESNext"],
8
- "types": ["@types/bun"],
9
- "baseUrl": ".",
10
- "paths": {
11
- "{{packageName}}-core": ["../../packages/core/src/index.ts"]
12
- },
13
-
14
- "strict": true,
15
- "noImplicitAny": true,
16
- "strictNullChecks": true,
17
- "noUncheckedIndexedAccess": true,
18
- "exactOptionalPropertyTypes": true,
19
- "noPropertyAccessFromIndexSignature": true,
20
- "noImplicitReturns": true,
21
- "noFallthroughCasesInSwitch": true,
22
-
23
- "declaration": true,
24
- "declarationMap": true,
25
- "sourceMap": true,
26
- "outDir": "./dist",
27
-
28
- "esModuleInterop": true,
29
- "forceConsistentCasingInFileNames": true,
30
- "isolatedModules": true,
31
- "verbatimModuleSyntax": true,
32
- "skipLibCheck": true,
33
- "resolveJsonModule": true
34
- },
35
- "include": ["src/**/*"],
36
- "exclude": ["node_modules", "dist"]
37
- }
@@ -1,16 +0,0 @@
1
- {
2
- "name": "{{packageName}}",
3
- "private": true,
4
- "version": "{{version}}",
5
- "type": "module",
6
- "workspaces": ["apps/*", "packages/*"],
7
- "scripts": {
8
- "build": "bun run --filter '*' build",
9
- "dev": "bun run --filter '*' dev",
10
- "test": "bun run --filter '*' test",
11
- "typecheck": "bun run --filter '*' typecheck",
12
- "lint": "bun run --filter '*' lint",
13
- "lint:fix": "bun run --filter '*' lint:fix",
14
- "format": "bun run --filter '*' format"
15
- }
16
- }
@@ -1,36 +0,0 @@
1
- {
2
- "name": "{{packageName}}-core",
3
- "version": "{{version}}",
4
- "description": "Shared handlers for {{projectName}}",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
- }
13
- },
14
- "scripts": {
15
- "build": "bun build src/index.ts --outdir dist --format=esm && tsc --emitDeclarationOnly --outDir dist",
16
- "dev": "bun --watch src/index.ts",
17
- "test": "bun test",
18
- "test:watch": "bun test --watch",
19
- "typecheck": "tsc --noEmit",
20
- "lint": "biome check .",
21
- "lint:fix": "biome check . --write",
22
- "format": "biome format --write .",
23
- "clean:artifacts": "rm -rf dist .turbo"
24
- },
25
- "dependencies": {
26
- "@outfitter/contracts": "workspace:*",
27
- "@outfitter/logging": "workspace:*",
28
- "zod": "^4.3.5"
29
- },
30
- "devDependencies": {
31
- "@biomejs/biome": "^2.4.4",
32
- "@types/bun": "^1.3.9",
33
- "typescript": "^5.9.3"
34
- },
35
- "license": "MIT"
36
- }
@@ -1,31 +0,0 @@
1
- import { Result, ValidationError, type Handler } from "@outfitter/contracts";
2
- import { createLogger } from "@outfitter/logging";
3
- import { greetingInputSchema, type Greeting } from "./types.js";
4
-
5
- const logger = createLogger({ name: "{{projectName}}-core" });
6
-
7
- export const createGreeting: Handler<unknown, Greeting, ValidationError> = async (
8
- input,
9
- ctx
10
- ) => {
11
- const parsed = greetingInputSchema.safeParse(input);
12
- if (!parsed.success) {
13
- return Result.err(
14
- new ValidationError({
15
- message: "Invalid greeting input",
16
- field: "name",
17
- })
18
- );
19
- }
20
-
21
- const suffix = parsed.data.excited ? "!" : ".";
22
- const greeting: Greeting = {
23
- message: `Hello, ${parsed.data.name}${suffix}`,
24
- issuedAt: new Date().toISOString(),
25
- };
26
-
27
- logger.info(`Created greeting for ${parsed.data.name}`, {
28
- requestId: ctx.requestId,
29
- });
30
- return Result.ok(greeting);
31
- };
@@ -1,30 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { createContext } from "@outfitter/contracts";
3
- import { createGreeting } from "./handlers.js";
4
-
5
- describe("createGreeting", () => {
6
- test("returns greeting for valid input", async () => {
7
- const result = await createGreeting(
8
- { name: "Outfitter", excited: true },
9
- createContext({ cwd: process.cwd(), env: process.env })
10
- );
11
-
12
- expect(result.isOk()).toBe(true);
13
- if (result.isErr()) {
14
- return;
15
- }
16
- expect(result.value.message).toBe("Hello, Outfitter!");
17
- });
18
-
19
- test("returns validation error for invalid input", async () => {
20
- const result = await createGreeting(
21
- { name: "" },
22
- createContext({ cwd: process.cwd(), env: process.env })
23
- );
24
-
25
- expect(result.isErr()).toBe(true);
26
- if (result.isErr()) {
27
- expect(result.error.name).toBe("ValidationError");
28
- }
29
- });
30
- });
@@ -1,8 +0,0 @@
1
- /**
2
- * {{projectName}} core - shared domain handlers.
3
- *
4
- * @packageDocumentation
5
- */
6
-
7
- export * from "./types.js";
8
- export * from "./handlers.js";
@@ -1,13 +0,0 @@
1
- import { z } from "zod";
2
-
3
- export const greetingInputSchema = z.object({
4
- name: z.string().min(1, "name is required"),
5
- excited: z.boolean().default(false),
6
- });
7
-
8
- export type GreetingInput = z.infer<typeof greetingInputSchema>;
9
-
10
- export interface Greeting {
11
- readonly message: string;
12
- readonly issuedAt: string;
13
- }
@@ -1,34 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "compilerOptions": {
4
- "target": "ESNext",
5
- "module": "ESNext",
6
- "moduleResolution": "bundler",
7
- "lib": ["ESNext"],
8
- "types": ["@types/bun"],
9
-
10
- "strict": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "noUncheckedIndexedAccess": true,
14
- "exactOptionalPropertyTypes": true,
15
- "noPropertyAccessFromIndexSignature": true,
16
- "noImplicitReturns": true,
17
- "noFallthroughCasesInSwitch": true,
18
-
19
- "declaration": true,
20
- "declarationMap": true,
21
- "sourceMap": true,
22
- "outDir": "./dist",
23
- "rootDir": "./src",
24
-
25
- "esModuleInterop": true,
26
- "forceConsistentCasingInFileNames": true,
27
- "isolatedModules": true,
28
- "verbatimModuleSyntax": true,
29
- "skipLibCheck": true,
30
- "resolveJsonModule": true
31
- },
32
- "include": ["src/**/*"],
33
- "exclude": ["node_modules", "dist"]
34
- }
@@ -1,30 +0,0 @@
1
- # Dependencies
2
- node_modules/
3
-
4
- # Build output
5
- dist/
6
-
7
- # IDE
8
- .idea/
9
- .vscode/
10
- *.swp
11
- *.swo
12
-
13
- # OS
14
- .DS_Store
15
- Thumbs.db
16
-
17
- # Logs
18
- *.log
19
- npm-debug.log*
20
-
21
- # Environment
22
- .env
23
- .env.local
24
- .env.*.local
25
-
26
- # Test coverage
27
- coverage/
28
-
29
- # Bun
30
- bun.lockb
@@ -1,29 +0,0 @@
1
- # {{projectName}}
2
-
3
- {{description}}
4
-
5
- ## Installation
6
-
7
- ```bash
8
- bun add {{packageName}}
9
- ```
10
-
11
- ## Development
12
-
13
- ```bash
14
- # Install dependencies
15
- bun install
16
-
17
- # Build CJS + ESM artifacts
18
- bun run build
19
-
20
- # Typecheck
21
- bun run typecheck
22
-
23
- # Run tests
24
- bun run test
25
- ```
26
-
27
- ## License
28
-
29
- MIT
@@ -1,20 +0,0 @@
1
- import { defineWorkspace } from "bunup";
2
-
3
- export default defineWorkspace(
4
- [
5
- {
6
- name: "{{packageName}}",
7
- root: ".",
8
- },
9
- ],
10
- {
11
- entry: ["src/**/*.ts", "!src/**/*.test.ts", "!src/**/__tests__/**"],
12
- sourceBase: "./src",
13
- format: ["esm", "cjs"],
14
- dts: true,
15
- exports: true,
16
- splitting: true,
17
- clean: true,
18
- target: "bun",
19
- }
20
- );
@@ -1,55 +0,0 @@
1
- {
2
- "name": "{{packageName}}",
3
- "version": "{{version}}",
4
- "description": "{{description}}",
5
- "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "files": [
10
- "dist"
11
- ],
12
- "sideEffects": false,
13
- "exports": {
14
- ".": {
15
- "types": "./dist/index.d.ts",
16
- "import": "./dist/index.js",
17
- "require": "./dist/index.cjs"
18
- }
19
- },
20
- "scripts": {
21
- "build": "bunup",
22
- "dev": "bun --watch src/index.ts",
23
- "test": "bun test",
24
- "test:watch": "bun test --watch",
25
- "typecheck": "tsc --noEmit",
26
- "lint": "biome check .",
27
- "lint:fix": "biome check . --write",
28
- "format": "biome format --write .",
29
- "clean:artifacts": "rm -rf dist .turbo",
30
- "clean": "rm -rf dist"
31
- },
32
- "dependencies": {
33
- "@outfitter/contracts": "workspace:*",
34
- "@outfitter/logging": "workspace:*",
35
- "zod": "^4.3.5"
36
- },
37
- "devDependencies": {
38
- "@biomejs/biome": "^2.4.4",
39
- "@types/bun": "^1.3.9",
40
- "bunup": "^0.16.29",
41
- "typescript": "^5.9.3"
42
- },
43
- "outfitter": {
44
- "template": {
45
- "kind": "library",
46
- "placement": "packages",
47
- "surfaces": []
48
- }
49
- },
50
- "engines": {
51
- "bun": ">=1.3.9"
52
- },
53
- "keywords": [],
54
- "license": "MIT"
55
- }
@@ -1,31 +0,0 @@
1
- import { Result, ValidationError, type Handler } from "@outfitter/contracts";
2
- import { createLogger } from "@outfitter/logging";
3
- import { greetingInputSchema, type Greeting } from "./types.js";
4
-
5
- const logger = createLogger({ name: "{{projectName}}" });
6
-
7
- export const createGreeting: Handler<unknown, Greeting, ValidationError> = async (
8
- input,
9
- ctx
10
- ) => {
11
- const parsed = greetingInputSchema.safeParse(input);
12
- if (!parsed.success) {
13
- return Result.err(
14
- new ValidationError({
15
- message: "Invalid greeting input",
16
- field: "name",
17
- })
18
- );
19
- }
20
-
21
- const suffix = parsed.data.excited ? "!" : ".";
22
- const greeting: Greeting = {
23
- message: `Hello, ${parsed.data.name}${suffix}`,
24
- issuedAt: new Date().toISOString(),
25
- };
26
-
27
- logger.info(`Created greeting for ${parsed.data.name}`, {
28
- requestId: ctx.requestId,
29
- });
30
- return Result.ok(greeting);
31
- };
@@ -1,35 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { createContext } from "@outfitter/contracts";
3
- import { createGreeting } from "./handlers.js";
4
-
5
- describe("createGreeting", () => {
6
- test("returns greeting for valid input", async () => {
7
- const ctx = createContext({
8
- cwd: process.cwd(),
9
- env: process.env,
10
- });
11
- const result = await createGreeting(
12
- { name: "Outfitter", excited: true },
13
- ctx
14
- );
15
-
16
- expect(result.isOk()).toBe(true);
17
- if (result.isErr()) {
18
- return;
19
- }
20
- expect(result.value.message).toBe("Hello, Outfitter!");
21
- });
22
-
23
- test("returns validation error for invalid input", async () => {
24
- const ctx = createContext({
25
- cwd: process.cwd(),
26
- env: process.env,
27
- });
28
- const result = await createGreeting({ name: "" }, ctx);
29
-
30
- expect(result.isErr()).toBe(true);
31
- if (result.isErr()) {
32
- expect(result.error.name).toBe("ValidationError");
33
- }
34
- });
35
- });
@@ -1,8 +0,0 @@
1
- /**
2
- * {{projectName}} - Public API exports.
3
- *
4
- * @packageDocumentation
5
- */
6
-
7
- export * from "./types.js";
8
- export * from "./handlers.js";
@@ -1,13 +0,0 @@
1
- import { z } from "zod";
2
-
3
- export const greetingInputSchema = z.object({
4
- name: z.string().min(1, "name is required"),
5
- excited: z.boolean().default(false),
6
- });
7
-
8
- export type GreetingInput = z.infer<typeof greetingInputSchema>;
9
-
10
- export interface Greeting {
11
- readonly message: string;
12
- readonly issuedAt: string;
13
- }
@@ -1,34 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/tsconfig",
3
- "compilerOptions": {
4
- "target": "ESNext",
5
- "module": "ESNext",
6
- "moduleResolution": "bundler",
7
- "lib": ["ESNext"],
8
- "types": ["@types/bun"],
9
-
10
- "strict": true,
11
- "noImplicitAny": true,
12
- "strictNullChecks": true,
13
- "noUncheckedIndexedAccess": true,
14
- "exactOptionalPropertyTypes": true,
15
- "noPropertyAccessFromIndexSignature": true,
16
- "noImplicitReturns": true,
17
- "noFallthroughCasesInSwitch": true,
18
-
19
- "declaration": true,
20
- "declarationMap": true,
21
- "sourceMap": true,
22
- "outDir": "./dist",
23
- "rootDir": "./src",
24
-
25
- "esModuleInterop": true,
26
- "forceConsistentCasingInFileNames": true,
27
- "isolatedModules": true,
28
- "verbatimModuleSyntax": true,
29
- "skipLibCheck": true,
30
- "resolveJsonModule": true
31
- },
32
- "include": ["src/**/*"],
33
- "exclude": ["node_modules", "dist"]
34
- }
@@ -1,4 +0,0 @@
1
- node_modules/
2
- dist/
3
- *.log
4
- .DS_Store
@@ -1,26 +0,0 @@
1
- # Lefthook configuration
2
- # https://github.com/evilmartians/lefthook
3
-
4
- pre-commit:
5
- parallel: true
6
- commands:
7
- format:
8
- glob: "*.{js,ts,tsx,json,md}"
9
- run: bunx biome format --no-errors-on-unmatched {staged_files}
10
- stage_fixed: true
11
-
12
- lint:
13
- glob: "*.{js,ts,tsx}"
14
- run: bunx biome lint --no-errors-on-unmatched {staged_files}
15
-
16
- typecheck:
17
- glob: "*.{ts,tsx}"
18
- run: bun run typecheck
19
-
20
- pre-push:
21
- parallel: false
22
- commands:
23
- verify:
24
- # TDD-aware strict verification with RED-phase branch carveout
25
- # (*-tests, */tests, *_tests).
26
- run: bunx @outfitter/tooling pre-push
@@ -1,54 +0,0 @@
1
- # {{projectName}}
2
-
3
- {{description}}
4
-
5
- MCP (Model Context Protocol) server for integration with AI assistants.
6
-
7
- ## Installation
8
-
9
- ```bash
10
- bun add {{packageName}}
11
- ```
12
-
13
- ## Usage with Claude Desktop
14
-
15
- Add to your Claude Desktop config:
16
-
17
- ```json
18
- {
19
- "mcpServers": {
20
- "{{binName}}": {
21
- "command": "{{binName}}"
22
- }
23
- }
24
- }
25
- ```
26
-
27
- ## Available Tools
28
-
29
- ### hello
30
-
31
- Say hello to someone.
32
-
33
- **Parameters:**
34
- - `name` (string, optional): Name to greet. Default: "World"
35
-
36
- ## Development
37
-
38
- ```bash
39
- # Install dependencies
40
- bun install
41
-
42
- # Run in development
43
- bun run dev
44
-
45
- # Build
46
- bun run build
47
-
48
- # Run tests
49
- bun run test
50
- ```
51
-
52
- ## License
53
-
54
- MIT
@@ -1,4 +0,0 @@
1
- {
2
- "$schema": "https://biomejs.dev/schemas/2.4.4/schema.json",
3
- "extends": ["ultracite/config/biome/core/biome.jsonc"]
4
- }
@@ -1,53 +0,0 @@
1
- {
2
- "name": "{{packageName}}",
3
- "version": "{{version}}",
4
- "description": "{{description}}",
5
- "type": "module",
6
- "bin": {
7
- "{{binName}}": "./dist/server.js"
8
- },
9
- "main": "./dist/index.js",
10
- "types": "./dist/index.d.ts",
11
- "exports": {
12
- ".": {
13
- "types": "./dist/index.d.ts",
14
- "import": "./dist/index.js"
15
- }
16
- },
17
- "scripts": {
18
- "build": "bun build src/server.ts --outdir dist --target bun && bun build src/index.ts --outdir dist --target bun --sourcemap",
19
- "dev": "bun --watch src/server.ts",
20
- "typecheck": "tsc --noEmit",
21
- "check": "ultracite check",
22
- "verify:ci": "bun run typecheck && bun run check && bun run build && bun run test",
23
- "test": "bun test",
24
- "test:watch": "bun test --watch",
25
- "lint": "biome check .",
26
- "lint:fix": "biome check . --write",
27
- "format": "biome format --write .",
28
- "clean:artifacts": "rm -rf dist .turbo"
29
- },
30
- "dependencies": {
31
- "@modelcontextprotocol/sdk": "^1.12.1",
32
- "@outfitter/contracts": "workspace:*",
33
- "@outfitter/types": "workspace:*",
34
- "@outfitter/mcp": "workspace:*",
35
- "@outfitter/logging": "workspace:*"
36
- },
37
- "devDependencies": {
38
- "@biomejs/biome": "^2.4.4",
39
- "@outfitter/tooling": "workspace:*",
40
- "@types/bun": "^1.3.9",
41
- "lefthook": "^2.1.1",
42
- "typescript": "^5.9.3",
43
- "ultracite": "^7.2.3"
44
- },
45
- "outfitter": {
46
- "template": {
47
- "kind": "runnable",
48
- "placement": "apps",
49
- "surfaces": ["mcp"]
50
- }
51
- },
52
- "license": "MIT"
53
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * {{projectName}} - Public API exports
3
- *
4
- * @packageDocumentation
5
- */
6
-
7
- export { server, startServer } from "./mcp.js";
@@ -1,33 +0,0 @@
1
- /**
2
- * {{projectName}} - MCP server definition
3
- */
4
-
5
- import { Result } from "@outfitter/contracts";
6
- import { createMcpServer, defineTool, connectStdio } from "@outfitter/mcp";
7
- import { z } from "zod";
8
-
9
- const server = createMcpServer({
10
- name: "{{binName}}",
11
- version: "{{version}}",
12
- });
13
-
14
- const helloTool = defineTool({
15
- name: "hello",
16
- description: "Say hello to someone",
17
- inputSchema: z.object({
18
- name: z.string().default("World").describe("Name to greet"),
19
- }),
20
- handler: async (input, ctx) => {
21
- ctx.logger.info(`Greeting ${input.name}`);
22
- return Result.ok({ greeting: `Hello, ${input.name}!` });
23
- },
24
- });
25
-
26
- server.registerTool(helloTool);
27
-
28
- export { server };
29
-
30
- /** Start the MCP server over stdio transport. */
31
- export async function startServer(): Promise<void> {
32
- await connectStdio(server);
33
- }
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * {{projectName}} MCP server entry point
4
- */
5
-
6
- import { startServer } from "./mcp.js";
7
-
8
- startServer().catch(console.error);