@calltelemetry/ct-lab-mcp 0.8.58 → 0.8.60
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 +4 -2
- package/dist/src/server.d.ts +3 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +3 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/tools/appliance-claim-tools.d.ts +97 -14
- package/dist/src/tools/appliance-claim-tools.d.ts.map +1 -1
- package/dist/src/tools/appliance-claim-tools.js +254 -25
- package/dist/src/tools/appliance-claim-tools.js.map +1 -1
- 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 +4 -0
- package/dist/src/tools/canonical-guard.js.map +1 -1
- package/dist/src/tools/claim-first.d.ts +76 -0
- package/dist/src/tools/claim-first.d.ts.map +1 -0
- package/dist/src/tools/claim-first.js +149 -0
- package/dist/src/tools/claim-first.js.map +1 -0
- package/dist/src/tools/claim-lifecycle.d.ts +4 -4
- package/dist/src/tools/claimed-import-qcow.d.ts +117 -0
- package/dist/src/tools/claimed-import-qcow.d.ts.map +1 -0
- package/dist/src/tools/claimed-import-qcow.js +171 -0
- package/dist/src/tools/claimed-import-qcow.js.map +1 -0
- package/dist/src/tools/cube-provision.d.ts +2 -2
- package/dist/src/tools/factory-reset.d.ts +4 -4
- package/dist/src/tools/import-qcow.d.ts +6 -6
- package/dist/src/tools/index.d.ts +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +66 -7
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/lab-dev.d.ts +26 -26
- package/dist/src/tools/license-tools.d.ts +4 -4
- package/dist/src/tools/list-hosts.d.ts +6 -0
- package/dist/src/tools/list-hosts.d.ts.map +1 -1
- package/dist/src/tools/list-hosts.js.map +1 -1
- package/dist/src/tools/provision-tools.d.ts +8 -8
- package/dist/src/tools/provision-tools.d.ts.map +1 -1
- package/dist/src/tools/provision-tools.js +51 -0
- package/dist/src/tools/provision-tools.js.map +1 -1
- package/dist/src/tools/quick-provision.d.ts +2 -2
- package/dist/src/tools/sandbox-tools.d.ts +4 -4
- package/dist/src/tools/slot-tools.d.ts +22 -4
- package/dist/src/tools/slot-tools.d.ts.map +1 -1
- package/dist/src/tools/slot-tools.js +15 -0
- package/dist/src/tools/slot-tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,7 +35,9 @@ AI Clients (Claude Desktop / Cursor / Web / AI Agents)
|
|
|
35
35
|
├── lab_mission (Canonical manifest-bound multi-phase mission)
|
|
36
36
|
├── lab_dev (Canonical leased remote-development lifecycle)
|
|
37
37
|
├── list_appliance_claims (Kubernetes ApplianceClaim CRD fleet discovery)
|
|
38
|
-
├── create_appliance_claim (Declarative CRD provisioning with channel rules)
|
|
38
|
+
├── create_appliance_claim (Declarative CRD provisioning with channel rules; profile=demo|bare)
|
|
39
|
+
├── renew_appliance_claim (Extend a claim TTL; never shortens)
|
|
40
|
+
├── claimed_import_qcow (Image to claimed guest: claim-first bare claim, then canonical import-qcow)
|
|
39
41
|
├── delete_appliance_claim (Operator teardown trigger via CRD finalizer)
|
|
40
42
|
├── sideload_appliance_runner (Isolated runner commands & container overrides)
|
|
41
43
|
├── get_appliance_id (Hardware UUID -> CT-APP-XXXX-XXXX-XXXX derivation)
|
|
@@ -91,7 +93,7 @@ than use the legacy Node VMID/name slot state when the bridge is unavailable.
|
|
|
91
93
|
power-off is not implemented.
|
|
92
94
|
- **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.
|
|
93
95
|
- **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.
|
|
94
|
-
- **Kubernetes ApplianceClaim CRD Governance**: Declarative lifecycle tools (`list_appliance_claims`, `get_appliance_claim`, `create_appliance_claim`, `delete_appliance_claim`) reconciling appliances directly with the in-cluster `ct-appliance-operator` in `ct-lab`. Enforces release channel rules (rejecting `0.8.7.*` or pre-releases on channel `stable`), container git hash overrides, and
|
|
96
|
+
- **Kubernetes ApplianceClaim CRD Governance**: Declarative lifecycle tools (`list_appliance_claims`, `get_appliance_claim`, `create_appliance_claim`, `renew_appliance_claim`, `pause_appliance_claim`, `delete_appliance_claim`, and `claimed_import_qcow`) reconciling appliances directly with the in-cluster `ct-appliance-operator` in `ct-lab`. Enforces release channel rules (rejecting `0.8.7.*` or pre-releases on channel `stable`), container git hash overrides, and TTLs. The operator is STRICT (ADR 0779): any guest no claim names (node + VMID, or VM name) is destroyed on its next 5-minute pass, so claim first. `create_appliance_claim` requires a named guest (`vmid`, or `vmName`) and a known node (`minis`|`proxmox`); `profile=bare` claims and tracks a guest with no seed, no license and no bootstrap (clean benchmarks, imported images); `renew_appliance_claim` extends the TTL; `delete_appliance_claim` makes the operator destroy the guest. Every guest-creating tool is claim-first: `provision_vm`, `auto_provision_vm` and `proxmox_quick_provision` (apply) create a bare ApplianceClaim BEFORE the guest and delete it if creation fails (canonical apply needs an explicit `vmid`; the legacy in-process path claims by VM name); `claim_slot` apply needs `claimNode` + `claimVmid`/`claimVmName` for the existing guest. A tool that cannot name the guest refuses with a pointer to the runbook instead of creating an unclaimed one. `claimed_import_qcow` is the one sanctioned image-to-claimed-guest path: it creates the bare claim first, runs the canonical `vm import-qcow` apply, and deletes the claim again if the import fails.
|
|
95
97
|
- **Sideloaded Appliance Management Runner**: `sideload_appliance_runner` executes isolated runner actions (`execute`, `container_override`, `systemd_reset`, `diagnostic_bundle`) over SSH (port 2222) using ephemeral runner payloads, eliminating brittleness and version drift from mutating `/home/calltelemetry/cli.sh`.
|
|
96
98
|
- **Standardized 0.8.7+ Appliance Licensing**: `get_appliance_id` derives canonical `CT-APP-XXXX-XXXX-XXXX` from the host hardware UUID. `sideload_license` delivers modern `calltelemetry-license-v2` JSON envelopes directly to `/etc/calltelemetry/calltelemetry.lic` with strict `chmod 600` permissions.
|
|
97
99
|
- **Automated 5-Point Demo Verification Gate**: `verify_appliance_demo` runs an end-to-end certification gate checking API session authentication, active license status, CUBE gateway connectivity, phone endpoint registrations, and processed CDR/call records before demo handoff.
|
package/dist/src/server.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Instantiates and wires the McpServer with MultiHypervisorManager, SlotManager,
|
|
5
5
|
* SafetyGuardrailEngine, ApplianceSshExecutor / MockApplianceExecutor, and registers all MCP tools.
|
|
6
6
|
*/
|
|
7
|
+
import { type ClaimFirstHooks } from "./tools/claim-first.js";
|
|
7
8
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
9
|
import { SlotManager } from "./slot/manager.js";
|
|
9
10
|
import { MultiHypervisorManager } from "./hypervisors/manager.js";
|
|
@@ -36,6 +37,8 @@ export interface McpServerOptions {
|
|
|
36
37
|
hostConfigs?: ProxmoxHostConfig[];
|
|
37
38
|
proxmoxManager?: MultiHostProxmoxManager;
|
|
38
39
|
canonicalBridge?: CanonicalLabBridge;
|
|
40
|
+
/** Test seam: replaces the Kubernetes-backed claim-first hooks. */
|
|
41
|
+
claimFirst?: ClaimFirstHooks;
|
|
39
42
|
/** Which transport launched this server (local-stdio | local-sse). REL-920. */
|
|
40
43
|
plane?: LabPlane;
|
|
41
44
|
}
|
package/dist/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAgC,MAAM,wBAAwB,CAAC;AAE7F,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAa,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAmB,KAAK,sBAAsB,EAA6B,MAAM,mBAAmB,CAAC;AAE5G,MAAM,WAAW,gBAAgB;IAC/B,uGAAuG;IACvG,eAAe,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,eAAO,MAAM,2BAA2B,QAW8J,CAAC;AAEvM;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAgC,MAAM,wBAAwB,CAAC;AAE7F,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAa,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAmB,KAAK,sBAAsB,EAA6B,MAAM,mBAAmB,CAAC;AAE5G,MAAM,WAAW,gBAAgB;IAC/B,uGAAuG;IACvG,eAAe,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,mEAAmE;IACnE,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,eAAO,MAAM,2BAA2B,QAW8J,CAAC;AAEvM;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,SAAS,CA8GzE"}
|
package/dist/src/server.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Instantiates and wires the McpServer with MultiHypervisorManager, SlotManager,
|
|
5
5
|
* SafetyGuardrailEngine, ApplianceSshExecutor / MockApplianceExecutor, and registers all MCP tools.
|
|
6
6
|
*/
|
|
7
|
+
import { createClaimFirstHooks } from "./tools/claim-first.js";
|
|
7
8
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
9
|
import { SlotManager } from "./slot/manager.js";
|
|
9
10
|
import { MultiHypervisorManager } from "./hypervisors/manager.js";
|
|
@@ -102,6 +103,8 @@ export function createMcpServer(options = {}) {
|
|
|
102
103
|
credentials: options.credentials,
|
|
103
104
|
}),
|
|
104
105
|
plane: options.plane,
|
|
106
|
+
// Claim-first provisioning is always on in a real server (REL-1388, ADR 0779).
|
|
107
|
+
claimFirst: options.claimFirst ?? createClaimFirstHooks(),
|
|
105
108
|
};
|
|
106
109
|
// No host tools are exposed. Transport options are never derived from ToolContext credentials.
|
|
107
110
|
if (options.hostReadSession) {
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAyB,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAwB,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAyB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAqB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,eAAe,EAA0D,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export interface ApplianceClaimResource {
|
|
|
24
24
|
creationTimestamp?: string;
|
|
25
25
|
};
|
|
26
26
|
spec: {
|
|
27
|
-
targetIp
|
|
27
|
+
targetIp?: string;
|
|
28
28
|
targetPort?: number;
|
|
29
29
|
sshUser?: string;
|
|
30
30
|
vmid?: number;
|
|
@@ -46,6 +46,8 @@ export interface ApplianceClaimResource {
|
|
|
46
46
|
state?: "Active" | "Closed";
|
|
47
47
|
closed?: boolean;
|
|
48
48
|
claimType?: "dynamic" | "fixture";
|
|
49
|
+
profile?: "demo" | "bare";
|
|
50
|
+
paused?: boolean;
|
|
49
51
|
vmName?: string;
|
|
50
52
|
containerOverrides?: Record<string, string>;
|
|
51
53
|
};
|
|
@@ -76,11 +78,11 @@ export declare const ListApplianceClaimsInputSchema: z.ZodObject<{
|
|
|
76
78
|
claimType: z.ZodOptional<z.ZodEnum<["dynamic", "fixture"]>>;
|
|
77
79
|
}, "strip", z.ZodTypeAny, {
|
|
78
80
|
namespace: string;
|
|
79
|
-
phase?: "Failed" | "
|
|
81
|
+
phase?: "Failed" | "Closed" | "Pending" | "Provisioning" | "Bootstrapping" | "Ready" | undefined;
|
|
80
82
|
claimType?: "fixture" | "dynamic" | undefined;
|
|
81
83
|
}, {
|
|
82
|
-
phase?: "Failed" | "Ready" | "Pending" | "Provisioning" | "Closed" | "Bootstrapping" | undefined;
|
|
83
84
|
namespace?: string | undefined;
|
|
85
|
+
phase?: "Failed" | "Closed" | "Pending" | "Provisioning" | "Bootstrapping" | "Ready" | undefined;
|
|
84
86
|
claimType?: "fixture" | "dynamic" | undefined;
|
|
85
87
|
}>;
|
|
86
88
|
export type ListApplianceClaimsInput = z.infer<typeof ListApplianceClaimsInputSchema>;
|
|
@@ -102,8 +104,10 @@ export type GetApplianceClaimInput = z.infer<typeof GetApplianceClaimInputSchema
|
|
|
102
104
|
export declare const CreateApplianceClaimInputShape: {
|
|
103
105
|
name: z.ZodOptional<z.ZodString>;
|
|
104
106
|
namespace: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
105
|
-
targetIp: z.ZodString
|
|
107
|
+
targetIp: z.ZodOptional<z.ZodString>;
|
|
106
108
|
vmid: z.ZodOptional<z.ZodNumber>;
|
|
109
|
+
vmName: z.ZodOptional<z.ZodString>;
|
|
110
|
+
profile: z.ZodDefault<z.ZodOptional<z.ZodEnum<["demo", "bare"]>>>;
|
|
107
111
|
node: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
108
112
|
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
109
113
|
train: z.ZodOptional<z.ZodEnum<["stable", "beta", "rc", "candidate", "dev", "edge"]>>;
|
|
@@ -119,8 +123,10 @@ export declare const CreateApplianceClaimInputShape: {
|
|
|
119
123
|
export declare const CreateApplianceClaimInputSchema: z.ZodObject<{
|
|
120
124
|
name: z.ZodOptional<z.ZodString>;
|
|
121
125
|
namespace: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
122
|
-
targetIp: z.ZodString
|
|
126
|
+
targetIp: z.ZodOptional<z.ZodString>;
|
|
123
127
|
vmid: z.ZodOptional<z.ZodNumber>;
|
|
128
|
+
vmName: z.ZodOptional<z.ZodString>;
|
|
129
|
+
profile: z.ZodDefault<z.ZodOptional<z.ZodEnum<["demo", "bare"]>>>;
|
|
124
130
|
node: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
125
131
|
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
126
132
|
train: z.ZodOptional<z.ZodEnum<["stable", "beta", "rc", "candidate", "dev", "edge"]>>;
|
|
@@ -136,33 +142,37 @@ export declare const CreateApplianceClaimInputSchema: z.ZodObject<{
|
|
|
136
142
|
node: string;
|
|
137
143
|
version: string;
|
|
138
144
|
dryRun: boolean;
|
|
139
|
-
|
|
145
|
+
namespace: string;
|
|
146
|
+
profile: "demo" | "bare";
|
|
147
|
+
preset: "comprehensive_demo" | "standard_demo" | "minimal_demo" | "empty";
|
|
140
148
|
ttlHours: number;
|
|
149
|
+
licenseTier: "Demo" | "Community" | "Essentials" | "Advanced" | "Premium" | "Beta";
|
|
141
150
|
licenseDays: number;
|
|
142
|
-
licenseTier: "Demo" | "Beta" | "Premium" | "Essentials" | "Advanced" | "Community";
|
|
143
|
-
namespace: string;
|
|
144
|
-
preset: "empty" | "comprehensive_demo" | "standard_demo" | "minimal_demo";
|
|
145
151
|
adminEmail: string;
|
|
146
152
|
name?: string | undefined;
|
|
147
153
|
vmid?: number | undefined;
|
|
154
|
+
targetIp?: string | undefined;
|
|
155
|
+
vmName?: string | undefined;
|
|
148
156
|
linearIssue?: string | undefined;
|
|
149
157
|
containerOverrides?: Record<string, string> | undefined;
|
|
150
158
|
train?: "dev" | "stable" | "beta" | "rc" | "candidate" | "edge" | undefined;
|
|
151
159
|
}, {
|
|
152
|
-
targetIp: string;
|
|
153
160
|
node?: string | undefined;
|
|
154
161
|
name?: string | undefined;
|
|
155
162
|
version?: string | undefined;
|
|
156
163
|
dryRun?: boolean | undefined;
|
|
157
164
|
vmid?: number | undefined;
|
|
165
|
+
targetIp?: string | undefined;
|
|
166
|
+
vmName?: string | undefined;
|
|
158
167
|
linearIssue?: string | undefined;
|
|
159
168
|
containerOverrides?: Record<string, string> | undefined;
|
|
160
|
-
ttlHours?: number | undefined;
|
|
161
|
-
licenseDays?: number | undefined;
|
|
162
|
-
licenseTier?: "Demo" | "Beta" | "Premium" | "Essentials" | "Advanced" | "Community" | undefined;
|
|
163
169
|
namespace?: string | undefined;
|
|
170
|
+
profile?: "demo" | "bare" | undefined;
|
|
164
171
|
train?: "dev" | "stable" | "beta" | "rc" | "candidate" | "edge" | undefined;
|
|
165
|
-
preset?: "
|
|
172
|
+
preset?: "comprehensive_demo" | "standard_demo" | "minimal_demo" | "empty" | undefined;
|
|
173
|
+
ttlHours?: number | undefined;
|
|
174
|
+
licenseTier?: "Demo" | "Community" | "Essentials" | "Advanced" | "Premium" | "Beta" | undefined;
|
|
175
|
+
licenseDays?: number | undefined;
|
|
166
176
|
adminEmail?: string | undefined;
|
|
167
177
|
}>;
|
|
168
178
|
export type CreateApplianceClaimInput = z.infer<typeof CreateApplianceClaimInputSchema>;
|
|
@@ -204,8 +214,47 @@ export declare const PauseApplianceClaimInputSchema: z.ZodObject<{
|
|
|
204
214
|
pausedReason?: string | undefined;
|
|
205
215
|
}>;
|
|
206
216
|
export type PauseApplianceClaimInput = z.infer<typeof PauseApplianceClaimInputSchema>;
|
|
217
|
+
export declare const RenewApplianceClaimInputShape: {
|
|
218
|
+
name: z.ZodString;
|
|
219
|
+
namespace: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
220
|
+
extendHours: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
221
|
+
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
222
|
+
};
|
|
223
|
+
export declare const RenewApplianceClaimInputSchema: z.ZodObject<{
|
|
224
|
+
name: z.ZodString;
|
|
225
|
+
namespace: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
226
|
+
extendHours: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
227
|
+
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
228
|
+
}, "strip", z.ZodTypeAny, {
|
|
229
|
+
name: string;
|
|
230
|
+
dryRun: boolean;
|
|
231
|
+
namespace: string;
|
|
232
|
+
extendHours: number;
|
|
233
|
+
}, {
|
|
234
|
+
name: string;
|
|
235
|
+
dryRun?: boolean | undefined;
|
|
236
|
+
namespace?: string | undefined;
|
|
237
|
+
extendHours?: number | undefined;
|
|
238
|
+
}>;
|
|
239
|
+
export type RenewApplianceClaimInput = z.infer<typeof RenewApplianceClaimInputSchema>;
|
|
240
|
+
export type ClaimNode = "proxmox" | "minis" | "esxi";
|
|
241
|
+
/** Canonical node the operator tracks claims by, or null when the operator would not match it. */
|
|
242
|
+
export declare function normalizeClaimNode(node: string | undefined): ClaimNode | null;
|
|
207
243
|
export declare function handleListApplianceClaims(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
|
|
208
244
|
export declare function handleGetApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
|
|
245
|
+
/**
|
|
246
|
+
* Builds the ApplianceClaim manifest for create_appliance_claim, enforcing the
|
|
247
|
+
* strict-cleanup claim contract (ADR 0779): a claim must name a guest the
|
|
248
|
+
* operator can match (canonical node + VMID, or an exact vmName), otherwise it
|
|
249
|
+
* protects nothing and the guest is destroyed on the next operator pass.
|
|
250
|
+
*/
|
|
251
|
+
export declare function buildApplianceClaimManifest(input: CreateApplianceClaimInput): {
|
|
252
|
+
manifest: ApplianceClaimResource;
|
|
253
|
+
claimName: string;
|
|
254
|
+
train: ReleaseChannel;
|
|
255
|
+
} | {
|
|
256
|
+
error: string;
|
|
257
|
+
};
|
|
209
258
|
export declare function handleCreateApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
|
|
210
259
|
/**
|
|
211
260
|
* Pauses or unpauses an ApplianceClaim (UAT-1740, ADR 0755). spec.paused=true
|
|
@@ -215,5 +264,39 @@ export declare function handleCreateApplianceClaim(args: unknown, _context?: Too
|
|
|
215
264
|
* --type=merge, with a post-patch live readback for verification.
|
|
216
265
|
*/
|
|
217
266
|
export declare function handlePauseApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
|
|
267
|
+
export type RenewPlan = {
|
|
268
|
+
ok: true;
|
|
269
|
+
previousTtlHours: number;
|
|
270
|
+
newTtlHours: number;
|
|
271
|
+
elapsedHours: number;
|
|
272
|
+
baseline: string;
|
|
273
|
+
expiresAt: string;
|
|
274
|
+
} | {
|
|
275
|
+
ok: false;
|
|
276
|
+
error: string;
|
|
277
|
+
};
|
|
278
|
+
/**
|
|
279
|
+
* Computes the TTL that gives a claim extendHours of life from now. The
|
|
280
|
+
* operator expires a claim ttlHours after status.completionTime, so the new
|
|
281
|
+
* ttlHours is elapsed + extendHours. Renewal never shortens a claim.
|
|
282
|
+
*/
|
|
283
|
+
export declare function planClaimRenewal(claim: ApplianceClaimResource & {
|
|
284
|
+
metadata: {
|
|
285
|
+
deletionTimestamp?: string;
|
|
286
|
+
};
|
|
287
|
+
}, extendHours: number, now?: number): RenewPlan;
|
|
288
|
+
/**
|
|
289
|
+
* Extends an ApplianceClaim's TTL (renew_appliance_claim). Spec-only merge
|
|
290
|
+
* patch on spec.ttlHours with a live readback; the operator picks it up on its
|
|
291
|
+
* next pass. Never shortens, never touches fixtures, never un-expires a claim
|
|
292
|
+
* the operator already deleted.
|
|
293
|
+
*/
|
|
294
|
+
export declare function handleRenewApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
|
|
218
295
|
export declare function handleDeleteApplianceClaim(args: unknown, _context?: ToolContext): Promise<CallToolResult>;
|
|
296
|
+
/**
|
|
297
|
+
* Merge-patches spec fields on an existing ApplianceClaim (in-cluster API first,
|
|
298
|
+
* kubectl fallback). Used by claim-first provisioning to attach the VMID once the
|
|
299
|
+
* hypervisor assigned it. Throws on failure.
|
|
300
|
+
*/
|
|
301
|
+
export declare function patchApplianceClaimSpec(name: string, spec: Record<string, unknown>, namespace?: string): Promise<void>;
|
|
219
302
|
//# sourceMappingURL=appliance-claim-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appliance-claim-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/appliance-claim-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,cAAc,EAA2C,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9C,eAAO,MAAM,mBAAmB,+DAAgE,CAAC;AACjG,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAqCzG;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"appliance-claim-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/appliance-claim-tools.ts"],"names":[],"mappings":"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"}
|