@calltelemetry/ct-lab-mcp 0.4.3 → 0.4.5

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.
@@ -75,6 +75,146 @@ export async function runPurgeDaemonCli(argv = process.argv) {
75
75
  process.once("SIGTERM", handleSig);
76
76
  });
77
77
  }
78
+ export function buildBenchmarkCommand() {
79
+ return new Command("benchmark")
80
+ .description("Run high-resolution VM lifecycle performance benchmark (sub-45ms declarative or physical Proxmox)")
81
+ .option("--physical", "Run live physical hardware provisioning, boot, ping, and SSH benchmark against Proxmox Mini")
82
+ .option("--json", "Output results as structured JSON", false);
83
+ }
84
+ export async function runBenchmarkCli(argv = process.argv) {
85
+ const program = buildBenchmarkCommand();
86
+ program.parse([argv[0] || "node", argv[1] || "ct-lab-mcp", ...argv.slice(3)]);
87
+ const options = program.opts();
88
+ if (options.physical) {
89
+ console.log("[ct-lab-mcp] Executing live physical hardware benchmark against Proxmox Mini...");
90
+ const scriptPath = path.resolve(__dirname, "../../scripts/live-physical-vm-benchmark.mjs");
91
+ const { spawn } = await import("node:child_process");
92
+ return new Promise((resolve) => {
93
+ const child = spawn(process.execPath, [scriptPath], { stdio: "inherit" });
94
+ child.on("close", (code) => resolve(code ?? 0));
95
+ });
96
+ }
97
+ else {
98
+ console.log("[ct-lab-mcp] Executing declarative VM lifecycle benchmark...");
99
+ const { ApplianceSlotReconciler } = await import("../src/crd/reconciler.js");
100
+ const { SlotManager } = await import("../src/slot/manager.js");
101
+ const t0 = performance.now();
102
+ const slotManager = new SlotManager();
103
+ const reconciler = new ApplianceSlotReconciler(slotManager);
104
+ const manifest = {
105
+ apiVersion: "lab.calltelemetry.com/v1alpha1",
106
+ kind: "ApplianceSlot",
107
+ metadata: { name: "cli-benchmark-slot", labels: { linearIssue: "BENCHMARK-CLI" } },
108
+ spec: { host: "proxmox-mini", resources: { memoryMb: 8192, cores: 4, thinDisk: true } }
109
+ };
110
+ const tAllocStart = performance.now();
111
+ const applied = await reconciler.reconcile(manifest);
112
+ const tAlloc = performance.now() - tAllocStart;
113
+ const tGetStart = performance.now();
114
+ await reconciler.getManifest("cli-benchmark-slot");
115
+ const tGet = performance.now() - tGetStart;
116
+ const tRenewStart = performance.now();
117
+ await reconciler.renewManifest("cli-benchmark-slot", 60);
118
+ const tRenew = performance.now() - tRenewStart;
119
+ const tDelStart = performance.now();
120
+ await reconciler.deleteManifest("cli-benchmark-slot");
121
+ const tDel = performance.now() - tDelStart;
122
+ const tTotal = performance.now() - t0;
123
+ if (options.json) {
124
+ console.log(JSON.stringify({
125
+ success: true,
126
+ metrics: {
127
+ allocationMs: Number(tAlloc.toFixed(3)),
128
+ getMs: Number(tGet.toFixed(3)),
129
+ renewMs: Number(tRenew.toFixed(3)),
130
+ deletionMs: Number(tDel.toFixed(3)),
131
+ totalMs: Number(tTotal.toFixed(3)),
132
+ defaultTtlMinutes: applied.status?.remainingTtlMinutes || 120
133
+ }
134
+ }, null, 2));
135
+ }
136
+ else {
137
+ console.log("=================================================");
138
+ console.log("🚀 CALL TELEMETRY VM LIFECYCLE BENCHMARK");
139
+ console.log("=================================================");
140
+ console.log(`• Allocation & Credential Linkage: ${tAlloc.toFixed(2)}ms`);
141
+ console.log(`• Status Inspection & Reconcile: ${tGet.toFixed(2)}ms`);
142
+ console.log(`• Lease Heartbeat Renewal (+60m): ${tRenew.toFixed(2)}ms`);
143
+ console.log(`• Teardown & Capacity Restore: ${tDel.toFixed(2)}ms`);
144
+ console.log(`• Default Claim Duration: ${applied.status?.remainingTtlMinutes || 120} minutes (2 Hours)`);
145
+ console.log("-------------------------------------------------");
146
+ console.log(`• TOTAL LIFECYCLE ROUNDTRIP: ${tTotal.toFixed(2)}ms`);
147
+ console.log("=================================================\n");
148
+ }
149
+ return 0;
150
+ }
151
+ }
152
+ export function buildLicenseCommand() {
153
+ const licenseCmd = new Command("license")
154
+ .description("Call Telemetry Appliance License Management (apply, renew, clear)");
155
+ licenseCmd
156
+ .command("apply")
157
+ .description("Apply or renew a Call Telemetry license on target appliance")
158
+ .requiredOption("--target <ipOrUrl>", "Target appliance IP or URL (e.g. 192.168.124.229)")
159
+ .option("--tier <tier>", "License tier (Premium, Advanced, Essentials, Demo, Beta, Community)", "Premium")
160
+ .option("--days <days>", "Validity in days", "30")
161
+ .option("--org-id <id>", "Org ID", "1")
162
+ .option("--token <jwt>", "Explicit token override")
163
+ .option("--email <email>", "Admin email for session authentication", "admin@calltelemetry.com")
164
+ .option("--password <password>", "Admin password for session authentication", "calltelemetry")
165
+ .action(async (opts) => {
166
+ const { handleApplyLicense } = await import("../src/tools/license-tools.js");
167
+ const res = await handleApplyLicense({
168
+ targetIp: opts.target,
169
+ tier: opts.tier,
170
+ days: parseInt(opts.days, 10),
171
+ orgId: parseInt(opts.orgId, 10),
172
+ token: opts.token,
173
+ email: opts.email,
174
+ password: opts.password,
175
+ }, {});
176
+ if (res.isError) {
177
+ console.error(res.content[0]?.type === "text" ? res.content[0].text : "License operation failed");
178
+ process.exit(1);
179
+ }
180
+ else {
181
+ console.log(res.content[0]?.type === "text" ? res.content[0].text : "License operation succeeded");
182
+ }
183
+ });
184
+ licenseCmd
185
+ .command("renew")
186
+ .description("Renew an existing license on target appliance by minting a fresh token")
187
+ .requiredOption("--target <ipOrUrl>", "Target appliance IP or URL (e.g. 192.168.124.229)")
188
+ .option("--tier <tier>", "License tier (Premium, Advanced, Essentials, Demo, Beta)", "Premium")
189
+ .option("--days <days>", "Validity in days", "30")
190
+ .option("--org-id <id>", "Org ID", "1")
191
+ .option("--email <email>", "Admin email for session authentication", "admin@calltelemetry.com")
192
+ .option("--password <password>", "Admin password for session authentication", "calltelemetry")
193
+ .action(async (opts) => {
194
+ const { handleApplyLicense } = await import("../src/tools/license-tools.js");
195
+ const res = await handleApplyLicense({
196
+ targetIp: opts.target,
197
+ tier: opts.tier,
198
+ days: parseInt(opts.days, 10),
199
+ orgId: parseInt(opts.orgId, 10),
200
+ email: opts.email,
201
+ password: opts.password,
202
+ }, {});
203
+ if (res.isError) {
204
+ console.error(res.content[0]?.type === "text" ? res.content[0].text : "License renewal failed");
205
+ process.exit(1);
206
+ }
207
+ else {
208
+ console.log(res.content[0]?.type === "text" ? res.content[0].text : "License renewal succeeded");
209
+ }
210
+ });
211
+ return licenseCmd;
212
+ }
213
+ export async function runLicenseCli(argv = process.argv) {
214
+ const program = buildLicenseCommand();
215
+ await program.parseAsync([argv[0] || "node", argv[1] || "ct-lab-mcp", ...argv.slice(3)]);
216
+ return 0;
217
+ }
78
218
  /**
79
219
  * Builds the Commander CLI program definition.
80
220
  */
