@shield-agent/kya 0.1.1 → 0.1.3

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.
Files changed (52) hide show
  1. package/LIMITATIONS.md +9 -0
  2. package/README.md +5 -1
  3. package/dist/cli.d.ts +1 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +19 -2
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client.d.ts +1 -0
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +8 -2
  10. package/dist/client.js.map +1 -1
  11. package/dist/commands/dash.d.ts +11 -0
  12. package/dist/commands/dash.d.ts.map +1 -0
  13. package/dist/commands/dash.js +111 -0
  14. package/dist/commands/dash.js.map +1 -0
  15. package/dist/dash/dash.d.ts +31 -0
  16. package/dist/dash/dash.d.ts.map +1 -0
  17. package/dist/dash/dash.js +200 -0
  18. package/dist/dash/dash.js.map +1 -0
  19. package/dist/dash/entitlement.d.ts +35 -0
  20. package/dist/dash/entitlement.d.ts.map +1 -0
  21. package/dist/dash/entitlement.js +120 -0
  22. package/dist/dash/entitlement.js.map +1 -0
  23. package/dist/dash/input.d.ts +7 -0
  24. package/dist/dash/input.d.ts.map +1 -0
  25. package/dist/dash/input.js +36 -0
  26. package/dist/dash/input.js.map +1 -0
  27. package/dist/dash/render.d.ts +18 -0
  28. package/dist/dash/render.d.ts.map +1 -0
  29. package/dist/dash/render.js +81 -0
  30. package/dist/dash/render.js.map +1 -0
  31. package/dist/dash/screens/enterprise.d.ts +18 -0
  32. package/dist/dash/screens/enterprise.d.ts.map +1 -0
  33. package/dist/dash/screens/enterprise.js +47 -0
  34. package/dist/dash/screens/enterprise.js.map +1 -0
  35. package/dist/dash/screens/free.d.ts +42 -0
  36. package/dist/dash/screens/free.d.ts.map +1 -0
  37. package/dist/dash/screens/free.js +118 -0
  38. package/dist/dash/screens/free.js.map +1 -0
  39. package/dist/mcp/http.d.ts +2 -8
  40. package/dist/mcp/http.d.ts.map +1 -1
  41. package/dist/mcp/http.js +36 -3
  42. package/dist/mcp/http.js.map +1 -1
  43. package/dist/mcp/protocol.d.ts +1 -1
  44. package/dist/mcp/protocol.d.ts.map +1 -1
  45. package/dist/mcp/protocol.js +2 -1
  46. package/dist/mcp/protocol.js.map +1 -1
  47. package/dist/version.d.ts +2 -0
  48. package/dist/version.d.ts.map +1 -0
  49. package/dist/version.js +6 -0
  50. package/dist/version.js.map +1 -0
  51. package/package.json +4 -3
  52. package/server.json +4 -4
