@captain_z/zsk 1.8.1 → 1.8.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 (79) hide show
  1. package/dist/bin.js +184 -1
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/check.js +259 -12
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/config.d.ts +11 -0
  6. package/dist/commands/config.js +132 -3
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/demo.js +2 -2
  9. package/dist/commands/demo.js.map +1 -1
  10. package/dist/commands/dispatch.d.ts +11 -0
  11. package/dist/commands/dispatch.js +69 -0
  12. package/dist/commands/dispatch.js.map +1 -0
  13. package/dist/commands/gate.d.ts +11 -0
  14. package/dist/commands/gate.js +50 -0
  15. package/dist/commands/gate.js.map +1 -0
  16. package/dist/commands/prep.d.ts +2 -4
  17. package/dist/commands/prep.js +1 -131
  18. package/dist/commands/prep.js.map +1 -1
  19. package/dist/commands/prepare.d.ts +17 -0
  20. package/dist/commands/prepare.js +259 -0
  21. package/dist/commands/prepare.js.map +1 -0
  22. package/dist/commands/project-init.d.ts +1 -0
  23. package/dist/commands/project-init.js +12 -10
  24. package/dist/commands/project-init.js.map +1 -1
  25. package/dist/commands/template.d.ts +2 -0
  26. package/dist/commands/template.js +34 -0
  27. package/dist/commands/template.js.map +1 -0
  28. package/dist/core/config.d.ts +85 -1
  29. package/dist/core/config.js +141 -7
  30. package/dist/core/config.js.map +1 -1
  31. package/dist/core/origin-detection.d.ts +10 -0
  32. package/dist/core/origin-detection.js +135 -0
  33. package/dist/core/origin-detection.js.map +1 -0
  34. package/dist/core/prepare-lifecycle.d.ts +54 -0
  35. package/dist/core/prepare-lifecycle.js +302 -0
  36. package/dist/core/prepare-lifecycle.js.map +1 -0
  37. package/dist/core/prepare-sync.d.ts +82 -0
  38. package/dist/core/prepare-sync.js +1514 -0
  39. package/dist/core/prepare-sync.js.map +1 -0
  40. package/dist/core/raw-manifest.d.ts +10 -0
  41. package/dist/core/raw-manifest.js +58 -4
  42. package/dist/core/raw-manifest.js.map +1 -1
  43. package/dist/core/source-draft.d.ts +14 -0
  44. package/dist/core/source-draft.js +251 -0
  45. package/dist/core/source-draft.js.map +1 -0
  46. package/dist/core/staffing-plan.d.ts +212 -0
  47. package/dist/core/staffing-plan.js +1238 -0
  48. package/dist/core/staffing-plan.js.map +1 -0
  49. package/dist/core/stage-quality.d.ts +64 -0
  50. package/dist/core/stage-quality.js +847 -0
  51. package/dist/core/stage-quality.js.map +1 -0
  52. package/dist/core/template-registry.d.ts +29 -0
  53. package/dist/core/template-registry.js +295 -0
  54. package/dist/core/template-registry.js.map +1 -0
  55. package/dist/core/workspace-layout.d.ts +3 -0
  56. package/dist/core/workspace-layout.js +14 -1
  57. package/dist/core/workspace-layout.js.map +1 -1
  58. package/package.json +2 -2
  59. package/schemas/zsk-config.schema.json +233 -196
  60. package/templates/module/frontend-module/design.md +86 -3
  61. package/templates/module/frontend-module/proposal.md +17 -0
  62. package/templates/module/frontend-module/spec.md +26 -0
  63. package/templates/module/frontend-module/tasks.md +53 -7
  64. package/templates/project-init/.zsk/config.yaml +8 -96
  65. package/templates/project-init/.zsk/docs/SYSTEM-SPEC.md +2 -0
  66. package/templates/project-init/.zsk/raws/index.md +11 -0
  67. package/templates/project-init/.zsk/raws/prepare/backend/index.md +4 -0
  68. package/templates/project-init/.zsk/raws/prepare/design/index.md +3 -0
  69. package/templates/project-init/.zsk/raws/prepare/index.md +4 -0
  70. package/templates/project-init/.zsk/raws/prepare/product/index.md +4 -0
  71. package/templates/project-init/.zsk/raws/prepare/qa/index.md +4 -0
  72. package/templates/project-init/.zsk/raws/prepare/ux/index.md +3 -0
  73. package/templates/project-init/.zsk/roles.yaml +129 -0
  74. package/templates/project-init/.zsk/raws/backend/index.md +0 -3
  75. package/templates/project-init/.zsk/raws/jira/index.md +0 -3
  76. package/templates/project-init/.zsk/raws/manual/index.md +0 -3
  77. package/templates/project-init/.zsk/raws/product/index.md +0 -3
  78. package/templates/project-init/.zsk/raws/qa/index.md +0 -3
  79. package/templates/project-init/.zsk/raws/ue/index.md +0 -3
