@xec-sh/core
Version:
Universal shell execution engine
179 lines (178 loc) • 8.28 kB
TypeScript
import { z } from 'zod';
import { ExecutionEngineConfig } from '../core/execution-engine.js';
import type { SSHAdapterOptions, DockerAdapterOptions, KubernetesAdapterOptions } from '../core/command.js';
declare const HostConfigSchema: z.ZodObject<{
host: z.ZodString;
username: z.ZodOptional<z.ZodString>;
password: z.ZodOptional<z.ZodString>;
privateKey: z.ZodOptional<z.ZodString>;
privateKeyPath: z.ZodOptional<z.ZodString>;
port: z.ZodOptional<z.ZodNumber>;
readyTimeout: z.ZodOptional<z.ZodNumber>;
keepaliveInterval: z.ZodOptional<z.ZodNumber>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>;
declare const ContainerConfigSchema: z.ZodObject<{
name: z.ZodOptional<z.ZodString>;
image: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>;
declare const PodConfigSchema: z.ZodObject<{
name: z.ZodString;
namespace: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
context: z.ZodOptional<z.ZodString>;
kubeconfig: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
declare const ProfileSchema: z.ZodObject<{
extends: z.ZodOptional<z.ZodString>;
defaults: z.ZodOptional<z.ZodObject<{
timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>>;
cwd: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
encoding: z.ZodOptional<z.ZodString>;
throwOnNonZeroExit: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>>;
hosts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
host: z.ZodString;
username: z.ZodOptional<z.ZodString>;
password: z.ZodOptional<z.ZodString>;
privateKey: z.ZodOptional<z.ZodString>;
privateKeyPath: z.ZodOptional<z.ZodString>;
port: z.ZodOptional<z.ZodNumber>;
readyTimeout: z.ZodOptional<z.ZodNumber>;
keepaliveInterval: z.ZodOptional<z.ZodNumber>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>>>;
containers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
name: z.ZodOptional<z.ZodString>;
image: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>>>;
pods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
name: z.ZodString;
namespace: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
context: z.ZodOptional<z.ZodString>;
kubeconfig: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
}, z.core.$strip>;
declare const UnifiedConfigSchema: z.ZodObject<{
name: z.ZodOptional<z.ZodString>;
description: z.ZodOptional<z.ZodString>;
version: z.ZodOptional<z.ZodString>;
defaults: z.ZodOptional<z.ZodObject<{
timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>>;
cwd: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
encoding: z.ZodOptional<z.ZodString>;
throwOnNonZeroExit: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>>;
hosts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
host: z.ZodString;
username: z.ZodOptional<z.ZodString>;
password: z.ZodOptional<z.ZodString>;
privateKey: z.ZodOptional<z.ZodString>;
privateKeyPath: z.ZodOptional<z.ZodString>;
port: z.ZodOptional<z.ZodNumber>;
readyTimeout: z.ZodOptional<z.ZodNumber>;
keepaliveInterval: z.ZodOptional<z.ZodNumber>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>>>;
containers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
name: z.ZodOptional<z.ZodString>;
image: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>>>;
pods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
name: z.ZodString;
namespace: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
context: z.ZodOptional<z.ZodString>;
kubeconfig: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
aliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
profiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
extends: z.ZodOptional<z.ZodString>;
defaults: z.ZodOptional<z.ZodObject<{
timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>>;
cwd: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
encoding: z.ZodOptional<z.ZodString>;
throwOnNonZeroExit: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>>;
hosts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
host: z.ZodString;
username: z.ZodOptional<z.ZodString>;
password: z.ZodOptional<z.ZodString>;
privateKey: z.ZodOptional<z.ZodString>;
privateKeyPath: z.ZodOptional<z.ZodString>;
port: z.ZodOptional<z.ZodNumber>;
readyTimeout: z.ZodOptional<z.ZodNumber>;
keepaliveInterval: z.ZodOptional<z.ZodNumber>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>>>;
containers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
name: z.ZodOptional<z.ZodString>;
image: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>>>;
pods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
name: z.ZodString;
namespace: z.ZodOptional<z.ZodString>;
container: z.ZodOptional<z.ZodString>;
context: z.ZodOptional<z.ZodString>;
kubeconfig: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>>;
}, z.core.$strip>>>;
plugins: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
export type UnifiedConfig = z.infer<typeof UnifiedConfigSchema>;
export type HostConfig = z.infer<typeof HostConfigSchema>;
export type ContainerConfig = z.infer<typeof ContainerConfigSchema>;
export type PodConfig = z.infer<typeof PodConfigSchema>;
export type ProfileConfig = z.infer<typeof ProfileSchema>;
export declare class UnifiedConfigLoader {
private static instance;
private config;
private loadedPaths;
private activeProfile?;
private readonly searchPaths;
private constructor();
static getInstance(): UnifiedConfigLoader;
load(additionalPaths?: string[]): Promise<UnifiedConfig>;
save(config: UnifiedConfig, filePath?: string): Promise<void>;
get(): UnifiedConfig;
getValue(path: string): any;
setValue(path: string, value: any): void;
applyProfile(profileName: string): void;
getActiveProfile(): string | undefined;
getHost(name: string): HostConfig | undefined;
getContainer(name: string): ContainerConfig | undefined;
getPod(name: string): PodConfig | undefined;
resolveAlias(alias: string): string | undefined;
listHosts(): string[];
listContainers(): string[];
listPods(): string[];
listProfiles(): string[];
toEngineConfig(): ExecutionEngineConfig;
hostToSSHOptions(name: string): Promise<Partial<SSHAdapterOptions>>;
containerToDockerOptions(name: string): Partial<DockerAdapterOptions>;
podToK8sOptions(name: string): Partial<KubernetesAdapterOptions>;
getLoadedPaths(): string[];
exists(): Promise<boolean>;
private readPrivateKey;
private applyEnvironmentOverrides;
private mergeConfigs;
private mergeDefaults;
private parseTimeout;
}
export declare const unifiedConfig: UnifiedConfigLoader;
export {};