@mcp-rune/create 0.11.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 (242) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +184 -0
  3. package/bin/rune.js +7 -0
  4. package/dist/commands/add-model.d.ts +5 -0
  5. package/dist/commands/add-model.d.ts.map +1 -0
  6. package/dist/commands/add-model.js +131 -0
  7. package/dist/commands/add-model.js.map +1 -0
  8. package/dist/commands/db-up.d.ts +2 -0
  9. package/dist/commands/db-up.d.ts.map +1 -0
  10. package/dist/commands/db-up.js +29 -0
  11. package/dist/commands/db-up.js.map +1 -0
  12. package/dist/commands/doctor/env-checks.d.ts +4 -0
  13. package/dist/commands/doctor/env-checks.d.ts.map +1 -0
  14. package/dist/commands/doctor/env-checks.js +88 -0
  15. package/dist/commands/doctor/env-checks.js.map +1 -0
  16. package/dist/commands/doctor/index.d.ts +21 -0
  17. package/dist/commands/doctor/index.d.ts.map +1 -0
  18. package/dist/commands/doctor/index.js +44 -0
  19. package/dist/commands/doctor/index.js.map +1 -0
  20. package/dist/commands/doctor/project-validation.d.ts +5 -0
  21. package/dist/commands/doctor/project-validation.d.ts.map +1 -0
  22. package/dist/commands/doctor/project-validation.js +166 -0
  23. package/dist/commands/doctor/project-validation.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +7 -0
  25. package/dist/commands/doctor.d.ts.map +1 -0
  26. package/dist/commands/doctor.js +306 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/inspect.d.ts +16 -0
  29. package/dist/commands/inspect.d.ts.map +1 -0
  30. package/dist/commands/inspect.js +66 -0
  31. package/dist/commands/inspect.js.map +1 -0
  32. package/dist/commands/new/actions/apps.d.ts +5 -0
  33. package/dist/commands/new/actions/apps.d.ts.map +1 -0
  34. package/dist/commands/new/actions/apps.js +51 -0
  35. package/dist/commands/new/actions/apps.js.map +1 -0
  36. package/dist/commands/new/actions/architecture.d.ts +5 -0
  37. package/dist/commands/new/actions/architecture.d.ts.map +1 -0
  38. package/dist/commands/new/actions/architecture.js +45 -0
  39. package/dist/commands/new/actions/architecture.js.map +1 -0
  40. package/dist/commands/new/actions/auth.d.ts +5 -0
  41. package/dist/commands/new/actions/auth.d.ts.map +1 -0
  42. package/dist/commands/new/actions/auth.js +30 -0
  43. package/dist/commands/new/actions/auth.js.map +1 -0
  44. package/dist/commands/new/actions/database.d.ts +5 -0
  45. package/dist/commands/new/actions/database.d.ts.map +1 -0
  46. package/dist/commands/new/actions/database.js +60 -0
  47. package/dist/commands/new/actions/database.js.map +1 -0
  48. package/dist/commands/new/actions/fetch-template.d.ts +5 -0
  49. package/dist/commands/new/actions/fetch-template.d.ts.map +1 -0
  50. package/dist/commands/new/actions/fetch-template.js +22 -0
  51. package/dist/commands/new/actions/fetch-template.js.map +1 -0
  52. package/dist/commands/new/actions/intro.d.ts +5 -0
  53. package/dist/commands/new/actions/intro.d.ts.map +1 -0
  54. package/dist/commands/new/actions/intro.js +7 -0
  55. package/dist/commands/new/actions/intro.js.map +1 -0
  56. package/dist/commands/new/actions/layers.d.ts +5 -0
  57. package/dist/commands/new/actions/layers.d.ts.map +1 -0
  58. package/dist/commands/new/actions/layers.js +38 -0
  59. package/dist/commands/new/actions/layers.js.map +1 -0
  60. package/dist/commands/new/actions/models.d.ts +5 -0
  61. package/dist/commands/new/actions/models.d.ts.map +1 -0
  62. package/dist/commands/new/actions/models.js +18 -0
  63. package/dist/commands/new/actions/models.js.map +1 -0
  64. package/dist/commands/new/actions/next-steps.d.ts +5 -0
  65. package/dist/commands/new/actions/next-steps.d.ts.map +1 -0
  66. package/dist/commands/new/actions/next-steps.js +38 -0
  67. package/dist/commands/new/actions/next-steps.js.map +1 -0
  68. package/dist/commands/new/actions/observability.d.ts +5 -0
  69. package/dist/commands/new/actions/observability.d.ts.map +1 -0
  70. package/dist/commands/new/actions/observability.js +45 -0
  71. package/dist/commands/new/actions/observability.js.map +1 -0
  72. package/dist/commands/new/actions/post-scaffold.d.ts +5 -0
  73. package/dist/commands/new/actions/post-scaffold.d.ts.map +1 -0
  74. package/dist/commands/new/actions/post-scaffold.js +81 -0
  75. package/dist/commands/new/actions/post-scaffold.js.map +1 -0
  76. package/dist/commands/new/actions/preset.d.ts +5 -0
  77. package/dist/commands/new/actions/preset.d.ts.map +1 -0
  78. package/dist/commands/new/actions/preset.js +23 -0
  79. package/dist/commands/new/actions/preset.js.map +1 -0
  80. package/dist/commands/new/actions/prompts.d.ts +5 -0
  81. package/dist/commands/new/actions/prompts.d.ts.map +1 -0
  82. package/dist/commands/new/actions/prompts.js +33 -0
  83. package/dist/commands/new/actions/prompts.js.map +1 -0
  84. package/dist/commands/new/actions/render.d.ts +5 -0
  85. package/dist/commands/new/actions/render.d.ts.map +1 -0
  86. package/dist/commands/new/actions/render.js +35 -0
  87. package/dist/commands/new/actions/render.js.map +1 -0
  88. package/dist/commands/new/actions/scaffold-header.d.ts +5 -0
  89. package/dist/commands/new/actions/scaffold-header.d.ts.map +1 -0
  90. package/dist/commands/new/actions/scaffold-header.js +19 -0
  91. package/dist/commands/new/actions/scaffold-header.js.map +1 -0
  92. package/dist/commands/new/actions/scaffold-mode.d.ts +5 -0
  93. package/dist/commands/new/actions/scaffold-mode.d.ts.map +1 -0
  94. package/dist/commands/new/actions/scaffold-mode.js +49 -0
  95. package/dist/commands/new/actions/scaffold-mode.js.map +1 -0
  96. package/dist/commands/new/actions/summary.d.ts +5 -0
  97. package/dist/commands/new/actions/summary.d.ts.map +1 -0
  98. package/dist/commands/new/actions/summary.js +71 -0
  99. package/dist/commands/new/actions/summary.js.map +1 -0
  100. package/dist/commands/new/actions/toggles.d.ts +5 -0
  101. package/dist/commands/new/actions/toggles.d.ts.map +1 -0
  102. package/dist/commands/new/actions/toggles.js +25 -0
  103. package/dist/commands/new/actions/toggles.js.map +1 -0
  104. package/dist/commands/new/actions/tools.d.ts +5 -0
  105. package/dist/commands/new/actions/tools.d.ts.map +1 -0
  106. package/dist/commands/new/actions/tools.js +36 -0
  107. package/dist/commands/new/actions/tools.js.map +1 -0
  108. package/dist/commands/new/actions/transport.d.ts +5 -0
  109. package/dist/commands/new/actions/transport.d.ts.map +1 -0
  110. package/dist/commands/new/actions/transport.js +24 -0
  111. package/dist/commands/new/actions/transport.js.map +1 -0
  112. package/dist/commands/new/context.d.ts +76 -0
  113. package/dist/commands/new/context.d.ts.map +1 -0
  114. package/dist/commands/new/context.js +134 -0
  115. package/dist/commands/new/context.js.map +1 -0
  116. package/dist/commands/new/index.d.ts +5 -0
  117. package/dist/commands/new/index.d.ts.map +1 -0
  118. package/dist/commands/new/index.js +18 -0
  119. package/dist/commands/new/index.js.map +1 -0
  120. package/dist/commands/new/pipeline.d.ts +12 -0
  121. package/dist/commands/new/pipeline.d.ts.map +1 -0
  122. package/dist/commands/new/pipeline.js +67 -0
  123. package/dist/commands/new/pipeline.js.map +1 -0
  124. package/dist/commands/new/presets.d.ts +40 -0
  125. package/dist/commands/new/presets.d.ts.map +1 -0
  126. package/dist/commands/new/presets.js +91 -0
  127. package/dist/commands/new/presets.js.map +1 -0
  128. package/dist/commands/new.d.ts +24 -0
  129. package/dist/commands/new.d.ts.map +1 -0
  130. package/dist/commands/new.js +162 -0
  131. package/dist/commands/new.js.map +1 -0
  132. package/dist/commands/post-scaffold.d.ts +6 -0
  133. package/dist/commands/post-scaffold.d.ts.map +1 -0
  134. package/dist/commands/post-scaffold.js +24 -0
  135. package/dist/commands/post-scaffold.js.map +1 -0
  136. package/dist/core/cancel.d.ts +3 -0
  137. package/dist/core/cancel.d.ts.map +1 -0
  138. package/dist/core/cancel.js +17 -0
  139. package/dist/core/cancel.js.map +1 -0
  140. package/dist/core/color.d.ts +12 -0
  141. package/dist/core/color.d.ts.map +1 -0
  142. package/dist/core/color.js +14 -0
  143. package/dist/core/color.js.map +1 -0
  144. package/dist/core/db-setup.d.ts +13 -0
  145. package/dist/core/db-setup.d.ts.map +1 -0
  146. package/dist/core/db-setup.js +63 -0
  147. package/dist/core/db-setup.js.map +1 -0
  148. package/dist/core/fs-utils.d.ts +4 -0
  149. package/dist/core/fs-utils.d.ts.map +1 -0
  150. package/dist/core/fs-utils.js +31 -0
  151. package/dist/core/fs-utils.js.map +1 -0
  152. package/dist/core/output.d.ts +19 -0
  153. package/dist/core/output.d.ts.map +1 -0
  154. package/dist/core/output.js +42 -0
  155. package/dist/core/output.js.map +1 -0
  156. package/dist/core/prompts.d.ts +2 -0
  157. package/dist/core/prompts.d.ts.map +1 -0
  158. package/dist/core/prompts.js +2 -0
  159. package/dist/core/prompts.js.map +1 -0
  160. package/dist/core/tasks.d.ts +11 -0
  161. package/dist/core/tasks.d.ts.map +1 -0
  162. package/dist/core/tasks.js +28 -0
  163. package/dist/core/tasks.js.map +1 -0
  164. package/dist/data/mascot.d.ts +13 -0
  165. package/dist/data/mascot.d.ts.map +1 -0
  166. package/dist/data/mascot.js +80 -0
  167. package/dist/data/mascot.js.map +1 -0
  168. package/dist/index.d.ts +4 -0
  169. package/dist/index.d.ts.map +1 -0
  170. package/dist/index.js +68 -0
  171. package/dist/index.js.map +1 -0
  172. package/dist/render/copy-tree.d.ts +5 -0
  173. package/dist/render/copy-tree.d.ts.map +1 -0
  174. package/dist/render/copy-tree.js +146 -0
  175. package/dist/render/copy-tree.js.map +1 -0
  176. package/dist/render/fetch-template.d.ts +9 -0
  177. package/dist/render/fetch-template.d.ts.map +1 -0
  178. package/dist/render/fetch-template.js +113 -0
  179. package/dist/render/fetch-template.js.map +1 -0
  180. package/dist/render/model-gen.d.ts +3 -0
  181. package/dist/render/model-gen.d.ts.map +1 -0
  182. package/dist/render/model-gen.js +23 -0
  183. package/dist/render/model-gen.js.map +1 -0
  184. package/dist/templates/registry.d.ts +14 -0
  185. package/dist/templates/registry.d.ts.map +1 -0
  186. package/dist/templates/registry.js +34 -0
  187. package/dist/templates/registry.js.map +1 -0
  188. package/dist/types.d.ts +87 -0
  189. package/dist/types.d.ts.map +1 -0
  190. package/dist/types.js +8 -0
  191. package/dist/types.js.map +1 -0
  192. package/dist/wizard/presets.d.ts +35 -0
  193. package/dist/wizard/presets.d.ts.map +1 -0
  194. package/dist/wizard/presets.js +67 -0
  195. package/dist/wizard/presets.js.map +1 -0
  196. package/dist/wizard/questions.d.ts +11 -0
  197. package/dist/wizard/questions.d.ts.map +1 -0
  198. package/dist/wizard/questions.js +154 -0
  199. package/dist/wizard/questions.js.map +1 -0
  200. package/package.json +52 -0
  201. package/templates/advanced/.env.example.ejs +82 -0
  202. package/templates/advanced/.node-version +1 -0
  203. package/templates/advanced/README.md.ejs +76 -0
  204. package/templates/advanced/__only_if_hasHttp__/src/servers/remote.ts.ejs +36 -0
  205. package/templates/advanced/__only_if_hasStdio__/src/servers/local.ts +30 -0
  206. package/templates/advanced/__only_if_useAxiosClient__/src/api/axios-client.ts +74 -0
  207. package/templates/advanced/__only_if_useCustomApiClient__/src/api/custom-client.ts +48 -0
  208. package/templates/advanced/__only_if_useCustomConvention__/src/conventions/custom-convention.ts +64 -0
  209. package/templates/advanced/__only_if_useCustomSearch__/src/api-extensions/custom-search-adapter.ts +30 -0
  210. package/templates/advanced/__only_if_useFetchClient__/src/api/fetch-client.ts +111 -0
  211. package/templates/advanced/__only_if_useFlatRestConvention__/src/conventions/flat-rest-convention.ts +85 -0
  212. package/templates/advanced/__only_if_usePinoLogger__/src/observability/logger.ts +62 -0
  213. package/templates/advanced/__only_if_useRansackSearch__/src/api-extensions/ransack-search-adapter.ts +41 -0
  214. package/templates/advanced/__only_if_useSharedModelAttrs__/src/models/app-base-model.ts +22 -0
  215. package/templates/advanced/__only_if_useVectorStorage__/src/storage/vector-store.ts +21 -0
  216. package/templates/advanced/__only_if_withAnalysis__/docker-compose.yml +18 -0
  217. package/templates/advanced/__only_if_withDomain__/src/domain/registry.ts +25 -0
  218. package/templates/advanced/config/schema.ts.ejs +126 -0
  219. package/templates/advanced/package.json.ejs +50 -0
  220. package/templates/advanced/src/config.ts.ejs +207 -0
  221. package/templates/advanced/src/db.ts.ejs +35 -0
  222. package/templates/advanced/src/models/_model_.ts.ejs +25 -0
  223. package/templates/advanced/src/models/index.ts.ejs +13 -0
  224. package/templates/advanced/src/profiles.ts +44 -0
  225. package/templates/advanced/src/prompts/_model_-prompt.ts.ejs +27 -0
  226. package/templates/advanced/src/prompts/index.ts.ejs +18 -0
  227. package/templates/advanced/src/scripts/db-migrate.ts +90 -0
  228. package/templates/advanced/src/tools/index.ts.ejs +133 -0
  229. package/templates/advanced/test/smoke.test.ts +16 -0
  230. package/templates/advanced/tsconfig.json +14 -0
  231. package/templates/simple/.env.example +3 -0
  232. package/templates/simple/.node-version +1 -0
  233. package/templates/simple/README.md +40 -0
  234. package/templates/simple/package.json.ejs +27 -0
  235. package/templates/simple/src/config.ts.ejs +56 -0
  236. package/templates/simple/src/models/_model_.ts.ejs +25 -0
  237. package/templates/simple/src/models/index.ts.ejs +13 -0
  238. package/templates/simple/src/prompts/_model_-prompt.ts.ejs +27 -0
  239. package/templates/simple/src/prompts/index.ts.ejs +18 -0
  240. package/templates/simple/src/server.ts +12 -0
  241. package/templates/simple/test/smoke.test.ts +16 -0
  242. package/templates/simple/tsconfig.json +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC;AAE/D,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBpD"}
