@calltelemetry/ct-lab-mcp 0.8.126 → 0.8.128

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 (38) hide show
  1. package/dist/src/generated-version.d.ts +1 -1
  2. package/dist/src/generated-version.js +1 -1
  3. package/dist/src/lab-exec/claim-resolve.d.ts +392 -1
  4. package/dist/src/lab-exec/claim-resolve.d.ts.map +1 -1
  5. package/dist/src/lab-exec/claim-resolve.js +57 -9
  6. package/dist/src/lab-exec/claim-resolve.js.map +1 -1
  7. package/dist/src/lab-exec/contract.d.ts +35 -0
  8. package/dist/src/lab-exec/contract.d.ts.map +1 -1
  9. package/dist/src/lab-exec/contract.js +28 -0
  10. package/dist/src/lab-exec/contract.js.map +1 -1
  11. package/dist/src/lab-exec/executor.d.ts +13 -1
  12. package/dist/src/lab-exec/executor.d.ts.map +1 -1
  13. package/dist/src/lab-exec/executor.js +25 -2
  14. package/dist/src/lab-exec/executor.js.map +1 -1
  15. package/dist/src/lab-exec/remote.d.ts +13 -1
  16. package/dist/src/lab-exec/remote.d.ts.map +1 -1
  17. package/dist/src/lab-exec/remote.js +48 -2
  18. package/dist/src/lab-exec/remote.js.map +1 -1
  19. package/dist/src/lab-exec/result.d.ts +12 -0
  20. package/dist/src/lab-exec/result.d.ts.map +1 -1
  21. package/dist/src/lab-exec/result.js +26 -0
  22. package/dist/src/lab-exec/result.js.map +1 -1
  23. package/dist/src/lab-exec/server.d.ts +2 -0
  24. package/dist/src/lab-exec/server.d.ts.map +1 -1
  25. package/dist/src/lab-exec/server.js +102 -6
  26. package/dist/src/lab-exec/server.js.map +1 -1
  27. package/dist/src/tools/appliance-claim-tools.d.ts +4 -4
  28. package/dist/src/tools/appliance-claim-tools.d.ts.map +1 -1
  29. package/dist/src/tools/appliance-claim-tools.js +35 -12
  30. package/dist/src/tools/appliance-claim-tools.js.map +1 -1
  31. package/dist/src/tools/index.d.ts.map +1 -1
  32. package/dist/src/tools/index.js +2 -0
  33. package/dist/src/tools/index.js.map +1 -1
  34. package/dist/src/tools/lab-host-key-enroll.d.ts +6 -0
  35. package/dist/src/tools/lab-host-key-enroll.d.ts.map +1 -0
  36. package/dist/src/tools/lab-host-key-enroll.js +37 -0
  37. package/dist/src/tools/lab-host-key-enroll.js.map +1 -0
  38. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import type { CanonicalCommandResult } from "../canonical/types.js";
2
2
  import type { CallToolResult } from "../types/mcp.js";
3
- import { type LabSshInput } from "./contract.js";
3
+ import { type LabHostKeyEnrollInput, type LabSshInput } from "./contract.js";
4
4
  /** Portal identity, used only for audit; authorization already happened at the portal. */