@@ -1,132 +1,2 @@
1
- import pc from "picocolors";
2
- import { access, readdir } from "node:fs/promises";
3
- import { basename, extname, join, resolve } from "node:path";
4
- import { resolvePath } from "../core/targets.js";
5
- import { checkProjectConfig, readProjectConfig } from "../core/config.js";
6
- import { describeDiscoveredResource, describeResource, projectRelative, updateRawIndex, updateRawManifest, } from "../core/raw-manifest.js";
7
- import { getWorkspacePath } from "../core/workspace-layout.js";
8
- export async function run(opts = {}) {
9
- const target = opts.target ? resolvePath(opts.target) : process.cwd();
10
- const configCheck = await checkProjectConfig(target);
11
- for (const warning of configCheck.warnings) {
12
- console.warn(pc.yellow(`! ${warning.file}: ${warning.message}`));
13
- }
14
- if (!configCheck.ok) {
15
- console.error(pc.red("✗ zsk prep stopped: config check failed"));
16
- process.exit(1);
17
- }
18
- const config = await readProjectConfig(target);
19
- const sourceEntries = Object.entries(config.sources ?? {});
20
- const records = [];
21
- for (const [provider, source] of sourceEntries) {
22
- if (!source)
23
- continue;
24
- records.push(await describeResource(target, provider, source));
25
- }
26
- records.push(...(await discoverProjectSources(target)));
27
- const manifestPath = resolve(target, getWorkspacePath(config, "resourcesManifest"));
28
- const indexPath = resolve(target, getWorkspacePath(config, "resourcesRoot"), "index.md");
29
- await updateRawManifest(manifestPath, records);
30
- await updateRawIndex(indexPath, records);
31
- const unsynced = records.filter((record) => record.method === "unsynced").length;
32
- const modulesRoot = getWorkspacePath(config, "modulesRoot");
33
- console.log(pc.green("✓ zsk prep completed"));
34
- console.log(pc.dim(`config: ${configCheck.configFile}`));
35
- console.log(pc.dim(`manifest: ${manifestPath}`));
36
- console.log(pc.dim(`index: ${indexPath}`));
37
- console.log(pc.dim(`recorded ${records.length} raw source(s)`));
38
- if (unsynced > 0) {
39
- console.log(pc.yellow(`! ${unsynced} source origin(s) have no materialized snapshot yet`));
40
- }
41
- console.log(pc.dim(`AI-assisted module discovery uses .zsk/config.yaml plus ${modulesRoot}/{module}/module.yaml outputs. Create a module with zsk module init -m <module-id>.`));
42
- }
43
- async function discoverProjectSources(target) {
44
- const candidates = [
45
- { provider: "root-system-spec", type: "manual", path: "SYSTEM-SPEC.md", note: "root legacy/system spec candidate" },
46
- { provider: "root-project-config", type: "manual", path: "project-config.md", note: "root legacy project config candidate" },
47
- { provider: "root-docs", type: "manual", path: "docs", note: "root docs scanned as index-only source material" },
48
- { provider: "legacy-raws", type: "manual", path: ".raws", note: "legacy root raw source directory" },
49
- { provider: "legacy-issues", type: "manual", path: ".issues", note: "legacy root issue origin; default migration mode is index-only" },
50
- { provider: "legacy-playwright", type: "test_case", path: ".playwright", note: "legacy root Playwright origin; default migration mode is index-only" },
51
- { provider: "package", type: "manual", path: "package.json", note: "project package metadata" },
52
- { provider: "readme", type: "manual", path: "README.md", note: "project readme source" },
53
- ];
54
- const sourceFiles = await discoverSourceFiles(target);
55
- candidates.push(...sourceFiles);
56
- const records = [];
57
- const seen = new Set();
58
- for (const candidate of candidates) {
59
- if (seen.has(candidate.path))
60
- continue;
61
- seen.add(candidate.path);
62
- if (!(await exists(resolve(target, candidate.path))))
63
- continue;
64
- records.push(await describeDiscoveredResource(target, candidate.provider, candidate.type, candidate.path, "index-only", candidate.note));
65
- }
66
- return records;
67
- }
68
- async function discoverSourceFiles(target) {
69
- const roots = ["src", "test", "tests", "packages"];
70
- const result = [];
71
- for (const root of roots) {
72
- const abs = resolve(target, root);
73
- if (!(await exists(abs)))
74
- continue;
75
- for (const file of await collectFiles(abs, 80)) {
76
- const name = basename(file).toLowerCase();
77
- const ext = extname(file).toLowerCase();
78
- const rel = projectRelative(target, file);
79
- if (/^(openapi|swagger)\.(ya?ml|json)$/.test(name) || name.includes("api-contract")) {
80
- result.push({ provider: `discovered-${slug(rel)}`, type: "api_contract", path: rel, note: "discovered API contract candidate" });
81
- continue;
82
- }
83
- if (/\.(spec|test)\.[cm]?[jt]sx?$/.test(name) || name.includes("case")) {
84
- result.push({ provider: `discovered-${slug(rel)}`, type: "test_case", path: rel, note: "discovered test/case candidate" });
85
- continue;
86
- }
87
- if ([".md", ".yaml", ".yml", ".json"].includes(ext) && isSourceLikePath(rel)) {
88
- result.push({ provider: `discovered-${slug(rel)}`, type: inferType(rel), path: rel, note: "discovered project source candidate" });
89
- }
90
- }
91
- }
92
- return result;
93
- }
94
- async function collectFiles(root, limit) {
95
- const entries = await readdir(root, { withFileTypes: true });
96
- const files = [];
97
- for (const entry of entries) {
98
- if (files.length >= limit)
99
- break;
100
- if (["node_modules", "dist", ".git"].includes(entry.name))
101
- continue;
102
- const path = join(root, entry.name);
103
- if (entry.isDirectory())
104
- files.push(...(await collectFiles(path, limit - files.length)));
105
- if (entry.isFile())
106
- files.push(path);
107
- }
108
- return files;
109
- }
110
- function inferType(path) {
111
- if (/srs|prd|requirement/i.test(path))
112
- return "prd";
113
- if (/design|ui|ux|wireframe|prototype|mockup|visual|asset|sketch|figma|modao|mastergo/i.test(path))
114
- return "design";
115
- return "manual";
116
- }
117
- function isSourceLikePath(path) {
118
- return /srs|prd|requirement|design|ui|ux|wireframe|prototype|mockup|visual|asset|sketch|figma|modao|mastergo/i.test(path);
119
- }
120
- function slug(value) {
121
- return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 64) || "source";
122
- }
123
- async function exists(path) {
124
- try {
125
- await access(path);
126
- return true;
127
- }
128
- catch {
129
- return false;
130
- }
131
- }
1
+ export { run } from "./prepare.js";
132
2
  //# sourceMappingURL=prep.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prep.js","sourceRoot":"","sources":["../../src/commands/prep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prep.js","sourceRoot":"","sources":["../../src/commands/prep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type PrepareSyncOptions } from "../core/prepare-sync.js";
