@zaip-ai/cli 1.3.6 → 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 (68) hide show
  1. package/README.md +31 -1
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +22 -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/sqlite-bootstrap.d.ts +29 -0
  8. package/dist/services/sqlite-bootstrap.d.ts.map +1 -0
  9. package/dist/services/sqlite-bootstrap.js +141 -0
  10. package/dist/services/sqlite-bootstrap.js.map +1 -0
  11. package/dist/services/stack-install.d.ts +14 -0
  12. package/dist/services/stack-install.d.ts.map +1 -0
  13. package/dist/services/stack-install.js +176 -0
  14. package/dist/services/stack-install.js.map +1 -0
  15. package/dist/services/stack-node.d.ts +12 -0
  16. package/dist/services/stack-node.d.ts.map +1 -0
  17. package/dist/services/stack-node.js +150 -0
  18. package/dist/services/stack-node.js.map +1 -0
  19. package/dist/services/stack-package-manager.d.ts +12 -0
  20. package/dist/services/stack-package-manager.d.ts.map +1 -0
  21. package/dist/services/stack-package-manager.js +178 -0
  22. package/dist/services/stack-package-manager.js.map +1 -0
  23. package/dist/services/stack-plan.d.ts +33 -0
  24. package/dist/services/stack-plan.d.ts.map +1 -0
  25. package/dist/services/stack-plan.js +116 -0
  26. package/dist/services/stack-plan.js.map +1 -0
  27. package/dist/types.d.ts +3 -0
  28. package/dist/types.d.ts.map +1 -1
  29. package/package.json +2 -2
  30. package/templates/.agents/dashboard/.zaip-managed.json +35 -27
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-3Lrfq645.js → DashboardHelpDialog-VcLx9iOO.js} +1 -1
  32. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BwnJpl02.js +3 -0
  33. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BomxqCBU.css → ProjectSettingsPage-GgzpZ_PY.css} +1 -1
  34. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-diq9g1L8.js → TraceabilityWorkspace-DFZwIXSC.js} +1 -1
  35. package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-Deo_W81f.js → index-Dyo_wpL4.js} +2 -2
  36. package/templates/.agents/dashboard/apps/frontend/dist/index.html +1 -1
  37. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +15 -2
  38. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +22 -6
  39. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +2 -0
  40. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +1 -1
  41. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +0 -104
  42. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +26 -0
  43. package/templates/.agents/dashboard/apps/frontend/src/project-stack-versions.css +117 -0
  44. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +119 -119
  45. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +119 -119
  46. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +153 -0
  47. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +161 -40
  48. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-prerequisites.mjs +5 -5
  49. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-prerequisites.test.mjs +8 -0
  50. package/templates/.agents/dashboard/stack-dependencies.json +14 -0
  51. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  52. package/templates/.agents/requirements/comparative-audit.md +1 -1
  53. package/templates/.agents/requirements/context-engine.md +1 -1
  54. package/templates/.agents/requirements/cost-observability.md +1 -1
  55. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  56. package/templates/.agents/requirements/data-export.md +1 -1
  57. package/templates/.agents/requirements/design-system.md +1 -1
  58. package/templates/.agents/requirements/execution-engine.md +1 -1
  59. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  60. package/templates/.agents/requirements/model-orchestration.md +1 -1
  61. package/templates/.agents/requirements/public-distribution.md +1 -1
  62. package/templates/.agents/requirements/software-architecture.md +1 -1
  63. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  64. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  65. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  66. package/templates/README.md +1 -1
  67. package/templates/template-manifest.json +53 -45
  68. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B_Oj6Dlf.js +0 -3
package/README.md CHANGED
@@ -17,7 +17,7 @@ npm install --global @zaip-ai/cli
17
17
  zaip init
