@prooflane/inspector-beta 0.1.0-beta.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 ADDED
@@ -0,0 +1,146 @@
1
+ # @prooflane/inspector-beta
2
+
3
+ The **Prooflane Inspector Beta** — a local MCP assurance console that runs on your
4
+ machine and connects to Prooflane's hosted intelligence.
5
+
6
+ ```bash
7
+ npx @prooflane/inspector-beta@beta
8
+ ```
9
+
10
+ This starts the console at `http://localhost:7357` and opens it in your browser.
11
+ Sign in with your Prooflane account, connect an MCP server, and go.
12
+
13
+ ## What it does
14
+
15
+ - **MCP Inspector, Contracts, Prompts, Performance, HTTP** — run locally against
16
+ your MCP server with your own keys.
17
+ - **Security & RAG** — run **signed hosted-Intelligence tasks**: the Control Plane
18
+ issues a short-lived task, your local runner executes it with your own MCP/LLM
19
+ credentials, and only compact evidence is returned. *(Scale plan and above.)*
20
+ - **Governed Gates / CI** — capture and tag tests locally, compose their logical
21
+ references into a project-scoped Cloud Suite, review and approve its immutable
22
+ signed version, then create a Gate that pins that exact Suite and Policy. Run
23
+ the same approved signed Gate from the UI, another machine, or GitHub Actions
24
+ without copying a local Gate or Suite file:
25
+
26
+ ```bash
27
+ npx --yes @prooflane/cli@latest gate "$MCP_CONFIG" --gate production --github
28
+ ```
29
+
30
+ The signed Cloud manifest carries logical references only. The matching local
31
+ `.prooflane/tags.json`, MCP configuration, credentials, and raw evidence stay
32
+ on the Runner. Configure the project's GitHub OIDC trust in Settings, set
33
+ `PROOFLANE_PROJECT`, and grant the workflow `id-token: write` plus
34
+ `checks: write`; no long-lived Prooflane repository secret is required. The
35
+ Runner resolves and verifies the exact signed Gate, Suite, and Policy before
36
+ target access, writes a sanitized Step Summary and native Check linked to the
37
+ governed Run, and synchronizes only compact Run metadata. The Gate card's **Run connected
38
+ target** action records a `LOCAL_UI` Run. **Run on private Runner** dispatches
39
+ the same exact signed Gate graph to a registered customer-local worker; that
40
+ worker invokes the same generic executor/evaluator and returns only structured
41
+ progress plus compact evidence under one governed Run ID.
42
+
43
+ Execution errors never become passing facts. Performance with no completed
44
+ requests is not evaluated, and performance with zero successful requests is
45
+ always blocking before customer thresholds are considered.
46
+
47
+ A signature alone does not earn `CI READY`. Gate approval verifies that every
48
+ required control has a public Runner adapter and a pinned target surface; a
49
+ local readiness Run then proves the exact tagged tests/project assets and
50
+ live MCP capability fingerprints before any control call. Non-exact target
51
+ drift is classified and produces a reviewable DRAFT vN+1. The approved vN is
52
+ never mutated or silently weakened.
53
+
54
+ ```bash
55
+ prooflane runner register "$MCP_CONFIG" --project "$PROOFLANE_PROJECT" --name production-private
56
+ prooflane runner start "$MCP_CONFIG"
57
+ ```
58
+
59
+ The owner-only Runner credential stays local at
60
+ `~/.prooflane/remote-runner.json` by default. Signed jobs are bound to the
61
+ registered Runner and target fingerprint and expire if not claimed. MCP
62
+ configuration, credentials, prompts, documents, and tool inputs/outputs never
63
+ enter the job/event/Run envelopes. Online `LEASED_INTELLIGENCE` controls use
64
+ the same path on every surface: the private Control Plane selects one bounded
65
+ step, signs a five-minute one-use lease bound to the exact Run/Runner/artifact
66
+ graph and target/capability fingerprints, and the shared Core executor
67
+ verifies it before the local MCP call. Only compact outcome, timing,
68
+ counts/booleans, and a one-way output hash return; raw output stays local.
69
+
70
+ Online resolution also populates an owner-only immutable artifact cache.
71
+ `prooflane suites cache` inspects only sanitized Gate/Suite/Policy identities.
72
+ An exact reference can run without Control Plane access:
73
+
74
+ ```bash
75
+ prooflane gate "$MCP_CONFIG" --gate production@12 --offline --github
76
+ ```
77
+
78
+ Offline mode never accepts a symbolic alias. In GitHub it requires a
79
+ prior-online, token-bound CI continuity record and writes compact pending Run
80
+ sync only. A later authenticated online invocation replays it idempotently;
81
+ no raw evidence, credential, token, or target configuration enters the cache
82
+ or queue. Leased controls explicitly fail before target access offline because
83
+ fresh Control Plane issuance and authoritative nonce consumption are required.
84
+
85
+ Existing `.prooflane/suites/*.json` files are preserved through an explicit
86
+ migration review:
87
+
88
+ ```bash
89
+ prooflane suites status
90
+ prooflane suites diff
91
+ prooflane suites sync # preview only
92
+ prooflane suites sync --yes # Cloud DRAFTs only
93
+ ```
94
+
95
+ The Inspector's Gates screen shows the same **Review & Sync** plan. Neither
96
+ surface edits/deletes local files or silently approves anything. Full local
97
+ test bodies stay on the device; only a fingerprint, aggregate pillar counts,
98
+ and logical project-asset controls enter the Cloud DRAFT. A different existing
99
+ Cloud DRAFT is a conflict, not an overwrite. After separate Cloud review,
100
+ Policy pinning, and approval, use the unambiguous compatibility source:
101
+
102
+ ```bash
103
+ prooflane gate "$MCP_CONFIG" --suite-file .prooflane/suites/rag-nightly.json
104
+ ```
105
+
106
+ The approved signed Cloud manifest must match the exact file fingerprint
107
+ before target access. Unsupported private/legacy controls fail closed.
108
+
109
+ - **Governed learning** — after a completed Gate-bound Run records compact
110
+ REVIEW or BLOCK pillar findings, the Gates screen can approve an attributed
111
+ immutable disposition and request the next learning generation. The private
112
+ Control Plane may propose DRAFT regression, evolution, or suppression-
113
+ validation tests, each linked to the exact historical Run, finding,
114
+ disposition, Gate, Suite, Policy, target fingerprint, and evidence
115
+ fingerprint. Creator, reviewer, and approver are distinct identities.
116
+ Ambiguous lineage is skipped. Raw prompts, responses, documents, MCP/tool
117
+ traffic, credentials, provider routing, and local paths remain on the device;
118
+ learning is optional and cannot block Gate execution or Run synchronization.
119
+
120
+ The local Runner is designed to keep MCP connection configuration and provider
121
+ credentials on this device. Data handling for optional hosted workflows is
122
+ shown before those workflows are enabled.
123
+
124
+ ## Execution boundary
125
+
126
+ The package includes the public generic local execution primitives and signed
127
+ Cloud Gate/Suite/Policy resolvers. It does not ship Prooflane's proprietary Security/RAG
128
+ catalogues or silently fall back to mutable repository-local Suite governance.
129
+ Provider credentials and MCP authentication remain process-local. Raw prompts,
130
+ responses, tool inputs, and credentials are not part of a Cloud Gate/Suite or
131
+ compact governed Run.
132
+
133
+ Runs and Deployment Assurance consume the same merged local/governed evidence
134
+ projection. Signed executions retain the exact Run ID and Gate/Suite/Policy
135
+ version IDs, versions, hashes, runner type, target fingerprint, and compact
136
+ evidence fingerprint. Pillar-specific detailed reports remain local; they do
137
+ not create a second cloud Gate history.
138
+
139
+ ## Options
140
+
141
+ | Flag / env | Default |
142
+ |---|---|
143
+ | `--port` / `KAWACH_UI_PORT` | `7357` |
144
+ | `--control-plane` / `KAWACH_CONTROL_PLANE_URL` | production Control Plane (`https://api.prooflane.ai`) |
145
+
146
+ Requires **Node 24+**.
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env node
2
+ // Prooflane Inspector launcher.
3
+ //
4
+ // Starts the bundled thin local server, pointed at the Prooflane
5
+ // Control Plane, and opens the console in your browser. The local runner holds
6
+ // your MCP credentials. Security/RAG Intelligence is leased from the Prooflane
7
+ // Control Plane and executed through bounded generic local primitives.
8
+ //
9
+ // npx @prooflane/inspector-beta@beta
10
+ // npx @prooflane/inspector-beta@beta --port 7400 --control-plane https://api.prooflane.ai
11
+ import { dirname, join } from "node:path";
12
+ import { fileURLToPath } from "node:url";
13
+
14
+ const here = dirname(fileURLToPath(import.meta.url));
15
+ const dist = join(here, "..", "dist");
16
+
17
+ const args = process.argv.slice(2);
18
+ const flag = (name) => {
19
+ const i = args.indexOf(name);
20
+ return i >= 0 ? args[i + 1] : undefined;
21
+ };
22
+
23
+ // The same npm package serves both experiences: no command opens the Inspector;
24
+ // CLI commands execute headlessly and never start a browser or local web server.
25
+ const cliCommands = new Set(["gate", "runs", "auth", "perf", "debug", "doctor", "version", "sammy"]);
26
+ const cliMode = cliCommands.has(args[0]);
27
+ if (cliMode) {
28
+ await import(join(dist, "cli.mjs"));
29
+ } else {
30
+
31
+ // The public beta release uses production identity, entitlements, and hosted
32
+ // intelligence. Explicit --control-plane / KAWACH_CONTROL_PLANE_URL overrides
33
+ // remain available for operator-owned staging verification.
34
+ const PRODUCTION_CONTROL_PLANE = "https://api.prooflane.ai";
35
+
36
+ // Public Prooflane Auth0 SPA config (PKCE — these are public values, not secrets).
37
+ const AUTH0_DOMAIN = "auth.prooflane.ai";
38
+ const AUTH0_CLIENT_ID = "H00LlLQ4HFNUdkeDSgXxWpLmxqjUiU7W";
39
+ const AUTH0_AUDIENCE = "https://api.kawach.io";
40
+
41
+ const env = process.env;
42
+ env.KAWACH_CONTROL_PLANE_URL = flag("--control-plane") ?? env.KAWACH_CONTROL_PLANE_URL ?? PRODUCTION_CONTROL_PLANE;
43
+ env.KAWACH_UI_DIST = env.KAWACH_UI_DIST ?? join(dist, "ui");
44
+ env.KAWACH_UI_PORT = flag("--port") ?? env.KAWACH_UI_PORT ?? "7357";
45
+ // This is a public production package, never an internal compatibility build.
46
+ // Override any inherited value so a caller cannot re-enable local proprietary
47
+ // orchestration through an environment variable.
48
+ env.KAWACH_INTELLIGENCE_MODE = "hosted";
49
+ env.AUTH0_DOMAIN = env.AUTH0_DOMAIN ?? AUTH0_DOMAIN;
50
+ env.AUTH0_CLIENT_ID = env.AUTH0_CLIENT_ID ?? AUTH0_CLIENT_ID;
51
+ env.AUTH0_AUDIENCE = env.AUTH0_AUDIENCE ?? AUTH0_AUDIENCE;
52
+
53
+ const port = env.KAWACH_UI_PORT;
54
+ const url = `http://localhost:${port}`;
55
+
56
+ async function openBrowser() {
57
+ const { spawn } = await import("node:child_process");
58
+ const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
59
+ const cmdArgs = process.platform === "win32" ? ["/c", "start", "", url] : [url];
60
+ try {
61
+ spawn(cmd, cmdArgs, { stdio: "ignore", detached: true }).unref();
62
+ } catch {
63
+ /* the URL is printed below regardless */
64
+ }
65
+ }
66
+
67
+ console.log(`\n Prooflane Inspector Beta → ${url}`);
68
+ console.log(` Control Plane: ${env.KAWACH_CONTROL_PLANE_URL}`);
69
+ console.log(" Intelligence mode: hosted relay + local private execution");
70
+ console.log(` Sign in with your Prooflane account to run Security / RAG and generate CI tokens.\n`);
71
+
72
+ // Start the bundled server (it binds 127.0.0.1:KAWACH_UI_PORT), then open the UI.
73
+ await import(join(dist, "server.mjs"));
74
+ setTimeout(() => void openBrowser(), 1200);
75
+ }