@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.
Files changed (62) hide show
  1. package/README.md +30 -0
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +15 -0
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/services/stack-install.d.ts +14 -0
  8. package/dist/services/stack-install.d.ts.map +1 -0
  9. package/dist/services/stack-install.js +176 -0
  10. package/dist/services/stack-install.js.map +1 -0
  11. package/dist/services/stack-node.d.ts +12 -0
  12. package/dist/services/stack-node.d.ts.map +1 -0
  13. package/dist/services/stack-node.js +150 -0
  14. package/dist/services/stack-node.js.map +1 -0
  15. package/dist/services/stack-package-manager.d.ts +12 -0
  16. package/dist/services/stack-package-manager.d.ts.map +1 -0
  17. package/dist/services/stack-package-manager.js +178 -0
  18. package/dist/services/stack-package-manager.js.map +1 -0
  19. package/dist/services/stack-plan.d.ts +33 -0
  20. package/dist/services/stack-plan.d.ts.map +1 -0
  21. package/dist/services/stack-plan.js +116 -0
  22. package/dist/services/stack-plan.js.map +1 -0
  23. package/dist/types.d.ts +3 -0
  24. package/dist/types.d.ts.map +1 -1
  25. package/package.json +1 -1
  26. package/templates/.agents/dashboard/.zaip-managed.json +31 -23
  27. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog--czwAlcH.js → DashboardHelpDialog-VcLx9iOO.js} +722 -722
  28. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BwnJpl02.js +3 -0
  29. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BomxqCBU.css → ProjectSettingsPage-GgzpZ_PY.css} +1 -1
  30. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-CAqYVin1.js → TraceabilityWorkspace-DFZwIXSC.js} +1 -1
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-CblPpexd.js → index-Dyo_wpL4.js} +2 -2
  32. package/templates/.agents/dashboard/apps/frontend/dist/index.html +1 -1
  33. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +15 -2
  34. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +22 -6
  35. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +2 -0
  36. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +1 -1
  37. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +0 -104
  38. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +26 -0
  39. package/templates/.agents/dashboard/apps/frontend/src/project-stack-versions.css +117 -0
  40. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +119 -119
  41. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +119 -119
  42. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +153 -0
  43. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +161 -40
  44. package/templates/.agents/dashboard/stack-dependencies.json +14 -0
  45. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  46. package/templates/.agents/requirements/comparative-audit.md +1 -1
  47. package/templates/.agents/requirements/context-engine.md +1 -1
  48. package/templates/.agents/requirements/cost-observability.md +1 -1
  49. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  50. package/templates/.agents/requirements/data-export.md +1 -1
  51. package/templates/.agents/requirements/design-system.md +1 -1
  52. package/templates/.agents/requirements/execution-engine.md +1 -1
  53. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  54. package/templates/.agents/requirements/model-orchestration.md +1 -1
  55. package/templates/.agents/requirements/public-distribution.md +1 -1
  56. package/templates/.agents/requirements/software-architecture.md +1 -1
  57. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  58. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  59. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  60. package/templates/README.md +1 -1
  61. package/templates/template-manifest.json +51 -43
  62. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B_Oj6Dlf.js +0 -3
package/README.md CHANGED
@@ -55,6 +55,36 @@ may be refreshed safely; user-owned adapters are never overwritten without expli
55
55
 
56
56
  ## Updating
57
57
 
