@jeger-ai/opengantry 3.6.0 → 3.7.1
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 +21 -0
- package/dist/cli/cage-bin.d.ts +3 -0
- package/dist/cli/cage-bin.d.ts.map +1 -0
- package/dist/cli/cage-bin.js +11 -0
- package/dist/cli/cage-bin.js.map +1 -0
- package/dist/cli/commands/cage.d.ts +15 -0
- package/dist/cli/commands/cage.d.ts.map +1 -0
- package/dist/cli/commands/cage.js +71 -0
- package/dist/cli/commands/cage.js.map +1 -0
- package/dist/cli/lib/cage/cage-process.d.ts +18 -0
- package/dist/cli/lib/cage/cage-process.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-process.js +39 -0
- package/dist/cli/lib/cage/cage-process.js.map +1 -0
- package/dist/cli/lib/cage/cage-push-guard.d.ts +23 -0
- package/dist/cli/lib/cage/cage-push-guard.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-push-guard.js +116 -0
- package/dist/cli/lib/cage/cage-push-guard.js.map +1 -0
- package/dist/cli/lib/cage/cage-report.d.ts +71 -0
- package/dist/cli/lib/cage/cage-report.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-report.js +118 -0
- package/dist/cli/lib/cage/cage-report.js.map +1 -0
- package/dist/cli/lib/cage/cage-revert.d.ts +18 -0
- package/dist/cli/lib/cage/cage-revert.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-revert.js +56 -0
- package/dist/cli/lib/cage/cage-revert.js.map +1 -0
- package/dist/cli/lib/cage/cage-rules.d.ts +24 -0
- package/dist/cli/lib/cage/cage-rules.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-rules.js +94 -0
- package/dist/cli/lib/cage/cage-rules.js.map +1 -0
- package/dist/cli/lib/cage/cage-run.d.ts +34 -0
- package/dist/cli/lib/cage/cage-run.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-run.js +107 -0
- package/dist/cli/lib/cage/cage-run.js.map +1 -0
- package/dist/cli/lib/cage/cage-snapshot.d.ts +36 -0
- package/dist/cli/lib/cage/cage-snapshot.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-snapshot.js +128 -0
- package/dist/cli/lib/cage/cage-snapshot.js.map +1 -0
- package/dist/cli/lib/cage/cage-watch.d.ts +36 -0
- package/dist/cli/lib/cage/cage-watch.d.ts.map +1 -0
- package/dist/cli/lib/cage/cage-watch.js +92 -0
- package/dist/cli/lib/cage/cage-watch.js.map +1 -0
- package/dist/cli/lib/version.gen.d.ts +1 -1
- package/dist/cli/lib/version.gen.js +1 -1
- package/dist/cli/program-cage.d.ts +5 -0
- package/dist/cli/program-cage.d.ts.map +1 -0
- package/dist/cli/program-cage.js +29 -0
- package/dist/cli/program-cage.js.map +1 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +2 -0
- package/dist/cli/program.js.map +1 -1
- package/package.json +3 -2
- package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
- package/templates/integrations/compatibility.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { resolveCageChanges } from "./cage-revert.js";
|
|
6
|
+
import { diffCageSnapshots, takeCageSnapshot } from "./cage-snapshot.js";
|
|
7
|
+
/** Default live-check interval while the caged command runs. */
|
|
8
|
+
export const CAGE_DEFAULT_WATCH_INTERVAL_MS = 1000;
|
|
9
|
+
/** Live restores of one path before cage stops fighting the command and restores it only at exit. */
|
|
10
|
+
export const CAGE_CONTEST_LIMIT = 3;
|
|
11
|
+
const BELL = "\x07";
|
|
12
|
+
export function openCageSessionLog(dir = os.tmpdir()) {
|
|
13
|
+
const file = path.join(dir, `gantry-cage-${String(process.pid)}-${crypto.randomBytes(4).toString("hex")}.log`);
|
|
14
|
+
fs.writeFileSync(file, "", { mode: 0o600 });
|
|
15
|
+
return {
|
|
16
|
+
path: file,
|
|
17
|
+
append(event) {
|
|
18
|
+
fs.appendFileSync(file, `${JSON.stringify({ at: new Date().toISOString(), ...event })}\n`);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function noteEvent(log, bell, event) {
|
|
23
|
+
log.append(event);
|
|
24
|
+
bell();
|
|
25
|
+
}
|
|
26
|
+
function handleLiveChange(change, state, log, bell) {
|
|
27
|
+
const base = { path: change.rel, kind: change.kind, rule: change.rule };
|
|
28
|
+
if (change.outcome === "reverted" || change.outcome === "removed") {
|
|
29
|
+
state.liveRestores += 1;
|
|
30
|
+
state.restored.set(change.abs, change);
|
|
31
|
+
noteEvent(log, bell, { event: "restored", ...base, outcome: change.outcome });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!state.unrestorable.has(change.abs)) {
|
|
35
|
+
state.unrestorable.add(change.abs);
|
|
36
|
+
noteEvent(log, bell, { event: change.outcome, ...base, error_code: change.errorCode });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function tick(plan, baseline, opts, state, log, bell) {
|
|
40
|
+
const current = takeCageSnapshot(plan, { ...opts, keepBytes: false });
|
|
41
|
+
const pending = diffCageSnapshots(baseline, current).filter((c) => {
|
|
42
|
+
if (c.mode !== "revert" || state.contested.has(c.abs))
|
|
43
|
+
return false;
|
|
44
|
+
const count = state.restoresByPath.get(c.abs) ?? 0;
|
|
45
|
+
if (count < CAGE_CONTEST_LIMIT)
|
|
46
|
+
return true;
|
|
47
|
+
state.contested.add(c.abs);
|
|
48
|
+
noteEvent(log, bell, { event: "contested", path: c.rel, rule: c.rule, live_restores: count });
|
|
49
|
+
return false;
|
|
50
|
+
});
|
|
51
|
+
for (const change of resolveCageChanges(pending, { reportOnly: false })) {
|
|
52
|
+
if (change.outcome === "reverted" || change.outcome === "removed") {
|
|
53
|
+
state.restoresByPath.set(change.abs, (state.restoresByPath.get(change.abs) ?? 0) + 1);
|
|
54
|
+
}
|
|
55
|
+
handleLiveChange(change, state, log, bell);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Re-snapshot the protected set on an interval while the command runs and restore revert-rule changes
|
|
60
|
+
* from the baseline bytes. Lockfiles stay report-only and are left for the exit report. A path restored
|
|
61
|
+
* {@link CAGE_CONTEST_LIMIT} times is marked contested and restored only at exit.
|
|
62
|
+
*/
|
|
63
|
+
export function startCageWatch(input) {
|
|
64
|
+
const bell = input.bell ?? (() => process.stderr.write(BELL));
|
|
65
|
+
const state = {
|
|
66
|
+
restoresByPath: new Map(),
|
|
67
|
+
contested: new Set(),
|
|
68
|
+
unrestorable: new Set(),
|
|
69
|
+
restored: new Map(),
|
|
70
|
+
liveRestores: 0,
|
|
71
|
+
};
|
|
72
|
+
const timer = setInterval(() => {
|
|
73
|
+
try {
|
|
74
|
+
tick(input.plan, input.baseline, input.snapshotOptions, state, input.log, bell);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
input.log.append({ event: "watch_error", message: err instanceof Error ? err.message : String(err) });
|
|
78
|
+
}
|
|
79
|
+
}, input.intervalMs);
|
|
80
|
+
return {
|
|
81
|
+
stop() {
|
|
82
|
+
clearInterval(timer);
|
|
83
|
+
const rel = (abs) => state.restored.get(abs)?.rel ?? path.relative(input.plan.root, abs).split(path.sep).join("/");
|
|
84
|
+
return {
|
|
85
|
+
liveRestores: state.liveRestores,
|
|
86
|
+
contested: [...state.contested].map(rel).sort(),
|
|
87
|
+
restored: state.restored,
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=cage-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cage-watch.js","sourceRoot":"","sources":["../../../../src/cli/lib/cage/cage-watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
/** Shared by `gantry cage` and the standalone `opengantry-cage` bin so the two never drift. */
|
|
3
|
+
export declare function configureCageCommand(cmd: Command): Command;
|
|
4
|
+
export declare function registerCageCommands(program: Command): void;
|
|
5
|
+
//# sourceMappingURL=program-cage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-cage.d.ts","sourceRoot":"","sources":["../../src/cli/program-cage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAqB1D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU3D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { runCageCommand, runCageGuardPrePush } from "./commands/cage.js";
|
|
2
|
+
/** Shared by `gantry cage` and the standalone `opengantry-cage` bin so the two never drift. */
|
|
3
|
+
export function configureCageCommand(cmd) {
|
|
4
|
+
return cmd
|
|
5
|
+
.description("Zero-config: run a command and restore changes to CI configs, .env secrets, git hooks/config and manifest forbidden zones while it runs and at exit (lockfiles reported); refuses git pushes of protected paths from inside the session")
|
|
6
|
+
.option("--json", "Emit the digest-only cage report as JSON on stdout")
|
|
7
|
+
.option("--report-only", "Detect and report protected changes without reverting them")
|
|
8
|
+
.option("--no-watch", "Check only once, after the command exits (no live restore)")
|
|
9
|
+
.option("--watch-interval-ms <n>", "Live check interval while the command runs (default 1000)")
|
|
10
|
+
.option("--max-file-bytes <n>", "Per-file in-memory snapshot cap; larger files are detect-only")
|
|
11
|
+
.allowUnknownOption(true)
|
|
12
|
+
.passThroughOptions()
|
|
13
|
+
.argument("<command...>", "Command to run after --")
|
|
14
|
+
.action(async (command, opts) => {
|
|
15
|
+
await runCageCommand({ command, ...opts });
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function registerCageCommands(program) {
|
|
19
|
+
configureCageCommand(program.command("cage"));
|
|
20
|
+
program
|
|
21
|
+
.command("cage-guard", { hidden: true })
|
|
22
|
+
.description("Internal: checks run by the cage session git hooks")
|
|
23
|
+
.command("pre-push")
|
|
24
|
+
.requiredOption("--root <dir>", "Cage root (git work tree)")
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
await runCageGuardPrePush(opts);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=program-cage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program-cage.js","sourceRoot":"","sources":["../../src/cli/program-cage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,+FAA+F;AAC/F,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,GAAG;SACP,WAAW,CACV,yOAAyO,CAC1O;SACA,MAAM,CAAC,QAAQ,EAAE,oDAAoD,CAAC;SACtE,MAAM,CAAC,eAAe,EAAE,4DAA4D,CAAC;SACrF,MAAM,CAAC,YAAY,EAAE,4DAA4D,CAAC;SAClF,MAAM,CAAC,yBAAyB,EAAE,2DAA2D,CAAC;SAC9F,MAAM,CAAC,sBAAsB,EAAE,+DAA+D,CAAC;SAC/F,kBAAkB,CAAC,IAAI,CAAC;SACxB,kBAAkB,EAAE;SACpB,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;SACnD,MAAM,CACL,KAAK,EACH,OAAiB,EACjB,IAAgH,EAChH,EAAE;QACF,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,OAAO;SACJ,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACvC,WAAW,CAAC,oDAAoD,CAAC;SACjE,OAAO,CAAC,UAAU,CAAC;SACnB,cAAc,CAAC,cAAc,EAAE,2BAA2B,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;QACvC,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,wBAAgB,YAAY,IAAI,OAAO,CA6BtC"}
|
package/dist/cli/program.js
CHANGED
|
@@ -7,6 +7,7 @@ import { registerMissionCommands } from "./program-mission.js";
|
|
|
7
7
|
import { registerWorkflowCommands } from "./program-workflow.js";
|
|
8
8
|
import { registerOrgControlPlaneCommands } from "./program-org.js";
|
|
9
9
|
import { registerMcpCommands } from "./program-mcp.js";
|
|
10
|
+
import { registerCageCommands } from "./program-cage.js";
|
|
10
11
|
import { registerBuiltinDomains } from "./lib/domains/index.js";
|
|
11
12
|
export { CLI_VERSION } from "./lib/constants.js";
|
|
12
13
|
export function buildProgram() {
|
|
@@ -31,6 +32,7 @@ export function buildProgram() {
|
|
|
31
32
|
registerWorkflowCommands(program);
|
|
32
33
|
registerOrgControlPlaneCommands(program);
|
|
33
34
|
registerMcpCommands(program);
|
|
35
|
+
registerCageCommands(program);
|
|
34
36
|
return program;
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=program.js.map
|
package/dist/cli/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,YAAY;IAC1B,sBAAsB,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9E,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/E,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;YAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CACZ,mBAAmB,EACnB,kFAAkF,CACnF,CAAC;IACF,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAEvC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,mBAAmB,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,YAAY;IAC1B,sBAAsB,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9E,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/E,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,2BAA2B,EAAE,CAAC;YAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CACZ,mBAAmB,EACnB,kFAAkF,CACnF,CAAC;IACF,6BAA6B,CAAC,OAAO,CAAC,CAAC;IAEvC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jeger-ai/opengantry",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.1",
|
|
4
4
|
"description": "Open Source Gantry — vendor-neutral GXT substrate and Gantry CLI for local git-native agent governance",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"gantry": "dist/cli/index.js",
|
|
8
|
-
"gapman": "dist/cli/index.js"
|
|
8
|
+
"gapman": "dist/cli/index.js",
|
|
9
|
+
"opengantry-cage": "dist/cli/cage-bin.js"
|
|
9
10
|
},
|
|
10
11
|
"exports": {
|
|
11
12
|
".": "./dist/cli/index.js",
|