wicked-crew 0.14.2 → 0.15.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.
Files changed (50) hide show
  1. package/dist/api/routes.d.ts +33 -0
  2. package/dist/api/routes.d.ts.map +1 -1
  3. package/dist/api/routes.js +53 -1
  4. package/dist/api/routes.js.map +1 -1
  5. package/dist/api/server.d.ts.map +1 -1
  6. package/dist/api/server.js +10 -0
  7. package/dist/api/server.js.map +1 -1
  8. package/dist/core/adapter.d.ts +6 -0
  9. package/dist/core/adapter.d.ts.map +1 -1
  10. package/dist/core/adapter.js +11 -0
  11. package/dist/core/adapter.js.map +1 -1
  12. package/dist/core/deliver-triage.d.ts +9 -1
  13. package/dist/core/deliver-triage.d.ts.map +1 -1
  14. package/dist/core/deliver-triage.js +9 -0
  15. package/dist/core/deliver-triage.js.map +1 -1
  16. package/dist/core/estate-mcp-client.d.ts +9 -0
  17. package/dist/core/estate-mcp-client.d.ts.map +1 -1
  18. package/dist/core/estate-mcp-client.js +12 -8
  19. package/dist/core/estate-mcp-client.js.map +1 -1
  20. package/dist/mcp/broker.d.ts +15 -0
  21. package/dist/mcp/broker.d.ts.map +1 -1
  22. package/dist/mcp/broker.js +87 -1
  23. package/dist/mcp/broker.js.map +1 -1
  24. package/dist/mcp/classify.d.ts +3 -0
  25. package/dist/mcp/classify.d.ts.map +1 -1
  26. package/dist/mcp/classify.js +3 -0
  27. package/dist/mcp/classify.js.map +1 -1
  28. package/dist/mcp/estate-relay.d.ts +160 -0
  29. package/dist/mcp/estate-relay.d.ts.map +1 -0
  30. package/dist/mcp/estate-relay.js +274 -0
  31. package/dist/mcp/estate-relay.js.map +1 -0
  32. package/dist/mcp/registry.d.ts.map +1 -1
  33. package/dist/mcp/registry.js +4 -1
  34. package/dist/mcp/registry.js.map +1 -1
  35. package/dist/studio/assets/index-BEFOUR6c.css +32 -0
  36. package/dist/studio/assets/index-BV1Wz0_j.js +831 -0
  37. package/dist/studio/editors/wicked-deck/editor.json +1 -1
  38. package/dist/studio/editors/wicked-deck/index.html +1 -1
  39. package/dist/studio/editors/wicked-doc/editor.json +1 -1
  40. package/dist/studio/editors/wicked-doc/index.html +1 -1
  41. package/dist/studio/editors/wicked-page/editor.json +1 -1
  42. package/dist/studio/editors/wicked-page/index.html +1 -1
  43. package/dist/studio/editors/wicked-video/editor.json +1 -1
  44. package/dist/studio/editors/wicked-video/index.html +1 -1
  45. package/dist/studio/index.html +2 -2
  46. package/dist/studio/testid-inventory.json +160 -53
  47. package/endpoint-manifest.json +1 -1
  48. package/package.json +3 -3
  49. package/dist/studio/assets/index-BjH2WWnH.js +0 -791
  50. package/dist/studio/assets/index-GSpTTvH0.css +0 -32
@@ -25,6 +25,11 @@
25
25
  * be written is refused and its result withheld. The record then rides `/ws`
26
26
  * (`mcpCallCompleted`) and the bus (`wicked.crew.mcp_call.completed`).
27
27
  *