@@ -104,6 +244,8 @@ export function buildCli(exitOverride = false) {
104
244
  }
105
245
  program.addCommand(buildPreflightCommand());
106
246
  program.addCommand(buildPurgeDaemonCommand());
247
+ program.addCommand(buildBenchmarkCommand());
248
+ program.addCommand(buildLicenseCommand());
107
249
  return program;
108
250
  }
109
251
  /**
@@ -331,6 +473,12 @@ if (isMainModule(import.meta.url)) {
331
473
  else if (process.argv[2] === "purge-daemon") {
332
474
  command = runPurgeDaemonCli();
333
475
  }
476
+ else if (process.argv[2] === "benchmark") {
477
+ command = runBenchmarkCli();
478
+ }
479
+ else if (process.argv[2] === "license") {
480
+ command = runLicenseCli();
481
+ }
334
482
  else {
335
483
  command = runCli();
336
484
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAIL,WAAW,EACZ,MAAM,iBAAiB,CAAC;AA2JzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CA+c9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAIL,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAgKzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AAEnC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAme9E"}
@@ -35,6 +35,7 @@ import { SetupCucmEmulatorInputShape, handleSetupCucmEmulator, } from "./cucm-em
35
35
  import { CredentialStatusInputShape, handleCredentialStatus, } from "./credential-status.js";
36
36
  import { LabPreflightInputShape, handleLabPreflight, } from "./lab-preflight.js";
37
37
  import { ApplyManifestInputShape, handleApplyManifest, GetManifestInputShape, handleGetManifest, DeleteManifestInputShape, handleDeleteManifest, RenewManifestInputShape, handleRenewManifest, ListManifestsInputShape, handleListManifests, } from "./manifest-tools.js";
38
+ import { ApplyLicenseInputShape, handleApplyLicense, } from "./license-tools.js";
38
39
  import { canonicalMode, canonicalOperationBlocked } from "./canonical-guard.js";
39
40
  export * from "./list-hosts.js";
40
41
  export * from "./list-inventory.js";
@@ -264,5 +265,13 @@ export function registerAllTools(server, context) {
264
265
  server.tool("list_manifests", "Lists all actively applied declarative ApplianceSlot manifests and their current phases.", ListManifestsInputShape, async (args) => {
265
266
  return handleListManifests(args, context);
266
267
  });
268
+ // 37. apply_license
269
+ server.tool("apply_license", "Applies or updates a Call Telemetry trial, demo, or enterprise license token on a target appliance VM via Phoenix REST API.", ApplyLicenseInputShape, async (args) => {
270
+ return handleApplyLicense(args, context);
271
+ });
272
+ // 38. renew_license
273
+ server.tool("renew_license", "Renews an existing Call Telemetry license on a target appliance VM by minting and applying a fresh signed token with specified duration.", ApplyLicenseInputShape, async (args) => {
274
+ return handleApplyLicense(args, context);
275
+ });
267
276
  }
268
277
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Appliance License Management Tools
3
+ *
4
+ * Provides first-class MCP tools to apply, renew, inspect, and clear Call Telemetry
5
+ * license tokens on target appliance VMs via Phoenix REST API or mediated SSH.
6
+ */
7
+ import { z } from "zod";
8
+ import { ToolContext } from "./list-hosts.js";
9
+ import { CallToolResult } from "../types/mcp.js";
10
+ export declare const ApplyLicenseInputShape: {
11
+ targetIp: z.ZodString;
12
+ tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<["Premium", "Advanced", "Essentials", "Demo", "Beta", "Community"]>>>;
13
+ days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
14
+ orgId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
15
+ token: z.ZodOptional<z.ZodString>;
16
+ email: z.ZodOptional<z.ZodString>;
17
+ password: z.ZodOptional<z.ZodString>;
18
+ timeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
19
+ };
20
+ export declare const ApplyLicenseInputSchema: z.ZodObject<{
21
+ targetIp: z.ZodString;
22
+ tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<["Premium", "Advanced", "Essentials", "Demo", "Beta", "Community"]>>>;
23
+ days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
24
+ orgId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
25
+ token: z.ZodOptional<z.ZodString>;
26
+ email: z.ZodOptional<z.ZodString>;
27
+ password: z.ZodOptional<z.ZodString>;
28
+ timeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ targetIp: string;
31
+ tier: "Community" | "Essentials" | "Advanced" | "Premium" | "Demo" | "Beta";
32
+ timeoutMs: number;
33
+ days: number;
34
+ orgId: number;
35
+ token?: string | undefined;
36
+ email?: string | undefined;
37
+ password?: string | undefined;
38
+ }, {
39
+ targetIp: string;
40
+ token?: string | undefined;
41
+ email?: string | undefined;
42
+ tier?: "Community" | "Essentials" | "Advanced" | "Premium" | "Demo" | "Beta" | undefined;
43
+ password?: string | undefined;
44
+ timeoutMs?: number | undefined;
45
+ days?: number | undefined;
46
+ orgId?: number | undefined;
47
+ }>;
48
+ export type ApplyLicenseInput = z.infer<typeof ApplyLicenseInputSchema>;
49
+ export declare function handleApplyLicense(args: unknown, _context: ToolContext): Promise<CallToolResult>;
50
+ //# sourceMappingURL=license-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/license-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAY1F,eAAO,MAAM,sBAAsB;;;;;;;;;CA6ClC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAmC,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC,CAsNzB"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Appliance License Management Tools
3
+ *
4
+ * Provides first-class MCP tools to apply, renew, inspect, and clear Call Telemetry
5
+ * license tokens on target appliance VMs via Phoenix REST API or mediated SSH.
6
+ */
7
+ import { z } from "zod";
8
+ import { Agent, fetch } from "undici";
9
+ import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
10
+ import { generateTrialLicenseToken, DEFAULT_LICENSE_SIGNER } from "../utils/license.js";
11
+ import { logger } from "../utils/logger.js";
12
+ import { defaultRedactor } from "../utils/redactor.js";
13
+ import { telemetry } from "../telemetry/registry.js";
14
+ const insecureAgent = new Agent({
15
+ connect: {
16
+ rejectUnauthorized: false
17
+ }
18
+ });
19
+ export const ApplyLicenseInputShape = {
20
+ targetIp: z
21
+ .string()
22
+ .min(1)
23
+ .describe("Target IP address or hostname of the Call Telemetry appliance (e.g. '192.168.124.229' or 'https://192.168.124.229')."),
24
+ tier: z
25
+ .enum(["Premium", "Advanced", "Essentials", "Demo", "Beta", "Community"])
26
+ .optional()
27
+ .default("Premium")
28
+ .describe("Target license tier (default: 'Premium'). Use 'Community' to clear license."),
29
+ days: z
30
+ .number()
31
+ .int()
32
+ .min(1)
33
+ .max(365)
34
+ .optional()
35
+ .default(30)
36
+ .describe("License validity in days (default: 30, min: 1, max: 365)."),
37
+ orgId: z
38
+ .number()
39
+ .int()
40
+ .positive()
41
+ .optional()
42
+ .default(1)
43
+ .describe("Target organization ID (default: 1)."),
44
+ token: z
45
+ .string()
46
+ .optional()
47
+ .describe("Optional pre-generated license JWT token override. If omitted, a signed token for the requested tier/days is minted."),
48
+ email: z
49
+ .string()
50
+ .optional()
51
+ .describe("Admin email for authentication / token claims (defaults to env or standard test users)."),
52
+ password: z
53
+ .string()
54
+ .optional()
55
+ .describe("Admin password for session authentication (defaults to env or standard test passwords)."),
56
+ timeoutMs: z
57
+ .number()
58
+ .int()
59
+ .min(2000)
60
+ .max(60000)
61
+ .optional()
62
+ .default(15000)
63
+ .describe("API request timeout in milliseconds (default: 15000).")
64
+ };
65
+ export const ApplyLicenseInputSchema = z.object(ApplyLicenseInputShape);
66
+ export async function handleApplyLicense(args, _context) {
67
+ const parsed = ApplyLicenseInputSchema.safeParse(args);
68
+ if (!parsed.success) {
69
+ const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
70
+ return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, issues);
71
+ }
72
+ const { targetIp, tier, days, orgId, token, email, password, timeoutMs } = parsed.data;
73
+ // Normalize target URL
74
+ let baseUrl = targetIp.trim();
75
+ if (!baseUrl.startsWith("http://") && !baseUrl.startsWith("https://")) {
76
+ baseUrl = `https://${baseUrl}`;
77
+ }
78
+ baseUrl = baseUrl.replace(/\/+$/, "");
79
+ logger.info(`Applying ${tier} license (${days} days) to org ${orgId} on ${baseUrl}...`);
80
+ try {
81
+ // 1. Authenticate to obtain session token
82
+ // Try provided credentials, or fallback candidate list
83
+ const candidateCredentials = [
84
+ ...(email && password ? [{ email, password }] : []),
85
+ { email: process.env.CT_TEST_USER_EMAIL || "demo@calltelemetry.com", password: process.env.CT_TEST_USER_PASSWORD || "demo" },
86
+ { email: process.env.CT_ADMIN_EMAIL || "test@calltelemetry.com", password: process.env.CT_ADMIN_PASSWORD || "Password123!" },
87
+ { email: "admin@calltelemetry.com", password: "Password123!" },
88
+ { email: "admin@calltelemetry.com", password: "calltelemetry" },
89
+ { email: "test@calltelemetry.com", password: "calltelemetry" }
90
+ ];
91
+ let authHeaders = { "Content-Type": "application/json" };
92
+ let authenticated = false;
93
+ let lastAuthError = "";
94
+ const sessionUrl = `${baseUrl}/api/session`;
95
+ for (const cred of candidateCredentials) {
96
+ try {
97
+ const sessionRes = await fetch(sessionUrl, {
98
+ method: "POST",
99
+ headers: { "Content-Type": "application/json" },
100
+ body: JSON.stringify({ user: { email: cred.email, password: cred.password } }),
101
+ dispatcher: insecureAgent,
102
+ signal: AbortSignal.timeout(Math.min(timeoutMs, 5000))
103
+ });
104
+ if (sessionRes.status === 200 || sessionRes.ok) {
105
+ const sessionData = (await sessionRes.json().catch(() => ({})));
106
+ const accessToken = sessionData?.access_token || sessionData?.data?.access_token || sessionData?.token;
107
+ const setCookie = sessionRes.headers.get("set-cookie") || "";
108
+ const sessionCookie = setCookie.split(";")[0];
109
+ if (sessionCookie) {
110
+ authHeaders["Cookie"] = sessionCookie;
111
+ }
112
+ if (accessToken) {
113
+ authHeaders["Authorization"] = `Bearer ${accessToken}`;
114
+ defaultRedactor.registerSecret(accessToken);
115
+ }
116
+ authenticated = true;
117
+ break;
118
+ }
119
+ else {
120
+ lastAuthError = `HTTP ${sessionRes.status}`;
121
+ }
122
+ }
123
+ catch (err) {
124
+ lastAuthError = err.message;
125
+ }
126
+ }
127
+ if (!authenticated) {
128
+ throw new Error(`Authentication to ${sessionUrl} failed: ${lastAuthError}`);
129
+ }
130
+ let resultingToken = null;
131
+ let licenseInfo = {};
132
+ if (tier === "Community") {
133
+ // Clear license
134
+ logger.info(`Clearing license for org ${orgId} on ${baseUrl} (downgrade to Community)...`);
135
+ const clearRes = await fetch(`${baseUrl}/api/org/${orgId}/settings/clear_license`, {
136
+ method: "POST",
137
+ headers: authHeaders,
138
+ body: JSON.stringify({}),
139
+ dispatcher: insecureAgent,
140
+ signal: AbortSignal.timeout(timeoutMs)
141
+ });
142
+ if (!clearRes.ok && clearRes.status !== 200) {
143
+ // Fallback to settings update with null token
144
+ const patchRes = await fetch(`${baseUrl}/api/org/${orgId}/settings`, {
145
+ method: "PUT",
146
+ headers: authHeaders,
147
+ body: JSON.stringify({ license_token: "" }),
148
+ dispatcher: insecureAgent,
149
+ signal: AbortSignal.timeout(timeoutMs)
150
+ });
151
+ if (!patchRes.ok) {
152
+ throw new Error(`Failed to clear license: HTTP ${patchRes.status}`);
153
+ }
154
+ }
155
+ licenseInfo = {
156
+ tier: "Community",
157
+ active: false,
158
+ days_remaining: 0
159
+ };
160
+ }
161
+ else {
162
+ // Mint token if not explicitly provided
163
+ if (token && token.trim()) {
164
+ resultingToken = token.trim();
165
+ }
166
+ else {
167
+ const minted = generateTrialLicenseToken({
168
+ tier,
169
+ days,
170
+ orgId,
171
+ signer: process.env.JWT_SECRET || DEFAULT_LICENSE_SIGNER
172
+ });
173
+ resultingToken = minted.token;
174
+ licenseInfo = {
175
+ tier: minted.tier,
176
+ days: minted.days,
177
+ issuedAt: minted.issuedAt,
178
+ expiresAt: minted.expiresAt
179
+ };
180
+ }
181
+ defaultRedactor.registerSecret(resultingToken);
182
+ // Apply license token via PUT /api/org/:id/settings
183
+ const settingsUrl = `${baseUrl}/api/org/${orgId}/settings`;
184
+ const updateRes = await fetch(settingsUrl, {
185
+ method: "PUT",
186
+ headers: authHeaders,
187
+ body: JSON.stringify({ license_token: resultingToken }),
188
+ dispatcher: insecureAgent,
189
+ signal: AbortSignal.timeout(timeoutMs)
190
+ });
191
+ if (!updateRes.ok && updateRes.status !== 200) {
192
+ // Retry with PATCH
193
+ const patchRes = await fetch(settingsUrl, {
194
+ method: "PATCH",
195
+ headers: authHeaders,
196
+ body: JSON.stringify({ license_token: resultingToken }),
197
+ dispatcher: insecureAgent,
198
+ signal: AbortSignal.timeout(timeoutMs)
199
+ });
200
+ if (!patchRes.ok) {
201
+ const errText = await patchRes.text().catch(() => "");
202
+ throw new Error(`License update returned HTTP ${patchRes.status}: ${errText.substring(0, 200)}`);
203
+ }
204
+ }
205
+ }
206
+ // 2. Verify resulting license status
207
+ const verifyRes = await fetch(`${baseUrl}/api/org/${orgId}/settings`, {
208
+ method: "GET",
209
+ headers: authHeaders,
210
+ dispatcher: insecureAgent,
211
+ signal: AbortSignal.timeout(timeoutMs)
212
+ });
213
+ let verifiedStatus = {};
214
+ if (verifyRes.ok) {
215
+ const verifyJson = (await verifyRes.json().catch(() => ({}))) || {};
216
+ const settings = verifyJson.settings || verifyJson.data || verifyJson;
217
+ const lic = settings.license || settings.license_map || {};
218
+ verifiedStatus = {
219
+ tier: settings.license_level || lic.subscription || lic.level || tier,
220
+ active: lic.active !== undefined ? lic.active : tier !== "Community",
221
+ days_remaining: lic.days_remaining !== undefined ? lic.days_remaining : days,
222
+ is_community: settings.is_community || tier === "Community"
223
+ };
224
+ }
225
+ telemetry.emit({
226
+ event: "appliance.license.applied",
227
+ actor: "ct-lab-mcp",
228
+ status: "success",
229
+ linearIssue: "API-1895",
230
+ metadata: {
231
+ target: targetIp,
232
+ orgId,
233
+ tier,
234
+ days,
235
+ active: verifiedStatus.active
236
+ }
237
+ });
238
+ const resultPayload = {
239
+ success: true,
240
+ message: `License successfully updated to ${tier} (${days} days) for org ${orgId}`,
241
+ targetUrl: baseUrl,
242
+ orgId,
243
+ requestedTier: tier,
244
+ verifiedStatus,
245
+ licenseInfo
246
+ };
247
+ return {
248
+ content: [
249
+ {
250
+ type: "text",
251
+ text: JSON.stringify(resultPayload, null, 2)
252
+ }
253
+ ]
254
+ };
255
+ }
256
+ catch (err) {
257
+ logger.error(`Failed to apply license on ${targetIp}: ${err.message}`);
258
+ return createToolErrorResult(ProxmoxErrorCode.APPLIANCE_EXECUTION_FAILED, `License application failed on ${targetIp}: ${err.message}`);
259
+ }
260
+ }
261
+ //# sourceMappingURL=license-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-tools.js","sourceRoot":"","sources":["../../../src/tools/license-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@calltelemetry/ct-lab-mcp",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "Expanded Model Context Protocol (MCP) server for Call Telemetry lab, fleet, and appliance management across Proxmox VE and VMware ESXi.",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",