58
+ `init` automatically installs missing TypeScript, Vite, Astro, Redis client, BullMQ, Hono,
59
+ React and React DOM packages in the project. Defaults come from
60
+ `.agents/dashboard/stack-dependencies.json`; exact versions in
61
+ `project.yaml` → `stack.overrides.components` take precedence. No approval prompt is needed
62
+ for dependency installation. A new project receives a private `package.json` and an npm lockfile.
63
+
64
+ An existing local package is preserved even when its version differs from ZAIP's configuration;
65
+ the summary reports both versions. When a package is declared but not installed, the project's
66
+ existing declaration wins. React DOM follows an existing React version when no DOM choice exists.
67
+ Global packages, another project's dependencies and the npx cache do not satisfy local dependencies.
68
+
69
+ Installation uses the project's npm, pnpm or Yarn Classic manager, includes development and optional
70
+ dependencies, and disables lifecycle scripts to avoid executing unrelated project hooks.
71
+ It does not use `--force` or bypass peer/engine checks. Conflicting lockfiles, unsupported managers
72
+ and Yarn 2+/PnP are reported before changing dependency files. If installation fails, package manifests
73
+ and lockfiles are restored; downloaded modules may remain for a retry. Rerun `init` after resolving
74
+ the reported cause. A surviving `.local/stack-install.lock` after a process crash must be removed
75
+ only after confirming that its recorded PID is no longer installing.
76
+
77
+ Node must already be available to execute npm/npx; the installer validates Node 22.16.0+ and
78
+ preserves it. The complete stack currently needs Node 22.19+ because of transitive dependencies.
79
+ On older compatible bootstrap runtimes, init downloads the qualified Node 22.23.2 LTS binary from
80
+ nodejs.org into `.local/zaip-node`, verifies its official SHA-256, and exposes it to this project's
81
+ npm scripts through `node_modules/.bin`. It does not replace the system Node or change global PATH.
82
+ The Redis npm package is a client library: a Redis server or hosted endpoint remains
83
+ an application infrastructure choice. SQLite is provided by Node and initialized automatically.
84
+
85
+ `--dry-run` displays missing and preserved packages without downloading or changing anything.
86
+ `doctor` validates framework files and adapters; the installer separately verifies stack packages.
87
+
58
88
  Run the latest version again. New files are added while local changes remain untouched:
59
89
 
60
90
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,UAAU,CAAC,CAsCrB"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,UAAU,CAAC,CAiDrB"}
@@ -1,7 +1,12 @@
1
+ import { resolve } from "node:path";
1
2
  import { createInterface } from "node:readline/promises";
3
+ import { findProjectRoot } from "../services/find-project-root.js";
2
4
  import { installAgentsTemplate } from "../services/install-agents-template.js";
3
5
  import { printResult } from "../services/logger.js";
4
6
  import { assertDashboardBootstrapPreflight, bootstrapDashboardSqlite, } from "../services/sqlite-bootstrap.js";
