hagiscript-sdk 0.2.9-dev.1780142424.1.dedbfb7

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 (86) hide show
  1. package/README.md +25 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/package.json +38 -0
  4. package/dist/src/index.d.ts +24 -0
  5. package/dist/src/index.js +27 -0
  6. package/dist/src/index.js.map +1 -0
  7. package/dist/src/runtime/command-launch.d.ts +41 -0
  8. package/dist/src/runtime/command-launch.js +100 -0
  9. package/dist/src/runtime/command-launch.js.map +1 -0
  10. package/dist/src/runtime/component-service-manager.d.ts +71 -0
  11. package/dist/src/runtime/component-service-manager.js +367 -0
  12. package/dist/src/runtime/component-service-manager.js.map +1 -0
  13. package/dist/src/runtime/dotnet-installer.d.ts +39 -0
  14. package/dist/src/runtime/dotnet-installer.js +282 -0
  15. package/dist/src/runtime/dotnet-installer.js.map +1 -0
  16. package/dist/src/runtime/download-cache.d.ts +7 -0
  17. package/dist/src/runtime/download-cache.js +110 -0
  18. package/dist/src/runtime/download-cache.js.map +1 -0
  19. package/dist/src/runtime/manifest-manager.d.ts +57 -0
  20. package/dist/src/runtime/manifest-manager.js +188 -0
  21. package/dist/src/runtime/manifest-manager.js.map +1 -0
  22. package/dist/src/runtime/node-download.d.ts +13 -0
  23. package/dist/src/runtime/node-download.js +78 -0
  24. package/dist/src/runtime/node-download.js.map +1 -0
  25. package/dist/src/runtime/node-extract.d.ts +18 -0
  26. package/dist/src/runtime/node-extract.js +170 -0
  27. package/dist/src/runtime/node-extract.js.map +1 -0
  28. package/dist/src/runtime/node-installer.d.ts +43 -0
  29. package/dist/src/runtime/node-installer.js +114 -0
  30. package/dist/src/runtime/node-installer.js.map +1 -0
  31. package/dist/src/runtime/node-platform.d.ts +15 -0
  32. package/dist/src/runtime/node-platform.js +51 -0
  33. package/dist/src/runtime/node-platform.js.map +1 -0
  34. package/dist/src/runtime/node-release.d.ts +28 -0
  35. package/dist/src/runtime/node-release.js +149 -0
  36. package/dist/src/runtime/node-release.js.map +1 -0
  37. package/dist/src/runtime/node-verify.d.ts +30 -0
  38. package/dist/src/runtime/node-verify.js +102 -0
  39. package/dist/src/runtime/node-verify.js.map +1 -0
  40. package/dist/src/runtime/npm-global.d.ts +28 -0
  41. package/dist/src/runtime/npm-global.js +77 -0
  42. package/dist/src/runtime/npm-global.js.map +1 -0
  43. package/dist/src/runtime/npm-sync.d.ts +164 -0
  44. package/dist/src/runtime/npm-sync.js +603 -0
  45. package/dist/src/runtime/npm-sync.js.map +1 -0
  46. package/dist/src/runtime/pm2-manager.d.ts +102 -0
  47. package/dist/src/runtime/pm2-manager.js +715 -0
  48. package/dist/src/runtime/pm2-manager.js.map +1 -0
  49. package/dist/src/runtime/runtime-executor.d.ts +58 -0
  50. package/dist/src/runtime/runtime-executor.js +291 -0
  51. package/dist/src/runtime/runtime-executor.js.map +1 -0
  52. package/dist/src/runtime/runtime-manager.d.ts +92 -0
  53. package/dist/src/runtime/runtime-manager.js +798 -0
  54. package/dist/src/runtime/runtime-manager.js.map +1 -0
  55. package/dist/src/runtime/runtime-manifest.d.ts +106 -0
  56. package/dist/src/runtime/runtime-manifest.js +450 -0
  57. package/dist/src/runtime/runtime-manifest.js.map +1 -0
  58. package/dist/src/runtime/runtime-paths.d.ts +45 -0
  59. package/dist/src/runtime/runtime-paths.js +138 -0
  60. package/dist/src/runtime/runtime-paths.js.map +1 -0
  61. package/dist/src/runtime/runtime-state.d.ts +45 -0
  62. package/dist/src/runtime/runtime-state.js +82 -0
  63. package/dist/src/runtime/runtime-state.js.map +1 -0
  64. package/dist/src/runtime/server-config.d.ts +21 -0
  65. package/dist/src/runtime/server-config.js +169 -0
  66. package/dist/src/runtime/server-config.js.map +1 -0
  67. package/dist/src/runtime/server-manager.d.ts +107 -0
  68. package/dist/src/runtime/server-manager.js +946 -0
  69. package/dist/src/runtime/server-manager.js.map +1 -0
  70. package/dist/src/runtime/server-version-state.d.ts +43 -0
  71. package/dist/src/runtime/server-version-state.js +156 -0
  72. package/dist/src/runtime/server-version-state.js.map +1 -0
  73. package/dist/src/runtime/seven-zip-extract.d.ts +15 -0
  74. package/dist/src/runtime/seven-zip-extract.js +104 -0
  75. package/dist/src/runtime/seven-zip-extract.js.map +1 -0
  76. package/dist/src/runtime/tool-sync-catalog.config.json +59 -0
  77. package/dist/src/runtime/tool-sync-catalog.d.ts +48 -0
  78. package/dist/src/runtime/tool-sync-catalog.js +189 -0
  79. package/dist/src/runtime/tool-sync-catalog.js.map +1 -0
  80. package/dist/src/runtime/zip-extract.d.ts +6 -0
  81. package/dist/src/runtime/zip-extract.js +90 -0
  82. package/dist/src/runtime/zip-extract.js.map +1 -0
  83. package/dist/src/version.d.ts +7 -0
  84. package/dist/src/version.js +23 -0
  85. package/dist/src/version.js.map +1 -0
  86. package/package.json +38 -0
