@calltelemetry/ct-lab-mcp 0.8.96 → 0.8.98
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 +50 -33
- package/dist/bin/ct-lab-mcp.js +3 -6
- package/dist/src/canonical/bridge.d.ts +5 -0
- package/dist/src/canonical/bridge.d.ts.map +1 -1
- package/dist/src/canonical/bridge.js +17 -14
- package/dist/src/canonical/bridge.js.map +1 -1
- package/dist/src/credentials/index.d.ts +1 -0
- package/dist/src/credentials/index.d.ts.map +1 -1
- package/dist/src/credentials/index.js +1 -0
- package/dist/src/credentials/index.js.map +1 -1
- package/dist/src/credentials/remediation.d.ts +33 -0
- package/dist/src/credentials/remediation.d.ts.map +1 -0
- package/dist/src/credentials/remediation.js +105 -0
- package/dist/src/credentials/remediation.js.map +1 -0
- package/dist/src/credentials/resolver.d.ts +2 -3
- package/dist/src/credentials/resolver.d.ts.map +1 -1
- package/dist/src/credentials/resolver.js +7 -121
- package/dist/src/credentials/resolver.js.map +1 -1
- package/dist/src/generated-version.d.ts +1 -1
- package/dist/src/generated-version.js +1 -1
- package/dist/src/hypervisors/esxi/retired.d.ts +7 -7
- package/dist/src/hypervisors/esxi/retired.d.ts.map +1 -1
- package/dist/src/hypervisors/esxi/retired.js +8 -8
- package/dist/src/hypervisors/esxi/retired.js.map +1 -1
- package/dist/src/hypervisors/index.d.ts +0 -2
- package/dist/src/hypervisors/index.d.ts.map +1 -1
- package/dist/src/hypervisors/index.js +0 -2
- package/dist/src/hypervisors/index.js.map +1 -1
- package/dist/src/hypervisors/manager.d.ts.map +1 -1
- package/dist/src/hypervisors/manager.js +14 -31
- package/dist/src/hypervisors/manager.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +3 -7
- package/dist/src/server.js.map +1 -1
- package/dist/src/slot/manager.d.ts +2 -1
- package/dist/src/slot/manager.d.ts.map +1 -1
- package/dist/src/slot/manager.js +6 -19
- package/dist/src/slot/manager.js.map +1 -1
- package/dist/src/tools/claimed-import-qcow.d.ts +2 -2
- package/dist/src/tools/credential-status.d.ts +2 -2
- package/dist/src/tools/credential-status.d.ts.map +1 -1
- package/dist/src/tools/credential-status.js +22 -3
- package/dist/src/tools/credential-status.js.map +1 -1
- package/dist/src/tools/cube-provision.d.ts +2 -2
- package/dist/src/tools/find-slot.d.ts +2 -2
- package/dist/src/tools/import-qcow.d.ts +6 -6
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +3 -1
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/list-hosts.d.ts +1 -1
- package/dist/src/tools/list-hosts.d.ts.map +1 -1
- package/dist/src/tools/list-hosts.js +2 -10
- package/dist/src/tools/list-hosts.js.map +1 -1
- package/dist/src/tools/list-inventory.js +2 -2
- package/dist/src/tools/list-inventory.js.map +1 -1
- package/dist/src/tools/provision-tools.d.ts +8 -8
- package/dist/src/tools/quick-provision.d.ts +2 -2
- package/dist/src/tools/storage-tools.d.ts.map +1 -1
- package/dist/src/tools/storage-tools.js +2 -3
- package/dist/src/tools/storage-tools.js.map +1 -1
- package/dist/src/transports/sse.d.ts.map +1 -1
- package/dist/src/transports/sse.js +1 -1
- package/dist/src/transports/sse.js.map +1 -1
- package/dist/src/worker.d.ts +0 -2
- package/dist/src/worker.d.ts.map +1 -1
- package/dist/src/worker.js +0 -1
- package/dist/src/worker.js.map +1 -1
- package/package.json +2 -4
- package/dist/src/hypervisors/esxi/client.d.ts +0 -105
- package/dist/src/hypervisors/esxi/client.d.ts.map +0 -1
- package/dist/src/hypervisors/esxi/client.js +0 -607
- package/dist/src/hypervisors/esxi/client.js.map +0 -1
- package/dist/src/hypervisors/esxi/mock.d.ts +0 -46
- package/dist/src/hypervisors/esxi/mock.d.ts.map +0 -1
- package/dist/src/hypervisors/esxi/mock.js +0 -208
- package/dist/src/hypervisors/esxi/mock.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# @calltelemetry/ct-lab-mcp
|
|
2
2
|
|
|
3
|
-
> **Model Context Protocol (MCP) Server for Unified Call Telemetry Lab, Fleet, and Appliance Management across Proxmox VE
|
|
3
|
+
> **Model Context Protocol (MCP) Server for Unified Call Telemetry Lab, Fleet, and Appliance Management across Proxmox VE (ESXi is retired)**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@calltelemetry/ct-lab-mcp)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](https://nodejs.org/)
|
|
9
9
|
|
|
10
|
-
`@calltelemetry/ct-lab-mcp` is the single public MCP façade for Call Telemetry lab operations. It exposes high-level
|
|
10
|
+
`@calltelemetry/ct-lab-mcp` is the single public MCP façade for Call Telemetry lab operations. It exposes high-level hypervisor management (Proxmox VE only; ESXi was retired 2026-10-15), disposable VM workflows, and secure appliance diagnostics while delegating canonical asset identity, lease ownership, and release-line policy to the private `lab-inventory` CLI supplied by `ct-meta`.
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -29,7 +29,7 @@ AI Clients (Claude Desktop / Cursor / Web / AI Agents)
|
|
|
29
29
|
├── release_slot (DEPRECATED alias -> delete_appliance_claim)
|
|
30
30
|
├── find_slot / list_slots (DEPRECATED aliases -> list_hosts / list_appliance_claims)
|
|
31
31
|
├── purge_slots (RETIRED: explicit SLOT_VERB_RETIRED error; use list_expired_vms / cleanup_expired_vms)
|
|
32
|
-
├── provision_vm (Disposable VM provisioning on Proxmox
|
|
32
|
+
├── provision_vm (Disposable VM provisioning on Proxmox)
|
|
33
33
|
├── proxmox_quick_provision (Size-driven Proxmox fleet plan/apply; host=auto ranks by free RAM then disk)
|
|
34
34
|
├── pin_pool_slots (RETIRED: explicit SLOT_VERB_RETIRED error; pass webImage to proxmox_quick_provision)
|
|
35
35
|
├── vm_action (Power lifecycle with non-bypassable safety guardrails)
|
|
@@ -50,15 +50,15 @@ AI Clients (Claude Desktop / Cursor / Web / AI Agents)
|
|
|
50
50
|
┌───────────────┼───────────────┬───────────────────┐
|
|
51
51
|
▼ ▼ ▼ ▼
|
|
52
52
|
[MultiHypervisor] [Slot Engine] [Safety Guardrails] [Appliance SSH]
|
|
53
|
-
|
|
54
|
-
│ (2x8GB
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
└──
|
|
53
|
+
└── Proxmox VE ├── ProxmoxLab ├── Proxmox fixtures ├── ssh2 port 2222
|
|
54
|
+
(lab, mini, │ (2x8GB max) │ (100-104, 9000s) ├── cli.sh / db vacuum
|
|
55
|
+
ibm64) ├── ProxmoxMini └── CUCM, CUBE, ├── migrate / logs
|
|
56
|
+
│ (4x8GB max) Runners, K8s └── Redaction Engine
|
|
57
|
+
└── ProxmoxIbm64
|
|
58
58
|
│
|
|
59
59
|
▼
|
|
60
60
|
[Lab Credential Resolver]
|
|
61
|
-
├── Tier 1: Process Environment (LAB_PROXMOX_*,
|
|
61
|
+
├── Tier 1: Process Environment (LAB_PROXMOX_*, LAB_VM_*)
|
|
62
62
|
├── Tier 2: Doppler REST API v3 (DOPPLER_TOKEN)
|
|
63
63
|
└── Tier 3: In-Memory Mock Fallback / Offline Dev
|
|
64
64
|
```
|
|
@@ -73,13 +73,13 @@ than use the legacy Node VMID/name slot state when the bridge is unavailable.
|
|
|
73
73
|
|
|
74
74
|
## Key Features
|
|
75
75
|
|
|
76
|
-
- **Multi-Hypervisor Fleet Management**: Polymorphic abstraction
|
|
76
|
+
- **Multi-Hypervisor Fleet Management**: Polymorphic abstraction over the Proxmox VE hosts (`proxmox-lab`, `proxmox-mini`, `proxmox-ibm64`). **ESXi is retired (operator decision 2026-10-15)**: no ESXi host is catalogued, registered, probed or polled; `GOVC_*`, `ALLOW_ESXI_SLOTS` and `ESXI_SCAN` are ignored; the `esxi-intel-192-168-123-176` id and `esxi` provider/hypervisor selectors are refused (canonical bridge, `list_hosts`, `list_inventory`) without contacting anything; the image ships no `govc`.
|
|
77
77
|
- **Disposable VM Provisioning**: Give `proxmox_quick_provision` one resource size (`memoryMb`, `vcpus`, `diskGb`). Live capacity filters the homogeneous Proxmox pool, then the eligible host with the most free RAM (then the most free disk headroom, then host id) is selected; a plan with `hostAssetId: auto` resolves it from `host capacity` and pins it in the reviewed plan (`placement` in the result). If capacity cannot be read the canonical CLI keeps resolving `auto`. Apply repeats the reviewed explicit host, VMID, and operation ID.
|
|
78
78
|
- **Thin-only guest disks (REL-1588, "never thick disks")**: Every disk `provision_vm`, `auto_provision_vm`, `proxmox_quick_provision`, `proxmox_import_qcow`, `claimed_import_qcow`, `host_migrate_vm` and `sandbox_clone` creates, clones, migrates or imports on Proxmox must be on thin storage: `lvmthin` (the `local-lvm` pool on both lab hosts), or a `zfspool` proven `sparse`. Anything else (`lvm`, `dir`, `nfs`, `iscsi`, unknown) is refused with the stable error code `THICK_STORAGE_REFUSED` before any claim, journal, clone, import or other Proxmox change. The storage type is read through the same `host capacity` path as `list_storage`; if it cannot be determined the request fails closed. An omitted `storage` is checked against the default pool (`local-lvm`). `importStorage` (the `dir` pool that only stages a downloaded image) is not a guest-disk target and is not restricted. This server never builds Proxmox disk options itself, so `discard=on` is owned by the canonical transports and templates.
|
|
79
79
|
- **Resource-based Lease Admission**: There are no fixed per-host or global VM-count quotas. Fresh host health, physical free RAM, VM-image storage, and the requested guest size determine placement. Outstanding unprovisioned claims reserve their size under the claim mutex; backed running VMs are already reflected in physical usage. Unknown, offline, or insufficient resources fail closed.
|
|
80
80
|
- Slots are retired (slot retirement ADR (REL-1746)); lab capacity is pure cluster capacity. `find_slot`, `claim_slot`, `release_slot` and `list_slots` remain only as deprecated aliases: they return their real result plus `deprecated: true` and the replacement (`list_hosts`, `create_appliance_claim`, `delete_appliance_claim`, `list_appliance_claims`). `purge_slots` and `pin_pool_slots` have no capacity equivalent and return an explicit `SLOT_VERB_RETIRED` error (not an internal failure) naming the replacement. `maxSlots`, `slot_limit` and `availableSlots` stay as deprecated numeric estimates and never gate admission.
|
|
81
|
-
- Host selection for provisioning ranks eligible Proxmox hosts by live free RAM, then free disk headroom (no random spread and no "Mini first" tier)
|
|
82
|
-
-
|
|
81
|
+
- Host selection for provisioning ranks eligible Proxmox hosts by live free RAM, then free disk headroom (no random spread and no "Mini first" tier). A test-only `placementSeed` keeps its reproducible selection. `ferrum_fleet_metrics` reports free RAM/CPU/disk as the authoritative capacity and keeps `slotFloor`/`slotHardMax` as deprecated numbers.
|
|
82
|
+
- Platform authorization and protected assets remain separate from resource availability.
|
|
83
83
|
- **Non-Bypassable Safety Guardrails**: Hard protection preventing destructive actions (`destroy`, `stop`, `reboot`) against core infrastructure:
|
|
84
84
|
- Cisco Unified Communications Manager (CUCM 14 / 15 publishers and subscribers)
|
|
85
85
|
- Cisco CUBE Voice Gateways / Cat8000v
|
|
@@ -88,11 +88,11 @@ than use the legacy Node VMID/name slot state when the bridge is unavailable.
|
|
|
88
88
|
- VM Templates (VMIDs `9000`–`9999` or template flags)
|
|
89
89
|
- SPA-1103 on minis VMID `182`, including cleanup of expired or untracked rows
|
|
90
90
|
- **Physical Maintenance Shutdown**: `host_maintenance_shutdown` accepts one
|
|
91
|
-
exact canonical Proxmox
|
|
91
|
+
exact canonical Proxmox host. It plans by default; apply requires the
|
|
92
92
|
reviewed plan digest and exact host confirmation, preflights credentials,
|
|
93
93
|
gracefully drains catalog-matched unclaimed guests, shuts CUCM subscribers
|
|
94
94
|
before publishers, and refuses active claims, partial discovery, identity
|
|
95
|
-
drift, clustered Proxmox
|
|
95
|
+
drift, or clustered Proxmox. Force host
|
|
96
96
|
power-off is not implemented.
|
|
97
97
|
- **Remote Appliance CLI Control**: Mediated execution of `cli.sh` commands over SSH (port 2222) for status inspection, health diagnostics, Ecto migrations, table vacuums, and container logs.
|
|
98
98
|
- **Leased Remote Development**: `lab_dev` is a canonical-only façade for the `ct-local-dev-v1` profile. It supports strict `doctor`, `plan`, `prepare`, `start`, `status`, `sync`, `stop`, and `cleanup` actions bound to one asset, lease, Linear issue, operation ID, and reviewed receipt chain. It accepts no guest commands, remote paths, or mock fallback.
|
|
@@ -108,7 +108,7 @@ than use the legacy Node VMID/name slot state when the bridge is unavailable.
|
|
|
108
108
|
- **Dynamic Secret Redaction**: Real-time masking prevents passwords, Doppler API tokens, and private keys from leaking into MCP responses or stderr logs.
|
|
109
109
|
- **Dual Transports**: Clean standard I/O transport (`stdio`) and Express HTTP/SSE transport (`sse`) with `/health`, `/sse`, and `/messages` endpoints.
|
|
110
110
|
- **3-Tier Credential Resolution**:
|
|
111
|
-
1. *Tier 1*: Direct Environment Variables (`LAB_PROXMOX_*`, `LAB_VM_CREDENTIALS_*`; ESXi `GOVC_*` is
|
|
111
|
+
1. *Tier 1*: Direct Environment Variables (`LAB_PROXMOX_*`, `LAB_VM_CREDENTIALS_*`; ESXi `GOVC_*` is ignored)
|
|
112
112
|
2. *Tier 2*: Doppler Secrets REST API v3 (`DOPPLER_TOKEN`)
|
|
113
113
|
3. *Tier 3*: In-Memory Mock Hypervisor & Appliance Fallback (for offline test suites)
|
|
114
114
|
|
|
@@ -218,8 +218,8 @@ its rows by exact host or hypervisor without creating another inventory. Exact
|
|
|
218
218
|
host reads invoke `vm inventory --host-asset-id`, hypervisor reads invoke
|
|
219
219
|
`vm inventory --hypervisor`, and only all-scope reads invoke
|
|
220
220
|
`vm inventory --all`.
|
|
221
|
-
Warnings are preserved
|
|
222
|
-
|
|
221
|
+
Warnings are preserved. An unqualified read is scoped to Proxmox
|
|
222
|
+
(`--hypervisor proxmox`); ESXi is retired and is never queried. Status, template, text, and tag projection remains
|
|
223
223
|
unsupported until those fields have an authoritative canonical CLI contract.
|
|
224
224
|
|
|
225
225
|
`list_storage` delegates to `lab-inventory host capacity --asset-id` once per
|
|
@@ -230,8 +230,6 @@ warnings; an exact-host failure or all-host failure remains fail-closed. The
|
|
|
230
230
|
canonical CLI does not currently prove individual ISO, VM-disk, or backup
|
|
231
231
|
volume contents, so `includeContent: true` returns
|
|
232
232
|
`CANONICAL_DETAIL_UNSUPPORTED` without consulting legacy Node credentials.
|
|
233
|
-
ESXi datastore `enabled`, `shared`, and content-capability fields are returned
|
|
234
|
-
as `null` because the current canonical capacity contract does not expose them.
|
|
235
233
|
|
|
236
234
|
`lab_mission` is the bounded façade for `lab-inventory mission run`. It accepts
|
|
237
235
|
an immutable manifest path and canonical SHA-256, plans by default, and requires
|
|
@@ -504,22 +502,22 @@ at `http://<guest-ip>:80/api/xcc/<cube_id>`.
|
|
|
504
502
|
The server registers 7 comprehensive tools conforming to the MCP JSON Schema specification:
|
|
505
503
|
|
|
506
504
|
### 1. `list_hosts`
|
|
507
|
-
Query live free RAM/CPU/disk capacity, health, and deprecated resource-derived 8GB unit estimates across Proxmox VE (`proxmox-lab`, `proxmox-mini`) and
|
|
505
|
+
Query live free RAM/CPU/disk capacity, health, and deprecated resource-derived 8GB unit estimates across Proxmox VE (`proxmox-lab`, `proxmox-mini`, `proxmox-ibm64`). ESXi is retired and is refused.
|
|
508
506
|
|
|
509
507
|
```json
|
|
510
508
|
{
|
|
511
|
-
"host": "all", // "proxmox-lab" | "proxmox-mini" | "
|
|
512
|
-
"hypervisorType": "all", // "proxmox" | "
|
|
509
|
+
"host": "all", // "proxmox-lab" | "proxmox-mini" | "proxmox-ibm64" | "all"
|
|
510
|
+
"hypervisorType": "all", // "proxmox" | "all"
|
|
513
511
|
"refresh": false // boolean: force live hypervisor API poll
|
|
514
512
|
}
|
|
515
513
|
```
|
|
516
514
|
|
|
517
515
|
### 2. `list_inventory`
|
|
518
|
-
Query unified fleet inventory across Proxmox VE
|
|
516
|
+
Query unified fleet inventory across Proxmox VE VMs with power status, IP addresses, VLAN, protected flags, release version, and Linear lease tags.
|
|
519
517
|
|
|
520
518
|
```json
|
|
521
519
|
{
|
|
522
|
-
"hypervisor": "all", // "proxmox" | "
|
|
520
|
+
"hypervisor": "all", // "proxmox" | "all"
|
|
523
521
|
"host": "proxmox-mini", // optional host filter
|
|
524
522
|
"status": "all", // "all" | "running" | "stopped" | "claimed" | "disposable"
|
|
525
523
|
"includeTemplates": false, // boolean (default: false)
|
|
@@ -535,8 +533,8 @@ Claim capacity on a specified host or the capacity-ranked eligible Proxmox host
|
|
|
535
533
|
{
|
|
536
534
|
"tag": "CTUAT-693", // required string: issue tag or session identifier
|
|
537
535
|
"linearIssue": "CTUAT-693", // Linear issue key
|
|
538
|
-
"host": "auto", // "proxmox-lab" | "proxmox-mini" | "
|
|
539
|
-
"hypervisorType": "any", // "proxmox" | "
|
|
536
|
+
"host": "auto", // "proxmox-lab" | "proxmox-mini" | "proxmox-ibm64" | "auto"
|
|
537
|
+
"hypervisorType": "any", // "proxmox" | "any"
|
|
540
538
|
"durationMinutes": 60, // integer (1 - 1440 minutes / 24 hours, default: 60)
|
|
541
539
|
"purpose": "UAT Testing" // optional description
|
|
542
540
|
}
|
|
@@ -568,7 +566,7 @@ an exact `confirmAssetId` to execute the guarded release-and-destroy operation.
|
|
|
568
566
|
```
|
|
569
567
|
|
|
570
568
|
### 5. `provision_vm`
|
|
571
|
-
Provision a new disposable Call Telemetry appliance VM on Proxmox VE
|
|
569
|
+
Provision a new disposable Call Telemetry appliance VM on Proxmox VE from a base template with IP/VLAN networking and auto-attached 8GB slot lease.
|
|
572
570
|
|
|
573
571
|
```json
|
|
574
572
|
{
|
|
@@ -606,7 +604,7 @@ set, `target.vmid`, and `operation_id`. Copy those exact identities into apply;
|
|
|
606
604
|
do not leave `hostAssetId` as `auto` for a mutating call.
|
|
607
605
|
|
|
608
606
|
### 6. `vm_action`
|
|
609
|
-
Execute power lifecycle operations across Proxmox
|
|
607
|
+
Execute power lifecycle operations across Proxmox with non-bypassable guardrails protecting core infrastructure.
|
|
610
608
|
|
|
611
609
|
```json
|
|
612
610
|
{
|
|
@@ -646,10 +644,7 @@ After reviewing an eligible plan, apply the same immutable request:
|
|
|
646
644
|
```
|
|
647
645
|
|
|
648
646
|
Proxmox apply verifies a standalone, fully drained node before requesting the
|
|
649
|
-
supported node shutdown.
|
|
650
|
-
maintenance mode without evacuation, then requests shutdown with `force=false`.
|
|
651
|
-
Both require physical power-on for recovery; ESXi remains in maintenance mode
|
|
652
|
-
until an operator verifies the host and exits it. Start CUCM publishers first,
|
|
647
|
+
supported node shutdown. It requires physical power-on for recovery. Start CUCM publishers first,
|
|
653
648
|
verify replication, then start subscribers.
|
|
654
649
|
|
|
655
650
|
### 7. `appliance_exec`
|
|
@@ -674,7 +669,7 @@ Execute mediated Call Telemetry appliance CLI operations over secure SSH on Port
|
|
|
674
669
|
## Client Configuration
|
|
675
670
|
|
|
676
671
|
Credentials are inherited from the process environment. Do not put a Doppler
|
|
677
|
-
token, Proxmox credential,
|
|
672
|
+
token, Proxmox credential, or appliance password in checked-in
|
|
678
673
|
MCP JSON. A GitHub token authorizes repository fetches only; it is not a
|
|
679
674
|
Doppler token and cannot authenticate a hypervisor.
|
|
680
675
|
|
|
@@ -697,6 +692,28 @@ invents a mock transport. Repair the direct provider credentials or the
|
|
|
697
692
|
config-scoped `DOPPLER_TOKEN`, then restart the client. SSE startup remains
|
|
698
693
|
fail-closed.
|
|
699
694
|
|
|
695
|
+
#### Troubleshooting `CREDENTIALS_UNAVAILABLE`
|
|
696
|
+
|
|
697
|
+
A local stdio server only sees the environment its parent harness gave it.
|
|
698
|
+
`DOPPLER_PROJECT` / `DOPPLER_CONFIG` are not credentials, and under the governed
|
|
699
|
+
runtime wrapper (`tools/mcp-runtime-exec.mjs`) an exported `DOPPLER_TOKEN` is
|
|
700
|
+
stripped before this process starts, so the Doppler API tier cannot resolve
|
|
701
|
+
there. Call `credential_status`: when credentials are unavailable it prints the
|
|
702
|
+
failure reason, which variable groups (`proxmox-lab`, `proxmox-mini`,
|
|
703
|
+
`appliance-ssh`) reached the process (names only, never values), and the exact
|
|
704
|
+
next steps. The usual fixes are:
|
|
705
|
+
|
|
706
|
+
- add `doppler://<project>/<config>/<NAME>` references as the ct-lab entry's
|
|
707
|
+
`env` values in the harness MCP config (the wrapper resolves them through the
|
|
708
|
+
Doppler CLI with no login prompt; the reference is not a secret), or
|
|
709
|
+
- start the harness itself under `doppler run --project ai-workspace --config dev --`.
|
|
710
|
+
|
|
711
|
+
The aggregate resolver needs a shared appliance login (`LAB_VM_CREDENTIALS`, or
|
|
712
|
+
`LAB_VM_CREDENTIALS_USERNAME` + `LAB_VM_CREDENTIALS_PASSWORD`). Per-VM
|
|
713
|
+
`LAB_VM_CREDENTIALS_<UUID>` secrets belong to the canonical CLI and do not
|
|
714
|
+
satisfy it. `list_hosts`, `list_inventory` and the ApplianceClaim tools do not
|
|
715
|
+
need the aggregate bundle; legacy tools such as `list_slots` do.
|
|
716
|
+
|
|
700
717
|
### Governed Call Telemetry workspace
|
|
701
718
|
|
|
702
719
|
Use the `ct-lab` plugin and its `launch-ct-lab-mcp.sh` entrypoint. Cursor
|
package/dist/bin/ct-lab-mcp.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Command-line runner supporting Stdio and HTTP/SSE transports,
|
|
6
6
|
* Doppler credential resolution cascade, multi-hypervisor management
|
|
7
|
-
* across Proxmox VE
|
|
7
|
+
* across Proxmox VE, remote appliance CLI control,
|
|
8
8
|
* and graceful lifecycle management.
|
|
9
9
|
*/
|
|
10
10
|
import process from "node:process";
|
|
@@ -79,7 +79,7 @@ export function buildFleetCommand() {
|
|
|
79
79
|
.requiredOption("--vcpus <n>", "Minimum vCPU count")
|
|
80
80
|
.requiredOption("--disk-gb <gb>", "Minimum guest disk in GiB")
|
|
81
81
|
.option("--host-asset-id <id>", "Restrict to a specific host asset ID")
|
|
82
|
-
.option("--hypervisor <type>", "Restrict to proxmox
|
|
82
|
+
.option("--hypervisor <type>", "Restrict to proxmox (ESXi is retired)")
|
|
83
83
|
.option("--format <fmt>", "Output format: json or table", "json")
|
|
84
84
|
.action(async (opts) => {
|
|
85
85
|
const bridge = new CanonicalLabBridge({ required: true });
|
|
@@ -143,11 +143,9 @@ export async function runPurgeDaemonCli(argv = process.argv) {
|
|
|
143
143
|
const hypervisorManager = new MultiHypervisorManager({
|
|
144
144
|
credentials: credentialsResult,
|
|
145
145
|
proxmoxConfigs: credentialsResult?.proxmoxHosts,
|
|
146
|
-
esxiConfigs: credentialsResult?.esxiHosts,
|
|
147
146
|
});
|
|
148
147
|
const slotManager = new SlotManager({
|
|
149
148
|
hypervisorManager,
|
|
150
|
-
includeEsxi: true,
|
|
151
149
|
});
|
|
152
150
|
slotManager.setHypervisorManager(hypervisorManager);
|
|
153
151
|
const controller = new PurgeController({
|
|
@@ -321,7 +319,7 @@ export function buildCli(exitOverride = false) {
|
|
|
321
319
|
const program = new Command();
|
|
322
320
|
program
|
|
323
321
|
.name("ct-lab-mcp")
|
|
324
|
-
.description("Expanded Model Context Protocol (MCP) server for Call Telemetry lab, fleet, and appliance management across Proxmox VE
|
|
322
|
+
.description("Expanded Model Context Protocol (MCP) server for Call Telemetry lab, fleet, and appliance management across Proxmox VE.")
|
|
325
323
|
.version(VERSION, "-v, --version", "Output the current version")
|
|
326
324
|
.helpOption("-h, --help", "Display help for command")
|
|
327
325
|
.option("-t, --transport <type>", "Transport mode: 'stdio' or 'sse'", process.env.CT_LAB_MCP_TRANSPORT || process.env.PROXMOX_MCP_TRANSPORT || "stdio")
|
|
@@ -480,7 +478,6 @@ export async function runCli(argv = process.argv, runOptions = {}) {
|
|
|
480
478
|
credentials: credentialsResult,
|
|
481
479
|
credentialError,
|
|
482
480
|
proxmoxConfigs: hostConfigs,
|
|
483
|
-
esxiConfigs: credentialsResult?.esxiHosts,
|
|
484
481
|
forceMock: effectiveForceMock,
|
|
485
482
|
canonicalBridge,
|
|
486
483
|
plane: effectiveTransport === "sse" ? "local-sse" : "local-stdio",
|
|
@@ -11,6 +11,11 @@ export interface CanonicalLabBridgeOptions {
|
|
|
11
11
|
credentials?: Pick<CredentialResolutionResult, "proxmoxHosts" | "esxiHosts">;
|
|
12
12
|
runner?: (args: string[], options: CanonicalRunOptions) => Promise<CanonicalRunnerResult>;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* ESXi is retired (operator decision 2026-10-15). A canonical command that names the esxi
|
|
16
|
+
* provider or the legacy ESXi host is refused before any process or runner is started.
|
|
17
|
+
*/
|
|
18
|
+
export declare function namesRetiredEsxi(args: string[]): boolean;
|
|
14
19
|
export declare class CanonicalBridgeError extends Error {
|
|
15
20
|
readonly code = "CANONICAL_INVENTORY_UNAVAILABLE";
|
|
16
21
|
constructor(message: string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/canonical/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAEV,0BAA0B,EAG3B,MAAM,yBAAyB,CAAC;AAUjC,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,WAAW,CAAC,CAAC;IAC7E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3F;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/canonical/bridge.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAEV,0BAA0B,EAG3B,MAAM,yBAAyB,CAAC;AAUjC,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,WAAW,CAAC,CAAC;IAC7E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3F;AA4CD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAKxD;AA+FD,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,qCAAqC;gBAEtC,OAAO,EAAE,MAAM;CAI5B;AAyFD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAiE;IAC9F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAsC;gBAElD,OAAO,GAAE,yBAA8B;IAcnD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,qEAAqE;IACrE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,gBAAgB;IAUlB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAuJhF,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2HvE"}
|
|
@@ -26,8 +26,17 @@ function delay(ms) {
|
|
|
26
26
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
27
27
|
}
|
|
28
28
|
const CANONICAL_PROXMOX_HOST_IDS = new Set(["proxmox-lab", "proxmox-mini", "proxmox-minis-lab"]);
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/**
|
|
30
|
+
* ESXi is retired (operator decision 2026-10-15). A canonical command that names the esxi
|
|
31
|
+
* provider or the legacy ESXi host is refused before any process or runner is started.
|
|
32
|
+
*/
|
|
33
|
+
export function namesRetiredEsxi(args) {
|
|
34
|
+
if (args[0] === "esxi")
|
|
35
|
+
return true;
|
|
36
|
+
const selector = commandValue(args, "--host-asset-id");
|
|
37
|
+
return selector.present && typeof selector.value === "string"
|
|
38
|
+
&& (selector.value === LEGACY_ESXI_HOST_ID || selector.value.toLowerCase().startsWith("esxi"));
|
|
39
|
+
}
|
|
31
40
|
function canonicalHostAlias(hostId) {
|
|
32
41
|
return hostId === "proxmox-mini" ? "proxmox-minis-lab" : hostId;
|
|
33
42
|
}
|
|
@@ -58,26 +67,17 @@ function canonicalCommandScope(args) {
|
|
|
58
67
|
if (hostSelector.duplicate || !hostSelector.value)
|
|
59
68
|
return scope;
|
|
60
69
|
const selectedHost = hostSelector.value;
|
|
61
|
-
const selectedProvider = CANONICAL_PROXMOX_HOST_IDS.has(selectedHost)
|
|
62
|
-
? "proxmox"
|
|
63
|
-
: CANONICAL_ESXI_HOST_IDS.has(selectedHost)
|
|
64
|
-
? "esxi"
|
|
65
|
-
: undefined;
|
|
70
|
+
const selectedProvider = CANONICAL_PROXMOX_HOST_IDS.has(selectedHost) ? "proxmox" : undefined;
|
|
66
71
|
if (!selectedProvider)
|
|
67
72
|
return scope;
|
|
68
73
|
// Provider-specific commands must agree with the explicit host. Generic
|
|
69
74
|
// commands (vm/fleet/etc.) may target either canonical provider.
|
|
70
|
-
if (
|
|
75
|
+
if (args[0] === "proxmox" && args[0] !== selectedProvider) {
|
|
71
76
|
return scope;
|
|
72
77
|
}
|
|
73
78
|
scope.add(canonicalHostAlias(selectedHost));
|
|
74
79
|
return scope;
|
|
75
80
|
}
|
|
76
|
-
// ESXi has one canonical host in this bridge. It is safe to select only
|
|
77
|
-
// for its explicit provider command; every ambiguous/all-provider command
|
|
78
|
-
// remains direct-environment-only rather than widening credential scope.
|
|
79
|
-
if (args[0] === "esxi")
|
|
80
|
-
scope.add(LEGACY_ESXI_HOST_ID);
|
|
81
81
|
return scope;
|
|
82
82
|
}
|
|
83
83
|
function ownedProcessGroupExists(child) {
|
|
@@ -251,7 +251,7 @@ export class CanonicalLabBridge {
|
|
|
251
251
|
if (scope.size === 0)
|
|
252
252
|
return {};
|
|
253
253
|
const selectedId = scope.values().next().value;
|
|
254
|
-
const host = this.credentials.proxmoxHosts.find((candidate) => canonicalHostAlias(candidate.id) === selectedId)
|
|
254
|
+
const host = this.credentials.proxmoxHosts.find((candidate) => canonicalHostAlias(candidate.id) === selectedId);
|
|
255
255
|
return host ? canonicalEnvironmentForHost(host) : {};
|
|
256
256
|
}
|
|
257
257
|
childEnvironment(args) {
|
|
@@ -268,6 +268,9 @@ export class CanonicalLabBridge {
|
|
|
268
268
|
if (!this.isConfigured) {
|
|
269
269
|
throw new CanonicalBridgeError("canonical lab CLI is not configured");
|
|
270
270
|
}
|
|
271
|
+
if (namesRetiredEsxi(args)) {
|
|
272
|
+
throw new CanonicalBridgeError("ESXi is retired (the lab is Proxmox only); the canonical command was not run");
|
|
273
|
+
}
|
|
271
274
|
const command = [
|
|
272
275
|
...(this.inventoryFile ? ["--file", this.inventoryFile] : []),
|
|
273
276
|
...args,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/canonical/bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/canonical/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actionable credential remediation for credential_status and the
|
|
3
|
+
* CREDENTIALS_UNAVAILABLE gate.
|
|
4
|
+
*
|
|
5
|
+
* The resolver's own `remediation` string is generic (and leads with mock
|
|
6
|
+
* mode). In a governed local-stdio install the failure is almost always the
|
|
7
|
+
* same: the harness that spawned this process never injected the lab
|
|
8
|
+
* variables, and the governed runtime wrapper strips DOPPLER_TOKEN so the
|
|
9
|
+
* Tier-2 Doppler path is unreachable. This module inspects which variable
|
|
10
|
+
* groups the process actually received (names only, never values) and says
|
|
11
|
+
* exactly what to change.
|
|
12
|
+
*/
|
|
13
|
+
import type { CredentialResolutionError } from "./errors.js";
|
|
14
|
+
export interface CredentialGroupStatus {
|
|
15
|
+
group: "proxmox-lab" | "proxmox-mini" | "appliance-ssh";
|
|
16
|
+
present: boolean;
|
|
17
|
+
/** Variable names that satisfy this group (name-only; never values). */
|
|
18
|
+
needs: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CredentialRemediation {
|
|
21
|
+
/** One sentence naming the concrete gap; safe to embed in an error. */
|
|
22
|
+
headline: string;
|
|
23
|
+
/** Ordered, copy-pasteable steps. Never contains a secret value. */
|
|
24
|
+
steps: string[];
|
|
25
|
+
/** Which variable groups the aggregate resolver found in this process. */
|
|
26
|
+
inspected: CredentialGroupStatus[];
|
|
27
|
+
dopplerTokenInProcess: boolean;
|
|
28
|
+
}
|
|
29
|
+
type Env = Record<string, string | undefined>;
|
|
30
|
+
export declare function inspectCredentialEnvironment(env?: Env): CredentialGroupStatus[];
|
|
31
|
+
export declare function buildCredentialRemediation(error: Pick<CredentialResolutionError, "reason" | "missing" | "message"> | undefined, env?: Env): CredentialRemediation;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=remediation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remediation.d.ts","sourceRoot":"","sources":["../../../src/credentials/remediation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,eAAe,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,0EAA0E;IAC1E,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAe9C,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,GAAiB,GAAG,qBAAqB,EAAE,CAqB5F;AAcD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,IAAI,CAAC,yBAAyB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG,SAAS,EACpF,GAAG,GAAE,GAAiB,GACrB,qBAAqB,CAqEvB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actionable credential remediation for credential_status and the
|
|
3
|
+
* CREDENTIALS_UNAVAILABLE gate.
|
|
4
|
+
*
|
|
5
|
+
* The resolver's own `remediation` string is generic (and leads with mock
|
|
6
|
+
* mode). In a governed local-stdio install the failure is almost always the
|
|
7
|
+
* same: the harness that spawned this process never injected the lab
|
|
8
|
+
* variables, and the governed runtime wrapper strips DOPPLER_TOKEN so the
|
|
9
|
+
* Tier-2 Doppler path is unreachable. This module inspects which variable
|
|
10
|
+
* groups the process actually received (names only, never values) and says
|
|
11
|
+
* exactly what to change.
|
|
12
|
+
*/
|
|
13
|
+
const set = (env, key) => typeof env[key] === "string" && env[key].length > 0;
|
|
14
|
+
const anySet = (env, keys) => keys.some((key) => set(env, key));
|
|
15
|
+
function proxmoxGroupPresent(env, prefix) {
|
|
16
|
+
const endpoint = anySet(env, [`${prefix}URL`, `${prefix}BASE_URL`, `${prefix}HOST`, `${prefix}IP`]);
|
|
17
|
+
const auth = set(env, `${prefix}API_TOKEN`) ||
|
|
18
|
+
(anySet(env, [`${prefix}TOKEN_ID`, `${prefix}API_TOKEN_ID`]) &&
|
|
19
|
+
anySet(env, [`${prefix}TOKEN_SECRET`, `${prefix}API_TOKEN_SECRET`])) ||
|
|
20
|
+
(anySet(env, [`${prefix}USERNAME`, `${prefix}USER`]) && anySet(env, [`${prefix}PASSWORD`, `${prefix}PASS`]));
|
|
21
|
+
return endpoint && auth;
|
|
22
|
+
}
|
|
23
|
+
export function inspectCredentialEnvironment(env = process.env) {
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
group: "proxmox-lab",
|
|
27
|
+
present: proxmoxGroupPresent(env, "LAB_PROXMOX_"),
|
|
28
|
+
needs: "LAB_PROXMOX_URL (or _HOST) + LAB_PROXMOX_API_TOKEN (or _USERNAME/_PASSWORD)",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
group: "proxmox-mini",
|
|
32
|
+
present: proxmoxGroupPresent(env, "LAB_PROXMOX_MINIS_") || proxmoxGroupPresent(env, "LAB_PROXMOX_MINI_"),
|
|
33
|
+
needs: "LAB_PROXMOX_MINIS_URL (or _HOST) + LAB_PROXMOX_MINIS_API_TOKEN (or _USERNAME/_PASSWORD)",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
group: "appliance-ssh",
|
|
37
|
+
present: anySet(env, ["LAB_VM_CREDENTIALS", "VM_CREDENTIALS"]) ||
|
|
38
|
+
(anySet(env, ["LAB_VM_CREDENTIALS_USERNAME", "LAB_VM_CREDENTIALS_USER", "LAB_VM_USER", "VM_USER"]) &&
|
|
39
|
+
anySet(env, ["LAB_VM_CREDENTIALS_PASSWORD", "LAB_VM_CREDENTIALS_PASS", "LAB_VM_PASS", "VM_PASS"])),
|
|
40
|
+
needs: "LAB_VM_CREDENTIALS (JSON or user:pass) or LAB_VM_CREDENTIALS_USERNAME + LAB_VM_CREDENTIALS_PASSWORD",
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
const CANONICAL_ALTERNATIVE = "Reads that do not need this aggregate bundle: list_hosts and list_inventory (target-scoped credentials via the " +
|
|
45
|
+
"canonical lab-inventory CLI), the ApplianceClaim tools, and `lab-inventory` itself. Legacy tools such as " +
|
|
46
|
+
"list_slots stay blocked with CREDENTIALS_UNAVAILABLE until the bundle resolves; do not inject unrelated hosts' " +
|
|
47
|
+
"credentials just to unblock one VM.";
|
|
48
|
+
const VERIFY_STEP = "Reload the server (manage_mcp_server reload, or restart the harness) and call credential_status again: the " +
|
|
49
|
+
"tier should read direct_env or doppler_api and the legacy aggregate source resolved. A host listed here as " +
|
|
50
|
+
"reachable is the only evidence the credentials work; mock mode (CT_LAB_MCP_ALLOW_MOCK=1) is for offline tests " +
|
|
51
|
+
"and its results are not evidence.";
|
|
52
|
+
export function buildCredentialRemediation(error, env = process.env) {
|
|
53
|
+
const inspected = inspectCredentialEnvironment(env);
|
|
54
|
+
const missingGroups = inspected.filter((g) => !g.present);
|
|
55
|
+
const dopplerTokenInProcess = set(env, "DOPPLER_TOKEN");
|
|
56
|
+
const reason = error?.reason ?? "no_credentials_found";
|
|
57
|
+
const steps = [];
|
|
58
|
+
const injectSteps = () => [
|
|
59
|
+
"Confirm the source has the values (names only; never print values): " +
|
|
60
|
+
"`doppler secrets --only-names --project ai-workspace --config dev | grep -E 'LAB_PROXMOX|LAB_VM_CREDENTIALS'`.",
|
|
61
|
+
"Inject them into this process from the parent, because it only sees the environment its harness gave it " +
|
|
62
|
+
"(DOPPLER_PROJECT/DOPPLER_CONFIG are not credentials). Either add `env` refs to the ct-lab entry of the " +
|
|
63
|
+
"harness MCP config, e.g. `\"LAB_PROXMOX_URL\": \"doppler://ai-workspace/dev/LAB_PROXMOX_URL\"` for each " +
|
|
64
|
+
"variable below, which the governed runtime wrapper (tools/mcp-runtime-exec.mjs) resolves through the " +
|
|
65
|
+
"Doppler CLI without a login prompt, or start the harness itself under " +
|
|
66
|
+
"`doppler run --project ai-workspace --config dev --`.",
|
|
67
|
+
dopplerTokenInProcess
|
|
68
|
+
? "DOPPLER_TOKEN is present in this process, so the Tier-2 Doppler API path was attempted; check the " +
|
|
69
|
+
"`doppler_unreachable` / `partial_credentials` detail above instead of the injection steps."
|
|
70
|
+
: "A DOPPLER_TOKEN exported in the harness is not enough: the governed runtime wrapper strips it before " +
|
|
71
|
+
"spawning this server (by design), so the Doppler API tier is unreachable here. Use the env refs above.",
|
|
72
|
+
];
|
|
73
|
+
if (reason === "doppler_unreachable") {
|
|
74
|
+
steps.push("The Doppler API tier was attempted and failed. Check that DOPPLER_TOKEN is a valid config-scoped token for " +
|
|
75
|
+
"DOPPLER_PROJECT/DOPPLER_CONFIG (not expired or revoked) and that api.doppler.com is reachable.", "The fetch is bounded by CT_LAB_MCP_RESOLVE_TIMEOUT_MS (default 8000, 250-30000); raise it only for a slow link.", "Or bypass Doppler by injecting the variables directly (see the groups below).");
|
|
76
|
+
}
|
|
77
|
+
else if (reason === "partial_credentials") {
|
|
78
|
+
steps.push(`The aggregate resolver found some but not all required groups; still missing: ${(error?.missing.length ? error.missing : missingGroups.map((g) => g.group)).join(", ") || "unknown"}.`, ...injectSteps().slice(1));
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
steps.push(...injectSteps());
|
|
82
|
+
}
|
|
83
|
+
if (missingGroups.length > 0) {
|
|
84
|
+
steps.push("Variable groups still missing from this process: " +
|
|
85
|
+
missingGroups.map((g) => `${g.group} (${g.needs})`).join("; ") +
|
|
86
|
+
".");
|
|
87
|
+
}
|
|
88
|
+
if (missingGroups.some((g) => g.group === "appliance-ssh")) {
|
|
89
|
+
steps.push("Note: the aggregate resolver reads one shared appliance login (LAB_VM_CREDENTIALS or the _USERNAME/_PASSWORD " +
|
|
90
|
+
"pair). Per-VM `LAB_VM_CREDENTIALS_<UUID>` secrets are consumed only by the canonical CLI and do not satisfy " +
|
|
91
|
+
"it; if the secret store has no shared entry the aggregate bundle cannot resolve from it.");
|
|
92
|
+
}
|
|
93
|
+
steps.push(CANONICAL_ALTERNATIVE, VERIFY_STEP);
|
|
94
|
+
const groupSummary = missingGroups.length
|
|
95
|
+
? `no ${missingGroups.map((g) => g.group).join(", ")} variables reached this process`
|
|
96
|
+
: "the expected variables are present but did not resolve";
|
|
97
|
+
const headline = reason === "doppler_unreachable"
|
|
98
|
+
? "The Doppler API tier failed; fix the token/connectivity or inject LAB_* variables directly."
|
|
99
|
+
: `Aggregate lab credentials unavailable: ${groupSummary}. Inject LAB_PROXMOX_*, LAB_PROXMOX_MINIS_* and ` +
|
|
100
|
+
"LAB_VM_CREDENTIALS from the parent (doppler:// env refs in the MCP config, or run the harness under " +
|
|
101
|
+
"`doppler run`); credential_status lists the exact steps. list_hosts/list_inventory and claim tools do " +
|
|
102
|
+
"not need this bundle.";
|
|
103
|
+
return { headline, steps, inspected, dopplerTokenInProcess };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=remediation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remediation.js","sourceRoot":"","sources":["../../../src/credentials/remediation.ts"],"names":[],"mappings":"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"}
|