@x12i/memorix-scoper-pagx 0.0.0-stage → 1.0.0

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 CHANGED
@@ -1,3 +1,84 @@
1
- # Temporary Holding Version
1
+ # @x12i/memorix-scoper-pagx
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Format, validation, and authoring tools for **scoper pagx packages**, plus the pagx client this repo uses to publish and install them.
4
+
5
+ `@x12i/pagx` stores versioned agent packages and extracts them into `.pagx/`. It does not know what a scoper package contains. This package does.
6
+
7
+ The command is `scoper-pagx`. Use it instead of calling `pagx` directly.
8
+
9
+ This package is the generic format. The repo tries it with [`examples/general-scope`](../../examples/general-scope), installed by `scoper-pagx install` into `.pagx/@x12i/general-scope`. `.pagx/` is gitignored and omitted from npm packs. The source you edit is `examples/general-scope`.
10
+
11
+ ## Package layout
12
+
13
+ `agent.type` is `scoper`, `agent.typeVersion` is `1`, and `agent.entrypoint` is `scoper.json`.
14
+
15
+ ```text
16
+ pagx.json registry manifest
17
+ catalog.json sub-packages only: { "items": [] }. A root package omits this file
18
+ scoper.json format body: id, intent, rules, and the file index
19
+ README.md human documentation
20
+ AGENT.md instructions for a code or AI agent
21
+ profiles/ ScoperProfile JSON, one file per profile
22
+ examples/ example requests an agent can copy
23
+ ```
24
+
25
+ Normative detail is in [docs/format.md](docs/format.md). Instructions for an agent that is creating or reading these packages are in [docs/AGENT.md](docs/AGENT.md).
26
+
27
+ ## Create and check
28
+
29
+ ```sh
30
+ scoper-pagx init ./vuln-scope \
31
+ --name @x12i/vuln-scope \
32
+ --title "Vulnerability scoping" \
33
+ --summary "Gather vulnerability evidence without inventing exploitability." \
34
+ --intent "Read stored vulnerability records and label gaps UNKNOWN."
35
+
36
+ scoper-pagx profile add ./vuln-scope --file ./vulnerability.json
37
+ scoper-pagx example add ./vuln-scope --file ./fetch-one.json
38
+ scoper-pagx agent sync ./vuln-scope
39
+ scoper-pagx validate ./vuln-scope
40
+ ```
41
+
42
+ `init` writes the required rules into `scoper.json` and generates `README.md` and `AGENT.md`. `profile add` and `example add` do not rewrite `AGENT.md`. Run `agent sync` after those edits when the generated agent file should match the JSON. `agent sync` replaces hand-edited agent text.
43
+
44
+ A project that wants `pagx check` to require this type:
45
+
46
+ ```sh
47
+ scoper-pagx accept .
48
+ ```
49
+
50
+ That writes `acceptedTypes` on the **project** `pagx.json` (the file next to `.pagx/`). It refuses to edit a package manifest.
51
+
52
+ ## Publish and install
53
+
54
+ ```sh
55
+ scoper-pagx publish ./vuln-scope
56
+ scoper-pagx install @x12i/vuln-scope
57
+ scoper-pagx update
58
+ scoper-pagx ls
59
+ ```
60
+
61
+ `publish` and `pack` validate the folder when it is a scoper package, then call pagx. `install`, `update`, and `ci` call pagx, then validate every installed package whose `agent.type` is `scoper`. `--skip-validate` skips that check. `scoper-pagx catalog` is the pagx catalog command for a published sub-package.
62
+
63
+ Every other pagx command is passed through: `search`, `view`, `whoami`, `ping`, `token`, `config`, and the rest. `scoper-pagx passthrough <args>` runs pagx with no scoper checks. `scoper-pagx help pagx` prints pagx help.
64
+
65
+ ## Library
66
+
67
+ ```ts
68
+ import { ScoperPagx, createPackage, validatePackage } from "@x12i/memorix-scoper-pagx";
69
+
70
+ const created = await createPackage("./vuln-scope", {
71
+ name: "@x12i/vuln-scope",
72
+ title: "Vulnerability scoping",
73
+ summary: "Gather vulnerability evidence without inventing exploitability.",
74
+ intent: "Read stored vulnerability records and label gaps UNKNOWN.",
75
+ });
76
+
77
+ await validatePackage(created.root);
78
+
79
+ const pagx = await ScoperPagx.open();
80
+ await pagx.publish(created.root);
81
+ await pagx.install(["@x12i/vuln-scope"]);
82
+ ```
83
+
84
+ `ScoperPagx` exposes pagx `publish`, `install`, `update`, `ci`, `uninstall`, `list`, `outdated`, `search`, `check`, `view`, `owners`, `pack`, `version`, `whoami`, and `ping`. The pagx SDK is re-exported from this package, so callers depend on `@x12i/memorix-scoper-pagx`.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ export type CliIo = {
3
+ stdout: (text: string) => void;
4
+ stderr: (text: string) => void;
5
+ cwd?: string;
6
+ };
7
+ type Split = {
8
+ command?: string;
9
+ positionals: string[];
10
+ };
11
+ export declare function splitArgv(argv: string[]): Split;
12
+ export declare function runCli(argv: string[], io?: CliIo): Promise<number>;
13
+ export {};
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAkBA,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAgFF,KAAK,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAmB/C;AAyGD,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,KAGH,GACA,OAAO,CAAC,MAAM,CAAC,CA6HjB"}
package/dist/cli.js ADDED
@@ -0,0 +1,388 @@
1
+ #!/usr/bin/env node
2
+ import { spawn } from "node:child_process";
3
+ import { readFile } from "node:fs/promises";
4
+ import { resolve } from "node:path";
5
+ import { fileURLToPath, pathToFileURL } from "node:url";
6
+ import { PagxError, readManifest } from "@x12i/pagx";
7
+ import { gatePublish, validateInstalled } from "./client.js";
8
+ import { createPackage, validatePackage } from "./format.js";
9
+ import { ScoperPagxError, issueText } from "./issues.js";
10
+ import { acceptScoperType, removeExample, removeProfile, syncAgentInstructions, upsertExample, upsertProfile, } from "./toolbox.js";
11
+ const VALUED = new Set([
12
+ "--registry",
13
+ "--userconfig",
14
+ "--scope",
15
+ "--tag",
16
+ "--access",
17
+ "--otp",
18
+ "--pack-destination",
19
+ "--type",
20
+ "--location",
21
+ "--key",
22
+ "--username",
23
+ "--role",
24
+ "--package",
25
+ "--expires-in",
26
+ "--issuer",
27
+ "--audience",
28
+ "--out",
29
+ "--name",
30
+ "--title",
31
+ "--summary",
32
+ "--intent",
33
+ "--version",
34
+ "--id",
35
+ "--description",
36
+ "--file",
37
+ ]);
38
+ const DASHED = {
39
+ "-i": "install",
40
+ "--i": "install",
41
+ "--install": "install",
42
+ "-install": "install",
43
+ "--publish": "publish",
44
+ "-publish": "publish",
45
+ "--pack": "pack",
46
+ "--init": "init",
47
+ "--update": "update",
48
+ "-update": "update",
49
+ };
50
+ const INSTALL = new Set([
51
+ "install",
52
+ "i",
53
+ "add",
54
+ "isntall",
55
+ "in",
56
+ "ins",
57
+ "inst",
58
+ "insta",
59
+ "instal",
60
+ "isnt",
61
+ "isnta",
62
+ "isntal",
63
+ ]);
64
+ const HELP = `scoper-pagx — scoper package format, and the pagx client to use
65
+
66
+ Format
67
+ init <dir> --name @scope/pkg --title <text> --summary <text> --intent <text>
68
+ validate [dir]
69
+ inspect [dir]
70
+ profile add <dir> --file <profile.json>
71
+ profile remove <dir> <id>
72
+ example add <dir> --file <example.json>
73
+ example remove <dir> <id>
74
+ agent sync <dir>
75
+ accept [projectDir]
76
+
77
+ Registry
78
+ install, update, uninstall, ls, search, view, publish, pack, check, ci, catalog, whoami, ping
79
+ and the rest of the pagx commands. publish and pack validate a scoper package first.
80
+ install, update, and ci validate installed packages whose agent.type is scoper.
81
+ --skip-validate skips that check. scoper-pagx passthrough <args> runs pagx unchanged.
82
+
83
+ Docs: README.md, docs/format.md, and docs/AGENT.md in @x12i/memorix-scoper-pagx.
84
+ `;
85
+ export function splitArgv(argv) {
86
+ let command;
87
+ const positionals = [];
88
+ for (let index = 0; index < argv.length; index += 1) {
89
+ const arg = argv[index];
90
+ if (arg === undefined)
91
+ continue;
92
+ if (arg === "--") {
93
+ positionals.push(...argv.slice(index + 1));
94
+ break;
95
+ }
96
+ if (arg.startsWith("-") && !DASHED[arg]) {
97
+ if (!arg.includes("=") && VALUED.has(arg))
98
+ index += 1;
99
+ continue;
100
+ }
101
+ const token = DASHED[arg] ?? arg;
102
+ if (!command)
103
+ command = token;
104
+ else
105
+ positionals.push(token);
106
+ }
107
+ return { command, positionals };
108
+ }
109
+ function flag(argv, name) {
110
+ const inline = argv.find((arg) => arg.startsWith(`${name}=`));
111
+ if (inline)
112
+ return inline.slice(name.length + 1);
113
+ const index = argv.indexOf(name);
114
+ const value = index >= 0 ? argv[index + 1] : undefined;
115
+ if (value === undefined || value.startsWith("-"))
116
+ return undefined;
117
+ return value;
118
+ }
119
+ function cwdOf(io) {
120
+ return io.cwd ?? process.cwd();
121
+ }
122
+ function directory(io, dir) {
123
+ return resolve(cwdOf(io), dir ?? ".");
124
+ }
125
+ function print(io, value, json) {
126
+ io.stdout(`${typeof value === "string" && !json ? value : JSON.stringify(value, null, 2)}\n`);
127
+ }
128
+ function fail(io, error) {
129
+ if (error instanceof ScoperPagxError || error instanceof PagxError) {
130
+ io.stderr(`scoper-pagx: ${error.message}\n`);
131
+ if (error instanceof ScoperPagxError && error.issues.length)
132
+ io.stderr(`${issueText(error.issues)}\n`);
133
+ return 1;
134
+ }
135
+ throw error;
136
+ }
137
+ function pagxPackageRoot() {
138
+ return new URL("../../", import.meta.resolve("@x12i/pagx"));
139
+ }
140
+ function pagxCliPath() {
141
+ return fileURLToPath(new URL("dist/client/cli.js", pagxPackageRoot()));
142
+ }
143
+ async function ownVersion() {
144
+ const text = await readFile(new URL("../package.json", import.meta.url), "utf8");
145
+ const json = JSON.parse(text);
146
+ return json.version ?? "0.0.0";
147
+ }
148
+ async function pagxVersion() {
149
+ const text = await readFile(new URL("package.json", pagxPackageRoot()), "utf8");
150
+ const json = JSON.parse(text);
151
+ return json.version ?? "0.0.0";
152
+ }
153
+ function runPagx(args, cwd) {
154
+ return new Promise((resolvePromise, reject) => {
155
+ const child = spawn(process.execPath, [pagxCliPath(), ...args], { stdio: "inherit", cwd });
156
+ child.on("error", reject);
157
+ child.on("exit", (code) => resolvePromise(code ?? 1));
158
+ });
159
+ }
160
+ function strip(argv, flagName) {
161
+ return {
162
+ argv: argv.filter((arg) => arg !== flagName),
163
+ present: argv.includes(flagName),
164
+ };
165
+ }
166
+ async function namesForSpecs(positionals, cwd) {
167
+ if (positionals.length === 0)
168
+ return undefined;
169
+ const names = [];
170
+ for (const spec of positionals) {
171
+ const scoped = /^(@[^/]+\/[^@]+)/.exec(spec);
172
+ if (spec.startsWith("@") && scoped?.[1]) {
173
+ names.push(scoped[1]);
174
+ continue;
175
+ }
176
+ const local = spec.startsWith("file:") ? spec.slice("file:".length) : spec;
177
+ try {
178
+ names.push((await readManifest(resolve(cwd, local))).name);
179
+ }
180
+ catch {
181
+ return undefined;
182
+ }
183
+ }
184
+ return names;
185
+ }
186
+ async function afterRegistryInstall(argv, positionals, cwd) {
187
+ if (argv.includes("--dry-run"))
188
+ return 0;
189
+ const names = await namesForSpecs(positionals, cwd);
190
+ const issues = await validateInstalled(cwd, {
191
+ global: argv.includes("-g") || argv.includes("--global"),
192
+ ...(names ? { names } : {}),
193
+ });
194
+ if (!issues.length)
195
+ return 0;
196
+ process.stderr.write(`scoper-pagx: installed scoper package failed validation.\n${issueText(issues)}\n`);
197
+ return 1;
198
+ }
199
+ export async function runCli(argv, io = {
200
+ stdout: (text) => process.stdout.write(text),
201
+ stderr: (text) => process.stderr.write(text),
202
+ }) {
203
+ const cwd = cwdOf(io);
204
+ if (argv.length === 0 ||
205
+ (argv.length === 1 && (argv[0] === "--help" || argv[0] === "-h" || argv[0] === "help"))) {
206
+ print(io, HELP, false);
207
+ return 0;
208
+ }
209
+ if (argv[0] === "help" && argv[1] === "pagx")
210
+ return runPagx(["--help"], cwd);
211
+ if (argv.length === 1 && (argv[0] === "--version" || argv[0] === "-v")) {
212
+ print(io, `scoper-pagx ${await ownVersion()} (pagx ${await pagxVersion()})`, false);
213
+ return 0;
214
+ }
215
+ if (argv[0] === "passthrough")
216
+ return runPagx(argv.slice(1), cwd);
217
+ const json = argv.includes("--json");
218
+ const { command, positionals } = splitArgv(argv);
219
+ const formatCommand = new Set([
220
+ "validate",
221
+ "inspect",
222
+ "init",
223
+ "create",
224
+ "innit",
225
+ "profile",
226
+ "example",
227
+ "agent",
228
+ "accept",
229
+ ]);
230
+ if (argv.includes("--help") || argv.includes("-h")) {
231
+ if (!command || formatCommand.has(command)) {
232
+ print(io, HELP, false);
233
+ return 0;
234
+ }
235
+ return runPagx(argv, cwd);
236
+ }
237
+ try {
238
+ switch (command) {
239
+ case "validate": {
240
+ const result = await validatePackage(directory(io, positionals[0]));
241
+ if (json)
242
+ print(io, { ok: result.ok, issues: result.issues }, true);
243
+ else if (result.ok && result.package)
244
+ print(io, `valid ${result.package.manifest.name}`, false);
245
+ else
246
+ print(io, `invalid\n${issueText(result.issues)}`, false);
247
+ return result.ok ? 0 : 1;
248
+ }
249
+ case "inspect": {
250
+ const result = await validatePackage(directory(io, positionals[0]));
251
+ if (!result.ok || !result.package) {
252
+ print(io, `invalid\n${issueText(result.issues)}`, false);
253
+ return 1;
254
+ }
255
+ const pkg = result.package;
256
+ print(io, {
257
+ name: pkg.manifest.name,
258
+ version: pkg.manifest.version,
259
+ id: pkg.document.id,
260
+ title: pkg.document.title,
261
+ profiles: pkg.profiles.map((entry) => entry.profile.id),
262
+ examples: pkg.examples.map((entry) => entry.example.id),
263
+ reads: pkg.document.reads,
264
+ }, true);
265
+ return 0;
266
+ }
267
+ case "init":
268
+ case "create":
269
+ case "innit": {
270
+ const name = flag(argv, "--name");
271
+ const title = flag(argv, "--title");
272
+ const summary = flag(argv, "--summary");
273
+ const intent = flag(argv, "--intent");
274
+ if (!name || !title || !summary || !intent) {
275
+ io.stderr("scoper-pagx: init requires --name, --title, --summary, and --intent.\n");
276
+ return 1;
277
+ }
278
+ const created = await createPackage(directory(io, positionals[0]), {
279
+ name,
280
+ title,
281
+ summary,
282
+ intent,
283
+ ...(flag(argv, "--version") ? { version: flag(argv, "--version") } : {}),
284
+ ...(flag(argv, "--id") ? { id: flag(argv, "--id") } : {}),
285
+ ...(flag(argv, "--description") ? { description: flag(argv, "--description") } : {}),
286
+ ...(argv.includes("--private") ? { private: true } : {}),
287
+ });
288
+ print(io, `created ${created.manifest.name} at ${created.root}`, false);
289
+ return 0;
290
+ }
291
+ case "profile":
292
+ case "example":
293
+ return await runCollection(command, positionals, argv, io);
294
+ case "agent": {
295
+ if (positionals[0] !== "sync") {
296
+ io.stderr("scoper-pagx: agent sync <dir>\n");
297
+ return 1;
298
+ }
299
+ const synced = await syncAgentInstructions(directory(io, positionals[1]));
300
+ print(io, `wrote ${synced.root}/AGENT.md`, false);
301
+ return 0;
302
+ }
303
+ case "accept": {
304
+ const accepted = await acceptScoperType(directory(io, positionals[0]));
305
+ print(io, accepted, json);
306
+ return 0;
307
+ }
308
+ case "publish":
309
+ case "pub":
310
+ case "pack":
311
+ return await runGated(argv, positionals, cwd);
312
+ case "update":
313
+ case "up":
314
+ case "ci":
315
+ return await runInstallLike(argv, positionals, cwd);
316
+ default:
317
+ if (command && INSTALL.has(command))
318
+ return await runInstallLike(argv, positionals, cwd);
319
+ return runPagx(argv, cwd);
320
+ }
321
+ }
322
+ catch (error) {
323
+ return fail(io, error);
324
+ }
325
+ }
326
+ async function runCollection(kind, positionals, argv, io) {
327
+ const action = positionals[0];
328
+ const dir = directory(io, positionals[1]);
329
+ if (action === "add") {
330
+ const file = flag(argv, "--file");
331
+ if (!file) {
332
+ io.stderr(`scoper-pagx: ${kind} add <dir> --file <json>\n`);
333
+ return 1;
334
+ }
335
+ let value;
336
+ try {
337
+ value = JSON.parse(await readFile(resolve(cwdOf(io), file), "utf8"));
338
+ }
339
+ catch {
340
+ io.stderr(`scoper-pagx: ${file} is not valid JSON.\n`);
341
+ return 1;
342
+ }
343
+ const updated = kind === "profile" ? await upsertProfile(dir, value) : await upsertExample(dir, value);
344
+ print(io, `updated ${updated.manifest.name}. Run scoper-pagx agent sync to refresh AGENT.md.`, false);
345
+ return 0;
346
+ }
347
+ if (action === "remove") {
348
+ const id = positionals[2];
349
+ if (!id) {
350
+ io.stderr(`scoper-pagx: ${kind} remove <dir> <id>\n`);
351
+ return 1;
352
+ }
353
+ const updated = kind === "profile" ? await removeProfile(dir, id) : await removeExample(dir, id);
354
+ print(io, `updated ${updated.manifest.name}. Run scoper-pagx agent sync to refresh AGENT.md.`, false);
355
+ return 0;
356
+ }
357
+ io.stderr(`scoper-pagx: ${kind} add|remove\n`);
358
+ return 1;
359
+ }
360
+ async function runGated(argv, positionals, cwd) {
361
+ const skipped = strip(argv, "--skip-validate");
362
+ if (!skipped.present)
363
+ await gatePublish(resolve(cwd, positionals[0] ?? "."));
364
+ const args = skipped.argv[0] === "pub" ? ["publish", ...skipped.argv.slice(1)] : skipped.argv;
365
+ return runPagx(args, cwd);
366
+ }
367
+ async function runInstallLike(argv, positionals, cwd) {
368
+ const skipped = strip(argv, "--skip-validate");
369
+ const code = await runPagx(skipped.argv, cwd);
370
+ if (code !== 0 || skipped.present)
371
+ return code;
372
+ return afterRegistryInstall(skipped.argv, positionals, cwd);
373
+ }
374
+ function isDirectRun() {
375
+ const entry = process.argv[1];
376
+ if (!entry)
377
+ return false;
378
+ return import.meta.url === pathToFileURL(entry).href;
379
+ }
380
+ if (isDirectRun()) {
381
+ runCli(process.argv.slice(2)).then((code) => {
382
+ process.exitCode = code;
383
+ }, (error) => {
384
+ process.stderr.write(`scoper-pagx: ${error instanceof Error ? error.message : "Unexpected error"}\n`);
385
+ process.exitCode = 1;
386
+ });
387
+ }
388
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Pagx, type ConfigOptions, type DryRunInstall, type InstallResult, type ProjectOptions } from "@x12i/pagx";
2
+ import { createPackage } from "./format.js";
3
+ import { type ValidationIssue } from "./issues.js";
4
+ export type ScoperInstallResult = InstallResult | DryRunInstall;
5
+ /**
6
+ * The pagx client this repo uses.
7
+ * Publish validates a scoper package before upload. Install, update, and ci validate
8
+ * installed packages whose `agent.type` is `scoper`. Every other method is pagx itself.
9
+ */
10
+ export declare class ScoperPagx {
11
+ readonly pagx: Pagx;
12
+ constructor(pagx: Pagx);
13
+ static open(options?: ConfigOptions): Promise<ScoperPagx>;
14
+ publish(folder?: string, tag?: string, dryRun?: boolean, access?: string, gate?: {
15
+ skipValidate?: boolean;
16
+ }): Promise<unknown>;
17
+ install(specs?: string[], options?: ProjectOptions): Promise<ScoperInstallResult[]>;
18
+ update(specs?: string[], options?: ProjectOptions): Promise<ScoperInstallResult[]>;
19
+ ci(): Promise<InstallResult[]>;
20
+ uninstall(specs: string[], options?: ProjectOptions): ReturnType<Pagx["uninstall"]>;
21
+ list(options?: {
22
+ global?: boolean;
23
+ }): ReturnType<Pagx["list"]>;
24
+ outdated(specs?: string[], options?: {
25
+ global?: boolean;
26
+ }): ReturnType<Pagx["outdated"]>;
27
+ search(text?: string, scope?: string, type?: string): ReturnType<Pagx["search"]>;
28
+ check(): ReturnType<Pagx["check"]>;
29
+ view(spec: string, field?: string): ReturnType<Pagx["view"]>;
30
+ owners(spec: string): ReturnType<Pagx["owners"]>;
31
+ /** Create a scoper package. This is the init this client performs. */
32
+ create(folder: string, input: Parameters<typeof createPackage>[1]): ReturnType<typeof createPackage>;
33
+ pack(folder?: string, gate?: {
34
+ skipValidate?: boolean;
35
+ }): ReturnType<Pagx["pack"]>;
36
+ version(newversion?: string): ReturnType<Pagx["version"]>;
37
+ whoami(): ReturnType<Pagx["whoami"]>;
38
+ ping(): ReturnType<Pagx["ping"]>;
39
+ }
40
+ /** Validate when the folder is a scoper package. Other pagx packages publish unchanged. */
41
+ export declare function gatePublish(dir: string): Promise<void>;
42
+ export declare function assertInstalledScoperPackages(results: readonly ScoperInstallResult[]): Promise<void>;
43
+ export declare function validateInstalled(cwd: string, options?: {
44
+ global?: boolean;
45
+ names?: readonly string[];
46
+ }): Promise<ValidationIssue[]>;
47
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}