@hagicode/hagiscript 0.1.6-dev.36.1.bfa23c6 → 0.1.6-dev.38.1.7802f56

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 (43) hide show
  1. package/README.md +38 -0
  2. package/bin/runtime +16 -0
  3. package/dist/cli.js +2 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/runtime-commands.d.ts +2 -0
  6. package/dist/commands/runtime-commands.js +136 -0
  7. package/dist/commands/runtime-commands.js.map +1 -0
  8. package/dist/index.d.ts +4 -0
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/runtime/command-launch.js +1 -0
  12. package/dist/runtime/command-launch.js.map +1 -1
  13. package/dist/runtime/runtime-executor.d.ts +27 -0
  14. package/dist/runtime/runtime-executor.js +86 -0
  15. package/dist/runtime/runtime-executor.js.map +1 -0
  16. package/dist/runtime/runtime-manager.d.ts +68 -0
  17. package/dist/runtime/runtime-manager.js +554 -0
  18. package/dist/runtime/runtime-manager.js.map +1 -0
  19. package/dist/runtime/runtime-manifest.d.ts +63 -0
  20. package/dist/runtime/runtime-manifest.js +231 -0
  21. package/dist/runtime/runtime-manifest.js.map +1 -0
  22. package/dist/runtime/runtime-paths.d.ts +24 -0
  23. package/dist/runtime/runtime-paths.js +62 -0
  24. package/dist/runtime/runtime-paths.js.map +1 -0
  25. package/dist/runtime/runtime-state.d.ts +43 -0
  26. package/dist/runtime/runtime-state.js +82 -0
  27. package/dist/runtime/runtime-state.js.map +1 -0
  28. package/package.json +8 -3
  29. package/runtime/lib/runtime-script-lib.mjs +103 -0
  30. package/runtime/manifest.yaml +122 -0
  31. package/runtime/scripts/configure-code-server.mjs +14 -0
  32. package/runtime/scripts/configure-omniroute.mjs +16 -0
  33. package/runtime/scripts/install-code-server.mjs +32 -0
  34. package/runtime/scripts/install-dotnet.mjs +24 -0
  35. package/runtime/scripts/install-node.mjs +4 -0
  36. package/runtime/scripts/install-npm-packages.mjs +4 -0
  37. package/runtime/scripts/install-omniroute.mjs +34 -0
  38. package/runtime/scripts/remove-npm-packages.mjs +4 -0
  39. package/runtime/scripts/update-npm-packages.mjs +4 -0
  40. package/runtime/scripts/verify-dotnet.mjs +10 -0
  41. package/runtime/scripts/verify-node.mjs +4 -0
  42. package/runtime/templates/code-server-config.yaml +5 -0
  43. package/runtime/templates/omniroute-config.yaml +4 -0
package/README.md CHANGED
@@ -215,6 +215,44 @@ Synced: @openspec/cli (sync)
215
215
 
216
216
  When fallback is triggered, HagiScript logs `Fallback used: ...` during execution and records `Fallback detail: ...` in the final summary so CI or desktop automation can see which mirror failed, which official registry retry was used, and whether that retry succeeded.
217
217
 