@@ -0,0 +1,189 @@
1
+ import { basename } from "node:path";
2
+ import semver from "semver";
3
+ import toolSyncCatalogConfig from "./tool-sync-catalog.config.json" with { type: "json" };
4
+ export class ToolSyncCatalogValidationError extends Error {
5
+ errors;
6
+ constructor(errors) {
7
+ super(`Tool sync catalog validation failed: ${errors.join("; ")}`);
8
+ this.name = "ToolSyncCatalogValidationError";
9
+ this.errors = errors;
10
+ }
11
+ }
12
+ export const builtInToolSyncCatalogConfig = toolSyncCatalogConfig;
13
+ export const builtInToolSyncCatalog = builtInToolSyncCatalogConfig.tools;
14
+ export function validateToolSyncCatalog(catalog = builtInToolSyncCatalog) {
15
+ const errors = [];
16
+ const seenIds = new Set();
17
+ const seenMandatory = new Set();
18
+ for (const entry of catalog) {
19
+ validateCatalogEntry(entry, errors);
20
+ if (seenIds.has(entry.id)) {
21
+ errors.push(`duplicate tool ID: ${entry.id}`);
22
+ }
23
+ seenIds.add(entry.id);
24
+ if (entry.requirement === "mandatory") {
25
+ seenMandatory.add(entry.id);
26
+ }
27
+ }
28
+ for (const requiredId of ["openspec-skills"]) {
29
+ if (!seenMandatory.has(requiredId)) {
30
+ errors.push(`missing mandatory tool: ${requiredId}`);
31
+ }
32
+ }
33
+ if (errors.length > 0) {
34
+ throw new ToolSyncCatalogValidationError(errors);
35
+ }
36
+ return catalog;
37
+ }
38
+ export function buildToolSyncPackageSet(options = {}) {
39
+ const catalog = validateToolSyncCatalog(options.catalog ?? builtInToolSyncCatalog);
40
+ const errors = [];
41
+ const packages = {};
42
+ const optionalEntries = catalog.filter((entry) => entry.group === "optional-agent-cli");
43
+ const optionalById = new Map(optionalEntries.map((entry) => [entry.id, entry]));
44
+ const selectedIds = normalizeSelectedIds(options.selectedOptionalAgentCliIds ?? []);
45
+ const customEntries = normalizeCustomAgentCliTools(options.customAgentClis ?? [], errors);
46
+ if (options.optionalAgentCliSyncEnabled) {
47
+ for (const selectedId of selectedIds) {
48
+ if (!optionalById.has(selectedId)) {
49
+ errors.push(`unknown optional agent CLI tool ID: ${selectedId}`);
50
+ }
51
+ }
52
+ }
53
+ else if (selectedIds.length > 0 || customEntries.length > 0) {
54
+ errors.push("optional agent CLI sync must be enabled when optional CLI selections are provided");
55
+ }
56
+ for (const entry of catalog) {
57
+ if (entry.requirement !== "mandatory") {
58
+ continue;
59
+ }
60
+ addPackageConstraint(packages, entry, errors);
61
+ }
62
+ if (options.optionalAgentCliSyncEnabled) {
63
+ for (const selectedId of selectedIds) {
64
+ const entry = optionalById.get(selectedId);
65
+ if (entry) {
66
+ addPackageConstraint(packages, entry, errors);
67
+ }
68
+ }
69
+ for (const entry of customEntries) {
70
+ addPackageConstraint(packages, entry, errors);
71
+ }
72
+ }
73
+ if (errors.length > 0) {
74
+ throw new ToolSyncCatalogValidationError(errors);
75
+ }
76
+ return Object.fromEntries(Object.entries(packages).sort(([left], [right]) => left.localeCompare(right)));
77
+ }
78
+ export function normalizeToolSyncEntry(entry) {
79
+ return [
80
+ entry.packageName,
81
+ {
82
+ version: normalizeVersionSelector(entry.version),
83
+ target: entry.target?.trim(),
84
+ toolId: entry.id,
85
+ toolDisplayName: entry.displayName,
86
+ toolGroup: entry.group,
87
+ toolRequirement: entry.requirement
88
+ }
89
+ ];
90
+ }
91
+ function addPackageConstraint(packages, entry, errors) {
92
+ const [packageName, constraint] = normalizeToolSyncEntry(entry);
93
+ const existing = packages[packageName];
94
+ if (existing) {
95
+ errors.push(`package ${packageName} is declared by both ${existing.toolId} and ${entry.id}`);
96
+ return;
97
+ }
98
+ packages[packageName] = constraint;
99
+ }
100
+ function validateCatalogEntry(entry, errors) {
101
+ if (!isValidToolId(entry.id)) {
102
+ errors.push(`invalid tool ID: ${entry.id}`);
103
+ }
104
+ if (entry.displayName.trim().length === 0) {
105
+ errors.push(`${entry.id}.displayName must be non-empty`);
106
+ }
107
+ if (!isValidPackageName(entry.packageName)) {
108
+ errors.push(`${entry.id}.packageName is invalid: ${entry.packageName}`);
109
+ }
110
+ if (!isValidVersionSelector(entry.version)) {
111
+ errors.push(`${entry.id}.version is invalid: ${entry.version}`);
112
+ }
113
+ if (entry.target !== undefined && entry.target.trim().length === 0) {
114
+ errors.push(`${entry.id}.target must be non-empty when provided`);
115
+ }
116
+ if (entry.group === "mandatory" && entry.requirement !== "mandatory") {
117
+ errors.push(`${entry.id} must be mandatory in the mandatory group`);
118
+ }
119
+ if (entry.group === "optional-agent-cli" && entry.requirement !== "optional") {
120
+ errors.push(`${entry.id} must be optional in the optional agent CLI group`);
121
+ }
122
+ }
123
+ function normalizeSelectedIds(ids) {
124
+ return Array.from(new Set(ids.map((id) => id.trim()).filter(Boolean))).sort();
125
+ }
126
+ function normalizeCustomAgentCliTools(inputs, errors) {
127
+ return inputs.map((input, index) => {
128
+ const packageName = input.packageName?.trim() ?? "";
129
+ const id = input.id?.trim() || `custom:${packageNameToToolId(packageName)}`;
130
+ const version = input.version?.trim() || "latest";
131
+ const displayName = input.displayName?.trim() || packageName;
132
+ const target = input.target?.trim() || version;
133
+ const entry = {
134
+ id,
135
+ displayName,
136
+ packageName,
137
+ version,
138
+ target,
139
+ group: "optional-agent-cli",
140
+ requirement: "optional"
141
+ };
142
+ if (!packageName) {
143
+ errors.push(`customAgentClis[${index}].packageName must be non-empty`);
144
+ }
145
+ validateCatalogEntry(entry, errors);
146
+ return entry;
147
+ });
148
+ }
149
+ function normalizeVersionSelector(selector) {
150
+ const trimmed = selector.trim();
151
+ return trimmed === "latest" ? "*" : trimmed;
152
+ }
153
+ function isValidVersionSelector(selector) {
154
+ const normalized = normalizeVersionSelector(selector);
155
+ return normalized.length > 0 && semver.validRange(normalized) !== null;
156
+ }
157
+ function isValidToolId(id) {
158
+ return /^[a-z0-9][a-z0-9:-]*$/u.test(id);
159
+ }
160
+ function packageNameToToolId(packageName) {
161
+ return packageName
162
+ .replace(/^@/u, "")
163
+ .replace(/[^a-zA-Z0-9]+/gu, "-")
164
+ .replace(/^-+|-+$/gu, "")
165
+ .toLowerCase();
166
+ }
167
+ function isValidPackageName(packageName) {
168
+ if (packageName.trim() !== packageName || packageName.length === 0) {
169
+ return false;
170
+ }
171
+ if (packageName.includes("\\") || packageName.includes("/../")) {
172
+ return false;
173
+ }
174
+ if (packageName.startsWith("@")) {
175
+ const parts = packageName.split("/");
176
+ return (parts.length === 2 &&
177
+ parts[0].startsWith("@") &&
178
+ isValidPackageNamePart(parts[0].slice(1)) &&
179
+ isValidPackageNamePart(parts[1]));
180
+ }
181
+ return !packageName.includes("/") && isValidPackageNamePart(packageName);
182
+ }
183
+ function isValidPackageNamePart(value) {
184
+ return (value.length > 0 &&
185
+ value === basename(value) &&
186
+ !value.startsWith(".") &&
187
+ !/[\s@]/u.test(value));
188
+ }
189
+ //# sourceMappingURL=tool-sync-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-sync-catalog.js","sourceRoot":"","sources":["../../../../src/runtime/tool-sync-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type CommandRunner } from "./command-launch.js";
2
+ export interface ZipExtractionOptions {
3
+ platform?: NodeJS.Platform;
4
+ runCommand?: CommandRunner;
5
+ }
6
+ export declare function extractZipArchive(archivePath: string, destination: string, options?: ZipExtractionOptions): Promise<void>;
@@ -0,0 +1,90 @@
1
+ import extractZip from "extract-zip";
2
+ import { resolve } from "node:path";
3
+ import { CommandExecutionError, runCommand } from "./command-launch.js";
4
+ const windowsTarCommands = ["tar.exe", "tar"];
5
+ const windowsPowerShellCommands = ["pwsh", "powershell.exe", "powershell"];
6
+ export async function extractZipArchive(archivePath, destination, options = {}) {
7
+ const platform = options.platform ?? process.platform;
8
+ const runner = options.runCommand ?? runCommand;
9
+ const resolvedDestination = resolve(destination);
10
+ const nativeFailures = [];
11
+ if (platform === "win32") {
12
+ const nativeResult = await tryExtractZipArchiveWithNativeTools(archivePath, resolvedDestination, runner);
13
+ if (nativeResult.success) {
14
+ return;
15
+ }
16
+ nativeFailures.push(...nativeResult.failures);
17
+ }
18
+ try {
19
+ await extractZip(archivePath, {
20
+ dir: resolvedDestination
21
+ });
22
+ }
23
+ catch (error) {
24
+ const archiveError = error instanceof Error ? error : new Error(String(error));
25
+ const nativeSummary = nativeFailures.length > 0
26
+ ? ` Native attempts: ${nativeFailures.join(" | ")}.`
27
+ : "";
28
+ throw new Error(`Failed to extract zip archive ${archivePath}: ${archiveError.message}.${nativeSummary}`);
29
+ }
30
+ }
31
+ async function tryExtractZipArchiveWithNativeTools(archivePath, destination, runner) {
32
+ const failures = [];
33
+ for (const command of windowsTarCommands) {
34
+ const result = await tryRunZipExtractionCommand(runner, command, [
35
+ "-xf",
36
+ archivePath,
37
+ "-C",
38
+ destination
39
+ ]);
40
+ if (result.success) {
41
+ return { success: true, failures };
42
+ }
43
+ failures.push(result.failure);
44
+ }
45
+ for (const command of windowsPowerShellCommands) {
46
+ const result = await tryRunZipExtractionCommand(runner, command, [
47
+ "-NoLogo",
48
+ "-NoProfile",
49
+ "-NonInteractive",
50
+ "-Command",
51
+ buildExpandArchiveCommand(archivePath, destination)
52
+ ]);
53
+ if (result.success) {
54
+ return { success: true, failures };
55
+ }
56
+ failures.push(result.failure);
57
+ }
58
+ return { success: false, failures };
59
+ }
60
+ async function tryRunZipExtractionCommand(runner, command, args) {
61
+ try {
62
+ await runner(command, args);
63
+ return { success: true };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ success: false,
68
+ failure: formatCommandFailure(command, error)
69
+ };
70
+ }
71
+ }
72
+ function buildExpandArchiveCommand(archivePath, destination) {
73
+ const escapedArchivePath = escapePowerShellSingleQuotedString(archivePath);
74
+ const escapedDestination = escapePowerShellSingleQuotedString(destination);
75
+ return `Expand-Archive -LiteralPath '${escapedArchivePath}' -DestinationPath '${escapedDestination}' -Force`;
76
+ }
77
+ function escapePowerShellSingleQuotedString(value) {
78
+ return value.replaceAll("'", "''");
79
+ }
80
+ function formatCommandFailure(command, error) {
81
+ if (error instanceof CommandExecutionError) {
82
+ const details = error.context.stderr.trim() || error.context.stdout.trim() || error.message;
83
+ return `${command}: ${details}`;
84
+ }
85
+ if (error instanceof Error) {
86
+ return `${command}: ${error.message}`;
87
+ }
88
+ return `${command}: ${String(error)}`;
89
+ }
90
+ //# sourceMappingURL=zip-extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip-extract.js","sourceRoot":"","sources":["../../../../src/runtime/zip-extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface PackageMetadata {
2
+ name: string;
3
+ version: string;
4
+ }
5
+ export declare const packageName: string;
6
+ export declare const packageVersion: string;
7
+ export declare function getPackageMetadata(): PackageMetadata;
@@ -0,0 +1,23 @@
1
+ import { readFileSync } from "node:fs";
2
+ function loadPackageMetadata() {
3
+ const packageJsonUrl = new URL("../package.json", import.meta.url);
4
+ const packageJson = JSON.parse(readFileSync(packageJsonUrl, "utf8"));
5
+ if (typeof packageJson.name !== "string" || packageJson.name.length === 0) {
6
+ throw new Error("package.json must define a non-empty string name.");
7
+ }
8
+ if (typeof packageJson.version !== "string" ||
9
+ packageJson.version.length === 0) {
10
+ throw new Error("package.json must define a non-empty string version.");
11
+ }
12
+ return {
13
+ name: packageJson.name,
14
+ version: packageJson.version
15
+ };
16
+ }
17
+ const packageMetadata = loadPackageMetadata();
18
+ export const packageName = packageMetadata.name;
19
+ export const packageVersion = packageMetadata.version;
20
+ export function getPackageMetadata() {
21
+ return { ...packageMetadata };
22
+ }
23
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOvC,SAAS,mBAAmB;IAC1B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAGlE,CAAC;IAEF,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IACE,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;QACvC,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAChC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC;AAEtD,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;AAChC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "hagiscript-sdk",
3
+ "version": "0.2.9-dev.1780142424.1.dedbfb7",
4
+ "description": "SDK-only distribution of Hagiscript runtime and server management APIs.",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/HagiCode-org/hagiscript#readme",
7
+ "bugs": {
8
+ "url": "https://github.com/HagiCode-org/hagiscript/issues"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/HagiCode-org/hagiscript.git"
13
+ },
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/src/index.d.ts",
18
+ "default": "./dist/src/index.js"
19
+ },
20
+ "./package.json": "./package.json"
21
+ },
22
+ "files": [
23
+ "dist/",
24
+ "README.md"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "provenance": false,
29
+ "registry": "https://registry.npmjs.org/"
30
+ },
31
+ "dependencies": {
32
+ "7zip-bin": "^5.2.0",
33
+ "execa": "^9.6.1",
34
+ "extract-zip": "^2.0.1",
35
+ "semver": "^7.7.4",
36
+ "yaml": "^2.8.4"
37
+ }
38
+ }