@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 +83 -2
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +388 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +47 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +141 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +26 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +40 -0
- package/dist/constants.js.map +1 -0
- package/dist/format.d.ts +47 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +511 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/issues.d.ts +10 -0
- package/dist/issues.d.ts.map +1 -0
- package/dist/issues.js +12 -0
- package/dist/issues.js.map +1 -0
- package/dist/render.d.ts +27 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +119 -0
- package/dist/render.js.map +1 -0
- package/dist/schema.d.ts +110 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +138 -0
- package/dist/schema.js.map +1 -0
- package/dist/toolbox.d.ts +26 -0
- package/dist/toolbox.d.ts.map +1 -0
- package/dist/toolbox.js +215 -0
- package/dist/toolbox.js.map +1 -0
- package/docs/AGENT.md +137 -0
- package/docs/format.md +183 -0
- package/package.json +42 -3
package/README.md
CHANGED
|
@@ -1,3 +1,84 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @x12i/memorix-scoper-pagx
|
|
2
2
|
|
|
3
|
-
|
|
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
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -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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"}
|