218
+ ### Runtime Package Management
219
+
220
+ `hagiscript runtime` adds a manifest-driven package manager for the broader `hagicode-runtime` contract. By default it loads `runtime/manifest.yaml` from the installed package, resolves the managed runtime root to `~/.hagicode/runtime`, and keeps all mutable state under that root unless `--runtime-root <path>` overrides it for a specific install, deployment mode, or automation run.
221
+
222
+ ```bash
223
+ hagiscript runtime install
224
+ hagiscript runtime install --components node,npm-packages --dry-run
225
+ hagiscript runtime update --runtime-root /opt/hagicode/runtime --check-only
226
+ hagiscript runtime remove --components code-server --purge
227
+ hagiscript runtime state --json
228
+ ```
229
+
230
+ The packaged runtime manifest aligns its default component boundaries with HagiCode Desktop:
231
+
232
+ - Node is governed as a Desktop-aligned Node 22 toolchain component.
233
+ - `.NET` is modeled as a Desktop-aligned 10.0 runtime component.
234
+ - Mutable npm packages are installed into a managed prefix under the selected runtime root instead of the immutable Node payload or host-global npm locations.
235
+ - `code-server` and `omniroute` stay grouped as vendored bundled-runtime components rather than npm-managed packages.
236
+
237
+ The runtime layout is explicit and stable for downstream consumers:
238
+
239
+ ```text
240
+ <runtime-root>/
241
+ bin/
242
+ config/
243
+ logs/
244
+ data/
245
+ state.json
246
+ ```
247
+
248
+ `state.json` is the canonical contract for install, update, remove, and downstream inspection. Use `hagiscript runtime state --json` instead of probing files directly when Desktop, local bootstrap flows, or automation needs to know which components are installed, which managed paths are active, and whether the last lifecycle run succeeded.
249
+
250
+ The package also ships a thin `hagicode-runtime` wrapper binary that delegates to `hagiscript runtime ...` for automation that prefers a runtime-oriented entrypoint:
251
+
252
+ ```bash
253
+ hagicode-runtime install --runtime-root /srv/hagicode/runtime
254
+ ```
255
+
218
256
  Use the library API from ESM consumers:
219
257
 
