@calltelemetry/ct-lab-mcp 0.8.26 → 0.8.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/src/tools/factory-reset.d.ts.map +1 -1
- package/dist/src/tools/factory-reset.js +58 -28
- package/dist/src/tools/factory-reset.js.map +1 -1
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +10 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/license-tools.d.ts +45 -8
- package/dist/src/tools/license-tools.d.ts.map +1 -1
- package/dist/src/tools/license-tools.js +100 -36
- package/dist/src/tools/license-tools.js.map +1 -1
- package/dist/src/tools/server-management.d.ts.map +1 -1
- package/dist/src/tools/server-management.js +36 -10
- package/dist/src/tools/server-management.js.map +1 -1
- package/dist/src/utils/dashboard-license.d.ts +83 -0
- package/dist/src/utils/dashboard-license.d.ts.map +1 -0
- package/dist/src/utils/dashboard-license.js +176 -0
- package/dist/src/utils/dashboard-license.js.map +1 -0
- package/package.json +1 -1
- package/dist/src/utils/license.d.ts +0 -27
- package/dist/src/utils/license.d.ts.map +0 -1
- package/dist/src/utils/license.js +0 -59
- package/dist/src/utils/license.js.map +0 -1
package/README.md
CHANGED
|
@@ -134,6 +134,8 @@ ct-lab-mcp [options]
|
|
|
134
134
|
| `--doppler-project <name>`| Doppler project name | *None* | `DOPPLER_PROJECT` |
|
|
135
135
|
| `--doppler-config <name>` | Doppler environment / config | *None* | `DOPPLER_CONFIG` |
|
|
136
136
|
| *None* | Bound Doppler API resolution; invalid values use 8 seconds, valid values clamp to 250-30000 ms | `8000` | `CT_LAB_MCP_RESOLVE_TIMEOUT_MS` |
|
|
137
|
+
| *None* | ct-dashboard base URL used to issue lab licenses | `https://dash.calltelemetry.com` | `DASHBOARD_URL` |
|
|
138
|
+
| *None* | CRM API key with `licenses:write`, used to issue lab licenses (Doppler `ai-workspace/prd`) | *None* | `DASHBOARD_API_KEY` |
|
|
137
139
|
| `--force-mock` | Force in-memory mock hypervisor & appliance mode | `false` | `CT_LAB_MOCK_MODE` |
|
|
138
140
|
| `--redact-secrets` | Enforce strict secret redaction on all logs | `true` | *None* |
|
|
139
141
|
| `preflight --asset-id <id> --linear-issue <key>` | Validate canonical inventory, exact VM identity, and release-line qualification before guest commands | n/a | `CT_LAB_CANONICAL_CLI`, `LAB_INVENTORY_FILE`, `CT_LAB_CANONICAL_REQUIRED` |
|
|
@@ -691,6 +693,53 @@ npm pack --dry-run
|
|
|
691
693
|
|
|
692
694
|
---
|
|
693
695
|
|
|
696
|
+
## Appliance licensing
|
|
697
|
+
|
|
698
|
+
`apply_license` does not mint tokens. Appliances cannot sign their own
|
|
699
|
+
(`Cdrcisco.Token.trial/4` is compiled out of `:onprem`/`:prod` builds —
|
|
700
|
+
cisco-cdr #5070 / #5071, API-3202), and ct-lab-mcp no longer mints either: the
|
|
701
|
+
old local path carried the same shared HS256 secret **and** emitted a claim
|
|
702
|
+
shape (`tier`, `iss: calltelemetry_lab_mcp`) that the appliance rejected, so the
|
|
703
|
+
box quietly stayed Community while the tool reported success.
|
|
704
|
+
|
|
705
|
+
Licenses now come from ct-dashboard, the one issuing authority:
|
|
706
|
+
|
|
707
|
+
```
|
|
708
|
+
POST {DASHBOARD_URL}/api/crm/licenses/lab Authorization: Bearer $DASHBOARD_API_KEY
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Set `DASHBOARD_API_KEY` (Doppler `ai-workspace/prd`) before using `apply_license`
|
|
712
|
+
or `factory_reset_appliance`. Without it the tool fails immediately and says so,
|
|
713
|
+
rather than applying a token the appliance will reject.
|
|
714
|
+
|
|
715
|
+
### The license is linked to the VM
|
|
716
|
+
|
|
717
|
+
Every issued key records the box it was issued for in its CRM notes:
|
|
718
|
+
|
|
719
|
+
```
|
|
720
|
+
[lab] ct-lab-mcp ip=192.168.124.229 vm=ct-uat-229 vmid=129 host=proxmox-mini claim=UAT-1234
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
Pass `vmName`, `vmId`, `host`, `linearIssue`, and `purpose` to `apply_license` —
|
|
724
|
+
the values `claim_slot` / `auto_provision_vm` already returned. `targetIp` is
|
|
725
|
+
always recorded.
|
|
726
|
+
|
|
727
|
+
That makes the link traversable in both directions:
|
|
728
|
+
|
|
729
|
+
- **license → VM**: `GET /api/crm/licenses?org_id=<lab org>` and read `notes`
|
|
730
|
+
(`parseVmLicenseNote` in `src/utils/dashboard-license.ts` parses it back into
|
|
731
|
+
fields).
|
|
732
|
+
- **VM → license**: the `apply_license` result carries `licenseInfo.licenseId`,
|
|
733
|
+
`keyPrefix`, and `expiresAt`, and the same ids go out on the
|
|
734
|
+
`appliance.license.applied` telemetry event.
|
|
735
|
+
|
|
736
|
+
Lab keys are tagged `sku: "LAB"` on the dashboard side, so they never mix with
|
|
737
|
+
revenue licenses. Tiers are `Demo` (default), `Beta`, and `Premium`; commercial
|
|
738
|
+
tiers are not issuable as lab keys. `Community` clears the license instead of
|
|
739
|
+
issuing one.
|
|
740
|
+
|
|
741
|
+
---
|
|
742
|
+
|
|
694
743
|
## License
|
|
695
744
|
|
|
696
745
|
MIT © 2026 [Call Telemetry](https://calltelemetry.com) / Contributors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory-reset.d.ts","sourceRoot":"","sources":["../../../src/tools/factory-reset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory-reset.d.ts","sourceRoot":"","sources":["../../../src/tools/factory-reset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AA6B1F,eAAO,MAAM,sBAAsB;;;;;;;;;CASlC,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,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAkMzB"}
|
|
@@ -10,11 +10,33 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
13
|
-
import { generateTrialLicenseToken } from "../utils/license.js";
|
|
14
13
|
import { logger } from "../utils/logger.js";
|
|
15
|
-
import { defaultRedactor } from "../utils/redactor.js";
|
|
16
14
|
import { telemetry } from "../telemetry/registry.js";
|
|
17
15
|
import { applianceSshExecutor } from "../appliance/executor.js";
|
|
16
|
+
import { handleApplyLicense } from "./license-tools.js";
|
|
17
|
+
/**
|
|
18
|
+
* Pull the payload out of a CallToolResult.
|
|
19
|
+
*
|
|
20
|
+
* Errors carry `structuredContent`; apply_license's success path returns JSON in
|
|
21
|
+
* its text block. Check both so a failure still yields its error message.
|
|
22
|
+
*/
|
|
23
|
+
function parseToolPayload(result) {
|
|
24
|
+
if (result.structuredContent)
|
|
25
|
+
return result.structuredContent;
|
|
26
|
+
const text = firstText(result);
|
|
27
|
+
if (!text)
|
|
28
|
+
return null;
|
|
29
|
+
try {
|
|
30
|
+
return JSON.parse(text);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function firstText(result) {
|
|
37
|
+
const block = result.content?.find((c) => c?.type === "text");
|
|
38
|
+
return block && typeof block.text === "string" ? block.text : null;
|
|
39
|
+
}
|
|
18
40
|
export const FactoryResetInputShape = {
|
|
19
41
|
targetIp: z.string().describe("Target IP address or hostname of the Call Telemetry appliance VM (SSH on port 2222)."),
|
|
20
42
|
version: z.string().optional().describe("Optional target release version to deploy/pin (e.g. '0.8.7', '0.8.7-stable', '0.8.6', 'latest')."),
|
|
@@ -83,45 +105,53 @@ export async function handleFactoryReset(args, context) {
|
|
|
83
105
|
else {
|
|
84
106
|
stepResults.push({ step: "Run Migrations", status: "skipped", detail: "Skipped per options." });
|
|
85
107
|
}
|
|
86
|
-
// 4. Step 4:
|
|
108
|
+
// 4. Step 4: Issue a lab license from ct-dashboard and apply it.
|
|
109
|
+
//
|
|
110
|
+
// This step used to mint a token locally, run `echo license_ready` over SSH,
|
|
111
|
+
// and report "Applied ... license" — the token never reached the appliance,
|
|
112
|
+
// and its claim shape was one the appliance rejects anyway. It now delegates
|
|
113
|
+
// to apply_license, which issues from ct-dashboard (VM recorded in the
|
|
114
|
+
// license notes) and PUTs it onto the appliance, and it reports what
|
|
115
|
+
// actually happened.
|
|
87
116
|
let licenseInfo = null;
|
|
88
117
|
if (applyLicense) {
|
|
89
|
-
logger.info(`[Step 4/5]
|
|
90
|
-
const
|
|
118
|
+
logger.info(`[Step 4/5] Issuing and applying ${licenseTier} (${licenseDays} days) license on ${targetIp}...`);
|
|
119
|
+
const applyResult = await handleApplyLicense({
|
|
120
|
+
targetIp,
|
|
91
121
|
tier: licenseTier,
|
|
92
122
|
days: licenseDays,
|
|
93
|
-
orgId: 1
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
defaultRedactor.registerSecret(minted.token);
|
|
103
|
-
await executor.execute({
|
|
104
|
-
targetIp,
|
|
105
|
-
action: "raw_whitelisted",
|
|
106
|
-
params: { rawCommand: "echo license_ready" },
|
|
107
|
-
timeoutMs: 15000
|
|
108
|
-
}).catch(() => { });
|
|
123
|
+
orgId: 1,
|
|
124
|
+
purpose: "factory-reset"
|
|
125
|
+
}, context);
|
|
126
|
+
const applyPayload = parseToolPayload(applyResult);
|
|
127
|
+
if (applyResult.isError || applyPayload?.success !== true) {
|
|
128
|
+
const detail = applyPayload?.error?.message ||
|
|
129
|
+
firstText(applyResult) ||
|
|
130
|
+
"License issuance/apply failed.";
|
|
131
|
+
licenseInfo = { applied: false, error: detail };
|
|
109
132
|
stepResults.push({
|
|
110
|
-
step: "Apply
|
|
111
|
-
status: "
|
|
112
|
-
detail
|
|
133
|
+
step: "Apply Lab License",
|
|
134
|
+
status: "failed",
|
|
135
|
+
detail
|
|
113
136
|
});
|
|
114
137
|
}
|
|
115
|
-
|
|
138
|
+
else {
|
|
139
|
+
licenseInfo = {
|
|
140
|
+
applied: true,
|
|
141
|
+
tier: applyPayload.requestedTier,
|
|
142
|
+
days: licenseDays,
|
|
143
|
+
...(applyPayload.licenseInfo || {}),
|
|
144
|
+
verifiedStatus: applyPayload.verifiedStatus
|
|
145
|
+
};
|
|
116
146
|
stepResults.push({
|
|
117
|
-
step: "Apply
|
|
147
|
+
step: "Apply Lab License",
|
|
118
148
|
status: "success",
|
|
119
|
-
detail: `
|
|
149
|
+
detail: `Applied ${applyPayload.requestedTier} license (${licenseDays} days) issued by ${applyPayload.licenseInfo?.source ?? "ct-dashboard"}.`
|
|
120
150
|
});
|
|
121
151
|
}
|
|
122
152
|
}
|
|
123
153
|
else {
|
|
124
|
-
stepResults.push({ step: "Apply
|
|
154
|
+
stepResults.push({ step: "Apply Lab License", status: "skipped", detail: "Skipped license issuance." });
|
|
125
155
|
}
|
|
126
156
|
// 5. Step 5: Assert Health and Service Status
|
|
127
157
|
if (assertHealth) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory-reset.js","sourceRoot":"","sources":["../../../src/tools/factory-reset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAkB,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"factory-reset.js","sourceRoot":"","sources":["../../../src/tools/factory-reset.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAEpE,OAAO,EAIL,WAAW,EACZ,MAAM,iBAAiB,CAAC;AA+OzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,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;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAYhD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,
|
|
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;AAEpE,OAAO,EAIL,WAAW,EACZ,MAAM,iBAAiB,CAAC;AA+OzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,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;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAYhD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAksBjF"}
|
package/dist/src/tools/index.js
CHANGED
|
@@ -120,12 +120,22 @@ export function registerAllTools(mcpServer, context) {
|
|
|
120
120
|
"get_sip_trunk_status",
|
|
121
121
|
"setup_cucm_emulator",
|
|
122
122
|
]);
|
|
123
|
+
// Transport-lifecycle tools must never be gated on hypervisor credentials.
|
|
124
|
+
// `reload` and `restart` are the mechanism by which a credentialed process is
|
|
125
|
+
// (re)obtained, so gating them on those same credentials deadlocks recovery:
|
|
126
|
+
// a credential-less process can neither refresh nor respawn itself, and the
|
|
127
|
+
// only exit is a human harness restart. Respawn is a transport concern, not a
|
|
128
|
+
// hypervisor-authorization concern; destructive/hypervisor tools stay gated.
|
|
129
|
+
const lifecycleUngatedTools = new Set([
|
|
130
|
+
"manage_mcp_server",
|
|
131
|
+
]);
|
|
123
132
|
const rawTool = server.tool.bind(server);
|
|
124
133
|
const registerTool = server.tool.bind(server);
|
|
125
134
|
const guardToolHandler = (name, handler) => async (toolArgs) => {
|
|
126
135
|
const canonicalCredentialsOwned = canonicalBridgeOwnsCredentials(context, name, toolArgs);
|
|
127
136
|
if (context.credentialError
|
|
128
137
|
&& name !== "credential_status"
|
|
138
|
+
&& !lifecycleUngatedTools.has(name)
|
|
129
139
|
&& !canonicalCredentialsOwned) {
|
|
130
140
|
return createToolErrorResult("CREDENTIALS_UNAVAILABLE", "Lab credentials are unavailable. Call credential_status for safe diagnostics, then repair the configured credential source before retrying this operation.", {
|
|
131
141
|
reason: context.credentialError.reason,
|
|
@@ -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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"}
|
|
@@ -1,17 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Appliance License Management Tools
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Applies, renews, and clears Call Telemetry license tokens on target appliance
|
|
5
|
+
* VMs via the appliance Phoenix REST API.
|
|
6
|
+
*
|
|
7
|
+
* Licenses are ISSUED by ct-dashboard, not here. Appliances can no longer sign
|
|
8
|
+
* their own (`Cdrcisco.Token.trial/4` is compiled out of `:onprem`/`:prod`
|
|
9
|
+
* builds — cisco-cdr #5070 / #5071, API-3202), and ct-lab-mcp no longer mints
|
|
10
|
+
* locally either: the old path carried the same shared HS256 secret and emitted
|
|
11
|
+
* a claim shape the appliance rejected. See `../utils/dashboard-license.ts`.
|
|
12
|
+
*
|
|
13
|
+
* Every issued key records the VM it was issued for in its CRM notes, so a
|
|
14
|
+
* license row in `GET /api/crm/licenses` points back at a specific lab box.
|
|
6
15
|
*/
|
|
7
16
|
import { z } from "zod";
|
|
8
17
|
import { ToolContext } from "./list-hosts.js";
|
|
9
18
|
import { CallToolResult } from "../types/mcp.js";
|
|
10
19
|
export declare const ApplyLicenseInputShape: {
|
|
11
20
|
targetIp: z.ZodString;
|
|
12
|
-
tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<["
|
|
21
|
+
tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<["Demo", "Beta", "Premium", "Community"]>>>;
|
|
13
22
|
days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
14
23
|
orgId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
24
|
+
vmName: z.ZodOptional<z.ZodString>;
|
|
25
|
+
vmId: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
|
|
26
|
+
host: z.ZodOptional<z.ZodString>;
|
|
27
|
+
linearIssue: z.ZodOptional<z.ZodString>;
|
|
28
|
+
purpose: z.ZodOptional<z.ZodString>;
|
|
29
|
+
dashboardUrl: z.ZodOptional<z.ZodString>;
|
|
30
|
+
dashboardApiKey: z.ZodOptional<z.ZodString>;
|
|
15
31
|
token: z.ZodOptional<z.ZodString>;
|
|
16
32
|
email: z.ZodOptional<z.ZodString>;
|
|
17
33
|
password: z.ZodOptional<z.ZodString>;
|
|
@@ -19,31 +35,52 @@ export declare const ApplyLicenseInputShape: {
|
|
|
19
35
|
};
|
|
20
36
|
export declare const ApplyLicenseInputSchema: z.ZodObject<{
|
|
21
37
|
targetIp: z.ZodString;
|
|
22
|
-
tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<["
|
|
38
|
+
tier: z.ZodDefault<z.ZodOptional<z.ZodEnum<["Demo", "Beta", "Premium", "Community"]>>>;
|
|
23
39
|
days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
24
40
|
orgId: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
41
|
+
vmName: z.ZodOptional<z.ZodString>;
|
|
42
|
+
vmId: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
|
|
43
|
+
host: z.ZodOptional<z.ZodString>;
|
|
44
|
+
linearIssue: z.ZodOptional<z.ZodString>;
|
|
45
|
+
purpose: z.ZodOptional<z.ZodString>;
|
|
46
|
+
dashboardUrl: z.ZodOptional<z.ZodString>;
|
|
47
|
+
dashboardApiKey: z.ZodOptional<z.ZodString>;
|
|
25
48
|
token: z.ZodOptional<z.ZodString>;
|
|
26
49
|
email: z.ZodOptional<z.ZodString>;
|
|
27
50
|
password: z.ZodOptional<z.ZodString>;
|
|
28
51
|
timeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
29
52
|
}, "strip", z.ZodTypeAny, {
|
|
30
53
|
targetIp: string;
|
|
31
|
-
tier: "
|
|
54
|
+
tier: "Demo" | "Beta" | "Premium" | "Community";
|
|
32
55
|
timeoutMs: number;
|
|
33
|
-
days: number;
|
|
34
56
|
orgId: number;
|
|
57
|
+
days: number;
|
|
35
58
|
token?: string | undefined;
|
|
36
59
|
email?: string | undefined;
|
|
60
|
+
host?: string | undefined;
|
|
61
|
+
vmId?: string | number | undefined;
|
|
62
|
+
vmName?: string | undefined;
|
|
63
|
+
linearIssue?: string | undefined;
|
|
37
64
|
password?: string | undefined;
|
|
65
|
+
purpose?: string | undefined;
|
|
66
|
+
dashboardUrl?: string | undefined;
|
|
67
|
+
dashboardApiKey?: string | undefined;
|
|
38
68
|
}, {
|
|
39
69
|
targetIp: string;
|
|
40
70
|
token?: string | undefined;
|
|
41
71
|
email?: string | undefined;
|
|
42
|
-
|
|
72
|
+
host?: string | undefined;
|
|
73
|
+
vmId?: string | number | undefined;
|
|
74
|
+
vmName?: string | undefined;
|
|
75
|
+
linearIssue?: string | undefined;
|
|
76
|
+
tier?: "Demo" | "Beta" | "Premium" | "Community" | undefined;
|
|
43
77
|
password?: string | undefined;
|
|
78
|
+
purpose?: string | undefined;
|
|
44
79
|
timeoutMs?: number | undefined;
|
|
45
|
-
days?: number | undefined;
|
|
46
80
|
orgId?: number | undefined;
|
|
81
|
+
days?: number | undefined;
|
|
82
|
+
dashboardUrl?: string | undefined;
|
|
83
|
+
dashboardApiKey?: string | undefined;
|
|
47
84
|
}>;
|
|
48
85
|
export type ApplyLicenseInput = z.infer<typeof ApplyLicenseInputSchema>;
|
|
49
86
|
export declare function handleApplyLicense(args: unknown, _context: ToolContext): Promise<CallToolResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/license-tools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"license-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/license-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAgB1F,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;CAoElC,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,CA2QzB"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Appliance License Management Tools
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Applies, renews, and clears Call Telemetry license tokens on target appliance
|
|
5
|
+
* VMs via the appliance Phoenix REST API.
|
|
6
|
+
*
|
|
7
|
+
* Licenses are ISSUED by ct-dashboard, not here. Appliances can no longer sign
|
|
8
|
+
* their own (`Cdrcisco.Token.trial/4` is compiled out of `:onprem`/`:prod`
|
|
9
|
+
* builds — cisco-cdr #5070 / #5071, API-3202), and ct-lab-mcp no longer mints
|
|
10
|
+
* locally either: the old path carried the same shared HS256 secret and emitted
|
|
11
|
+
* a claim shape the appliance rejected. See `../utils/dashboard-license.ts`.
|
|
12
|
+
*
|
|
13
|
+
* Every issued key records the VM it was issued for in its CRM notes, so a
|
|
14
|
+
* license row in `GET /api/crm/licenses` points back at a specific lab box.
|
|
6
15
|
*/
|
|
7
16
|
import { z } from "zod";
|
|
8
17
|
import { Agent, fetch } from "undici";
|
|
9
18
|
import { ProxmoxErrorCode, createToolErrorResult } from "../types/mcp.js";
|
|
10
|
-
import {
|
|
19
|
+
import { issueLabLicense, LabLicenseError } from "../utils/dashboard-license.js";
|
|
11
20
|
import { logger } from "../utils/logger.js";
|
|
12
21
|
import { defaultRedactor } from "../utils/redactor.js";
|
|
13
22
|
import { telemetry } from "../telemetry/registry.js";
|
|
@@ -22,29 +31,50 @@ export const ApplyLicenseInputShape = {
|
|
|
22
31
|
.min(1)
|
|
23
32
|
.describe("Target IP address or hostname of the Call Telemetry appliance (e.g. '192.168.124.229' or 'https://192.168.124.229')."),
|
|
24
33
|
tier: z
|
|
25
|
-
.enum(["
|
|
34
|
+
.enum(["Demo", "Beta", "Premium", "Community"])
|
|
26
35
|
.optional()
|
|
27
|
-
.default("
|
|
28
|
-
.describe("Target license tier (default: '
|
|
36
|
+
.default("Demo")
|
|
37
|
+
.describe("Target license tier (default: 'Demo' — every feature gate on, unlimited history windows). " +
|
|
38
|
+
"'Community' clears the license instead of issuing one. Commercial tiers (Essentials, " +
|
|
39
|
+
"Advanced, Enterprise) are not issuable as lab keys; use the CRM endpoint with a contact."),
|
|
29
40
|
days: z
|
|
30
41
|
.number()
|
|
31
42
|
.int()
|
|
32
43
|
.min(1)
|
|
33
44
|
.max(365)
|
|
34
45
|
.optional()
|
|
35
|
-
.default(
|
|
36
|
-
.describe("License validity in days (default:
|
|
46
|
+
.default(45)
|
|
47
|
+
.describe("License validity in days (default: 45, min: 1, max: 365)."),
|
|
37
48
|
orgId: z
|
|
38
49
|
.number()
|
|
39
50
|
.int()
|
|
40
51
|
.positive()
|
|
41
52
|
.optional()
|
|
42
53
|
.default(1)
|
|
43
|
-
.describe("
|
|
54
|
+
.describe("Organization ID ON THE APPLIANCE that the token is applied to (default: 1). Unrelated to the dashboard org that issues it."),
|
|
55
|
+
vmName: z.string().optional().describe("Lab VM name, recorded in the license notes (e.g. 'ct-uat-229')."),
|
|
56
|
+
vmId: z
|
|
57
|
+
.union([z.number().int(), z.string()])
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Hypervisor VM id, recorded in the license notes (e.g. 129)."),
|
|
60
|
+
host: z.string().optional().describe("Hypervisor host the VM lives on, recorded in the license notes (e.g. 'proxmox-mini')."),
|
|
61
|
+
linearIssue: z
|
|
62
|
+
.string()
|
|
63
|
+
.optional()
|
|
64
|
+
.describe("Linear issue holding the slot claim (e.g. 'UAT-1234'), recorded in the license notes."),
|
|
65
|
+
purpose: z.string().optional().describe("Short reason the VM needs a license, recorded in the license notes."),
|
|
66
|
+
dashboardUrl: z
|
|
67
|
+
.string()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("ct-dashboard base URL (default: DASHBOARD_URL env or https://dash.calltelemetry.com)."),
|
|
70
|
+
dashboardApiKey: z
|
|
71
|
+
.string()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe("CRM API key with licenses:write (default: DASHBOARD_API_KEY env)."),
|
|
44
74
|
token: z
|
|
45
75
|
.string()
|
|
46
76
|
.optional()
|
|
47
|
-
.describe("
|
|
77
|
+
.describe("Pre-issued license JWT to apply as-is. Skips issuance; use when you already hold a key from ct-dashboard."),
|
|
48
78
|
email: z
|
|
49
79
|
.string()
|
|
50
80
|
.optional()
|
|
@@ -69,7 +99,8 @@ export async function handleApplyLicense(args, _context) {
|
|
|
69
99
|
const issues = parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ");
|
|
70
100
|
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, issues);
|
|
71
101
|
}
|
|
72
|
-
const { targetIp, tier, days, orgId, token, email, password, timeoutMs } = parsed.data;
|
|
102
|
+
const { targetIp, tier, days, orgId, token, email, password, timeoutMs, vmName, vmId, host, linearIssue, purpose, dashboardUrl, dashboardApiKey } = parsed.data;
|
|
103
|
+
const vm = { targetIp, vmName, vmId, host, linearIssue, purpose };
|
|
73
104
|
// Normalize target URL
|
|
74
105
|
let baseUrl = targetIp.trim();
|
|
75
106
|
if (!baseUrl.startsWith("http://") && !baseUrl.startsWith("https://")) {
|
|
@@ -78,7 +109,47 @@ export async function handleApplyLicense(args, _context) {
|
|
|
78
109
|
baseUrl = baseUrl.replace(/\/+$/, "");
|
|
79
110
|
logger.info(`Applying ${tier} license (${days} days) to org ${orgId} on ${baseUrl}...`);
|
|
80
111
|
try {
|
|
81
|
-
|
|
112
|
+
let resultingToken = null;
|
|
113
|
+
let licenseInfo = {};
|
|
114
|
+
// 1. Obtain the token FIRST. ct-lab-mcp never mints: either the caller
|
|
115
|
+
// supplies a key they already hold, or ct-dashboard issues one against
|
|
116
|
+
// CallTelemetry's org with this VM recorded in its notes.
|
|
117
|
+
//
|
|
118
|
+
// Issuance runs before appliance auth on purpose — a missing
|
|
119
|
+
// DASHBOARD_API_KEY or unset LAB_LICENSE_ORG_ID should fail in a second
|
|
120
|
+
// with the real reason, not after six credential attempts against a box
|
|
121
|
+
// that was never the problem.
|
|
122
|
+
if (tier !== "Community") {
|
|
123
|
+
if (token && token.trim()) {
|
|
124
|
+
resultingToken = token.trim();
|
|
125
|
+
licenseInfo = { source: "caller_supplied" };
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const issued = await issueLabLicense({
|
|
129
|
+
tier,
|
|
130
|
+
days,
|
|
131
|
+
vm,
|
|
132
|
+
dashboardUrl,
|
|
133
|
+
apiKey: dashboardApiKey,
|
|
134
|
+
timeoutMs
|
|
135
|
+
});
|
|
136
|
+
resultingToken = issued.token;
|
|
137
|
+
licenseInfo = {
|
|
138
|
+
source: "ct-dashboard",
|
|
139
|
+
issuedVia: issued.issuedVia,
|
|
140
|
+
licenseId: issued.licenseId,
|
|
141
|
+
dashboardOrgId: issued.orgId,
|
|
142
|
+
subscriptionType: issued.subscriptionType,
|
|
143
|
+
days: issued.durationDays,
|
|
144
|
+
expiresAt: issued.expiresAt,
|
|
145
|
+
keyPrefix: issued.keyPrefix,
|
|
146
|
+
keySuffix: issued.keySuffix,
|
|
147
|
+
notes: issued.notes,
|
|
148
|
+
vm
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// 2. Authenticate to obtain session token
|
|
82
153
|
// Try provided credentials, or fallback candidate list
|
|
83
154
|
const candidateCredentials = [
|
|
84
155
|
...(email && password ? [{ email, password }] : []),
|
|
@@ -127,8 +198,6 @@ export async function handleApplyLicense(args, _context) {
|
|
|
127
198
|
if (!authenticated) {
|
|
128
199
|
throw new Error(`Authentication to ${sessionUrl} failed: ${lastAuthError}`);
|
|
129
200
|
}
|
|
130
|
-
let resultingToken = null;
|
|
131
|
-
let licenseInfo = {};
|
|
132
201
|
if (tier === "Community") {
|
|
133
202
|
// Clear license
|
|
134
203
|
logger.info(`Clearing license for org ${orgId} on ${baseUrl} (downgrade to Community)...`);
|
|
@@ -159,25 +228,6 @@ export async function handleApplyLicense(args, _context) {
|
|
|
159
228
|
};
|
|
160
229
|
}
|
|
161
230
|
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
231
|
defaultRedactor.registerSecret(resultingToken);
|
|
182
232
|
// Apply license token via PUT /api/org/:id/settings
|
|
183
233
|
const settingsUrl = `${baseUrl}/api/org/${orgId}/settings`;
|
|
@@ -226,21 +276,28 @@ export async function handleApplyLicense(args, _context) {
|
|
|
226
276
|
event: "appliance.license.applied",
|
|
227
277
|
actor: "ct-lab-mcp",
|
|
228
278
|
status: "success",
|
|
229
|
-
linearIssue: "API-
|
|
279
|
+
linearIssue: "API-3202",
|
|
230
280
|
metadata: {
|
|
231
281
|
target: targetIp,
|
|
232
282
|
orgId,
|
|
233
283
|
tier,
|
|
234
284
|
days,
|
|
235
|
-
active: verifiedStatus.active
|
|
285
|
+
active: verifiedStatus.active,
|
|
286
|
+
issuedBy: licenseInfo.source ?? null,
|
|
287
|
+
dashboardLicenseId: licenseInfo.licenseId ?? null,
|
|
288
|
+
vmName: vmName ?? null,
|
|
289
|
+
vmId: vmId ?? null,
|
|
290
|
+
host: host ?? null,
|
|
291
|
+
linearIssue: linearIssue ?? null
|
|
236
292
|
}
|
|
237
293
|
});
|
|
238
294
|
const resultPayload = {
|
|
239
295
|
success: true,
|
|
240
|
-
message: `License successfully updated to ${tier} (${days} days) for org ${orgId}`,
|
|
296
|
+
message: `License successfully updated to ${tier} (${days} days) for appliance org ${orgId}`,
|
|
241
297
|
targetUrl: baseUrl,
|
|
242
298
|
orgId,
|
|
243
299
|
requestedTier: tier,
|
|
300
|
+
vm,
|
|
244
301
|
verifiedStatus,
|
|
245
302
|
licenseInfo
|
|
246
303
|
};
|
|
@@ -254,6 +311,13 @@ export async function handleApplyLicense(args, _context) {
|
|
|
254
311
|
};
|
|
255
312
|
}
|
|
256
313
|
catch (err) {
|
|
314
|
+
// Issuance failures are configuration problems (no API key, lab org not set,
|
|
315
|
+
// dashboard unreachable) — not the appliance failing. Say so, or the operator
|
|
316
|
+
// goes looking at the wrong box.
|
|
317
|
+
if (err instanceof LabLicenseError) {
|
|
318
|
+
logger.error(`Could not issue a lab license for ${targetIp}: ${err.message}`);
|
|
319
|
+
return createToolErrorResult(ProxmoxErrorCode.VALIDATION_ERROR, err.message);
|
|
320
|
+
}
|
|
257
321
|
logger.error(`Failed to apply license on ${targetIp}: ${err.message}`);
|
|
258
322
|
return createToolErrorResult(ProxmoxErrorCode.APPLIANCE_EXECUTION_FAILED, `License application failed on ${targetIp}: ${err.message}`);
|
|
259
323
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-tools.js","sourceRoot":"","sources":["../../../src/tools/license-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"license-tools.js","sourceRoot":"","sources":["../../../src/tools/license-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-management.d.ts","sourceRoot":"","sources":["../../../src/tools/server-management.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAoE,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-management.d.ts","sourceRoot":"","sources":["../../../src/tools/server-management.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAoE,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAS9C,eAAO,MAAM,yBAAyB;;;;CAgBrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAqBjC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;EAAsC,CAAC;AAE9E,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAmKzB"}
|
|
@@ -8,6 +8,8 @@ import { z } from "zod";
|
|
|
8
8
|
import { execSync } from "child_process";
|
|
9
9
|
import { ProxmoxErrorCode, createToolErrorResult, createToolSuccessResult } from "../types/mcp.js";
|
|
10
10
|
import { logger } from "../utils/logger.js";
|
|
11
|
+
import { credentialResolver } from "../credentials/resolver.js";
|
|
12
|
+
import { CredentialResolutionError } from "../credentials/errors.js";
|
|
11
13
|
const CURRENT_VERSION = "0.1.9";
|
|
12
14
|
const PACKAGE_NAME = "@calltelemetry/ct-lab-mcp";
|
|
13
15
|
const START_TIME = Date.now();
|
|
@@ -140,28 +142,52 @@ export async function handleManageMcpServer(args, context) {
|
|
|
140
142
|
return createToolSuccessResult(lines.join("\n"));
|
|
141
143
|
}
|
|
142
144
|
if (action === "reload") {
|
|
143
|
-
lines.push("### 🔄
|
|
144
|
-
logger.info("Executing
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
//
|
|
145
|
+
lines.push("### 🔄 Reloading MCP Server Credential State\n");
|
|
146
|
+
logger.info("Executing credential reload: re-resolving lab credentials into the live context...");
|
|
147
|
+
// Re-resolve through the same cascade used at startup. The resolver reads
|
|
148
|
+
// process.env fresh, so a credential source that appeared after spawn
|
|
149
|
+
// (e.g. a Doppler token injected by the launcher) is picked up here.
|
|
150
|
+
// This is deliberately NOT gated on the previous credential state: a
|
|
151
|
+
// credential-less process must be able to recover itself (REL-918).
|
|
152
|
+
const previousTier = context.credentials?.tier ?? "unavailable";
|
|
153
|
+
const previousError = context.credentialError?.reason ?? null;
|
|
154
|
+
try {
|
|
155
|
+
const resolved = await credentialResolver.resolve();
|
|
156
|
+
context.credentials = resolved;
|
|
157
|
+
context.credentialError = undefined;
|
|
158
|
+
lines.push(`- ✅ Credentials re-resolved: tier \`${previousTier}\` → \`${resolved.tier}\`.`);
|
|
159
|
+
lines.push(`- ✅ Cleared startup credential error${previousError ? ` (\`${previousError}\`)` : ""}.`);
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
const reason = err instanceof CredentialResolutionError ? err.reason : (err?.message || String(err));
|
|
163
|
+
context.credentials = undefined;
|
|
164
|
+
context.credentialError =
|
|
165
|
+
err instanceof CredentialResolutionError
|
|
166
|
+
? err
|
|
167
|
+
: new CredentialResolutionError("Credential reload failed", "no_credentials_found", "Supply direct lab credentials or a config-scoped DOPPLER_TOKEN.");
|
|
168
|
+
lines.push(`- ⚠️ Credential reload failed: \`${reason}\` (tier remains \`unavailable\`).`);
|
|
169
|
+
lines.push("- ℹ️ The process is still credential-less. Repair the credential source and reload again, or restart the harness to re-exec the launcher.");
|
|
170
|
+
}
|
|
150
171
|
lines.push("- ✅ Dispatched MCP protocol `notifications/tools/list_changed` to client.");
|
|
151
|
-
lines.push("\n
|
|
172
|
+
lines.push("\n> ℹ️ **Scope:** this refreshes credential state only. It does not re-exec the launcher; a changed launcher on disk requires `action='restart'` with `hardRestart=true`.");
|
|
152
173
|
return createToolSuccessResult(lines.join("\n"));
|
|
153
174
|
}
|
|
154
175
|
if (action === "restart") {
|
|
155
176
|
lines.push("### ⚡ MCP Server Restart Requested\n");
|
|
156
177
|
if (hardRestart) {
|
|
157
|
-
lines.push("> ⚠️ **Hard Restart:** Terminating process cleanly (`PID ${process.pid}`, code 0). MCP client host
|
|
178
|
+
lines.push("> ⚠️ **Hard Restart:** Terminating process cleanly (`PID ${process.pid}`, code 0). MCP client host will immediately re-spawn the server by re-executing the configured launcher.");
|
|
179
|
+
lines.push("- ℹ️ If the on-disk launcher was corrected after this process spawned, the re-exec is what picks it up.");
|
|
158
180
|
setTimeout(() => {
|
|
159
181
|
logger.info("Graceful restart triggered via MCP manage_mcp_server. Exiting with code 0...");
|
|
160
182
|
process.exit(0);
|
|
161
183
|
}, 500);
|
|
162
184
|
}
|
|
163
185
|
else {
|
|
164
|
-
|
|
186
|
+
// A soft restart cannot re-exec the launcher, so it cannot change which
|
|
187
|
+
// credentials or tool schema are loaded. Say so rather than implying a
|
|
188
|
+
// driver/schema reset that does not happen.
|
|
189
|
+
lines.push("- ⚠️ **Soft restart is a no-op for credentials and tool schema.** A process that spawned credential-less stays credential-less; a changed launcher is not re-executed.");
|
|
190
|
+
lines.push("- ℹ️ Use `action='reload'` to re-resolve credentials in-process, or `action='restart'` with `hardRestart=true` to re-exec the launcher.");
|
|
165
191
|
lines.push("- ✅ Dispatched `notifications/tools/list_changed` to client host.");
|
|
166
192
|
}
|
|
167
193
|
return createToolSuccessResult(lines.join("\n"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-management.js","sourceRoot":"","sources":["../../../src/tools/server-management.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAkB,gBAAgB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEnH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-management.js","sourceRoot":"","sources":["../../../src/tools/server-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lab license issuance via ct-dashboard.
|
|
3
|
+
*
|
|
4
|
+
* Lab appliances do not sign their own licenses: `Cdrcisco.Token.trial/4` is
|
|
5
|
+
* compiled out of `:onprem`/`:prod` builds (cisco-cdr #5070 / #5071, API-3202).
|
|
6
|
+
* ct-lab-mcp used to mint locally too, with the same shared HS256 secret baked
|
|
7
|
+
* into this repo — a second copy of the capability the appliance just lost, and
|
|
8
|
+
* one that emitted the wrong claim shape anyway (`tier`/`iss: calltelemetry_lab_mcp`
|
|
9
|
+
* instead of `subscription`/`level` and Joken's `iss`/`aud`), so the appliance
|
|
10
|
+
* rejected it and silently stayed Community.
|
|
11
|
+
*
|
|
12
|
+
* Licenses now come from the one issuing authority: ct-dashboard
|
|
13
|
+
* `POST /api/crm/licenses/lab`. The key is minted against CallTelemetry's own
|
|
14
|
+
* organization, tagged `sku: "LAB"`, and its notes carry the VM it was issued
|
|
15
|
+
* for, so a lab key is traceable to a box in `GET /api/crm/licenses`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_DASHBOARD_URL = "https://dash.calltelemetry.com";
|
|
18
|
+
/** Tiers ct-dashboard will mint a lab key for. */
|
|
19
|
+
export declare const LAB_LICENSE_TIERS: readonly ["Demo", "Beta", "Premium"];
|
|
20
|
+
export type LabLicenseTier = (typeof LAB_LICENSE_TIERS)[number];
|
|
21
|
+
export interface LabVmIdentity {
|
|
22
|
+
/** Appliance IP or hostname the key is being applied to. Always set. */
|
|
23
|
+
targetIp: string;
|
|
24
|
+
vmName?: string;
|
|
25
|
+
vmId?: number | string;
|
|
26
|
+
host?: string;
|
|
27
|
+
/** Linear issue holding the slot claim, e.g. "UAT-1234". */
|
|
28
|
+
linearIssue?: string;
|
|
29
|
+
purpose?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface IssueLabLicenseOptions {
|
|
32
|
+
tier: LabLicenseTier;
|
|
33
|
+
days: number;
|
|
34
|
+
vm: LabVmIdentity;
|
|
35
|
+
dashboardUrl?: string;
|
|
36
|
+
apiKey?: string;
|
|
37
|
+
timeoutMs?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface IssuedLabLicense {
|
|
40
|
+
token: string;
|
|
41
|
+
licenseId: number | null;
|
|
42
|
+
orgId: number | null;
|
|
43
|
+
subscriptionType: string | null;
|
|
44
|
+
durationDays: number | null;
|
|
45
|
+
expiresAt: string | null;
|
|
46
|
+
keyPrefix: string | null;
|
|
47
|
+
keySuffix: string | null;
|
|
48
|
+
notes: string | null;
|
|
49
|
+
issuedVia: string;
|
|
50
|
+
}
|
|
51
|
+
export declare class LabLicenseError extends Error {
|
|
52
|
+
readonly status?: number;
|
|
53
|
+
constructor(message: string, status?: number);
|
|
54
|
+
}
|
|
55
|
+
export declare function dashboardUrl(explicit?: string): string;
|
|
56
|
+
export declare function dashboardApiKey(explicit?: string): string | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Build the license note that links the key back to the VM it was issued for.
|
|
59
|
+
*
|
|
60
|
+
* Deliberately a flat `key=value` line so it survives a round trip through the
|
|
61
|
+
* CRM `notes` column and stays greppable:
|
|
62
|
+
*
|
|
63
|
+
* ct-lab-mcp ip=192.168.124.229 vm=ct-uat-229 vmid=129 host=proxmox-mini claim=UAT-1234
|
|
64
|
+
*
|
|
65
|
+
* ct-dashboard prefixes this with `[lab]` and stores it on the license row.
|
|
66
|
+
*/
|
|
67
|
+
export declare function buildVmLicenseNote(vm: LabVmIdentity): string;
|
|
68
|
+
/**
|
|
69
|
+
* Parse a note produced by {@link buildVmLicenseNote} back into its fields.
|
|
70
|
+
*
|
|
71
|
+
* This is the VM side of the link: given a license row from
|
|
72
|
+
* `GET /api/crm/licenses`, recover which lab box it was issued for.
|
|
73
|
+
*/
|
|
74
|
+
export declare function parseVmLicenseNote(note: string | null | undefined): Record<string, string>;
|
|
75
|
+
/**
|
|
76
|
+
* Issue a lab license from ct-dashboard for a specific VM.
|
|
77
|
+
*
|
|
78
|
+
* Throws {@link LabLicenseError} with an actionable message — this is the only
|
|
79
|
+
* remaining way ct-lab-mcp obtains a license, so a failure here must say what
|
|
80
|
+
* to fix rather than quietly falling back to a token the appliance rejects.
|
|
81
|
+
*/
|
|
82
|
+
export declare function issueLabLicense(options: IssueLabLicenseOptions): Promise<IssuedLabLicense>;
|
|
83
|
+
//# sourceMappingURL=dashboard-license.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-license.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard-license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AAEtE,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,sCAAuC,CAAC;AACtE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,aAAa,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAK7C;AAED,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAmB5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY1F;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiEhG"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lab license issuance via ct-dashboard.
|
|
3
|
+
*
|
|
4
|
+
* Lab appliances do not sign their own licenses: `Cdrcisco.Token.trial/4` is
|
|
5
|
+
* compiled out of `:onprem`/`:prod` builds (cisco-cdr #5070 / #5071, API-3202).
|
|
6
|
+
* ct-lab-mcp used to mint locally too, with the same shared HS256 secret baked
|
|
7
|
+
* into this repo — a second copy of the capability the appliance just lost, and
|
|
8
|
+
* one that emitted the wrong claim shape anyway (`tier`/`iss: calltelemetry_lab_mcp`
|
|
9
|
+
* instead of `subscription`/`level` and Joken's `iss`/`aud`), so the appliance
|
|
10
|
+
* rejected it and silently stayed Community.
|
|
11
|
+
*
|
|
12
|
+
* Licenses now come from the one issuing authority: ct-dashboard
|
|
13
|
+
* `POST /api/crm/licenses/lab`. The key is minted against CallTelemetry's own
|
|
14
|
+
* organization, tagged `sku: "LAB"`, and its notes carry the VM it was issued
|
|
15
|
+
* for, so a lab key is traceable to a box in `GET /api/crm/licenses`.
|
|
16
|
+
*/
|
|
17
|
+
import { fetch } from "undici";
|
|
18
|
+
export const DEFAULT_DASHBOARD_URL = "https://dash.calltelemetry.com";
|
|
19
|
+
/** Tiers ct-dashboard will mint a lab key for. */
|
|
20
|
+
export const LAB_LICENSE_TIERS = ["Demo", "Beta", "Premium"];
|
|
21
|
+
export class LabLicenseError extends Error {
|
|
22
|
+
status;
|
|
23
|
+
constructor(message, status) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "LabLicenseError";
|
|
26
|
+
this.status = status;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function dashboardUrl(explicit) {
|
|
30
|
+
const raw = (explicit || process.env.DASHBOARD_URL || DEFAULT_DASHBOARD_URL).trim();
|
|
31
|
+
return raw.replace(/\/+$/, "");
|
|
32
|
+
}
|
|
33
|
+
export function dashboardApiKey(explicit) {
|
|
34
|
+
const raw = (explicit || process.env.DASHBOARD_API_KEY || "").trim();
|
|
35
|
+
return raw === "" ? undefined : raw;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build the license note that links the key back to the VM it was issued for.
|
|
39
|
+
*
|
|
40
|
+
* Deliberately a flat `key=value` line so it survives a round trip through the
|
|
41
|
+
* CRM `notes` column and stays greppable:
|
|
42
|
+
*
|
|
43
|
+
* ct-lab-mcp ip=192.168.124.229 vm=ct-uat-229 vmid=129 host=proxmox-mini claim=UAT-1234
|
|
44
|
+
*
|
|
45
|
+
* ct-dashboard prefixes this with `[lab]` and stores it on the license row.
|
|
46
|
+
*/
|
|
47
|
+
export function buildVmLicenseNote(vm) {
|
|
48
|
+
const parts = ["ct-lab-mcp"];
|
|
49
|
+
const push = (key, value) => {
|
|
50
|
+
if (value === undefined || value === null)
|
|
51
|
+
return;
|
|
52
|
+
const str = String(value).trim();
|
|
53
|
+
if (str === "")
|
|
54
|
+
return;
|
|
55
|
+
// Whitespace would break the key=value shape on re-read.
|
|
56
|
+
parts.push(`${key}=${str.replace(/\s+/g, "_")}`);
|
|
57
|
+
};
|
|
58
|
+
push("ip", vm.targetIp);
|
|
59
|
+
push("vm", vm.vmName);
|
|
60
|
+
push("vmid", vm.vmId);
|
|
61
|
+
push("host", vm.host);
|
|
62
|
+
push("claim", vm.linearIssue);
|
|
63
|
+
push("purpose", vm.purpose);
|
|
64
|
+
return parts.join(" ");
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parse a note produced by {@link buildVmLicenseNote} back into its fields.
|
|
68
|
+
*
|
|
69
|
+
* This is the VM side of the link: given a license row from
|
|
70
|
+
* `GET /api/crm/licenses`, recover which lab box it was issued for.
|
|
71
|
+
*/
|
|
72
|
+
export function parseVmLicenseNote(note) {
|
|
73
|
+
if (!note)
|
|
74
|
+
return {};
|
|
75
|
+
return note
|
|
76
|
+
.split(/\s+/)
|
|
77
|
+
.reduce((acc, token) => {
|
|
78
|
+
const idx = token.indexOf("=");
|
|
79
|
+
if (idx > 0) {
|
|
80
|
+
acc[token.slice(0, idx)] = token.slice(idx + 1);
|
|
81
|
+
}
|
|
82
|
+
return acc;
|
|
83
|
+
}, {});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Issue a lab license from ct-dashboard for a specific VM.
|
|
87
|
+
*
|
|
88
|
+
* Throws {@link LabLicenseError} with an actionable message — this is the only
|
|
89
|
+
* remaining way ct-lab-mcp obtains a license, so a failure here must say what
|
|
90
|
+
* to fix rather than quietly falling back to a token the appliance rejects.
|
|
91
|
+
*/
|
|
92
|
+
export async function issueLabLicense(options) {
|
|
93
|
+
const baseUrl = dashboardUrl(options.dashboardUrl);
|
|
94
|
+
const apiKey = dashboardApiKey(options.apiKey);
|
|
95
|
+
const timeoutMs = options.timeoutMs ?? 20000;
|
|
96
|
+
if (!apiKey) {
|
|
97
|
+
throw new LabLicenseError("DASHBOARD_API_KEY is not set. Lab licenses are issued by ct-dashboard " +
|
|
98
|
+
"(POST /api/crm/licenses/lab) and require a CRM API key with the " +
|
|
99
|
+
"licenses:write scope. Export DASHBOARD_API_KEY (Doppler ai-workspace/prd) " +
|
|
100
|
+
"and retry. Appliances can no longer sign their own licenses.");
|
|
101
|
+
}
|
|
102
|
+
const url = `${baseUrl}/api/crm/licenses/lab`;
|
|
103
|
+
const body = {
|
|
104
|
+
subscription_type: options.tier.toLowerCase(),
|
|
105
|
+
duration_days: options.days,
|
|
106
|
+
notes: buildVmLicenseNote(options.vm)
|
|
107
|
+
};
|
|
108
|
+
let response;
|
|
109
|
+
try {
|
|
110
|
+
response = await fetch(url, {
|
|
111
|
+
method: "POST",
|
|
112
|
+
headers: {
|
|
113
|
+
"Content-Type": "application/json",
|
|
114
|
+
Authorization: `Bearer ${apiKey}`
|
|
115
|
+
},
|
|
116
|
+
body: JSON.stringify(body),
|
|
117
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
throw new LabLicenseError(`Could not reach ct-dashboard at ${url}: ${err?.message ?? err}`);
|
|
122
|
+
}
|
|
123
|
+
const payload = (await response.json().catch(() => ({})));
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
throw new LabLicenseError(labIssueErrorMessage(response.status, payload, url), response.status);
|
|
126
|
+
}
|
|
127
|
+
const data = payload?.data ?? {};
|
|
128
|
+
const license = data.license ?? {};
|
|
129
|
+
const token = data.license_key ?? license.license_key;
|
|
130
|
+
if (typeof token !== "string" || token === "") {
|
|
131
|
+
throw new LabLicenseError(`ct-dashboard accepted the request but returned no license key (HTTP ${response.status}).`, response.status);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
token,
|
|
135
|
+
licenseId: numberOrNull(license.id),
|
|
136
|
+
orgId: numberOrNull(license.org_id),
|
|
137
|
+
subscriptionType: stringOrNull(license.subscription_type),
|
|
138
|
+
durationDays: numberOrNull(license.duration_days),
|
|
139
|
+
expiresAt: stringOrNull(license.expires_at),
|
|
140
|
+
keyPrefix: stringOrNull(license.key_prefix),
|
|
141
|
+
keySuffix: stringOrNull(license.key_suffix),
|
|
142
|
+
notes: stringOrNull(license.notes),
|
|
143
|
+
issuedVia: url
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function labIssueErrorMessage(status, payload, url) {
|
|
147
|
+
const detail = extractError(payload);
|
|
148
|
+
if (status === 503) {
|
|
149
|
+
return (`ct-dashboard cannot resolve the internal lab organization: ${detail}. ` +
|
|
150
|
+
"Set LAB_LICENSE_ORG_ID on the dashboard deployment to CallTelemetry's org id " +
|
|
151
|
+
"(find it with GET /api/crm/orgs?query=calltelemetry).");
|
|
152
|
+
}
|
|
153
|
+
if (status === 401 || status === 403) {
|
|
154
|
+
return (`ct-dashboard rejected the API key (HTTP ${status}): ${detail}. ` +
|
|
155
|
+
"The key needs the licenses:write scope.");
|
|
156
|
+
}
|
|
157
|
+
if (status === 422) {
|
|
158
|
+
return `ct-dashboard rejected the lab license request: ${detail}`;
|
|
159
|
+
}
|
|
160
|
+
return `Lab license request to ${url} failed (HTTP ${status}): ${detail}`;
|
|
161
|
+
}
|
|
162
|
+
function extractError(payload) {
|
|
163
|
+
const error = payload?.error;
|
|
164
|
+
if (typeof error === "string")
|
|
165
|
+
return error;
|
|
166
|
+
if (error && typeof error === "object")
|
|
167
|
+
return JSON.stringify(error);
|
|
168
|
+
return "no detail returned";
|
|
169
|
+
}
|
|
170
|
+
function numberOrNull(value) {
|
|
171
|
+
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
172
|
+
}
|
|
173
|
+
function stringOrNull(value) {
|
|
174
|
+
return typeof value === "string" && value !== "" ? value : null;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=dashboard-license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-license.js","sourceRoot":"","sources":["../../../src/utils/dashboard-license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAEtE,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAoCtE,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,MAAM,CAAU;IAEzB,YAAY,OAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,QAAiB;IAC5C,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC;IACpF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAiB;IAClD,MAAM,KAAK,GAAa,CAAC,YAAY,CAAC,CAAC;IAEvC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;QAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO;QACvB,yDAAyD;QACzD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9B,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA+B;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,IAAI;SACR,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAyB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CACvB,wEAAwE;YACtE,kEAAkE;YAClE,4EAA4E;YAC5E,8DAA8D,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,OAAO,uBAAuB,CAAC;IAC9C,MAAM,IAAI,GAAG;QACX,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;QAC7C,aAAa,EAAE,OAAO,CAAC,IAAI;QAC3B,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;KACtC,CAAC;IAEF,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC1B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CAAC,mCAAmC,GAAG,KAAK,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,CAAC;IAEjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAEtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,eAAe,CACvB,uEAAuE,QAAQ,CAAC,MAAM,IAAI,EAC1F,QAAQ,CAAC,MAAM,CAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK;QACL,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,gBAAgB,EAAE,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACzD,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;QAClC,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,OAAY,EAAE,GAAW;IACrE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,OAAO,CACL,8DAA8D,MAAM,IAAI;YACxE,+EAA+E;YAC/E,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACrC,OAAO,CACL,2CAA2C,MAAM,MAAM,MAAM,IAAI;YACjE,yCAAyC,CAC1C,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACnB,OAAO,kDAAkD,MAAM,EAAE,CAAC;IACpE,CAAC;IAED,OAAO,0BAA0B,GAAG,iBAAiB,MAAM,MAAM,MAAM,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,OAAY;IAChC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@calltelemetry/ct-lab-mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.28",
|
|
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",
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Call Telemetry Appliance Trial / Demo License Token Generator
|
|
3
|
-
*
|
|
4
|
-
* Mints standard JWT tokens conforming to `Cdrcisco.Token.trial/4`
|
|
5
|
-
* with default HMAC-SHA256 signer.
|
|
6
|
-
*/
|
|
7
|
-
export declare const DEFAULT_LICENSE_SIGNER = "rUWeAj1dpN24ae9OwvBvIepTbZKc5YIdroeL0Ttcjfcuc/ngFSvK2APkjeMmGHGZ";
|
|
8
|
-
export interface LicenseTokenOptions {
|
|
9
|
-
tier?: "Community" | "Essentials" | "Advanced" | "Premium" | "Demo" | "Beta" | string;
|
|
10
|
-
days?: number;
|
|
11
|
-
orgId?: number;
|
|
12
|
-
signer?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface GeneratedLicense {
|
|
15
|
-
token: string;
|
|
16
|
-
tier: string;
|
|
17
|
-
days: number;
|
|
18
|
-
orgId: number;
|
|
19
|
-
issuedAt: string;
|
|
20
|
-
expiresAt: string;
|
|
21
|
-
expiresEpoch: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Generate a valid Call Telemetry trial / demo license JWT.
|
|
25
|
-
*/
|
|
26
|
-
export declare function generateTrialLicenseToken(options?: LicenseTokenOptions): GeneratedLicense;
|
|
27
|
-
//# sourceMappingURL=license.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,sBAAsB,qEACiC,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CA8C7F"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Call Telemetry Appliance Trial / Demo License Token Generator
|
|
3
|
-
*
|
|
4
|
-
* Mints standard JWT tokens conforming to `Cdrcisco.Token.trial/4`
|
|
5
|
-
* with default HMAC-SHA256 signer.
|
|
6
|
-
*/
|
|
7
|
-
import { createHmac } from "node:crypto";
|
|
8
|
-
export const DEFAULT_LICENSE_SIGNER = "rUWeAj1dpN24ae9OwvBvIepTbZKc5YIdroeL0Ttcjfcuc/ngFSvK2APkjeMmGHGZ";
|
|
9
|
-
function base64UrlEncode(str) {
|
|
10
|
-
return Buffer.from(str, "utf-8")
|
|
11
|
-
.toString("base64")
|
|
12
|
-
.replace(/=/g, "")
|
|
13
|
-
.replace(/\+/g, "-")
|
|
14
|
-
.replace(/\//g, "_");
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Generate a valid Call Telemetry trial / demo license JWT.
|
|
18
|
-
*/
|
|
19
|
-
export function generateTrialLicenseToken(options = {}) {
|
|
20
|
-
const tier = options.tier || "Demo";
|
|
21
|
-
const days = options.days !== undefined ? options.days : 30;
|
|
22
|
-
const orgId = options.orgId || 1;
|
|
23
|
-
const signer = options.signer || process.env.JWT_SECRET || DEFAULT_LICENSE_SIGNER;
|
|
24
|
-
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
25
|
-
const expSeconds = nowSeconds + days * 24 * 60 * 60;
|
|
26
|
-
const header = {
|
|
27
|
-
alg: "HS256",
|
|
28
|
-
typ: "JWT"
|
|
29
|
-
};
|
|
30
|
-
const payload = {
|
|
31
|
-
tier,
|
|
32
|
-
org_id: orgId,
|
|
33
|
-
iat: nowSeconds,
|
|
34
|
-
exp: expSeconds,
|
|
35
|
-
nbf: nowSeconds - 5,
|
|
36
|
-
iss: "calltelemetry_lab_mcp",
|
|
37
|
-
sub: `trial_${tier.toLowerCase()}`
|
|
38
|
-
};
|
|
39
|
-
const encodedHeader = base64UrlEncode(JSON.stringify(header));
|
|
40
|
-
const encodedPayload = base64UrlEncode(JSON.stringify(payload));
|
|
41
|
-
const message = `${encodedHeader}.${encodedPayload}`;
|
|
42
|
-
const hmac = createHmac("sha256", signer);
|
|
43
|
-
hmac.update(message);
|
|
44
|
-
const signature = hmac.digest("base64")
|
|
45
|
-
.replace(/=/g, "")
|
|
46
|
-
.replace(/\+/g, "-")
|
|
47
|
-
.replace(/\//g, "_");
|
|
48
|
-
const token = `${message}.${signature}`;
|
|
49
|
-
return {
|
|
50
|
-
token,
|
|
51
|
-
tier,
|
|
52
|
-
days,
|
|
53
|
-
orgId,
|
|
54
|
-
issuedAt: new Date(nowSeconds * 1000).toISOString(),
|
|
55
|
-
expiresAt: new Date(expSeconds * 1000).toISOString(),
|
|
56
|
-
expiresEpoch: expSeconds
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=license.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,sBAAsB,GACjC,kEAAkE,CAAC;AAmBrE,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;SAC7B,QAAQ,CAAC,QAAQ,CAAC;SAClB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAA+B,EAAE;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,sBAAsB,CAAC;IAElF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAEpD,MAAM,MAAM,GAAG;QACb,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,KAAK;KACX,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,IAAI;QACJ,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,UAAU,GAAG,CAAC;QACnB,GAAG,EAAE,uBAAuB;QAC5B,GAAG,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,EAAE;KACnC,CAAC;IAEF,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,GAAG,aAAa,IAAI,cAAc,EAAE,CAAC;IAErD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SACpC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvB,MAAM,KAAK,GAAG,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC;IAExC,OAAO;QACL,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACnD,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACpD,YAAY,EAAE,UAAU;KACzB,CAAC;AACJ,CAAC"}
|