Schema — Weavetab Docs

Every field on the runtime config object.

Schema

Every field on the runtime config object.

# Configuration Schema

The full `Config` interface lives in `src/config/loader.ts`.

```typescript
export type PolicyMode    = "allow" | "deny" | "audit-only" | "read-only";
export type Role          = "admin" | "operator" | "viewer" | "automation";
export type BrowserEngine = "chromium" | "firefox" | "webkit";

export interface ElectronAppConfig {
  path?: string;               // Absolute path to Electron app executable
  port?: number;               // Remote debugging port (default 9222)
  url?: string;                // Initial launch URL / deep-link
  args?: string[];             // Custom CLI arguments
  profileDir?: string;         // Dedicated isolated user profile directory
}

export interface Config {
  // Mode & Port
  mode: "session" | "attach";
  session: string;
  attachPort: number;

  // Browser Settings
  browser: string;              // Executable path or "auto"
  browserType: BrowserEngine;
  profileDir: string;
  headless: boolean;
  extension: boolean;           // Enable Weavetab Chrome extension
  browserFlags: string[];

  // Desktop & Electron Applications
  electron?: Record<string, string | number | ElectronAppConfig>;

  // Security & Policy
  block: string[];              // Domain blocklist
  allow: string[];              // Domain allowlist
  policies: PolicyEntry[];      // Per-domain policy modes
  role: Role;                   // RBAC role
  cookies: boolean;             // Allow storage & cookies
  proxy?: string;               // Outbound proxy URL

  // Rate Limiting & Resource Caps
  maxActionsPerMinute: number;  // 1-600 (default 60)
  maxTabs: number;              // 1-100 (default 10)

  // Timing & Thresholds
  sessionTimeout: number;       // Seconds (default 3600)
  navigationTimeout: number;    // Milliseconds (default 30000)
  idleTimeout: number;          // Milliseconds (default 15000)
  actionabilityTimeoutMs: number; // Milliseconds (default 500)

  // UI & Overlay
  devMode: boolean | DevModeConfig;
  persona: "concise" | "friendly";

  // Telemetry & GitHub
  telemetry: boolean;
  githubCacheTtlMs: number;

  // Agent Identity
  agentId: string;              // Auto-generated UUID
}
```