18
18
  ```
19
19
 
20
- The CLI requires Node.js 22 or newer. It finds the nearest Git root from the selected directory;
20
+ The CLI requires Node.js 22.16.0 or newer. It finds the nearest Git root from the selected directory;
21
21
  outside Git it installs into that directory and reports the fallback. The implementation targets
22
22
  Windows, macOS and Linux using Node.js filesystem APIs; it also implements CI, Git-worktree and
23
23
  paths-with-spaces flows.
@@ -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":"AAIA,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,CAiCrB"}
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,6 +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";
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";
4
10
  export async function executeInit(directory, command, version, runtime = {}) {
5
11
  const stdin = runtime.stdin ?? process.stdin;
6
12
  const stdout = runtime.stdout ?? process.stdout;
@@ -21,7 +27,23 @@ export async function executeInit(directory, command, version, runtime = {}) {
21
27
  if (command.force && !command.yes) {
22
28
  options.confirmForce = confirmation(stdin, stdout);
23
29
  }
30
+ const target = await findProjectRoot(resolve(options.cwd, directory ?? "."));
31
+ const stack = await planStack(target.root, runtime.templateDirectory);
32
+ if (!options.dryRun)
33
+ await assertDashboardBootstrapPreflight();
24
34
  const result = await installAgentsTemplate(options);
35
+ if (result.dryRun || result.applied)
36
+ stdout.write(describeStack(stack, result.dryRun));
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
+ }
44
+ const sqlite = await bootstrapDashboardSqlite({ workspaceRoot: result.root });
45
+ stdout.write(`Dashboard SQLite pronto: ${sqlite.path} (${sqlite.cache}).\n`);
46
+ }
25
47
  printResult(stdout, result, version, command.verbose);
26
48
  if (command.projectOnly) {
27
49
  stdout.write("Modo project-only: nenhum arquivo em ~/.codex foi lido ou alterado.\n");
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO,GAAgB,EAAE;IAC5D,OAAO,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAA6B,EAC7B,OAAO,GAAe,EAAE;IAExB,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,UAA6B,EAC7B,OAAO,GAAe,EAAE;IAExB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,eAAe,CAAC;YACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,eAAe,CAAC;QACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACxC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;KACzC,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,EAAE,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAmB;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CAAC,mDAAmD,CAAC;SAChE,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oCAAoC,CAAC;SACjD,QAAQ,CAAC,aAAa,EAAE,qDAAqD,CAAC;SAC9E,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CACL,gBAAgB,EAChB,yEAAyE,CAC1E;SACA,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,OAAgC,EAAE,EAAE;QAChF,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,qDAAqD,CAAC;SAClE,QAAQ,CAAC,aAAa,EAAE,mBAAmB,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA2B,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,IAAI,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aAClE,CAAC;YACJ,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,KAAK;gBACV,CAAC,CAAC,+BAA+B,MAAM,CAAC,IAAI,IAAI;gBAChD,CAAC,CAAC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,MAAM,kBAAkB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACzJ,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;IAChG,QAAQ;SACL,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,aAAa,EAAE,mBAAmB,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,SAAS,EAAE,+DAA+D,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA4B,EAAE,EAAE;QAChE,MAAM,IAAI,GAAG,CAAC,MAAM,eAAe,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACL,QAAQ;SACL,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,aAAa,EAAE,mBAAmB,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA2B,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,CAAC,MAAM,eAAe,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,CAAC,KAAK,CACV,OAAO,CAAC,IAAI;YACV,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK;gBACZ,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,qCAAqC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CACzE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAmB,EAAE,SAAiB;IAChE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface SqliteBootstrapResult {
2
+ path: string;
3
+ cache: string;
4
+ schema: Record<string, unknown>;
5
+ }
6
+ export interface SqliteBootstrapOptions {
7
+ workspaceRoot: string;
8
+ nodeVersion?: string;
9
+ executable?: string;
10
+ scriptPath?: string;
11
+ run?: (command: string, arguments_: readonly string[], options: {
12
+ cwd: string;
13
+ env: NodeJS.ProcessEnv;
14
+ }) => Promise<{
15
+ code: number | null;
16
+ stdout: string;
17
+ stderr: string;
18
+ }>;
19
+ }
20
+ /**
21
+ * Builds the disposable Dashboard SQLite read model using the runtime bundled
22
+ * in the installed template. It deliberately never invokes npm or pnpm: the
23
+ * shipped server.cjs already contains the runtime dependencies.
24
+ */
25
+ export declare function bootstrapDashboardSqlite(options: SqliteBootstrapOptions): Promise<SqliteBootstrapResult>;
26
+ /** Performs only the no-write checks needed before init copies template files. */
27
+ export declare function assertDashboardBootstrapPreflight(version?: string): Promise<void>;
28
+ export declare function assertSupportedNode(version: string): void;
29
+ //# sourceMappingURL=sqlite-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-bootstrap.d.ts","sourceRoot":"","sources":["../../src/services/sqlite-bootstrap.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,CACJ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,KAC7C,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAiEhC;AAED,kFAAkF;AAClF,wBAAsB,iCAAiC,CACrD,OAAO,SAAwB,GAC9B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAczD"}
@@ -0,0 +1,141 @@
1
+ import { spawn } from "node:child_process";
2
+ import { access, mkdir } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ const MINIMUM_NODE = { major: 22, minor: 16 };
5
+ const MAX_OUTPUT_BYTES = 256 * 1024;
6
+ const BOOTSTRAP_TIMEOUT_MS = 120_000;
7
+ /**
8
+ * Builds the disposable Dashboard SQLite read model using the runtime bundled
9
+ * in the installed template. It deliberately never invokes npm or pnpm: the
10
+ * shipped server.cjs already contains the runtime dependencies.
11
+ */
12
+ export async function bootstrapDashboardSqlite(options) {
13
+ const workspaceRoot = resolve(options.workspaceRoot);
14
+ await assertDashboardBootstrapPreflight(options.nodeVersion ?? process.versions.node);
15
+ const scriptPath = resolve(options.scriptPath ??
16
+ join(workspaceRoot, ".agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs"));
17
+ const runtimePath = resolve(scriptPath, "..", "../dist/server.cjs");
18
+ const lifecycleRuntimePath = resolve(workspaceRoot, ".agents/runtime/bin/zaip.mjs");
19
+ await Promise.all([access(scriptPath), access(runtimePath), access(lifecycleRuntimePath)]).catch(() => {
20
+ throw new Error("Dashboard SQLite bootstrap is unavailable because the installed runtime bundle is incomplete. Re-run zaip init to restore the managed Dashboard files.");
21
+ });
22
+ const run = options.run ?? runNode;
23
+ const environment = {
24
+ ...Object.fromEntries(Object.entries(process.env).filter(([key]) => !key.startsWith("ZAIP_SQLITE_"))),
25
+ ZAIP_WORKSPACE: workspaceRoot,
26
+ ZAIP_UI_ROOT: resolve(workspaceRoot, ".agents/dashboard/apps/frontend/dist"),
27
+ ZAIP_SQLITE_DB_PATH: resolve(workspaceRoot, ".local/dashboard-sqlite/read-model.sqlite"),
28
+ ZAIP_SQLITE_REFRESH_CLEANUP: "0",
29
+ ZAIP_SQLITE_CACHE_DIR: resolve(workspaceRoot, ".local/dashboard-sqlite/cache"),
30
+ ZAIP_SQLITE_PREFER_LAST_VALID_SEED: "0",
31
+ };
32
+ const lifecycle = await run(options.executable ?? process.execPath, [lifecycleRuntimePath, "--version"], {
33
+ cwd: workspaceRoot,
34
+ env: environment,
35
+ });
36
+ if (lifecycle.code !== 0) {
37
+ throw bootstrapFailure("could not verify the bundled lifecycle runtime", lifecycle);
38
+ }
39
+ // Empty consumer projects are valid. The read-model generator intentionally
40
+ // consumes an empty records root instead of requiring a development install.
41
+ await mkdir(resolve(workspaceRoot, ".agents/records"), { recursive: true });
42
+ const outcome = await run(options.executable ?? process.execPath, [scriptPath], {
43
+ cwd: workspaceRoot,
44
+ env: environment,
45
+ });
46
+ if (outcome.code !== 0) {
47
+ throw bootstrapFailure("failed", outcome);
48
+ }
49
+ const payload = parseBootstrapResult(outcome.stdout);
50
+ if (typeof payload.path !== "string" ||
51
+ typeof payload.cache !== "string" ||
52
+ payload.storage_mode !== "sqlite_read_model" ||
53
+ !isRecord(payload.schema)) {
54
+ throw new Error("Dashboard SQLite bootstrap returned an invalid validation result.");
55
+ }
56
+ return { path: payload.path, cache: payload.cache, schema: payload.schema };
57
+ }
58
+ /** Performs only the no-write checks needed before init copies template files. */
59
+ export async function assertDashboardBootstrapPreflight(version = process.versions.node) {
60
+ assertSupportedNode(version);
61
+ try {
62
+ await import("node:sqlite");
63
+ }
64
+ catch {
65
+ throw new Error("Dashboard SQLite bootstrap requires Node.js 22.16.0 or newer with the built-in node:sqlite module.");
66
+ }
67
+ }
68
+ export function assertSupportedNode(version) {
69
+ const match = /^(\d+)\.(\d+)\.(\d+)/.exec(version);
70
+ const major = match === null ? Number.NaN : Number(match[1]);
71
+ const minor = match === null ? Number.NaN : Number(match[2]);
72
+ if (!Number.isInteger(major) ||
73
+ !Number.isInteger(minor) ||
74
+ major < MINIMUM_NODE.major ||
75
+ (major === MINIMUM_NODE.major && minor < MINIMUM_NODE.minor)) {
76
+ throw new Error(`Dashboard SQLite bootstrap requires Node.js 22.16.0 or newer; found ${version}.`);
77
+ }
78
+ }
79
+ function parseBootstrapResult(stdout) {
80
+ const line = stdout
81
+ .split(/\r?\n/)
82
+ .map((candidate) => candidate.trim())
83
+ .filter(Boolean)
84
+ .at(-1);
85
+ if (line === undefined)
86
+ throw new Error("Dashboard SQLite bootstrap produced no validation result.");
87
+ try {
88
+ const payload = JSON.parse(line);
89
+ if (!isRecord(payload))
90
+ throw new Error("not an object");
91
+ return payload;
92
+ }
93
+ catch {
94
+ throw new Error("Dashboard SQLite bootstrap produced invalid JSON.");
95
+ }
96
+ }
97
+ function isRecord(value) {
98
+ return typeof value === "object" && value !== null && !Array.isArray(value);
99
+ }
100
+ function bootstrapFailure(phase, outcome) {
101
+ const detail = (outcome.stderr || outcome.stdout).trim();
102
+ return new Error(`Dashboard SQLite bootstrap ${phase}${detail === "" ? "" : `: ${detail}`}. The template was installed safely; rerun "zaip init" after resolving the local runtime issue.`);
103
+ }
104
+ function runNode(command, arguments_, options) {
105
+ return new Promise((resolveRun, reject) => {
106
+ const child = spawn(command, arguments_, {
107
+ cwd: options.cwd,
108
+ env: options.env,
109
+ stdio: ["ignore", "pipe", "pipe"],
110
+ windowsHide: true,
111
+ });
112
+ let stdout = "";
113
+ let stderr = "";
114
+ let timedOut = false;
115
+ const timer = setTimeout(() => {
116
+ timedOut = true;
117
+ child.kill();
118
+ }, BOOTSTRAP_TIMEOUT_MS);
119
+ child.stdout.setEncoding("utf8");
120
+ child.stderr.setEncoding("utf8");
121
+ child.stdout.on("data", (chunk) => (stdout = appendOutput(stdout, chunk)));
122
+ child.stderr.on("data", (chunk) => (stderr = appendOutput(stderr, chunk)));
123
+ child.once("error", (error) => {
124
+ clearTimeout(timer);
125
+ reject(error);
126
+ });
127
+ child.once("close", (code) => {
128
+ clearTimeout(timer);
129
+ resolveRun({
130
+ code: timedOut ? null : code,
131
+ stdout,
132
+ stderr: timedOut ? `${stderr}\nTimed out after ${BOOTSTRAP_TIMEOUT_MS}ms.` : stderr,
133
+ });
134
+ });
135
+ });
136
+ }
137
+ function appendOutput(current, chunk) {
138
+ const remaining = MAX_OUTPUT_BYTES - Buffer.byteLength(current);
139
+ return remaining <= 0 ? current : `${current}${chunk.slice(0, remaining)}`;
140
+ }
141
+ //# sourceMappingURL=sqlite-bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-bootstrap.js","sourceRoot":"","sources":["../../src/services/sqlite-bootstrap.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"}