@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.
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/bin/rune.js +7 -0
- package/dist/commands/add-model.d.ts +5 -0
- package/dist/commands/add-model.d.ts.map +1 -0
- package/dist/commands/add-model.js +131 -0
- package/dist/commands/add-model.js.map +1 -0
- package/dist/commands/db-up.d.ts +2 -0
- package/dist/commands/db-up.d.ts.map +1 -0
- package/dist/commands/db-up.js +29 -0
- package/dist/commands/db-up.js.map +1 -0
- package/dist/commands/doctor/env-checks.d.ts +4 -0
- package/dist/commands/doctor/env-checks.d.ts.map +1 -0
- package/dist/commands/doctor/env-checks.js +88 -0
- package/dist/commands/doctor/env-checks.js.map +1 -0
- package/dist/commands/doctor/index.d.ts +21 -0
- package/dist/commands/doctor/index.d.ts.map +1 -0
- package/dist/commands/doctor/index.js +44 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/doctor/project-validation.d.ts +5 -0
- package/dist/commands/doctor/project-validation.d.ts.map +1 -0
- package/dist/commands/doctor/project-validation.js +166 -0
- package/dist/commands/doctor/project-validation.js.map +1 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +306 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/inspect.d.ts +16 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +66 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/new/actions/apps.d.ts +5 -0
- package/dist/commands/new/actions/apps.d.ts.map +1 -0
- package/dist/commands/new/actions/apps.js +51 -0
- package/dist/commands/new/actions/apps.js.map +1 -0
- package/dist/commands/new/actions/architecture.d.ts +5 -0
- package/dist/commands/new/actions/architecture.d.ts.map +1 -0
- package/dist/commands/new/actions/architecture.js +45 -0
- package/dist/commands/new/actions/architecture.js.map +1 -0
- package/dist/commands/new/actions/auth.d.ts +5 -0
- package/dist/commands/new/actions/auth.d.ts.map +1 -0
- package/dist/commands/new/actions/auth.js +30 -0
- package/dist/commands/new/actions/auth.js.map +1 -0
- package/dist/commands/new/actions/database.d.ts +5 -0
- package/dist/commands/new/actions/database.d.ts.map +1 -0
- package/dist/commands/new/actions/database.js +60 -0
- package/dist/commands/new/actions/database.js.map +1 -0
- package/dist/commands/new/actions/fetch-template.d.ts +5 -0
- package/dist/commands/new/actions/fetch-template.d.ts.map +1 -0
- package/dist/commands/new/actions/fetch-template.js +22 -0
- package/dist/commands/new/actions/fetch-template.js.map +1 -0
- package/dist/commands/new/actions/intro.d.ts +5 -0
- package/dist/commands/new/actions/intro.d.ts.map +1 -0
- package/dist/commands/new/actions/intro.js +7 -0
- package/dist/commands/new/actions/intro.js.map +1 -0
- package/dist/commands/new/actions/layers.d.ts +5 -0
- package/dist/commands/new/actions/layers.d.ts.map +1 -0
- package/dist/commands/new/actions/layers.js +38 -0
- package/dist/commands/new/actions/layers.js.map +1 -0
- package/dist/commands/new/actions/models.d.ts +5 -0
- package/dist/commands/new/actions/models.d.ts.map +1 -0
- package/dist/commands/new/actions/models.js +18 -0
- package/dist/commands/new/actions/models.js.map +1 -0
- package/dist/commands/new/actions/next-steps.d.ts +5 -0
- package/dist/commands/new/actions/next-steps.d.ts.map +1 -0
- package/dist/commands/new/actions/next-steps.js +38 -0
- package/dist/commands/new/actions/next-steps.js.map +1 -0
- package/dist/commands/new/actions/observability.d.ts +5 -0
- package/dist/commands/new/actions/observability.d.ts.map +1 -0
- package/dist/commands/new/actions/observability.js +45 -0
- package/dist/commands/new/actions/observability.js.map +1 -0
- package/dist/commands/new/actions/post-scaffold.d.ts +5 -0
- package/dist/commands/new/actions/post-scaffold.d.ts.map +1 -0
- package/dist/commands/new/actions/post-scaffold.js +81 -0
- package/dist/commands/new/actions/post-scaffold.js.map +1 -0
- package/dist/commands/new/actions/preset.d.ts +5 -0
- package/dist/commands/new/actions/preset.d.ts.map +1 -0
- package/dist/commands/new/actions/preset.js +23 -0
- package/dist/commands/new/actions/preset.js.map +1 -0
- package/dist/commands/new/actions/prompts.d.ts +5 -0
- package/dist/commands/new/actions/prompts.d.ts.map +1 -0
- package/dist/commands/new/actions/prompts.js +33 -0
- package/dist/commands/new/actions/prompts.js.map +1 -0
- package/dist/commands/new/actions/render.d.ts +5 -0
- package/dist/commands/new/actions/render.d.ts.map +1 -0
- package/dist/commands/new/actions/render.js +35 -0
- package/dist/commands/new/actions/render.js.map +1 -0
- package/dist/commands/new/actions/scaffold-header.d.ts +5 -0
- package/dist/commands/new/actions/scaffold-header.d.ts.map +1 -0
- package/dist/commands/new/actions/scaffold-header.js +19 -0
- package/dist/commands/new/actions/scaffold-header.js.map +1 -0
- package/dist/commands/new/actions/scaffold-mode.d.ts +5 -0
- package/dist/commands/new/actions/scaffold-mode.d.ts.map +1 -0
- package/dist/commands/new/actions/scaffold-mode.js +49 -0
- package/dist/commands/new/actions/scaffold-mode.js.map +1 -0
- package/dist/commands/new/actions/summary.d.ts +5 -0
- package/dist/commands/new/actions/summary.d.ts.map +1 -0
- package/dist/commands/new/actions/summary.js +71 -0
- package/dist/commands/new/actions/summary.js.map +1 -0
- package/dist/commands/new/actions/toggles.d.ts +5 -0
- package/dist/commands/new/actions/toggles.d.ts.map +1 -0
- package/dist/commands/new/actions/toggles.js +25 -0
- package/dist/commands/new/actions/toggles.js.map +1 -0
- package/dist/commands/new/actions/tools.d.ts +5 -0
- package/dist/commands/new/actions/tools.d.ts.map +1 -0
- package/dist/commands/new/actions/tools.js +36 -0
- package/dist/commands/new/actions/tools.js.map +1 -0
- package/dist/commands/new/actions/transport.d.ts +5 -0
- package/dist/commands/new/actions/transport.d.ts.map +1 -0
- package/dist/commands/new/actions/transport.js +24 -0
- package/dist/commands/new/actions/transport.js.map +1 -0
- package/dist/commands/new/context.d.ts +76 -0
- package/dist/commands/new/context.d.ts.map +1 -0
- package/dist/commands/new/context.js +134 -0
- package/dist/commands/new/context.js.map +1 -0
- package/dist/commands/new/index.d.ts +5 -0
- package/dist/commands/new/index.d.ts.map +1 -0
- package/dist/commands/new/index.js +18 -0
- package/dist/commands/new/index.js.map +1 -0
- package/dist/commands/new/pipeline.d.ts +12 -0
- package/dist/commands/new/pipeline.d.ts.map +1 -0
- package/dist/commands/new/pipeline.js +67 -0
- package/dist/commands/new/pipeline.js.map +1 -0
- package/dist/commands/new/presets.d.ts +40 -0
- package/dist/commands/new/presets.d.ts.map +1 -0
- package/dist/commands/new/presets.js +91 -0
- package/dist/commands/new/presets.js.map +1 -0
- package/dist/commands/new.d.ts +24 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +162 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/post-scaffold.d.ts +6 -0
- package/dist/commands/post-scaffold.d.ts.map +1 -0
- package/dist/commands/post-scaffold.js +24 -0
- package/dist/commands/post-scaffold.js.map +1 -0
- package/dist/core/cancel.d.ts +3 -0
- package/dist/core/cancel.d.ts.map +1 -0
- package/dist/core/cancel.js +17 -0
- package/dist/core/cancel.js.map +1 -0
- package/dist/core/color.d.ts +12 -0
- package/dist/core/color.d.ts.map +1 -0
- package/dist/core/color.js +14 -0
- package/dist/core/color.js.map +1 -0
- package/dist/core/db-setup.d.ts +13 -0
- package/dist/core/db-setup.d.ts.map +1 -0
- package/dist/core/db-setup.js +63 -0
- package/dist/core/db-setup.js.map +1 -0
- package/dist/core/fs-utils.d.ts +4 -0
- package/dist/core/fs-utils.d.ts.map +1 -0
- package/dist/core/fs-utils.js +31 -0
- package/dist/core/fs-utils.js.map +1 -0
- package/dist/core/output.d.ts +19 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +42 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/prompts.d.ts +2 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +2 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/tasks.d.ts +11 -0
- package/dist/core/tasks.d.ts.map +1 -0
- package/dist/core/tasks.js +28 -0
- package/dist/core/tasks.js.map +1 -0
- package/dist/data/mascot.d.ts +13 -0
- package/dist/data/mascot.d.ts.map +1 -0
- package/dist/data/mascot.js +80 -0
- package/dist/data/mascot.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/render/copy-tree.d.ts +5 -0
- package/dist/render/copy-tree.d.ts.map +1 -0
- package/dist/render/copy-tree.js +146 -0
- package/dist/render/copy-tree.js.map +1 -0
- package/dist/render/fetch-template.d.ts +9 -0
- package/dist/render/fetch-template.d.ts.map +1 -0
- package/dist/render/fetch-template.js +113 -0
- package/dist/render/fetch-template.js.map +1 -0
- package/dist/render/model-gen.d.ts +3 -0
- package/dist/render/model-gen.d.ts.map +1 -0
- package/dist/render/model-gen.js +23 -0
- package/dist/render/model-gen.js.map +1 -0
- package/dist/templates/registry.d.ts +14 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +34 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/types.d.ts +87 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/wizard/presets.d.ts +35 -0
- package/dist/wizard/presets.d.ts.map +1 -0
- package/dist/wizard/presets.js +67 -0
- package/dist/wizard/presets.js.map +1 -0
- package/dist/wizard/questions.d.ts +11 -0
- package/dist/wizard/questions.d.ts.map +1 -0
- package/dist/wizard/questions.js +154 -0
- package/dist/wizard/questions.js.map +1 -0
- package/package.json +52 -0
- package/templates/advanced/.env.example.ejs +82 -0
- package/templates/advanced/.node-version +1 -0
- package/templates/advanced/README.md.ejs +76 -0
- package/templates/advanced/__only_if_hasHttp__/src/servers/remote.ts.ejs +36 -0
- package/templates/advanced/__only_if_hasStdio__/src/servers/local.ts +30 -0
- package/templates/advanced/__only_if_useAxiosClient__/src/api/axios-client.ts +74 -0
- package/templates/advanced/__only_if_useCustomApiClient__/src/api/custom-client.ts +48 -0
- package/templates/advanced/__only_if_useCustomConvention__/src/conventions/custom-convention.ts +64 -0
- package/templates/advanced/__only_if_useCustomSearch__/src/api-extensions/custom-search-adapter.ts +30 -0
- package/templates/advanced/__only_if_useFetchClient__/src/api/fetch-client.ts +111 -0
- package/templates/advanced/__only_if_useFlatRestConvention__/src/conventions/flat-rest-convention.ts +85 -0
- package/templates/advanced/__only_if_usePinoLogger__/src/observability/logger.ts +62 -0
- package/templates/advanced/__only_if_useRansackSearch__/src/api-extensions/ransack-search-adapter.ts +41 -0
- package/templates/advanced/__only_if_useSharedModelAttrs__/src/models/app-base-model.ts +22 -0
- package/templates/advanced/__only_if_useVectorStorage__/src/storage/vector-store.ts +21 -0
- package/templates/advanced/__only_if_withAnalysis__/docker-compose.yml +18 -0
- package/templates/advanced/__only_if_withDomain__/src/domain/registry.ts +25 -0
- package/templates/advanced/config/schema.ts.ejs +126 -0
- package/templates/advanced/package.json.ejs +50 -0
- package/templates/advanced/src/config.ts.ejs +207 -0
- package/templates/advanced/src/db.ts.ejs +35 -0
- package/templates/advanced/src/models/_model_.ts.ejs +25 -0
- package/templates/advanced/src/models/index.ts.ejs +13 -0
- package/templates/advanced/src/profiles.ts +44 -0
- package/templates/advanced/src/prompts/_model_-prompt.ts.ejs +27 -0
- package/templates/advanced/src/prompts/index.ts.ejs +18 -0
- package/templates/advanced/src/scripts/db-migrate.ts +90 -0
- package/templates/advanced/src/tools/index.ts.ejs +133 -0
- package/templates/advanced/test/smoke.test.ts +16 -0
- package/templates/advanced/tsconfig.json +14 -0
- package/templates/simple/.env.example +3 -0
- package/templates/simple/.node-version +1 -0
- package/templates/simple/README.md +40 -0
- package/templates/simple/package.json.ejs +27 -0
- package/templates/simple/src/config.ts.ejs +56 -0
- package/templates/simple/src/models/_model_.ts.ejs +25 -0
- package/templates/simple/src/models/index.ts.ejs +13 -0
- package/templates/simple/src/prompts/_model_-prompt.ts.ejs +27 -0
- package/templates/simple/src/prompts/index.ts.ejs +18 -0
- package/templates/simple/src/server.ts +12 -0
- package/templates/simple/test/smoke.test.ts +16 -0
- package/templates/simple/tsconfig.json +14 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { select } from '../../../core/prompts.js';
|
|
3
|
+
export async function apps(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.preset !== 'advanced')
|
|
7
|
+
return;
|
|
8
|
+
if (ctx.yes)
|
|
9
|
+
return;
|
|
10
|
+
if (ctx.apiConvention === undefined) {
|
|
11
|
+
const value = await select({
|
|
12
|
+
message: 'API convention?',
|
|
13
|
+
options: [
|
|
14
|
+
{ value: 'jsonapi', label: 'jsonapi — JSON:API wire format' },
|
|
15
|
+
{ value: 'rest-flat', label: 'rest-flat — flat REST, no envelope' },
|
|
16
|
+
{ value: 'custom', label: 'custom — scaffold a BaseConvention stub' },
|
|
17
|
+
],
|
|
18
|
+
initialValue: 'jsonapi',
|
|
19
|
+
});
|
|
20
|
+
bailIfCancel(value);
|
|
21
|
+
ctx.apiConvention = value;
|
|
22
|
+
}
|
|
23
|
+
if (ctx.apiClient === undefined) {
|
|
24
|
+
const value = await select({
|
|
25
|
+
message: 'API client?',
|
|
26
|
+
options: [
|
|
27
|
+
{ value: 'none', label: 'none — placeholder' },
|
|
28
|
+
{ value: 'fetch', label: 'fetch — native fetch starter' },
|
|
29
|
+
{ value: 'axios', label: 'axios — ApiClient over axios' },
|
|
30
|
+
{ value: 'custom', label: 'custom — scaffold an ApiClient stub' },
|
|
31
|
+
],
|
|
32
|
+
initialValue: 'none',
|
|
33
|
+
});
|
|
34
|
+
bailIfCancel(value);
|
|
35
|
+
ctx.apiClient = value;
|
|
36
|
+
}
|
|
37
|
+
if (ctx.searchAdapter === undefined) {
|
|
38
|
+
const value = await select({
|
|
39
|
+
message: 'Search adapter?',
|
|
40
|
+
options: [
|
|
41
|
+
{ value: 'none', label: 'none — framework default' },
|
|
42
|
+
{ value: 'ransack', label: 'ransack — Rails Ransack q[...] starter' },
|
|
43
|
+
{ value: 'custom', label: 'custom — scaffold a SearchAdapter stub' },
|
|
44
|
+
],
|
|
45
|
+
initialValue: 'none',
|
|
46
|
+
});
|
|
47
|
+
bailIfCancel(value);
|
|
48
|
+
ctx.searchAdapter = value;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAalD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAQ;IACjC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO;IAEpB,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAgB;YACxC,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gCAAgC,EAAE;gBAC7D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,oCAAoC,EAAE;gBACnE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,yCAAyC,EAAE;aACtE;YACD,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAkB;YAC1C,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE;gBAC9C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE;gBACzD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE;gBACzD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,qCAAqC,EAAE;aAClE;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAsB;YAC9C,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,EAAE;gBACpD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,wCAAwC,EAAE;gBACrE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,wCAAwC,EAAE;aACrE;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NewContext } from '../context.js';
|
|
2
|
+
type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'apiConvention' | 'apiClient' | 'searchAdapter' | 'yes'>;
|
|
3
|
+
export declare function architecture(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=architecture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/architecture.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,cAAc,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,GAAG,eAAe,GAAG,KAAK,CACpF,CAAC;AAEF,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C1D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { select } from '../../../core/prompts.js';
|
|
3
|
+
export async function architecture(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.preset !== 'advanced')
|
|
7
|
+
return;
|
|
8
|
+
if (ctx.apiConvention === undefined && !ctx.yes) {
|
|
9
|
+
const value = await select({
|
|
10
|
+
message: 'API convention?',
|
|
11
|
+
options: [
|
|
12
|
+
{ value: 'jsonapi', label: 'jsonapi — framework default (JSON:API wire format)' },
|
|
13
|
+
{ value: 'rest-flat', label: 'rest-flat — starter (flat REST, no envelope)' },
|
|
14
|
+
],
|
|
15
|
+
initialValue: 'jsonapi',
|
|
16
|
+
});
|
|
17
|
+
bailIfCancel(value);
|
|
18
|
+
ctx.apiConvention = value;
|
|
19
|
+
}
|
|
20
|
+
if (ctx.apiClient === undefined && !ctx.yes) {
|
|
21
|
+
const value = await select({
|
|
22
|
+
message: 'API client?',
|
|
23
|
+
options: [
|
|
24
|
+
{ value: 'none', label: 'none — leave a placeholder for you to fill in' },
|
|
25
|
+
{ value: 'fetch', label: 'fetch — starter implementation using native fetch' },
|
|
26
|
+
],
|
|
27
|
+
initialValue: 'none',
|
|
28
|
+
});
|
|
29
|
+
bailIfCancel(value);
|
|
30
|
+
ctx.apiClient = value;
|
|
31
|
+
}
|
|
32
|
+
if (ctx.searchAdapter === undefined && !ctx.yes) {
|
|
33
|
+
const value = await select({
|
|
34
|
+
message: 'Search adapter?',
|
|
35
|
+
options: [
|
|
36
|
+
{ value: 'none', label: 'none — framework default (flat filter spread)' },
|
|
37
|
+
{ value: 'ransack', label: 'ransack — starter for Rails Ransack q[...] syntax' },
|
|
38
|
+
],
|
|
39
|
+
initialValue: 'none',
|
|
40
|
+
});
|
|
41
|
+
bailIfCancel(value);
|
|
42
|
+
ctx.searchAdapter = value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=architecture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/architecture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAalD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAQ;IACzC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IAEtC,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAgB;YACxC,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,oDAAoD,EAAE;gBACjF,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,8CAA8C,EAAE;aAC9E;YACD,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAkB;YAC1C,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE;gBACzE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,mDAAmD,EAAE;aAC/E;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAsB;YAC9C,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE;gBACzE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,mDAAmD,EAAE;aACjF;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/auth.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,YAAY,GAAG,KAAK,CAAC,CAAC;AAE5F,wBAAsB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { select } from '../../../core/prompts.js';
|
|
3
|
+
export async function auth(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.preset !== 'advanced')
|
|
7
|
+
return;
|
|
8
|
+
if (ctx.serverAuth !== undefined)
|
|
9
|
+
return;
|
|
10
|
+
const transportHasHttp = ctx.transport === 'http' || ctx.transport === 'both';
|
|
11
|
+
if (!transportHasHttp) {
|
|
12
|
+
// Mirror existing fallback: keep the default 'oauth' so resolveAnswers receives it
|
|
13
|
+
// (legacy parity with src/wizard/questions.ts when transport is stdio-only).
|
|
14
|
+
ctx.serverAuth = 'oauth';
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (ctx.yes)
|
|
18
|
+
return;
|
|
19
|
+
const value = await select({
|
|
20
|
+
message: 'HTTP server auth?',
|
|
21
|
+
options: [
|
|
22
|
+
{ value: 'oauth', label: 'oauth — OAuth2 discovery + PKCE (recommended)' },
|
|
23
|
+
{ value: 'static-token', label: 'static-token — single ACCESS_TOKEN bearer (simpler)' },
|
|
24
|
+
],
|
|
25
|
+
initialValue: 'oauth',
|
|
26
|
+
});
|
|
27
|
+
bailIfCancel(value);
|
|
28
|
+
ctx.serverAuth = value;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAMlD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAQ;IACjC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO;IAEzC,MAAM,gBAAgB,GAAG,GAAG,CAAC,SAAS,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC;IAC9E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,mFAAmF;QACnF,6EAA6E;QAC7E,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO;IAEpB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAa;QACrC,OAAO,EAAE,mBAAmB;QAC5B,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,+CAA+C,EAAE;YAC1E,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,qDAAqD,EAAE;SACxF;QACD,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NewContext } from '../context.js';
|
|
2
|
+
type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'withAnalysis' | 'dbSetup' | 'databaseUrl' | 'projectName' | 'yes'>;
|
|
3
|
+
export declare function database(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/database.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,cAAc,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,KAAK,CAC/F,CAAC;AAEF,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCtD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { select, text } from '../../../core/prompts.js';
|
|
3
|
+
export async function database(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.preset !== 'advanced')
|
|
7
|
+
return;
|
|
8
|
+
if (!ctx.withAnalysis)
|
|
9
|
+
return;
|
|
10
|
+
if (ctx.dbSetup !== undefined) {
|
|
11
|
+
if (ctx.dbSetup === 'existing-url' && ctx.databaseUrl === undefined && !ctx.yes) {
|
|
12
|
+
ctx.databaseUrl = await promptUrl();
|
|
13
|
+
}
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (ctx.yes) {
|
|
17
|
+
ctx.dbSetup = 'docker';
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const choice = await select({
|
|
21
|
+
message: 'Database setup?',
|
|
22
|
+
options: [
|
|
23
|
+
{
|
|
24
|
+
value: 'docker',
|
|
25
|
+
label: 'docker — start the bundled docker-compose pgvector (recommended)',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
value: 'existing-url',
|
|
29
|
+
label: 'existing — use a DATABASE_URL I provide',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
value: 'skip',
|
|
33
|
+
label: 'skip — configure later (rune db up)',
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
initialValue: 'docker',
|
|
37
|
+
});
|
|
38
|
+
bailIfCancel(choice);
|
|
39
|
+
ctx.dbSetup = choice;
|
|
40
|
+
if (choice === 'existing-url') {
|
|
41
|
+
ctx.databaseUrl = await promptUrl();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function promptUrl() {
|
|
45
|
+
const url = await text({
|
|
46
|
+
message: 'DATABASE_URL?',
|
|
47
|
+
placeholder: 'postgres://user:pass@host:5432/dbname',
|
|
48
|
+
validate(value) {
|
|
49
|
+
if (!value)
|
|
50
|
+
return 'required';
|
|
51
|
+
if (!value.startsWith('postgres://') && !value.startsWith('postgresql://')) {
|
|
52
|
+
return 'must start with postgres:// or postgresql://';
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
bailIfCancel(url);
|
|
58
|
+
return url;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AASxD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ;IACrC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO;IAE9B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,OAAO,KAAK,cAAc,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAChF,GAAG,CAAC,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;QACtC,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAgB;QACzC,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,kEAAkE;aAC1E;YACD;gBACE,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,yCAAyC;aACjD;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,qCAAqC;aAC7C;SACF;QACD,YAAY,EAAE,QAAQ;KACvB,CAAC,CAAC;IACH,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;IAErB,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,GAAG,CAAC,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QACrB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,uCAAuC;QACpD,QAAQ,CAAC,KAAK;YACZ,IAAI,CAAC,KAAK;gBAAE,OAAO,UAAU,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3E,OAAO,8CAA8C,CAAC;YACxD,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;IACH,YAAY,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NewContext } from '../context.js';
|
|
2
|
+
type Ctx = Pick<NewContext, 'scaffoldMode' | 'projectName' | 'template' | 'offlineTemplate' | 'targetDir' | 'mcpRuneVersion' | 'tasks'>;
|
|
3
|
+
export declare function fetchTemplate(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=fetch-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-template.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/fetch-template.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACR,cAAc,GACd,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,gBAAgB,GAChB,OAAO,CACV,CAAC;AAEF,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { applyTemplateOverrides, copyOfflineTemplate, fetchTemplate as fetchRemoteTemplate, } from '../../../render/fetch-template.js';
|
|
2
|
+
export async function fetchTemplate(ctx) {
|
|
3
|
+
if (ctx.scaffoldMode !== 'template' && ctx.scaffoldMode !== 'offlineTemplate')
|
|
4
|
+
return;
|
|
5
|
+
ctx.tasks.push({
|
|
6
|
+
start: 'Resolving template',
|
|
7
|
+
end: `Wrote files to ${ctx.targetDir}`,
|
|
8
|
+
async while(c) {
|
|
9
|
+
if (c.scaffoldMode === 'template') {
|
|
10
|
+
await fetchRemoteTemplate(c.template, c.targetDir);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
await copyOfflineTemplate(c.offlineTemplate, c.targetDir);
|
|
14
|
+
}
|
|
15
|
+
await applyTemplateOverrides(c.targetDir, {
|
|
16
|
+
projectName: c.projectName,
|
|
17
|
+
mcpRuneVersionOverride: c.mcpRuneVersion,
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=fetch-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-template.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/fetch-template.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,IAAI,mBAAmB,GACrC,MAAM,mCAAmC,CAAC;AAc3C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ;IAC1C,IAAI,GAAG,CAAC,YAAY,KAAK,UAAU,IAAI,GAAG,CAAC,YAAY,KAAK,iBAAiB;QAAE,OAAO;IAEtF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,oBAAoB;QAC3B,GAAG,EAAE,kBAAkB,GAAG,CAAC,SAAS,EAAE;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;YACX,IAAI,CAAC,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBAClC,MAAM,mBAAmB,CAAC,CAAC,CAAC,QAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,MAAM,mBAAmB,CAAC,CAAC,CAAC,eAAgB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAAE;gBACxC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,sBAAsB,EAAE,CAAC,CAAC,cAAc;aACzC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intro.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/intro.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;AAEpE,wBAAsB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intro.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/intro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAKjD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,GAAQ;IAClC,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO;IAC3B,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NewContext } from '../context.js';
|
|
2
|
+
type Ctx = Pick<NewContext, 'scaffoldMode' | 'preset' | 'vectorStorage' | 'sharedModelAttrs' | 'withAnalysis' | 'toolClasses' | 'yes'>;
|
|
3
|
+
export declare function layers(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=layers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/layers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACR,cAAc,GACd,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,aAAa,GACb,KAAK,CACR,CAAC;AAEF,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCpD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { confirm } from '../../../core/prompts.js';
|
|
3
|
+
export async function layers(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.preset !== 'advanced')
|
|
7
|
+
return;
|
|
8
|
+
if (ctx.yes)
|
|
9
|
+
return;
|
|
10
|
+
if (ctx.vectorStorage === undefined) {
|
|
11
|
+
const value = await confirm({
|
|
12
|
+
message: 'DataLayer · enable vector storage hook?',
|
|
13
|
+
initialValue: false,
|
|
14
|
+
});
|
|
15
|
+
bailIfCancel(value);
|
|
16
|
+
ctx.vectorStorage = value;
|
|
17
|
+
}
|
|
18
|
+
if (ctx.sharedModelAttrs === undefined) {
|
|
19
|
+
const value = await confirm({
|
|
20
|
+
message: 'ModelLayer · scaffold a shared BaseModel subclass for cross-model attributes?',
|
|
21
|
+
initialValue: false,
|
|
22
|
+
});
|
|
23
|
+
bailIfCancel(value);
|
|
24
|
+
ctx.sharedModelAttrs = value;
|
|
25
|
+
}
|
|
26
|
+
if (ctx.withAnalysis === undefined) {
|
|
27
|
+
const value = await confirm({
|
|
28
|
+
message: 'AnalysisLayer · enable analysis module (docker-compose.yml + pg dep)?',
|
|
29
|
+
initialValue: false,
|
|
30
|
+
});
|
|
31
|
+
bailIfCancel(value);
|
|
32
|
+
ctx.withAnalysis = value;
|
|
33
|
+
if (value && ctx.toolClasses && !ctx.toolClasses.includes('analysis')) {
|
|
34
|
+
ctx.toolClasses = [...ctx.toolClasses, 'analysis'];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=layers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/layers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAcnD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAQ;IACnC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IACtC,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO;IAEpB,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,OAAO,EAAE,yCAAyC;YAClD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,OAAO,EAAE,+EAA+E;YACxF,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,OAAO,EAAE,uEAAuE;YAChF,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,KAAK,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC;AAElE,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { text } from '../../../core/prompts.js';
|
|
3
|
+
export async function models(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.modelsRaw !== undefined)
|
|
7
|
+
return;
|
|
8
|
+
if (ctx.yes)
|
|
9
|
+
return; // resolveAnswers parses undefined → []
|
|
10
|
+
const value = await text({
|
|
11
|
+
message: 'Models to scaffold (comma-separated, empty for none)',
|
|
12
|
+
defaultValue: '',
|
|
13
|
+
placeholder: '',
|
|
14
|
+
});
|
|
15
|
+
bailIfCancel(value);
|
|
16
|
+
ctx.modelsRaw = value;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAKhD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,GAAQ;IACnC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO;IACxC,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO,CAAC,uCAAuC;IAE5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC;QACvB,OAAO,EAAE,sDAAsD;QAC/D,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;KAChB,CAAC,CAAC;IACH,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NewContext } from '../context.js';
|
|
2
|
+
type Ctx = Pick<NewContext, 'scaffoldMode' | 'projectName' | 'install' | 'skipMascot' | 'mascot' | 'dbSetup' | 'withAnalysis'>;
|
|
3
|
+
export declare function nextSteps(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=next-steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-steps.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/next-steps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,CAClG,CAAC;AAMF,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCvD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import boxen from 'boxen';
|
|
2
|
+
import terminalLink from 'terminal-link';
|
|
3
|
+
import { accent, muted, strong } from '../../../core/color.js';
|
|
4
|
+
const DOCS_URL = 'https://github.com/mcp-rune/mcp-rune';
|
|
5
|
+
const DB_SETUP_DOCS_URL = 'https://github.com/mcp-rune/mcp-rune/blob/master/docs/guides/11-reference/database-setup.md';
|
|
6
|
+
export async function nextSteps(ctx) {
|
|
7
|
+
const lines = [];
|
|
8
|
+
lines.push(`${muted('▸')} ${accent(`cd ${ctx.projectName}`)}`);
|
|
9
|
+
if (!ctx.install)
|
|
10
|
+
lines.push(`${muted('▸')} ${accent('npm install')}`);
|
|
11
|
+
if (ctx.scaffoldMode === 'template' || ctx.scaffoldMode === 'offlineTemplate') {
|
|
12
|
+
lines.push(`${muted('▸')} ${muted('see the template README for how to run it')}`);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
if (ctx.dbSetup === 'skip' && ctx.withAnalysis) {
|
|
16
|
+
lines.push(`${muted('▸')} ${accent('rune db up')} ${muted('(configure + migrate database)')}`);
|
|
17
|
+
}
|
|
18
|
+
lines.push(`${muted('▸')} ${accent('npm run start:local')}`);
|
|
19
|
+
lines.push(`${muted('▸')} ${accent('rune inspect')} ${muted('(open MCP Inspector)')}`);
|
|
20
|
+
}
|
|
21
|
+
lines.push('');
|
|
22
|
+
lines.push(`${muted('Docs:')} ${terminalLink('mcp-rune/mcp-rune', DOCS_URL, { fallback: () => DOCS_URL })}`);
|
|
23
|
+
if (ctx.dbSetup === 'skip' && ctx.withAnalysis) {
|
|
24
|
+
lines.push(`${muted('DB setup:')} ${terminalLink('database-setup.md', DB_SETUP_DOCS_URL, { fallback: () => DB_SETUP_DOCS_URL })}`);
|
|
25
|
+
}
|
|
26
|
+
console.log();
|
|
27
|
+
console.log(boxen(lines.join('\n'), {
|
|
28
|
+
title: `${strong('Next steps')}`,
|
|
29
|
+
padding: { top: 0, bottom: 0, left: 1, right: 1 },
|
|
30
|
+
borderStyle: 'round',
|
|
31
|
+
borderColor: 'green',
|
|
32
|
+
}));
|
|
33
|
+
if (!ctx.skipMascot) {
|
|
34
|
+
console.log();
|
|
35
|
+
console.log(` ${muted(ctx.mascot.sigil)} ${ctx.mascot.signoff}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=next-steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-steps.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/next-steps.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' | 'logger' | 'errorTracking' | 'tracing' | 'yes'>;
|
|
3
|
+
export declare function observability(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=observability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/observability.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,GAAG,KAAK,CAC3E,CAAC;AAEF,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C3D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { bailIfCancel } from '../../../core/cancel.js';
|
|
2
|
+
import { select } from '../../../core/prompts.js';
|
|
3
|
+
export async function observability(ctx) {
|
|
4
|
+
if (ctx.scaffoldMode !== 'preset')
|
|
5
|
+
return;
|
|
6
|
+
if (ctx.preset !== 'advanced')
|
|
7
|
+
return;
|
|
8
|
+
if (ctx.logger === undefined && !ctx.yes) {
|
|
9
|
+
const value = await select({
|
|
10
|
+
message: 'Logger?',
|
|
11
|
+
options: [
|
|
12
|
+
{ value: 'framework', label: "framework — use mcp-rune's built-in logger" },
|
|
13
|
+
{ value: 'pino', label: 'pino — starter wrapper exposing a pino instance' },
|
|
14
|
+
],
|
|
15
|
+
initialValue: 'framework',
|
|
16
|
+
});
|
|
17
|
+
bailIfCancel(value);
|
|
18
|
+
ctx.logger = value;
|
|
19
|
+
}
|
|
20
|
+
if (ctx.errorTracking === undefined && !ctx.yes) {
|
|
21
|
+
const value = await select({
|
|
22
|
+
message: 'Error tracking?',
|
|
23
|
+
options: [
|
|
24
|
+
{ value: 'none', label: 'none — no DSN configured' },
|
|
25
|
+
{ value: 'sentry', label: 'sentry — pre-populate SENTRY_DSN in .env.example' },
|
|
26
|
+
],
|
|
27
|
+
initialValue: 'none',
|
|
28
|
+
});
|
|
29
|
+
bailIfCancel(value);
|
|
30
|
+
ctx.errorTracking = value;
|
|
31
|
+
}
|
|
32
|
+
if (ctx.tracing === undefined && !ctx.yes) {
|
|
33
|
+
const value = await select({
|
|
34
|
+
message: 'Tracing?',
|
|
35
|
+
options: [
|
|
36
|
+
{ value: 'none', label: 'none — no tracing backend configured' },
|
|
37
|
+
{ value: 'langfuse', label: 'langfuse — pre-populate LANGFUSE_* keys in .env.example' },
|
|
38
|
+
],
|
|
39
|
+
initialValue: 'none',
|
|
40
|
+
});
|
|
41
|
+
bailIfCancel(value);
|
|
42
|
+
ctx.tracing = value;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=observability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAalD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAQ;IAC1C,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO;IAEtC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAe;YACvC,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,4CAA4C,EAAE;gBAC3E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iDAAiD,EAAE;aAC5E;YACD,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAsB;YAC9C,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,EAAE;gBACpD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kDAAkD,EAAE;aAC/E;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAgB;YACxC,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,sCAAsC,EAAE;gBAChE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,yDAAyD,EAAE;aACxF;YACD,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NewContext } from '../context.js';
|
|
2
|
+
type Ctx = Pick<NewContext, 'targetDir' | 'install' | 'git' | 'verbose' | 'tasks' | 'dbSetup' | 'databaseUrl'>;
|
|
3
|
+
export declare function postScaffold(ctx: Ctx): Promise<void>;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=post-scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/new/actions/post-scaffold.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,KAAK,GAAG,GAAG,IAAI,CACb,UAAU,EACV,WAAW,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAClF,CAAC;AAEF,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E1D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { execa } from 'execa';
|
|
4
|
+
import { runMigrations, startDockerDb, waitForDbHealthy, writeEnvDatabaseUrl, } from '../../../core/db-setup.js';
|
|
5
|
+
import { notice } from '../../../core/output.js';
|
|
6
|
+
export async function postScaffold(ctx) {
|
|
7
|
+
if (ctx.git) {
|
|
8
|
+
ctx.tasks.push({
|
|
9
|
+
start: 'Initializing git repo',
|
|
10
|
+
end: 'Initialized git repo',
|
|
11
|
+
async while(c) {
|
|
12
|
+
await execa('git', ['init', '--quiet'], { cwd: c.targetDir });
|
|
13
|
+
},
|
|
14
|
+
onError(err) {
|
|
15
|
+
notice(`git init failed: ${err.message}`);
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
if (ctx.install) {
|
|
20
|
+
ctx.tasks.push({
|
|
21
|
+
start: 'Installing dependencies',
|
|
22
|
+
end: 'Installed dependencies',
|
|
23
|
+
async while(c) {
|
|
24
|
+
await execa('npm', ['install'], {
|
|
25
|
+
cwd: c.targetDir,
|
|
26
|
+
stdio: c.verbose ? 'inherit' : 'pipe',
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
onError(err) {
|
|
30
|
+
notice(`npm install failed: ${err.message}`);
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (ctx.dbSetup === 'docker') {
|
|
35
|
+
ctx.tasks.push({
|
|
36
|
+
start: 'Starting docker pgvector',
|
|
37
|
+
end: 'Started docker pgvector',
|
|
38
|
+
async while(c) {
|
|
39
|
+
if (!existsSync(resolve(c.targetDir, 'docker-compose.yml'))) {
|
|
40
|
+
throw new Error('docker-compose.yml missing from scaffolded project');
|
|
41
|
+
}
|
|
42
|
+
await startDockerDb(c.targetDir);
|
|
43
|
+
const healthy = await waitForDbHealthy(c.targetDir, 60_000);
|
|
44
|
+
if (!healthy) {
|
|
45
|
+
throw new Error('docker db did not become healthy within 60s — check `docker compose logs db`');
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
onError(err) {
|
|
49
|
+
notice(`docker setup failed: ${err.message}`);
|
|
50
|
+
notice('run `rune db up` from the project directory to retry');
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else if (ctx.dbSetup === 'existing-url' && ctx.databaseUrl) {
|
|
55
|
+
const url = ctx.databaseUrl;
|
|
56
|
+
ctx.tasks.push({
|
|
57
|
+
start: 'Writing DATABASE_URL to .env',
|
|
58
|
+
end: 'Wrote DATABASE_URL to .env',
|
|
59
|
+
async while(c) {
|
|
60
|
+
writeEnvDatabaseUrl(c.targetDir, url);
|
|
61
|
+
},
|
|
62
|
+
onError(err) {
|
|
63
|
+
notice(`.env write failed: ${err.message}`);
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (ctx.dbSetup === 'docker' || ctx.dbSetup === 'existing-url') {
|
|
68
|
+
ctx.tasks.push({
|
|
69
|
+
start: 'Running migrations',
|
|
70
|
+
end: 'Ran migrations',
|
|
71
|
+
async while(c) {
|
|
72
|
+
await runMigrations(c.targetDir, { stdio: c.verbose ? 'inherit' : 'pipe' });
|
|
73
|
+
},
|
|
74
|
+
onError(err) {
|
|
75
|
+
notice(`migrations failed: ${err.message}`);
|
|
76
|
+
notice('run `npm run db:migrate` from the project directory to retry');
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=post-scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-scaffold.js","sourceRoot":"","sources":["../../../../src/commands/new/actions/post-scaffold.ts"],"names":[],"mappings":"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"}
|