7
+ import { installStack } from "../services/stack-install.js";
8
+ import { exposeStackNode, prepareStackNode, usingStackNode } from "../services/stack-node.js";
9
+ import { describeStack, planStack } from "../services/stack-plan.js";
5
10
  export async function executeInit(directory, command, version, runtime = {}) {
6
11
  const stdin = runtime.stdin ?? process.stdin;
7
12
  const stdout = runtime.stdout ?? process.stdout;
@@ -22,10 +27,20 @@ export async function executeInit(directory, command, version, runtime = {}) {
22
27
  if (command.force && !command.yes) {
23
28
  options.confirmForce = confirmation(stdin, stdout);
24
29
  }
30
+ const target = await findProjectRoot(resolve(options.cwd, directory ?? "."));
31
+ const stack = await planStack(target.root, runtime.templateDirectory);
25
32
  if (!options.dryRun)
26
33
  await assertDashboardBootstrapPreflight();
27
34
  const result = await installAgentsTemplate(options);
35
+ if (result.dryRun || result.applied)
36
+ stdout.write(describeStack(stack, result.dryRun));
28
37
  if (result.applied && !result.dryRun) {
38
+ const node = await prepareStackNode(result.root, (message) => stdout.write(message));
39
+ const dependencies = await installStack(stack, usingStackNode(node, runtime.packageRunner));
40
+ await exposeStackNode(result.root, node);
41
+ for (const item of dependencies.packages.filter((item) => item.action === "installed")) {
42
+ stdout.write(`${item.name}: instalado ${item.installed}; configurado ZAIP ${item.configured}.\n`);
43
+ }
29
44
  const sqlite = await bootstrapDashboardSqlite({ workspaceRoot: result.root });
30
45
  stdout.write(`Dashboard SQLite pronto: ${sqlite.path} (${sqlite.cache}).\n`);
31
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -53,7 +53,7 @@ function createProgram(runtime) {
53
53
  .version(CLI_VERSION);
54
54
  program
55
55
  .command("init")
56
- .description("Instala o template oficial .agents")
56
+ .description("Instala o ZAIP-AIOS, dependências ausentes da stack e SQLite")
57
57
  .argument("[directory]", "diretório inicial; por padrão usa o diretório atual")
58
58
  .option("-y, --yes", "confirma operações sem prompt interativo")
59
59
  .option("-f, --force", "cria backup e reinstala o template")
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type PackageRunner } from "./stack-package-manager.js";
2
+ import { type StackPlan } from "./stack-plan.js";
3
+ export interface StackInstallResult {
4
+ manager: string | null;
5
+ packages: Array<{
6
+ name: string;
7
+ configured: string;
8
+ installed: string;
9
+ action: "installed" | "preserved";
10
+ }>;
11
+ }
12
+ /** Package manifests/locks roll back on failure; downloaded modules remain available for retry. */
13
+ export declare function installStack(plan: StackPlan, run?: PackageRunner): Promise<StackInstallResult>;
14
+ //# sourceMappingURL=stack-install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-install.d.ts","sourceRoot":"","sources":["../../src/services/stack-install.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,aAAa,EAGnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;KACnC,CAAC,CAAC;CACJ;AAED,mGAAmG;AACnG,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,EACf,GAAG,GAAE,aAAiC,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA4H7B"}
@@ -0,0 +1,176 @@
1
+ import { mkdir, open, rm, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { parse, stringify } from "yaml";
4
+ import { installArguments, runPackageManager, selectPackageManager, } from "./stack-package-manager.js";
5
+ import { installedVersion, readOptional, } from "./stack-plan.js";
6
+ import { assertSafeDestination } from "./transactional-files.js";
7
+ /** Package manifests/locks roll back on failure; downloaded modules remain available for retry. */
8
+ export async function installStack(plan, run = runPackageManager) {
9
+ const missing = plan.packages.filter((item) => item.installed === null);
10
+ if (missing.length === 0)
11
+ return result(plan, null);
12
+ const manager = await selectPackageManager(plan.root, plan.manifest);
13
+ const paths = [
14
+ "package.json",
15
+ "package-lock.json",
16
+ "npm-shrinkwrap.json",
17
+ "pnpm-lock.yaml",
18
+ "yarn.lock",
19
+ ];
20
+ for (const path of [...paths, "node_modules/.package-lock.json", ".local/stack-install.lock"])
21
+ await assertSafeDestination(plan.root, path);
22
+ await mkdir(join(plan.root, ".local"), { recursive: true });
23
+ const lockPath = join(plan.root, ".local/stack-install.lock");
24
+ const lock = await open(lockPath, "wx").catch(() => {
25
+ throw new Error("Outra instalação ZAIP pode estar ativa (.local/stack-install.lock). Aguarde sua conclusão antes de repetir.");
26
+ });
27
+ const snapshots = new Map();
28
+ let touched = false;
29
+ try {
30
+ await lock.writeFile(JSON.stringify({ pid: process.pid, started_at: new Date().toISOString() }));
31
+ for (const path of paths)
32
+ snapshots.set(path, await readOptional(join(plan.root, path)));
33
+ if (snapshots.get("package.json") !== plan.manifestSource)
34
+ throw new Error("package.json mudou durante init; repita para recalcular o plano.");
35
+ const finalManifest = structuredClone(plan.manifest);
36
+ for (const item of missing) {
37
+ // An existing dependency range is the project's decision, including optional/peer declarations.
38
+ if (item.declared !== null)
39
+ continue;
40
+ const field = item.development ? "devDependencies" : "dependencies";
41
+ finalManifest[field] = { ...finalManifest[field], [item.name]: item.requested };
42
+ }
43
+ const installManifest = structuredClone(finalManifest);
44
+ // Pin already-installed targets during resolution to avoid npm upgrading an unlocked range.
45
+ for (const item of plan.packages.filter((candidate) => candidate.installed !== null)) {
46
+ let declared = false;
47
+ for (const field of [
48
+ "dependencies",
49
+ "devDependencies",
50
+ "optionalDependencies",
51
+ "peerDependencies",
52
+ ]) {
53
+ if (installManifest[field]?.[item.name] !== undefined) {
54
+ installManifest[field][item.name] = item.installed;
55
+ declared = true;
56
+ }
57
+ }
58
+ if (!declared)
59
+ installManifest.dependencies = {
60
+ ...installManifest.dependencies,
61
+ [item.name]: item.installed,
62
+ };
63
+ }
64
+ const args = await installArguments(manager, plan.root, run);
65
+ touched = true;
66
+ await writeFile(join(plan.root, "package.json"), `${JSON.stringify(installManifest, null, 2)}\n`);
67
+ await run(manager, args, plan.root);
68
+ for (const item of plan.packages) {
69
+ const actual = await installedVersion(plan.root, item.name);
70
+ if (actual === null)
71
+ throw new Error(`${item.name}: gerenciador terminou, mas o pacote não está disponível no projeto.`);
72
+ if (item.installed && actual !== item.installed)
73
+ throw new Error(`${item.name}: versão existente ${item.installed} foi alterada para ${actual}; instalação não aprovada.`);
74
+ if (!item.installed &&
75
+ /^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(item.requested) &&
76
+ actual !== item.requested)
77
+ throw new Error(`${item.name}: esperado ${item.requested}, encontrado ${actual}.`);
78
+ }
79
+ // Restore the user's ranges and preserve their other package.json fields.
80
+ const changed = JSON.stringify(finalManifest) !== JSON.stringify(plan.manifest);
81
+ await writeFile(join(plan.root, "package.json"), !changed && plan.manifestSource !== null
82
+ ? plan.manifestSource
83
+ : `${JSON.stringify(finalManifest, null, 2)}\n`);
84
+ if (manager.name === "npm")
85
+ await restoreNpmRootSpecs(plan.root, finalManifest);
86
+ // Restore pnpm root selectors in place; never perform a second dependency resolution.
87
+ if (manager.name === "pnpm")
88
+ await restorePnpmRootSpecs(plan.root, finalManifest);
89
+ if (manager.name === "yarn") {
90
+ // Yarn classic keys reflect the temporary exact selectors; retain both equivalent selectors.
91
+ const path = join(plan.root, "yarn.lock");
92
+ const source = await readOptional(path);
93
+ if (source?.startsWith("# THIS IS AN AUTOGENERATED FILE")) {
94
+ let updated = source;
95
+ for (const item of plan.packages)
96
+ if (item.installed && item.declared && item.installed !== item.declared) {
97
+ const exact = `${item.name}@${item.installed}`;
98
+ const escaped = exact.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
99
+ updated = updated.replace(new RegExp(`^("?${escaped}"?):`, "m"), `$1, ${JSON.stringify(`${item.name}@${item.declared}`)}:`);
100
+ }
101
+ await writeFile(path, updated);
102
+ }
103
+ }
104
+ return await result(plan, manager.name);
105
+ }
106
+ catch (error) {
107
+ if (touched)
108
+ for (const [path, source] of snapshots) {
109
+ if (source === null)
110
+ await rm(join(plan.root, path), { force: true });
111
+ else
112
+ await writeFile(join(plan.root, path), source);
113
+ }
114
+ throw new Error(`Instalação da stack incompleta. package.json e lockfiles restaurados; módulos baixados podem permanecer para a próxima tentativa. Resolva a causa e repita init. ${error instanceof Error ? error.message : String(error)}`);
115
+ }
116
+ finally {
117
+ await lock.close();
118
+ await rm(lockPath, { force: true });
119
+ }
120
+ }
121
+ async function restoreNpmRootSpecs(root, manifest) {
122
+ for (const name of ["package-lock.json", "npm-shrinkwrap.json"]) {
123
+ const path = join(root, name);
124
+ const source = await readOptional(path);
125
+ if (source === null)
126
+ continue;
127
+ const lock = JSON.parse(source);
128
+ const entry = lock.packages?.[""];
129
+ if (!entry)
130
+ continue;
131
+ for (const field of [
132
+ "dependencies",
133
+ "devDependencies",
134
+ "optionalDependencies",
135
+ "peerDependencies",
136
+ ]) {
137
+ if (manifest[field])
138
+ entry[field] = manifest[field];
139
+ else
140
+ delete entry[field];
141
+ }
142
+ await writeFile(path, `${JSON.stringify(lock, null, 2)}\n`);
143
+ }
144
+ }
145
+ async function restorePnpmRootSpecs(root, manifest) {
146
+ const path = join(root, "pnpm-lock.yaml");
147
+ const source = await readOptional(path);
148
+ if (source === null)
149
+ throw new Error("pnpm não produziu lockfile");
150
+ const lock = parse(source);
151
+ const importer = lock?.importers?.["."];
152
+ if (!importer)
153
+ throw new Error("pnpm lockfile sem importer raiz");
154
+ for (const field of ["dependencies", "devDependencies", "optionalDependencies"]) {
155
+ for (const name of Object.keys(importer[field] ?? {})) {
156
+ const original = manifest[field]?.[name];
157
+ if (original === undefined)
158
+ delete importer[field][name];
159
+ else
160
+ importer[field][name].specifier = original;
161
+ }
162
+ }
163
+ await writeFile(path, stringify(lock));
164
+ }
165
+ async function result(plan, manager) {
166
+ return {
167
+ manager,
168
+ packages: await Promise.all(plan.packages.map(async (item) => ({
169
+ name: item.name,
170
+ configured: item.version,
171
+ installed: (await installedVersion(plan.root, item.name)),
172
+ action: item.installed ? "preserved" : "installed",
173
+ }))),
174
+ };
175
+ }
176
+ //# sourceMappingURL=stack-install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-install.js","sourceRoot":"","sources":["../../src/services/stack-install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { PackageRunner } from "./stack-package-manager.js";
2
+ export declare const STACK_NODE_VERSION = "22.23.2";
3
+ export declare const STACK_MINIMUM_NODE = "22.19.0";
4
+ export declare function supportsStackNode(version: string): boolean;
5
+ /** Downloads a project-private official Node only when the invoking runtime is too old. */
6
+ export declare function prepareStackNode(root: string, log: (message: string) => void, currentVersion?: string): Promise<string>;
7
+ /** Extract one regular file from an authenticated tarball, never arbitrary filesystem paths. */
8
+ export declare function extractNodeArchive(gzip: Buffer, expectedName: string): Buffer;
9
+ export declare function usingStackNode(binary: string, run?: PackageRunner): PackageRunner;
10
+ /** npm scripts and npx commands pick up this local executable via node_modules/.bin. */
11
+ export declare function exposeStackNode(root: string, binary: string): Promise<void>;
12
+ //# sourceMappingURL=stack-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-node.d.ts","sourceRoot":"","sources":["../../src/services/stack-node.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMhE,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAW5C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,2FAA2F;AAC3F,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAC9B,cAAc,SAAwB,GACrC,OAAO,CAAC,MAAM,CAAC,CA0DjB;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAiB7E;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,aAAiC,GACrC,aAAa,CAWf;AAED,wFAAwF;AACxF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BjF"}
@@ -0,0 +1,150 @@
1
+ import { execFile } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import { chmod, copyFile, link, lstat, mkdir, readFile, rename, rm, symlink, writeFile, } from "node:fs/promises";
4
+ import { dirname, join, relative } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { gunzipSync } from "node:zlib";
7
+ import { runPackageManager } from "./stack-package-manager.js";
8
+ import { assertSafeDestination } from "./transactional-files.js";
9
+ const exec = promisify(execFile);
10
+ // Current patched Node 22 LTS, qualified with this release. The system Node remains untouched.
11
+ export const STACK_NODE_VERSION = "22.23.2";
12
+ export const STACK_MINIMUM_NODE = "22.19.0";
13
+ // Pinned from nodejs.org/dist/v22.23.2/SHASUMS256.txt while qualifying this release.
14
+ const NODE_SHA256 = {
15
+ "darwin-arm64": "61130f394c1630d211dd50aecc4353d379480f36d3ac913cd85dbba1aed585c6",
16
+ "darwin-x64": "58e99022c2ff89395576cc7fd4d98cea24bb68081475d5f88b801ee8729fb026",
17
+ "linux-arm64": "013b59cfd2819703a6f4a14ab891fc46fc2a4e3f5bcd92de3fb4929b43e35b30",
18
+ "linux-x64": "b294a556e639d64338823920e5866c21c02741742d2e1529ee1a225c1ec9252a",
19
+ "win32-arm64": "97cce5301a815d2dce07ac5bfd1e6039eae88185ec1d10ae4f8cb712f1732878",
20
+ "win32-x64": "0d0f5e39f9f3d9587bc19f73eab3c2c9c4903fd02d6dbf9c853dd81b3d95fad4",
21
+ };
22
+ export function supportsStackNode(version) {
23
+ const [major = 0, minor = 0] = version.replace(/^v/, "").split(".").map(Number);
24
+ return major > 22 || (major === 22 && minor >= 19);
25
+ }
26
+ /** Downloads a project-private official Node only when the invoking runtime is too old. */
27
+ export async function prepareStackNode(root, log, currentVersion = process.versions.node) {
28
+ if (supportsStackNode(currentVersion))
29
+ return process.execPath;
30
+ const version = STACK_NODE_VERSION;
31
+ const platform = process.platform;
32
+ const arch = process.arch;
33
+ if (!["win32", "linux", "darwin"].includes(platform) || !["x64", "arm64"].includes(arch))
34
+ throw new Error(`Node ${process.versions.node} incompatível com a stack. Instalação local automática indisponível para ${platform}/${arch}; mínimo ${STACK_MINIMUM_NODE}.`);
35
+ const directory = join(root, ".local/zaip-node", `v${version}-${platform}-${arch}`);
36
+ const archiveRoot = `node-v${version}-${platform}-${arch}`;
37
+ const file = platform === "win32" ? `win-${arch}/node.exe` : `${archiveRoot}.tar.gz`;
38
+ const binary = platform === "win32" ? join(directory, "node.exe") : join(directory, archiveRoot, "bin/node");
39
+ await assertSafeDestination(root, relative(root, binary).replaceAll("\\", "/"));
40
+ const archive = join(directory, "official.tar.gz");
41
+ const expected = NODE_SHA256[`${platform}-${arch}`];
42
+ await assertSafeDestination(root, relative(root, archive).replaceAll("\\", "/"));
43
+ try {
44
+ const source = await readFile(platform === "win32" ? binary : archive);
45
+ if (digest(source) === expected &&
46
+ (platform === "win32" ||
47
+ digest(await readFile(binary)) ===
48
+ digest(extractNodeArchive(source, `${archiveRoot}/bin/node`)))) {
49
+ log(`Node do sistema preservado ${process.versions.node}; Node local ${version} reutilizado para a stack.\n`);
50
+ return binary;
51
+ }
52
+ }
53
+ catch (error) {
54
+ if (error.code !== "ENOENT")
55
+ throw error;
56
+ }
57
+ log(`Node do sistema preservado ${process.versions.node}; preparando Node ${version} somente em .local/zaip-node (mínimo da stack ${STACK_MINIMUM_NODE}).\n`);
58
+ const base = `https://nodejs.org/dist/v${version}/`;
59
+ if (!expected || !/^[a-f0-9]{64}$/.test(expected))
60
+ throw new Error("Checksum oficial do Node não encontrado.");
61
+ const bytes = await download(`${base}${file}`, 150 * 1024 * 1024);
62
+ if (digest(bytes) !== expected)
63
+ throw new Error("Download do Node rejeitado: SHA-256 difere do arquivo oficial.");
64
+ const executable = platform === "win32" ? bytes : extractNodeArchive(bytes, `${archiveRoot}/bin/node`);
65
+ await mkdir(dirname(binary), { recursive: true });
66
+ const temporary = `${binary}.${process.pid}.tmp`;
67
+ await writeFile(temporary, executable, { flag: "wx" });
68
+ await rename(temporary, binary);
69
+ if (platform !== "win32") {
70
+ await chmod(binary, 0o755);
71
+ await writeFile(archive, bytes);
72
+ }
73
+ const observed = (await exec(binary, ["--version"], { timeout: 10_000, windowsHide: true })).stdout.trim();
74
+ if (observed !== `v${version}`)
75
+ throw new Error(`Node local inesperado: ${observed}`);
76
+ return binary;
77
+ }
78
+ /** Extract one regular file from an authenticated tarball, never arbitrary filesystem paths. */
79
+ export function extractNodeArchive(gzip, expectedName) {
80
+ const tar = gunzipSync(gzip, { maxOutputLength: 512 * 1024 * 1024 });
81
+ for (let offset = 0; offset + 512 <= tar.length;) {
82
+ const header = tar.subarray(offset, offset + 512);
83
+ const name = header.subarray(0, 100).toString().replace(/\0.*$/, "");
84
+ if (!name)
85
+ break;
86
+ const size = Number.parseInt(header.subarray(124, 136).toString().replace(/\0.*$/, "").trim(), 8);
87
+ if (!Number.isSafeInteger(size) || size < 0 || offset + 512 + size > tar.length)
88
+ throw new Error("Archive Node inválido");
89
+ if (name === expectedName && (header[156] === 0 || header[156] === 48))
90
+ return tar.subarray(offset + 512, offset + 512 + size);
91
+ offset += 512 + Math.ceil(size / 512) * 512;
92
+ }
93
+ throw new Error("Executável Node ausente do archive oficial");
94
+ }
95
+ export function usingStackNode(binary, run = runPackageManager) {
96
+ return (manager, args, root) => run({
97
+ ...manager,
98
+ command: manager.command === process.execPath ? binary : manager.command,
99
+ nodeExecutable: binary,
100
+ }, args, root);
101
+ }
102
+ /** npm scripts and npx commands pick up this local executable via node_modules/.bin. */
103
+ export async function exposeStackNode(root, binary) {
104
+ if (binary === process.execPath)
105
+ return;
106
+ const target = join(root, "node_modules/.bin", process.platform === "win32" ? "node.exe" : "node");
107
+ const existing = await lstat(target).catch((error) => {
108
+ if (error.code === "ENOENT")
109
+ return null;
110
+ throw error;
111
+ });
112
+ if (existing) {
113
+ if (digest(await readFile(target)) === digest(await readFile(binary)))
114
+ return;
115
+ throw new Error("Node local já existente em node_modules/.bin preservado; sua versão conflita com o runtime necessário para a stack.");
116
+ }
117
+ await assertSafeDestination(root, relative(root, target).replaceAll("\\", "/"));
118
+ await mkdir(dirname(target), { recursive: true });
119
+ if (process.platform !== "win32")
120
+ await symlink(relative(dirname(target), binary), target);
121
+ else {
122
+ try {
123
+ await link(binary, target);
124
+ }
125
+ catch (error) {
126
+ if (error.code === "EXDEV")
127
+ await copyFile(binary, target);
128
+ else
129
+ throw error;
130
+ }
131
+ }
132
+ }
133
+ async function download(url, limit) {
134
+ const response = await fetch(url, { signal: AbortSignal.timeout(120_000), redirect: "error" });
135
+ if (!response.ok || !response.body)
136
+ throw new Error(`Download oficial do Node falhou: HTTP ${response.status}`);
137
+ const chunks = [];
138
+ let total = 0;
139
+ for await (const chunk of response.body) {
140
+ total += chunk.length;
141
+ if (total > limit)
142
+ throw new Error("Download do Node excedeu o tamanho esperado.");
143
+ chunks.push(chunk);
144
+ }
145
+ return Buffer.concat(chunks);
146
+ }
147
+ function digest(bytes) {
148
+ return createHash("sha256").update(bytes).digest("hex");
149
+ }
150
+ //# sourceMappingURL=stack-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-node.js","sourceRoot":"","sources":["../../src/services/stack-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ProjectPackage } from "./stack-plan.js";
2
+ export interface PackageManager {
3
+ nodeExecutable?: string;
4
+ name: "npm" | "pnpm" | "yarn";
5
+ command: string;
6
+ prefix: string[];
7
+ }
8
+ export type PackageRunner = (manager: PackageManager, args: string[], root: string) => Promise<string>;
9
+ export declare function selectPackageManager(root: string, manifest: ProjectPackage): Promise<PackageManager>;
10
+ export declare const runPackageManager: PackageRunner;
11
+ export declare function installArguments(manager: PackageManager, root: string, run: PackageRunner): Promise<string[]>;
12
+ //# sourceMappingURL=stack-package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-package-manager.d.ts","sourceRoot":"","sources":["../../src/services/stack-package-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,CAAC,CAkEzB;AAiCD,eAAO,MAAM,iBAAiB,EAAE,aAsD5B,CAAC;AAQL,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BnB"}