220
258
  ```ts
package/bin/runtime ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { runCli } from "../dist/cli.js"
4
+
5
+ const argv = [
6
+ process.argv[0] ?? process.execPath,
7
+ "hagicode-runtime",
8
+ "runtime",
9
+ ...process.argv.slice(2)
10
+ ]
11
+
12
+ runCli(argv).catch((error) => {
13
+ const message = error instanceof Error ? error.message : String(error)
14
+ process.stderr.write(`${message}\n`)
15
+ process.exitCode = 1
16
+ })
package/dist/cli.js CHANGED
@@ -5,6 +5,7 @@ import { Command } from "commander";
5
5
  import { createRuntimeInfo, packageVersion } from "./index.js";
6
6
  import { registerNpmSyncCommand } from "./commands/npm-sync-commands.js";
7
7
  import { registerNodeRuntimeCommands } from "./commands/node-runtime-commands.js";
8
+ import { registerRuntimeCommands } from "./commands/runtime-commands.js";
8
9
  export function createCli() {
9
10
  const program = new Command();
10
11
  program
@@ -20,6 +21,7 @@ export function createCli() {
20
21
  });
21
22
  registerNodeRuntimeCommands(program);
22
23
  registerNpmSyncCommand(program);
24
+ registerRuntimeCommands(program);
23
25
  program.action(() => {
24
26
  program.outputHelp();
25
27
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAElF,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,OAAO,CAAC,cAAc,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAE5E,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;QAClB,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IAC9C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAC3B,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,eAAe,EAAE,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,YAAY,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,OAAO,CAAC,cAAc,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAE5E,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACrC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;QAClB,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IAC9C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAC3B,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,eAAe,EAAE,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerRuntimeCommands(program: Command): void;
@@ -0,0 +1,136 @@
1
+ import { InvalidArgumentError } from "commander";
2
+ import { installRuntime, queryRuntimeState, removeRuntime, renderRuntimeStateText, updateRuntime } from "../runtime/runtime-manager.js";
3
+ export function registerRuntimeCommands(program) {
4
+ const runtime = program
5
+ .command("runtime")
6
+ .description("manage manifest-driven hagicode-runtime components");
7
+ runtime
8
+ .command("install")
9
+ .description("install runtime components into a managed runtime root")
10
+ .option("--from-manifest <path>", "override the default runtime manifest")
11
+ .option("--runtime-root <path>", "managed runtime root override")
12
+ .option("--components <list>", "comma-separated runtime component names to install", parseComponentList)
13
+ .option("--dry-run", "print the install plan without mutating managed files")
14
+ .option("--force", "force reinstall of mutable managed components")
15
+ .option("--verbose", "print detailed lifecycle output")
16
+ .action(async (options, command) => {
17
+ await runLifecycleCommand("install", options, command);
18
+ });
19
+ runtime
20
+ .command("remove")
21
+ .description("remove runtime components from the managed runtime root")
22
+ .option("--from-manifest <path>", "override the default runtime manifest")
23
+ .option("--runtime-root <path>", "managed runtime root override")
24
+ .option("--components <list>", "comma-separated runtime component names to remove", parseComponentList)
25
+ .option("--dry-run", "print the removal plan without mutating managed files")
26
+ .option("--force", "reserved compatibility flag for scripted removals")
27
+ .option("--purge", "remove retained managed config and data where supported")
28
+ .option("--verbose", "print detailed lifecycle output")
29
+ .action(async (options, command) => {
30
+ await runLifecycleCommand("remove", options, command);
31
+ });
32
+ runtime
33
+ .command("update")
34
+ .description("update installed runtime components")
35
+ .option("--from-manifest <path>", "override the default runtime manifest")
36
+ .option("--runtime-root <path>", "managed runtime root override")
37
+ .option("--components <list>", "comma-separated runtime component names to update", parseComponentList)
38
+ .option("--dry-run", "print the update plan without mutating managed files")
39
+ .option("--check-only", "report components that would be updated")
40
+ .option("--force", "force update execution for mutable managed components")
41
+ .option("--verbose", "print detailed lifecycle output")
42
+ .action(async (options, command) => {
43
+ await runLifecycleCommand("update", options, command);
44
+ });
45
+ runtime
46
+ .command("state")
47
+ .description("query the canonical managed runtime state")
48
+ .option("--from-manifest <path>", "override the default runtime manifest")
49
+ .option("--runtime-root <path>", "managed runtime root override")
50
+ .option("--json", "emit machine-readable JSON output")
51
+ .action(async (options, command) => {
52
+ try {
53
+ const report = await queryRuntimeState({
54
+ manifestPath: validatePathOption(options.fromManifest, "--from-manifest"),
55
+ runtimeRoot: validatePathOption(options.runtimeRoot, "--runtime-root")
56
+ });
57
+ process.stdout.write(options.json
58
+ ? `${JSON.stringify(report, null, 2)}\n`
59
+ : `${renderRuntimeStateText(report)}\n`);
60
+ }
61
+ catch (error) {
62
+ command.error(formatRuntimeError(error), { exitCode: 1 });
63
+ }
64
+ });
65
+ }
66
+ async function runLifecycleCommand(phase, options, command) {
67
+ const runtimeOptions = {
68
+ manifestPath: validatePathOption(options.fromManifest, "--from-manifest"),
69
+ runtimeRoot: validatePathOption(options.runtimeRoot, "--runtime-root"),
70
+ components: options.components ?? [],
71
+ dryRun: options.dryRun ?? false,
72
+ force: options.force ?? false,
73
+ purge: "purge" in options ? options.purge ?? false : false,
74
+ checkOnly: "checkOnly" in options ? options.checkOnly ?? false : false,
75
+ verbose: options.verbose ?? false,
76
+ logger: (message) => process.stdout.write(`${message}\n`)
77
+ };
78
+ try {
79
+ const result = phase === "install"
80
+ ? await installRuntime(runtimeOptions)
81
+ : phase === "remove"
82
+ ? await removeRuntime(runtimeOptions)
83
+ : await updateRuntime(runtimeOptions);
84
+ printLifecycleSummary(phase, runtimeOptions, result);
85
+ }
86
+ catch (error) {
87
+ command.error(formatRuntimeError(error), { exitCode: 1 });
88
+ }
89
+ }
90
+ function parseComponentList(value) {
91
+ const components = value
92
+ .split(",")
93
+ .map((item) => item.trim())
94
+ .filter(Boolean);
95
+ if (components.length === 0) {
96
+ throw new InvalidArgumentError("--components must include at least one component name.");
97
+ }
98
+ return Array.from(new Set(components));
99
+ }
100
+ function validatePathOption(value, optionName) {
101
+ if (value === undefined) {
102
+ return undefined;
103
+ }
104
+ const normalized = value.trim();
105
+ if (!normalized) {
106
+ throw new InvalidArgumentError(`${optionName} must be a non-empty path.`);
107
+ }
108
+ if (normalized.includes("\0")) {
109
+ throw new InvalidArgumentError(`${optionName} contains an invalid null byte.`);
110
+ }
111
+ return normalized;
112
+ }
113
+ function printLifecycleSummary(phase, options, result) {
114
+ const modeSuffix = options.dryRun || (phase === "update" && options.checkOnly)
115
+ ? options.checkOnly
116
+ ? " (check-only)"
117
+ : " (dry-run)"
118
+ : "";
119
+ process.stdout.write(`Runtime ${phase} complete${modeSuffix}.\n`);
120
+ process.stdout.write(`Manifest: ${result.manifest.manifestPath}\n`);
121
+ process.stdout.write(`Managed root: ${result.paths.root}\n`);
122
+ process.stdout.write(`Planned components: ${result.plan.length}\n`);
123
+ process.stdout.write(`Changed components: ${result.changedComponents.length}\n`);
124
+ if (result.skipped.length > 0) {
125
+ for (const skipped of result.skipped) {
126
+ process.stdout.write(`Skipped: ${skipped.componentName} (${skipped.reason})\n`);
127
+ }
128
+ }
129
+ if (result.logFilePath) {
130
+ process.stdout.write(`Log: ${result.logFilePath}\n`);
131
+ }
132
+ }
133
+ function formatRuntimeError(error) {
134
+ return error instanceof Error ? error.message : String(error);
135
+ }
136
+ //# sourceMappingURL=runtime-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-commands.js","sourceRoot":"","sources":["../../src/commands/runtime-commands.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,3 +9,7 @@ export { getDefaultManagedNodeRuntimeDirectory, installNodeRuntime, resolveManag
9
9
  export { verifyNodeRuntime, type NodeRuntimeVerificationResult } from "./runtime/node-verify.js";
10
10
  export { createNpmSyncPlan, loadNpmSyncManifest, normalizeGlobalInventory, syncNpmGlobals, validateNpmSyncManifest, type InstalledGlobalPackages, type NpmSyncActionKind, type NpmSyncActionResult, type NpmSyncCommandKind, type NpmSyncFallbackEvent, type NpmSyncFallbackPolicy, type NpmSyncManifest, type NpmSyncManifestEntry, type NpmSyncPlannedAction, type NpmSyncRuntimeMetadata, type NpmSyncSummary } from "./runtime/npm-sync.js";
11
11
  export { buildToolSyncPackageSet, builtInToolSyncCatalog, normalizeToolSyncEntry, validateToolSyncCatalog, type CustomAgentCliToolInput, type ToolSyncCatalogEntry, type ToolSyncGroupId, type ToolSyncPackageConstraint, type ToolSyncRequirement, type ToolSyncSelection } from "./runtime/tool-sync-catalog.js";
12
+ export { getDefaultRuntimeManifestPath, loadRuntimeManifest, type LoadedRuntimeManifest, type RuntimeComponentDefinition, type RuntimeLifecyclePhase, type RuntimeManifestPaths } from "./runtime/runtime-manifest.js";
13
+ export { defaultRuntimeRoot, getComponentConfigDirectory, getComponentManagedRoot, resolveRuntimePaths, type ResolvedRuntimePaths } from "./runtime/runtime-paths.js";
14
+ export { createInitialRuntimeState, mergeRuntimeState, readRuntimeState, writeRuntimeState, type RuntimeComponentState, type RuntimeOperationState, type RuntimeState } from "./runtime/runtime-state.js";
15
+ export { installRuntime, planRuntimeLifecycle, queryRuntimeState, removeRuntime, renderRuntimeStateText, runRuntimeLifecycle, updateRuntime, type RuntimeLifecycleOptions, type RuntimeLifecycleResult, type RuntimePlannedAction, type RuntimeStateReport } from "./runtime/runtime-manager.js";
package/dist/index.js CHANGED
@@ -11,4 +11,8 @@ export { getDefaultManagedNodeRuntimeDirectory, installNodeRuntime, resolveManag
11
11
  export { verifyNodeRuntime } from "./runtime/node-verify.js";
12
12
  export { createNpmSyncPlan, loadNpmSyncManifest, normalizeGlobalInventory, syncNpmGlobals, validateNpmSyncManifest } from "./runtime/npm-sync.js";
13
13
  export { buildToolSyncPackageSet, builtInToolSyncCatalog, normalizeToolSyncEntry, validateToolSyncCatalog } from "./runtime/tool-sync-catalog.js";
14
+ export { getDefaultRuntimeManifestPath, loadRuntimeManifest } from "./runtime/runtime-manifest.js";
15
+ export { defaultRuntimeRoot, getComponentConfigDirectory, getComponentManagedRoot, resolveRuntimePaths } from "./runtime/runtime-paths.js";
16
+ export { createInitialRuntimeState, mergeRuntimeState, readRuntimeState, writeRuntimeState } from "./runtime/runtime-state.js";
17
+ export { installRuntime, planRuntimeLifecycle, queryRuntimeState, removeRuntime, renderRuntimeStateText, runRuntimeLifecycle, updateRuntime } from "./runtime/runtime-manager.js";
14
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EAEf,MAAM,cAAc,CAAC;AAQtB,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,WAAW;QACX,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,OAAO,EACL,qCAAqC,EACrC,kBAAkB,EAClB,yBAAyB,EAG1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EAYxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EAOxB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EAEf,MAAM,cAAc,CAAC;AAQtB,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,WAAW;QACX,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,OAAO,EACL,qCAAqC,EACrC,kBAAkB,EAClB,yBAAyB,EAG1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EAYxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EAOxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EAKpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,mBAAmB,EAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAIlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EAKd,MAAM,8BAA8B,CAAC"}
@@ -19,6 +19,7 @@ export function normalizeCommandPath(commandPath) {
19
19
  return trimmed;
20
20
  }
21
21
  export function requiresShellLaunch(_commandPath, _platform = process.platform) {
22
+ void _platform;
22
23
  // Execa already handles Windows command shims without a shell wrapper.
23
24
  // Keeping direct execution preserves argv boundaries for paths with spaces.
24
25
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"command-launch.js","sourceRoot":"","sources":["../../src/runtime/command-launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-launch.js","sourceRoot":"","sources":["../../src/runtime/command-launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { CommandRunner } from "./command-launch.js";
2
+ import type { LoadedRuntimeManifest, RuntimeComponentDefinition, RuntimeLifecyclePhase } from "./runtime-manifest.js";
3
+ import type { ResolvedRuntimePaths } from "./runtime-paths.js";
4
+ export interface RuntimeScriptExecutionContext {
5
+ component: RuntimeComponentDefinition;
6
+ phase: RuntimeLifecyclePhase;
7
+ manifest: LoadedRuntimeManifest;
8
+ paths: ResolvedRuntimePaths;
9
+ componentRoot: string;
10
+ componentConfigDir: string;
11
+ logFilePath?: string;
12
+ purge?: boolean;
13
+ verbose?: boolean;
14
+ runner?: CommandRunner;
15
+ }
16
+ export interface RuntimeScriptExecutionResult {
17
+ command: string;
18
+ args: string[];
19
+ stdout: string;
20
+ stderr: string;
21
+ }
22
+ export declare function executeRuntimeScript(scriptPath: string, context: RuntimeScriptExecutionContext): Promise<RuntimeScriptExecutionResult>;
23
+ export declare function writeRuntimeLog(logFilePath: string, content: string): Promise<void>;
24
+ export declare function getRuntimeScriptLaunch(scriptPath: string): {
25
+ command: string;
26
+ args: string[];
27
+ };
@@ -0,0 +1,86 @@
1
+ import { appendFile, mkdir } from "node:fs/promises";
2
+ import { basename, dirname, extname } from "node:path";
3
+ import process from "node:process";
4
+ import { runCommand } from "./command-launch.js";
5
+ export async function executeRuntimeScript(scriptPath, context) {
6
+ const runner = context.runner ?? runCommand;
7
+ const { command, args } = getRuntimeScriptLaunch(scriptPath);
8
+ const result = await runner(command, args, {
9
+ cwd: context.manifest.manifestDir,
10
+ env: buildRuntimeScriptEnvironment(context),
11
+ maxBuffer: 10 * 1024 * 1024
12
+ });
13
+ if (context.logFilePath) {
14
+ await writeRuntimeLog(context.logFilePath, [
15
+ `# ${context.phase}:${context.component.name}`,
16
+ `$ ${command} ${args.join(" ")}`,
17
+ result.stdout ? `stdout:\n${result.stdout}` : "",
18
+ result.stderr ? `stderr:\n${result.stderr}` : ""
19
+ ]
20
+ .filter(Boolean)
21
+ .join("\n"));
22
+ }
23
+ return {
24
+ command,
25
+ args,
26
+ stdout: result.stdout,
27
+ stderr: result.stderr
28
+ };
29
+ }
30
+ export async function writeRuntimeLog(logFilePath, content) {
31
+ await mkdir(dirname(logFilePath), { recursive: true });
32
+ await appendFile(logFilePath, `${content}\n`, "utf8");
33
+ }
34
+ export function getRuntimeScriptLaunch(scriptPath) {
35
+ const extension = extname(scriptPath).toLowerCase();
36
+ if (extension === ".mjs" || extension === ".js" || extension === ".cjs") {
37
+ return {
38
+ command: process.execPath,
39
+ args: [scriptPath]
40
+ };
41
+ }
42
+ return {
43
+ command: scriptPath,
44
+ args: []
45
+ };
46
+ }
47
+ function buildRuntimeScriptEnvironment(context) {
48
+ return withManagedBinPath({
49
+ ...process.env,
50
+ HAGISCRIPT_RUNTIME_ROOT: context.paths.root,
51
+ HAGISCRIPT_RUNTIME_BIN_DIR: context.paths.bin,
52
+ HAGISCRIPT_RUNTIME_CONFIG_DIR: context.paths.config,
53
+ HAGISCRIPT_RUNTIME_LOGS_DIR: context.paths.logs,
54
+ HAGISCRIPT_RUNTIME_DATA_DIR: context.paths.data,
55
+ HAGISCRIPT_RUNTIME_STATE_PATH: context.paths.stateFile,
56
+ HAGISCRIPT_RUNTIME_TEMPLATE_DIR: `${context.manifest.manifestDir}/templates`,
57
+ HAGISCRIPT_RUNTIME_COMPONENT_NAME: context.component.name,
58
+ HAGISCRIPT_RUNTIME_COMPONENT_TYPE: context.component.type,
59
+ HAGISCRIPT_RUNTIME_COMPONENT_VERSION: context.component.version ?? "",
60
+ HAGISCRIPT_RUNTIME_COMPONENT_ROOT: context.componentRoot,
61
+ HAGISCRIPT_RUNTIME_COMPONENT_CONFIG_DIR: context.componentConfigDir,
62
+ HAGISCRIPT_RUNTIME_PHASE: context.phase,
63
+ HAGISCRIPT_RUNTIME_PURGE: context.purge ? "1" : "0",
64
+ HAGISCRIPT_RUNTIME_VERBOSE: context.verbose ? "1" : "0",
65
+ HAGISCRIPT_RUNTIME_SCRIPT_BASENAME: basename(scriptPathForEnv(context.component, context.phase))
66
+ }, context.paths.bin);
67
+ }
68
+ function withManagedBinPath(env, binPath) {
69
+ const pathKey = process.platform === "win32" ? "Path" : "PATH";
70
+ const currentPath = env[pathKey] ?? env.PATH ?? "";
71
+ return {
72
+ ...env,
73
+ [pathKey]: [binPath, currentPath].filter(Boolean).join(process.platform === "win32" ? ";" : ":")
74
+ };
75
+ }
76
+ function scriptPathForEnv(component, phase) {
77
+ switch (phase) {
78
+ case "install":
79
+ return component.scripts.install;
80
+ case "remove":
81
+ return component.scripts.remove ?? component.scripts.install;
82
+ case "update":
83
+ return component.scripts.update ?? component.scripts.install;
84
+ }
85
+ }
86
+ //# sourceMappingURL=runtime-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-executor.js","sourceRoot":"","sources":["../../src/runtime/runtime-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { type LoadedRuntimeManifest, type RuntimeLifecyclePhase } from "./runtime-manifest.js";
2
+ import { type ResolvedRuntimePaths } from "./runtime-paths.js";
3
+ import { type RuntimeComponentStatus, type RuntimeState } from "./runtime-state.js";
4
+ export interface RuntimeLifecycleOptions {
5
+ manifestPath?: string;
6
+ runtimeRoot?: string;
7
+ components?: readonly string[];
8
+ dryRun?: boolean;
9
+ force?: boolean;
10
+ purge?: boolean;
11
+ checkOnly?: boolean;
12
+ verbose?: boolean;
13
+ logger?: (message: string) => void;
14
+ now?: () => Date;
15
+ }
16
+ export interface RuntimePlannedAction {
17
+ componentName: string;
18
+ phase: RuntimeLifecyclePhase;
19
+ strategy: "builtin" | "script" | "fallback-install" | "fallback-cleanup";
20
+ scriptPath?: string;
21
+ reason?: string;
22
+ }
23
+ export interface RuntimeLifecycleResult {
24
+ manifest: LoadedRuntimeManifest;
25
+ paths: ResolvedRuntimePaths;
26
+ state: RuntimeState;
27
+ plan: RuntimePlannedAction[];
28
+ skipped: {
29
+ componentName: string;
30
+ reason: string;
31
+ }[];
32
+ changedComponents: string[];
33
+ logFilePath?: string;
34
+ }
35
+ export interface RuntimeStateReport {
36
+ runtime: {
37
+ name: string;
38
+ version: string;
39
+ manifestPath: string;
40
+ };
41
+ managedRoot: string;
42
+ managedPaths: ResolvedRuntimePaths;
43
+ ready: boolean;
44
+ components: Array<{
45
+ name: string;
46
+ type: string;
47
+ status: RuntimeComponentStatus;
48
+ version: string | null;
49
+ managedPaths: string[];
50
+ }>;
51
+ lastOperation: RuntimeState["lastOperation"];
52
+ }
53
+ export declare class RuntimeLifecycleError extends Error {
54
+ constructor(message: string, options?: ErrorOptions);
55
+ }
56
+ export declare function installRuntime(options?: RuntimeLifecycleOptions): Promise<RuntimeLifecycleResult>;
57
+ export declare function removeRuntime(options?: RuntimeLifecycleOptions): Promise<RuntimeLifecycleResult>;
58
+ export declare function updateRuntime(options?: RuntimeLifecycleOptions): Promise<RuntimeLifecycleResult>;
59
+ export declare function runRuntimeLifecycle(phase: RuntimeLifecyclePhase, options?: RuntimeLifecycleOptions): Promise<RuntimeLifecycleResult>;
60
+ export declare function queryRuntimeState(options: Pick<RuntimeLifecycleOptions, "manifestPath" | "runtimeRoot">): Promise<RuntimeStateReport>;
61
+ export declare function renderRuntimeStateText(report: RuntimeStateReport): string;
62
+ export declare function planRuntimeLifecycle(phase: RuntimeLifecyclePhase, manifest: LoadedRuntimeManifest, state: RuntimeState, options?: RuntimeLifecycleOptions): {
63
+ plan: RuntimePlannedAction[];
64
+ skipped: {
65
+ componentName: string;
66
+ reason: string;
67
+ }[];
68
+ };