@takashito/linode-mcp-server
Version:
MCP server for Linode API
433 lines • 28.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resetDiskPasswordSchema = exports.cloneDiskSchema = exports.applyFirewallsSchema = exports.getLinodeFirewallsSchema = exports.deleteLinodeIPSchema = exports.updateLinodeIPSchema = exports.getLinodeIPSchema = exports.linodeAllocateIPSchema = exports.getLinodeIPsSchema = exports.restoreBackupSchema = exports.enableBackupsSchema = exports.cancelBackupsSchema = exports.createSnapshotSchema = exports.getBackupSchema = exports.getBackupsSchema = exports.backupSchema = exports.getKernelSchema = exports.listKernelsSchema = exports.resizeLinodeDiskSchema = exports.deleteLinodeDiskSchema = exports.updateLinodeDiskSchema = exports.createLinodeDiskSchema = exports.getLinodeDiskSchema = exports.getLinodeDisksSchema = exports.deleteLinodeConfigSchema = exports.updateLinodeConfigSchema = exports.createLinodeConfigSchema = exports.getLinodeConfigSchema = exports.getLinodeConfigsSchema = exports.rescueInstanceSchema = exports.rebuildInstanceSchema = exports.cloneInstanceSchema = exports.resizeInstanceSchema = exports.deleteInstanceSchema = exports.shutdownInstanceSchema = exports.bootInstanceSchema = exports.rebootInstanceSchema = exports.updateInstanceSchema = exports.createInstanceSchema = exports.getInstanceSchema = exports.listInstancesSchema = exports.kernelsResponseSchema = exports.linodeDisksResponseSchema = exports.linodeConfigsResponseSchema = exports.linodeInstancesResponseSchema = exports.kernelSchema = exports.linodeDiskSchema = exports.linodeConfigSchema = exports.linodeInstanceSchema = exports.configInterfaceSchema = void 0;
exports.getLinodeVolumesSchema = exports.getLinodeNodeBalancersSchema = exports.getInstanceTypeSchema = exports.listInstanceTypesSchema = exports.reorderConfigInterfacesSchema = exports.deleteConfigInterfaceSchema = exports.updateConfigInterfaceSchema = exports.createConfigInterfaceSchema = exports.getConfigInterfaceSchema = exports.getConfigInterfacesSchema = exports.getLinodeStatsByDateSchema = exports.getLinodeStatsSchema = exports.getMonthlyTransferSchema = exports.getNetworkTransferSchema = exports.resetRootPasswordSchema = exports.mutateLinodeSchema = exports.migrateLinodeSchema = void 0;
const zod_1 = require("zod");
const schemas_1 = require("../common/schemas");
// Config Interface schema (moved to the top for dependency resolution)
exports.configInterfaceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the interface'),
label: zod_1.z.string().describe('The label for the interface'),
purpose: zod_1.z.enum(['public', 'vlan', 'vpc']).describe('The purpose of the interface (public, vlan, vpc)'),
ipam_address: zod_1.z.string().nullable().describe('The IPAM address for the interface'),
primary: zod_1.z.boolean().optional().describe('Whether this is the primary interface'),
active: zod_1.z.boolean().optional().describe('Whether the interface is active'),
subnet_id: zod_1.z.number().optional().describe('The subnet ID for VPC interfaces'),
vpc_id: zod_1.z.number().optional().describe('The VPC ID for VPC interfaces'),
ipv4: zod_1.z.object({
vpc: zod_1.z.string().optional().describe('The IPv4 address for VPC interfaces'),
nat_1_1: zod_1.z.string().optional().describe('The IPv4 1:1 NAT address')
}).optional()
});
// Base types
const linodeSpecsSchema = zod_1.z.object({
disk: zod_1.z.number().describe('The amount of storage space in MB'),
memory: zod_1.z.number().describe('The amount of RAM in MB'),
vcpus: zod_1.z.number().describe('The number of virtual CPUs'),
transfer: zod_1.z.number().describe('The amount of network transfer available in GB')
});
const linodeAlertsSchema = zod_1.z.object({
cpu: zod_1.z.number().describe('CPU usage threshold percentage (0-400)'),
io: zod_1.z.number().describe('Disk IO threshold in ops/sec'),
network_in: zod_1.z.number().describe('Incoming network traffic threshold in Mbps'),
network_out: zod_1.z.number().describe('Outgoing network traffic threshold in Mbps'),
transfer_quota: zod_1.z.number().describe('Network transfer quota threshold in GB')
});
const linodeBackupsSchema = zod_1.z.object({
enabled: zod_1.z.boolean().describe('Whether backups are enabled'),
schedule: zod_1.z.object({
day: zod_1.z.string().describe('The day that backups are taken'),
window: zod_1.z.string().describe('The window during which backups are taken')
}),
last_successful: zod_1.z.string().nullable().describe('The last successful backup time')
});
// Response schemas
exports.linodeInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The unique identifier for this Linode'),
label: zod_1.z.string().describe('The Linode\'s display label'),
region: zod_1.z.string().describe('The region where the Linode is located'),
type: zod_1.z.string().describe('The Linode plan type'),
status: zod_1.z.string().describe('The current status of the Linode'),
ipv4: zod_1.z.array(zod_1.z.string()).describe('IPv4 addresses for this Linode'),
ipv6: zod_1.z.string().describe('IPv6 addresses for this Linode'),
created: zod_1.z.string().describe('When this Linode was created'),
updated: zod_1.z.string().describe('When this Linode was last updated'),
hypervisor: zod_1.z.string().describe('The virtualization software used for this Linode'),
specs: linodeSpecsSchema,
alerts: linodeAlertsSchema,
backups: linodeBackupsSchema,
image: zod_1.z.string().nullable().describe('The image used by this Linode'),
group: zod_1.z.string().describe('The display group of this Linode'),
tags: zod_1.z.array(zod_1.z.string()).describe('Tags applied to this Linode'),
host_uuid: zod_1.z.string().describe('The UUID of the host for this Linode'),
watchdog_enabled: zod_1.z.boolean().describe('Whether the watchdog service is enabled')
});
exports.linodeConfigSchema = zod_1.z.object({
id: zod_1.z.number().describe('The config ID'),
label: zod_1.z.string().describe('The config\'s label'),
comments: zod_1.z.string().describe('User-supplied comments about this configuration'),
kernel: zod_1.z.string().describe('The kernel used in this configuration'),
memory_limit: zod_1.z.number().describe('The memory limit in MB for this configuration'),
root_device: zod_1.z.string().describe('The root device for this configuration'),
devices: zod_1.z.record(zod_1.z.string()).describe('The devices attached to this configuration'),
initrd: zod_1.z.string().nullable().describe('The initial ramdisk file used for this configuration'),
created: zod_1.z.string().describe('When this configuration was created'),
updated: zod_1.z.string().describe('When this configuration was last updated'),
helpers: zod_1.z.object({
updatedb_disabled: zod_1.z.boolean().describe('Whether updatedb is disabled in this configuration'),
distro: zod_1.z.boolean().describe('Whether the distro helper is enabled'),
network: zod_1.z.boolean().describe('Whether the network helper is enabled'),
modules_dep: zod_1.z.boolean().describe('Whether the modules dependency helper is enabled')
}),
interfaces: zod_1.z.array(exports.configInterfaceSchema).describe('Network interfaces for this configuration')
});
exports.linodeDiskSchema = zod_1.z.object({
id: zod_1.z.number().describe('The disk ID'),
label: zod_1.z.string().describe('The disk\'s label'),
status: zod_1.z.string().describe('The disk\'s status'),
size: zod_1.z.number().describe('The disk size in MB'),
filesystem: zod_1.z.string().describe('The disk filesystem type'),
created: zod_1.z.string().describe('When this disk was created'),
updated: zod_1.z.string().describe('When this disk was last updated')
});
exports.kernelSchema = zod_1.z.object({
id: zod_1.z.string().describe('The kernel ID'),
label: zod_1.z.string().describe('The kernel\'s label'),
version: zod_1.z.string().describe('The kernel\'s version'),
kvm: zod_1.z.boolean().describe('Whether this kernel supports KVM virtualization'),
architecture: zod_1.z.string().describe('The architecture this kernel supports'),
pvops: zod_1.z.boolean().describe('Whether this kernel supports paravirtualized operations'),
deprecated: zod_1.z.boolean().describe('Whether this kernel is deprecated'),
built: zod_1.z.string().describe('When this kernel was built')
});
// List responses
exports.linodeInstancesResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.linodeInstanceSchema);
exports.linodeConfigsResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.linodeConfigSchema);
exports.linodeDisksResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.linodeDiskSchema);
exports.kernelsResponseSchema = (0, schemas_1.paginatedResponseSchema)(exports.kernelSchema);
// Request schemas
exports.listInstancesSchema = schemas_1.pagingParamsSchema;
exports.getInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.createInstanceSchema = zod_1.z.object({
region: zod_1.z.string().describe('The region where the Linode will be created'),
type: zod_1.z.string().describe('The Linode type ID (e.g., g6-nanode-1, g6-standard-2)'),
label: zod_1.z.string().optional().describe('The label for the Linode. Must be unique among your Linodes.'),
group: zod_1.z.string().optional().describe('The group for the Linode'),
root_pass: zod_1.z.string().optional().describe('The root password for the Linode. Must be 7-128 characters and meet the strength requirements. Should include uppercase, lowercase, numbers, and special characters.'),
image: zod_1.z.string().optional().describe('The image ID to deploy (e.g., linode/debian11, linode/ubuntu22.04)'),
authorized_keys: zod_1.z.array(zod_1.z.string()).optional().describe('SSH public keys to deploy to the root user (recommended for better security)'),
authorized_users: zod_1.z.array(zod_1.z.string()).optional().describe('Linode usernames who can deploy their SSH keys to this Linode'),
backups_enabled: zod_1.z.boolean().optional().describe('Whether backups are enabled'),
booted: zod_1.z.boolean().optional().describe('Whether the Linode should be booted after creation'),
private_ip: zod_1.z.boolean().optional().describe('Whether to assign a private IP'),
tags: schemas_1.tagSchema,
firewall_id: zod_1.z.number().optional().describe('ID of the firewall to assign this Linode to')
});
exports.updateInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
label: zod_1.z.string().optional().describe('The label for the Linode'),
group: zod_1.z.string().optional().describe('The group for the Linode'),
tags: schemas_1.tagSchema,
watchdog_enabled: zod_1.z.boolean().optional().describe('Whether the watchdog service is enabled'),
alerts: zod_1.z.object({
cpu: zod_1.z.number().optional().describe('CPU usage threshold percentage (0-400)'),
io: zod_1.z.number().optional().describe('Disk IO threshold in ops/sec'),
network_in: zod_1.z.number().optional().describe('Incoming network traffic threshold in Mbps'),
network_out: zod_1.z.number().optional().describe('Outgoing network traffic threshold in Mbps'),
transfer_quota: zod_1.z.number().optional().describe('Network transfer quota threshold in GB')
}).optional()
});
exports.rebootInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
config_id: zod_1.z.number().optional().describe('The ID of the configuration profile to boot into')
});
exports.bootInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
config_id: zod_1.z.number().optional().describe('The ID of the configuration profile to boot into')
});
exports.shutdownInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.deleteInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.resizeInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
type: zod_1.z.string().describe('The new Linode type ID'),
allow_auto_disk_resize: zod_1.z.boolean().optional().describe('Whether to automatically resize disks (default: true)')
});
exports.cloneInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance to clone'),
region: zod_1.z.string().optional().describe('The region where the new Linode will be created'),
type: zod_1.z.string().optional().describe('The new Linode type ID'),
label: zod_1.z.string().optional().describe('The label for the new Linode'),
group: zod_1.z.string().optional().describe('The group for the new Linode'),
backups_enabled: zod_1.z.boolean().optional().describe('Whether backups are enabled for the new Linode'),
private_ip: zod_1.z.boolean().optional().describe('Whether to assign a private IP to the new Linode'),
tags: schemas_1.tagSchema
});
exports.rebuildInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
image: zod_1.z.string().describe('The image ID to rebuild with (e.g., linode/debian11, linode/ubuntu22.04)'),
root_pass: zod_1.z.string().describe('The root password for the rebuilt Linode. Must be 7-128 characters and meet the strength requirements. Should include uppercase, lowercase, numbers, and special characters.'),
authorized_keys: zod_1.z.array(zod_1.z.string()).optional().describe('SSH public keys to deploy to the root user (recommended for better security)'),
authorized_users: zod_1.z.array(zod_1.z.string()).optional().describe('Linode usernames who can deploy their SSH keys to this Linode'),
stackscript_id: zod_1.z.number().optional().describe('StackScript ID to use for deployment. Run List StackScripts to get available IDs.'),
stackscript_data: zod_1.z.record(zod_1.z.string()).optional().describe('StackScript data to use for deployment. Must be valid JSON with less than 65,535 characters.'),
booted: zod_1.z.boolean().optional().describe('Whether the Linode should be booted after rebuild')
});
exports.rescueInstanceSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
devices: zod_1.z.record(zod_1.z.number()).describe('Block device assignments for /dev/sdX devices')
});
// Config operations
exports.getLinodeConfigsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
...schemas_1.pagingParamsSchema.shape
});
exports.getLinodeConfigSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile')
});
exports.createLinodeConfigSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
label: zod_1.z.string().describe('The label for the configuration profile'),
kernel: zod_1.z.string().optional().describe('The kernel to use'),
comments: zod_1.z.string().optional().describe('User comments for this configuration'),
memory_limit: zod_1.z.number().optional().describe('The memory limit in MB'),
root_device: zod_1.z.string().optional().describe('The root device'),
devices: zod_1.z.record(zod_1.z.string()).optional().describe('Devices to map to this configuration'),
initrd: zod_1.z.string().nullable().optional().describe('The initial ramdisk file'),
helpers: zod_1.z.object({
updatedb_disabled: zod_1.z.boolean().optional().describe('Whether updatedb is disabled'),
distro: zod_1.z.boolean().optional().describe('Whether the distro helper is enabled'),
network: zod_1.z.boolean().optional().describe('Whether the network helper is enabled'),
modules_dep: zod_1.z.boolean().optional().describe('Whether the modules dependency helper is enabled')
}).optional(),
interfaces: zod_1.z.array(exports.configInterfaceSchema).optional().describe('Network interfaces for this configuration')
});
exports.updateLinodeConfigSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
...exports.createLinodeConfigSchema.omit({ linodeId: true }).partial().shape
});
exports.deleteLinodeConfigSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile')
});
// Disk operations
exports.getLinodeDisksSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
...schemas_1.pagingParamsSchema.shape
});
exports.getLinodeDiskSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
diskId: zod_1.z.number().describe('The ID of the disk')
});
exports.createLinodeDiskSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
label: zod_1.z.string().describe('The label for the disk'),
size: zod_1.z.number().describe('The size of the disk in MB'),
filesystem: zod_1.z.string().optional().describe('The filesystem type for the disk (e.g., ext4, raw, swap)'),
read_only: zod_1.z.boolean().optional().describe('Whether the disk is read-only'),
image: zod_1.z.string().optional().describe('The image ID to use (e.g., linode/debian11, linode/ubuntu22.04)'),
root_pass: zod_1.z.string().optional().describe('The root password to use. Required when deploying an image. Must be 7-128 characters and meet the strength requirements. Should include uppercase, lowercase, numbers, and special characters.'),
authorized_keys: zod_1.z.array(zod_1.z.string()).optional().describe('SSH public keys to deploy to the root user (recommended for better security)'),
authorized_users: zod_1.z.array(zod_1.z.string()).optional().describe('Linode usernames who can deploy their SSH keys to this disk'),
stackscript_id: zod_1.z.number().optional().describe('StackScript ID to use for deployment. Run List StackScripts to get available IDs.'),
stackscript_data: zod_1.z.record(zod_1.z.string()).optional().describe('StackScript data to use for deployment. Must be valid JSON with less than 65,535 characters.')
});
exports.updateLinodeDiskSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
diskId: zod_1.z.number().describe('The ID of the disk'),
label: zod_1.z.string().optional().describe('The new label for the disk'),
size: zod_1.z.number().optional().describe('The new size of the disk in MB')
});
exports.deleteLinodeDiskSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
diskId: zod_1.z.number().describe('The ID of the disk')
});
exports.resizeLinodeDiskSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
diskId: zod_1.z.number().describe('The ID of the disk'),
size: zod_1.z.number().describe('The new size of the disk in MB')
});
// Kernel operations
exports.listKernelsSchema = schemas_1.pagingParamsSchema;
exports.getKernelSchema = zod_1.z.object({
id: zod_1.z.string().describe('The ID of the kernel')
});
// Backup operations
exports.backupSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the backup'),
label: zod_1.z.string().describe('The label of the backup'),
status: zod_1.z.string().describe('The status of the backup'),
type: zod_1.z.enum(['auto', 'snapshot']).describe('The type of backup'),
region: zod_1.z.string().describe('The region where the backup is stored'),
created: zod_1.z.string().describe('When the backup was created'),
updated: zod_1.z.string().describe('When the backup was last updated'),
finished: zod_1.z.string().describe('When the backup finished'),
configs: zod_1.z.array(zod_1.z.string()).describe('The configs included in the backup'),
disks: zod_1.z.record(zod_1.z.string()).describe('The disks included in the backup'),
available: zod_1.z.boolean().describe('Whether the backup is available for restore')
});
exports.getBackupsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.getBackupSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
backupId: zod_1.z.number().describe('The ID of the backup')
});
exports.createSnapshotSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
label: zod_1.z.string().describe('The label for the snapshot')
});
exports.cancelBackupsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.enableBackupsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.restoreBackupSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
backupId: zod_1.z.number().describe('The ID of the backup'),
linode_id: zod_1.z.number().optional().describe('Target Linode ID to restore to (defaults to the source Linode)'),
overwrite: zod_1.z.boolean().optional().describe('Whether to overwrite the target Linode')
});
// IP operations
exports.getLinodeIPsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.linodeAllocateIPSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
type: zod_1.z.enum(['ipv4', 'ipv6']).describe('The type of IP address to allocate'),
public: zod_1.z.boolean().describe('Whether the IP address should be public')
});
exports.getLinodeIPSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
address: zod_1.z.string().describe('The IP address')
});
exports.updateLinodeIPSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
address: zod_1.z.string().describe('The IP address'),
rdns: zod_1.z.string().nullable().describe('The reverse DNS entry')
});
exports.deleteLinodeIPSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
address: zod_1.z.string().describe('The IP address')
});
// Firewall operations
exports.getLinodeFirewallsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
...schemas_1.pagingParamsSchema.shape
});
exports.applyFirewallsSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance')
});
// Disk special operations
exports.cloneDiskSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
diskId: zod_1.z.number().describe('The ID of the disk'),
label: zod_1.z.string().optional().describe('The label for the cloned disk')
});
exports.resetDiskPasswordSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
diskId: zod_1.z.number().describe('The ID of the disk'),
password: zod_1.z.string().describe('The new root password')
});
// Migration and upgrades
exports.migrateLinodeSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
region: zod_1.z.string().optional().describe('The target region for the migration')
});
exports.mutateLinodeSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance')
});
// Reset root password
exports.resetRootPasswordSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
root_pass: zod_1.z.string().describe('The new root password')
});
// Transfer stats
exports.getNetworkTransferSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.getMonthlyTransferSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
year: zod_1.z.string().describe('The year (YYYY format)'),
month: zod_1.z.string().describe('The month (MM format)')
});
// Stats operations
exports.getLinodeStatsSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance')
});
exports.getLinodeStatsByDateSchema = zod_1.z.object({
id: zod_1.z.number().describe('The ID of the Linode instance'),
year: zod_1.z.string().describe('The year (YYYY format)'),
month: zod_1.z.string().describe('The month (MM format)')
});
// Config Interface operations
exports.getConfigInterfacesSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
...schemas_1.pagingParamsSchema.shape
});
exports.getConfigInterfaceSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
interfaceId: zod_1.z.number().describe('The ID of the interface')
});
exports.createConfigInterfaceSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
purpose: zod_1.z.enum(['public', 'vlan', 'vpc']).describe('The purpose of the interface (public, vlan, vpc)'),
label: zod_1.z.string().optional().describe('The label for the interface'),
ipam_address: zod_1.z.string().optional().describe('The IPAM address for the interface'),
primary: zod_1.z.boolean().optional().describe('Whether this is the primary interface'),
subnet_id: zod_1.z.number().optional().describe('The subnet ID for VPC interfaces'),
vpc_id: zod_1.z.number().optional().describe('The VPC ID for VPC interfaces'),
ipv4: zod_1.z.object({
vpc: zod_1.z.string().optional().describe('The IPv4 address for VPC interfaces'),
nat_1_1: zod_1.z.string().optional().describe('The IPv4 1:1 NAT address')
}).optional()
});
exports.updateConfigInterfaceSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
interfaceId: zod_1.z.number().describe('The ID of the interface'),
label: zod_1.z.string().optional().describe('The label for the interface'),
ipam_address: zod_1.z.string().optional().describe('The IPAM address for the interface'),
primary: zod_1.z.boolean().optional().describe('Whether this is the primary interface'),
ipv4: zod_1.z.object({
vpc: zod_1.z.string().optional().describe('The IPv4 address for VPC interfaces'),
nat_1_1: zod_1.z.string().optional().describe('The IPv4 1:1 NAT address')
}).optional()
});
exports.deleteConfigInterfaceSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
interfaceId: zod_1.z.number().describe('The ID of the interface')
});
exports.reorderConfigInterfacesSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
configId: zod_1.z.number().describe('The ID of the configuration profile'),
ids: zod_1.z.array(zod_1.z.number()).describe('The ordered list of interface IDs')
});
// Instance Types
exports.listInstanceTypesSchema = schemas_1.pagingParamsSchema;
exports.getInstanceTypeSchema = zod_1.z.object({
id: zod_1.z.string().describe('The ID of the Linode type')
});
// NodeBalancer operations for instance
exports.getLinodeNodeBalancersSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
...schemas_1.pagingParamsSchema.shape
});
// Volume operations for instance
exports.getLinodeVolumesSchema = zod_1.z.object({
linodeId: zod_1.z.number().describe('The ID of the Linode instance'),
...schemas_1.pagingParamsSchema.shape
});
//# sourceMappingURL=schemas.js.map