@calltelemetry/ct-lab-mcp 0.8.125 → 0.8.127

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.
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE7D,0FAA0F;AAC1F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IACtC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1E;AAKD,qBAAa,gBAAiB,YAAW,WAAW;IAGtC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;gBAER,MAAM,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;KAAE;IAE3G,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;CAUvD"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAStD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE7D,0FAA0F;AAC1F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IACtC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACzE,sGAAsG;IACtG,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7E,SAAS,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5E,2FAA2F;IAC3F,YAAY,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/E,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9E,YAAY,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/E,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC/E;AAKD,qBAAa,gBAAiB,YAAW,WAAW;IAGtC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;gBAER,MAAM,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;KAAE;IAEjH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAInD,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAIlD,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrD,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAIpD,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrD,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAI9C,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;CAUvD"}
@@ -1,3 +1,4 @@
1
+ import { handleCreateApplianceClaim, handleDeleteApplianceClaim, handleGetApplianceClaim, handleListApplianceClaims, handlePauseApplianceClaim, handleRenewApplianceClaim, } from "../tools/appliance-claim-tools.js";
1
2
  import { labSshArgv } from "./contract.js";
2
3
  /** Bridge headroom beyond the CLI's own --timeout-seconds for resolution and cleanup. */
3
4
  const RESOLUTION_GRACE_MS = 30_000;