2
+ export type PrepareOptions = {
3
+ target?: string;
4
+ };
5
+ export type PrepareAuthOptions = PrepareOptions & {
6
+ url?: string;
7
+ out?: string;
8
+ profile?: string;
9
+ };
10
+ export declare function inventory(opts?: PrepareOptions): Promise<void>;
11
+ export declare function draft(opts?: PrepareOptions): Promise<void>;
12
+ export declare function plan(opts?: PrepareOptions): Promise<void>;
13
+ export declare function run(opts?: PrepareOptions): Promise<void>;
14
+ export declare function sync(opts?: PrepareOptions & PrepareSyncOptions): Promise<void>;
15
+ export declare function auth(opts?: PrepareAuthOptions): Promise<void>;
16
+ export declare function authCheck(opts?: PrepareOptions & PrepareSyncOptions): Promise<void>;
17
+ export declare function migrateRaws(opts?: PrepareOptions): Promise<void>;
@@ -0,0 +1,259 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { dirname, resolve } from "node:path";
3
+ import pc from "picocolors";
4
+ import { resolvePath } from "../core/targets.js";
5
+ import { checkProjectConfig, flattenProjectSources, formatConfigIssues, readProjectConfig, resolveSourceSnapshot } from "../core/config.js";
6
+ import { buildPrepareArtifactBundle, writePrepareArtifactBundle, } from "../core/prepare-lifecycle.js";
7
+ import { buildRawMigrationPlan, checkPrepareAuth, syncPrepareSources, writeAuthLoginHelper, } from "../core/prepare-sync.js";
8
+ import { describeDiscoveredResource, describeResource, projectRelative, updateRawIndexes, updateRawManifest, } from "../core/raw-manifest.js";
9
+ import { writeStaffingPlan } from "../core/staffing-plan.js";
10
+ import { getWorkspacePath } from "../core/workspace-layout.js";
11
+ import { access, readdir } from "node:fs/promises";
12
+ import { basename, extname, join } from "node:path";
13
+ export async function inventory(opts = {}) {
14
+ const { target, config, bundle, configFile } = await prepareBundle(opts);
15
+ await writeJsonArtifact(bundle.artifacts.inventoryPath, bundle.inventory);
16
+ console.log(pc.green("✓ zsk prepare inventory completed"));
17
+ console.log(pc.dim(`config: ${configFile}`));
18
+ console.log(pc.dim(`inventory: ${bundle.artifacts.inventoryPath}`));
19
+ console.log(pc.dim(`scanned ${bundle.inventory.records.length} repository source candidate(s)`));
20
+ console.log(pc.dim(`evidence root: ${resolve(target, getWorkspacePath(config, "evidenceRoot"))}`));
21
+ }
22
+ export async function draft(opts = {}) {
23
+ const { bundle, configFile } = await prepareBundle(opts);
24
+ await writeTextArtifact(bundle.artifacts.draftPath, bundle.draftContent);
25
+ console.log(pc.green("✓ zsk prepare draft completed"));
26
+ console.log(pc.dim(`config: ${configFile}`));
27
+ console.log(pc.dim(`draft: ${bundle.artifacts.draftPath}`));
28
+ console.log(pc.dim(`matched ${bundle.inventory.records.length} repository source candidate(s)`));
29
+ }
30
+ export async function plan(opts = {}) {
31
+ const { bundle, configFile } = await prepareBundle(opts);
32
+ await writeJsonArtifact(bundle.artifacts.acquisitionPlanPath, bundle.acquisitionPlan);
33
+ await writeTextArtifact(bundle.artifacts.blockedSourcesPath, bundle.blockedSources);
34
+ await writeTextArtifact(bundle.artifacts.correspondenceQuestionsPath, bundle.correspondenceQuestions);
35
+ const blocked = bundle.acquisitionPlan.records.filter((record) => record.status !== "ready").length;
36
+ console.log(pc.green("✓ zsk prepare plan completed"));
37
+ console.log(pc.dim(`config: ${configFile}`));
38
+ console.log(pc.dim(`plan: ${bundle.artifacts.acquisitionPlanPath}`));
39
+ console.log(pc.dim(`blocked-sources: ${bundle.artifacts.blockedSourcesPath}`));
40
+ console.log(pc.dim(`questions: ${bundle.artifacts.correspondenceQuestionsPath}`));
41
+ console.log(pc.dim(`planned ${bundle.acquisitionPlan.records.length} prepare source(s); ${blocked} need follow-up`));
42
+ }
43
+ export async function run(opts = {}) {
44
+ const { target, config, bundle, configFile } = await prepareBundle(opts);
45
+ const records = [];
46
+ for (const entry of flattenProjectSources(config.sources)) {
47
+ records.push(await describeResource(target, entry.provider, { ...entry.source, snapshot: resolveSourceSnapshot(config, entry) }, { role: entry.rawLane, sourcePath: entry.path }));
48
+ }
49
+ records.push(...(await discoverProjectSources(target)));
50
+ const manifestPath = resolve(target, getWorkspacePath(config, "resourcesManifest"));
51
+ const rawRoot = getWorkspacePath(config, "resourcesRoot");
52
+ const indexPath = resolve(target, rawRoot, "index.md");
53
+ await updateRawManifest(manifestPath, records);
54
+ await updateRawIndexes(target, rawRoot, records);
55
+ await writePrepareArtifactBundle(bundle);
56
+ const staffing = await writePrepareRuntimeEvidence(target, config);
57
+ const unsynced = records.filter((record) => record.method === "unsynced").length;
58
+ const blocked = bundle.acquisitionPlan.records.filter((record) => record.status !== "ready").length;
59
+ const modulesRoot = getWorkspacePath(config, "modulesRoot");
60
+ console.log(pc.green("✓ zsk prep completed"));
61
+ console.log(pc.dim(`config: ${configFile}`));
62
+ console.log(pc.dim(`manifest: ${manifestPath}`));
63
+ console.log(pc.dim(`index: ${indexPath}`));
64
+ console.log(pc.dim(`inventory: ${bundle.artifacts.inventoryPath}`));
65
+ console.log(pc.dim(`draft: ${bundle.artifacts.draftPath}`));
66
+ console.log(pc.dim(`plan: ${bundle.artifacts.acquisitionPlanPath}`));
67
+ console.log(pc.dim(`blocked-sources: ${bundle.artifacts.blockedSourcesPath}`));
68
+ console.log(pc.dim(`questions: ${bundle.artifacts.correspondenceQuestionsPath}`));
69
+ console.log(pc.dim(`runtime-staffing: ${staffing.artifacts.markdownPath}`));
70
+ console.log(pc.dim(`recorded ${records.length} raw source(s)`));
71
+ if (unsynced > 0) {
72
+ console.log(pc.yellow(`! ${unsynced} source origin(s) have no materialized snapshot yet`));
73
+ }
74
+ if (blocked > 0) {
75
+ console.log(pc.yellow(`! ${blocked} prepare source(s) need follow-up before acquisition can proceed`));
76
+ }
77
+ console.log(pc.dim(`AI-assisted module discovery uses .zsk/config.yaml plus ${modulesRoot}/{module}/module.yaml outputs. Create a module with zsk module init -m <module-id>.`));
78
+ }
79
+ export async function sync(opts = {}) {
80
+ const { target, config, configFile } = await prepareBundle(opts);
81
+ const bundle = await runPrepareAction("sync", () => syncPrepareSources(target, config, opts));
82
+ const staffing = await writePrepareRuntimeEvidence(target, config);
83
+ const materialized = bundle.results.filter((record) => record.status === "materialized").length;
84
+ const blocked = bundle.results.filter((record) => ["blocked-auth", "source-gap", "failed"].includes(record.status)).length;
85
+ console.log(pc.green("✓ zsk prepare sync completed"));
86
+ console.log(pc.dim(`config: ${configFile}`));
87
+ console.log(pc.dim(`adapter-results: ${bundle.artifacts.adapterResultsDir}`));
88
+ console.log(pc.dim(`downstream-impact: ${bundle.artifacts.downstreamImpactPath}`));
89
+ console.log(pc.dim(`runtime-staffing: ${staffing.artifacts.markdownPath}`));
90
+ console.log(pc.dim(`synced ${bundle.results.length} source(s); ${materialized} materialized; ${blocked} blocked`));
91
+ if (blocked > 0) {
92
+ console.log(pc.yellow("! blocked sources preserved prior snapshots where present; inspect adapter-results before retrying"));
93
+ }
94
+ }
95
+ export async function auth(opts = {}) {
96
+ const { target, config } = await prepareBundle(opts);
97
+ const artifacts = await runPrepareAction("auth", () => writeAuthLoginHelper(target, config, opts));
98
+ console.log(pc.green("✓ zsk prepare auth helper written"));
99
+ console.log(pc.dim(`script: ${artifacts.authScriptPath}`));
100
+ console.log(pc.dim(`storageState: ${opts.out ? resolve(target, opts.out) : artifacts.authStatePath}`));
101
+ console.log(pc.dim("Run with Playwright installed, complete login once, then reuse the storageState path with prepare sync --auth-state or --auth-profile."));
102
+ }
103
+ export async function authCheck(opts = {}) {
104
+ const { target, config, configFile } = await prepareBundle(opts);
105
+ const bundle = await runPrepareAction("auth-check", () => checkPrepareAuth(target, config, opts));
106
+ const ready = bundle.results.filter((result) => ["ready", "reachable"].includes(result.status)).length;
107
+ const blocked = bundle.results.filter((result) => ["missing-auth", "blocked-auth", "source-gap", "failed"].includes(result.status)).length;
108
+ console.log(pc.green("✓ zsk prepare auth-check completed"));
109
+ console.log(pc.dim(`config: ${configFile}`));
110
+ console.log(pc.dim(`auth-check: ${bundle.artifacts.authCheckPath}`));
111
+ console.log(pc.dim(`checked ${bundle.results.length} source(s); ${ready} ready/reachable; ${blocked} blocked`));
112
+ for (const result of bundle.results) {
113
+ const sources = result.authSources.length > 0 ? result.authSources.join(", ") : "none";
114
+ const color = ["ready", "reachable"].includes(result.status) ? pc.green : pc.yellow;
115
+ console.log(color(`- ${result.sourcePath} [${result.status}] auth=${sources}; ${result.reason}`));
116
+ }
117
+ }
118
+ export async function migrateRaws(opts = {}) {
119
+ const { target, config, configFile } = await prepareBundle(opts);
120
+ const result = await buildRawMigrationPlan(target, config);
121
+ console.log(pc.green("✓ zsk prepare migrate-raws dry-run completed"));
122
+ console.log(pc.dim(`config: ${configFile}`));
123
+ console.log(pc.dim(`plan: ${result.artifacts.migrationPlanPath}`));
124
+ }
125
+ async function prepareBundle(opts) {
126
+ const target = opts.target ? resolvePath(opts.target) : process.cwd();
127
+ const configCheck = await checkProjectConfig(target);
128
+ for (const warning of configCheck.warnings) {
129
+ console.warn(pc.yellow(`! ${warning.file}: ${warning.message}`));
130
+ }
131
+ if (!configCheck.ok) {
132
+ console.error(pc.red("✗ zsk prepare stopped: config check failed"));
133
+ console.error(formatConfigIssues(configCheck.issues));
134
+ process.exit(1);
135
+ }
136
+ const config = await readProjectConfig(target);
137
+ const bundle = await buildPrepareArtifactBundle(target, config);
138
+ return {
139
+ target,
140
+ config,
141
+ bundle,
142
+ configFile: configCheck.configFile,
143
+ };
144
+ }
145
+ async function writeJsonArtifact(path, value) {
146
+ await mkdir(dirname(path), { recursive: true });
147
+ await writeFile(path, `${JSON.stringify(value, null, 2)}\n`, "utf8");
148
+ }
149
+ async function writeTextArtifact(path, value) {
150
+ await mkdir(dirname(path), { recursive: true });
151
+ await writeFile(path, value, "utf8");
152
+ }
153
+ async function runPrepareAction(name, action) {
154
+ try {
155
+ return await action();
156
+ }
157
+ catch (error) {
158
+ console.error(pc.red(`✗ zsk prepare ${name} failed`));
159
+ console.error(error instanceof Error ? error.message : String(error));
160
+ process.exit(1);
161
+ }
162
+ }
163
+ async function writePrepareRuntimeEvidence(target, config) {
164
+ return writeStaffingPlan(target, config, {
165
+ stage: "prepare",
166
+ skill: "prepare",
167
+ surface: "auto",
168
+ });
169
+ }
170
+ async function discoverProjectSources(target) {
171
+ const candidates = [
172
+ { provider: "root-system-spec", type: "manual", path: "SYSTEM-SPEC.md", note: "root legacy/system spec candidate" },
173
+ { provider: "root-project-config", type: "manual", path: "project-config.md", note: "root legacy project config candidate" },
174
+ { provider: "root-docs", type: "manual", path: "docs", note: "root docs scanned as index-only source material" },
175
+ { provider: "legacy-raws", type: "manual", path: ".raws", note: "legacy root raw source directory" },
176
+ { provider: "legacy-issues", type: "manual", path: ".issues", note: "legacy root issue origin; default migration mode is index-only" },
177
+ { provider: "legacy-playwright", type: "test_case", path: ".playwright", note: "legacy root Playwright origin; default migration mode is index-only" },
178
+ { provider: "package", type: "manual", path: "package.json", note: "project package metadata" },
179
+ { provider: "readme", type: "manual", path: "README.md", note: "project readme source" },
180
+ ];
181
+ const sourceFiles = await discoverSourceFiles(target);
182
+ candidates.push(...sourceFiles);
183
+ const records = [];
184
+ const seen = new Set();
185
+ for (const candidate of candidates) {
186
+ if (seen.has(candidate.path))
187
+ continue;
188
+ seen.add(candidate.path);
189
+ if (!(await exists(resolve(target, candidate.path))))
190
+ continue;
191
+ records.push(await describeDiscoveredResource(target, candidate.provider, candidate.type, candidate.path, "index-only", candidate.note));
192
+ }
193
+ return records;
194
+ }
195
+ async function discoverSourceFiles(target) {
196
+ const roots = ["src", "test", "tests", "packages"];
197
+ const result = [];
198
+ for (const root of roots) {
199
+ const abs = resolve(target, root);
200
+ if (!(await exists(abs)))
201
+ continue;
202
+ for (const file of await collectFiles(abs, 80)) {
203
+ const name = basename(file).toLowerCase();
204
+ const ext = extname(file).toLowerCase();
205
+ const rel = projectRelative(target, file);
206
+ if (/^(openapi|swagger)\.(ya?ml|json)$/.test(name) || name.includes("api-contract")) {
207
+ result.push({ provider: `discovered-${slug(rel)}`, type: "api_contract", path: rel, note: "discovered API contract candidate" });
208
+ continue;
209
+ }
210
+ if (/\.(spec|test)\.[cm]?[jt]sx?$/.test(name) || name.includes("case")) {
211
+ result.push({ provider: `discovered-${slug(rel)}`, type: "test_case", path: rel, note: "discovered test/case candidate" });
212
+ continue;
213
+ }
214
+ if ([".md", ".yaml", ".yml", ".json"].includes(ext) && isSourceLikePath(rel)) {
215
+ result.push({ provider: `discovered-${slug(rel)}`, type: inferType(rel), path: rel, note: "discovered project source candidate" });
216
+ }
217
+ }
218
+ }
219
+ return result;
220
+ }
221
+ async function collectFiles(root, limit) {
222
+ const entries = await readdir(root, { withFileTypes: true });
223
+ const files = [];
224
+ for (const entry of entries) {
225
+ if (files.length >= limit)
226
+ break;
227
+ if (["node_modules", "dist", ".git"].includes(entry.name))
228
+ continue;
229
+ const path = join(root, entry.name);
230
+ if (entry.isDirectory())
231
+ files.push(...(await collectFiles(path, limit - files.length)));
232
+ if (entry.isFile())
233
+ files.push(path);
234
+ }
235
+ return files;
236
+ }
237
+ function inferType(path) {
238
+ if (/srs|prd|requirement/i.test(path))
239
+ return "prd";
240
+ if (/design|ui|ux|wireframe|prototype|mockup|visual|asset|sketch|figma|modao|mastergo/i.test(path))
241
+ return "design";
242
+ return "manual";
243
+ }
244
+ function isSourceLikePath(path) {
245
+ return /srs|prd|requirement|design|ui|ux|wireframe|prototype|mockup|visual|asset|sketch|figma|modao|mastergo/i.test(path);
246
+ }
247
+ function slug(value) {
248
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 64) || "source";
249
+ }
250
+ async function exists(path) {
251
+ try {
252
+ await access(path);
253
+ return true;
254
+ }
255
+ catch {
256
+ return false;
257
+ }
258
+ }
259
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export type ProjectInitOptions = {
2
2
  target?: string;
3
+ template?: string;
3
4
  yes?: boolean;
4
5
  overwrite?: boolean;
5
6
  };
