@captain_z/zsk 1.8.3 → 1.8.5

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 (143) hide show
  1. package/dist/bin.js +13 -0
  2. package/dist/bin.js.map +1 -1
  3. package/dist/commands/add-flow.d.ts +3 -7
  4. package/dist/commands/add-flow.js +7 -59
  5. package/dist/commands/add-flow.js.map +1 -1
  6. package/dist/commands/add.js +25 -104
  7. package/dist/commands/add.js.map +1 -1
  8. package/dist/commands/check.js +14 -575
  9. package/dist/commands/check.js.map +1 -1
  10. package/dist/commands/config.js +1 -1
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/demo.d.ts +5 -0
  13. package/dist/commands/demo.js +70 -297
  14. package/dist/commands/demo.js.map +1 -1
  15. package/dist/commands/doctor.js +9 -4
  16. package/dist/commands/doctor.js.map +1 -1
  17. package/dist/commands/gate.d.ts +1 -0
  18. package/dist/commands/gate.js +8 -2
  19. package/dist/commands/gate.js.map +1 -1
  20. package/dist/commands/prepare.js +7 -1
  21. package/dist/commands/prepare.js.map +1 -1
  22. package/dist/commands/project-init.js +30 -8
  23. package/dist/commands/project-init.js.map +1 -1
  24. package/dist/core/config.d.ts +68 -0
  25. package/dist/core/config.js +198 -15
  26. package/dist/core/config.js.map +1 -1
  27. package/dist/core/demo-auth.d.ts +30 -0
  28. package/dist/core/demo-auth.js +213 -0
  29. package/dist/core/demo-auth.js.map +1 -0
  30. package/dist/core/demo-scenarios.d.ts +62 -0
  31. package/dist/core/demo-scenarios.js +276 -0
  32. package/dist/core/demo-scenarios.js.map +1 -0
  33. package/dist/core/demo-sources.d.ts +37 -0
  34. package/dist/core/demo-sources.js +198 -0
  35. package/dist/core/demo-sources.js.map +1 -0
  36. package/dist/core/mcp-registry-discovery.d.ts +16 -0
  37. package/dist/core/mcp-registry-discovery.js +187 -0
  38. package/dist/core/mcp-registry-discovery.js.map +1 -0
  39. package/dist/core/origin-detection.js +1 -1
  40. package/dist/core/origin-detection.js.map +1 -1
  41. package/dist/core/prepare-artifacts.d.ts +16 -0
  42. package/dist/core/prepare-artifacts.js +25 -0
  43. package/dist/core/prepare-artifacts.js.map +1 -0
  44. package/dist/core/prepare-auth-helper.d.ts +8 -0
  45. package/dist/core/prepare-auth-helper.js +32 -0
  46. package/dist/core/prepare-auth-helper.js.map +1 -0
  47. package/dist/core/prepare-materialization.d.ts +8 -0
  48. package/dist/core/prepare-materialization.js +26 -0
  49. package/dist/core/prepare-materialization.js.map +1 -0
  50. package/dist/core/prepare-migration.d.ts +6 -0
  51. package/dist/core/prepare-migration.js +57 -0
  52. package/dist/core/prepare-migration.js.map +1 -0
  53. package/dist/core/prepare-reporting.d.ts +5 -0
  54. package/dist/core/prepare-reporting.js +106 -0
  55. package/dist/core/prepare-reporting.js.map +1 -0
  56. package/dist/core/prepare-routing.d.ts +12 -0
  57. package/dist/core/prepare-routing.js +182 -0
  58. package/dist/core/prepare-routing.js.map +1 -0
  59. package/dist/core/prepare-sync.d.ts +13 -53
  60. package/dist/core/prepare-sync.js +878 -359
  61. package/dist/core/prepare-sync.js.map +1 -1
  62. package/dist/core/prepare-utils.d.ts +6 -0
  63. package/dist/core/prepare-utils.js +35 -0
  64. package/dist/core/prepare-utils.js.map +1 -0
  65. package/dist/core/profile-bundle-installation.d.ts +55 -0
  66. package/dist/core/profile-bundle-installation.js +170 -0
  67. package/dist/core/profile-bundle-installation.js.map +1 -0
  68. package/dist/core/provider-policy.d.ts +26 -0
  69. package/dist/core/provider-policy.js +180 -0
  70. package/dist/core/provider-policy.js.map +1 -0
  71. package/dist/core/provider-readiness.d.ts +39 -0
  72. package/dist/core/provider-readiness.js +78 -0
  73. package/dist/core/provider-readiness.js.map +1 -0
  74. package/dist/core/source-adapter-normalization.d.ts +31 -0
  75. package/dist/core/source-adapter-normalization.js +235 -0
  76. package/dist/core/source-adapter-normalization.js.map +1 -0
  77. package/dist/core/source-snapshot-adapters.d.ts +59 -0
  78. package/dist/core/source-snapshot-adapters.js +60 -0
  79. package/dist/core/source-snapshot-adapters.js.map +1 -0
  80. package/dist/core/staffing-plan.d.ts +1 -0
  81. package/dist/core/staffing-plan.js +113 -21
  82. package/dist/core/staffing-plan.js.map +1 -1
  83. package/dist/core/stage-clarity-verification.d.ts +31 -0
  84. package/dist/core/stage-clarity-verification.js +316 -0
  85. package/dist/core/stage-clarity-verification.js.map +1 -0
  86. package/dist/core/stage-output-quality.d.ts +3 -0
  87. package/dist/core/stage-output-quality.js +122 -0
  88. package/dist/core/stage-output-quality.js.map +1 -0
  89. package/dist/core/stage-quality-artifacts.d.ts +15 -0
  90. package/dist/core/stage-quality-artifacts.js +421 -0
  91. package/dist/core/stage-quality-artifacts.js.map +1 -0
  92. package/dist/core/stage-quality-contracts.d.ts +105 -0
  93. package/dist/core/stage-quality-contracts.js +2 -0
  94. package/dist/core/stage-quality-contracts.js.map +1 -0
  95. package/dist/core/stage-quality-criteria.d.ts +9 -0
  96. package/dist/core/stage-quality-criteria.js +286 -0
  97. package/dist/core/stage-quality-criteria.js.map +1 -0
  98. package/dist/core/stage-quality-rendering.d.ts +15 -0
  99. package/dist/core/stage-quality-rendering.js +240 -0
  100. package/dist/core/stage-quality-rendering.js.map +1 -0
  101. package/dist/core/stage-quality.d.ts +4 -59
  102. package/dist/core/stage-quality.js +54 -795
  103. package/dist/core/stage-quality.js.map +1 -1
  104. package/dist/core/template-registry.js +12 -15
  105. package/dist/core/template-registry.js.map +1 -1
  106. package/dist/core/workspace-conformance.d.ts +39 -0
  107. package/dist/core/workspace-conformance.js +603 -0
  108. package/dist/core/workspace-conformance.js.map +1 -0
  109. package/package.json +2 -2
  110. package/schemas/providers.schema.json +74 -0
  111. package/schemas/zsk-config.schema.json +417 -1
  112. package/templates/module/frontend-module/design.md +10 -0
  113. package/templates/module/frontend-module/proposal.md +8 -0
  114. package/templates/module/frontend-module/spec.md +7 -0
  115. package/templates/project-init/.zsk/README.md +48 -0
  116. package/templates/project-init/.zsk/config.yaml +37 -0
  117. package/templates/project-init/.zsk/docs/CONFIG-SCHEMA.md +127 -0
  118. package/templates/project-init/.zsk/docs/PROJECT-CONFIG.md +53 -5
  119. package/templates/project-init/.zsk/docs/README.md +10 -0
  120. package/templates/project-init/.zsk/docs/SECURITY.md +34 -0
  121. package/templates/project-init/.zsk/docs/SYSTEM-SPEC.md +39 -7
  122. package/templates/project-init/.zsk/evidence/README.md +15 -0
  123. package/templates/project-init/.zsk/issues/README.md +10 -0
  124. package/templates/project-init/.zsk/modules/README.md +19 -0
  125. package/templates/project-init/.zsk/modules/index.md +9 -5
  126. package/templates/project-init/.zsk/raws/README.md +34 -0
  127. package/templates/project-init/.zsk/roles.yaml +36 -105
  128. package/templates/project-init/.zsk/templates/config.examples.yaml +83 -0
  129. package/templates/project-init/.zsk/templates/issue-card.md +23 -0
  130. package/templates/project-init/.zsk/templates/module/README.md +13 -0
  131. package/templates/project-init/.zsk/templates/module/design.md +22 -0
  132. package/templates/project-init/.zsk/templates/module/module.yaml +15 -0
  133. package/templates/project-init/.zsk/templates/module/proposal.md +20 -0
  134. package/templates/project-init/.zsk/templates/module/spec.md +22 -0
  135. package/templates/project-init/.zsk/templates/module/tasks.md +16 -0
  136. package/templates/project-init/.zsk/raws/index.md +0 -18
  137. package/templates/project-init/.zsk/raws/manifest.json +0 -4
  138. package/templates/project-init/.zsk/raws/prepare/backend/index.md +0 -4
  139. package/templates/project-init/.zsk/raws/prepare/design/index.md +0 -3
  140. package/templates/project-init/.zsk/raws/prepare/index.md +0 -4
  141. package/templates/project-init/.zsk/raws/prepare/product/index.md +0 -4
  142. package/templates/project-init/.zsk/raws/prepare/qa/index.md +0 -4
  143. package/templates/project-init/.zsk/raws/prepare/ux/index.md +0 -3
