@phosra/cli 0.1.1 → 0.2.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/dist/bin.js +13 -1
- package/dist/bin.js.map +1 -1
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +96 -0
- package/dist/commands/check.js.map +1 -0
- package/package.json +2 -1
package/dist/bin.js
CHANGED
|
@@ -23,9 +23,10 @@ import { runCaps } from "./commands/caps.js";
|
|
|
23
23
|
import { runLinkWrite } from "./commands/link-write.js";
|
|
24
24
|
import { runGkCheck } from "./commands/gk-check.js";
|
|
25
25
|
import { runRegister } from "./commands/register.js";
|
|
26
|
+
import { runCheck } from "./commands/check.js";
|
|
26
27
|
const program = new Command("phosra")
|
|
27
28
|
.description("Phosra CLI — OCSS partner setup verification and sandbox round-trips")
|
|
28
|
-
.version("0.
|
|
29
|
+
.version("0.2.0");
|
|
29
30
|
// ── phosra init ─────────────────────────────────────────────────────────────
|
|
30
31
|
program
|
|
31
32
|
.command("init")
|
|
@@ -104,6 +105,17 @@ program
|
|
|
104
105
|
if (failed.length > 0)
|
|
105
106
|
process.exit(1);
|
|
106
107
|
});
|
|
108
|
+
// ── phosra check ─────────────────────────────────────────────────────────────
|
|
109
|
+
program
|
|
110
|
+
.command("check")
|
|
111
|
+
.description("Offline safety-invariant conformance suite — proves @phosra/gatekeeper is " +
|
|
112
|
+
"fail-closed and stale-closed. No census, no network, no credentials.")
|
|
113
|
+
.option("--json", "Machine-readable JSON output (for CI/agents)", false)
|
|
114
|
+
.action(async (opts) => {
|
|
115
|
+
const results = await runCheck(opts.json);
|
|
116
|
+
if (results.some((r) => r.status === "fail"))
|
|
117
|
+
process.exit(1);
|
|
118
|
+
});
|
|
107
119
|
// ── phosra caps ──────────────────────────────────────────────────────────────
|
|
108
120
|
program
|
|
109
121
|
.command("caps")
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,WAAW,CAAC;AAkEtF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAiBpE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* phosra check — offline safety-invariant conformance suite.
|
|
3
|
+
*
|
|
4
|
+
* Runs four in-process probes against @phosra/gatekeeper using the published
|
|
5
|
+
* @phosra/gatekeeper/testing signed stack. No census, no network, no credentials.
|
|
6
|
+
* Proves the SDK is fail-closed and stale-closed before a partner ships:
|
|
7
|
+
* enforced_block a block rule → decision block
|
|
8
|
+
* fetch_interrupt_blocked a profile-fetch failure → block (no stale allow)
|
|
9
|
+
* stale_allow_blocked a cache older than the 60s floor → block
|
|
10
|
+
* reenable_open after recovery + fresh refresh → allow resumes
|
|
11
|
+
*
|
|
12
|
+
* §12.3: the CLI verifies; it never decides. This suite asserts the SDK's own
|
|
13
|
+
* fail-closed contract, not census authority.
|
|
14
|
+
*/
|
|
15
|
+
import { createGatekeeper } from "@phosra/gatekeeper";
|
|
16
|
+
import { makeSignedStack } from "@phosra/gatekeeper/testing";
|
|
17
|
+
import { printCheck, printJson, heading, summary } from "../out.js";
|
|
18
|
+
const ALLOW_RULE = {
|
|
19
|
+
category: "demo_allow",
|
|
20
|
+
decision: "allow",
|
|
21
|
+
fail_mode: "closed",
|
|
22
|
+
rule_slug: "demo_allow",
|
|
23
|
+
rule_ref: "rr-da",
|
|
24
|
+
};
|
|
25
|
+
async function probeEnforcedBlock() {
|
|
26
|
+
const stack = makeSignedStack();
|
|
27
|
+
stack.setProfile([
|
|
28
|
+
{ category: "infinite_scroll_block", decision: "block", fail_mode: "closed", rule_slug: "infinite_scroll_block", rule_ref: "rr-isb" },
|
|
29
|
+
]);
|
|
30
|
+
const gk = createGatekeeper(stack.config());
|
|
31
|
+
await gk.refreshTrustList();
|
|
32
|
+
await gk.refreshProfile();
|
|
33
|
+
const d = gk.isAllowed({ category: "infinite_scroll_block" }).decision;
|
|
34
|
+
return d === "block"
|
|
35
|
+
? { name: "enforced_block", status: "pass", message: "block rule → block" }
|
|
36
|
+
: { name: "enforced_block", status: "fail", message: `expected block, got ${d}` };
|
|
37
|
+
}
|
|
38
|
+
async function probeFetchInterruptBlocked() {
|
|
39
|
+
const stack = makeSignedStack();
|
|
40
|
+
const gk = createGatekeeper(stack.config());
|
|
41
|
+
await gk.refreshTrustList();
|
|
42
|
+
stack.simulateFetchError();
|
|
43
|
+
await gk.refreshProfile().catch(() => { });
|
|
44
|
+
const d = gk.isAllowed({ category: ALLOW_RULE.category }).decision;
|
|
45
|
+
return d === "block"
|
|
46
|
+
? { name: "fetch_interrupt_blocked", status: "pass", message: "fetch failure → block (no stale allow)" }
|
|
47
|
+
: { name: "fetch_interrupt_blocked", status: "fail", message: `expected block, got ${d}` };
|
|
48
|
+
}
|
|
49
|
+
async function probeStaleAllowBlocked() {
|
|
50
|
+
let t = Date.parse("2027-01-01T00:00:00Z");
|
|
51
|
+
const stack = makeSignedStack();
|
|
52
|
+
stack.setProfile([ALLOW_RULE]);
|
|
53
|
+
const gk = createGatekeeper(stack.config({ now: () => t, profileMaxAgeMs: 60_000 }));
|
|
54
|
+
await gk.refreshTrustList();
|
|
55
|
+
await gk.refreshProfile();
|
|
56
|
+
const fresh = gk.isAllowed({ category: ALLOW_RULE.category }).decision;
|
|
57
|
+
t += 61_000;
|
|
58
|
+
const stale = gk.isAllowed({ category: ALLOW_RULE.category }).decision;
|
|
59
|
+
return fresh === "allow" && stale === "block"
|
|
60
|
+
? { name: "stale_allow_blocked", status: "pass", message: "cache > 60s → block" }
|
|
61
|
+
: { name: "stale_allow_blocked", status: "fail", message: `fresh=${fresh} stale=${stale}` };
|
|
62
|
+
}
|
|
63
|
+
async function probeReenableOpen() {
|
|
64
|
+
const stack = makeSignedStack();
|
|
65
|
+
const gk = createGatekeeper(stack.config());
|
|
66
|
+
await gk.refreshTrustList();
|
|
67
|
+
stack.simulateFetchError();
|
|
68
|
+
await gk.refreshProfile().catch(() => { });
|
|
69
|
+
const blocked = gk.isAllowed({ category: ALLOW_RULE.category }).decision;
|
|
70
|
+
stack.setProfile([ALLOW_RULE]); // clears the fault + serves a fresh allow
|
|
71
|
+
await gk.refreshProfile();
|
|
72
|
+
const allowed = gk.isAllowed({ category: ALLOW_RULE.category }).decision;
|
|
73
|
+
return blocked === "block" && allowed === "allow"
|
|
74
|
+
? { name: "reenable_open", status: "pass", message: "recovery → allow resumes" }
|
|
75
|
+
: { name: "reenable_open", status: "fail", message: `blocked=${blocked} allowed=${allowed}` };
|
|
76
|
+
}
|
|
77
|
+
export async function runCheck(json) {
|
|
78
|
+
heading("Phosra conformance — offline safety invariants", json);
|
|
79
|
+
const results = [];
|
|
80
|
+
for (const probe of [probeEnforcedBlock, probeFetchInterruptBlocked, probeStaleAllowBlocked, probeReenableOpen]) {
|
|
81
|
+
const r = await probe();
|
|
82
|
+
results.push(r);
|
|
83
|
+
printCheck(r, json);
|
|
84
|
+
}
|
|
85
|
+
if (json) {
|
|
86
|
+
printJson({
|
|
87
|
+
ok: results.every((r) => r.status !== "fail"),
|
|
88
|
+
checks: results.map((r) => ({ name: r.name, status: r.status, message: r.message })),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
summary(results, json);
|
|
93
|
+
}
|
|
94
|
+
return results;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@phosra/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Phosra OCSS partner CLI \u2014 scaffold configs, verify OCSS setup, run round-trip checks against the shared sandbox.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@openchildsafety/ocss": "^0.1.0",
|
|
30
|
+
"@phosra/gatekeeper": "^0.2.0",
|
|
30
31
|
"commander": "^12.0.0"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|