@@ -8,7 +8,8 @@ import { intro, outro, confirm, log, spinner, note } from "../ui/prompts.js";
8
8
  import { resolvePath } from "../core/targets.js";
9
9
  import { scaffoldTemplate, fileExists } from "../core/scaffolder.js";
10
10
  import { readPackageVersion, schemaUrl } from "../core/version.js";
11
- import { DEFAULT_WORKSPACE_PATHS, getWorkspacePath } from "../core/workspace-layout.js";
11
+ import { CORE_PREPARE_RAW_LANES, DEFAULT_WORKSPACE_PATHS, getWorkspacePath } from "../core/workspace-layout.js";
12
+ import { getTemplate, resolveTemplateId } from "../core/template-registry.js";
12
13
  import { mkdir, readFile, writeFile } from "node:fs/promises";
13
14
  import { join } from "node:path";
14
15
  const ZSK_GITIGNORE_MARKER = "# ZSK runtime and sensitive artifacts";
@@ -17,6 +18,7 @@ const ZSK_GITIGNORE_BLOCK = [
17
18
  "# Keep .zsk docs, modules, raws, issues, Playwright specs, and test plans versionable.",
18
19
  "!.zsk/",
19
20
  "!.zsk/**",
21
+ ".zsk/playwright/.auth/",
20
22
  ".zsk/modules/**/_playwright/.auth/",
21
23
  ".zsk/modules/**/_playwright/test-results/",
22
24
  ".zsk/modules/**/_playwright/playwright-report/",
@@ -33,6 +35,7 @@ const ZSK_GITIGNORE_BLOCK = [
33
35
  export async function run(opts = {}) {
34
36
  const target = opts.target ? resolvePath(opts.target) : process.cwd();
35
37
  const interactive = !opts.yes;
38
+ const template = getTemplate(resolveTemplateId(opts.template));
36
39
  if (interactive) {
37
40
  intro(`${pc.bold("zsk")} · 项目 bootstrap`);
38
41
  log.info(`目标:${pc.cyan(target)}`);
@@ -42,6 +45,7 @@ export async function run(opts = {}) {
42
45
  const existingSystemSpec = await fileExists(join(target, getWorkspacePath({}, "systemSpec")));
43
46
  const existingGitignore = await fileExists(join(target, ".gitignore"));
44
47
  const summaryPre = [
48
+ `template: ${pc.cyan(template.name)} (${template.id})`,
45
49
  `.zsk/config.yaml: ${existingConfig ? pc.yellow("已存在(跳过)") : pc.green("将创建")}`,
46
50
  `.zsk/docs/PROJECT-CONFIG.md: ${existingProjectConfig ? pc.yellow("已存在(跳过)") : pc.green("将创建")}`,
47
51
  `.zsk/docs/SYSTEM-SPEC.md: ${existingSystemSpec ? pc.yellow("已存在(跳过)") : pc.green("将创建")}`,
@@ -65,6 +69,8 @@ export async function run(opts = {}) {
65
69
  ZSK_VERSION: packageVersion,
66
70
  ZSK_CONFIG_SCHEMA_URL: schemaUrl(packageVersion, "zsk-config.schema.json"),
67
71
  ZSK_MODULE_SCHEMA_URL: schemaUrl(packageVersion, "module.schema.json"),
72
+ ZSK_TEMPLATE_ID: template.id,
73
+ ZSK_TEMPLATE_VERSION: String(template.version),
68
74
  INIT_TIMESTAMP: new Date().toISOString(),
69
75
  },
70
76
  });
@@ -81,10 +87,10 @@ export async function run(opts = {}) {
81
87
  const nextSteps = [
82
88
  "",
83
89
  `${pc.bold("下一步:")}`,
84
- `1. 编辑 ${pc.cyan(".zsk/config.yaml")},把 ${pc.yellow("<project-name>")} 改成项目名`,
85
- `2. 编辑 ${pc.cyan(".zsk/docs/PROJECT-CONFIG.md")},补齐项目技术栈、脚本、资源入口和 AI 查表锚点`,
90
+ `1. 编辑 ${pc.cyan(".zsk/config.yaml")},把 ${pc.yellow("<project-name>")} 改成项目名;默认模板是 ${pc.cyan(template.id)}`,
91
+ `2. 运行 ${pc.cyan("zsk config explain")} 查看模板补齐后的完整有效配置`,
86
92
  `3. 把 SRS / PRD / 设计资产 / API / 测试用例来源交给 AI,或运行 ${pc.cyan("zsk config setup")} 辅助填写 sources`,
87
- `4. 需要模块时运行 ${pc.cyan("zsk module init -m <module-id>")};模块问题、证据和 Playwright 产物会按需写入模块私有 _issues / _evidence / _playwright`,
93
+ `4. 需要显式改默认模板时运行 ${pc.cyan("zsk config eject roles|workflow|providers|gates|all")}`,
88
94
  ].join("\n");
89
95
  if (interactive) {
90
96
  note(summary + nextSteps, "bootstrap 摘要");
@@ -100,12 +106,8 @@ async function ensureWorkspaceDirectories(target) {
100
106
  DEFAULT_WORKSPACE_PATHS.docs,
101
107
  DEFAULT_WORKSPACE_PATHS.modules,
102
108
  DEFAULT_WORKSPACE_PATHS.raws,
103
- join(DEFAULT_WORKSPACE_PATHS.raws, "product"),
104
- join(DEFAULT_WORKSPACE_PATHS.raws, "ue"),
105
- join(DEFAULT_WORKSPACE_PATHS.raws, "backend"),
106
- join(DEFAULT_WORKSPACE_PATHS.raws, "qa"),
107
- join(DEFAULT_WORKSPACE_PATHS.raws, "jira"),
108
- join(DEFAULT_WORKSPACE_PATHS.raws, "manual"),
109
+ join(DEFAULT_WORKSPACE_PATHS.raws, "prepare"),
110
+ ...CORE_PREPARE_RAW_LANES.map((lane) => join(DEFAULT_WORKSPACE_PATHS.raws, "prepare", lane)),
109
111
  ].map((path) => mkdir(join(target, path), { recursive: true })));
110
112
  }
111
113
  async function ensureZskGitignore(target) {
@@ -1 +1 @@
1
- {"version":3,"file":"project-init.js","sourceRoot":"","sources":["../../src/commands/project-init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-init.js","sourceRoot":"","sources":["../../src/commands/project-init.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,wEAAwE;AACxE,8BAA8B;AAC9B,EAAE;AACF,oDAAoD;AAEpD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,oBAAoB,GAAG,uCAAuC,CAAC;AACrE,MAAM,mBAAmB,GAAG;IAC1B,oBAAoB;IACpB,wFAAwF;IACxF,QAAQ;IACR,UAAU;IACV,wBAAwB;IACxB,oCAAoC;IACpC,2CAA2C;IAC3C,gDAAgD;IAChD,qCAAqC;IACrC,4CAA4C;IAC5C,uCAAuC;IACvC,sCAAsC;IACtC,sCAAsC;IACtC,0CAA0C;IAC1C,qCAAqC;IACrC,oCAAoC;IACpC,oCAAoC;CACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AASb,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAA2B,EAAE;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACtE,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/D,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7E,MAAM,qBAAqB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACpG,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAEvE,MAAM,UAAU,GAAG;QACjB,aAAa,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,EAAE,GAAG;QACtD,qBAAqB,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9E,gCAAgC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAChG,gCAAgC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC7F,qBAAqB,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;QACrH,6BAA6B,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,CAAC,CAAC;YACb,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAE1B,MAAM,cAAc,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE;QAC5D,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAClC,SAAS,EAAE;YACT,WAAW,EAAE,cAAc;YAC3B,qBAAqB,EAAE,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC;YAC1E,qBAAqB,EAAE,SAAS,CAAC,cAAc,EAAE,oBAAoB,CAAC;YACtE,eAAe,EAAE,QAAQ,CAAC,EAAE;YAC5B,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9C,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACzC;KACF,CAAC,CAAC;IACH,MAAM,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE1D,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvB,MAAM,OAAO,GAAG;QACd,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK;QAClC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE;QACnE,gBAAgB,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,qCAAqC;KACjG;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG;QAChB,EAAE;QACF,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACpB,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QAC3G,SAAS,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB;QACvD,iDAAiD,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe;QAC3F,mBAAmB,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,EAAE;KACpF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,SAAS,EAAE,cAAc,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,MAAc;IACtD,MAAM,OAAO,CAAC,GAAG,CACf;QACE,uBAAuB,CAAC,IAAI;QAC5B,uBAAuB,CAAC,OAAO;QAC/B,uBAAuB,CAAC,IAAI;QAC5B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC;QAC7C,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KAC7F,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAChE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAc;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,mBAAmB,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,mBAAmB,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function list(): Promise<void>;
2
+ export declare function show(name?: string): Promise<void>;
@@ -0,0 +1,34 @@
1
+ import pc from "picocolors";
2
+ import YAML from "yaml";
3
+ import { getTemplate, listTemplates } from "../core/template-registry.js";
4
+ export async function list() {
5
+ const templates = listTemplates();
6
+ console.log(pc.green("✓ zsk templates"));
7
+ for (const template of templates) {
8
+ console.log([
9
+ `- ${template.id}`,
10
+ ` name: ${template.name}`,
11
+ ` version: ${template.version}`,
12
+ ` defaultMode: ${template.defaultMode}`,
13
+ ` defaultScale: ${template.defaultScale}`,
14
+ ` description: ${template.description}`,
15
+ ].join("\n"));
16
+ }
17
+ }
18
+ export async function show(name = "founder-os") {
19
+ const template = getTemplate(name);
20
+ const view = {
21
+ id: template.id,
22
+ name: template.name,
23
+ version: template.version,
24
+ defaultMode: template.defaultMode,
25
+ defaultScale: template.defaultScale,
26
+ aliases: template.aliases,
27
+ defaults: template.defaults,
28
+ ejectedFiles: template.ejectedFiles,
29
+ stages: template.stages,
30
+ };
31
+ console.log(pc.green(`✓ zsk template ${template.id}`));
32
+ process.stdout.write(`${YAML.stringify(view)}\n`);
33
+ }
34
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CACT;YACE,KAAK,QAAQ,CAAC,EAAE,EAAE;YAClB,WAAW,QAAQ,CAAC,IAAI,EAAE;YAC1B,cAAc,QAAQ,CAAC,OAAO,EAAE;YAChC,kBAAkB,QAAQ,CAAC,WAAW,EAAE;YACxC,mBAAmB,QAAQ,CAAC,YAAY,EAAE;YAC1C,kBAAkB,QAAQ,CAAC,WAAW,EAAE;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,YAAY;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG;QACX,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC"}