skillscript-runtime 0.19.16 → 0.20.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 +11 -1
- package/dist/approval.d.ts +80 -54
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +156 -120
- package/dist/approval.js.map +1 -1
- package/dist/bootstrap.d.ts +41 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +59 -2
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli.js +277 -24
- package/dist/cli.js.map +1 -1
- package/dist/compile.js +7 -0
- package/dist/compile.js.map +1 -1
- package/dist/composition.d.ts.map +1 -1
- package/dist/composition.js +13 -1
- package/dist/composition.js.map +1 -1
- package/dist/connectors/skill-store.d.ts.map +1 -1
- package/dist/connectors/skill-store.js +41 -13
- package/dist/connectors/skill-store.js.map +1 -1
- package/dist/connectors/sqlite-skill-store.d.ts.map +1 -1
- package/dist/connectors/sqlite-skill-store.js +21 -12
- package/dist/connectors/sqlite-skill-store.js.map +1 -1
- package/dist/connectors/types.d.ts +9 -0
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/connectors/types.js.map +1 -1
- package/dist/dashboard/server.d.ts +26 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +70 -2
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/spa/app.js +200 -8
- package/dist/dashboard/spa/index.html +2 -0
- package/dist/dashboard/spa/styles.css +42 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +49 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lint.d.ts.map +1 -1
- package/dist/lint.js +24 -7
- package/dist/lint.js.map +1 -1
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +19 -2
- package/dist/mcp-server.js.map +1 -1
- package/dist/parser.js +2 -2
- package/dist/parser.js.map +1 -1
- package/dist/runtime-config.d.ts +6 -0
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +8 -0
- package/dist/runtime-config.js.map +1 -1
- package/dist/runtime-env-resolver.d.ts +4 -0
- package/dist/runtime-env-resolver.d.ts.map +1 -1
- package/dist/runtime-env-resolver.js +27 -0
- package/dist/runtime-env-resolver.js.map +1 -1
- package/dist/runtime.d.ts +18 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +84 -17
- package/dist/runtime.js.map +1 -1
- package/dist/safe-path.d.ts +22 -0
- package/dist/safe-path.d.ts.map +1 -1
- package/dist/safe-path.js +72 -1
- package/dist/safe-path.js.map +1 -1
- package/dist/scheduler.d.ts +3 -0
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +8 -0
- package/dist/scheduler.js.map +1 -1
- package/dist/skill-catalog.d.ts.map +1 -1
- package/dist/skill-catalog.js +10 -2
- package/dist/skill-catalog.js.map +1 -1
- package/docs/adopter-playbook.md +75 -25
- package/docs/configuration.md +5 -1
- package/docs/connector-contract-reference.md +5 -1
- package/docs/language-reference.md +83 -130
- package/docs/sqlite-skill-store.md +5 -1
- package/examples/skillscripts/classify-support-ticket.skill.md +1 -1
- package/examples/skillscripts/data-store-roundtrip.skill.md +1 -1
- package/examples/skillscripts/doc-qa-with-citations.skill.md +1 -1
- package/examples/skillscripts/feedback-sentiment-scan.skill.md +1 -1
- package/examples/skillscripts/hello-world.skill.md +1 -1
- package/examples/skillscripts/hello-world.skill.provenance.json +1 -1
- package/examples/skillscripts/morning-brief.skill.md +1 -1
- package/examples/skillscripts/queue-length-monitor.skill.md +1 -1
- package/examples/skillscripts/service-health-watch.skill.md +1 -1
- package/examples/skillscripts/skill-store-roundtrip.skill.md +1 -1
- package/examples/skillscripts/youtrack-morning-sweep.skill.md +1 -1
- package/package.json +1 -1
- package/scaffold/skills/data-store-roundtrip.skill.md +1 -1
- package/scaffold/skills/hello-world.skill.md +1 -1
- package/scaffold/skills/skill-store-roundtrip.skill.md +1 -1
|
@@ -78,6 +78,19 @@ export interface DashboardServerConfig {
|
|
|
78
78
|
* the typical adopter wires both).
|
|
79
79
|
*/
|
|
80
80
|
scheduler?: Scheduler;
|
|
81
|
+
/**
|
|
82
|
+
* v0.20.1 — optional shared-secret gate for the dashboard surface (SPA + the
|
|
83
|
+
* `/rpc` it uses). When set, every request must present the token via
|
|
84
|
+
* `?token=<x>` (browser entry — a cookie is then set so follow-up requests
|
|
85
|
+
* pass), a `skillscript_dash` cookie, or `Authorization: Bearer <x>` (for
|
|
86
|
+
* programmatic `/rpc` callers); 401 otherwise. Default unset → open (localhost
|
|
87
|
+
* bind is the only gate, as before). `/event` keeps its own bearer token.
|
|
88
|
+
*
|
|
89
|
+
* This is NETWORK/CASUAL hygiene (keep network parties out when binding beyond
|
|
90
|
+
* localhost), NOT an agent-forgery boundary — the dashboard holds no signing
|
|
91
|
+
* key. Falls back to `SKILLSCRIPT_DASHBOARD_AUTH_TOKEN`.
|
|
92
|
+
*/
|
|
93
|
+
authToken?: string;
|
|
81
94
|
}
|
|
82
95
|
export declare class DashboardServer {
|
|
83
96
|
private readonly mcpServer;
|
|
@@ -89,12 +102,25 @@ export declare class DashboardServer {
|
|
|
89
102
|
private readonly eventIngressEnabled;
|
|
90
103
|
private readonly eventIngressAuthToken;
|
|
91
104
|
private readonly scheduler;
|
|
105
|
+
private readonly authToken;
|
|
92
106
|
private httpServer;
|
|
93
107
|
constructor(config: DashboardServerConfig);
|
|
94
108
|
start(): Promise<void>;
|
|
109
|
+
/** The actual bound port after `start()` — read this when constructed with
|
|
110
|
+
* port 0 (OS-assigned ephemeral port). Falls back to the configured port. */
|
|
111
|
+
boundPort(): number;
|
|
95
112
|
stop(): Promise<void>;
|
|
96
113
|
/** Exposed for direct testing — doesn't go through the network stack. */
|
|
97
114
|
handle(req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* v0.20.1 — dashboard auth gate. Returns true when the request may proceed
|
|
117
|
+
* (no token configured, or a valid token presented); false when it already
|
|
118
|
+
* sent a 401. On a browser `?token=` entry it sets a cookie so the SPA's
|
|
119
|
+
* follow-up asset + `/rpc` requests carry the token without re-tokening.
|
|
120
|
+
*/
|
|
121
|
+
private checkDashboardAuth;
|
|
122
|
+
/** Token from `?token=` query, the `skillscript_dash` cookie, or a Bearer header. */
|
|
123
|
+
private extractDashboardToken;
|
|
98
124
|
/**
|
|
99
125
|
* v0.19.0 — POST /event handler (memory `ceaf4579`).
|
|
100
126
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAU,MAAM,WAAW,CAAC;AAKzE,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8GAA8G;IAC9G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;;;;;OAkBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiBD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,UAAU,CAAuB;gBAE7B,MAAM,EAAE,qBAAqB;IAsCnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;kFAC8E;IAC9E,SAAS,IAAI,MAAM;IAKb,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,yEAAyE;IACnE,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDtE;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAgB1B,qFAAqF;IACrF,OAAO,CAAC,qBAAqB;IAa7B;;;;;;;;;;;;;;;OAeG;YACW,WAAW;YA8DX,SAAS;YAkCT,YAAY;CAkB3B"}
|
package/dist/dashboard/server.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
|
+
import { timingSafeEqual } from "node:crypto";
|
|
2
3
|
import { readFile } from "node:fs/promises";
|
|
3
4
|
import { existsSync } from "node:fs";
|
|
4
5
|
import { extname, join, resolve, dirname } from "node:path";
|
|
5
6
|
import { fileURLToPath } from "node:url";
|
|
6
7
|
import { EventNotFoundError, EventParamMismatchError } from "../errors.js";
|
|
7
8
|
import { resolveRuntimeConfigFromEnv, pickEnvOptionalOption } from "../runtime-env-resolver.js";
|
|
9
|
+
/** Constant-time token comparison (length-guarded so timingSafeEqual won't throw). */
|
|
10
|
+
function tokensEqual(a, b) {
|
|
11
|
+
const ab = Buffer.from(a);
|
|
12
|
+
const bb = Buffer.from(b);
|
|
13
|
+
if (ab.length !== bb.length)
|
|
14
|
+
return false;
|
|
15
|
+
return timingSafeEqual(ab, bb);
|
|
16
|
+
}
|
|
8
17
|
const MIME = {
|
|
9
18
|
".html": "text/html; charset=utf-8",
|
|
10
19
|
".js": "application/javascript; charset=utf-8",
|
|
@@ -21,6 +30,7 @@ export class DashboardServer {
|
|
|
21
30
|
eventIngressEnabled;
|
|
22
31
|
eventIngressAuthToken;
|
|
23
32
|
scheduler;
|
|
33
|
+
authToken;
|
|
24
34
|
httpServer = null;
|
|
25
35
|
constructor(config) {
|
|
26
36
|
this.mcpServer = config.mcpServer;
|
|
@@ -56,15 +66,30 @@ export class DashboardServer {
|
|
|
56
66
|
if (this.eventIngressEnabled && this.scheduler === undefined) {
|
|
57
67
|
throw new Error("DashboardServer: eventIngressEnabled requires a scheduler reference");
|
|
58
68
|
}
|
|
69
|
+
// v0.20.1 — dashboard auth gate. Empty string treated as unset.
|
|
70
|
+
this.authToken = config.authToken ?? (process.env["SKILLSCRIPT_DASHBOARD_AUTH_TOKEN"] || undefined);
|
|
59
71
|
}
|
|
60
72
|
async start() {
|
|
61
73
|
this.httpServer = createServer((req, res) => {
|
|
62
74
|
void this.handle(req, res);
|
|
63
75
|
});
|
|
64
|
-
return new Promise((resolve) => {
|
|
65
|
-
this.httpServer
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
const server = this.httpServer;
|
|
78
|
+
// Reject (don't hang) on bind errors — e.g. EADDRINUSE — so callers fail
|
|
79
|
+
// fast instead of waiting on a promise that never resolves.
|
|
80
|
+
const onError = (err) => { server.off("listening", onListening); reject(err); };
|
|
81
|
+
const onListening = () => { server.off("error", onError); resolve(); };
|
|
82
|
+
server.once("error", onError);
|
|
83
|
+
server.once("listening", onListening);
|
|
84
|
+
server.listen(this.port, this.bindAddress);
|
|
66
85
|
});
|
|
67
86
|
}
|
|
87
|
+
/** The actual bound port after `start()` — read this when constructed with
|
|
88
|
+
* port 0 (OS-assigned ephemeral port). Falls back to the configured port. */
|
|
89
|
+
boundPort() {
|
|
90
|
+
const addr = this.httpServer?.address();
|
|
91
|
+
return typeof addr === "object" && addr !== null ? addr.port : this.port;
|
|
92
|
+
}
|
|
68
93
|
async stop() {
|
|
69
94
|
if (this.httpServer === null)
|
|
70
95
|
return;
|
|
@@ -76,6 +101,11 @@ export class DashboardServer {
|
|
|
76
101
|
async handle(req, res) {
|
|
77
102
|
try {
|
|
78
103
|
const url = new URL(req.url ?? "/", `http://${this.bindAddress}:${this.port}`);
|
|
104
|
+
// v0.20.1 — dashboard auth gate (SPA + /rpc). `/event` self-authenticates
|
|
105
|
+
// with its own bearer token, so it's exempt here.
|
|
106
|
+
if (url.pathname !== "/event" && !this.checkDashboardAuth(req, url, res)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
79
109
|
// /rpc is POST-only — any other method on /rpc is 405 (not falling
|
|
80
110
|
// through to the static handler, which would 404 with misleading
|
|
81
111
|
// semantics).
|
|
@@ -122,6 +152,44 @@ export class DashboardServer {
|
|
|
122
152
|
res.end(`Internal server error: ${err.message}`);
|
|
123
153
|
}
|
|
124
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* v0.20.1 — dashboard auth gate. Returns true when the request may proceed
|
|
157
|
+
* (no token configured, or a valid token presented); false when it already
|
|
158
|
+
* sent a 401. On a browser `?token=` entry it sets a cookie so the SPA's
|
|
159
|
+
* follow-up asset + `/rpc` requests carry the token without re-tokening.
|
|
160
|
+
*/
|
|
161
|
+
checkDashboardAuth(req, url, res) {
|
|
162
|
+
if (this.authToken === undefined)
|
|
163
|
+
return true; // gate disabled (default)
|
|
164
|
+
const presented = this.extractDashboardToken(req, url);
|
|
165
|
+
if (presented !== undefined && tokensEqual(presented, this.authToken)) {
|
|
166
|
+
if (url.searchParams.has("token")) {
|
|
167
|
+
// Persist for the browser session so assets + /rpc don't need ?token=.
|
|
168
|
+
res.setHeader("Set-Cookie", `skillscript_dash=${encodeURIComponent(this.authToken)}; HttpOnly; SameSite=Strict; Path=/`);
|
|
169
|
+
}
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
res.statusCode = 401;
|
|
173
|
+
res.setHeader("content-type", "text/plain; charset=utf-8");
|
|
174
|
+
res.end("401 Unauthorized — append ?token=<SKILLSCRIPT_DASHBOARD_AUTH_TOKEN> to the URL (or send it as a Bearer token).");
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
/** Token from `?token=` query, the `skillscript_dash` cookie, or a Bearer header. */
|
|
178
|
+
extractDashboardToken(req, url) {
|
|
179
|
+
const q = url.searchParams.get("token");
|
|
180
|
+
if (q)
|
|
181
|
+
return q;
|
|
182
|
+
const cookie = req.headers["cookie"];
|
|
183
|
+
if (typeof cookie === "string") {
|
|
184
|
+
const m = /(?:^|;\s*)skillscript_dash=([^;]+)/.exec(cookie);
|
|
185
|
+
if (m && m[1] !== undefined)
|
|
186
|
+
return decodeURIComponent(m[1]);
|
|
187
|
+
}
|
|
188
|
+
const auth = req.headers["authorization"];
|
|
189
|
+
if (typeof auth === "string" && auth.startsWith("Bearer "))
|
|
190
|
+
return auth.slice(7);
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
125
193
|
/**
|
|
126
194
|
* v0.19.0 — POST /event handler (memory `ceaf4579`).
|
|
127
195
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AA+FhG,sFAAsF;AACtF,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,IAAI,GAA2B;IACnC,OAAO,EAAE,0BAA0B;IACnC,KAAK,EAAE,uCAAuC;IAC9C,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,iCAAiC;CAC3C,CAAC;AAEF,MAAM,OAAO,eAAe;IACT,SAAS,CAAY;IACrB,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,SAAS,CAAS;IAClB,QAAQ,CAAU;IAClB,oBAAoB,CAAqB;IACzC,mBAAmB,CAAU;IAC7B,qBAAqB,CAAqB;IAC1C,SAAS,CAAwB;IACjC,SAAS,CAAqB;IACvC,UAAU,GAAkB,IAAI,CAAC;IAEzC,YAAY,MAA6B;QACvC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,gEAAgE;QAChE,iEAAiE;QACjE,4DAA4D;QAC5D,6DAA6D;QAC7D,sDAAsD;QACtD,8DAA8D;QAC9D,8CAA8C;QAC9C,EAAE;QACF,8DAA8D;QAC9D,wDAAwD;QACxD,iCAAiC;QACjC,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACpE,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC;QACzF,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,eAAe,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,gEAAgE;QAChE,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACxG,IAAI,CAAC,oBAAoB,GAAG,SAAS,EAAE,WAAW,EAAE,CAAC;QACrD,kEAAkE;QAClE,2DAA2D;QAC3D,iCAAiC;QACjC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,KAAK,SAAS;YACjE,CAAC,CAAC,MAAM,CAAC,mBAAmB;YAC5B,CAAC,CAAC,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC/G,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,gEAAgE;QAChE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,IAAI,SAAS,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1C,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAW,CAAC;YAChC,yEAAyE;YACzE,4DAA4D;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAU,EAAQ,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7F,MAAM,WAAW,GAAG,GAAS,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;kFAC8E;IAC9E,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QACxC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO;QACrC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,MAAM,CAAC,GAAoB,EAAE,GAAmB;QACpD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/E,0EAA0E;YAC1E,kDAAkD;YAClD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzE,OAAO;YACT,CAAC;YACD,mEAAmE;YACnE,iEAAiE;YACjE,cAAc;YACd,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC9B,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,4DAA4D;YAC5D,6DAA6D;YAC7D,sCAAsC;YACtC,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC9B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;oBAC9C,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC9B,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oBAC9D,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,GAAoB,EAAE,GAAQ,EAAE,GAAmB;QAC5E,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,CAAC,0BAA0B;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,uEAAuE;gBACvE,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;YAC3H,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,gHAAgH,CAAC,CAAC;QAC1H,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qFAAqF;IAC7E,qBAAqB,CAAC,GAAoB,EAAE,GAAQ;QAC1D,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAChB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,oCAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACK,KAAK,CAAC,WAAW,CAAC,GAAoB,EAAE,GAAmB;QACjE,uEAAuE;QACvE,sDAAsD;QACtD,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACxD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClD,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;gBAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;gBAC9F,OAAO;YACT,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,MAAkD,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA+C,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;YACtE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAC;YAC7G,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3G,CAAC,CAAC,MAAM,CAAC,MAAiC;YAC1C,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACpE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;gBACtC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;gBAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YACD,IAAI,GAAG,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;gBAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrB,KAAK,EAAE,aAAa;oBACpB,MAAM,EAAE,GAAG,CAAC,OAAO;oBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC,CAAC;gBACJ,OAAO;YACT,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,GAAoB,EAAE,GAAmB;QAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,MAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QACD,oEAAoE;QACpE,8DAA8D;QAC9D,mEAAmE;QACnE,sEAAsE;QACtE,sEAAsE;QACtE,2BAA2B;QAC3B,IAAI,cAAkC,CAAC;QACvC,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;gBAC1C,cAAc,GAAG,GAAG,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjE,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACzE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,GAAmB;QAC9D,MAAM,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACF;AAED,oFAAoF;AACpF,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,kEAAkE;IAClE,0EAA0E;IAC1E,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;QACpB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;KACrD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,sEAAsE;IACtE,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC;AACxB,CAAC"}
|
|
@@ -13,6 +13,8 @@ const state = {
|
|
|
13
13
|
metrics: null,
|
|
14
14
|
capabilities: null,
|
|
15
15
|
blockedShellAttempts: null,
|
|
16
|
+
// v1.0 Gate #7 — { enabled, public_key_present } or null (pre-Gate-#7 server).
|
|
17
|
+
securedApproval: null,
|
|
16
18
|
lastUpdate: null,
|
|
17
19
|
};
|
|
18
20
|
|
|
@@ -50,7 +52,7 @@ async function refresh() {
|
|
|
50
52
|
callTool("skill_list", { filter: { audience: "all" } }),
|
|
51
53
|
callTool("list_triggers", {}),
|
|
52
54
|
callTool("health_metrics", {}),
|
|
53
|
-
callTool("runtime_capabilities", { include: ["mcpConnectors", "mcpConnectorClasses", "localModels", "dataStores", "skillStores", "agentConnectors", "runtimeVersion"] }),
|
|
55
|
+
callTool("runtime_capabilities", { include: ["mcpConnectors", "mcpConnectorClasses", "localModels", "dataStores", "skillStores", "agentConnectors", "securedApproval", "runtimeVersion"] }),
|
|
54
56
|
// v0.18.9 — blocked shell attempts for the Security view's
|
|
55
57
|
// observe→promote loop. Graceful: pre-v0.18.9 servers don't have
|
|
56
58
|
// this tool; catch returns null and the Security view degrades.
|
|
@@ -64,8 +66,11 @@ async function refresh() {
|
|
|
64
66
|
state.triggers = triggers;
|
|
65
67
|
state.metrics = metrics;
|
|
66
68
|
state.capabilities = capabilities;
|
|
69
|
+
// v0.9.0+ servers may omit securedApproval (pre-Gate-#7) → null = "unsecured".
|
|
70
|
+
state.securedApproval = capabilities?.securedApproval ?? null;
|
|
67
71
|
state.blockedShellAttempts = blocked;
|
|
68
72
|
state.lastUpdate = ts;
|
|
73
|
+
renderSecuredBanner();
|
|
69
74
|
document.getElementById("poll-status").textContent = `last updated ${ts.toLocaleTimeString()}`;
|
|
70
75
|
renderCurrentView();
|
|
71
76
|
} catch (err) {
|
|
@@ -78,8 +83,156 @@ function startPolling() {
|
|
|
78
83
|
pollTimer = setInterval(refresh, POLL_INTERVAL_MS);
|
|
79
84
|
}
|
|
80
85
|
|
|
86
|
+
// ─── Secured mode (v1.0 Gate #7) ────────────────────────────────────────────
|
|
87
|
+
// When the runtime runs in secured mode it holds no approval private key — it
|
|
88
|
+
// can VERIFY approvals (public key) but cannot GRANT them. Approval is an
|
|
89
|
+
// out-of-band operator action: `skillfile approve <name>` reads the operator's
|
|
90
|
+
// private key at the terminal and signs. The dashboard is a REVIEW surface, not
|
|
91
|
+
// a SIGNING surface (privilege separation keeps the key off this process).
|
|
92
|
+
|
|
93
|
+
function securedModeOn() {
|
|
94
|
+
return state.securedApproval?.enabled === true;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// The exact command an operator runs to approve a skill. Kept in one place so
|
|
98
|
+
// the queue and the detail view stay consistent.
|
|
99
|
+
function approveCommand(name) {
|
|
100
|
+
return `skillfile approve ${shellQuote(name)}`;
|
|
101
|
+
}
|
|
102
|
+
function shellQuote(s) {
|
|
103
|
+
return /^[A-Za-z0-9._-]+$/.test(s) ? s : `'${String(s).replace(/'/g, "'\\''")}'`;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function renderSecuredBanner() {
|
|
107
|
+
const el = document.getElementById("secured-banner");
|
|
108
|
+
if (!el) return;
|
|
109
|
+
const sa = state.securedApproval;
|
|
110
|
+
if (sa?.enabled !== true) { el.innerHTML = ""; return; }
|
|
111
|
+
if (sa.public_key_present === false) {
|
|
112
|
+
// Secured but no verifier wired — a misconfiguration: every effectful op is
|
|
113
|
+
// refused and no approval can verify. Loud, because nothing will run.
|
|
114
|
+
el.innerHTML = `<div class="banner banner-error">
|
|
115
|
+
<strong>Secured mode is ON but no approval public key is wired.</strong>
|
|
116
|
+
Every effectful op is refused and no skill can be approved. Set
|
|
117
|
+
<code>SKILLSCRIPT_APPROVAL_PUBLIC_KEY_FILE</code> (and provision a keypair)
|
|
118
|
+
then restart the runtime.
|
|
119
|
+
</div>`;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
el.innerHTML = `<div class="banner banner-secured">
|
|
123
|
+
<strong>🔒 Secured mode</strong> — unapproved skills cannot execute any
|
|
124
|
+
effectful op. Approval requires the operator's key:
|
|
125
|
+
<code>skillfile approve <name></code> at the terminal. The dashboard
|
|
126
|
+
reviews; it does not sign.
|
|
127
|
+
</div>`;
|
|
128
|
+
}
|
|
129
|
+
|
|
81
130
|
// ─── Views ──────────────────────────────────────────────────────────────────
|
|
82
131
|
|
|
132
|
+
// v1.0 Gate #7 — the approval queue. Surfaces every Draft skill awaiting
|
|
133
|
+
// operator approval, each with a glance of its security signals so the operator
|
|
134
|
+
// can triage WHAT to review before opening the body. The "approve" action is
|
|
135
|
+
// deliberately a copyable command, not a button: signing happens at the
|
|
136
|
+
// terminal where the operator's private key lives, never on this process.
|
|
137
|
+
async function renderApprovals() {
|
|
138
|
+
const secured = securedModeOn();
|
|
139
|
+
// The "needs approval" set = every skill the gate refuses (gate_ok === false),
|
|
140
|
+
// excluding intentionally-retired Disabled skills. That's two cases:
|
|
141
|
+
// • Draft skills — never approved.
|
|
142
|
+
// • Approved-but-stale — Approved status with a body the gate rejects
|
|
143
|
+
// (in secured mode: no/legacy/invalid signature — the v1-migration corpus).
|
|
144
|
+
// The 30s poll only sees Approved, so the queue queries Draft + Approved
|
|
145
|
+
// explicitly and filters Approved by gate_ok (now on every skill_list entry).
|
|
146
|
+
let pending = [];
|
|
147
|
+
try {
|
|
148
|
+
const [draftCat, apprCat] = await Promise.all([
|
|
149
|
+
callTool("skill_list", { filter: { audience: "all", status: "Draft" } }),
|
|
150
|
+
callTool("skill_list", { filter: { audience: "all", status: "Approved" } }),
|
|
151
|
+
]);
|
|
152
|
+
const flat = (c) => [...(c.receives ?? []), ...(c.skills ?? []), ...(c.headless ?? [])];
|
|
153
|
+
const drafts = flat(draftCat).map((s) => ({ ...s, _why: "draft" }));
|
|
154
|
+
const stale = flat(apprCat).filter((s) => s.gate_ok === false).map((s) => ({ ...s, _why: "stale" }));
|
|
155
|
+
pending = [...drafts, ...stale];
|
|
156
|
+
} catch (err) {
|
|
157
|
+
return `<h2>Approvals</h2><section><div class="empty">Failed to load the approval queue: ${esc(err.message)}</div></section>`;
|
|
158
|
+
}
|
|
159
|
+
const staleCount = pending.filter((s) => s._why === "stale").length;
|
|
160
|
+
const intro = secured
|
|
161
|
+
? `<p>Secured mode is <strong>ON</strong>. Each skill below is inert — no
|
|
162
|
+
effectful op will run until it is approved. ${staleCount > 0 ? `${staleCount} carry a stale/legacy approval (e.g. a pre-secured v1 stamp) and need re-signing — the fastest path is <code>skillfile reapprove --apply</code> at a terminal.` : ""}
|
|
163
|
+
Review the source, then sign at a terminal that can read your approval key.</p>`
|
|
164
|
+
: `<p>Secured mode is <strong>OFF</strong> — Draft skills can be approved
|
|
165
|
+
in-page from their detail view (the runtime self-stamps). Turn on secured
|
|
166
|
+
mode (<code>SKILLSCRIPT_SECURED_MODE=true</code>) to require key-signed
|
|
167
|
+
approval. The queue below still shows what's pending review.</p>`;
|
|
168
|
+
if (pending.length === 0) {
|
|
169
|
+
return `<h2>Approvals</h2><section>${intro}<div class="empty">Nothing awaiting approval — every skill is Approved (and valid) or Disabled.</div></section>`;
|
|
170
|
+
}
|
|
171
|
+
// Fetch each skill's source so we can show its security-signal summary inline.
|
|
172
|
+
// skill_read may fail (load() throws) — degrade that row to "source N/A".
|
|
173
|
+
const sources = await Promise.all(
|
|
174
|
+
pending.map((s) => callTool("skill_read", { name: s.name }).then((r) => r?.source ?? null).catch(() => null)),
|
|
175
|
+
);
|
|
176
|
+
const rows = pending.map((s, i) => {
|
|
177
|
+
const src = sources[i];
|
|
178
|
+
const sig = src ? collectSecuritySignals(src) : null;
|
|
179
|
+
const sigBadges = sig ? approvalSignalBadges(sig) : `<span class="empty">source N/A</span>`;
|
|
180
|
+
const whyBadge = s._why === "stale"
|
|
181
|
+
? `<span class="badge error" title="Approved status, but the body lacks a valid signature">re-approval needed</span>`
|
|
182
|
+
: `<span class="badge Draft">Draft</span>`;
|
|
183
|
+
const cmd = approveCommand(s.name);
|
|
184
|
+
return `
|
|
185
|
+
<tr>
|
|
186
|
+
<td><a href="#skill/${encodeURIComponent(s.name)}"><strong>${esc(s.name)}</strong></a> ${whyBadge}<br>
|
|
187
|
+
<span style="color:#6c757d;font-size:0.85em;">${esc(s.description ?? "—")}</span></td>
|
|
188
|
+
<td>${sigBadges}</td>
|
|
189
|
+
<td>
|
|
190
|
+
<a href="#skill/${encodeURIComponent(s.name)}">Review →</a>
|
|
191
|
+
${secured ? `<div class="approve-cmd"><code>${esc(cmd)}</code><button class="copy-btn" onclick="copyText('${esc(cmd).replace(/'/g, "\\'")}', this)">copy</button></div>` : ""}
|
|
192
|
+
</td>
|
|
193
|
+
</tr>`;
|
|
194
|
+
}).join("");
|
|
195
|
+
return `
|
|
196
|
+
<h2>Approvals (${pending.length})</h2>
|
|
197
|
+
<section>
|
|
198
|
+
${intro}
|
|
199
|
+
<table>
|
|
200
|
+
<thead><tr><th>Skill</th><th>Security signals</th><th>Action</th></tr></thead>
|
|
201
|
+
<tbody>${rows}</tbody>
|
|
202
|
+
</table>
|
|
203
|
+
</section>
|
|
204
|
+
`;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Compact security-signal badges for the queue triage column.
|
|
208
|
+
function approvalSignalBadges(sig) {
|
|
209
|
+
const b = [];
|
|
210
|
+
if (sig.writeOps > 0) b.push(`<span class="badge error" title="mutation ops">${sig.writeOps} write</span>`);
|
|
211
|
+
if (sig.unsafeShell > 0) b.push(`<span class="badge error" title="unsafe bash">${sig.unsafeShell} unsafe</span>`);
|
|
212
|
+
if (sig.approvedOps > 0) b.push(`<span class="badge error" title="per-op author authorization">${sig.approvedOps} approved=</span>`);
|
|
213
|
+
if (sig.autonomous) b.push(`<span class="badge error" title="bypasses human-in-loop"># Autonomous</span>`);
|
|
214
|
+
if (sig.shellOps > 0) b.push(`<span class="badge Draft" title="shell ops${sig.shellBinaries.length ? `: ${sig.shellBinaries.join(", ")}` : ""}">${sig.shellOps} shell</span>`);
|
|
215
|
+
if (sig.wakeAddresses > 0) b.push(`<span class="badge Draft" title="@session wake">${sig.wakeAddresses} wake</span>`);
|
|
216
|
+
if (sig.cronTriggers > 0) b.push(`<span class="badge" title="autonomous cron fire">${sig.cronTriggers} cron</span>`);
|
|
217
|
+
return b.length ? b.join(" ") : `<span class="badge ok">no signals</span>`;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
window.copyText = function (text, btn) {
|
|
221
|
+
const done = () => { if (btn) { const o = btn.textContent; btn.textContent = "copied"; setTimeout(() => { btn.textContent = o; }, 1200); } };
|
|
222
|
+
if (navigator.clipboard?.writeText) {
|
|
223
|
+
navigator.clipboard.writeText(text).then(done).catch(() => fallbackCopy(text, done));
|
|
224
|
+
} else {
|
|
225
|
+
fallbackCopy(text, done);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
function fallbackCopy(text, done) {
|
|
229
|
+
const ta = document.createElement("textarea");
|
|
230
|
+
ta.value = text; ta.style.position = "fixed"; ta.style.opacity = "0";
|
|
231
|
+
document.body.appendChild(ta); ta.select();
|
|
232
|
+
try { document.execCommand("copy"); done(); } catch { /* no-op */ }
|
|
233
|
+
document.body.removeChild(ta);
|
|
234
|
+
}
|
|
235
|
+
|
|
83
236
|
function renderOverview() {
|
|
84
237
|
const m = state.metrics;
|
|
85
238
|
const totalFires = m?.totalFires ?? 0;
|
|
@@ -198,13 +351,7 @@ async function renderSkillDetail(name) {
|
|
|
198
351
|
<h2>Status</h2>
|
|
199
352
|
<p>${esc(metadata.description ?? "(no description)")}</p>
|
|
200
353
|
${approvalBanner}
|
|
201
|
-
|
|
202
|
-
${["Draft", "Approved", "Disabled"].filter((s) => s !== metadata.status || (s === "Approved" && approval && !approval.gate_ok)).map((s) => `
|
|
203
|
-
<button class="${s === "Disabled" ? "danger" : ""}" onclick="updateStatus('${esc(name)}','${s}')">
|
|
204
|
-
${s === "Approved" && metadata.status === "Approved" ? "Re-approve (refresh token)" : `Transition to ${s}`}
|
|
205
|
-
</button>
|
|
206
|
-
`).join("")}
|
|
207
|
-
</div>
|
|
354
|
+
${renderStatusActions(name, metadata, approval)}
|
|
208
355
|
</section>
|
|
209
356
|
|
|
210
357
|
${source ? renderSecuritySignalsPanel(source) : ""}
|
|
@@ -295,6 +442,46 @@ async function renderSkillDetail(name) {
|
|
|
295
442
|
}
|
|
296
443
|
}
|
|
297
444
|
|
|
445
|
+
// Status-transition controls for the skill detail view. The subtlety is
|
|
446
|
+
// Approved: in SECURED mode the runtime can't self-stamp (skill_status →
|
|
447
|
+
// Approved throws ApprovalRejectedError — the key lives at the operator's
|
|
448
|
+
// terminal, not on this process), so we surface the `skillfile approve`
|
|
449
|
+
// command instead of a button that would only error. Draft/Disabled never
|
|
450
|
+
// grant effects, so they stay one-click in both modes.
|
|
451
|
+
function renderStatusActions(name, metadata, approval) {
|
|
452
|
+
const secured = securedModeOn();
|
|
453
|
+
const status = metadata.status;
|
|
454
|
+
const staleApproved = status === "Approved" && approval && !approval.gate_ok;
|
|
455
|
+
|
|
456
|
+
// Non-approval transitions (revoke / demote) — always plain buttons.
|
|
457
|
+
const buttons = ["Draft", "Disabled"]
|
|
458
|
+
.filter((s) => s !== status)
|
|
459
|
+
.map((s) => `<button class="${s === "Disabled" ? "danger" : ""}" onclick="updateStatus('${esc(name)}','${esc(s)}')">Transition to ${s}</button>`)
|
|
460
|
+
.join("");
|
|
461
|
+
|
|
462
|
+
// The Approved action. Shown when not-yet-Approved OR stale (needs re-stamp).
|
|
463
|
+
const needsApprove = status !== "Approved" || staleApproved;
|
|
464
|
+
let approveBlock = "";
|
|
465
|
+
if (needsApprove) {
|
|
466
|
+
if (secured) {
|
|
467
|
+
const cmd = approveCommand(name);
|
|
468
|
+
approveBlock = `
|
|
469
|
+
<div class="approve-panel">
|
|
470
|
+
<div class="approve-panel-head">${staleApproved ? "Re-approve (body changed since signing)" : "Approve this skill"}</div>
|
|
471
|
+
<p>Secured mode: approval is signed with the operator's key at a terminal — not from this dashboard. Review the source below, then run:</p>
|
|
472
|
+
<div class="approve-cmd"><code>${esc(cmd)}</code><button class="copy-btn" onclick="copyText('${esc(cmd).replace(/'/g, "\\'")}', this)">copy</button></div>
|
|
473
|
+
</div>`;
|
|
474
|
+
} else {
|
|
475
|
+
approveBlock = `<button onclick="updateStatus('${esc(name)}','Approved')">${staleApproved ? "Re-approve (refresh token)" : "Transition to Approved"}</button>`;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
return `<div style="margin-top: 12px; display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-start;">
|
|
480
|
+
${buttons}
|
|
481
|
+
${!secured ? approveBlock : ""}
|
|
482
|
+
</div>${secured ? approveBlock : ""}`;
|
|
483
|
+
}
|
|
484
|
+
|
|
298
485
|
function renderTriggers() {
|
|
299
486
|
return `
|
|
300
487
|
<h2>Triggers</h2>
|
|
@@ -787,6 +974,11 @@ async function renderCurrentView() {
|
|
|
787
974
|
}
|
|
788
975
|
|
|
789
976
|
currentView = hash;
|
|
977
|
+
if (hash === "approvals") {
|
|
978
|
+
main.innerHTML = "Loading…";
|
|
979
|
+
main.innerHTML = await renderApprovals();
|
|
980
|
+
return;
|
|
981
|
+
}
|
|
790
982
|
switch (hash) {
|
|
791
983
|
case "overview": main.innerHTML = renderOverview(); break;
|
|
792
984
|
case "skills": main.innerHTML = renderSkills(); break;
|
|
@@ -12,12 +12,14 @@
|
|
|
12
12
|
<nav id="nav">
|
|
13
13
|
<a href="#overview">Overview</a>
|
|
14
14
|
<a href="#skills">Skills</a>
|
|
15
|
+
<a href="#approvals">Approvals</a>
|
|
15
16
|
<a href="#triggers">Triggers</a>
|
|
16
17
|
<a href="#connectors">Connectors</a>
|
|
17
18
|
<a href="#security">Security</a>
|
|
18
19
|
</nav>
|
|
19
20
|
<div id="poll-status" aria-live="polite"></div>
|
|
20
21
|
</header>
|
|
22
|
+
<div id="secured-banner"></div>
|
|
21
23
|
<main id="main"></main>
|
|
22
24
|
<footer>
|
|
23
25
|
<small>Polling every 30s · localhost-only</small>
|
|
@@ -136,3 +136,45 @@ pre.skill-source { white-space: pre-wrap; word-break: break-word; }
|
|
|
136
136
|
border-left-color: #c4cad0;
|
|
137
137
|
}
|
|
138
138
|
.security-signals small { color: #6c757d; }
|
|
139
|
+
|
|
140
|
+
/* v1.0 Gate #7 — secured-mode banner + approval queue */
|
|
141
|
+
#secured-banner:empty { display: none; }
|
|
142
|
+
.banner {
|
|
143
|
+
margin: 0 24px 16px;
|
|
144
|
+
padding: 10px 14px;
|
|
145
|
+
border-radius: 6px;
|
|
146
|
+
font-size: 13px;
|
|
147
|
+
line-height: 1.5;
|
|
148
|
+
}
|
|
149
|
+
.banner code { background: rgba(0,0,0,0.06); padding: 1px 5px; border-radius: 3px; }
|
|
150
|
+
.banner-secured { background: #eef4ff; border: 1px solid #b9ccf0; color: #1a3a6b; }
|
|
151
|
+
.banner-error { background: #fdecea; border: 1px solid #f0b4ad; color: #8b1d1d; }
|
|
152
|
+
|
|
153
|
+
.approve-panel {
|
|
154
|
+
background: #f6f8fa;
|
|
155
|
+
border: 1px solid #e6e8eb;
|
|
156
|
+
border-radius: 6px;
|
|
157
|
+
padding: 12px 14px;
|
|
158
|
+
margin-top: 4px;
|
|
159
|
+
max-width: 640px;
|
|
160
|
+
}
|
|
161
|
+
.approve-panel-head { font-weight: 600; margin-bottom: 4px; }
|
|
162
|
+
.approve-panel p { margin: 4px 0 8px; color: #4a5158; font-size: 0.92em; }
|
|
163
|
+
.approve-cmd {
|
|
164
|
+
display: flex;
|
|
165
|
+
align-items: center;
|
|
166
|
+
gap: 8px;
|
|
167
|
+
margin-top: 4px;
|
|
168
|
+
}
|
|
169
|
+
.approve-cmd code {
|
|
170
|
+
background: #1a1d21;
|
|
171
|
+
color: #e6e8eb;
|
|
172
|
+
padding: 6px 10px;
|
|
173
|
+
border-radius: 4px;
|
|
174
|
+
font-size: 12px;
|
|
175
|
+
flex: 0 1 auto;
|
|
176
|
+
}
|
|
177
|
+
.copy-btn {
|
|
178
|
+
font-size: 11px;
|
|
179
|
+
padding: 4px 8px;
|
|
180
|
+
}
|
package/dist/errors.d.ts
CHANGED
|
@@ -35,6 +35,18 @@ export declare class ApprovalRejectedError extends ConnectorError {
|
|
|
35
35
|
readonly reason: string;
|
|
36
36
|
constructor(skill_name: string, reason: string, implementation: string);
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* v1.0 Gate #7 — an effectful op (or output-routing delivery) was reached in
|
|
40
|
+
* secured mode without an authorized approval. Complete-mediation refusal at
|
|
41
|
+
* the dispatch choke: the body never passed signature verification (source-mode,
|
|
42
|
+
* Draft, forged, or unapproved), so it cannot egress or mutate.
|
|
43
|
+
*/
|
|
44
|
+
export declare class SecuredModeEffectError extends Error {
|
|
45
|
+
readonly opKind: string;
|
|
46
|
+
readonly target?: string | undefined;
|
|
47
|
+
readonly remediation: string;
|
|
48
|
+
constructor(opKind: string, target?: string | undefined, remediation?: string);
|
|
49
|
+
}
|
|
38
50
|
export declare class VersionNotFoundError extends ConnectorError {
|
|
39
51
|
readonly skill_name: string;
|
|
40
52
|
readonly version: string;
|
|
@@ -133,6 +145,19 @@ export declare class ShellBinaryNotAllowedError extends OpError {
|
|
|
133
145
|
readonly allowlist: string[] | undefined;
|
|
134
146
|
constructor(binary: string, allowlist: string[] | undefined, target?: string);
|
|
135
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* v1.0 Gate #7 — a file_read/file_write op targeted a path outside the operator's
|
|
150
|
+
* filesystem allowlist (the third allowlist; mirrors ShellBinaryNotAllowedError).
|
|
151
|
+
* DEFAULT-DENY: an unset allowlist refuses all file ops. The path is canonicalized
|
|
152
|
+
* (symlinks + `..` resolved) before the check, so the rejected path is the REAL
|
|
153
|
+
* resolved one — `allowed/../../etc/key` can't sneak through.
|
|
154
|
+
*/
|
|
155
|
+
export declare class FilePathNotAllowedError extends OpError {
|
|
156
|
+
readonly opName: "file_read" | "file_write";
|
|
157
|
+
readonly path: string;
|
|
158
|
+
readonly allowlist: string[] | undefined;
|
|
159
|
+
constructor(opName: "file_read" | "file_write", path: string, allowlist: string[] | undefined, target?: string);
|
|
160
|
+
}
|
|
136
161
|
/**
|
|
137
162
|
* A composition reference (`&` data-skill inline, `$ execute_skill`, or
|
|
138
163
|
* `# Templates:` delivery) couldn't be resolved at execute time because
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|