@@ -0,0 +1,35 @@
1
+ /**
2
+ * TUI plan: FREE (individual / PLG) vs ENTERPRISE (licensed).
3
+ * Fail-closed: missing or invalid license never elevates; parse errors stay FREE.
4
+ */
5
+ export type DashPlan = "free" | "enterprise";
6
+ export declare const ENTERPRISE_PANES: readonly ["dashboard", "cases", "metrics", "edge", "settings"];
7
+ export declare const FREE_PANES: readonly ["home", "policy", "agents", "approvals", "sessions", "orr", "mcp"];
8
+ export type FreePane = (typeof FREE_PANES)[number];
9
+ export type EnterprisePane = (typeof ENTERPRISE_PANES)[number];
10
+ export type DashPane = FreePane | EnterprisePane;
11
+ export interface Entitlement {
12
+ readonly plan: DashPlan;
13
+ readonly source: "env" | "license" | "plane" | "default";
14
+ readonly locked: readonly EnterprisePane[];
15
+ }
16
+ export interface PlaneEntitlement {
17
+ readonly plan?: unknown;
18
+ readonly dash?: unknown;
19
+ readonly features?: unknown;
20
+ }
21
+ export interface ResolveEntitlementInput {
22
+ readonly env: NodeJS.ProcessEnv;
23
+ readonly cwd: string;
24
+ readonly plane?: PlaneEntitlement;
25
+ readonly now?: Date;
26
+ readonly licensePublicKeyPem?: string;
27
+ }
28
+ /** Placeholder verify key — real issuers replace via KYA_LICENSE_PUBKEY. */
29
+ export declare const DEFAULT_LICENSE_PUBKEY_PEM = "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA//////////////////////////////////////////8=\n-----END PUBLIC KEY-----\n";
30
+ export declare function isEnterprisePane(pane: string): pane is EnterprisePane;
31
+ export declare function paneAllowed(ent: Entitlement, pane: DashPane): boolean;
32
+ export declare function resolveEntitlement(input: ResolveEntitlementInput): Entitlement;
33
+ export declare function planeGrantsEnterprise(plane?: PlaneEntitlement): boolean;
34
+ export declare function licenseGrantsEnterprise(raw: string, now: Date, publicKeyPem?: string): boolean;
35
+ //# sourceMappingURL=entitlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.d.ts","sourceRoot":"","sources":["../../src/dash/entitlement.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAC;AAE7C,eAAO,MAAM,gBAAgB,gEAAiE,CAAC;AAC/F,eAAO,MAAM,UAAU,8EAQb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B,yHAGtC,CAAC;AAIF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAErE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAGrE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,WAAW,CAkC9E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAKvE;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,IAAI,EACT,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CA6BT"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * TUI plan: FREE (individual / PLG) vs ENTERPRISE (licensed).
3
+ * Fail-closed: missing or invalid license never elevates; parse errors stay FREE.
4
+ */
5
+ import { existsSync, readFileSync } from "node:fs";
6
+ import { createPublicKey, verify } from "node:crypto";
7
+ import { join } from "node:path";
8
+ export const ENTERPRISE_PANES = ["dashboard", "cases", "metrics", "edge", "settings"];
9
+ export const FREE_PANES = [
10
+ "home",
11
+ "policy",
12
+ "agents",
13
+ "approvals",
14
+ "sessions",
15
+ "orr",
16
+ "mcp",
17
+ ];
18
+ /** Placeholder verify key — real issuers replace via KYA_LICENSE_PUBKEY. */
19
+ export const DEFAULT_LICENSE_PUBKEY_PEM = `-----BEGIN PUBLIC KEY-----
20
+ MCowBQYDK2VwAyEA//////////////////////////////////////////8=
21
+ -----END PUBLIC KEY-----
22
+ `;
23
+ const FREE = { plan: "free", source: "default", locked: [...ENTERPRISE_PANES] };
24
+ export function isEnterprisePane(pane) {
25
+ return ENTERPRISE_PANES.includes(pane);
26
+ }
27
+ export function paneAllowed(ent, pane) {
28
+ if (!isEnterprisePane(pane))
29
+ return true;
30
+ return ent.plan === "enterprise";
31
+ }
32
+ export function resolveEntitlement(input) {
33
+ try {
34
+ const envPlan = String(input.env.KYA_DASH_PLAN ?? "")
35
+ .trim()
36
+ .toLowerCase();
37
+ if (envPlan === "enterprise") {
38
+ return { plan: "enterprise", source: "env", locked: [] };
39
+ }
40
+ if (envPlan === "free") {
41
+ return { plan: "free", source: "env", locked: [...ENTERPRISE_PANES] };
42
+ }
43
+ const licensePath = String(input.env.KYA_LICENSE ?? "").trim() || join(input.cwd, ".kya", "license");
44
+ if (existsSync(licensePath)) {
45
+ let raw = "";
46
+ try {
47
+ raw = readFileSync(licensePath, "utf8");
48
+ }
49
+ catch {
50
+ return FREE;
51
+ }
52
+ const pubkey = input.licensePublicKeyPem ?? input.env.KYA_LICENSE_PUBKEY;
53
+ if (licenseGrantsEnterprise(raw, input.now ?? new Date(), pubkey)) {
54
+ return { plan: "enterprise", source: "license", locked: [] };
55
+ }
56
+ }
57
+ if (planeGrantsEnterprise(input.plane)) {
58
+ return { plan: "enterprise", source: "plane", locked: [] };
59
+ }
60
+ }
61
+ catch {
62
+ return FREE;
63
+ }
64
+ return FREE;
65
+ }
66
+ export function planeGrantsEnterprise(plane) {
67
+ if (!plane || typeof plane !== "object")
68
+ return false;
69
+ if (plane.dash === "enterprise")
70
+ return true;
71
+ if (typeof plane.plan === "string" && plane.plan.toUpperCase() === "SCALE")
72
+ return true;
73
+ return Array.isArray(plane.features) && plane.features.includes("enterprise_tui");
74
+ }
75
+ export function licenseGrantsEnterprise(raw, now, publicKeyPem) {
76
+ let parsed;
77
+ try {
78
+ parsed = JSON.parse(raw);
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
84
+ return false;
85
+ const rec = parsed;
86
+ const plan = typeof rec.plan === "string" ? rec.plan.toLowerCase() : "";
87
+ const features = Array.isArray(rec.features) ? rec.features : [];
88
+ const entitled = plan === "enterprise" || features.includes("enterprise_tui");
89
+ if (!entitled)
90
+ return false;
91
+ if (typeof rec.exp === "string") {
92
+ const exp = Date.parse(rec.exp);
93
+ if (!Number.isFinite(exp) || exp <= now.getTime())
94
+ return false;
95
+ }
96
+ const sig = rec.sig;
97
+ if (typeof sig !== "string" || sig.length === 0)
98
+ return false;
99
+ const { sig: _omit, ...body } = rec;
100
+ void _omit;
101
+ const payload = Buffer.from(canonicalJson(body), "utf8");
102
+ const pem = publicKeyPem ?? DEFAULT_LICENSE_PUBKEY_PEM;
103
+ try {
104
+ const key = createPublicKey(pem);
105
+ return verify(null, payload, key, Buffer.from(sig, "base64"));
106
+ }
107
+ catch {
108
+ return false;
109
+ }
110
+ }
111
+ function canonicalJson(value) {
112
+ if (value === null || typeof value !== "object")
113
+ return JSON.stringify(value);
114
+ if (Array.isArray(value))
115
+ return `[${value.map(canonicalJson).join(",")}]`;
116
+ const obj = value;
117
+ const keys = Object.keys(obj).sort();
118
+ return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalJson(obj[k])}`).join(",")}}`;
119
+ }
120
+ //# sourceMappingURL=entitlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlement.js","sourceRoot":"","sources":["../../src/dash/entitlement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { DashPane } from "./entitlement.js";
2
+ export interface KeyAction {
3
+ readonly type: "pane" | "refresh" | "offline" | "quit" | "help" | "noop";
4
+ readonly pane?: DashPane;
5
+ }
6
+ export declare function mapKey(raw: string): KeyAction;
7
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/dash/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAoBD,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAW7C"}
@@ -0,0 +1,36 @@
1
+ const DIGIT = {
2
+ "1": "home",
3
+ "2": "policy",
4
+ "3": "agents",
5
+ "4": "approvals",
6
+ "5": "sessions",
7
+ "6": "orr",
8
+ "7": "mcp",
9
+ };
10
+ const LETTER = {
11
+ d: "dashboard",
12
+ c: "cases",
13
+ m: "metrics",
14
+ e: "edge",
15
+ s: "settings",
16
+ };
17
+ export function mapKey(raw) {
18
+ if (raw === "q" || raw === "\u0003")
19
+ return { type: "quit" };
20
+ if (raw === "r")
21
+ return { type: "refresh" };
22
+ if (raw === "o")
23
+ return { type: "offline" };
24
+ if (raw === "?" || raw === "h")
25
+ return { type: "help" };
26
+ if (raw === "\t")
27
+ return { type: "noop" };
28
+ const digit = DIGIT[raw];
29
+ if (digit)
30
+ return { type: "pane", pane: digit };
31
+ const letter = LETTER[raw];
32
+ if (letter)
33
+ return { type: "pane", pane: letter };
34
+ return { type: "noop" };
35
+ }
36
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/dash/input.ts"],"names":[],"mappings":"AAOA,MAAM,KAAK,GAA6B;IACtC,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,MAAM,GAA6B;IACvC,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,UAAU;CACd,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7D,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5C,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5C,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAClD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { DashPane, Entitlement } from "./entitlement.js";
2
+ export declare const COLS = 78;
3
+ export interface StatusStrip {
4
+ readonly plan: "FREE" | "ENTERPRISE";
5
+ readonly host: string;
6
+ readonly plane: string;
7
+ readonly pane: DashPane;
8
+ }
9
+ export declare function hline(ch?: string): string;
10
+ export declare function clip(text: string, width?: number): string;
11
+ export declare function table(headers: readonly string[], rows: readonly (readonly string[])[]): string[];
12
+ export declare function navLine(_ent: Entitlement, active: DashPane): string;
13
+ export declare function enterpriseNavLine(ent: Entitlement, active: DashPane): string;
14
+ export declare function lockedPane(pane: DashPane): string[];
15
+ export declare function frame(status: StatusStrip, ent: Entitlement, body: readonly string[]): string;
16
+ export declare function assertNoSecrets(text: string, extra?: string): void;
17
+ export declare function paneAllowedOrLocked(ent: Entitlement, pane: DashPane, live: () => readonly string[]): readonly string[];
18
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/dash/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG9D,eAAO,MAAM,IAAI,KAAK,CAAC;AAEvB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,wBAAgB,KAAK,CAAC,EAAE,SAAM,GAAG,MAAM,CAEtC;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,MAAM,CAGvD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,CAiBhG;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAGnE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAS5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAOnD;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAe5F;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAclE;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,SAAS,MAAM,EAAE,GAC5B,SAAS,MAAM,EAAE,CAGnB"}
@@ -0,0 +1,81 @@
1
+ import { FREE_PANES, paneAllowed } from "./entitlement.js";
2
+ export const COLS = 78;
3
+ export function hline(ch = "─") {
4
+ return ch.repeat(COLS);
5
+ }
6
+ export function clip(text, width = COLS) {
7
+ if (text.length <= width)
8
+ return text;
9
+ return `${text.slice(0, Math.max(0, width - 1))}…`;
10
+ }
11
+ export function table(headers, rows) {
12
+ const widths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] ?? "").length), 4));
13
+ const line = (cells) => clip(cells
14
+ .map((c, i) => (c ?? "").padEnd(widths[i] ?? 0))
15
+ .join(" "));
16
+ const out = [line(headers), clip(widths.map((w) => "─".repeat(w)).join(" "))];
17
+ if (rows.length === 0) {
18
+ out.push("(empty)");
19
+ }
20
+ else {
21
+ for (const r of rows)
22
+ out.push(line(r));
23
+ }
24
+ return out;
25
+ }
26
+ export function navLine(_ent, active) {
27
+ const free = FREE_PANES.map((p) => (p === active ? `[${p.toUpperCase()}]` : p)).join(" ");
28
+ return clip(`free: ${free}`);
29
+ }
30
+ export function enterpriseNavLine(ent, active) {
31
+ if (ent.plan === "enterprise") {
32
+ return clip(`ent: ${["dashboard", "cases", "metrics", "edge", "settings"]
33
+ .map((p) => (p === active ? `[${p.toUpperCase()}]` : p))
34
+ .join(" ")}`);
35
+ }
36
+ return clip("ent: dashboard cases metrics edge settings (licensed)");
37
+ }
38
+ export function lockedPane(pane) {
39
+ return [
40
+ `${pane} requires an enterprise license.`,
41
+ "This pane matches the web console and is not part of the free individual plan.",
42
+ "Unlock: KYA_DASH_PLAN=enterprise or SCALE plane or .kya/license",
43
+ "Docs: docs/operations/kya-tui-license.md",
44
+ ];
45
+ }
46
+ export function frame(status, ent, body) {
47
+ const head = [
48
+ hline("═"),
49
+ clip(`kya dash · ${status.plan} · host=${status.host} · plane=${status.plane} · pane=${status.pane}`),
50
+ navLine(ent, status.pane),
51
+ enterpriseNavLine(ent, status.pane),
52
+ hline(),
53
+ ];
54
+ const foot = [
55
+ hline(),
56
+ clip("1-7 panes d/c/m/e/s enterprise r refresh o offline q quit ? help"),
57
+ ];
58
+ return [...head, ...body.map((l) => clip(l)), ...foot].join("\n");
59
+ }
60
+ export function assertNoSecrets(text, extra) {
61
+ const hay = extra ? `${text}\n${extra}` : text;
62
+ const pats = [
63
+ /npm_[A-Za-z0-9]{8,}/,
64
+ /Bearer\s+\S{8,}/i,
65
+ /sk_live_[A-Za-z0-9]+/,
66
+ /sk_test_[A-Za-z0-9]+/,
67
+ /ghp_[A-Za-z0-9]+/,
68
+ /github_pat_[A-Za-z0-9_]+/,
69
+ ];
70
+ for (const p of pats) {
71
+ if (p.test(text))
72
+ throw new Error("dashboard frame leaked a secret");
73
+ }
74
+ void hay;
75
+ }
76
+ export function paneAllowedOrLocked(ent, pane, live) {
77
+ if (!paneAllowed(ent, pane))
78
+ return lockedPane(pane);
79
+ return live();
80
+ }
81
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/dash/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;AASvB,MAAM,UAAU,KAAK,CAAC,EAAE,GAAG,GAAG;IAC5B,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,KAAK,GAAG,IAAI;IAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAA0B,EAAE,IAAoC;IACpF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAC/D,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,EAAE,CACxC,IAAI,CACF,KAAK;SACF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;IACJ,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAiB,EAAE,MAAgB;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAgB,EAAE,MAAgB;IAClE,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,IAAI,CACT,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;aAC3D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACvD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,6DAA6D,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO;QACL,GAAG,IAAI,kCAAkC;QACzC,gFAAgF;QAChF,qEAAqE;QACrE,0CAA0C;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,MAAmB,EAAE,GAAgB,EAAE,IAAuB;IAClF,MAAM,IAAI,GAAG;QACX,KAAK,CAAC,GAAG,CAAC;QACV,IAAI,CACF,gBAAgB,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,IAAI,EAAE,CACxG;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QACzB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QACnC,KAAK,EAAE;KACR,CAAC;IACF,MAAM,IAAI,GAAG;QACX,KAAK,EAAE;QACP,IAAI,CAAC,uEAAuE,CAAC;KAC9E,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAc;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG;QACX,qBAAqB;QACrB,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,kBAAkB;QAClB,0BAA0B;KAC3B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACvE,CAAC;IACD,KAAK,GAAG,CAAC;AACX,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,GAAgB,EAChB,IAAc,EACd,IAA6B;IAE7B,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,IAAI,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare function dashboardBody(k: {
2
+ pendingApprovals: number;
3
+ agentCount: number;
4
+ sessionCount?: number;
5
+ highRiskSessions?: number;
6
+ policyDeny?: number;
7
+ approveRequired?: number;
8
+ approveGranted?: number;
9
+ }): string[];
10
+ export declare function casesBody(rows: readonly {
11
+ id: string;
12
+ status?: string;
13
+ amount?: string;
14
+ }[]): string[];
15
+ export declare function metricsBody(m: Record<string, string | number | boolean>): string[];
16
+ export declare function edgeBody(flags: Record<string, string | boolean | number>): string[];
17
+ export declare function settingsBody(lines: readonly string[]): string[];
18
+ //# sourceMappingURL=enterprise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enterprise.d.ts","sourceRoot":"","sources":["../../../src/dash/screens/enterprise.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,EAAE,CAmBX;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAChE,MAAM,EAAE,CASV;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,EAAE,CASlF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG,MAAM,EAAE,CASnF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAM/D"}
@@ -0,0 +1,47 @@
1
+ import { table } from "../render.js";
2
+ export function dashboardBody(k) {
3
+ return [
4
+ "Enterprise dashboard (web parity KPIs).",
5
+ "",
6
+ ...table(["kpi", "value"], [
7
+ ["pending approvals", String(k.pendingApprovals)],
8
+ ["agents registered", Number.isFinite(k.agentCount) ? String(k.agentCount) : "—"],
9
+ ["observed sessions", String(k.sessionCount ?? "—")],
10
+ ["high-risk sessions", String(k.highRiskSessions ?? "—")],
11
+ ["policy denies", String(k.policyDeny ?? "—")],
12
+ ["approve required", String(k.approveRequired ?? "—")],
13
+ ["approve granted", String(k.approveGranted ?? "—")],
14
+ ]),
15
+ "",
16
+ "Actions that change production still wait for a person.",
17
+ ];
18
+ }
19
+ export function casesBody(rows) {
20
+ return [
21
+ "Evidence & cases (optional disputes pack). Observational — does not approve submit.",
22
+ "",
23
+ ...table(["id", "status", "amount"], rows.map((c) => [c.id, c.status ?? "", c.amount ?? ""])),
24
+ ];
25
+ }
26
+ export function metricsBody(m) {
27
+ return [
28
+ "Metrics (process counters). Kill SLO target < 60s.",
29
+ "",
30
+ ...table(["metric", "value"], Object.entries(m).map(([k, v]) => [k, String(v)])),
31
+ ];
32
+ }
33
+ export function edgeBody(flags) {
34
+ return [
35
+ "Edge / Gatekeeper (read-only). Complement — not a second PEP.",
36
+ "",
37
+ ...table(["flag", "value"], Object.entries(flags).map(([k, v]) => [k, String(v)])),
38
+ ];
39
+ }
40
+ export function settingsBody(lines) {
41
+ return [
42
+ "Settings (licensed). Team / SSO / keys / billing — same surfaces as the web console.",
43
+ "",
44
+ ...(lines.length ? lines : ["Connect a plane to load tenant settings."]),
45
+ ];
46
+ }
47
+ //# sourceMappingURL=enterprise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enterprise.js","sourceRoot":"","sources":["../../../src/dash/screens/enterprise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,UAAU,aAAa,CAAC,CAQ7B;IACC,OAAO;QACL,yCAAyC;QACzC,EAAE;QACF,GAAG,KAAK,CACN,CAAC,KAAK,EAAE,OAAO,CAAC,EAChB;YACE,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACjD,CAAC,mBAAmB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACjF,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;YACpD,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;YACzD,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YAC9C,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC;YACtD,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC;SACrD,CACF;QACD,EAAE;QACF,yDAAyD;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,IAAiE;IAEjE,OAAO;QACL,qFAAqF;QACrF,EAAE;QACF,GAAG,KAAK,CACN,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CACxD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAA4C;IACtE,OAAO;QACL,oDAAoD;QACpD,EAAE;QACF,GAAG,KAAK,CACN,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAClD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAgD;IACvE,OAAO;QACL,+DAA+D;QAC/D,EAAE;QACF,GAAG,KAAK,CACN,CAAC,MAAM,EAAE,OAAO,CAAC,EACjB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,OAAO;QACL,sFAAsF;QACtF,EAAE;QACF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { PolicyEvaluateResponse } from "../../client.js";
2
+ export declare function homeBody(input: {
3
+ readonly version: string;
4
+ readonly offline: boolean;
5
+ readonly hasApiKey: boolean;
6
+ readonly baseUrl: string;
7
+ readonly agentId?: string;
8
+ readonly lastEval?: {
9
+ toolId: string;
10
+ verdict: string;
11
+ reasonCode: string;
12
+ };
13
+ }): string[];
14
+ export declare function policyOfflineBody(): string[];
15
+ export declare function policyLiveBody(evals: readonly PolicyEvaluateResponse[]): string[];
16
+ export declare function agentsOfflineBody(agentId?: string): string[];
17
+ export declare function agentsLiveBody(rows: readonly {
18
+ id: string;
19
+ name: string;
20
+ status?: string;
21
+ }[]): string[];
22
+ export declare function needsPlaneBody(pane: string): string[];
23
+ export declare function approvalsLiveBody(rows: readonly {
24
+ id: string;
25
+ status: string;
26
+ action?: string;
27
+ }[]): string[];
28
+ export declare function sessionsLiveBody(rows: readonly {
29
+ id: string;
30
+ risk?: string;
31
+ host?: string;
32
+ }[]): string[];
33
+ export declare function orrBody(summary?: {
34
+ overall?: string;
35
+ disposition?: string;
36
+ path?: string;
37
+ }): string[];
38
+ export declare function mcpBody(input: {
39
+ host: string;
40
+ hasApiKey: boolean;
41
+ }): string[];
42
+ //# sourceMappingURL=free.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free.d.ts","sourceRoot":"","sources":["../../../src/dash/screens/free.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAG9D,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E,GAAG,MAAM,EAAE,CAoBX;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CA0B5C;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,GAAG,MAAM,EAAE,CAejF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAS5D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,EAAE,CASvG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrD;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC/D,MAAM,EAAE,CAUV;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC5D,MAAM,EAAE,CASV;AAED,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,EAAE,CASX;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAS7E"}
@@ -0,0 +1,118 @@
1
+ import { evaluateOffline } from "../../offline-evaluate.js";
2
+ import { SAMPLE_TOOLS } from "../../sample-tools.js";
3
+ import { table } from "../render.js";
4
+ export function homeBody(input) {
5
+ const lines = [
6
+ "Individual free plan — local PEP playground, observe, ORR, MCP gate.",
7
+ "Enterprise web-parity panes stay locked until licensed.",
8
+ "",
9
+ `cli ${input.version}`,
10
+ `offline ${input.offline ? "yes (sample tools, not production PEP)" : "no"}`,
11
+ `api key ${input.hasApiKey ? "set" : "empty (fail-closed on live panes)"}`,
12
+ `plane ${input.offline ? "offline" : input.baseUrl}`,
13
+ `agentId ${input.agentId ?? "(none — kya register-agent)"}`,
14
+ "",
15
+ "Next: 2 policy · 6 orr · 7 mcp · eval-tool --offline",
16
+ ];
17
+ if (input.lastEval) {
18
+ lines.push("", `last eval ${input.lastEval.toolId} → ${input.lastEval.verdict} (${input.lastEval.reasonCode})`);
19
+ }
20
+ return lines;
21
+ }
22
+ export function policyOfflineBody() {
23
+ const deny = evaluateOffline({
24
+ toolId: "org.sample.never.event",
25
+ irreversible: true,
26
+ env: { host: "ide" },
27
+ });
28
+ const ra = evaluateOffline({
29
+ toolId: "org.sample.data.write",
30
+ irreversible: true,
31
+ env: { host: "ide" },
32
+ });
33
+ return [
34
+ "Policy playground (offline sample — not the production PEP).",
35
+ "Sole PEP in production is Shield HTTP evaluate.",
36
+ "",
37
+ ...table(["tool", "verdict", "reason"], [
38
+ ["org.sample.never.event", deny.verdict, deny.reasonCode],
39
+ ["org.sample.data.write", ra.verdict, ra.reasonCode],
40
+ ]),
41
+ "",
42
+ `catalog ${SAMPLE_TOOLS.length} sample tools (packs optional)`,
43
+ "live set KYA_BASE_URL + KYA_API_KEY and drop --offline",
44
+ ];
45
+ }
46
+ export function policyLiveBody(evals) {
47
+ if (evals.length === 0) {
48
+ return [
49
+ "Policy playground (live plane).",
50
+ "No evaluations this session. Press r after wiring KYA_API_KEY.",
51
+ ];
52
+ }
53
+ return [
54
+ "Policy playground (live plane — Shield is sole PEP).",
55
+ "",
56
+ ...table(["tool", "verdict", "reason"], evals.map((e) => [e.toolId ?? "?", e.verdict, e.reasonCode])),
57
+ ];
58
+ }
59
+ export function agentsOfflineBody(agentId) {
60
+ return [
61
+ "Agents (free).",
62
+ "Offline mode cannot list the plane registry.",
63
+ agentId
64
+ ? `local agentId ${agentId}`
65
+ : "No local agentId. Run: kya register-agent --name solo --version-hash dev",
66
+ "Needs plane: list / kill / passport.",
67
+ ];
68
+ }
69
+ export function agentsLiveBody(rows) {
70
+ return [
71
+ "Agents (free — register / inspect / kill).",
72
+ "",
73
+ ...table(["id", "name", "status"], rows.map((a) => [a.id, a.name, a.status ?? ""])),
74
+ ];
75
+ }
76
+ export function needsPlaneBody(pane) {
77
+ return [
78
+ `${pane} needs a control plane.`,
79
+ "Set KYA_BASE_URL + KYA_API_KEY (local-free :8090 or hosted).",
80
+ "Empty key is fail-closed — this pane will not fake data.",
81
+ ];
82
+ }
83
+ export function approvalsLiveBody(rows) {
84
+ return [
85
+ "Approvals (free — human queue). Approve/reject is the same PEP path as the web.",
86
+ "TUI never auto-approves.",
87
+ "",
88
+ ...table(["id", "status", "action"], rows.map((a) => [a.id, a.status, String(a.action ?? "")])),
89
+ ];
90
+ }
91
+ export function sessionsLiveBody(rows) {
92
+ return [
93
+ "Sessions (observe). Risk only raises policy; it cannot auto-allow.",
94
+ "",
95
+ ...table(["id", "risk", "host"], rows.map((s) => [s.id, s.risk ?? "", s.host ?? ""])),
96
+ ];
97
+ }
98
+ export function orrBody(summary) {
99
+ return [
100
+ "ORR board (reporting only — not a second PEP).",
101
+ "Scanners are evidence. Sole PEP remains Shield KYA.",
102
+ "",
103
+ summary
104
+ ? `last run ${summary.overall ?? "?"} / ${summary.disposition ?? "?"} ${summary.path ?? ""}`
105
+ : "Run: kya orr run --path . --out ./orr-report --skip-optional-producers",
106
+ ];
107
+ }
108
+ export function mcpBody(input) {
109
+ return [
110
+ "Local MCP gate (free).",
111
+ " kya serve-mcp --stdio",
112
+ " tools: kya.policy_evaluate | kya.session_ingest | kya.request_approval",
113
+ `host ${input.host}`,
114
+ `api key ${input.hasApiKey ? "set" : "empty — serve-mcp will fail-closed"}`,
115
+ "No irreversible side effect without APPROVED.",
116
+ ];
117
+ }
118
+ //# sourceMappingURL=free.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free.js","sourceRoot":"","sources":["../../../src/dash/screens/free.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export interface HttpMcpOptions {
7
7
  readonly client: KyaHttpClient;
8
8
  readonly kyaHost: Host;
9
9
  readonly agentId?: string;
10
+ /** Optional shared secret; also read from KYA_MCP_HTTP_TOKEN. */
11
+ readonly sharedSecret?: string;
10
12
  }
11
13
  export interface HttpMcpServer {
12
14
  readonly server: Server;
@@ -14,13 +16,5 @@ export interface HttpMcpServer {
14
16
  readonly url: string;
15
17
  close(): Promise<void>;
16
18
  }
17
- /**
18
- * Lightweight HTTP MCP gate for local smoke / non-stdio hosts.
19
- * - GET /health
20
- * - GET /connectors/mcp.json (descriptor)
21
- * - GET /mcp/tools
22
- * - POST /mcp (JSON-RPC)
23
- * - POST /mcp/tools/:name (direct tool call)
24
- */
25
19
  export declare function startHttpMcp(options: HttpMcpOptions): Promise<HttpMcpServer>;
26
20
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/mcp/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAUzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6B5E"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/mcp/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAUzC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAaD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkC5E"}