@calltelemetry/ct-lab-mcp 0.8.25 → 0.8.27
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 +54 -0
- package/dist/src/tools/canonical-guard.d.ts +1 -1
- package/dist/src/tools/canonical-guard.d.ts.map +1 -1
- package/dist/src/tools/canonical-guard.js +11 -1
- package/dist/src/tools/canonical-guard.js.map +1 -1
- 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/lab-dev.d.ts.map +1 -1
- package/dist/src/tools/lab-dev.js +25 -1
- package/dist/src/tools/lab-dev.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/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` |
|
|
@@ -599,6 +601,11 @@ resolve target credentials through that bridge even if legacy aggregate
|
|
|
599
601
|
credential resolution failed. Canonical `list_storage` retains its existing
|
|
600
602
|
bridge-owned credential check. These exceptions do not mark legacy credentials
|
|
601
603
|
ready or permit other operations: those still return `CREDENTIALS_UNAVAILABLE`.
|
|
604
|
+
The canonical-only `vm_renew` and `vm_transfer` claim tools likewise delegate
|
|
605
|
+
credential resolution to the required, configured bridge. They remain dry-run
|
|
606
|
+
by default and require exact asset/lease identity and explicit apply confirmation
|
|
607
|
+
for changes. An unavailable bridge or failed target validation remains an error;
|
|
608
|
+
this routing never substitutes mock credentials or claims a host is ready.
|
|
602
609
|
Canonical discovery still validates provider responses, reports partial-result
|
|
603
610
|
warnings, and fails when the requested scope is unavailable. The server never
|
|
604
611
|
invents a mock transport. Repair the direct provider credentials or the
|
|
@@ -686,6 +693,53 @@ npm pack --dry-run
|
|
|
686
693
|
|
|
687
694
|
---
|
|
688
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
|
+
|
|
689
743
|
## License
|
|
690
744
|
|
|
691
745
|
MIT © 2026 [Call Telemetry](https://calltelemetry.com) / Contributors
|
|
@@ -8,7 +8,7 @@ export declare function canonicalMode(context: ToolContext): boolean;
|
|
|
8
8
|
* the CLI is the authority for the exact asset/lease checks, but merely being
|
|
9
9
|
* configured does not prove that a target is reachable or authorized.
|
|
10
10
|
*/
|
|
11
|
-
export declare const CANONICAL_CREDENTIAL_OPERATIONS: readonly ["lab_dev:doctor", "lab_dev:plan", "lab_dev:prepare", "lab_dev:status", "lab_dev:start", "lab_dev:sync", "lab_dev:stop", "lab_dev:cleanup", "list_hosts", "list_inventory", "vm_repair", "list_expired_vms", "cleanup_expired_vms", "provision_vm", "auto_provision_vm", "purge_slots"];
|
|
11
|
+
export declare const CANONICAL_CREDENTIAL_OPERATIONS: readonly ["lab_dev:doctor", "lab_dev:plan", "lab_dev:prepare", "lab_dev:status", "lab_dev:start", "lab_dev:sync", "lab_dev:stop", "lab_dev:cleanup", "list_hosts", "list_inventory", "vm_repair", "vm_renew", "vm_transfer", "release_slot", "list_expired_vms", "cleanup_expired_vms", "provision_vm", "auto_provision_vm", "purge_slots"];
|
|
12
12
|
export type CanonicalCredentialReadiness = {
|
|
13
13
|
owner: "canonical_cli" | "legacy_resolver";
|
|
14
14
|
required: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-guard.d.ts","sourceRoot":"","sources":["../../../src/tools/canonical-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAkD,MAAM,iBAAiB,CAAC;AAEjG,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,
|
|
1
|
+
{"version":3,"file":"canonical-guard.d.ts","sourceRoot":"","sources":["../../../src/tools/canonical-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAkD,MAAM,iBAAiB,CAAC;AAEjG,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,6UAuBlC,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,cAAc,GAAG,aAAa,GAAG,4BAA4B,CAAC;IACtE,gBAAgB,EAAE,gBAAgB,GAAG,aAAa,GAAG,2BAA2B,CAAC;IACjF,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,iCAAiC,CAAC;CAC5C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,WAAW,GACnB,4BAA4B,CAoC9B;AAQD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAuCT;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAMzF;AAUD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,kBAAkB,GAAG,SAAS,EACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAuCzB"}
|
|
@@ -20,6 +20,9 @@ export const CANONICAL_CREDENTIAL_OPERATIONS = [
|
|
|
20
20
|
"list_hosts",
|
|
21
21
|
"list_inventory",
|
|
22
22
|
"vm_repair",
|
|
23
|
+
"vm_renew",
|
|
24
|
+
"vm_transfer",
|
|
25
|
+
"release_slot",
|
|
23
26
|
// These handlers invoke the canonical CLI directly in required mode. Keep
|
|
24
27
|
// the exception operation-specific so legacy handlers remain credential
|
|
25
28
|
// gated even when a canonical bridge happens to be configured.
|
|
@@ -105,7 +108,14 @@ export function canonicalBridgeOwnsCredentials(context, operation, args) {
|
|
|
105
108
|
|| operation === "cleanup_expired_vms"
|
|
106
109
|
|| operation === "provision_vm"
|
|
107
110
|
|| operation === "auto_provision_vm"
|
|
108
|
-
|| operation === "purge_slots"
|
|
111
|
+
|| operation === "purge_slots"
|
|
112
|
+
// Claim updates have no legacy handler or fallback. Their CLI validates
|
|
113
|
+
// the exact current owner/lease and owns provider credential resolution.
|
|
114
|
+
|| operation === "vm_renew"
|
|
115
|
+
|| operation === "vm_transfer"
|
|
116
|
+
// Release is also a direct canonical bridge: exact lease, preserved
|
|
117
|
+
// artifact evidence, confirmation and deletion reason remain mandatory.
|
|
118
|
+
|| operation === "release_slot") {
|
|
109
119
|
return true;
|
|
110
120
|
}
|
|
111
121
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-guard.js","sourceRoot":"","sources":["../../../src/tools/canonical-guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEjG,MAAM,UAAU,aAAa,CAAC,OAAoB;IAChD,OAAO,OAAO,CAAC,eAAe,EAAE,UAAU,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,0EAA0E;IAC1E,wEAAwE;IACxE,+DAA+D;IAC/D,kBAAkB;IAClB,qBAAqB;IACrB,cAAc;IACd,mBAAmB;IACnB,aAAa;CACL,CAAC;AAYX;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAoB;IAEpB,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,UAAU,KAAK,IAAI,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,YAAY,KAAK,IAAI,CAAC;IAClE,MAAM,mBAAmB,GAAG,CAAC,GAAG,+BAA+B,CAAC,CAAC;IAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,KAAK,EAAE,iBAAiB;YACxB,QAAQ,EAAE,KAAK;YACf,UAAU;YACV,MAAM,EAAE,cAAc;YACtB,gBAAgB,EAAE,gBAAgB;YAClC,mBAAmB,EAAE,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,aAAa;YACrB,gBAAgB,EAAE,aAAa;YAC/B,mBAAmB;YACnB,MAAM,EAAE,iCAAiC;SAC1C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,4BAA4B;QACpC,gBAAgB,EAAE,2BAA2B;QAC7C,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,MAAM,GAAI,IAA6B,CAAC,MAAM,CAAC;IACrD,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAoB,EACpB,SAAiB,EACjB,IAAc;IAEd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,qEAAqE;IACrE,0DAA0D;IAC1D,IAAI,SAAS,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,OAAO,CAAC,eAAe,EAAE,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEjE,uEAAuE;IACvE,IAAI,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAE9E,IAAI,SAAS,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ;eACzF,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS,CAAC;IAC5F,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,IACE,SAAS,KAAK,kBAAkB;WAC7B,SAAS,KAAK,qBAAqB;WACnC,SAAS,KAAK,cAAc;WAC5B,SAAS,KAAK,mBAAmB;WACjC,SAAS,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"canonical-guard.js","sourceRoot":"","sources":["../../../src/tools/canonical-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"lab-dev.d.ts","sourceRoot":"","sources":["../../../src/tools/lab-dev.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EAIf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiJnD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyD5B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa7B,CAAC;AAMZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAyB/D,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CA4D/D;
|
|
1
|
+
{"version":3,"file":"lab-dev.d.ts","sourceRoot":"","sources":["../../../src/tools/lab-dev.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EAIf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiJnD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASlC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyD5B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa7B,CAAC;AAMZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAyB/D,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CA4D/D;AA0SD,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,GAAG,OAAO,EACjC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC,CAyBzB"}
|
|
@@ -371,6 +371,29 @@ function receiptMatchesInput(input, result) {
|
|
|
371
371
|
}
|
|
372
372
|
return true;
|
|
373
373
|
}
|
|
374
|
+
function isPendingPreparationAckForStatus(input, result, status) {
|
|
375
|
+
if (input.action !== "status"
|
|
376
|
+
|| result.action !== "prepare"
|
|
377
|
+
|| result.observed_action !== "prepare"
|
|
378
|
+
|| !PENDING_STATUSES.has(status)
|
|
379
|
+
|| result.ready !== false)
|
|
380
|
+
return false;
|
|
381
|
+
// Status may observe the detached prepare worker, but only when the worker
|
|
382
|
+
// carries the complete immutable request and source binding. Do not turn
|
|
383
|
+
// a bare prepare-shaped response into a status success.
|
|
384
|
+
const request = objectValue(result.request);
|
|
385
|
+
const requestSource = objectValue(request?.requested_source);
|
|
386
|
+
const source = objectValue(result.requested_source);
|
|
387
|
+
if (request?.schema !== "calltelemetry-lab-dev/v1"
|
|
388
|
+
|| request.action !== "prepare"
|
|
389
|
+
|| !requestSource || !source
|
|
390
|
+
|| !isDeepStrictEqual(source, requestSource)
|
|
391
|
+
|| typeof result.requested_source_digest !== "string"
|
|
392
|
+
|| !/^sha256:[a-f0-9]{64}$/.test(result.requested_source_digest)
|
|
393
|
+
|| result.requested_source_digest !== source.sourceDigest)
|
|
394
|
+
return false;
|
|
395
|
+
return ["sourceDigest", "dependencyDigest", "runtimePackagingDigest"].every((key) => typeof source[key] === "string" && /^sha256:[a-f0-9]{64}$/.test(source[key]));
|
|
396
|
+
}
|
|
374
397
|
function readyReceiptIsBoundAndFresh(result, allowedActions = ["start", "sync"]) {
|
|
375
398
|
const request = objectValue(result.request);
|
|
376
399
|
const identity = objectValue(result.identity);
|
|
@@ -428,7 +451,8 @@ function classifyLabDevResult(input, canonical) {
|
|
|
428
451
|
return createToolErrorResult(typeof error?.code === "string" ? error.code : "CANONICAL_OPERATION_FAILED", timedOut ? "The controller timed out; inspect status before retrying the exact operation."
|
|
429
452
|
: "The canonical remote-development operation did not complete successfully.", payload);
|
|
430
453
|
}
|
|
431
|
-
if (!result || result.action !== input.action
|
|
454
|
+
if (!result || (result.action !== input.action
|
|
455
|
+
&& !isPendingPreparationAckForStatus(input, result, status))) {
|
|
432
456
|
return createToolErrorResult("CANONICAL_DEV_INVALID_RESULT", "The canonical remote-development response has no valid action receipt.", payload);
|
|
433
457
|
}
|
|
434
458
|
if (ERROR_STATUSES.has(status) || !NORMAL_STATUSES[input.action].has(status)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lab-dev.js","sourceRoot":"","sources":["../../../src/tools/lab-dev.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lab-dev.js","sourceRoot":"","sources":["../../../src/tools/lab-dev.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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"}
|
|
@@ -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.27",
|
|
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"}
|