5
5
  export interface LabExecCaller {
6
6
  readonly identity?: string;
@@ -15,9 +15,16 @@ export interface LabExecOutcome {
15
15
  export interface LabExecutor {
16
16
  readonly location: "local" | "remote";
17
17
  ssh(input: LabSshInput, caller?: LabExecCaller): Promise<LabExecOutcome>;
18
+ /** Host-key enrollment ladder (REL-1971). Dry run unless input.apply. */
19
+ hostKeyEnroll?(input: LabHostKeyEnrollInput, caller?: LabExecCaller): Promise<LabExecOutcome>;
18
20
  /** Read-only claim discovery (REL-1961). Returns the exact tool result the local handler produces. */
19
21
  claimsList?(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
20
22
  claimsGet?(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
23
+ /** Claim mutations (REL-1964). Gated by the executor's LAB_CLAIM_MUTATIONS kill switch. */
24
+ claimsCreate?(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
25
+ claimsRenew?(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
26
+ claimsDelete?(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
27
+ claimsPause?(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
21
28
  }
22
29
  export declare class LocalLabExecutor implements LabExecutor {
23
30
  private readonly bridge;
@@ -27,6 +34,11 @@ export declare class LocalLabExecutor implements LabExecutor {
27
34
  });
28
35
  claimsList(input: unknown): Promise<CallToolResult>;
29
36
  claimsGet(input: unknown): Promise<CallToolResult>;
37
+ claimsCreate(input: unknown): Promise<CallToolResult>;
38
+ claimsRenew(input: unknown): Promise<CallToolResult>;
39
+ claimsDelete(input: unknown): Promise<CallToolResult>;
40
+ claimsPause(input: unknown): Promise<CallToolResult>;
41
+ hostKeyEnroll(input: LabHostKeyEnrollInput): Promise<LabExecOutcome>;
30
42
  ssh(input: LabSshInput): Promise<LabExecOutcome>;
31
43
  }
32
44
  //# sourceMappingURL=executor.d.ts.map
@@ -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,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,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;CAC7E;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;IAI5C,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,EAIL,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAEvB,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,yEAAyE;IACzE,aAAa,CAAC,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9F,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,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAWpE,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;CAUvD"}
@@ -1,5 +1,5 @@
1
- import { handleGetApplianceClaim, handleListApplianceClaims } from "../tools/appliance-claim-tools.js";
2
- import { labSshArgv } from "./contract.js";
1
+ import { handleCreateApplianceClaim, handleDeleteApplianceClaim, handleGetApplianceClaim, handleListApplianceClaims, handlePauseApplianceClaim, handleRenewApplianceClaim, } from "../tools/appliance-claim-tools.js";
2
+ import { LAB_HOST_KEY_ENROLL_TIMEOUT_MS, labHostKeyEnrollArgv, labSshArgv, } from "./contract.js";
3
3
  /** Bridge headroom beyond the CLI's own --timeout-seconds for resolution and cleanup. */
4
4
  const RESOLUTION_GRACE_MS = 30_000;
5
5
  export class LocalLabExecutor {
@@ -14,6 +14,29 @@ export class LocalLabExecutor {
14
14
  claimsGet(input) {
15
15
  return handleGetApplianceClaim(input);
16
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
+ }
29
+ async hostKeyEnroll(input) {
30
+ if (!input.assetId)
31
+ throw new Error("LocalLabExecutor requires a resolved assetId; wrap it in ClaimResolvingExecutor to accept claimId");
32
+ const result = await this.bridge.run(labHostKeyEnrollArgv(input), LAB_HOST_KEY_ENROLL_TIMEOUT_MS);
33
+ return {
34
+ exitCode: result.exitCode,
35
+ stdout: result.stdout,
36
+ stderr: result.stderr,
37
+ ...(result.timedOut ? { timedOut: true } : {}),
38
+ };
39
+ }
17
40
  async ssh(input) {
18
41
  if (!input.assetId)
19
42
  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":"AAEA,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAAE,UAAU,EAAoB,MAAM,eAAe,CAAC;AAuB7D,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,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,EACL,8BAA8B,EAC9B,oBAAoB,EACpB,UAAU,GAGX,MAAM,eAAe,CAAC;AA8BvB,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,aAAa,CAAC,KAA4B;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;QACzI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAClG,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;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,11 +1,18 @@
1
1
  /** Worker-side client for the lab executor behind Cloudflare Tunnel + Access (ADR 0934). */
2
2
  import type { CallToolResult } from "../types/mcp.js";
3
- import type { LabSshInput } from "./contract.js";
3
+ import { type LabHostKeyEnrollInput, type LabSshInput } from "./contract.js";
4
4
  import type { LabExecCaller, LabExecOutcome, LabExecutor } from "./executor.js";
5
5
  export declare const LAB_EXEC_PATH = "/v1/lab-exec/ssh";
6
+ /** Host-key enrollment route (REL-1971). The zone WAF skip rule allows exactly this path. */
7
+ export declare const LAB_EXEC_HOST_KEY_ENROLL_PATH = "/v1/lab-exec/host-key-enroll";
6
8
  /** Read-only claim discovery routes (REL-1961). The zone WAF skip rule allows exactly these paths. */
7
9
  export declare const LAB_EXEC_CLAIMS_LIST_PATH = "/v1/lab-exec/claims/list";
8
10
  export declare const LAB_EXEC_CLAIMS_GET_PATH = "/v1/lab-exec/claims/get";
11
+ /** Claim mutation routes (REL-1964). The zone WAF skip rule allows exactly these paths. */
12
+ export declare const LAB_EXEC_CLAIMS_CREATE_PATH = "/v1/lab-exec/claims/create";
13
+ export declare const LAB_EXEC_CLAIMS_RENEW_PATH = "/v1/lab-exec/claims/renew";
14
+ export declare const LAB_EXEC_CLAIMS_DELETE_PATH = "/v1/lab-exec/claims/delete";
15
+ export declare const LAB_EXEC_CLAIMS_PAUSE_PATH = "/v1/lab-exec/claims/pause";
9
16
  /** Audit-only; the executor trusts it because only the Worker's service token can reach it. */
10
17
  export declare const LAB_EXEC_CALLER_HEADER = "X-CT-Lab-Caller";
11
18
  export interface RemoteLabExecutorOptions {
@@ -19,8 +26,13 @@ export declare class RemoteLabExecutor implements LabExecutor {
19
26
  readonly location: "remote";
20
27
  constructor(options: RemoteLabExecutorOptions);
21
28
  ssh(input: LabSshInput, caller?: LabExecCaller): Promise<LabExecOutcome>;
29
+ hostKeyEnroll(input: LabHostKeyEnrollInput, caller?: LabExecCaller): Promise<LabExecOutcome>;
22
30
  claimsList(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
23
31
  claimsGet(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
32
+ claimsCreate(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
33
+ claimsRenew(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
34
+ claimsDelete(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
35
+ claimsPause(input: unknown, caller?: LabExecCaller): Promise<CallToolResult>;
24
36
  private claims;
25
37
  }
26
38
  //# 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,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;AAElE,+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;YAI5D,MAAM;CAmBrB"}
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,EAAkC,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEhF,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,6FAA6F;AAC7F,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,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;IAyBxE,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBlG,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,8 +1,17 @@
1
+ import { LAB_HOST_KEY_ENROLL_TIMEOUT_MS } from "./contract.js";
1
2
  export const LAB_EXEC_PATH = "/v1/lab-exec/ssh";
3
+ /** Host-key enrollment route (REL-1971). The zone WAF skip rule allows exactly this path. */
4
+ export const LAB_EXEC_HOST_KEY_ENROLL_PATH = "/v1/lab-exec/host-key-enroll";
2
5
  /** Read-only claim discovery routes (REL-1961). The zone WAF skip rule allows exactly these paths. */
3
6
  export const LAB_EXEC_CLAIMS_LIST_PATH = "/v1/lab-exec/claims/list";
4
7
  export const LAB_EXEC_CLAIMS_GET_PATH = "/v1/lab-exec/claims/get";
8
+ /** Claim mutation routes (REL-1964). The zone WAF skip rule allows exactly these paths. */
9
+ export const LAB_EXEC_CLAIMS_CREATE_PATH = "/v1/lab-exec/claims/create";
10
+ export const LAB_EXEC_CLAIMS_RENEW_PATH = "/v1/lab-exec/claims/renew";
11
+ export const LAB_EXEC_CLAIMS_DELETE_PATH = "/v1/lab-exec/claims/delete";
12
+ export const LAB_EXEC_CLAIMS_PAUSE_PATH = "/v1/lab-exec/claims/pause";
5
13
  const CLAIMS_TIMEOUT_MS = 30_000;
14
+ const CLAIMS_MUTATION_TIMEOUT_MS = 60_000;
6
15
  /** Audit-only; the executor trusts it because only the Worker's service token can reach it. */
7
16
  export const LAB_EXEC_CALLER_HEADER = "X-CT-Lab-Caller";
8
17
  const TRANSPORT_GRACE_MS = 45_000;
@@ -39,13 +48,50 @@ export class RemoteLabExecutor {
39
48
  ...(body.timedOut ? { timedOut: true } : {}),
40
49
  };
41
50
  }
51
+ async hostKeyEnroll(input, caller) {
52
+ const headers = {
53
+ "content-type": "application/json",
54
+ "CF-Access-Client-Id": this.options.clientId,
55
+ "CF-Access-Client-Secret": this.options.clientSecret,
56
+ };
57
+ if (caller?.identity)
58
+ headers[LAB_EXEC_CALLER_HEADER] = caller.identity;
59
+ const response = await (this.options.fetchImpl ?? fetch)(new URL(LAB_EXEC_HOST_KEY_ENROLL_PATH, this.options.url), {
60
+ method: "POST",
61
+ headers,
62
+ body: JSON.stringify(input),
63
+ signal: AbortSignal.timeout(LAB_HOST_KEY_ENROLL_TIMEOUT_MS + TRANSPORT_GRACE_MS),
64
+ });
65
+ const body = (await response.json().catch(() => undefined));
66
+ if (!response.ok || !body || typeof body.exitCode !== "number") {
67
+ throw new Error(`lab executor HTTP ${response.status}`);
68
+ }
69
+ return {
70
+ exitCode: body.exitCode,
71
+ stdout: String(body.stdout ?? ""),
72
+ stderr: String(body.stderr ?? ""),
73
+ ...(body.timedOut ? { timedOut: true } : {}),
74
+ };
75
+ }
42
76
  claimsList(input, caller) {
43
77
  return this.claims(LAB_EXEC_CLAIMS_LIST_PATH, input, caller);
44
78
  }
45
79
  claimsGet(input, caller) {
46
80
  return this.claims(LAB_EXEC_CLAIMS_GET_PATH, input, caller);
47
81
  }
48
- async claims(path, input, caller) {
82
+ claimsCreate(input, caller) {
83
+ return this.claims(LAB_EXEC_CLAIMS_CREATE_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
84
+ }
85
+ claimsRenew(input, caller) {
86
+ return this.claims(LAB_EXEC_CLAIMS_RENEW_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
87
+ }
88
+ claimsDelete(input, caller) {
89
+ return this.claims(LAB_EXEC_CLAIMS_DELETE_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
90
+ }
91
+ claimsPause(input, caller) {
92
+ return this.claims(LAB_EXEC_CLAIMS_PAUSE_PATH, input, caller, CLAIMS_MUTATION_TIMEOUT_MS);
93
+ }
94
+ async claims(path, input, caller, timeoutMs = CLAIMS_TIMEOUT_MS) {
49
95
  const headers = {
50
96
  "content-type": "application/json",
51
97
  "CF-Access-Client-Id": this.options.clientId,
@@ -57,7 +103,7 @@ export class RemoteLabExecutor {
57
103
  method: "POST",
58
104
  headers,
59
105
  body: JSON.stringify(input ?? {}),
60
- signal: AbortSignal.timeout(CLAIMS_TIMEOUT_MS),
106
+ signal: AbortSignal.timeout(timeoutMs),
61
107
  });
62
108
  const body = (await response.json().catch(() => undefined));
63
109
  if (!response.ok || !body || !Array.isArray(body.content)) {
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lab-exec/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/lab-exec/remote.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,16 @@ import { CallToolResult } from "../types/mcp.js";
2
2
  import type { LabExecOutcome } from "./executor.js";
3
3
  export declare const VM_SSH_RESULT_SCHEMA = "ct-lab-vm-ssh-result/v1";
4
4
  export declare function labSshToolResult(outcome: LabExecOutcome, assetId: string | undefined): CallToolResult;
5
+ export declare const HOST_KEY_ENROLL_RESULT_SCHEMA = "calltelemetry-lab-host-key-enroll/v1";
6
+ interface HostKeyEnrollReceipt {
7
+ schema: string;
8
+ asset_id?: string;
9
+ status: string;
10
+ reason?: string | null;
11
+ [key: string]: unknown;
12
+ }
13
+ /** Parse the CLI receipt. It is printed for every status, including refused and blocked (exit 1). */
14
+ export declare function parseHostKeyEnrollReceipt(stdout: string): HostKeyEnrollReceipt | undefined;
15
+ export declare function hostKeyEnrollToolResult(outcome: LabExecOutcome, id: string | undefined): CallToolResult;
16
+ export {};
5
17
  //# sourceMappingURL=result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAyB9D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CA+BrG"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/lab-exec/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAyB9D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CA+BrG;AAED,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AAEpF,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qGAAqG;AACrG,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAO1F;AAID,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAiBvG"}
@@ -37,4 +37,30 @@ export function labSshToolResult(outcome, assetId) {
37
37
  ...(failed ? { isError: true } : {}),
38
38
  };
39
39
  }
40
+ export const HOST_KEY_ENROLL_RESULT_SCHEMA = "calltelemetry-lab-host-key-enroll/v1";
41
+ /** Parse the CLI receipt. It is printed for every status, including refused and blocked (exit 1). */
42
+ export function parseHostKeyEnrollReceipt(stdout) {
43
+ try {
44
+ const value = JSON.parse(stdout);
45
+ return value && value.schema === HOST_KEY_ENROLL_RESULT_SCHEMA && typeof value.status === "string" ? value : undefined;
46
+ }
47
+ catch {
48
+ return undefined;
49
+ }
50
+ }
51
+ const HOST_KEY_ENROLL_OK = new Set(["planned", "already-enrolled", "enrolled"]);
52
+ export function hostKeyEnrollToolResult(outcome, id) {
53
+ const receipt = outcome.timedOut ? undefined : parseHostKeyEnrollReceipt(outcome.stdout);
54
+ if (!receipt) {
55
+ return createToolErrorResult("LAB_HOST_KEY_ENROLL_UNAVAILABLE", outcome.stderr
56
+ || (outcome.timedOut ? "lab_host_key_enroll timed out before the canonical lab CLI answered; the outcome is unconfirmed, so dry-run again before retrying" : "canonical lab CLI returned no host-key enrollment receipt"), { operation: "lab_host_key_enroll", ...(id ? { assetId: id } : {}), exitCode: outcome.exitCode, ...(outcome.timedOut ? { timedOut: true } : {}) });
57
+ }
58
+ const failed = !HOST_KEY_ENROLL_OK.has(receipt.status);
59
+ const summary = `${receipt.status}${receipt.reason ? ` (${receipt.reason})` : ""}`;
60
+ return {
61
+ content: [{ type: "text", text: `${summary}\n${JSON.stringify(receipt, null, 2)}` }],
62
+ structuredContent: receipt,
63
+ ...(failed ? { isError: true } : {}),
64
+ };
65
+ }
40
66
  //# sourceMappingURL=result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lab-exec/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxE,MAAM,CAAC,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAgB9D,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAgB,CAAC;QAChD,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,oBAAoB,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAuB,EAAE,OAA2B;IACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,qBAAqB,CAC1B,qBAAqB,EACrB,OAAO,CAAC,MAAM;eACT,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,6CAA6C,CAAC,EACnI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACvI,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG;QACxB,OAAO,EAAE,QAAQ,CAAC,QAAQ;QAC1B,UAAU,EAAE,QAAQ,CAAC,WAAW;QAChC,QAAQ,EAAE,QAAQ,CAAC,SAAS;QAC5B,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,eAAe,EAAE,QAAQ,CAAC,gBAAgB;QAC1C,eAAe,EAAE,QAAQ,CAAC,gBAAgB;QAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW;QAChC,aAAa,EAAE,QAAQ,CAAC,cAAc;KACvC,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,QAAQ,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,cAAc,MAAM,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;QAClG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,aAAa,EAAE,CAAC;QACxD,iBAAiB;QACjB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lab-exec/result.ts"],"names":[],"mappings":"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"}
@@ -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;AAIjD,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,CA4F1E"}
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;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAwBjD,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,CAsK1E"}
@@ -1,8 +1,35 @@
1
1
  import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
2
2
  import { verifyAccess } from "../access-auth.js";
3
- import { LabSshInputSchema, labSshCommandSha256 } from "./contract.js";
4
- import { GetApplianceClaimInputSchema, ListApplianceClaimsInputSchema } from "../tools/appliance-claim-tools.js";
5
- import { LAB_EXEC_CALLER_HEADER, LAB_EXEC_CLAIMS_GET_PATH, LAB_EXEC_CLAIMS_LIST_PATH, LAB_EXEC_PATH } from "./remote.js";
3
+ import { LabHostKeyEnrollInputSchema, LabSshInputSchema, labSshCommandSha256 } from "./contract.js";
4
+ import { parseHostKeyEnrollReceipt } from "./result.js";
5
+ import { CreateApplianceClaimInputSchema, DeleteApplianceClaimInputSchema, GetApplianceClaimInputSchema, ListApplianceClaimsInputSchema, PauseApplianceClaimInputSchema, RenewApplianceClaimInputSchema, } from "../tools/appliance-claim-tools.js";
6
+ import { createToolErrorResult } from "../types/mcp.js";
7
+ 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_HOST_KEY_ENROLL_PATH, LAB_EXEC_PATH, } from "./remote.js";
8
+ /** Kill switch for claim mutations (REL-1964): only the exact value "enabled" allows them. */
9
+ export function claimMutationsEnabled(env = process.env) {
10
+ return env.LAB_CLAIM_MUTATIONS === "enabled";
11
+ }
12
+ /** Result summary for the audit line: never the output itself, only ok or the structured error code. */
13
+ function auditResult(result) {
14
+ if (result.isError !== true)
15
+ return "ok";
16
+ const code = result.structuredContent?.error?.code;
17
+ return typeof code === "string" ? `error:${code.slice(0, 64)}` : "error";
18
+ }
19
+ /** Claim name for the audit line, from the validated input or, for an auto-named create, the result. */
20
+ function resultClaimName(result) {
21
+ const block = result.content?.[0];
22
+ if (block?.type !== "text")
23
+ return undefined;
24
+ try {
25
+ const parsed = JSON.parse(block.text);
26
+ const name = parsed.claimName ?? (typeof parsed.claim === "string" ? parsed.claim : undefined);
27
+ return typeof name === "string" ? name.slice(0, 253) : undefined;
28
+ }
29
+ catch {
30
+ return undefined;
31
+ }
32
+ }
6
33
  function accessRequest(req) {
7
34
  const headers = new Headers();
8
35
  for (const [name, value] of Object.entries(req.headers)) {
@@ -54,8 +81,57 @@ export function createLabExecServer(options) {
54
81
  res.status(502).json({ error: "canonical lab CLI unavailable" });
55
82
  }
56
83
  });
84
+ // Host-key enrollment (REL-1971). Same auth and caller audit as ssh; dry run unless apply.
85
+ app.post(LAB_EXEC_HOST_KEY_ENROLL_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 = LabHostKeyEnrollInputSchema.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 input = parsed.data;
101
+ if (!options.executor.hostKeyEnroll) {
102
+ res.status(501).json({ error: "host-key enrollment not available on this executor" });
103
+ return;
104
+ }
105
+ const audit = {
106
+ event: "lab_exec_host_key_enroll",
107
+ caller: String(req.get(LAB_EXEC_CALLER_HEADER) ?? "unknown").slice(0, 320),
108
+ ...(input.assetId ? { assetId: input.assetId } : {}),
109
+ ...(input.claimId ? { claimId: input.claimId } : {}),
110
+ apply: input.apply,
111
+ };
112
+ const started = Date.now();
113
+ try {
114
+ const outcome = await options.executor.hostKeyEnroll(input);
115
+ const receipt = outcome.timedOut ? undefined : parseHostKeyEnrollReceipt(outcome.stdout);
116
+ const status = receipt ? (receipt.status.slice(0, 64)) : outcome.timedOut ? "timeout" : "no-receipt";
117
+ const assetId = !input.assetId && typeof receipt?.asset_id === "string" ? { assetId: receipt.asset_id.slice(0, 128) } : {};
118
+ log({
119
+ ...audit,
120
+ ...assetId,
121
+ status,
122
+ ...(typeof receipt?.reason === "string" ? { reason: receipt.reason.slice(0, 64) } : {}),
123
+ exitCode: outcome.exitCode,
124
+ durationMs: Date.now() - started,
125
+ });
126
+ res.json(outcome);
127
+ }
128
+ catch (error) {
129
+ log({ ...audit, status: "unavailable", error: error instanceof Error ? error.message : String(error), durationMs: Date.now() - started });
130
+ res.status(502).json({ error: "canonical lab CLI unavailable" });
131
+ }
132
+ });
57
133
  // Read-only claim discovery (REL-1961). Same auth and caller audit as ssh; never mutates.
58
- const claimRoute = (path, event, schema, run) => {
134
+ const claimRoute = (path, event, schema, run, mutation) => {
59
135
  app.post(path, async (req, res) => {
60
136
  const access = await verifyAccess(accessRequest(req), options.access);
61
137
  if (!access.ok) {
@@ -80,23 +156,43 @@ export function createLabExecServer(options) {
80
156
  const audit = {
81
157
  event,
82
158
  caller: String(req.get(LAB_EXEC_CALLER_HEADER) ?? "unknown").slice(0, 320),
159
+ ...(mutation ? { tool: mutation.tool, dryRun: data.dryRun === true } : {}),
83
160
  namespace: data.namespace,
84
161
  ...(data.name ? { claimId: data.name } : {}),
85
162
  };
86
163
  const started = Date.now();
164
+ // A dry run never mutates, so the kill switch only gates real writes.
165
+ if (mutation && data.dryRun !== true && !claimMutationsEnabled()) {
166
+ 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 });
167
+ log({ ...audit, result: "disabled", isError: true, durationMs: Date.now() - started });
168
+ res.json(disabled);
169
+ return;
170
+ }
87
171
  try {
88
172
  const result = await handler.call(options.executor, parsed.data);
89
- log({ ...audit, isError: result.isError === true, durationMs: Date.now() - started });
173
+ const claimId = audit.claimId ?? (mutation ? resultClaimName(result) : undefined);
174
+ log({
175
+ ...audit,
176
+ ...(claimId ? { claimId } : {}),
177
+ ...(mutation ? { result: auditResult(result) } : {}),
178
+ isError: result.isError === true,
179
+ durationMs: Date.now() - started,
180
+ });
90
181
  res.json(result);
91
182
  }
92
183
  catch (error) {
93
- log({ ...audit, error: error instanceof Error ? error.message : String(error), durationMs: Date.now() - started });
184
+ log({ ...audit, ...(mutation ? { result: "unavailable" } : {}), error: error instanceof Error ? error.message : String(error), durationMs: Date.now() - started });
94
185
  res.status(502).json({ error: "claim plane unavailable" });
95
186
  }
96
187
  });
97
188
  };
98
189
  claimRoute(LAB_EXEC_CLAIMS_LIST_PATH, "lab_exec_claims_list", ListApplianceClaimsInputSchema, "claimsList");
99
190
  claimRoute(LAB_EXEC_CLAIMS_GET_PATH, "lab_exec_claims_get", GetApplianceClaimInputSchema, "claimsGet");
191
+ // Claim mutations (REL-1964): same auth, behind the LAB_CLAIM_MUTATIONS kill switch, audited per call.
192
+ claimRoute(LAB_EXEC_CLAIMS_CREATE_PATH, "lab_exec_claims_create", CreateApplianceClaimInputSchema, "claimsCreate", { tool: "create_appliance_claim" });
193
+ claimRoute(LAB_EXEC_CLAIMS_RENEW_PATH, "lab_exec_claims_renew", RenewApplianceClaimInputSchema, "claimsRenew", { tool: "renew_appliance_claim" });
194
+ claimRoute(LAB_EXEC_CLAIMS_DELETE_PATH, "lab_exec_claims_delete", DeleteApplianceClaimInputSchema, "claimsDelete", { tool: "delete_appliance_claim" });
195
+ claimRoute(LAB_EXEC_CLAIMS_PAUSE_PATH, "lab_exec_claims_pause", PauseApplianceClaimInputSchema, "claimsPause", { tool: "pause_appliance_claim" });
100
196
  return app;
101
197
  }
102
198
  //# 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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"}
@@ -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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"}