28
+ * The reserved server `estate` is not a registered upstream: `mcp:estate/<tool>` is the estate
29
+ * relay (wicked-core#1018, `estate-relay.ts`), a container seat's only way to its run's estate.
30
+ * Its judge is the relay's own (the token resolved to its unit by the engine, a fixed tool list,
31
+ * the run's scope); budget, record and publish are the steps above.
32
+ *
28
33
  * A call that ran and then could not be recorded HAS happened upstream; refusing it withholds the
29
34
  * result from the worker, it does not undo the side effect. The record is written after the call
30
35
  * because the span it records (timing, status, bytes) only exists then.
@@ -34,6 +39,7 @@ import type { McpEngineGate } from '../core/adapter.js';
34
39
  import type { McpCallRecordSink } from './call-records.js';
35
40
  import { type Invoker } from './invoke.js';
36
41
  import type { McpRegistry } from './registry.js';
42
+ import { type EstateRelay } from './estate-relay.js';
37
43
  /** The bus event each call record rides. */
38
44
  export declare const MCP_CALL_COMPLETED = "wicked.crew.mcp_call.completed";
39
45
  export declare const DEFAULT_MCP_CALL_BUDGET = 200;
@@ -63,6 +69,8 @@ export interface McpBrokerDeps {
63
69
  budgetPerUnit?: number;
64
70
  timeoutMs?: number;
65
71
  log?: (message: string) => void;
72
+ /** The estate relay behind `mcp:estate/<tool>` (wicked-core#1018); absent = those calls are refused. */
73
+ estate?: EstateRelay;
66
74
  }
67
75
  export declare function budgetFromEnv(env?: NodeJS.ProcessEnv): number;
68
76
  export declare class McpBroker {
@@ -76,6 +84,13 @@ export declare class McpBroker {
76
84
  private readonly breakers;
77
85
  constructor(deps: McpBrokerDeps);
78
86
  call(body: McpCallBody): Promise<McpBrokerAnswer>;
87
+ /**
88
+ * `mcp:estate/<tool>`: the estate relay (module doc of `estate-relay.ts`). Resolve the token to
89
+ * its unit and scope, refuse what the relay never makes, spend the unit's budget, run the call on
90
+ * the host's estate, bound and scrub its result, then record it like any brokered call. A landed
91
+ * proposal is also handed to the relay's audit hook.
92
+ */
93
+ private callEstate;
79
94
  private record;
80
95
  /**
81
96
  * Answer a call that does not hand a result back, after recording it. A refusal is a refusal
@@ -1 +1 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/mcp/broker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EACV,WAAW,EAEX,cAAc,EACd,aAAa,EACb,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAA6D,KAAK,OAAO,EAA2B,MAAM,aAAa,CAAC;AAE/H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AA2BlC,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CASzD,CAAC;AAEF,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,GAAG,aAAa,CAAA;KAAE,CAAC;CAClF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;IAC1D,kGAAkG;IAClG,MAAM,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAkBD,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAI1E;AAED,qBAAa,SAAS;IASR,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;gBAE/B,IAAI,EAAE,aAAa;IAQ1C,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IA+JvD,OAAO,CAAC,MAAM;IAmCd;;;;OAIG;YACW,MAAM;IAkCpB,OAAO,CAAC,OAAO;CAShB"}
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/mcp/broker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAIH,OAAO,KAAK,EACV,WAAW,EAEX,cAAc,EACd,aAAa,EACb,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAA6D,KAAK,OAAO,EAA2B,MAAM,aAAa,CAAC;AAE/H,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAyE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE5H,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AA2BlC,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CASzD,CAAC;AAEF,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,GAAG,aAAa,CAAA;KAAE,CAAC;CAClF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,CAAC,CAAC;IAC1D,kGAAkG;IAClG,MAAM,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,wGAAwG;IACxG,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAkBD,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAI1E;AAED,qBAAa,SAAS;IASR,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;gBAE/B,IAAI,EAAE,aAAa;IAQ1C,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAgKvD;;;;;OAKG;YACW,UAAU;IAmExB,OAAO,CAAC,MAAM;IAmCd;;;;OAIG;YACW,MAAM;IAkCpB,OAAO,CAAC,OAAO;CAShB"}
@@ -25,15 +25,21 @@
25
25
  * be written is refused and its result withheld. The record then rides `/ws`
26
26
  * (`mcpCallCompleted`) and the bus (`wicked.crew.mcp_call.completed`).
27
27
  *
28
+ * The reserved server `estate` is not a registered upstream: `mcp:estate/<tool>` is the estate
29
+ * relay (wicked-core#1018, `estate-relay.ts`), a container seat's only way to its run's estate.
30
+ * Its judge is the relay's own (the token resolved to its unit by the engine, a fixed tool list,
31
+ * the run's scope); budget, record and publish are the steps above.
32
+ *
28
33
  * A call that ran and then could not be recorded HAS happened upstream; refusing it withholds the
29
34
  * result from the worker, it does not undo the side effect. The record is written after the call
30
35
  * because the span it records (timing, status, bytes) only exists then.
31
36
  */
32
37
  import { randomBytes } from 'node:crypto';
33
- import { parseMcpSubject } from './classify.js';
38
+ import { ESTATE_SERVER, parseMcpSubject } from './classify.js';
34
39
  import { classifyUpstreamError, invokeMcpTool, MCP_CALL_TIMEOUT_MS } from './invoke.js';
35
40
  import { scrubResult } from './redact.js';
36
41
  import { scrubSecrets } from './secrets.js';
42
+ import { ESTATE_PROPOSAL_TOOL, proposalIdOf, rpcErrorEnvelope, scopeEstateArgs } from './estate-relay.js';
37
43
  /** The bus event each call record rides. */
38
44
  export const MCP_CALL_COMPLETED = 'wicked.crew.mcp_call.completed';
39
45
  export const DEFAULT_MCP_CALL_BUDGET = 200;
@@ -80,6 +86,8 @@ export class McpBroker {
80
86
  if (parts === null)
81
87
  return { status: 400, body: { error: `subject must be mcp:<server>/<tool> (got ${JSON.stringify(body.subject)})`, code: 'bad_request' } };
82
88
  const span = { start: this.now(), spanId: randomBytes(8).toString('hex'), subject: body.subject, verdict: null, kind: null, retries: 0, bytesOut: 0 };
89
+ if (parts.server === ESTATE_SERVER)
90
+ return this.callEstate(span, body, parts.tool);
83
91
  // ── 1-3. Resolve and judge ──────────────────────────────────────────────────────────────
84
92
  const gate = this.deps.engine();
85
93
  if (gate === null) {
@@ -239,6 +247,84 @@ export class McpBroker {
239
247
  this.publish(record);
240
248
  return { status: 200, body: { outcome: 'ok', subject: body.subject, callId: span.spanId, result: scrubbed, ruleIds: verdict.ruleIds } };
241
249
  }
250
+ /**
251
+ * `mcp:estate/<tool>`: the estate relay (module doc of `estate-relay.ts`). Resolve the token to
252
+ * its unit and scope, refuse what the relay never makes, spend the unit's budget, run the call on
253
+ * the host's estate, bound and scrub its result, then record it like any brokered call. A landed
254
+ * proposal is also handed to the relay's audit hook.
255
+ */
256
+ async callEstate(span, body, tool) {
257
+ const relay = this.deps.estate;
258
+ if (relay === undefined) {
259
+ return this.refuse(span, 'guard_error', 'guard_error', 'broker:estate', [], 'this daemon has no estate relay', 'continue without estate; report it if it persists');
260
+ }
261
+ let scope;
262
+ try {
263
+ scope = await relay.resolve(body.token);
264
+ }
265
+ catch (err) {
266
+ const msg = message(err);
267
+ if (msg.startsWith('invalid_token'))
268
+ return { status: 401, body: { error: msg, code: 'invalid_token' } };
269
+ if (msg.startsWith('bad_request'))
270
+ return { status: 400, body: { error: msg, code: 'bad_request' } };
271
+ return this.refuse(span, 'guard_error', 'guard_error', 'broker:estate', [], `the token's estate scope could not be read: ${msg}`, 'nothing ran; try again, and report it if it persists');
272
+ }
273
+ if (scope === null) {
274
+ return this.refuse(span, 'guard_error', 'guard_error', 'broker:estate', [], 'the linked engine predates the estate relay (wicked-core-ts has no resolveEstateScope)', 'upgrade the engine; no estate call runs unscoped');
275
+ }
276
+ const write = tool === ESTATE_PROPOSAL_TOOL;
277
+ span.kind = 'mcp-stdio';
278
+ span.verdict = { decision: 'allow', subject: body.subject, class: write ? 'write' : 'read', ruleIds: [], obligations: [], claimId: '', unit: scope.unit };
279
+ const refused = relay.refusal(tool, scope);
280
+ if (refused !== null)
281
+ return this.refuse(span, 'denied', 'deny', refused.ruleId, [refused.ruleId], refused.reason, refused.remedy, null, null);
282
+ const unitKey = `${scope.unit.runId}:${scope.unit.ord}:${scope.unit.attempt}`;
283
+ const used = this.used.get(unitKey) ?? 0;
284
+ if (used >= this.budget) {
285
+ return this.refuse(span, 'budget_exhausted', 'deny', 'budget', [], `this unit has made its ${this.budget} MCP calls`, 'finish with what you have; the budget is per unit', null, null);
286
+ }
287
+ this.used.delete(unitKey);
288
+ this.used.set(unitKey, used + 1);
289
+ while (this.used.size > BUDGET_UNITS_MAX)
290
+ this.used.delete(this.used.keys().next().value);
291
+ const args = scopeEstateArgs(tool, body.args ?? {}, scope);
292
+ let result;
293
+ try {
294
+ const answer = await relay.run({ tool, args, scope, timeoutMs: relay.timeoutMs });
295
+ result = 'rpcError' in answer ? rpcErrorEnvelope(answer.rpcError) : answer.result;
296
+ }
297
+ catch (err) {
298
+ const failure = classifyUpstreamError(err);
299
+ const timedOut = /did not answer .* within/.test(failure.message);
300
+ return this.refuse(span, 'upstream_error', 'allow', 'broker:estate', [], `mcp:estate/${tool} failed: ${failure.message}`, write ? 'keep the proposal in your output; it may or may not have landed' : 'continue without it, or try again later', timedOut ? 'timeout' : failure.errorClass, null);
301
+ }
302
+ const scrubbed = scrubResult(result, []);
303
+ const raw = JSON.stringify(scrubbed);
304
+ span.bytesOut = Buffer.byteLength(raw, 'utf8');
305
+ if (span.bytesOut > relay.maxResultBytes) {
306
+ return this.refuse(span, 'withheld', 'deny', 'broker:estate-bound', ['estate:result-bound'], `mcp:estate/${tool} answered ${span.bytesOut} bytes, over the relay's ${relay.maxResultBytes}-byte bound`, 'narrow the call (a lower limit or depth, a narrower query), or page it with cursor', null, null);
307
+ }
308
+ const record = this.record(span, 'ok', 'allow', 'broker:estate', [], scrubbed['isError'] === true ? 'tool_error' : null, null);
309
+ try {
310
+ await this.deps.records.append(record);
311
+ }
312
+ catch (err) {
313
+ this.deps.log?.(`[mcp] the call record for ${body.subject} could not be written (${message(err)}); its result is withheld`);
314
+ return {
315
+ status: OUTCOME_STATUS.guard_error,
316
+ body: { outcome: 'guard_error', subject: body.subject, callId: null, ruleIds: [], reason: 'the call could not be recorded (D-3); its result is withheld', remedy: write ? 'the proposal may have landed; keep it in your output' : 'the call ran; its result is not shown' },
317
+ };
318
+ }
319
+ this.publish(record);
320
+ if (write) {
321
+ const proposalId = proposalIdOf(scrubbed);
322
+ const kindType = typeof args['kind_type'] === 'string' ? args['kind_type'] : '';
323
+ if (proposalId !== null)
324
+ relay.landed({ ...scope.unit, proposalId, kindType, callId: span.spanId });
325
+ }
326
+ return { status: 200, body: { outcome: 'ok', subject: body.subject, callId: span.spanId, result: scrubbed, ruleIds: [] } };
327
+ }
242
328
  record(span, outcome, decision, by, ruleIds, errorClass, claimId) {
243
329
  const end = this.now();
244
330
  const v = span.verdict;
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/mcp/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/mcp/broker.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,9 @@
14
14
  import type { McpRestMapping, McpToolAnnotations, McpToolClass } from '../core/types.js';
15
15
  /** A server name: a lowercase token that is safe inside `mcp:<server>/<tool>` and a keychain account. */
16
16
  export declare const MCP_SERVER_NAME_RE: RegExp;
17
+ /** The reserved server name of the broker's estate relay (wicked-core#1018, `estate-relay.ts`):
18
+ * `mcp:estate/<tool>` never reaches a registered server, and no server may be saved under it. */
19
+ export declare const ESTATE_SERVER = "estate";
17
20
  export declare function mcpSubject(server: string, tool: string): string;
18
21
  /** `mcp:<server>/<tool>` → its parts, or `null` for anything else. */
19
22
  export declare function parseMcpSubject(subject: string): {
@@ -1 +1 @@
1
- {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/mcp/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEzF,yGAAyG;AACzG,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAE/D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQxF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,GAAG,YAAY,CAMpF;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,YAAY,CAErG;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAcD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,qGAAqG;IACrG,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,GAAE,gBAAgB,GAAG,IAAW,GAAG,MAAM,CAepG"}
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/mcp/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEzF,yGAAyG;AACzG,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAE/D;kGACkG;AAClG,eAAO,MAAM,aAAa,WAAW,CAAC;AAEtC,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQxF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,GAAG,YAAY,CAMpF;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,YAAY,CAErG;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAcD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,qGAAqG;IACrG,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,GAAE,gBAAgB,GAAG,IAAW,GAAG,MAAM,CAepG"}
@@ -14,6 +14,9 @@
14
14
  import { createHash } from 'node:crypto';
15
15
  /** A server name: a lowercase token that is safe inside `mcp:<server>/<tool>` and a keychain account. */
16
16
  export const MCP_SERVER_NAME_RE = /^[a-z0-9][a-z0-9_-]{0,62}$/;
17
+ /** The reserved server name of the broker's estate relay (wicked-core#1018, `estate-relay.ts`):
18
+ * `mcp:estate/<tool>` never reaches a registered server, and no server may be saved under it. */
19
+ export const ESTATE_SERVER = 'estate';
17
20
  export function mcpSubject(server, tool) {
18
21
  return `mcp:${server}/${tool}`;
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/mcp/classify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/mcp/classify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * The estate relay (wicked-core#1018): a governed worker's estate calls, through the broker.
3
+ *
4
+ * # Why
5
+ *
6
+ * A seat on the container floor has no estate. The host's stores (`memory.db`, the knowledge
7
+ * store, the run's code graph) are SQLite files that must not be mounted into the seat's Linux VM
8
+ * (WAL `-shm` across the Docker Desktop file share, with the daemon writing the same file from the
9
+ * host, is a corruption risk), the seat image ships no `wicked-estate-mcp`, and the container
10
+ * passes only the variables the carrier set, so no store pin reaches it. Garden's estate shim
11
+ * therefore failed closed in every container seat: no blast radius, hotspots or recall, and no
12
+ * capture proposal (run b445).
13
+ *
14
+ * The seat already has one way out: the broker, `POST /api/v1/mcp/call {token, subject, args}`,
15
+ * reached through its gateway with a token bound to its unit. So the shim sends its estate calls
16
+ * there as the reserved subject `mcp:estate/<tool>`, and this module answers them on the host.
17
+ *
18
+ * # What it allows, and how it is scoped
19
+ *
20
+ * - **Who**: the unit the token is bound to, resolved by the engine (`Core.resolveEstateScope`),
21
+ * never anything the worker sends. An unknown or dead token is `invalid_token` (401).
22
+ * - **What**: the read-only lookups garden's skills use ({@link ESTATE_READ_TOOLS}) and
23
+ * `proposal.submit`, which lands an INERT proposal: nothing is recalled or applied until a human
24
+ * approves it on the review queue. Every other estate tool is refused. The server is spawned
25
+ * `--readonly`, so even a tool missing from this list could not write.
26
+ * - **Which store**: graph lookups open the run's own code graph (the one the engine vouched for
27
+ * and hands a host seat as `WICKED_ESTATE_DB`), and are refused when the run has none; memory,
28
+ * knowledge and proposals use this daemon's stores, as its own memory surface does.
29
+ * - **Which project**: a recall's facet intent and a proposal's facets are set to the run's
30
+ * project and repo (and a project or repo the run does not have is removed), so a worker
31
+ * neither reads another project's faceted memories nor files a proposal under one. Provenance
32
+ * (`run_id`, `run_unit`, `run_agent`) is stamped by the server from the unit, never from args.
33
+ * - **How much**: numeric size arguments are clamped ({@link ARG_CAPS}), each call has a deadline
34
+ * ({@link ESTATE_RELAY_TIMEOUT_MS}), at most {@link ESTATE_RELAY_CONCURRENCY} run at once, and
35
+ * a result over {@link ESTATE_RELAY_MAX_RESULT_BYTES} is withheld with a remedy. The broker's
36
+ * per-unit call budget covers relayed calls too.
37
+ *
38
+ * Every relayed call is recorded like any brokered call (`calls.ndjson`, `/ws`, the bus), and a
39
+ * landed proposal is also written to the audit trail against its run.
40
+ */
41
+ import { type EstateMcpIo } from '../core/estate-mcp-client.js';
42
+ export { ESTATE_SERVER } from './classify.js';
43
+ /** The graph lookups a seat may make (read-only; each reads the run's code graph). */
44
+ export declare const ESTATE_GRAPH_TOOLS: ReadonlySet<string>;
45
+ /** Every read-only tool the relay answers: the graph lookups plus memory and knowledge recall. */
46
+ export declare const ESTATE_READ_TOOLS: ReadonlySet<string>;
47
+ /** The one write: an inert proposal for human review. */
48
+ export declare const ESTATE_PROPOSAL_TOOL = "proposal.submit";
49
+ export declare const ESTATE_RELAY_TIMEOUT_MS = 30000;
50
+ export declare const ESTATE_RELAY_CONCURRENCY = 4;
51
+ export declare const ESTATE_RELAY_MAX_RESULT_BYTES: number;
52
+ /** The upper bound for each numeric size argument a worker may pass; a larger value is lowered. */
53
+ export declare const ARG_CAPS: Readonly<Record<string, number>>;
54
+ /** What the engine resolved a token to (`Core.resolveEstateScope`). */
55
+ export interface EstateUnitScope {
56
+ unit: {
57
+ runId: string;
58
+ ord: number;
59
+ attempt: number;
60
+ phase: string;
61
+ seat: string;
62
+ };
63
+ projectId: string | null;
64
+ repoId: string | null;
65
+ codeGraphDb: string | null;
66
+ }
67
+ /** One relayed call as the estate server answered it: its MCP envelope, or its JSON-RPC error. */
68
+ export type EstateRelayAnswer = {
69
+ result: Record<string, unknown>;
70
+ } | {
71
+ rpcError: {
72
+ code: number | null;
73
+ message: string;
74
+ };
75
+ };
76
+ export interface EstateRelayInvocation {
77
+ tool: string;
78
+ args: Record<string, unknown>;
79
+ scope: EstateUnitScope;
80
+ timeoutMs: number;
81
+ }
82
+ /** Runs one call against the estate server. Throws on a transport fault or the deadline. */
83
+ export type EstateInvoker = (call: EstateRelayInvocation) => Promise<EstateRelayAnswer>;
84
+ /** Why a call is refused before it reaches estate. */
85
+ export interface EstateRefusal {
86
+ ruleId: string;
87
+ reason: string;
88
+ remedy: string;
89
+ }
90
+ export declare function isEstateTool(tool: string): boolean;
91
+ /** Refuse a call the relay never makes, or one the run's scope cannot answer; `null` = relay it. */
92
+ export declare function estateRefusal(tool: string, scope: EstateUnitScope, memoryDb: string, exists?: (p: string) => boolean): EstateRefusal | null;
93
+ /**
94
+ * The arguments estate is actually sent: capped, and scoped to the run (module doc). A worker's own
95
+ * `provenance` is dropped: the server stamps it from the unit.
96
+ *
97
+ * A proposal for a run with no project keeps the worker's own `facets.project` (garden requires
98
+ * one), since there is no run project to set; only `repo` is then the run's.
99
+ */
100
+ export declare function scopeEstateArgs(tool: string, args: Record<string, unknown>, scope: EstateUnitScope): Record<string, unknown>;
101
+ /**
102
+ * The estate server's environment for one relayed call (module doc: which store, whose provenance),
103
+ * built on `base`, the daemon's env as every crew child gets it (`childEnvWithBootEstateDb`).
104
+ */
105
+ export declare function estateRelayEnv(scope: EstateUnitScope, base?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
106
+ /** A counting gate: at most `max` callers hold it at once; the rest wait in order. */
107
+ export declare class Semaphore {
108
+ private readonly max;
109
+ private active;
110
+ private readonly waiters;
111
+ constructor(max: number);
112
+ run<T>(fn: () => Promise<T>): Promise<T>;
113
+ }
114
+ /** The real invocation: a spawn-per-call `wicked-estate-mcp --readonly` with {@link estateRelayEnv}. */
115
+ export declare function defaultEstateInvoker(io?: Pick<EstateMcpIo, 'spawn'>): EstateInvoker;
116
+ /** A landed proposal, for the audit trail (run, unit, the queue id, never the payload). */
117
+ export interface EstateProposalLanded {
118
+ runId: string;
119
+ ord: number;
120
+ attempt: number;
121
+ seat: string;
122
+ proposalId: string;
123
+ kindType: string;
124
+ callId: string;
125
+ }
126
+ export interface EstateRelayDeps {
127
+ /** `Core.resolveEstateScope`, read per call; `null` = the linked engine predates it. */
128
+ resolver: () => ((requestJson: string) => Promise<string>) | null;
129
+ invoke?: EstateInvoker;
130
+ /** The daemon's memory store path (proposals land there). Default {@link resolveMemoryDbPath}. */
131
+ memoryDb?: () => string;
132
+ exists?: (path: string) => boolean;
133
+ timeoutMs?: number;
134
+ concurrency?: number;
135
+ maxResultBytes?: number;
136
+ /** Called once per landed proposal. Never throws into the call. */
137
+ onProposal?: (landed: EstateProposalLanded) => void;
138
+ }
139
+ /** The relay's resolved dependencies, as the broker drives them. */
140
+ export declare class EstateRelay {
141
+ private readonly deps;
142
+ readonly invoke: EstateInvoker;
143
+ readonly timeoutMs: number;
144
+ readonly maxResultBytes: number;
145
+ private readonly gate;
146
+ constructor(deps: EstateRelayDeps);
147
+ /** The token's unit and scope. Throws the engine's `invalid_token:` / `bad_request:` / other errors. */
148
+ resolve(token: string): Promise<EstateUnitScope | null>;
149
+ refusal(tool: string, scope: EstateUnitScope): EstateRefusal | null;
150
+ run(call: EstateRelayInvocation): Promise<EstateRelayAnswer>;
151
+ landed(landed: EstateProposalLanded): void;
152
+ }
153
+ /** The MCP envelope a relayed JSON-RPC error is handed back as: a tool error carrying its code. */
154
+ export declare function rpcErrorEnvelope(error: {
155
+ code: number | null;
156
+ message: string;
157
+ }): Record<string, unknown>;
158
+ /** The proposal id in a `proposal.submit` envelope (`content[0].text` is `{"id": …}`), or `null`. */
159
+ export declare function proposalIdOf(result: Record<string, unknown>): string | null;
160
+ //# sourceMappingURL=estate-relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estate-relay.d.ts","sourceRoot":"","sources":["../../src/mcp/estate-relay.ts"],"names":[],"mappings":"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"}