@zaip-ai/cli 1.3.7 → 1.3.8
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/README.md +30 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/services/stack-install.d.ts +14 -0
- package/dist/services/stack-install.d.ts.map +1 -0
- package/dist/services/stack-install.js +176 -0
- package/dist/services/stack-install.js.map +1 -0
- package/dist/services/stack-node.d.ts +12 -0
- package/dist/services/stack-node.d.ts.map +1 -0
- package/dist/services/stack-node.js +150 -0
- package/dist/services/stack-node.js.map +1 -0
- package/dist/services/stack-package-manager.d.ts +12 -0
- package/dist/services/stack-package-manager.d.ts.map +1 -0
- package/dist/services/stack-package-manager.js +178 -0
- package/dist/services/stack-package-manager.js.map +1 -0
- package/dist/services/stack-plan.d.ts +33 -0
- package/dist/services/stack-plan.d.ts.map +1 -0
- package/dist/services/stack-plan.js +116 -0
- package/dist/services/stack-plan.js.map +1 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/dashboard/.zaip-managed.json +31 -23
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog--czwAlcH.js → DashboardHelpDialog-VcLx9iOO.js} +722 -722
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BwnJpl02.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BomxqCBU.css → ProjectSettingsPage-GgzpZ_PY.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-CAqYVin1.js → TraceabilityWorkspace-DFZwIXSC.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-CblPpexd.js → index-Dyo_wpL4.js} +2 -2
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +15 -2
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +22 -6
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +2 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +0 -104
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +26 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-stack-versions.css +117 -0
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +119 -119
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +119 -119
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +153 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +161 -40
- package/templates/.agents/dashboard/stack-dependencies.json +14 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/comparative-audit.md +1 -1
- package/templates/.agents/requirements/context-engine.md +1 -1
- package/templates/.agents/requirements/cost-observability.md +1 -1
- package/templates/.agents/requirements/dashboard-launch.md +1 -1
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +1 -1
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +1 -1
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +1 -1
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/README.md +1 -1
- package/templates/template-manifest.json +51 -43
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B_Oj6Dlf.js +0 -3
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { access } from "node:fs/promises";
|
|
3
|
+
import { delimiter, dirname, join } from "node:path";
|
|
4
|
+
import { readOptional } from "./stack-plan.js";
|
|
5
|
+
export async function selectPackageManager(root, manifest) {
|
|
6
|
+
const detected = [];
|
|
7
|
+
for (const [name, files] of Object.entries({
|
|
8
|
+
npm: ["package-lock.json", "npm-shrinkwrap.json"],
|
|
9
|
+
pnpm: ["pnpm-lock.yaml", "pnpm-workspace.yaml"],
|
|
10
|
+
yarn: ["yarn.lock", ".yarnrc.yml"],
|
|
11
|
+
bun: ["bun.lock", "bun.lockb"],
|
|
12
|
+
})) {
|
|
13
|
+
for (const file of files)
|
|
14
|
+
if ((await readOptional(join(root, file))) !== null) {
|
|
15
|
+
detected.push(name);
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const declared = manifest.packageManager?.split("@")[0];
|
|
20
|
+
if (detected.length > 1 || (declared && detected.some((name) => name !== declared)))
|
|
21
|
+
throw new Error("Gerenciadores/lockfiles conflitantes: preserve apenas o gerenciador escolhido antes de repetir init.");
|
|
22
|
+
const name = declared ?? detected[0] ?? "npm";
|
|
23
|
+
if (name !== "npm" && name !== "pnpm" && name !== "yarn")
|
|
24
|
+
throw new Error(`Gerenciador ${name} não suportado para instalação automática; nenhum lockfile será convertido.`);
|
|
25
|
+
if ((await readOptional(join(root, ".pnp.cjs"))) !== null ||
|
|
26
|
+
/nodeLinker:\s*pnp/.test((await readOptional(join(root, ".yarnrc.yml"))) ?? ""))
|
|
27
|
+
throw new Error("Yarn PnP exige integração de resolução específica; use nodeLinker: node-modules antes de repetir init.");
|
|
28
|
+
if (name === "npm")
|
|
29
|
+
return resolveNpm();
|
|
30
|
+
// Corepack honors the project's pinned packageManager without changing global tools.
|
|
31
|
+
for (const base of executableDirectories()) {
|
|
32
|
+
const corepack = join(base, "node_modules/corepack/dist/corepack.js");
|
|
33
|
+
if (await exists(corepack))
|
|
34
|
+
return { name, command: process.execPath, prefix: [corepack, name] };
|
|
35
|
+
}
|
|
36
|
+
if (process.platform !== "win32")
|
|
37
|
+
return { name, command: name, prefix: [] };
|
|
38
|
+
for (const base of executableDirectories()) {
|
|
39
|
+
for (const file of [
|
|
40
|
+
`node_modules/${name}/bin/${name}.cjs`,
|
|
41
|
+
`node_modules/${name}/bin/${name}.js`,
|
|
42
|
+
]) {
|
|
43
|
+
if (await exists(join(base, file)))
|
|
44
|
+
return { name, command: process.execPath, prefix: [join(base, file)] };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// npm exec bootstraps the selected manager locally in its cache, without a global install.
|
|
48
|
+
const npm = await resolveNpm();
|
|
49
|
+
const spec = manifest.packageManager ?? `${name}@${name === "pnpm" ? "11.12.0" : "1.22.22"}`;
|
|
50
|
+
if (!/^(pnpm|yarn)@\d+\.\d+\.\d+(?:\+sha\d+\.[a-f0-9]+)?$/.test(spec))
|
|
51
|
+
throw new Error(`Versão inválida do gerenciador: ${spec}`);
|
|
52
|
+
return {
|
|
53
|
+
name,
|
|
54
|
+
command: npm.command,
|
|
55
|
+
prefix: [
|
|
56
|
+
...npm.prefix,
|
|
57
|
+
"exec",
|
|
58
|
+
"--yes",
|
|
59
|
+
"--ignore-scripts",
|
|
60
|
+
`--package=${spec.split("+")[0]}`,
|
|
61
|
+
"--",
|
|
62
|
+
name,
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async function resolveNpm() {
|
|
67
|
+
const inherited = process.env.npm_execpath;
|
|
68
|
+
if (inherited && /[\\/]npm(?:-cli)?\.js$/.test(inherited) && (await exists(inherited)))
|
|
69
|
+
return { name: "npm", command: process.execPath, prefix: [inherited] };
|
|
70
|
+
for (const base of executableDirectories()) {
|
|
71
|
+
const entry = join(base, "node_modules/npm/bin/npm-cli.js");
|
|
72
|
+
if (await exists(entry))
|
|
73
|
+
return { name: "npm", command: process.execPath, prefix: [entry] };
|
|
74
|
+
}
|
|
75
|
+
if (process.platform !== "win32")
|
|
76
|
+
return { name: "npm", command: "npm", prefix: [] };
|
|
77
|
+
throw new Error("npm não localizado junto ao Node.js ou no PATH. Repare a instalação do Node/npm e repita init.");
|
|
78
|
+
}
|
|
79
|
+
function executableDirectories() {
|
|
80
|
+
return [
|
|
81
|
+
...new Set([
|
|
82
|
+
dirname(process.execPath),
|
|
83
|
+
...(process.env.PATH ?? "").split(delimiter).filter(Boolean),
|
|
84
|
+
]),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
async function exists(path) {
|
|
88
|
+
try {
|
|
89
|
+
await access(path);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export const runPackageManager = async (manager, args, root) => new Promise((resolveRun, reject) => {
|
|
97
|
+
const env = {
|
|
98
|
+
...process.env,
|
|
99
|
+
CI: "1",
|
|
100
|
+
COREPACK_ENABLE_DOWNLOAD_PROMPT: "0",
|
|
101
|
+
YARN_ENABLE_SCRIPTS: "false",
|
|
102
|
+
YARN_ENABLE_IMMUTABLE_INSTALLS: "false",
|
|
103
|
+
};
|
|
104
|
+
// Ignore inherited production/omit/workspace selectors from npm exec: init needs dev tools too.
|
|
105
|
+
for (const key of Object.keys(env))
|
|
106
|
+
if (/^npm_config_(?:global|prefix|workspace|workspaces|production|omit|only|package_lock_only|dry_run|ignore_scripts|force|legacy_peer_deps|engine_strict)$/i.test(key))
|
|
107
|
+
delete env[key];
|
|
108
|
+
if (manager.nodeExecutable) {
|
|
109
|
+
const key = Object.keys(env).find((key) => key.toUpperCase() === "PATH") ?? "PATH";
|
|
110
|
+
env[key] =
|
|
111
|
+
`${dirname(manager.nodeExecutable)}${delimiter}${env[key] ?? ""}`;
|
|
112
|
+
}
|
|
113
|
+
const child = spawn(manager.command, [...manager.prefix, ...args], {
|
|
114
|
+
cwd: root,
|
|
115
|
+
env,
|
|
116
|
+
shell: false,
|
|
117
|
+
windowsHide: true,
|
|
118
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
119
|
+
});
|
|
120
|
+
let output = "";
|
|
121
|
+
let timedOut = false;
|
|
122
|
+
const timer = setTimeout(() => {
|
|
123
|
+
timedOut = true;
|
|
124
|
+
child.kill();
|
|
125
|
+
}, 300_000);
|
|
126
|
+
const append = (chunk) => {
|
|
127
|
+
output = (output + chunk.toString()).slice(-32_768);
|
|
128
|
+
};
|
|
129
|
+
child.stdout.on("data", append);
|
|
130
|
+
child.stderr.on("data", append);
|
|
131
|
+
child.once("error", (error) => {
|
|
132
|
+
clearTimeout(timer);
|
|
133
|
+
reject(error);
|
|
134
|
+
});
|
|
135
|
+
child.once("close", (code) => {
|
|
136
|
+
clearTimeout(timer);
|
|
137
|
+
if (code === 0 && !timedOut)
|
|
138
|
+
resolveRun(output);
|
|
139
|
+
else
|
|
140
|
+
reject(new Error(`${manager.name} install ${timedOut ? "excedeu 5 minutos" : `falhou (${code})`}. ${redact(output)}`));
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
function redact(value) {
|
|
144
|
+
return value
|
|
145
|
+
.replace(/(https?:\/\/)[^\s/@]+:[^\s/@]+@/gi, "$1[redacted]@")
|
|
146
|
+
.replace(/(?:npm_[A-Za-z0-9]{20,}|(?<=_authToken[=:]\s*)[^\s]+)/g, "[redacted]");
|
|
147
|
+
}
|
|
148
|
+
export async function installArguments(manager, root, run) {
|
|
149
|
+
if (manager.name === "npm")
|
|
150
|
+
return [
|
|
151
|
+
"install",
|
|
152
|
+
"--ignore-scripts",
|
|
153
|
+
"--no-audit",
|
|
154
|
+
"--no-fund",
|
|
155
|
+
"--include=dev",
|
|
156
|
+
"--include=optional",
|
|
157
|
+
"--package-lock",
|
|
158
|
+
"--global=false",
|
|
159
|
+
"--engine-strict",
|
|
160
|
+
"--force=false",
|
|
161
|
+
"--legacy-peer-deps=false",
|
|
162
|
+
"--fetch-retries=1",
|
|
163
|
+
"--fetch-timeout=60000",
|
|
164
|
+
];
|
|
165
|
+
if (manager.name === "pnpm")
|
|
166
|
+
return [
|
|
167
|
+
"install",
|
|
168
|
+
"--ignore-scripts",
|
|
169
|
+
"--no-frozen-lockfile",
|
|
170
|
+
"--prod=false",
|
|
171
|
+
"--config.engine-strict=true",
|
|
172
|
+
];
|
|
173
|
+
const version = (await run(manager, ["--version"], root)).trim();
|
|
174
|
+
if (!version.startsWith("1."))
|
|
175
|
+
throw new Error("Yarn 2+ ainda não possui instalação automática qualificada. Use o gerenciador do projeto para preparar a stack; init não converterá o lockfile.");
|
|
176
|
+
return ["install", "--ignore-scripts", "--non-interactive", "--production=false"];
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=stack-package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-package-manager.js","sourceRoot":"","sources":["../../src/services/stack-package-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface StackPackage {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
development: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface StackItem extends StackPackage {
|
|
7
|
+
installed: string | null;
|
|
8
|
+
declared: string | null;
|
|
9
|
+
requested: string;
|
|
10
|
+
}
|
|
11
|
+
export type ProjectPackage = Record<string, unknown> & {
|
|
12
|
+
dependencies?: Record<string, string>;
|
|
13
|
+
devDependencies?: Record<string, string>;
|
|
14
|
+
optionalDependencies?: Record<string, string>;
|
|
15
|
+
peerDependencies?: Record<string, string>;
|
|
16
|
+
packageManager?: string;
|
|
17
|
+
};
|
|
18
|
+
export interface StackPlan {
|
|
19
|
+
root: string;
|
|
20
|
+
node: {
|
|
21
|
+
current: string;
|
|
22
|
+
configured: string;
|
|
23
|
+
};
|
|
24
|
+
manifest: ProjectPackage;
|
|
25
|
+
manifestSource: string | null;
|
|
26
|
+
packages: StackItem[];
|
|
27
|
+
}
|
|
28
|
+
export declare function readOptional(path: string): Promise<string | null>;
|
|
29
|
+
/** Reads only this project's modules. Global packages and the npx cache cannot satisfy it. */
|
|
30
|
+
export declare function installedVersion(root: string, name: string): Promise<string | null>;
|
|
31
|
+
export declare function planStack(root: string, templateDirectory?: string): Promise<StackPlan>;
|
|
32
|
+
export declare function describeStack(plan: StackPlan, dryRun?: boolean): string;
|
|
33
|
+
//# sourceMappingURL=stack-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-plan.d.ts","sourceRoot":"","sources":["../../src/services/stack-plan.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOvE;AAED,8FAA8F;AAC9F,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BzF;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,iBAAiB,SAA6B,GAC7C,OAAO,CAAC,SAAS,CAAC,CA6EpB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,UAAQ,GAAG,MAAM,CAYrE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { access, readFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { parse } from "yaml";
|
|
4
|
+
import { defaultTemplateDirectory } from "./template-manifest.js";
|
|
5
|
+
export async function readOptional(path) {
|
|
6
|
+
try {
|
|
7
|
+
return await readFile(path, "utf8");
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
if (error.code === "ENOENT")
|
|
11
|
+
return null;
|
|
12
|
+
throw error;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** Reads only this project's modules. Global packages and the npx cache cannot satisfy it. */
|
|
16
|
+
export async function installedVersion(root, name) {
|
|
17
|
+
const directory = join(root, "node_modules", name);
|
|
18
|
+
const source = await readOptional(join(directory, "package.json"));
|
|
19
|
+
if (source === null)
|
|
20
|
+
return null;
|
|
21
|
+
try {
|
|
22
|
+
const pkg = JSON.parse(source);
|
|
23
|
+
if (pkg.name !== name ||
|
|
24
|
+
typeof pkg.version !== "string" ||
|
|
25
|
+
!/^\d+\.\d+\.\d+(?:-[\w.-]+)?(?:\+[\w.-]+)?$/.test(pkg.version))
|
|
26
|
+
return null;
|
|
27
|
+
const binary = typeof pkg.bin === "string" ? pkg.bin : Object.values(pkg.bin ?? {})[0];
|
|
28
|
+
const entry = typeof binary === "string" ? binary : pkg.main;
|
|
29
|
+
if (typeof entry !== "string" ||
|
|
30
|
+
entry.startsWith("/") ||
|
|
31
|
+
entry.includes("\\") ||
|
|
32
|
+
entry.includes(":") ||
|
|
33
|
+
entry.split("/").includes(".."))
|
|
34
|
+
return null;
|
|
35
|
+
await access(join(directory, entry));
|
|
36
|
+
return pkg.version;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function planStack(root, templateDirectory = defaultTemplateDirectory()) {
|
|
43
|
+
const defaults = JSON.parse(await readFile(join(templateDirectory, ".agents/dashboard/stack-dependencies.json"), "utf8"));
|
|
44
|
+
if (defaults.schema_version !== 1 || !Array.isArray(defaults.packages))
|
|
45
|
+
throw new Error("Invalid ZAIP stack manifest");
|
|
46
|
+
const config = parse((await readOptional(join(root, ".agents/config/project.yaml"))) ?? "{}");
|
|
47
|
+
const overrides = Object.values(config?.stack?.overrides?.components ?? {});
|
|
48
|
+
const manifestSource = await readOptional(join(root, "package.json"));
|
|
49
|
+
const manifest = manifestSource === null ? { private: true } : JSON.parse(manifestSource);
|
|
50
|
+
if (!manifest || Array.isArray(manifest) || typeof manifest !== "object")
|
|
51
|
+
throw new Error("Invalid project package.json");
|
|
52
|
+
for (const field of [
|
|
53
|
+
"dependencies",
|
|
54
|
+
"devDependencies",
|
|
55
|
+
"optionalDependencies",
|
|
56
|
+
"peerDependencies",
|
|
57
|
+
]) {
|
|
58
|
+
const entries = manifest[field];
|
|
59
|
+
if (entries !== undefined &&
|
|
60
|
+
(!entries ||
|
|
61
|
+
Array.isArray(entries) ||
|
|
62
|
+
typeof entries !== "object" ||
|
|
63
|
+
Object.values(entries).some((value) => typeof value !== "string"))) {
|
|
64
|
+
throw new Error(`Invalid package.json ${field}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const packages = await Promise.all(defaults.packages.map(async (item) => {
|
|
68
|
+
if (!/^[a-z0-9][a-z0-9-]*$/.test(item.name) ||
|
|
69
|
+
!/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(item.version))
|
|
70
|
+
throw new Error("Invalid ZAIP dependency");
|
|
71
|
+
const choices = overrides.filter((entry) => entry.reference === `npm:${item.name}` && entry.version);
|
|
72
|
+
const versions = new Set(choices.map((entry) => String(entry.version)));
|
|
73
|
+
if (versions.size > 1)
|
|
74
|
+
throw new Error(`Conflicting configured versions for ${item.name}`);
|
|
75
|
+
const version = [...versions][0] ?? item.version;
|
|
76
|
+
if (!/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(version))
|
|
77
|
+
throw new Error(`Configure an exact ZAIP version for ${item.name}: ${version}`);
|
|
78
|
+
const installed = await installedVersion(root, item.name);
|
|
79
|
+
const declared = manifest.dependencies?.[item.name] ??
|
|
80
|
+
manifest.devDependencies?.[item.name] ??
|
|
81
|
+
manifest.optionalDependencies?.[item.name] ??
|
|
82
|
+
manifest.peerDependencies?.[item.name] ??
|
|
83
|
+
null;
|
|
84
|
+
return { ...item, version, installed, declared, requested: declared ?? version };
|
|
85
|
+
}));
|
|
86
|
+
// React DOM must follow an existing React choice rather than introduce a peer conflict.
|
|
87
|
+
const react = packages.find((item) => item.name === "react");
|
|
88
|
+
const dom = packages.find((item) => item.name === "react-dom");
|
|
89
|
+
if (react && dom?.installed && !react.installed && !react.declared)
|
|
90
|
+
react.requested = dom.installed;
|
|
91
|
+
if (react && dom && !dom.installed && !dom.declared)
|
|
92
|
+
dom.requested = react.installed ?? react.requested;
|
|
93
|
+
return {
|
|
94
|
+
root,
|
|
95
|
+
node: {
|
|
96
|
+
current: process.versions.node,
|
|
97
|
+
configured: String(overrides.find((entry) => entry.reference === "runtime:node" && entry.version)?.version ??
|
|
98
|
+
defaults.node),
|
|
99
|
+
},
|
|
100
|
+
manifest,
|
|
101
|
+
manifestSource,
|
|
102
|
+
packages,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export function describeStack(plan, dryRun = false) {
|
|
106
|
+
const lines = [
|
|
107
|
+
`Node.js: preservado ${plan.node.current}; configurado ZAIP ${plan.node.configured}.`,
|
|
108
|
+
];
|
|
109
|
+
for (const item of plan.packages) {
|
|
110
|
+
lines.push(item.installed
|
|
111
|
+
? `${item.name}: não instalado novamente; versão atual ${item.installed}; configurada ZAIP ${item.version}.`
|
|
112
|
+
: `${item.name}: ${dryRun ? "instalação planejada" : "instalando"} ${item.requested}; atual ausente; configurada ZAIP ${item.version}${item.declared ? "; preservando declaração do projeto" : ""}.`);
|
|
113
|
+
}
|
|
114
|
+
return `${lines.join("\n")}\n`;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=stack-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack-plan.js","sourceRoot":"","sources":["../../src/services/stack-plan.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Readable, Writable } from "node:stream";
|
|
2
|
+
import type { PackageRunner } from "./services/stack-package-manager.js";
|
|
2
3
|
export interface InitOptions {
|
|
3
4
|
directory?: string;
|
|
4
5
|
cwd?: string;
|
|
@@ -37,6 +38,8 @@ export interface InitResult {
|
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
export interface CliRuntime {
|
|
41
|
+
/** Injectable package runner for deterministic offline installer tests. */
|
|
42
|
+
packageRunner?: PackageRunner;
|
|
40
43
|
cwd?: string;
|
|
41
44
|
stdin?: Readable;
|
|
42
45
|
stdout?: Writable;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB"}
|
package/package.json
CHANGED
|
@@ -14,29 +14,29 @@
|
|
|
14
14
|
"path": "apps/frontend/dist/assets/CostCalculationGuidePage-DwVZOmMV.js",
|
|
15
15
|
"sha256": "f23b037ea7fc6f2637a23fcb26ce98947bf0c010afc210d18b576eb69c823433"
|
|
16
16
|
},
|
|
17
|
-
{
|
|
18
|
-
"path": "apps/frontend/dist/assets/DashboardHelpDialog--czwAlcH.js",
|
|
19
|
-
"sha256": "4c7db60a41c42384e9b69a4967e4b98e1027c52368c0f5eef8512fc449526dd5"
|
|
20
|
-
},
|
|
21
17
|
{
|
|
22
18
|
"path": "apps/frontend/dist/assets/DashboardHelpDialog-Je5nK-Et.css",
|
|
23
19
|
"sha256": "aafa708825ff8417d2de8ce9f45b94c899aa9ae5c5068bf5ce4def13e9c00643"
|
|
24
20
|
},
|
|
21
|
+
{
|
|
22
|
+
"path": "apps/frontend/dist/assets/DashboardHelpDialog-VcLx9iOO.js",
|
|
23
|
+
"sha256": "3fcffc906058b259f405fe76fb2e5b52a73540be941b2115dd60f73556dc60a4"
|
|
24
|
+
},
|
|
25
25
|
{
|
|
26
26
|
"path": "apps/frontend/dist/assets/PricingSettingsDialog-CyjMXkm8.js",
|
|
27
27
|
"sha256": "513303fc87731bdd588162d98a4b15d679df779602f61f022f739e2c031e8dfa"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"path": "apps/frontend/dist/assets/ProjectSettingsPage-
|
|
31
|
-
"sha256": "
|
|
30
|
+
"path": "apps/frontend/dist/assets/ProjectSettingsPage-BwnJpl02.js",
|
|
31
|
+
"sha256": "91898a05f2321b6e19d88e2719159bab279b1b4a9abd48fe2f2d3df3d36c1623"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
"path": "apps/frontend/dist/assets/ProjectSettingsPage-
|
|
35
|
-
"sha256": "
|
|
34
|
+
"path": "apps/frontend/dist/assets/ProjectSettingsPage-GgzpZ_PY.css",
|
|
35
|
+
"sha256": "8f5830a272707f2bf1922a4f80b967a5da589e667bc9d66debf3735f58970e77"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
"path": "apps/frontend/dist/assets/TraceabilityWorkspace-
|
|
39
|
-
"sha256": "
|
|
38
|
+
"path": "apps/frontend/dist/assets/TraceabilityWorkspace-DFZwIXSC.js",
|
|
39
|
+
"sha256": "a01b7a27aaed58759f4d0a1627b036c64522617d222bb0e4f8a258aabd076b48"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"path": "apps/frontend/dist/assets/TraceabilityWorkspace-DvvavDLY.css",
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"sha256": "85e0d82ec83ee57fd8a3d32cbf29d0e6c2dc8a987734f733437788c7f3e2e1dc"
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"path": "apps/frontend/dist/assets/index-
|
|
63
|
-
"sha256": "
|
|
62
|
+
"path": "apps/frontend/dist/assets/index-Dyo_wpL4.js",
|
|
63
|
+
"sha256": "e13fa053e13eed7df1fb7805640743e7af55ba18c65b067528fb4ba2ef8fd8e8"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
"path": "apps/frontend/dist/assets/index-hPPfVGQv.css",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
"path": "apps/frontend/dist/index.html",
|
|
95
|
-
"sha256": "
|
|
95
|
+
"sha256": "7933b7122cd4e31ddd364a2494d1bd33584fc6bc957660059afc4e2dfb0379b7"
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
"path": "apps/frontend/dist/logo_novo_azul.png",
|
|
@@ -168,11 +168,11 @@
|
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
"path": "apps/frontend/src/ProjectSettingsPage.tsx",
|
|
171
|
-
"sha256": "
|
|
171
|
+
"sha256": "7d1ff4cc9753d6fbd70b5cdf78b54f5c10315fb005c4b1b8c35baa01595c01c1"
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
174
|
"path": "apps/frontend/src/ProjectStackEditor.tsx",
|
|
175
|
-
"sha256": "
|
|
175
|
+
"sha256": "c81d45ec04af0aa46d563860c711dd3fa49d65be21b847216a6209caf01b5a30"
|
|
176
176
|
},
|
|
177
177
|
{
|
|
178
178
|
"path": "apps/frontend/src/TraceabilityWorkspace.dom.e2e.ts",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
214
|
"path": "apps/frontend/src/dashboard-api.ts",
|
|
215
|
-
"sha256": "
|
|
215
|
+
"sha256": "457a4dd1eb27cda7deb3fd2fe141325755e24c771136537b87c0cda02d6d0aff"
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
"path": "apps/frontend/src/dashboard-capability-nav.css",
|
|
@@ -284,15 +284,19 @@
|
|
|
284
284
|
},
|
|
285
285
|
{
|
|
286
286
|
"path": "apps/frontend/src/project-settings-model.ts",
|
|
287
|
-
"sha256": "
|
|
287
|
+
"sha256": "74dfa3f9073eb051ee7eedb7f36cd1d18cf456507a771ffe9aa7b8c13e5dc270"
|
|
288
288
|
},
|
|
289
289
|
{
|
|
290
290
|
"path": "apps/frontend/src/project-settings-page.css",
|
|
291
|
-
"sha256": "
|
|
291
|
+
"sha256": "5811e5f0106a6680f411f3aea770a541a24fd0645e3c1e4ee4a396fa298279d2"
|
|
292
292
|
},
|
|
293
293
|
{
|
|
294
294
|
"path": "apps/frontend/src/project-settings.test.ts",
|
|
295
|
-
"sha256": "
|
|
295
|
+
"sha256": "bef56d243b96c0236bf6ac2383dced8181c2d03b1fa7aad31a07c599c1b7304b"
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"path": "apps/frontend/src/project-stack-versions.css",
|
|
299
|
+
"sha256": "466f1c8aa7cfa4c13925e51813429e8deccf81e5a0ee1d8ac1584cae239b4d30"
|
|
296
300
|
},
|
|
297
301
|
{
|
|
298
302
|
"path": "apps/frontend/src/snapshot-banner-semantics.test.ts",
|
|
@@ -1472,7 +1476,7 @@
|
|
|
1472
1476
|
},
|
|
1473
1477
|
{
|
|
1474
1478
|
"path": "packages/local-runtime/dist/server.cjs",
|
|
1475
|
-
"sha256": "
|
|
1479
|
+
"sha256": "542948a4f98e926a686b06ad880b80604a9f75176c051098dfab6837fe514a24"
|
|
1476
1480
|
},
|
|
1477
1481
|
{
|
|
1478
1482
|
"path": "packages/local-runtime/dist/sqlite-read-model.cjs",
|
|
@@ -1512,7 +1516,7 @@
|
|
|
1512
1516
|
},
|
|
1513
1517
|
{
|
|
1514
1518
|
"path": "packages/local-runtime/server.mjs",
|
|
1515
|
-
"sha256": "
|
|
1519
|
+
"sha256": "4900cbbc660cadb1a9ba558f2a2f45cc85674d5636777fdcafb1711f7d7e6d9c"
|
|
1516
1520
|
},
|
|
1517
1521
|
{
|
|
1518
1522
|
"path": "packages/local-runtime/src/agent-adapter-sync.ts",
|
|
@@ -1536,11 +1540,11 @@
|
|
|
1536
1540
|
},
|
|
1537
1541
|
{
|
|
1538
1542
|
"path": "packages/local-runtime/src/project-settings.test.ts",
|
|
1539
|
-
"sha256": "
|
|
1543
|
+
"sha256": "a05eba35642c1ebbf3768c9e5fc550115ebce7104e8d3ad5752ba4440ef9a38e"
|
|
1540
1544
|
},
|
|
1541
1545
|
{
|
|
1542
1546
|
"path": "packages/local-runtime/src/project-settings.ts",
|
|
1543
|
-
"sha256": "
|
|
1547
|
+
"sha256": "09f23c417af56a3543995b9d05ee36f8b5ac42ae313b465ea5b1d02b9476657c"
|
|
1544
1548
|
},
|
|
1545
1549
|
{
|
|
1546
1550
|
"path": "packages/local-runtime/src/runtime.mjs",
|
|
@@ -1934,6 +1938,10 @@
|
|
|
1934
1938
|
"path": "read-model.dbml",
|
|
1935
1939
|
"sha256": "d976b7d04435358bf9eaa1f56425d30a706b72fdf1b8a2f14ab4af51a58a5959"
|
|
1936
1940
|
},
|
|
1941
|
+
{
|
|
1942
|
+
"path": "stack-dependencies.json",
|
|
1943
|
+
"sha256": "e32728bd2efc2a8c1b5bab1cebc44071dd95c994ae570c727a6cda9509d0b72c"
|
|
1944
|
+
},
|
|
1937
1945
|
{
|
|
1938
1946
|
"path": "tests/e2e/package.json",
|
|
1939
1947
|
"sha256": "22a98f7809edf19e35711dd14fc1b0c6722c0089b425394bbffdc4dc956f8032"
|