@@ -7,6 +8,24 @@ export class LocalLabExecutor {
7
8
  constructor(bridge) {
8
9
  this.bridge = bridge;
9
10
  }
11
+ claimsList(input) {
12
+ return handleListApplianceClaims(input);
13
+ }
14
+ claimsGet(input) {
15
+ return handleGetApplianceClaim(input);
16
+ }
17
+ claimsCreate(input) {
18
+ return handleCreateApplianceClaim(input);
19
+ }
20
+ claimsRenew(input) {
21
+ return handleRenewApplianceClaim(input);
22
+ }
23
+ claimsDelete(input) {
24
+ return handleDeleteApplianceClaim(input);
25
+ }
26
+ claimsPause(input) {
27
+ return handlePauseApplianceClaim(input);
28
+ }
10
29
  async ssh(input) {
11
30
  if (!input.assetId)
12
31
  throw new Error("LocalLabExecutor requires a resolved assetId; wrap it in ClaimResolvingExecutor to accept claimId");
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/lab-exec/executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAoB7D,yFAAyF;AACzF,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAM,OAAO,gBAAgB;IAGE;IAFpB,QAAQ,GAAG,OAAgB,CAAC;IAErC,YAA6B,MAAoF;QAApF,WAAM,GAAN,MAAM,CAA8E;IAAG,CAAC;IAErH,KAAK,CAAC,GAAG,CAAC,KAAkB;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;QACzI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,mBAAmB,CAAC,CAAC;QAC3G,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/lab-exec/executor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AA4B7D,yFAAyF;AACzF,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAM,OAAO,gBAAgB;IAGE;IAFpB,QAAQ,GAAG,OAAgB,CAAC;IAErC,YAA6B,MAAoF;QAApF,WAAM,GAAN,MAAM,CAA8E;IAAG,CAAC;IAErH,UAAU,CAAC,KAAc;QACvB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,KAAc;QACtB,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAkB;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;QACzI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,mBAAmB,CAAC,CAAC;QAC3G,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF"}
@@ -1,7 +1,16 @@
1
1
  /** Worker-side client for the lab executor behind Cloudflare Tunnel + Access (ADR 0934). */
2
+ import type { CallToolResult } from "../types/mcp.js";
2
3
  import type { LabSshInput } from "./contract.js";
3
4
  import type { LabExecCaller, LabExecOutcome, LabExecutor } from "./executor.js";
4
5
  export declare const LAB_EXEC_PATH = "/v1/lab-exec/ssh";
6
+ /** Read-only claim discovery routes (REL-1961). The zone WAF skip rule allows exactly these paths. */
7
+ export declare const LAB_EXEC_CLAIMS_LIST_PATH = "/v1/lab-exec/claims/list";
8
+ export declare const LAB_EXEC_CLAIMS_GET_PATH = "/v1/lab-exec/claims/get";
9
+ /** Claim mutation routes (REL-1964). The zone WAF skip rule allows exactly these paths. */
10
+ export declare const LAB_EXEC_CLAIMS_CREATE_PATH = "/v1/lab-exec/claims/create";
11
+ export declare const LAB_EXEC_CLAIMS_RENEW_PATH = "/v1/lab-exec/claims/renew";
12
+ export declare const LAB_EXEC_CLAIMS_DELETE_PATH = "/v1/lab-exec/claims/delete";
13
+ export declare const LAB_EXEC_CLAIMS_PAUSE_PATH = "/v1/lab-exec/claims/pause";
5
14
  /** Audit-only; the executor trusts it because only the Worker's service token can reach it. */
6
15
  export declare const LAB_EXEC_CALLER_HEADER = "X-CT-Lab-Caller";
7
16
  export interface RemoteLabExecutorOptions {
@@ -15,5 +24,12 @@ export declare class RemoteLabExecutor implements LabExecutor {
15
24
  readonly location: "remote";
16
25
  constructor(options: RemoteLabExecutorOptions);
17
26
  ssh(input: LabSshInput, caller?: LabExecCaller): Promise<LabExecOutcome>;
27
+ claimsList(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
28
+ claimsGet(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
29
+ claimsCreate(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
30
+ claimsRenew(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
31
+ claimsDelete(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
32
+ claimsPause(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
33
+ private claims;
18
34
  }
19
35
  //# sourceMappingURL=remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/remote.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEhF,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAGxD,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,iBAAkB,YAAW,WAAW;IAGvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;gBAET,OAAO,EAAE,wBAAwB;IAIxD,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;CAwB/E"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/remote.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEhF,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,sGAAsG;AACtG,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAClE,2FAA2F;AAC3F,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AACtE,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AAGtE,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAGxD,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,iBAAkB,YAAW,WAAW;IAGvC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;gBAET,OAAO,EAAE,wBAAwB;IAIxD,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAyB9E,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3E,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI7E,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI5E,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAI7E,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;YAI9D,MAAM;CAmBrB"}
@@ -1,4 +1,14 @@
1
1
  export const LAB_EXEC_PATH = "/v1/lab-exec/ssh";
2
+ /** Read-only claim discovery routes (REL-1961). The zone WAF skip rule allows exactly these paths. */
3
+ export const LAB_EXEC_CLAIMS_LIST_PATH = "/v1/lab-exec/claims/list";
4
+ export const LAB_EXEC_CLAIMS_GET_PATH = "/v1/lab-exec/claims/get";
5
+ /** Claim mutation routes (REL-1964). The zone WAF skip rule allows exactly these paths. */
6
+ export const LAB_EXEC_CLAIMS_CREATE_PATH = "/v1/lab-exec/claims/create";
7
+ export const LAB_EXEC_CLAIMS_RENEW_PATH = "/v1/lab-exec/claims/renew";
8
+ export const LAB_EXEC_CLAIMS_DELETE_PATH = "/v1/lab-exec/claims/delete";
9
+ export const LAB_EXEC_CLAIMS_PAUSE_PATH = "/v1/lab-exec/claims/pause";
10
+ const CLAIMS_TIMEOUT_MS = 30_000;
11
+ const CLAIMS_MUTATION_TIMEOUT_MS = 60_000;
2
12
  /** Audit-only; the executor trusts it because only the Worker's service token can reach it. */
3
13
  export const LAB_EXEC_CALLER_HEADER = "X-CT-Lab-Caller";
4
14
  const TRANSPORT_GRACE_MS = 45_000;
@@ -35,5 +45,43 @@ export class RemoteLabExecutor {
35
45
  ...(body.timedOut ? { timedOut: true } : {}),
36
46
  };
37
47
  }
48
+ claimsList(input, caller) {
49
+ return this.claims(LAB_EXEC_CLAIMS_LIST_PATH, input, caller);
50
+ }
51
+ claimsGet(input, caller) {
52
+ return this.claims(LAB_EXEC_CLAIMS_GET_PATH, input, caller);
53
+ }
54
+ claimsCreate(input, caller) {
55
+ return this.claims(LAB_EXEC_CLAIMS_CREATE_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
56
+ }
57
+ claimsRenew(input, caller) {
58
+ return this.claims(LAB_EXEC_CLAIMS_RENEW_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
59
+ }
60
+ claimsDelete(input, caller) {
61
+ return this.claims(LAB_EXEC_CLAIMS_DELETE_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
62
+ }
63
+ claimsPause(input, caller) {
64
+ return this.claims(LAB_EXEC_CLAIMS_PAUSE_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
65
+ }
66
+ async claims(path, input, caller, timeoutMs = CLAIMS_TIMEOUT_MS) {
67
+ const headers = {
68
+ "content-type": "application/json",
69
+ "CF-Access-Client-Id": this.options.clientId,
70
+ "CF-Access-Client-Secret": this.options.clientSecret,
71
+ };
72
+ if (caller?.identity)
73
+ headers[LAB_EXEC_CALLER_HEADER] = caller.identity;
74
+ const response = await (this.options.fetchImpl ?? fetch)(new URL(path, this.options.url), {
75
+ method: "POST",
76
+ headers,
77
+ body: JSON.stringify(input ?? {}),
78
+ signal: AbortSignal.timeout(timeoutMs),
79
+ });
80
+ const body = (await response.json().catch(() => undefined));
81
+ if (!response.ok || !body || !Array.isArray(body.content)) {
82
+ throw new Error(`lab executor HTTP ${response.status}`);
83
+ }
84
+ return body;
85
+ }
38
86
  }
39
87
  //# sourceMappingURL=remote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lab-exec/remote.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAChD,+FAA+F;AAC/F,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AASlC,MAAM,OAAO,iBAAiB;IAGC;IAFpB,QAAQ,GAAG,QAAiB,CAAC;IAEtC,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAkB,EAAE,MAAsB;QAClD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC5C,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACrD,CAAC;QACF,IAAI,MAAM,EAAE,QAAQ;YAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjG,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,kBAAkB,CAAC;SAC9E,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAwC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lab-exec/remote.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAChD,sGAAsG;AACtG,MAAM,CAAC,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAClE,2FAA2F;AAC3F,MAAM,CAAC,MAAM,2BAA2B,GAAG,4BAA4B,CAAC;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,4BAA4B,CAAC;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AACtE,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,+FAA+F;AAC/F,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AASlC,MAAM,OAAO,iBAAiB;IAGC;IAFpB,QAAQ,GAAG,QAAiB,CAAC;IAEtC,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAkB,EAAE,MAAsB;QAClD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC5C,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACrD,CAAC;QACF,IAAI,MAAM,EAAE,QAAQ;YAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjG,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,GAAG,kBAAkB,CAAC;SAC9E,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAwC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAc,EAAE,MAAsB;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,KAAc,EAAE,MAAsB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,YAAY,CAAC,KAAc,EAAE,MAAsB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7F,CAAC;IAED,WAAW,CAAC,KAAc,EAAE,MAAsB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC5F,CAAC;IAED,YAAY,CAAC,KAAc,EAAE,MAAsB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7F,CAAC;IAED,WAAW,CAAC,KAAc,EAAE,MAAsB;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC5F,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAAc,EAAE,MAAsB,EAAE,SAAS,GAAG,iBAAiB;QACtG,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC5C,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACrD,CAAC;QACF,IAAI,MAAM,EAAE,QAAQ;YAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACxF,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAA+B,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -7,6 +7,8 @@
7
7
  import type { Express } from "express";
8
8
  import { type AccessEnv } from "../access-auth.js";
9
9
  import type { LabExecutor } from "./executor.js";
10
+ /** Kill switch for claim mutations (REL-1964): only the exact value "enabled" allows them. */
11
+ export declare function claimMutationsEnabled(env?: NodeJS.ProcessEnv): boolean;
10
12
  export interface LabExecServerOptions {
11
13
  executor: LabExecutor;
12
14
  access: AccessEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAuC,MAAM,SAAS,CAAC;AAE5E,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAChD;AAWD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CA4C1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAuC,MAAM,SAAS,CAAC;AAE5E,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAuBjD,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEnF;AAsBD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAChD;AAWD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAqH1E"}
@@ -1,7 +1,34 @@
1
1
  import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
2
2
  import { verifyAccess } from "../access-auth.js";
3
3
  import { LabSshInputSchema, labSshCommandSha256 } from "./contract.js";
4
- import { LAB_EXEC_CALLER_HEADER, LAB_EXEC_PATH } from "./remote.js";
4
+ import { CreateApplianceClaimInputSchema, DeleteApplianceClaimInputSchema, GetApplianceClaimInputSchema, ListApplianceClaimsInputSchema, PauseApplianceClaimInputSchema, RenewApplianceClaimInputSchema, } from "../tools/appliance-claim-tools.js";
5
+ import { createToolErrorResult } from "../types/mcp.js";
6
+ import { LAB_EXEC_CALLER_HEADER, LAB_EXEC_CLAIMS_CREATE_PATH, LAB_EXEC_CLAIMS_DELETE_PATH, LAB_EXEC_CLAIMS_GET_PATH, LAB_EXEC_CLAIMS_LIST_PATH, LAB_EXEC_CLAIMS_PAUSE_PATH, LAB_EXEC_CLAIMS_RENEW_PATH, LAB_EXEC_PATH, } from "./remote.js";
7
+ /** Kill switch for claim mutations (REL-1964): only the exact value "enabled" allows them. */
8
+ export function claimMutationsEnabled(env = process.env) {
9
+ return env.LAB_CLAIM_MUTATIONS === "enabled";
10
+ }
11
+ /** Result summary for the audit line: never the output itself, only ok or the structured error code. */
12
+ function auditResult(result) {
13
+ if (result.isError !== true)
14
+ return "ok";
15
+ const code = result.structuredContent?.error?.code;
16
+ return typeof code === "string" ? `error:${code.slice(0, 64)}` : "error";
17
+ }
18
+ /** Claim name for the audit line, from the validated input or, for an auto-named create, the result. */
19
+ function resultClaimName(result) {
20
+ const block = result.content?.[0];
21
+ if (block?.type !== "text")
22
+ return undefined;
23
+ try {
24
+ const parsed = JSON.parse(block.text);
25
+ const name = parsed.claimName ?? (typeof parsed.claim === "string" ? parsed.claim : undefined);
26
+ return typeof name === "string" ? name.slice(0, 253) : undefined;
27
+ }
28
+ catch {
29
+ return undefined;
30
+ }
31
+ }
5
32
  function accessRequest(req) {
6
33
  const headers = new Headers();
7
34
  for (const [name, value] of Object.entries(req.headers)) {
@@ -53,6 +80,69 @@ export function createLabExecServer(options) {
53
80
  res.status(502).json({ error: "canonical lab CLI unavailable" });
54
81
  }
55
82
  });
83
+ // Read-only claim discovery (REL-1961). Same auth and caller audit as ssh; never mutates.
84
+ const claimRoute = (path, event, schema, run, mutation) => {
85
+ app.post(path, async (req, res) => {
86
+ const access = await verifyAccess(accessRequest(req), options.access);
87
+ if (!access.ok) {
88
+ res.status(access.status).json({ error: access.reason });
89
+ return;
90
+ }
91
+ if (options.access.ENVIRONMENT !== "development" && access.kind !== "service_token") {
92
+ res.status(403).json({ error: "the lab executor accepts only the ct-lab-mcp Worker service token" });
93
+ return;
94
+ }
95
+ const parsed = schema.safeParse(req.body ?? {});
96
+ if (!parsed.success) {
97
+ res.status(400).json({ error: parsed.error.errors.map((e) => `${e.path.join(".") || "input"}: ${e.message}`).join("; ") });
98
+ return;
99
+ }
100
+ const handler = options.executor[run];
101
+ if (!handler) {
102
+ res.status(501).json({ error: "claim plane not available on this executor" });
103
+ return;
104
+ }
105
+ const data = parsed.data;
106
+ const audit = {
107
+ event,
108
+ caller: String(req.get(LAB_EXEC_CALLER_HEADER) ?? "unknown").slice(0, 320),
109
+ ...(mutation ? { tool: mutation.tool, dryRun: data.dryRun === true } : {}),
110
+ namespace: data.namespace,
111
+ ...(data.name ? { claimId: data.name } : {}),
112
+ };
113
+ const started = Date.now();
114
+ // A dry run never mutates, so the kill switch only gates real writes.
115
+ if (mutation && data.dryRun !== true && !claimMutationsEnabled()) {
116
+ const disabled = createToolErrorResult("claim_mutations_disabled", "ApplianceClaim mutations are disabled on the lab executor (LAB_CLAIM_MUTATIONS is not 'enabled'); no change was made.", { tool: mutation.tool });
117
+ log({ ...audit, result: "disabled", isError: true, durationMs: Date.now() - started });
118
+ res.json(disabled);
119
+ return;
120
+ }
121
+ try {
122
+ const result = await handler.call(options.executor, parsed.data);
123
+ const claimId = audit.claimId ?? (mutation ? resultClaimName(result) : undefined);
124
+ log({
125
+ ...audit,
126
+ ...(claimId ? { claimId } : {}),
127
+ ...(mutation ? { result: auditResult(result) } : {}),
128
+ isError: result.isError === true,
129
+ durationMs: Date.now() - started,
130
+ });
131
+ res.json(result);
132
+ }
133
+ catch (error) {
134
+ log({ ...audit, ...(mutation ? { result: "unavailable" } : {}), error: error instanceof Error ? error.message : String(error), durationMs: Date.now() - started });
135
+ res.status(502).json({ error: "claim plane unavailable" });
136
+ }
137
+ });
138
+ };
139
+ claimRoute(LAB_EXEC_CLAIMS_LIST_PATH, "lab_exec_claims_list", ListApplianceClaimsInputSchema, "claimsList");
140
+ claimRoute(LAB_EXEC_CLAIMS_GET_PATH, "lab_exec_claims_get", GetApplianceClaimInputSchema, "claimsGet");
141
+ // Claim mutations (REL-1964): same auth, behind the LAB_CLAIM_MUTATIONS kill switch, audited per call.
142
+ claimRoute(LAB_EXEC_CLAIMS_CREATE_PATH, "lab_exec_claims_create", CreateApplianceClaimInputSchema, "claimsCreate", { tool: "create_appliance_claim" });
143
+ claimRoute(LAB_EXEC_CLAIMS_RENEW_PATH, "lab_exec_claims_renew", RenewApplianceClaimInputSchema, "claimsRenew", { tool: "renew_appliance_claim" });
144
+ claimRoute(LAB_EXEC_CLAIMS_DELETE_PATH, "lab_exec_claims_delete", DeleteApplianceClaimInputSchema, "claimsDelete", { tool: "delete_appliance_claim" });
145
+ claimRoute(LAB_EXEC_CLAIMS_PAUSE_PATH, "lab_exec_claims_pause", PauseApplianceClaimInputSchema, "claimsPause", { tool: "pause_appliance_claim" });
56
146
  return app;
57
147
  }
58
148
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lab-exec/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/lab-exec/server.ts"],"names":[],"mappings":"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"}
@@ -331,8 +331,8 @@ export declare function verifyIndependentClaimAccess(verb: IndependentClaimVerb,
331
331
  export declare function claimBackendConfigErrorResult(err: unknown, operation?: string): CallToolResult | null;
332
332
  /** Preflight used before any Kubernetes round trip; null when the tuple is usable. */
333
333
  export declare function claimBackendPreflightError(operation: string): CallToolResult | null;
334
- export declare function handleListApplianceClaims(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
335
- export declare function handleGetApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
334
+ export declare function handleListApplianceClaims(args: unknown, context?: ToolContext): Promise<CallToolResult>;
335
+ export declare function handleGetApplianceClaim(args: unknown, context?: ToolContext): Promise<CallToolResult>;
336
336
  /**
337
337
  * Builds the ApplianceClaim manifest for create_appliance_claim, enforcing the
338
338
  * strict-cleanup claim contract (ADR 0779): a claim must name a guest the
@@ -346,7 +346,7 @@ export declare function buildApplianceClaimManifest(input: CreateApplianceClaimI
346
346
  } | {
347
347
  error: string;
348
348
  };
349
- export declare function handleCreateApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
349
+ export declare function handleCreateApplianceClaim(args: unknown, context?: ToolContext): Promise<CallToolResult>;
350
350
  /**
351
351
  * Pauses or unpauses an ApplianceClaim (UAT-1740, ADR 0755). spec.paused=true
352
352
  * is an operator maintenance gate: the operator suspends TTL expiry and takes
@@ -354,7 +354,7 @@ export declare function handleCreateApplianceClaim(args: unknown, _context?: Too
354
354
  * Applied as a strategic merge patch on spec, mirroring kubectl patch
355
355
  * --type=merge, with a post-patch live readback for verification.
356
356
  */
357
- export declare function handlePauseApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
357
+ export declare function handlePauseApplianceClaim(args: unknown, context?: ToolContext): Promise<CallToolResult>;
358
358
  export type RenewPlan = {
359
359
  ok: true;
360
360
  previousTtlHours: number;
@@ -382,8 +382,8 @@ export declare function planClaimRenewal(claim: ApplianceClaimResource & {
382
382
  * next pass. Never shortens, never touches fixtures, never un-expires a claim
383
383
  * the operator already deleted.
384
384
  */
385
- export declare function handleRenewApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
386
- export declare function handleDeleteApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
385
+ export declare function handleRenewApplianceClaim(args: unknown, context?: ToolContext): Promise<CallToolResult>;
386
+ export declare function handleDeleteApplianceClaim(args: unknown, context?: ToolContext): Promise<CallToolResult>;
387
387
  /**
388
388
  * Merge-patches spec fields on an existing ApplianceClaim (in-cluster API first,
389
389
  * kubectl fallback). Used by claim-first provisioning to attach the VMID once the
@@ -1 +1 @@
1
- {"version":3,"file":"appliance-claim-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/appliance-claim-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appliance-claim-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/appliance-claim-tools.ts"],"names":[],"mappings":"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"}
@@ -238,12 +238,45 @@ export function claimBackendPreflightError(operation) {
238
238
  invalid.length ? `invalid: ${invalid.join(", ")}` : "",
239
239
  ].filter(Boolean).join("; ")}). ${LAB_CLAIM_BACKEND_REMEDIATION}`, { operation, missing, invalid, remediation: LAB_CLAIM_BACKEND_REMEDIATION });
240
240
  }
241
- export async function handleListApplianceClaims(args, _context) {
241
+ const FORWARD_METHOD = {
242
+ list_appliance_claims: "claimsList",
243
+ get_appliance_claim: "claimsGet",
244
+ create_appliance_claim: "claimsCreate",
245
+ renew_appliance_claim: "claimsRenew",
246
+ delete_appliance_claim: "claimsDelete",
247
+ pause_appliance_claim: "claimsPause",
248
+ };
249
+ /**
250
+ * REL-1961/REL-1964: a Worker has no k3s API route but holds a RemoteLabExecutor whose
251
+ * in-cluster claim plane serves claim list/get and, behind the executor's kill switch,
252
+ * create/renew/delete/pause. Forward only when the local backend is unconfigured, so
253
+ * gateways and the executor itself keep running locally.
254
+ */
255
+ async function forwardClaim(operation, input, context) {
256
+ const executor = context?.labExecutor;
257
+ if (!executor || executor.location !== "remote" || !claimBackendPreflightError(operation))
258
+ return null;
259
+ const call = executor[FORWARD_METHOD[operation]];
260
+ if (!call)
261
+ return null;
262
+ const mutates = !["list_appliance_claims", "get_appliance_claim"].includes(operation);
263
+ try {
264
+ return await call.call(executor, input, context?.caller);
265
+ }
266
+ catch (err) {
267
+ return createToolErrorResult("LAB_CLAIM_EXECUTOR_UNAVAILABLE", `ApplianceClaim ${mutates ? "operation" : "read"} via the lab executor failed: ${err instanceof Error ? err.message : String(err)}`
268
+ + (mutates ? ". The outcome is unconfirmed: verify with get_appliance_claim before retrying." : ""), { operation, executor: executor.location });
269
+ }
270
+ }
271
+ export async function handleListApplianceClaims(args, context) {
242
272
  const parsed = ListApplianceClaimsInputSchema.safeParse(args);
243
273
  if (!parsed.success) {
244
274
  const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
245
275
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, issues);
246
276
  }
277
+ const forwarded = await forwardClaim("list_appliance_claims", parsed.data, context);
278
+ if (forwarded)
279
+ return forwarded;
247
280
  const { namespace, phase, claimType } = parsed.data;
248
281
  try {
249
282
  let items = [];
@@ -301,12 +334,15 @@ export async function handleListApplianceClaims(args, _context) {
301
334
  return createToolErrorResult(ProxmoxErrorCode.UPSTREAM_API_ERROR, `Failed to list appliance claims in namespace '${namespace}': ${err.message}`);
302
335
  }
303
336
  }
304
- export async function handleGetApplianceClaim(args, _context) {
337
+ export async function handleGetApplianceClaim(args, context) {
305
338
  const parsed = GetApplianceClaimInputSchema.safeParse(args);
306
339
  if (!parsed.success) {
307
340
  const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
308
341
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, issues);
309
342
  }
343
+ const forwarded = await forwardClaim("get_appliance_claim", parsed.data, context);
344
+ if (forwarded)
345
+ return forwarded;
310
346
  const { name, namespace } = parsed.data;
311
347
  try {
312
348
  const apiPath = `/apis/calltelemetry.com/v1alpha1/namespaces/${namespace}/applianceclaims/${name}`;
@@ -412,7 +448,7 @@ export function buildApplianceClaimManifest(input) {
412
448
  };
413
449
  return { manifest, claimName, train };
414
450
  }
415
- export async function handleCreateApplianceClaim(args, _context) {
451
+ export async function handleCreateApplianceClaim(args, context) {
416
452
  const parsed = CreateApplianceClaimInputSchema.safeParse(args);
417
453
  if (!parsed.success) {
418
454
  const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
@@ -440,6 +476,9 @@ export async function handleCreateApplianceClaim(args, _context) {
440
476
  ]
441
477
  };
442
478
  }
479
+ const forwarded = await forwardClaim("create_appliance_claim", parsed.data, context);
480
+ if (forwarded)
481
+ return forwarded;
443
482
  try {
444
483
  // Every Proxmox creator converges here, including claim-first provision and
445
484
  // claimed image import. No timeout fallback or name-only claim.
@@ -487,12 +526,15 @@ export async function handleCreateApplianceClaim(args, _context) {
487
526
  * Applied as a strategic merge patch on spec, mirroring kubectl patch
488
527
  * --type=merge, with a post-patch live readback for verification.
489
528
  */
490
- export async function handlePauseApplianceClaim(args, _context) {
529
+ export async function handlePauseApplianceClaim(args, context) {
491
530
  const parsed = PauseApplianceClaimInputSchema.safeParse(args);
492
531
  if (!parsed.success) {
493
532
  const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
494
533
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, issues);
495
534
  }
535
+ const forwarded = await forwardClaim("pause_appliance_claim", parsed.data, context);
536
+ if (forwarded)
537
+ return forwarded;
496
538
  const { name, namespace, paused, pausedReason } = parsed.data;
497
539
  try {
498
540
  const apiPath = `/apis/calltelemetry.com/v1alpha1/namespaces/${namespace}/applianceclaims/${name}`;
@@ -600,12 +642,15 @@ export function planClaimRenewal(claim, extendHours, now = Date.now()) {
600
642
  * next pass. Never shortens, never touches fixtures, never un-expires a claim
601
643
  * the operator already deleted.
602
644
  */
603
- export async function handleRenewApplianceClaim(args, _context) {
645
+ export async function handleRenewApplianceClaim(args, context) {
604
646
  const parsed = RenewApplianceClaimInputSchema.safeParse(args);
605
647
  if (!parsed.success) {
606
648
  const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
607
649
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, issues);
608
650
  }
651
+ const forwarded = await forwardClaim("renew_appliance_claim", parsed.data, context);
652
+ if (forwarded)
653
+ return forwarded;
609
654
  const { name, namespace, expectedUid, extendHours, dryRun } = parsed.data;
610
655
  const apiPath = `/apis/calltelemetry.com/v1alpha1/namespaces/${namespace}/applianceclaims/${name}`;
611
656
  try {
@@ -692,7 +737,7 @@ export async function handleRenewApplianceClaim(args, _context) {
692
737
  return createToolErrorResult(ProxmoxErrorCode.UPSTREAM_API_ERROR, `Failed to renew ApplianceClaim '${name}': ${err.message}`);
693
738
  }
694
739
  }
695
- export async function handleDeleteApplianceClaim(args, _context) {
740
+ export async function handleDeleteApplianceClaim(args, context) {
696
741
  const parsed = DeleteApplianceClaimInputSchema.safeParse(args);
697
742
  if (!parsed.success) {
698
743
  const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
@@ -701,6 +746,9 @@ export async function handleDeleteApplianceClaim(args, _context) {
701
746
  const { name, namespace, expectedUid } = parsed.data;
702
747
  if (namespace !== "ct-lab")
703
748
  return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, "claim deletion is restricted to ct-lab");
749
+ const forwarded = await forwardClaim("delete_appliance_claim", parsed.data, context);
750
+ if (forwarded)
751
+ return forwarded;
704
752
  try {
705
753
  const protection = await deleteClaimWithCustody(name, expectedUid);
706
754
  return { content: [{ type: "text", text: JSON.stringify({ success: true, ...protection }, null, 2) }], structuredContent: protection };