@hagicode/hagiscript 0.1.0 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -7
- package/README_cn.md +58 -7
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/npm-sync-commands.js +138 -13
- package/dist/commands/npm-sync-commands.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/node-installer.d.ts +21 -0
- package/dist/runtime/node-installer.js +39 -0
- package/dist/runtime/node-installer.js.map +1 -1
- package/dist/runtime/npm-global.d.ts +3 -0
- package/dist/runtime/npm-global.js +13 -2
- package/dist/runtime/npm-global.js.map +1 -1
- package/dist/runtime/npm-sync.d.ts +66 -2
- package/dist/runtime/npm-sync.js +279 -17
- package/dist/runtime/npm-sync.js.map +1 -1
- package/dist/runtime/tool-sync-catalog.config.json +77 -0
- package/dist/runtime/tool-sync-catalog.d.ts +48 -0
- package/dist/runtime/tool-sync-catalog.js +189 -0
- package/dist/runtime/tool-sync-catalog.js.map +1 -0
- package/dist/version.d.ts +2 -2
- package/dist/version.js +19 -5
- package/dist/version.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"tools": [
|
|
4
|
+
{
|
|
5
|
+
"id": "openspec-skills",
|
|
6
|
+
"displayName": "OpenSpec skills",
|
|
7
|
+
"packageName": "skills",
|
|
8
|
+
"version": "1.5.1",
|
|
9
|
+
"target": "1.5.1",
|
|
10
|
+
"group": "mandatory",
|
|
11
|
+
"requirement": "mandatory"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "omniroute",
|
|
15
|
+
"displayName": "OmniRoute",
|
|
16
|
+
"packageName": "omniroute",
|
|
17
|
+
"version": "3.6.9",
|
|
18
|
+
"target": "3.6.9",
|
|
19
|
+
"group": "mandatory",
|
|
20
|
+
"requirement": "mandatory"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "code-server",
|
|
24
|
+
"displayName": "code-server",
|
|
25
|
+
"packageName": "code-server",
|
|
26
|
+
"version": "4.117.0",
|
|
27
|
+
"target": "4.117.0",
|
|
28
|
+
"group": "mandatory",
|
|
29
|
+
"requirement": "mandatory"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "codex",
|
|
33
|
+
"displayName": "Codex CLI",
|
|
34
|
+
"packageName": "@openai/codex",
|
|
35
|
+
"version": "0.125.0",
|
|
36
|
+
"target": "0.125.0",
|
|
37
|
+
"group": "optional-agent-cli",
|
|
38
|
+
"requirement": "optional"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "claude-code",
|
|
42
|
+
"displayName": "Claude Code",
|
|
43
|
+
"packageName": "@anthropic-ai/claude-code",
|
|
44
|
+
"version": "2.1.119",
|
|
45
|
+
"target": "2.1.119",
|
|
46
|
+
"group": "optional-agent-cli",
|
|
47
|
+
"requirement": "optional"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "fission-openspec",
|
|
51
|
+
"displayName": "Fission OpenSpec",
|
|
52
|
+
"packageName": "@fission-ai/openspec",
|
|
53
|
+
"version": "1.3.1",
|
|
54
|
+
"target": "1.3.1",
|
|
55
|
+
"group": "optional-agent-cli",
|
|
56
|
+
"requirement": "optional"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "qoder",
|
|
60
|
+
"displayName": "Qoder CLI",
|
|
61
|
+
"packageName": "@qoder-ai/qodercli",
|
|
62
|
+
"version": "0.1.48",
|
|
63
|
+
"target": "0.1.48",
|
|
64
|
+
"group": "optional-agent-cli",
|
|
65
|
+
"requirement": "optional"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "opencode",
|
|
69
|
+
"displayName": "OpenCode CLI",
|
|
70
|
+
"packageName": "opencode-ai",
|
|
71
|
+
"version": "1.14.24",
|
|
72
|
+
"target": "1.14.24",
|
|
73
|
+
"group": "optional-agent-cli",
|
|
74
|
+
"requirement": "optional"
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type ToolSyncGroupId = "mandatory" | "optional-agent-cli";
|
|
2
|
+
export type ToolSyncRequirement = "mandatory" | "optional";
|
|
3
|
+
export interface ToolSyncCatalogEntry {
|
|
4
|
+
id: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
packageName: string;
|
|
7
|
+
version: string;
|
|
8
|
+
target?: string;
|
|
9
|
+
group: ToolSyncGroupId;
|
|
10
|
+
requirement: ToolSyncRequirement;
|
|
11
|
+
}
|
|
12
|
+
export interface ToolSyncPackageConstraint {
|
|
13
|
+
version: string;
|
|
14
|
+
target?: string;
|
|
15
|
+
toolId: string;
|
|
16
|
+
toolDisplayName: string;
|
|
17
|
+
toolGroup: ToolSyncGroupId;
|
|
18
|
+
toolRequirement: ToolSyncRequirement;
|
|
19
|
+
}
|
|
20
|
+
export interface CustomAgentCliToolInput {
|
|
21
|
+
id?: string;
|
|
22
|
+
displayName?: string;
|
|
23
|
+
packageName: string;
|
|
24
|
+
version?: string;
|
|
25
|
+
target?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ToolSyncSelection {
|
|
28
|
+
optionalAgentCliSyncEnabled?: boolean;
|
|
29
|
+
selectedOptionalAgentCliIds?: string[];
|
|
30
|
+
customAgentClis?: CustomAgentCliToolInput[];
|
|
31
|
+
}
|
|
32
|
+
export interface BuildToolSyncPackageSetOptions extends ToolSyncSelection {
|
|
33
|
+
catalog?: readonly ToolSyncCatalogEntry[];
|
|
34
|
+
}
|
|
35
|
+
interface ToolSyncCatalogConfig {
|
|
36
|
+
schemaVersion: number;
|
|
37
|
+
tools: ToolSyncCatalogEntry[];
|
|
38
|
+
}
|
|
39
|
+
export declare class ToolSyncCatalogValidationError extends Error {
|
|
40
|
+
readonly errors: string[];
|
|
41
|
+
constructor(errors: string[]);
|
|
42
|
+
}
|
|
43
|
+
export declare const builtInToolSyncCatalogConfig: ToolSyncCatalogConfig;
|
|
44
|
+
export declare const builtInToolSyncCatalog: readonly ToolSyncCatalogEntry[];
|
|
45
|
+
export declare function validateToolSyncCatalog(catalog?: readonly ToolSyncCatalogEntry[]): readonly ToolSyncCatalogEntry[];
|
|
46
|
+
export declare function buildToolSyncPackageSet(options?: BuildToolSyncPackageSetOptions): Record<string, ToolSyncPackageConstraint>;
|
|
47
|
+
export declare function normalizeToolSyncEntry(entry: ToolSyncCatalogEntry): [string, ToolSyncPackageConstraint];
|
|
48
|
+
export {};
|
|
@@ -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", "omniroute", "code-server"]) {
|
|
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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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const packageName = "@hagicode/hagiscript";
|
|
2
|
-
export declare const packageVersion = "0.1.0";
|
|
3
1
|
export interface PackageMetadata {
|
|
4
2
|
name: string;
|
|
5
3
|
version: string;
|
|
6
4
|
}
|
|
5
|
+
export declare const packageName: string;
|
|
6
|
+
export declare const packageVersion: string;
|
|
7
7
|
export declare function getPackageMetadata(): PackageMetadata;
|
package/dist/version.js
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
+
}
|
|
4
12
|
return {
|
|
5
|
-
name:
|
|
6
|
-
version:
|
|
13
|
+
name: packageJson.name,
|
|
14
|
+
version: packageJson.version
|
|
7
15
|
};
|
|
8
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
|
+
}
|
|
9
23
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
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
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hagicode/hagiscript",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Scoped npm package foundation for Hagiscript language tooling.",
|
|
5
5
|
"homepage": "https://github.com/HagiCode-org/hagiscript#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"lint": "eslint .",
|
|
36
36
|
"integration:installed-runtime": "node scripts/integration-installed-runtime.mjs",
|
|
37
37
|
"pack:check": "node scripts/verify-package.mjs",
|
|
38
|
+
"publish:check-prereqs": "node scripts/verify-npm-publish-prereqs.mjs",
|
|
38
39
|
"publish:prepare-dev-version": "node scripts/prepare-dev-version.mjs",
|
|
39
40
|
"publish:verify-release": "node scripts/verify-release-version.mjs",
|
|
40
41
|
"test": "vitest run",
|
|
@@ -51,6 +52,7 @@
|
|
|
51
52
|
},
|
|
52
53
|
"publishConfig": {
|
|
53
54
|
"access": "public",
|
|
55
|
+
"provenance": true,
|
|
54
56
|
"registry": "https://registry.npmjs.org/"
|
|
55
57
|
},
|
|
56
58
|
"dependencies": {
|