@@ -0,0 +1,23 @@
1
+ import { bailIfCancel } from '../../../core/cancel.js';
2
+ import { select } from '../../../core/prompts.js';
3
+ export async function preset(ctx) {
4
+ if (ctx.scaffoldMode !== 'preset')
5
+ return;
6
+ if (ctx.preset !== undefined)
7
+ return;
8
+ if (ctx.yes) {
9
+ ctx.preset = 'simple';
10
+ return;
11
+ }
12
+ const value = await select({
13
+ message: 'Which preset?',
14
+ options: [
15
+ { value: 'simple', label: 'Simple — stdio, no DB, CRUD on models' },
16
+ { value: 'advanced', label: 'Advanced — HTTP+OAuth, optional analysis, profiles' },
17
+ ],
18
+ initialValue: 'simple',
19
+ });
20
+ bailIfCancel(value);
21
+ ctx.preset = value;
22
+ }
23
+ //# sourceMappingURL=preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/preset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAMlD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAQ;IACnC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IACrC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAS;QACjC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,uCAAuC,EAAE;YACnE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,oDAAoD,EAAE;SACnF;QACD,YAAY,EAAE,QAAQ;KACvB,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'modelsRaw' | 'promptStrategies' | 'yes'>;
3
+ export declare function prompts(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/prompts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,kBAAkB,GAAG,KAAK,CAAC,CAAC;AAElG,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BrD"}
@@ -0,0 +1,33 @@
1
+ import { bailIfCancel } from '../../../core/cancel.js';
2
+ import { select } from '../../../core/prompts.js';
3
+ export async function prompts(ctx) {
4
+ if (ctx.scaffoldMode !== 'preset')
5
+ return;
6
+ if (ctx.preset !== 'advanced')
7
+ return;
8
+ if (ctx.yes)
9
+ return;
10
+ if (ctx.promptStrategies !== undefined)
11
+ return;
12
+ const modelNames = (ctx.modelsRaw ?? '')
13
+ .split(',')
14
+ .map((s) => s.trim())
15
+ .filter(Boolean);
16
+ if (modelNames.length === 0)
17
+ return;
18
+ const strategies = {};
19
+ for (const name of modelNames) {
20
+ const value = await select({
21
+ message: `Prompt strategy for ${name}?`,
22
+ options: [
23
+ { value: 'default', label: 'default — BasePrompt + framework PromptContentGenerator' },
24
+ { value: 'custom', label: 'custom — expanded PromptContentGenerator stub to edit' },
25
+ ],
26
+ initialValue: 'default',
27
+ });
28
+ bailIfCancel(value);
29
+ strategies[name] = value;
30
+ }
31
+ ctx.promptStrategies = strategies;
32
+ }
33
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAMlD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ;IACpC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO;IACpB,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO;IAE/C,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;SACrC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,MAAM,UAAU,GAAyC,EAAE,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAuB;YAC/C,OAAO,EAAE,uBAAuB,IAAI,GAAG;YACvC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,yDAAyD,EAAE;gBACtF,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,uDAAuD,EAAE;aACpF;YACD,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IACD,GAAG,CAAC,gBAAgB,GAAG,UAAU,CAAC;AACpC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'projectName' | 'targetDir' | 'preset' | 'transport' | 'withAnalysis' | 'withDomain' | 'toolClasses' | 'apiConvention' | 'apiClient' | 'serverAuth' | 'searchAdapter' | 'logger' | 'errorTracking' | 'tracing' | 'vectorStorage' | 'sharedModelAttrs' | 'promptStrategies' | 'modelsRaw' | 'mcpRuneVersion' | 'tasks'>;
3
+ export declare function render(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACR,cAAc,GACd,aAAa,GACb,WAAW,GACX,QAAQ,GACR,WAAW,GACX,cAAc,GACd,YAAY,GACZ,aAAa,GACb,eAAe,GACf,WAAW,GACX,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,eAAe,GACf,SAAS,GACT,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,WAAW,GACX,gBAAgB,GAChB,OAAO,CACV,CAAC;AAEF,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BpD"}
@@ -0,0 +1,35 @@
1
+ import { renderTemplate } from '../../../render/copy-tree.js';
2
+ import { resolveAnswers } from '../presets.js';
3
+ export async function render(ctx) {
4
+ if (ctx.scaffoldMode !== 'preset')
5
+ return;
6
+ ctx.tasks.push({
7
+ start: 'Writing files',
8
+ end: `Wrote files to ${ctx.targetDir}`,
9
+ async while(c) {
10
+ const answers = resolveAnswers({
11
+ projectName: c.projectName,
12
+ preset: c.preset,
13
+ transport: c.transport,
14
+ withAnalysis: c.withAnalysis,
15
+ withDomain: c.withDomain,
16
+ toolClasses: c.toolClasses,
17
+ apiConvention: c.apiConvention,
18
+ apiClient: c.apiClient,
19
+ serverAuth: c.serverAuth,
20
+ searchAdapter: c.searchAdapter,
21
+ logger: c.logger,
22
+ errorTracking: c.errorTracking,
23
+ tracing: c.tracing,
24
+ vectorStorage: c.vectorStorage,
25
+ sharedModelAttrs: c.sharedModelAttrs,
26
+ promptStrategies: c.promptStrategies,
27
+ models: c.modelsRaw,
28
+ mcpRuneVersion: c.mcpRuneVersion,
29
+ });
30
+ const templateDir = new URL(`../../../../templates/${answers.preset}/`, import.meta.url);
31
+ await renderTemplate(templateDir, c.targetDir, answers);
32
+ },
33
+ });
34
+ }
35
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA4B/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAQ;IACnC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAE1C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,eAAe;QACtB,GAAG,EAAE,kBAAkB,GAAG,CAAC,SAAS,EAAE;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;YACX,MAAM,OAAO,GAAG,cAAc,CAAC;gBAC7B,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,MAAM,EAAE,CAAC,CAAC,SAAS;gBACnB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,yBAAyB,OAAO,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzF,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'projectName' | 'preset' | 'template' | 'offlineTemplate' | 'mcpRuneVersion'>;
3
+ export declare function scaffoldHeader(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=scaffold-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-header.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/scaffold-header.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,cAAc,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,iBAAiB,GAAG,gBAAgB,CAC9F,CAAC;AAEF,wBAAsB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5D"}
@@ -0,0 +1,19 @@
1
+ import { link, muted } from '../../../core/color.js';
2
+ import { scaffoldHeader as renderScaffoldHeader, space } from '../../../core/output.js';
3
+ export async function scaffoldHeader(ctx) {
4
+ space();
5
+ const suffix = describeSource(ctx);
6
+ renderScaffoldHeader(ctx.projectName, suffix);
7
+ if (ctx.mcpRuneVersion) {
8
+ console.log(` ${link('@mcp-rune/mcp-rune')}${muted(' → ')}${link(ctx.mcpRuneVersion)}`);
9
+ }
10
+ space();
11
+ }
12
+ function describeSource(ctx) {
13
+ if (ctx.scaffoldMode === 'template')
14
+ return `from template ${ctx.template}`;
15
+ if (ctx.scaffoldMode === 'offlineTemplate')
16
+ return `from local ${ctx.offlineTemplate}`;
17
+ return ctx.preset ?? 'simple';
18
+ }
19
+ //# sourceMappingURL=scaffold-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-header.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/scaffold-header.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAQxF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAQ;IAC3C,KAAK,EAAE,CAAC;IACR,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,EAAE,CAAC;AACV,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ;IAC9B,IAAI,GAAG,CAAC,YAAY,KAAK,UAAU;QAAE,OAAO,iBAAiB,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC5E,IAAI,GAAG,CAAC,YAAY,KAAK,iBAAiB;QAAE,OAAO,cAAc,GAAG,CAAC,eAAe,EAAE,CAAC;IACvF,OAAO,GAAG,CAAC,MAAM,IAAI,QAAQ,CAAC;AAChC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'template' | 'preset' | 'yes'>;
3
+ export declare function scaffoldMode(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=scaffold-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-mode.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/scaffold-mode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC;AAa5E,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC1D"}
@@ -0,0 +1,49 @@
1
+ import { bailIfCancel } from '../../../core/cancel.js';
2
+ import { select } from '../../../core/prompts.js';
3
+ import { TEMPLATE_REGISTRY } from '../../../templates/registry.js';
4
+ const TEMPLATE_DESCRIPTIONS = {
5
+ bookshelf: 'Full mcp-rune surface — apps, tools, prompts, GraphRAG. In-memory adapter, zero setup.',
6
+ tasks: 'Three models (project, task, tag) with belongsTo + hasMany.',
7
+ 'bookshelf-rest': 'Bookshelf backed by a real Express + fetch adapter.',
8
+ 'bookshelf-graph': 'GraphRAG-focused: pgvector + DomainRegistry + 500-book fixture.',
9
+ 'bookshelf-remote': 'HttpServer with static-token auth (OAuth path documented).',
10
+ };
11
+ export async function scaffoldMode(ctx) {
12
+ if (ctx.scaffoldMode !== undefined)
13
+ return;
14
+ if (ctx.yes) {
15
+ ctx.scaffoldMode = 'preset';
16
+ return;
17
+ }
18
+ const mode = await select({
19
+ message: 'How would you like to start?',
20
+ options: [
21
+ { value: 'quick', label: 'Quick start — recommended defaults (preset: simple)' },
22
+ { value: 'customize', label: 'Customize — pick every preset option (advanced)' },
23
+ { value: 'template', label: 'From an example template — clone a runnable repo' },
24
+ ],
25
+ initialValue: 'quick',
26
+ });
27
+ bailIfCancel(mode);
28
+ if (mode === 'quick') {
29
+ ctx.scaffoldMode = 'preset';
30
+ ctx.preset = 'simple';
31
+ return;
32
+ }
33
+ if (mode === 'customize') {
34
+ ctx.scaffoldMode = 'preset';
35
+ ctx.preset = 'advanced';
36
+ return;
37
+ }
38
+ const id = await select({
39
+ message: 'Which template?',
40
+ options: Object.keys(TEMPLATE_REGISTRY).map((name) => ({
41
+ value: name,
42
+ label: TEMPLATE_DESCRIPTIONS[name] ? `${name} — ${TEMPLATE_DESCRIPTIONS[name]}` : name,
43
+ })),
44
+ });
45
+ bailIfCancel(id);
46
+ ctx.scaffoldMode = 'template';
47
+ ctx.template = id;
48
+ }
49
+ //# sourceMappingURL=scaffold-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-mode.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/scaffold-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAQnE,MAAM,qBAAqB,GAA2B;IACpD,SAAS,EACP,wFAAwF;IAC1F,KAAK,EAAE,6DAA6D;IACpE,gBAAgB,EAAE,qDAAqD;IACvE,iBAAiB,EAAE,iEAAiE;IACpF,kBAAkB,EAAE,4DAA4D;CACjF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAQ;IACzC,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO;IAC3C,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAa;QACpC,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,qDAAqD,EAAE;YAChF,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iDAAiD,EAAE;YAChF,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,kDAAkD,EAAE;SACjF;QACD,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IACH,YAAY,CAAC,IAAI,CAAC,CAAC;IAEnB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC5B,GAAG,CAAC,MAAM,GAAG,QAAyB,CAAC;QACvC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC5B,GAAG,CAAC,MAAM,GAAG,UAA2B,CAAC;QACzC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAS;QAC9B,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrD,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;SACvF,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC;IAC9B,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;AACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'yes' | 'dryRun' | 'scaffoldMode' | 'projectName' | 'targetDir' | 'preset' | 'transport' | 'withAnalysis' | 'withDomain' | 'apiConvention' | 'apiClient' | 'serverAuth' | 'searchAdapter' | 'logger' | 'errorTracking' | 'tracing' | 'modelsRaw' | 'template' | 'offlineTemplate' | 'install' | 'git' | 'dbSetup'>;
3
+ export declare function summary(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/summary.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACR,KAAK,GACL,QAAQ,GACR,cAAc,GACd,aAAa,GACb,WAAW,GACX,QAAQ,GACR,WAAW,GACX,cAAc,GACd,YAAY,GACZ,eAAe,GACf,WAAW,GACX,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,eAAe,GACf,SAAS,GACT,WAAW,GACX,UAAU,GACV,iBAAiB,GACjB,SAAS,GACT,KAAK,GACL,SAAS,CACZ,CAAC;AAEF,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrD"}
@@ -0,0 +1,71 @@
1
+ import boxen from 'boxen';
2
+ import { bailIfCancel } from '../../../core/cancel.js';
3
+ import { accent, muted, strong } from '../../../core/color.js';
4
+ import { confirm } from '../../../core/prompts.js';
5
+ export async function summary(ctx) {
6
+ if (ctx.yes)
7
+ return;
8
+ const lines = buildSummary(ctx);
9
+ const body = lines.map((l) => `${l.label.padEnd(16)} ${l.value}`).join('\n');
10
+ console.log();
11
+ console.log(boxen(body, {
12
+ title: `${strong('rune')} ${muted('— pre-scaffold summary')}`,
13
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
14
+ borderStyle: 'round',
15
+ borderColor: 'cyan',
16
+ }));
17
+ if (ctx.dryRun) {
18
+ console.log(muted(' --dry-run: no disk writes; proceeding to print the task plan.'));
19
+ return;
20
+ }
21
+ const proceed = await confirm({
22
+ message: 'Proceed?',
23
+ initialValue: true,
24
+ });
25
+ bailIfCancel(proceed);
26
+ if (!proceed) {
27
+ console.log(muted('Cancelled.'));
28
+ process.exit(0);
29
+ }
30
+ }
31
+ function buildSummary(ctx) {
32
+ const lines = [
33
+ { label: 'Project', value: accent(ctx.projectName) },
34
+ { label: 'Target', value: muted(ctx.targetDir) },
35
+ ];
36
+ if (ctx.scaffoldMode === 'template') {
37
+ lines.push({ label: 'Source', value: `template ${accent(ctx.template ?? '')}` });
38
+ }
39
+ else if (ctx.scaffoldMode === 'offlineTemplate') {
40
+ lines.push({ label: 'Source', value: `local ${accent(ctx.offlineTemplate ?? '')}` });
41
+ }
42
+ else {
43
+ lines.push({ label: 'Preset', value: accent(ctx.preset ?? 'simple') });
44
+ if (ctx.preset === 'advanced') {
45
+ lines.push({ label: 'Transport', value: ctx.transport ?? 'both' });
46
+ lines.push({ label: 'Auth', value: ctx.serverAuth ?? 'oauth' });
47
+ lines.push({ label: 'API convention', value: ctx.apiConvention ?? 'jsonapi' });
48
+ lines.push({ label: 'API client', value: ctx.apiClient ?? 'none' });
49
+ lines.push({ label: 'Search adapter', value: ctx.searchAdapter ?? 'none' });
50
+ lines.push({ label: 'Logger', value: ctx.logger ?? 'framework' });
51
+ lines.push({ label: 'Error tracking', value: ctx.errorTracking ?? 'none' });
52
+ lines.push({ label: 'Tracing', value: ctx.tracing ?? 'none' });
53
+ if (ctx.withAnalysis)
54
+ lines.push({ label: 'Analysis module', value: 'enabled' });
55
+ if (ctx.withDomain)
56
+ lines.push({ label: 'Domain workflows', value: 'enabled' });
57
+ if (ctx.withAnalysis && ctx.dbSetup) {
58
+ lines.push({ label: 'Database setup', value: ctx.dbSetup });
59
+ }
60
+ }
61
+ lines.push({ label: 'Models', value: ctx.modelsRaw?.trim() || muted('(none)') });
62
+ }
63
+ lines.push({
64
+ label: 'Post-scaffold',
65
+ value: [ctx.install ? 'install' : null, ctx.git ? 'git init' : null]
66
+ .filter(Boolean)
67
+ .join(' · ') || muted('(none)'),
68
+ });
69
+ return lines;
70
+ }
71
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'withAnalysis' | 'withDomain' | 'yes'>;
3
+ export declare function toggles(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=toggles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggles.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/toggles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC;AAE/F,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrD"}
@@ -0,0 +1,25 @@
1
+ import { bailIfCancel } from '../../../core/cancel.js';
2
+ import { confirm } from '../../../core/prompts.js';
3
+ export async function toggles(ctx) {
4
+ if (ctx.scaffoldMode !== 'preset')
5
+ return;
6
+ if (ctx.preset !== 'advanced')
7
+ return;
8
+ if (ctx.withAnalysis === undefined && !ctx.yes) {
9
+ const value = await confirm({
10
+ message: 'Enable analysis module? (adds docker-compose.yml + pg dep)',
11
+ initialValue: false,
12
+ });
13
+ bailIfCancel(value);
14
+ ctx.withAnalysis = value;
15
+ }
16
+ if (ctx.withDomain === undefined && !ctx.yes) {
17
+ const value = await confirm({
18
+ message: 'Enable domain workflows? (creates src/domain/ stubs)',
19
+ initialValue: false,
20
+ });
21
+ bailIfCancel(value);
22
+ ctx.withDomain = value;
23
+ }
24
+ }
25
+ //# sourceMappingURL=toggles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggles.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/toggles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAQ;IACpC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IAEtC,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,OAAO,EAAE,4DAA4D;YACrE,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,OAAO,EAAE,sDAAsD;YAC/D,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'toolClasses' | 'withAnalysis' | 'withDomain' | 'yes'>;
3
+ export declare function tools(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,cAAc,GAAG,QAAQ,GAAG,aAAa,GAAG,cAAc,GAAG,YAAY,GAAG,KAAK,CAClF,CAAC;AAUF,wBAAsB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnD"}
@@ -0,0 +1,36 @@
1
+ import { bailIfCancel } from '../../../core/cancel.js';
2
+ import { multiselect } from '../../../core/prompts.js';
3
+ import { ALL_TOOL_CLASSES } from '../../../types.js';
4
+ const LABELS = {
5
+ strategy: 'strategy — high-level routing prompts',
6
+ data: 'data — CRUD and read paths',
7
+ analysis: 'analysis — aggregation, reports (docker-compose + pg)',
8
+ operations: 'operations — mutations beyond CRUD',
9
+ domain: 'domain — workflows, knowledge, rules (src/domain/ stubs)',
10
+ };
11
+ export async function tools(ctx) {
12
+ if (ctx.scaffoldMode !== 'preset')
13
+ return;
14
+ if (ctx.preset !== 'advanced')
15
+ return;
16
+ if (ctx.yes)
17
+ return;
18
+ if (ctx.toolClasses !== undefined)
19
+ return;
20
+ const initial = ['strategy', 'data', 'operations'];
21
+ if (ctx.withAnalysis)
22
+ initial.push('analysis');
23
+ if (ctx.withDomain)
24
+ initial.push('domain');
25
+ const value = await multiselect({
26
+ message: 'Tool classes to enable',
27
+ options: ALL_TOOL_CLASSES.map((cls) => ({ value: cls, label: LABELS[cls] })),
28
+ initialValues: initial,
29
+ required: false,
30
+ });
31
+ bailIfCancel(value);
32
+ ctx.toolClasses = value;
33
+ ctx.withAnalysis = ctx.toolClasses.includes('analysis');
34
+ ctx.withDomain = ctx.toolClasses.includes('domain');
35
+ }
36
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,mBAAmB,CAAC;AAQrE,MAAM,MAAM,GAA8B;IACxC,QAAQ,EAAE,uCAAuC;IACjD,IAAI,EAAE,4BAA4B;IAClC,QAAQ,EAAE,uDAAuD;IACjE,UAAU,EAAE,oCAAoC;IAChD,MAAM,EAAE,0DAA0D;CACnE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAQ;IAClC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO;IACpB,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO;IAE1C,MAAM,OAAO,GAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,YAAY;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,KAAK,GAAG,MAAM,WAAW,CAAY;QACzC,OAAO,EAAE,wBAAwB;QACjC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,GAAG,CAAC,WAAW,GAAG,KAAoB,CAAC;IACvC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { NewContext } from '../context.js';
2
+ type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'transport' | 'yes'>;
3
+ export declare function transport(ctx: Ctx): Promise<void>;
4
+ export {};
5
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/transport.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;AAE7E,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBvD"}
@@ -0,0 +1,24 @@
1
+ import { bailIfCancel } from '../../../core/cancel.js';
2
+ import { select } from '../../../core/prompts.js';
3
+ export async function transport(ctx) {
4
+ if (ctx.scaffoldMode !== 'preset')
5
+ return;
6
+ if (ctx.preset !== 'advanced')
7
+ return;
8
+ if (ctx.transport !== undefined)
9
+ return;
10
+ if (ctx.yes)
11
+ return;
12
+ const value = await select({
13
+ message: 'Transport?',
14
+ options: [
15
+ { value: 'stdio', label: 'stdio only (local dev with Claude Code, etc.)' },
16
+ { value: 'http', label: 'HTTP only (remote, OAuth)' },
17
+ { value: 'both', label: 'both (recommended)' },
18
+ ],
19
+ initialValue: 'both',
20
+ });
21
+ bailIfCancel(value);
22
+ ctx.transport = value;
23
+ }
24
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAMlD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAQ;IACtC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO;IACxC,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO;IAEpB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAY;QACpC,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE;YAC1E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,2BAA2B,EAAE;YACrD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;SAC/C;QACD,YAAY,EAAE,MAAM;KACrB,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { type Mascot } from '../../data/mascot.js';
2
+ import type { Task } from '../../core/tasks.js';
3
+ import type { ApiClientChoice, ApiConvention, DbSetupChoice, ErrorTrackingChoice, LoggerChoice, Model, Preset, PromptStrategyChoice, SearchAdapterChoice, ServerAuth, ToolClass, TracingChoice, Transport } from '../../types.js';
4
+ export interface NewCommandOptions {
5
+ preset?: string;
6
+ template?: string;
7
+ offlineTemplate?: string;
8
+ yes?: boolean;
9
+ dryRun?: boolean;
10
+ verbose?: boolean;
11
+ skipMascot?: boolean;
12
+ fancy?: boolean;
13
+ install?: boolean;
14
+ git?: boolean;
15
+ withAnalysis?: boolean;
16
+ withDomain?: boolean;
17
+ transport?: Transport;
18
+ models?: string;
19
+ mcpRuneLocal?: string;
20
+ toolClasses?: ToolClass[];
21
+ apiConvention?: ApiConvention;
22
+ apiClient?: ApiClientChoice;
23
+ serverAuth?: ServerAuth;
24
+ searchAdapter?: SearchAdapterChoice;
25
+ logger?: LoggerChoice;
26
+ errorTracking?: ErrorTrackingChoice;
27
+ tracing?: TracingChoice;
28
+ vectorStorage?: boolean;
29
+ sharedModelAttrs?: boolean;
30
+ dbSetup?: DbSetupChoice;
31
+ databaseUrl?: string;
32
+ }
33
+ export type ScaffoldMode = 'preset' | 'template' | 'offlineTemplate';
34
+ export interface NewContext {
35
+ yes: boolean;
36
+ dryRun: boolean;
37
+ verbose: boolean;
38
+ skipMascot: boolean;
39
+ mascot: Mascot;
40
+ cliVersion: string;
41
+ tasks: Task<NewContext>[];
42
+ projectName: string;
43
+ targetDir: string;
44
+ scaffoldMode?: ScaffoldMode;
45
+ template?: string;
46
+ offlineTemplate?: string;
47
+ mcpRuneVersion?: string;
48
+ preset?: Preset;
49
+ transport?: Transport;
50
+ withAnalysis?: boolean;
51
+ withDomain?: boolean;
52
+ toolClasses?: ToolClass[];
53
+ apiConvention?: ApiConvention;
54
+ apiClient?: ApiClientChoice;
55
+ serverAuth?: ServerAuth;
56
+ searchAdapter?: SearchAdapterChoice;
57
+ logger?: LoggerChoice;
58
+ errorTracking?: ErrorTrackingChoice;
59
+ tracing?: TracingChoice;
60
+ vectorStorage?: boolean;
61
+ sharedModelAttrs?: boolean;
62
+ promptStrategies?: Record<string, PromptStrategyChoice>;
63
+ modelsRaw?: string;
64
+ models?: Model[];
65
+ dbSetup?: DbSetupChoice;
66
+ databaseUrl?: string;
67
+ install: boolean;
68
+ git: boolean;
69
+ }
70
+ export declare function assertTemplateExclusivity(opts: NewCommandOptions): void;
71
+ export declare function assertAdvancedOnly(opts: NewCommandOptions): void;
72
+ export declare function resolveMcpRuneLocalSpec(raw: string): string;
73
+ export declare function buildNewContext(projectName: string, opts: NewCommandOptions, meta?: {
74
+ cliVersion: string;
75
+ }): NewContext;
76
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/commands/new/context.ts"],"names":[],"mappings":"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"}