@@ -0,0 +1,187 @@
1
+ import { access, readFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join, resolve } from "node:path";
4
+ import { sanitizeCommandLabel } from "./provider-policy.js";
5
+ export async function discoverMcpRegistries(target) {
6
+ const root = resolve(target);
7
+ const warnings = [];
8
+ const registrations = [];
9
+ const candidates = [
10
+ {
11
+ host: "workspace",
12
+ scope: "workspace",
13
+ path: resolve(root, ".mcp.json"),
14
+ displayPath: ".mcp.json",
15
+ },
16
+ {
17
+ host: "vscode",
18
+ scope: "workspace",
19
+ path: resolve(root, ".vscode", "mcp.json"),
20
+ displayPath: ".vscode/mcp.json",
21
+ },
22
+ ...vscodeUserConfigPaths(),
23
+ ];
24
+ for (const candidate of candidates) {
25
+ if (!(await exists(candidate.path)))
26
+ continue;
27
+ let parsed;
28
+ try {
29
+ parsed = JSON.parse(stripJsonComments(await readFile(candidate.path, "utf8")));
30
+ }
31
+ catch (error) {
32
+ warnings.push(`${candidate.displayPath}: ${error instanceof Error ? error.message : String(error)}`);
33
+ continue;
34
+ }
35
+ if (!isRecord(parsed))
36
+ continue;
37
+ for (const [name, raw] of registryServerEntries(parsed)) {
38
+ if (!isRecord(raw))
39
+ continue;
40
+ registrations.push({
41
+ name: normalizeProviderName(name),
42
+ host: candidate.host,
43
+ scope: candidate.scope,
44
+ configPath: candidate.displayPath,
45
+ transport: transportFor(raw),
46
+ commandLabel: sanitizeCommandLabel(stringValue(raw, "command")),
47
+ url: sanitizeUrlLabel(stringValue(raw, "url")),
48
+ envKeys: envKeys(raw),
49
+ staticTools: staticTools(raw),
50
+ });
51
+ }
52
+ }
53
+ return { registrations, warnings };
54
+ }
55
+ function registryServerEntries(value) {
56
+ return [
57
+ ...(isRecord(value.servers) ? Object.entries(value.servers) : []),
58
+ ...(isRecord(value.mcpServers) ? Object.entries(value.mcpServers) : []),
59
+ ];
60
+ }
61
+ function vscodeUserConfigPaths() {
62
+ const home = homedir();
63
+ return [
64
+ {
65
+ host: "vscode",
66
+ scope: "user",
67
+ path: join(home, "Library", "Application Support", "Code", "User", "mcp.json"),
68
+ displayPath: "vscode:user:stable:mcp.json",
69
+ },
70
+ {
71
+ host: "vscode",
72
+ scope: "user",
73
+ path: join(home, "Library", "Application Support", "Code - Insiders", "User", "mcp.json"),
74
+ displayPath: "vscode:user:insiders:mcp.json",
75
+ },
76
+ {
77
+ host: "vscode",
78
+ scope: "user",
79
+ path: join(home, ".config", "Code", "User", "mcp.json"),
80
+ displayPath: "vscode:user:stable:mcp.json",
81
+ },
82
+ {
83
+ host: "vscode",
84
+ scope: "user",
85
+ path: join(home, ".config", "Code - Insiders", "User", "mcp.json"),
86
+ displayPath: "vscode:user:insiders:mcp.json",
87
+ },
88
+ ];
89
+ }
90
+ function transportFor(value) {
91
+ const type = stringValue(value, "type")?.toLowerCase();
92
+ if (type === "sse")
93
+ return "sse";
94
+ if (type === "http" || type === "streamable-http")
95
+ return "http";
96
+ if (stringValue(value, "url"))
97
+ return "http";
98
+ if (stringValue(value, "command"))
99
+ return "stdio";
100
+ return undefined;
101
+ }
102
+ function sanitizeUrlLabel(value) {
103
+ if (!value)
104
+ return undefined;
105
+ try {
106
+ const url = new URL(value);
107
+ if (url.protocol !== "http:" && url.protocol !== "https:")
108
+ return undefined;
109
+ return `${url.origin}${url.pathname}`;
110
+ }
111
+ catch {
112
+ return undefined;
113
+ }
114
+ }
115
+ function envKeys(value) {
116
+ const env = value.env;
117
+ if (!isRecord(env))
118
+ return [];
119
+ return Object.keys(env).sort();
120
+ }
121
+ function staticTools(value) {
122
+ const tools = value.tools;
123
+ if (!Array.isArray(tools))
124
+ return undefined;
125
+ const result = tools
126
+ .filter((item) => typeof item === "string" && item.trim().length > 0)
127
+ .map((item) => item.trim());
128
+ return result.length > 0 ? Array.from(new Set(result)).sort() : undefined;
129
+ }
130
+ function stripJsonComments(input) {
131
+ let output = "";
132
+ let inString = false;
133
+ let escaped = false;
134
+ for (let i = 0; i < input.length; i += 1) {
135
+ const char = input[i] ?? "";
136
+ const next = input[i + 1] ?? "";
137
+ if (inString) {
138
+ output += char;
139
+ escaped = char === "\\" && !escaped;
140
+ if (char === "\"" && !escaped)
141
+ inString = false;
142
+ if (char !== "\\")
143
+ escaped = false;
144
+ continue;
145
+ }
146
+ if (char === "\"") {
147
+ inString = true;
148
+ output += char;
149
+ continue;
150
+ }
151
+ if (char === "/" && next === "/") {
152
+ while (i < input.length && input[i] !== "\n")
153
+ i += 1;
154
+ output += "\n";
155
+ continue;
156
+ }
157
+ if (char === "/" && next === "*") {
158
+ i += 2;
159
+ while (i < input.length && !(input[i] === "*" && input[i + 1] === "/"))
160
+ i += 1;
161
+ i += 1;
162
+ continue;
163
+ }
164
+ output += char;
165
+ }
166
+ return output;
167
+ }
168
+ function normalizeProviderName(value) {
169
+ return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
170
+ }
171
+ function stringValue(value, key) {
172
+ const item = value[key];
173
+ return typeof item === "string" && item.trim().length > 0 ? item : undefined;
174
+ }
175
+ function isRecord(value) {
176
+ return typeof value === "object" && value !== null && !Array.isArray(value);
177
+ }
178
+ async function exists(path) {
179
+ try {
180
+ await access(path);
181
+ return true;
182
+ }
183
+ catch {
184
+ return false;
185
+ }
186
+ }
187
+ //# sourceMappingURL=mcp-registry-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-registry-discovery.js","sourceRoot":"","sources":["../../src/core/mcp-registry-discovery.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ const GENERIC_URL_KINDS = new Set(["url", "remote", "online", "web", "link"]);
2
2
  export function inferSourceOrigin(source) {
3
3
  const origin = source.origin;
4
4
  const explicitKind = normalizeKind(origin?.kind ?? source.kind);
5
- const provider = normalizeKind(origin?.provider);
5
+ const provider = normalizeKind(origin?.provider ?? source.provider ?? source.adapter ?? source.mcpProvider);
6
6
  const path = firstString(origin?.path, source.path);
7
7
  const url = firstString(origin?.url);
8
8
  const repository = firstString(origin?.repository);
@@ -1 +1 @@
1
- {"version":3,"file":"origin-detection.js","sourceRoot":"","sources":["../../src/core/origin-detection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"origin-detection.js","sourceRoot":"","sources":["../../src/core/origin-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type ProjectConfig } from "./config.js";
2
+ export type PrepareSyncArtifacts = {
3
+ runId: string;
4
+ dir: string;
5
+ adapterResultsDir: string;
6
+ providerReadinessDir: string;
7
+ authCheckPath: string;
8
+ downstreamImpactPath: string;
9
+ authScriptPath: string;
10
+ authStatePath: string;
11
+ migrationPlanPath: string;
12
+ syncReportPath: string;
13
+ };
14
+ export declare function resolvePrepareSyncArtifacts(target: string, config: ProjectConfig, runId: string): PrepareSyncArtifacts;
15
+ export declare function prepareAuthRoot(artifacts: PrepareSyncArtifacts): string;
16
+ export declare function createSyncRunId(now?: Date): string;
@@ -0,0 +1,25 @@
1
+ import { dirname, join, resolve } from "node:path";
2
+ import { getWorkspacePath } from "./workspace-layout.js";
3
+ export function resolvePrepareSyncArtifacts(target, config, runId) {
4
+ const dir = resolve(target, getWorkspacePath(config, "evidenceRoot"), "prepare", runId);
5
+ const authDir = resolve(target, getWorkspacePath(config, "playwrightRoot"), ".auth");
6
+ return {
7
+ runId,
8
+ dir,
9
+ adapterResultsDir: join(dir, "adapter-results"),
10
+ providerReadinessDir: join(dir, "provider-readiness"),
11
+ authCheckPath: join(dir, "auth-check.json"),
12
+ downstreamImpactPath: join(dir, "downstream-impact.md"),
13
+ authScriptPath: join(authDir, "login.mjs"),
14
+ authStatePath: join(authDir, "user_data.json"),
15
+ migrationPlanPath: join(dir, "raws-migration-plan.md"),
16
+ syncReportPath: resolve(target, getWorkspacePath(config, "evidenceRoot"), "prepare", "sync-report.md"),
17
+ };
18
+ }
19
+ export function prepareAuthRoot(artifacts) {
20
+ return dirname(artifacts.authScriptPath);
21
+ }
22
+ export function createSyncRunId(now = new Date()) {
23
+ return now.toISOString().replace(/[:.]/g, "-");
24
+ }
25
+ //# sourceMappingURL=prepare-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-artifacts.js","sourceRoot":"","sources":["../../src/core/prepare-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAezD,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,MAAqB,EACrB,KAAa;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;IACrF,OAAO;QACL,KAAK;QACL,GAAG;QACH,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC;QAC/C,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC;QACrD,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC;QAC3C,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC;QACvD,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;QAC1C,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QAC9C,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,wBAAwB,CAAC;QACtD,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC;KACvG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAA+B;IAC7D,OAAO,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IAC9C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ProjectConfig } from "./config.js";
2
+ import { type PrepareSyncArtifacts } from "./prepare-artifacts.js";
3
+ export declare function writeAuthLoginHelper(target: string, config: ProjectConfig, opts?: {
4
+ url?: string;
5
+ out?: string;
6
+ profile?: string;
7
+ runId?: string;
8
+ }): Promise<PrepareSyncArtifacts>;
@@ -0,0 +1,32 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { dirname, resolve } from "node:path";
3
+ import { createSyncRunId, prepareAuthRoot, resolvePrepareSyncArtifacts, } from "./prepare-artifacts.js";
4
+ import { isPathInside, resolvePlaywrightAuthProfilePath, } from "./workspace-conformance.js";
5
+ export async function writeAuthLoginHelper(target, config, opts = {}) {
6
+ const artifacts = resolvePrepareSyncArtifacts(target, config, opts.runId ?? createSyncRunId());
7
+ const statePath = opts.out ? resolve(target, opts.out) : resolvePlaywrightAuthProfilePath(target, config, opts.profile);
8
+ const authRoot = prepareAuthRoot(artifacts);
9
+ if (!isPathInside(authRoot, statePath)) {
10
+ throw new Error(`Playwright storageState output must stay under ${authRoot}`);
11
+ }
12
+ const script = [
13
+ `import { chromium } from "playwright";`,
14
+ ``,
15
+ `const targetUrl = process.env.ZSK_PREPARE_AUTH_URL ?? ${JSON.stringify(opts.url ?? "about:blank")};`,
16
+ `const storageStatePath = process.env.ZSK_PLAYWRIGHT_STORAGE_STATE ?? ${JSON.stringify(statePath)};`,
17
+ `const browser = await chromium.launch({ headless: false });`,
18
+ `const context = await browser.newContext();`,
19
+ `const page = await context.newPage();`,
20
+ `await page.goto(targetUrl, { waitUntil: "domcontentloaded" });`,
21
+ `console.log("Complete login in the opened browser, then press Enter here to save storageState.");`,
22
+ `await new Promise((resolve) => process.stdin.once("data", resolve));`,
23
+ `await context.storageState({ path: storageStatePath });`,
24
+ `console.log(\`Saved Playwright storageState to ${"${storageStatePath}"}\`);`,
25
+ `await browser.close();`,
26
+ ``,
27
+ ].join("\n");
28
+ await mkdir(dirname(artifacts.authScriptPath), { recursive: true });
29
+ await writeFile(artifacts.authScriptPath, script, "utf8");
30
+ return { ...artifacts, authStatePath: statePath };
31
+ }
32
+ //# sourceMappingURL=prepare-auth-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-auth-helper.js","sourceRoot":"","sources":["../../src/core/prepare-auth-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EACL,eAAe,EACf,eAAe,EACf,2BAA2B,GAE5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,MAAqB,EACrB,OAAyE,EAAE;IAE3E,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;IAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxH,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,QAAQ,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,MAAM,GAAG;QACb,wCAAwC;QACxC,EAAE;QACF,yDAAyD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG;QACrG,wEAAwE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;QACpG,6DAA6D;QAC7D,6CAA6C;QAC7C,uCAAuC;QACvC,gEAAgE;QAChE,mGAAmG;QACnG,sEAAsE;QACtE,yDAAyD;QACzD,kDAAkD,qBAAqB,MAAM;QAC7E,wBAAwB;QACxB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type PreparedSnapshotWrite = {
2
+ snapshot: string;
3
+ snapshotHash: string;
4
+ changed: boolean;
5
+ };
6
+ export declare function writePreparedSnapshot(target: string, snapshotPath: string, content: string, previousSnapshotHash: string | undefined): Promise<PreparedSnapshotWrite>;
7
+ export declare function hashIfExists(path: string): Promise<string | undefined>;
8
+ export declare function sha256(path: string): Promise<string>;
@@ -0,0 +1,26 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { dirname, relative } from "node:path";
4
+ export async function writePreparedSnapshot(target, snapshotPath, content, previousSnapshotHash) {
5
+ await mkdir(dirname(snapshotPath), { recursive: true });
6
+ await writeFile(snapshotPath, content, "utf8");
7
+ const snapshotHash = await sha256(snapshotPath);
8
+ return {
9
+ snapshot: relative(target, snapshotPath),
10
+ snapshotHash,
11
+ changed: previousSnapshotHash !== snapshotHash,
12
+ };
13
+ }
14
+ export async function hashIfExists(path) {
15
+ try {
16
+ return await sha256(path);
17
+ }
18
+ catch {
19
+ return undefined;
20
+ }
21
+ }
22
+ export async function sha256(path) {
23
+ const content = await readFile(path);
24
+ return `sha256:${createHash("sha256").update(content).digest("hex")}`;
25
+ }
26
+ //# sourceMappingURL=prepare-materialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-materialization.js","sourceRoot":"","sources":["../../src/core/prepare-materialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQ9C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,YAAoB,EACpB,OAAe,EACf,oBAAwC;IAExC,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAChD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QACxC,YAAY;QACZ,OAAO,EAAE,oBAAoB,KAAK,YAAY;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ProjectConfig } from "./config.js";
2
+ import { type PrepareSyncArtifacts } from "./prepare-artifacts.js";
3
+ export declare function buildRawMigrationPlan(target: string, config: ProjectConfig, runId?: string): Promise<{
4
+ artifacts: PrepareSyncArtifacts;
5
+ content: string;
6
+ }>;
@@ -0,0 +1,57 @@
1
+ import { mkdir, readdir, writeFile } from "node:fs/promises";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { createSyncRunId, resolvePrepareSyncArtifacts, } from "./prepare-artifacts.js";
4
+ import { getWorkspacePath } from "./workspace-layout.js";
5
+ export async function buildRawMigrationPlan(target, config, runId = createSyncRunId()) {
6
+ const artifacts = resolvePrepareSyncArtifacts(target, config, runId);
7
+ const prepareRoot = resolve(target, getWorkspacePath(config, "resourcesRoot"), "prepare");
8
+ const staleNames = new Set([
9
+ "qa-engineer",
10
+ "test-engineer",
11
+ "backend-engineer",
12
+ "frontend-engineer",
13
+ "product-manager",
14
+ "designer",
15
+ "jira",
16
+ "confluence",
17
+ "figma",
18
+ "modao",
19
+ "manual",
20
+ "provider",
21
+ "version",
22
+ ]);
23
+ const entries = await safeReadDir(prepareRoot);
24
+ const findings = entries
25
+ .filter((entry) => entry.isDirectory() && isMigrationLaneCandidate(entry.name, staleNames))
26
+ .map((entry) => ({
27
+ path: join(".zsk/raws/prepare", entry.name),
28
+ action: "dry-run only; keep readable, require explicit migration before rewriting references",
29
+ }));
30
+ const content = [
31
+ "# Raw Migration Plan",
32
+ "",
33
+ "Dry-run report only. No files were moved, deleted, or rewritten.",
34
+ "",
35
+ findings.length === 0
36
+ ? "No stale provider/method/version prepare lanes were found."
37
+ : findings.map((item) => `- \`${item.path}\`: ${item.action}`).join("\n"),
38
+ "",
39
+ ].join("\n");
40
+ await mkdir(dirname(artifacts.migrationPlanPath), { recursive: true });
41
+ await writeFile(artifacts.migrationPlanPath, content, "utf8");
42
+ return { artifacts, content };
43
+ }
44
+ async function safeReadDir(path) {
45
+ try {
46
+ return await readdir(path, { withFileTypes: true });
47
+ }
48
+ catch {
49
+ return [];
50
+ }
51
+ }
52
+ function isMigrationLaneCandidate(value, staleNames) {
53
+ return (staleNames.has(value) ||
54
+ /^v?\d+(?:[._-]\d+)*$/i.test(value) ||
55
+ /^(sprint|iteration|release)[-_]?\d*/i.test(value));
56
+ }
57
+ //# sourceMappingURL=prepare-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-migration.js","sourceRoot":"","sources":["../../src/core/prepare-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EACL,eAAe,EACf,2BAA2B,GAE5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,MAAqB,EACrB,KAAK,GAAG,eAAe,EAAE;IAEzB,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;QACzB,aAAa;QACb,eAAe;QACf,kBAAkB;QAClB,mBAAmB;QACnB,iBAAiB;QACjB,UAAU;QACV,MAAM;QACN,YAAY;QACZ,OAAO;QACP,OAAO;QACP,QAAQ;QACR,UAAU;QACV,SAAS;KACV,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO;SACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAC1F,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC;QAC3C,MAAM,EAAE,qFAAqF;KAC9F,CAAC,CAAC,CAAC;IACN,MAAM,OAAO,GAAG;QACd,sBAAsB;QACtB,EAAE;QACF,kEAAkE;QAClE,EAAE;QACF,QAAQ,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,4DAA4D;YAC9D,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3E,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,SAAS,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,UAAuB;IACtE,OAAO,CACL,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,CACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type SourceEntry } from "./config.js";
2
+ import { type PrepareRouteResult } from "./prepare-routing.js";
3
+ import { type PrepareSyncResult } from "./source-snapshot-adapters.js";
4
+ export declare function renderDownstreamImpact(results: PrepareSyncResult[]): string;
5
+ export declare function renderPreparationReport(entries: SourceEntry[], results: PrepareSyncResult[], routes: PrepareRouteResult[]): string;
@@ -0,0 +1,106 @@
1
+ import { escapeTable, titleCase } from "./prepare-utils.js";
2
+ export function renderDownstreamImpact(results) {
3
+ const changed = results.filter((result) => result.changed);
4
+ const blocked = results.filter((result) => ["blocked-auth", "source-gap", "failed"].includes(result.status));
5
+ return [
6
+ "# Downstream Impact",
7
+ "",
8
+ `Changed sources: ${changed.length}`,
9
+ `Blocked sources: ${blocked.length}`,
10
+ "",
11
+ changed.length === 0
12
+ ? "No downstream refresh is recommended from this sync run."
13
+ : changed.map((result) => `- \`${result.sourcePath}\`: snapshot changed; review dependent proposal/spec/design/tasks/tests before claiming freshness.`).join("\n"),
14
+ "",
15
+ blocked.length === 0
16
+ ? "No blocked sources."
17
+ : blocked.map((result) => `- \`${result.sourcePath}\` [${result.status}]: ${result.reason}`).join("\n"),
18
+ "",
19
+ ].join("\n");
20
+ }
21
+ export function renderPreparationReport(entries, results, routes) {
22
+ const entryByPath = new Map(entries.map((entry) => [entry.path, entry]));
23
+ const groups = new Map();
24
+ for (const result of results) {
25
+ const entry = entryByPath.get(result.sourcePath);
26
+ const area = entry?.area ?? areaFromResult(result);
27
+ const route = findRouteSummary(routes, result);
28
+ const row = [
29
+ result.sourceKey,
30
+ preparationState(result),
31
+ result.reason,
32
+ [result.snapshot, route?.output].filter(Boolean).join("<br>") || "-",
33
+ preparationNextAction(result, route),
34
+ ].map((value) => escapeTable(value)).join(" | ");
35
+ const rows = groups.get(area) ?? [];
36
+ rows.push(`| ${row} |`);
37
+ groups.set(area, rows);
38
+ }
39
+ const sections = [...groups.entries()]
40
+ .sort(([a], [b]) => a.localeCompare(b))
41
+ .flatMap(([area, rows]) => [
42
+ `## ${area}`,
43
+ "",
44
+ "| Resource | State | Reason | Output | Next |",
45
+ "| --- | --- | --- | --- | --- |",
46
+ ...rows,
47
+ "",
48
+ ]);
49
+ const routeSummary = routes.length === 0
50
+ ? ["No routes were applied in this sync run.", ""]
51
+ : [
52
+ "## Routes",
53
+ "",
54
+ "| From | Artifact | State | Output | Reason |",
55
+ "| --- | --- | --- | --- | --- |",
56
+ ...routes.map((route) => `| ${escapeTable(route.from)} | ${escapeTable(route.module ? `${route.module}/${route.artifact}` : route.artifact)} | ${escapeTable(route.status)} | ${escapeTable(route.output ?? "-")} | ${escapeTable(route.reason)} |`),
57
+ "",
58
+ ];
59
+ return [
60
+ "# Preparation Report",
61
+ "",
62
+ `Generated: ${new Date().toISOString()}`,
63
+ "",
64
+ sections.length > 0 ? sections.join("\n") : "No resources were selected for sync.\n",
65
+ ...routeSummary,
66
+ ].join("\n");
67
+ }
68
+ function findRouteSummary(routes, result) {
69
+ return routes.find((route) => route.from === result.sourceKey ||
70
+ route.from === result.sourcePath ||
71
+ result.sourcePath === `resources/${route.from}` ||
72
+ route.from === result.provider);
73
+ }
74
+ function areaFromResult(result) {
75
+ if (result.rawLane === "backend")
76
+ return "Backend Services";
77
+ if (result.rawLane === "design" || result.rawLane === "ux" || result.rawLane === "ue")
78
+ return "Design";
79
+ if (result.rawLane === "qa")
80
+ return "Issues";
81
+ if (result.rawLane === "product")
82
+ return result.provider === "confluence" ? "Confluence" : "Product";
83
+ return result.rawLane ? titleCase(result.rawLane) : "Custom";
84
+ }
85
+ function preparationState(result) {
86
+ if (result.status === "materialized" || result.status === "metadata-only")
87
+ return "OK";
88
+ if (result.status === "materialized-partial" || result.status === "skipped")
89
+ return "DEGRADED";
90
+ return "BLOCKED";
91
+ }
92
+ function preparationNextAction(result, route) {
93
+ const state = preparationState(result);
94
+ if (state === "OK" && route?.status === "routed")
95
+ return "Review routed module issue card.";
96
+ if (state === "OK")
97
+ return result.changed ? "Review downstream proposal/spec/design/tasks." : "No content refresh required.";
98
+ if (result.status === "blocked-auth")
99
+ return "Fix credentials, provider readiness, or allow-network/browser settings, then rerun sync.";
100
+ if (result.status === "source-gap")
101
+ return "Fix the configured origin or snapshot path, then rerun sync.";
102
+ if (result.status === "failed")
103
+ return "Inspect adapter-results for the error and rerun after repair.";
104
+ return "Inspect adapter-results before using downstream.";
105
+ }
106
+ //# sourceMappingURL=prepare-reporting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-reporting.js","sourceRoot":"","sources":["../../src/core/prepare-reporting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ProjectConfig } from "./config.js";
2
+ import { type PrepareSyncResult } from "./source-snapshot-adapters.js";
3
+ export type PrepareRouteResult = {
4
+ from: string;
5
+ artifact: string;
6
+ module?: string;
7
+ status: "routed" | "skipped" | "blocked";
8
+ output?: string;
9
+ reason: string;
10
+ };
11
+ export declare function routePreparedResources(target: string, config: ProjectConfig, results: PrepareSyncResult[]): Promise<PrepareRouteResult[]>;
12
+ export declare function findRouteResult(results: PrepareSyncResult[], from: string): PrepareSyncResult | undefined;