gauss-ts 1.1.0

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.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +499 -0
  3. package/dist/agent-CHrSUkPz.d.ts +485 -0
  4. package/dist/agent-CMp1wFzs.d.cts +485 -0
  5. package/dist/agent.cjs +2 -0
  6. package/dist/agent.cjs.map +1 -0
  7. package/dist/agent.d.cts +144 -0
  8. package/dist/agent.d.ts +144 -0
  9. package/dist/agent.js +2 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/index.cjs +21 -0
  12. package/dist/index.cjs.map +1 -0
  13. package/dist/index.d.cts +492 -0
  14. package/dist/index.d.ts +492 -0
  15. package/dist/index.js +21 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/mcp.cjs +2 -0
  18. package/dist/mcp.cjs.map +1 -0
  19. package/dist/mcp.d.cts +282 -0
  20. package/dist/mcp.d.ts +282 -0
  21. package/dist/mcp.js +2 -0
  22. package/dist/mcp.js.map +1 -0
  23. package/dist/middleware.cjs +2 -0
  24. package/dist/middleware.cjs.map +1 -0
  25. package/dist/middleware.d.cts +46 -0
  26. package/dist/middleware.d.ts +46 -0
  27. package/dist/middleware.js +2 -0
  28. package/dist/middleware.js.map +1 -0
  29. package/dist/orchestration.cjs +2 -0
  30. package/dist/orchestration.cjs.map +1 -0
  31. package/dist/orchestration.d.cts +94 -0
  32. package/dist/orchestration.d.ts +94 -0
  33. package/dist/orchestration.js +2 -0
  34. package/dist/orchestration.js.map +1 -0
  35. package/dist/rag.cjs +2 -0
  36. package/dist/rag.cjs.map +1 -0
  37. package/dist/rag.d.cts +43 -0
  38. package/dist/rag.d.ts +43 -0
  39. package/dist/rag.js +2 -0
  40. package/dist/rag.js.map +1 -0
  41. package/dist/tools.cjs +2 -0
  42. package/dist/tools.cjs.map +1 -0
  43. package/dist/tools.d.cts +48 -0
  44. package/dist/tools.d.ts +48 -0
  45. package/dist/tools.js +2 -0
  46. package/dist/tools.js.map +1 -0
  47. package/dist/types-BkwC4s1P.d.cts +239 -0
  48. package/dist/types-BkwC4s1P.d.ts +239 -0
  49. package/package.json +132 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/sdk/models.ts","../src/sdk/types.ts","../src/sdk/agent.ts","../src/sdk/stream-iter.ts","../src/sdk/enterprise.ts","../src/sdk/batch.ts","../src/sdk/code-execution.ts","../src/sdk/memory.ts","../src/sdk/vector-store.ts","../src/sdk/graph.ts","../src/sdk/workflow.ts","../src/sdk/team.ts","../src/sdk/network.ts","../src/sdk/middleware.ts","../src/sdk/plugin.ts","../src/sdk/mcp.ts","../src/sdk/guardrail.ts","../src/sdk/approval.ts","../src/sdk/checkpoint.ts","../src/sdk/eval.ts","../src/sdk/telemetry.ts","../src/sdk/resilience.ts","../src/sdk/tokens.ts","../src/sdk/config.ts","../src/sdk/tool-validator.ts","../src/sdk/stream.ts","../src/sdk/retry.ts","../src/sdk/structured.ts","../src/sdk/template.ts","../src/sdk/spec.ts","../src/sdk/pipeline.ts","../src/sdk/a2a.ts","../src/sdk/tool-registry.ts"],"sourcesContent":["/**\n * gauss — TypeScript SDK for the Gauss AI Agent Framework.\n *\n * All orchestration is handled by the Rust core (gauss-core) via NAPI bindings.\n * This package provides type-safe, ergonomic access from Node.js/TypeScript.\n */\nexport * from \"./sdk/index.js\";\n\n","/**\n * Model Constants — Single Source of Truth\n *\n * Update these when new model versions are released.\n * All examples, tests, and defaults reference this file.\n */\n\n// ─── OpenAI ──────────────────────────────────────────\nexport const OPENAI_DEFAULT = \"gpt-5.2\";\nexport const OPENAI_FAST = \"gpt-4.1\";\nexport const OPENAI_REASONING = \"o4-mini\";\nexport const OPENAI_IMAGE = \"gpt-image-1\";\n\n// ─── Anthropic ───────────────────────────────────────\nexport const ANTHROPIC_DEFAULT = \"claude-sonnet-4-20250514\";\nexport const ANTHROPIC_FAST = \"claude-haiku-4-20250414\";\nexport const ANTHROPIC_PREMIUM = \"claude-opus-4-20250414\";\n\n// ─── Google ──────────────────────────────────────────\nexport const GOOGLE_DEFAULT = \"gemini-2.5-flash\";\nexport const GOOGLE_PREMIUM = \"gemini-2.5-pro\";\nexport const GOOGLE_IMAGE = \"gemini-2.0-flash\";\n\n// ─── OpenRouter ──────────────────────────────────────\nexport const OPENROUTER_DEFAULT = \"openai/gpt-5.2\";\n\n// ─── DeepSeek ────────────────────────────────────────\nexport const DEEPSEEK_DEFAULT = \"deepseek-chat\";\nexport const DEEPSEEK_REASONING = \"deepseek-reasoner\";\n\n// ─── Enterprise OpenAI-Compatible Providers ─────────\nexport const TOGETHER_DEFAULT = \"meta-llama/Llama-3.3-70B-Instruct-Turbo\";\nexport const FIREWORKS_DEFAULT = \"accounts/fireworks/models/llama-v3p1-70b-instruct\";\nexport const MISTRAL_DEFAULT = \"mistral-large-latest\";\nexport const PERPLEXITY_DEFAULT = \"sonar-pro\";\nexport const XAI_DEFAULT = \"grok-3-beta\";\n\n// ─── Provider Defaults Map ───────────────────────────\nexport const PROVIDER_DEFAULTS: Record<string, string> = {\n openai: OPENAI_DEFAULT,\n anthropic: ANTHROPIC_DEFAULT,\n google: GOOGLE_DEFAULT,\n openrouter: OPENROUTER_DEFAULT,\n deepseek: DEEPSEEK_DEFAULT,\n groq: \"llama-3.3-70b-versatile\",\n ollama: \"llama3.2\",\n together: TOGETHER_DEFAULT,\n fireworks: FIREWORKS_DEFAULT,\n mistral: MISTRAL_DEFAULT,\n perplexity: PERPLEXITY_DEFAULT,\n xai: XAI_DEFAULT,\n};\n\n/** Get the default model for a provider */\nexport function defaultModel(provider: string): string {\n return PROVIDER_DEFAULTS[provider] ?? OPENAI_DEFAULT;\n}\n","/**\n * Gauss SDK — Shared types.\n *\n * Design principles:\n * - Every option has a sensible default\n * - Minimal required fields — only what's truly mandatory\n * - String unions over enums for JS-friendliness\n * - Record<string, unknown> for extensibility\n */\n\n// ─── Provider ──────────────────────────────────────────────────────\n\nexport type ProviderType =\n | \"openai\"\n | \"anthropic\"\n | \"google\"\n | \"groq\"\n | \"ollama\"\n | \"deepseek\"\n | \"openrouter\"\n | \"together\"\n | \"fireworks\"\n | \"mistral\"\n | \"perplexity\"\n | \"xai\";\n\nexport interface ProviderOptions {\n /** API key. Auto-resolved from environment if omitted. */\n apiKey?: string;\n baseUrl?: string;\n timeoutMs?: number;\n maxRetries?: number;\n organization?: string;\n}\n\n// ─── Messages ──────────────────────────────────────────────────────\n\nexport type MessageRole = \"system\" | \"user\" | \"assistant\" | \"tool\";\n\nexport interface Message {\n role: MessageRole;\n content: string;\n}\n\n/** @deprecated Use `Message` instead. */\nexport type JsMessage = Message;\n\n// ─── Tools ─────────────────────────────────────────────────────────\n\nexport interface ToolDef {\n name: string;\n description: string;\n parameters?: Record<string, unknown>;\n}\n\nexport type ToolExecutor = (callJson: string) => Promise<string>;\nexport type StreamCallback = (eventJson: string) => void;\n\n// ─── Agent ─────────────────────────────────────────────────────────\n\nexport interface AgentOptions {\n instructions?: string;\n maxSteps?: number;\n temperature?: number;\n topP?: number;\n maxTokens?: number;\n seed?: number;\n stopOnTool?: string;\n outputSchema?: Record<string, unknown>;\n thinkingBudget?: number;\n /** Reasoning effort for OpenAI o-series models: \"low\", \"medium\", or \"high\". */\n reasoningEffort?: \"low\" | \"medium\" | \"high\";\n cacheControl?: boolean;\n codeExecution?: CodeExecutionOptions;\n /** Enable Google Search grounding (Gemini only). */\n grounding?: boolean;\n /** Enable native code execution / Gemini code interpreter. */\n nativeCodeExecution?: boolean;\n /** Response modalities (e.g. [\"TEXT\", \"IMAGE\"] for Gemini image generation). */\n responseModalities?: string[];\n}\n\n/** A citation reference from document-aware responses. */\nexport interface Citation {\n /** Citation type: char_location, page_location, content_block_location. */\n type: string;\n /** The cited text from the document. */\n citedText?: string;\n /** Title of the source document. */\n documentTitle?: string;\n /** Start index (character, page, or block depending on type). */\n start?: number;\n /** End index (character, page, or block depending on type). */\n end?: number;\n}\n\nexport interface AgentResult {\n text: string;\n steps: number;\n inputTokens: number;\n outputTokens: number;\n structuredOutput?: Record<string, unknown>;\n /** Extended thinking output (Anthropic). */\n thinking?: string;\n /** Citations from document-aware responses (Anthropic). */\n citations?: Citation[];\n /** Grounding metadata from Google Search grounding. */\n groundingMetadata?: GroundingMetadata[];\n}\n\n// ─── Grounding ──────────────────────────────────────────────────────\n\n/** Metadata from Google Search grounding. */\nexport interface GroundingMetadata {\n /** Search queries generated by the model. */\n searchQueries: string[];\n /** Grounding chunks (web results). */\n groundingChunks: GroundingChunk[];\n /** Rendered HTML search entry point widget. */\n searchEntryPoint?: string;\n}\n\n/** A single grounding chunk (web search result). */\nexport interface GroundingChunk {\n /** URL of the web result. */\n url?: string;\n /** Title of the web result. */\n title?: string;\n}\n\n// ─── Image Generation ───────────────────────────────────────────────\n\n/** Configuration for image generation. */\nexport interface ImageGenerationConfig {\n /** Image model (e.g. \"dall-e-3\", \"gemini-2.0-flash\"). */\n model?: string;\n /** Desired size (e.g. \"1024x1024\"). */\n size?: string;\n /** Quality level (e.g. \"standard\", \"hd\"). */\n quality?: string;\n /** Style (e.g. \"vivid\", \"natural\"). */\n style?: string;\n /** Aspect ratio for Gemini (e.g. \"16:9\", \"1:1\"). */\n aspectRatio?: string;\n /** Number of images to generate. */\n n?: number;\n /** Response format (\"url\" or \"b64_json\"). */\n responseFormat?: string;\n}\n\n/** Result of image generation. */\nexport interface ImageGenerationResult {\n /** Generated images. */\n images: GeneratedImageData[];\n /** Revised prompt (DALL-E 3 rewrites prompts). */\n revisedPrompt?: string;\n}\n\n/** A single generated image. */\nexport interface GeneratedImageData {\n /** URL to the generated image (temporary). */\n url?: string;\n /** Base64-encoded image data. */\n base64?: string;\n /** MIME type. */\n mimeType?: string;\n}\n\n// ─── Provider Capabilities ──────────────────────────────────────────\n\n/** Feature capabilities of a provider/model combination. */\nexport interface ProviderCapabilities {\n streaming: boolean;\n toolUse: boolean;\n vision: boolean;\n audio: boolean;\n extendedThinking: boolean;\n citations: boolean;\n cacheControl: boolean;\n structuredOutput: boolean;\n reasoningEffort: boolean;\n imageGeneration: boolean;\n grounding: boolean;\n codeExecution: boolean;\n webSearch: boolean;\n}\n\nexport interface CostEstimate {\n model: string;\n normalizedModel: string;\n currency: string;\n inputTokens: number;\n outputTokens: number;\n reasoningTokens: number;\n cacheReadTokens: number;\n cacheCreationTokens: number;\n inputCostUsd: number;\n outputCostUsd: number;\n reasoningCostUsd: number;\n cacheReadCostUsd: number;\n cacheCreationCostUsd: number;\n totalCostUsd: number;\n}\n\n// ─── Code Execution (PTC) ──────────────────────────────────────────\n\n/** Configuration for programmatic code execution runtimes. */\nexport interface CodeExecutionOptions {\n /** Enable Python runtime (default: true). */\n python?: boolean;\n /** Enable JavaScript/Node.js runtime (default: true). */\n javascript?: boolean;\n /** Enable Bash runtime (default: true). */\n bash?: boolean;\n /** Timeout in seconds per execution (default: 30). */\n timeoutSecs?: number;\n /** Working directory for subprocesses. */\n workingDir?: string;\n /** Sandbox mode: \"default\" | \"strict\" | \"permissive\" (default: \"default\"). */\n sandbox?: \"default\" | \"strict\" | \"permissive\";\n /** Use a single unified execute_code tool instead of per-language tools. */\n unified?: boolean;\n}\n\n/** Result of a code execution. */\nexport interface CodeExecutionResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n timedOut: boolean;\n runtime: string;\n success: boolean;\n}\n\n// ─── Memory ────────────────────────────────────────────────────────\n\nexport type MemoryEntryType = \"conversation\" | \"fact\" | \"preference\" | \"task\" | \"summary\";\nexport type MemoryTier = \"core\" | \"active\" | \"background\" | \"archive\";\n\nexport interface MemoryEntry {\n id: string;\n content: string;\n entryType: MemoryEntryType;\n timestamp: string;\n tier?: MemoryTier;\n metadata?: Record<string, unknown>;\n importance?: number;\n sessionId?: string;\n embedding?: number[];\n}\n\nexport interface RecallOptions {\n sessionId?: string;\n limit?: number;\n}\n\nexport interface MemoryStats {\n totalEntries: number;\n [key: string]: unknown;\n}\n\n// ─── RAG / Vector Store ────────────────────────────────────────────\n\nexport interface VectorChunk {\n id: string;\n documentId: string;\n content: string;\n index: number;\n metadata?: Record<string, unknown>;\n embedding?: number[];\n}\n\nexport interface SearchResult {\n id: string;\n text: string;\n score: number;\n metadata?: Record<string, unknown>;\n}\n\n// ─── Guardrails ────────────────────────────────────────────────────\n\nexport type PiiAction = \"block\" | \"warn\" | \"redact\";\n\n// ─── Tool Validator ────────────────────────────────────────────────\n\nexport type CoercionStrategy =\n | \"null_to_default\"\n | \"type_cast\"\n | \"json_parse\"\n | \"strip_null\";\n\n// ─── Eval ──────────────────────────────────────────────────────────\n\nexport type EvalScorerType = \"exact_match\" | \"contains\" | \"length_ratio\";\n\n// ─── Core ──────────────────────────────────────────────────────────\n\n/** Opaque handle returned by NAPI resource constructors. */\nexport type Handle = number;\n\n/** Any SDK resource that owns native memory. */\nexport interface Disposable {\n destroy(): void;\n}\n\n// ─── Environment helpers ───────────────────────────────────────────\n\nimport { PROVIDER_DEFAULTS } from \"./models.js\";\n\nconst ENV_KEYS: Record<string, string> = {\n openai: \"OPENAI_API_KEY\",\n anthropic: \"ANTHROPIC_API_KEY\",\n google: \"GOOGLE_API_KEY\",\n groq: \"GROQ_API_KEY\",\n deepseek: \"DEEPSEEK_API_KEY\",\n openrouter: \"OPENROUTER_API_KEY\",\n together: \"TOGETHER_API_KEY\",\n fireworks: \"FIREWORKS_API_KEY\",\n mistral: \"MISTRAL_API_KEY\",\n perplexity: \"PERPLEXITY_API_KEY\",\n xai: \"XAI_API_KEY\",\n ollama: \"\",\n};\n\n/** Resolve an API key from environment for the given provider. */\nexport function resolveApiKey(provider: ProviderType): string {\n const key = ENV_KEYS[provider] ?? \"\";\n if (!key) return \"\"; // ollama doesn't need a key\n return (typeof process !== \"undefined\" ? process.env[key] : \"\") ?? \"\";\n}\n\n/** Auto-detect the best available provider from environment variables. */\nexport function detectProvider(): { provider: ProviderType; model: string } | undefined {\n const checks: Array<{ env: string; provider: ProviderType }> = [\n { env: \"OPENAI_API_KEY\", provider: \"openai\" },\n { env: \"ANTHROPIC_API_KEY\", provider: \"anthropic\" },\n { env: \"GOOGLE_API_KEY\", provider: \"google\" },\n { env: \"GROQ_API_KEY\", provider: \"groq\" },\n { env: \"DEEPSEEK_API_KEY\", provider: \"deepseek\" },\n { env: \"OPENROUTER_API_KEY\", provider: \"openrouter\" },\n { env: \"TOGETHER_API_KEY\", provider: \"together\" },\n { env: \"FIREWORKS_API_KEY\", provider: \"fireworks\" },\n { env: \"MISTRAL_API_KEY\", provider: \"mistral\" },\n { env: \"PERPLEXITY_API_KEY\", provider: \"perplexity\" },\n { env: \"XAI_API_KEY\", provider: \"xai\" },\n ];\n for (const { env, provider } of checks) {\n if (typeof process !== \"undefined\" && process.env[env]) {\n return { provider, model: PROVIDER_DEFAULTS[provider] };\n }\n }\n return undefined;\n}\n","/**\n * Agent — the heart of Gauss.\n *\n * Quick start:\n * const agent = new Agent({ instructions: \"You are a helpful assistant.\" });\n * const result = await agent.run(\"What is the meaning of life?\");\n *\n * Full control:\n * const agent = new Agent({\n * name: \"researcher\",\n * provider: \"anthropic\",\n * model: \"claude-sonnet-4-20250514\",\n * providerOptions: { apiKey: \"sk-...\" },\n * instructions: \"You are a research assistant.\",\n * tools: [{ name: \"search\", description: \"Search the web\", parameters: { query: { type: \"string\" } } }],\n * temperature: 0.7,\n * maxSteps: 10,\n * });\n */\nimport {\n create_provider,\n destroy_provider,\n agent_run,\n agent_run_with_tool_executor,\n agent_stream_with_tool_executor,\n generate,\n generate_with_tools,\n get_provider_capabilities,\n} from \"gauss-napi\";\n\nimport type {\n ProviderOptions,\n ProviderType,\n ToolDef,\n Message,\n AgentOptions,\n AgentResult,\n ToolExecutor,\n StreamCallback,\n Handle,\n Disposable,\n} from \"./types.js\";\n\nimport { resolveApiKey, detectProvider } from \"./types.js\";\nimport { OPENAI_DEFAULT } from \"./models.js\";\nimport { AgentStream } from \"./stream-iter.js\";\n\n/**\n * Transform a raw NAPI result into the public {@link AgentResult} shape.\n *\n * @description Normalises citation field names returned by different native providers\n * into the unified SDK format.\n *\n * @param raw - Raw result object from the NAPI layer.\n * @returns Normalised {@link AgentResult}.\n * @internal\n */\nfunction toSdkResult(raw: any): AgentResult {\n return {\n ...raw,\n citations: raw.citations?.map((c: any) => ({\n type: c.citationType ?? c.type,\n citedText: c.citedText,\n documentTitle: c.documentTitle,\n start: c.start,\n end: c.end,\n })),\n };\n}\n\n// ─── Config ────────────────────────────────────────────────────────\n\n/**\n * Configuration object for creating an {@link Agent} instance.\n *\n * @description All fields are optional — sensible defaults are applied and the provider is auto-detected from environment variables when omitted.\n *\n * @example\n * ```ts\n * const config: AgentConfig = {\n * provider: \"anthropic\",\n * model: \"claude-sonnet-4-20250514\",\n * instructions: \"You are a helpful assistant.\",\n * temperature: 0.7,\n * };\n * const agent = new Agent(config);\n * ```\n *\n * @since 1.0.0\n */\nexport interface AgentConfig {\n /** Agent name (default: `\"agent\"`). Used for logging and identification. */\n name?: string;\n\n /** LLM provider. Auto-detected from env if omitted. */\n provider?: ProviderType;\n\n /** Model identifier (e.g. `\"gpt-4o\"`, `\"claude-sonnet-4-20250514\"`). Auto-selected if omitted. */\n model?: string;\n\n /** Provider connection options. API key auto-resolved from env if omitted. */\n providerOptions?: ProviderOptions;\n\n /** System instructions prepended to every conversation. */\n instructions?: string;\n\n /** Tool definitions available to the agent. */\n tools?: ToolDef[];\n\n /** Sampling temperature (0–2). Higher values produce more creative output. */\n temperature?: number;\n\n /** Maximum number of agentic loop iterations before stopping. */\n maxSteps?: number;\n\n /** Top-p (nucleus) sampling threshold. */\n topP?: number;\n\n /** Maximum number of output tokens per response. */\n maxTokens?: number;\n\n /** Deterministic seed for reproducible outputs. */\n seed?: number;\n\n /** Stop the agentic loop when this tool name is called. */\n stopOnTool?: string;\n\n /** JSON schema for structured output. The model will conform its response to this schema. */\n outputSchema?: Record<string, unknown>;\n\n /** Extended thinking budget (Anthropic). Number of tokens for internal reasoning. */\n thinkingBudget?: number;\n\n /** Reasoning effort for OpenAI o-series models. Controls how much reasoning to use. */\n reasoningEffort?: \"low\" | \"medium\" | \"high\";\n\n /** Enable prompt caching (Anthropic). Auto-annotates system messages and tools. */\n cacheControl?: boolean;\n\n /** Enable code execution runtimes. Pass `true` for all defaults, or configure individually. */\n codeExecution?: boolean | import(\"./types.js\").CodeExecutionOptions;\n\n /** Enable Google Search grounding (Gemini only). */\n grounding?: boolean;\n\n /** Enable native code execution / Gemini code interpreter. */\n nativeCodeExecution?: boolean;\n\n /** Response modalities (e.g. `[\"TEXT\", \"IMAGE\"]` for Gemini image generation). */\n responseModalities?: string[];\n}\n\n// ─── Agent Class ───────────────────────────────────────────────────\n\n/**\n * Core agent class that wraps a native LLM provider and manages the agentic loop.\n *\n * @description `Agent` is the primary entry-point for interacting with language models in Gauss.\n * It supports single-shot completions, multi-step tool-use loops, streaming, and raw generation.\n * Each instance owns a native provider handle that **must** be released via {@link Agent.destroy}\n * (or the `using` pattern) to avoid resource leaks.\n *\n * @example\n * ```ts\n * const agent = new Agent({\n * provider: \"openai\",\n * model: \"gpt-4o\",\n * instructions: \"You are a helpful assistant.\",\n * });\n * const result = await agent.run(\"What is the meaning of life?\");\n * console.log(result.text);\n * agent.destroy();\n * ```\n *\n * @since 1.0.0\n */\nexport class Agent implements Disposable {\n private readonly providerHandle: Handle;\n private readonly _name: string;\n private readonly _provider: ProviderType;\n private readonly _model: string;\n private readonly _instructions: string;\n private _tools: ToolDef[] = [];\n private _options: AgentOptions = {};\n private disposed = false;\n\n /**\n * Create a new Agent.\n *\n * @description Initialises the native provider connection and configures the agentic\n * loop options. The provider and model are auto-detected from environment variables\n * when not explicitly set.\n *\n * @param config - Agent configuration. All fields are optional.\n * @throws {Error} If the native provider cannot be created (e.g. invalid API key).\n *\n * @example\n * ```ts\n * const agent = new Agent({ instructions: \"Be concise.\" });\n * ```\n *\n * @since 1.0.0\n */\n constructor(config: AgentConfig = {}) {\n const detected = detectProvider();\n this._provider = config.provider ?? detected?.provider ?? \"openai\";\n this._model = config.model ?? detected?.model ?? OPENAI_DEFAULT;\n this._name = config.name ?? \"agent\";\n this._instructions = config.instructions ?? \"\";\n\n const apiKey =\n config.providerOptions?.apiKey ?? resolveApiKey(this._provider);\n this.providerHandle = create_provider(this._provider, this._model, {\n apiKey,\n ...config.providerOptions,\n });\n\n if (config.tools) this._tools = [...config.tools];\n\n const ceOpt = config.codeExecution;\n const codeExecution = ceOpt === true\n ? { python: true, javascript: true, bash: true }\n : ceOpt || undefined;\n\n this._options = {\n instructions: this._instructions || undefined,\n temperature: config.temperature,\n maxSteps: config.maxSteps,\n topP: config.topP,\n maxTokens: config.maxTokens,\n seed: config.seed,\n stopOnTool: config.stopOnTool,\n outputSchema: config.outputSchema,\n thinkingBudget: config.thinkingBudget,\n reasoningEffort: config.reasoningEffort,\n cacheControl: config.cacheControl,\n codeExecution,\n grounding: config.grounding,\n nativeCodeExecution: config.nativeCodeExecution,\n responseModalities: config.responseModalities,\n };\n }\n\n // ─── Accessors ──────────────────────────────────────────────────\n\n /**\n * @description The agent's name.\n * @since 1.0.0\n */\n get name(): string { return this._name; }\n\n /**\n * @description The resolved LLM provider type.\n * @since 1.0.0\n */\n get provider(): ProviderType { return this._provider; }\n\n /**\n * @description The resolved model identifier.\n * @since 1.0.0\n */\n get model(): string { return this._model; }\n\n /**\n * @description The system instructions string.\n * @since 1.0.0\n */\n get instructions(): string { return this._instructions; }\n\n /**\n * @description Native provider handle. Used internally by Network, Graph, and other subsystems.\n * @since 1.0.0\n * @internal\n */\n get handle(): Handle { return this.providerHandle; }\n\n /**\n * @description Query what features this provider/model combination supports.\n * @returns The capability flags for the current provider and model.\n * @since 1.0.0\n */\n get capabilities(): import(\"./types.js\").ProviderCapabilities {\n return get_provider_capabilities(this.providerHandle);\n }\n\n // ─── Fluent Configuration ───────────────────────────────────────\n\n /**\n * Register a single tool definition. Chainable.\n *\n * @description Appends a tool to the agent's tool list so the LLM can invoke it during the agentic loop.\n *\n * @param tool - The tool definition to add.\n * @returns `this` for fluent chaining.\n *\n * @example\n * ```ts\n * agent.addTool({ name: \"search\", description: \"Web search\", parameters: { query: { type: \"string\" } } });\n * ```\n *\n * @since 1.0.0\n */\n addTool(tool: ToolDef): this {\n this._tools.push(tool);\n return this;\n }\n\n /**\n * Register multiple tool definitions at once. Chainable.\n *\n * @description Appends all provided tools to the agent's tool list.\n *\n * @param tools - Array of tool definitions to add.\n * @returns `this` for fluent chaining.\n *\n * @example\n * ```ts\n * agent.addTools([\n * { name: \"search\", description: \"Web search\", parameters: { query: { type: \"string\" } } },\n * { name: \"calculate\", description: \"Math calculator\", parameters: { expr: { type: \"string\" } } },\n * ]);\n * ```\n *\n * @since 1.0.0\n */\n addTools(tools: ToolDef[]): this {\n this._tools.push(...tools);\n return this;\n }\n\n /**\n * Merge additional agent options into the current configuration. Chainable.\n *\n * @description Shallow-merges the provided options with the existing ones. Later calls override earlier values.\n *\n * @param options - Partial agent options to merge.\n * @returns `this` for fluent chaining.\n *\n * @example\n * ```ts\n * agent.setOptions({ temperature: 0.5, maxTokens: 1024 });\n * ```\n *\n * @since 1.0.0\n */\n setOptions(options: Partial<AgentOptions>): this {\n this._options = { ...this._options, ...options };\n return this;\n }\n\n // ─── Execution ──────────────────────────────────────────────────\n\n /**\n * Run the agentic loop to completion.\n *\n * @description Sends the input through the full agentic loop (tool calls, multi-step reasoning)\n * and returns the final result. Accepts either a plain string prompt or a pre-built message array.\n *\n * @param input - A string prompt or an array of {@link Message} objects.\n * @returns The completed {@link AgentResult} containing the response text, token counts, and optional structured output.\n * @throws {Error} If the agent has been destroyed.\n *\n * @example\n * ```ts\n * const result = await agent.run(\"Explain quantum computing\");\n * console.log(result.text);\n * console.log(`Tokens: ${result.inputTokens} in / ${result.outputTokens} out`);\n * ```\n *\n * @since 1.0.0\n */\n async run(input: string | Message[]): Promise<AgentResult> {\n this.assertNotDisposed();\n const messages = typeof input === \"string\"\n ? [{ role: \"user\" as const, content: input }]\n : input;\n return toSdkResult(await agent_run(\n this._name,\n this.providerHandle,\n this._tools,\n messages,\n this._options\n ));\n }\n\n /**\n * Run the agentic loop with a JavaScript-side tool executor.\n *\n * @description Like {@link Agent.run}, but delegates tool invocations to the provided\n * `toolExecutor` callback. Use this when tools need access to the Node.js runtime\n * (file system, network, databases, etc.).\n *\n * @param input - A string prompt or an array of {@link Message} objects.\n * @param toolExecutor - Async callback that receives a JSON-encoded tool call and returns a JSON-encoded result.\n * @returns The completed {@link AgentResult}.\n * @throws {Error} If the agent has been destroyed.\n *\n * @example\n * ```ts\n * const result = await agent.runWithTools(\"Search for cats\", async (callJson) => {\n * const call = JSON.parse(callJson);\n * return JSON.stringify({ results: [\"cat1\", \"cat2\"] });\n * });\n * ```\n *\n * @since 1.0.0\n */\n async runWithTools(\n input: string | Message[],\n toolExecutor: ToolExecutor\n ): Promise<AgentResult> {\n this.assertNotDisposed();\n const messages = typeof input === \"string\"\n ? [{ role: \"user\" as const, content: input }]\n : input;\n return toSdkResult(await agent_run_with_tool_executor(\n this._name,\n this.providerHandle,\n this._tools,\n messages,\n this._options,\n toolExecutor\n ));\n }\n\n /**\n * Stream agent responses with real-time events via a callback.\n *\n * @description Runs the agentic loop while invoking `onEvent` for each streaming event\n * (text deltas, tool calls, etc.). Returns the final aggregated result after the stream ends.\n *\n * @param input - A string prompt or an array of {@link Message} objects.\n * @param onEvent - Callback invoked with each JSON-encoded stream event.\n * @param toolExecutor - Optional async callback for handling tool invocations.\n * @returns The completed {@link AgentResult}.\n * @throws {Error} If the agent has been destroyed.\n *\n * @example\n * ```ts\n * const result = await agent.stream(\"Tell me a joke\", (eventJson) => {\n * const event = JSON.parse(eventJson);\n * if (event.type === \"text_delta\") process.stdout.write(event.text ?? \"\");\n * });\n * ```\n *\n * @since 1.0.0\n */\n async stream(\n input: string | Message[],\n onEvent: StreamCallback,\n toolExecutor?: ToolExecutor\n ): Promise<AgentResult> {\n this.assertNotDisposed();\n const messages = typeof input === \"string\"\n ? [{ role: \"user\" as const, content: input }]\n : input;\n return toSdkResult(await agent_stream_with_tool_executor(\n this._name,\n this.providerHandle,\n this._tools,\n messages,\n this._options,\n onEvent,\n toolExecutor ?? NOOP_TOOL_EXECUTOR\n ));\n }\n\n /**\n * Stream as an async iterable — use with `for await`.\n *\n * @description Returns an {@link AgentStream} that yields {@link StreamEvent} objects.\n * After iteration completes, the final {@link AgentResult} is available via\n * `stream.result`.\n *\n * @param input - A string prompt or an array of {@link Message} objects.\n * @param toolExecutor - Optional async callback for handling tool invocations.\n * @returns An {@link AgentStream} async iterable of {@link StreamEvent} objects.\n * @throws {Error} If the agent has been destroyed.\n *\n * @example\n * ```ts\n * const stream = agent.streamIter(\"Tell me a story\");\n * for await (const event of stream) {\n * if (event.type === \"text_delta\") process.stdout.write(event.text ?? \"\");\n * }\n * console.log(stream.result?.text);\n * ```\n *\n * @since 1.0.0\n */\n streamIter(\n input: string | Message[],\n toolExecutor?: ToolExecutor\n ): AgentStream {\n this.assertNotDisposed();\n const messages = typeof input === \"string\"\n ? [{ role: \"user\" as const, content: input }]\n : input;\n return new AgentStream(\n this._name,\n this.providerHandle,\n this._tools,\n messages,\n this._options,\n toolExecutor ?? NOOP_TOOL_EXECUTOR\n );\n }\n\n /**\n * Perform a single raw LLM call without the agentic loop.\n *\n * @description Bypasses the multi-step agent loop and sends the input directly to the model\n * for a one-shot completion. Useful when you need a simple generation without tool use.\n *\n * @param input - A string prompt or an array of {@link Message} objects.\n * @param options - Optional generation parameters.\n * @param options.temperature - Sampling temperature override.\n * @param options.maxTokens - Maximum output tokens override.\n * @returns The raw provider response.\n *\n * @example\n * ```ts\n * const response = await agent.generate(\"Translate 'hello' to French\", { temperature: 0 });\n * ```\n *\n * @since 1.0.0\n */\n async generate(\n input: string | Message[],\n options?: { temperature?: number; maxTokens?: number }\n ): Promise<unknown> {\n this.assertNotDisposed();\n const messages = typeof input === \"string\"\n ? [{ role: \"user\" as const, content: input }]\n : input;\n return generate(\n this.providerHandle,\n messages,\n options?.temperature,\n options?.maxTokens\n );\n }\n\n /**\n * Perform a single raw LLM call with tool definitions (no agentic loop).\n *\n * @description Like {@link Agent.generate}, but also passes tool definitions to the model.\n * The model may return tool-call requests in its response, but the caller is responsible\n * for executing them — no automatic loop is performed.\n *\n * @param input - A string prompt or an array of {@link Message} objects.\n * @param tools - Tool definitions to make available to the model.\n * @param options - Optional generation parameters.\n * @param options.temperature - Sampling temperature override.\n * @param options.maxTokens - Maximum output tokens override.\n * @returns The raw provider response, potentially containing tool call requests.\n *\n * @example\n * ```ts\n * const response = await agent.generateWithTools(\n * \"What's the weather?\",\n * [{ name: \"get_weather\", description: \"Get weather\", parameters: { city: { type: \"string\" } } }],\n * );\n * ```\n *\n * @since 1.0.0\n */\n async generateWithTools(\n input: string | Message[],\n tools: ToolDef[],\n options?: { temperature?: number; maxTokens?: number }\n ): Promise<unknown> {\n this.assertNotDisposed();\n const messages = typeof input === \"string\"\n ? [{ role: \"user\" as const, content: input }]\n : input;\n return generate_with_tools(\n this.providerHandle,\n messages,\n tools,\n options?.temperature,\n options?.maxTokens\n );\n }\n\n // ─── Lifecycle ──────────────────────────────────────────────────\n\n /**\n * Release all native resources held by this agent.\n *\n * @description Destroys the underlying native provider handle. Safe to call multiple times;\n * subsequent calls are no-ops. After calling `destroy()`, any further method calls on this\n * agent will throw.\n *\n * @since 1.0.0\n */\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_provider(this.providerHandle);\n } catch {\n // Already destroyed — safe to ignore.\n }\n }\n }\n\n /**\n * Alias for {@link Agent.destroy} — enables the TC39 `using` pattern.\n *\n * @example\n * ```ts\n * {\n * using agent = new Agent({ instructions: \"Be helpful.\" });\n * const result = await agent.run(\"Hi!\");\n * } // agent is automatically destroyed here\n * ```\n *\n * @since 1.0.0\n */\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(`Agent \"${this._name}\" has been destroyed`);\n }\n }\n}\n\n/** No-op tool executor — used when no tools are registered. */\nconst NOOP_TOOL_EXECUTOR: ToolExecutor = async () => \"{}\";\n\n/**\n * One-liner convenience function — create an agent, run a prompt, and return the text.\n *\n * @description Creates a temporary {@link Agent}, sends the prompt through the agentic loop,\n * and returns just the response text. The agent is automatically destroyed after the call.\n * Ideal for quick, single-turn interactions.\n *\n * @param prompt - The user prompt to send to the agent.\n * @param config - Optional agent configuration (everything except `name`).\n * @returns The agent's response text.\n * @throws {Error} If the provider cannot be initialised or the call fails.\n *\n * @example\n * ```ts\n * import { gauss } from \"gauss-ts\";\n * const answer = await gauss(\"What is the meaning of life?\");\n * console.log(answer);\n * ```\n *\n * @since 1.0.0\n */\nexport async function gauss(\n prompt: string,\n config?: Omit<AgentConfig, \"name\">\n): Promise<string> {\n const agent = new Agent({ name: \"gauss\", ...config });\n try {\n const result = await agent.run(prompt);\n return result.text;\n } finally {\n agent.destroy();\n }\n}\n","/**\n * AgentStream — Async iterable wrapper over native streaming.\n *\n * @example\n * for await (const event of agent.streamIter(\"Tell me a story\", executor)) {\n * if (event.type === \"text_delta\") process.stdout.write(event.text ?? \"\");\n * }\n * // Access final result after iteration:\n * console.log(stream.result?.text);\n */\nimport { agent_stream_with_tool_executor } from \"gauss-napi\";\n\nimport type {\n ToolDef,\n Message,\n AgentOptions,\n AgentResult,\n ToolExecutor,\n Handle,\n} from \"./types.js\";\n\n/**\n * Transform a raw NAPI result into the public {@link AgentResult} shape.\n *\n * @param raw - Raw result object from the NAPI layer.\n * @returns Normalised {@link AgentResult}.\n * @internal\n */\nfunction toSdkResult(raw: any): AgentResult {\n return {\n ...raw,\n citations: raw.citations?.map((c: any) => ({\n type: c.citationType ?? c.type,\n citedText: c.citedText,\n documentTitle: c.documentTitle,\n start: c.start,\n end: c.end,\n })),\n };\n}\n\n/**\n * A single event emitted during agent streaming.\n *\n * @description Represents a parsed streaming event such as a text delta, tool call,\n * or other provider-specific event. The `type` field discriminates the event kind.\n *\n * @example\n * ```ts\n * const event: StreamEvent = { type: \"text_delta\", text: \"Hello\" };\n * if (event.type === \"text_delta\") process.stdout.write(event.text ?? \"\");\n * ```\n *\n * @since 1.0.0\n */\nexport interface StreamEvent {\n /** The event type discriminator (e.g. `\"text_delta\"`, `\"tool_call\"`, `\"raw\"`). */\n type: string;\n /** Text content for text-delta events. */\n text?: string;\n /** Tool call payload for tool-call events. */\n toolCall?: { name: string; arguments: string };\n /** Additional provider-specific fields. */\n [key: string]: unknown;\n}\n\n/**\n * Async iterable wrapper over the native agent streaming callback.\n *\n * @description Bridges the native callback-based streaming API into an `AsyncIterable<StreamEvent>`.\n * Use with `for await ... of` to consume events as they arrive. After iteration completes,\n * the final {@link AgentResult} is available via the {@link AgentStream.result} getter.\n *\n * @example\n * ```ts\n * const stream = agent.streamIter(\"Tell me a story\");\n * for await (const event of stream) {\n * if (event.type === \"text_delta\") process.stdout.write(event.text ?? \"\");\n * }\n * console.log(stream.result?.text);\n * ```\n *\n * @since 1.0.0\n */\nexport class AgentStream implements AsyncIterable<StreamEvent> {\n private _result: AgentResult | undefined;\n\n /**\n * Create a new `AgentStream`.\n *\n * @description Typically not called directly — use {@link Agent.streamIter} instead.\n *\n * @param agentName - Name of the agent for logging/identification.\n * @param providerHandle - Native provider handle.\n * @param tools - Tool definitions available during the stream.\n * @param messages - Conversation messages to send.\n * @param options - Agent options for the agentic loop.\n * @param toolExecutor - Async callback for executing tool calls.\n *\n * @since 1.0.0\n */\n constructor(\n private readonly agentName: string,\n private readonly providerHandle: Handle,\n private readonly tools: ToolDef[],\n private readonly messages: Message[],\n private readonly options: AgentOptions,\n private readonly toolExecutor: ToolExecutor,\n ) {}\n\n /**\n * The final aggregated result, available after async iteration completes.\n *\n * @description Returns `undefined` while iteration is still in progress. Once the\n * `for await` loop finishes, this contains the full {@link AgentResult} with response\n * text, token counts, and other metadata.\n *\n * @returns The completed {@link AgentResult} or `undefined` if iteration hasn't finished.\n *\n * @example\n * ```ts\n * const stream = agent.streamIter(\"Hello\");\n * for await (const event of stream) { /* consume events *\\/ }\n * console.log(stream.result?.text);\n * ```\n *\n * @since 1.0.0\n */\n get result(): AgentResult | undefined { return this._result; }\n\n /**\n * Async iterator implementation — yields {@link StreamEvent} objects as they arrive.\n *\n * @description Starts the native streaming call and yields parsed events. The iterator\n * completes when the underlying stream finishes and all buffered events have been yielded.\n *\n * @returns An async iterator of {@link StreamEvent} objects.\n *\n * @since 1.0.0\n */\n async *[Symbol.asyncIterator](): AsyncIterator<StreamEvent> {\n const buffer: StreamEvent[] = [];\n let resolve: (() => void) | undefined;\n let done = false;\n\n const onEvent = (json: string) => {\n try {\n buffer.push(JSON.parse(json) as StreamEvent);\n } catch {\n buffer.push({ type: \"raw\", text: json });\n }\n resolve?.();\n };\n\n const runPromise = agent_stream_with_tool_executor(\n this.agentName,\n this.providerHandle,\n this.tools,\n this.messages,\n this.options,\n onEvent,\n this.toolExecutor\n ).then((r) => {\n this._result = toSdkResult(r);\n done = true;\n resolve?.();\n });\n\n while (!done || buffer.length > 0) {\n if (buffer.length > 0) {\n yield buffer.shift()!;\n } else if (!done) {\n await new Promise<void>((r) => { resolve = r; });\n }\n }\n\n await runPromise;\n }\n}\n","import { Agent, type AgentConfig } from \"./agent.js\";\n\nexport interface EnterprisePresetOptions extends AgentConfig {\n retries?: number;\n}\n\n/**\n * Plug-and-play enterprise preset with production-safe defaults.\n */\nexport function enterprisePreset(config: EnterprisePresetOptions = {}): Agent {\n const retries = config.providerOptions?.maxRetries ?? config.retries ?? 5;\n\n return new Agent({\n ...config,\n name: config.name ?? \"enterprise-agent\",\n maxSteps: config.maxSteps ?? 20,\n temperature: config.temperature ?? 0.2,\n cacheControl: config.cacheControl ?? true,\n reasoningEffort: config.reasoningEffort ?? \"medium\",\n providerOptions: {\n ...config.providerOptions,\n maxRetries: retries,\n },\n });\n}\n\n/**\n * One-liner enterprise run helper.\n */\nexport async function enterpriseRun(\n prompt: string,\n config?: EnterprisePresetOptions\n): Promise<string> {\n const agent = enterprisePreset(config);\n try {\n const result = await agent.run(prompt);\n return result.text;\n } finally {\n agent.destroy();\n }\n}\n","/**\n * Batch execution — run multiple prompts through an agent in parallel.\n *\n * @example\n * import { batch } from \"gauss-ts\";\n *\n * const results = await batch(\n * [\"Translate: Hello\", \"Translate: World\"],\n * { concurrency: 2, provider: \"openai\" }\n * );\n * results.forEach(r => console.log(r.result?.text ?? r.error?.message));\n */\nimport { Agent } from \"./agent.js\";\nimport type { AgentConfig } from \"./agent.js\";\nimport type { AgentResult } from \"./types.js\";\n\n/**\n * Represents a single item in a batch execution.\n *\n * @description Each `BatchItem` holds the original input and, after execution, either\n * a successful {@link AgentResult} or an {@link Error}. Exactly one of `result` or `error`\n * will be populated after the batch completes.\n *\n * @typeParam T - The input type (defaults to `string`).\n *\n * @example\n * ```ts\n * const item: BatchItem = { input: \"Translate: Hello\", result: { text: \"Bonjour\", ... } };\n * if (item.error) console.error(item.error.message);\n * ```\n *\n * @since 1.0.0\n */\nexport interface BatchItem<T = string> {\n /** The original input prompt. */\n input: T;\n /** The successful agent result, if the execution succeeded. */\n result?: AgentResult;\n /** The error, if the execution failed. */\n error?: Error;\n}\n\n/**\n * Run multiple prompts through an agent in parallel with concurrency control.\n *\n * @description Creates a single shared {@link Agent} and dispatches all prompts through it\n * using a worker pool. Failed prompts do not abort the batch — their errors are captured\n * in the corresponding {@link BatchItem.error} field. The agent is automatically destroyed\n * after all prompts complete.\n *\n * @param prompts - Array of string prompts to process.\n * @param config - Optional agent configuration plus a `concurrency` field (default: `5`).\n * @returns An array of {@link BatchItem} objects, one per prompt, in the same order.\n * @throws {Error} If the agent cannot be created (e.g. missing API key).\n *\n * @example\n * ```ts\n * import { batch } from \"gauss-ts\";\n *\n * const results = await batch(\n * [\"Translate: Hello\", \"Translate: World\", \"Translate: Foo\"],\n * { concurrency: 2, provider: \"openai\" },\n * );\n * results.forEach(r => console.log(r.result?.text ?? r.error?.message));\n * ```\n *\n * @since 1.0.0\n */\nexport async function batch(\n prompts: string[],\n config?: Omit<AgentConfig, \"name\"> & { concurrency?: number }\n): Promise<BatchItem[]> {\n const { concurrency = 5, ...agentConfig } = config ?? {};\n const items: BatchItem[] = prompts.map((input) => ({ input }));\n\n const agent = new Agent({ name: \"batch\", ...agentConfig });\n try {\n const queue = [...items.entries()];\n const workers = Array.from({ length: Math.min(concurrency, queue.length) }, async () => {\n while (queue.length > 0) {\n const entry = queue.shift();\n if (!entry) break;\n const [idx, item] = entry;\n try {\n items[idx].result = await agent.run(item.input);\n } catch (err) {\n items[idx].error = err instanceof Error ? err : new Error(String(err));\n }\n }\n });\n await Promise.all(workers);\n } finally {\n agent.destroy();\n }\n return items;\n}\n","/**\n * Code execution & image generation — static utility functions.\n *\n * These functions don't require an Agent instance.\n *\n * @example\n * import { executeCode, availableRuntimes, generateImage } from \"gauss-ts\";\n *\n * const result = await executeCode(\"python\", \"print(2 + 2)\");\n * console.log(result.stdout); // \"4\\n\"\n */\nimport {\n create_provider,\n destroy_provider,\n execute_code,\n available_runtimes,\n generate_image,\n} from \"gauss-napi\";\n\nimport type {\n ProviderType,\n ProviderOptions,\n CodeExecutionResult,\n ImageGenerationConfig,\n ImageGenerationResult,\n} from \"./types.js\";\n\nimport { resolveApiKey, detectProvider } from \"./types.js\";\n\n/**\n * Execute code in a sandboxed runtime without creating a full Agent.\n *\n * @description Runs the provided code snippet in an isolated subprocess using the\n * specified language runtime. No LLM or agent is involved — this is direct code execution.\n *\n * @param language - The runtime to use: `\"python\"`, `\"javascript\"`, or `\"bash\"`.\n * @param code - The source code to execute.\n * @param options - Optional execution parameters.\n * @param options.timeoutSecs - Maximum execution time in seconds (default: 30).\n * @param options.workingDir - Working directory for the subprocess.\n * @param options.sandbox - Sandbox strictness level: `\"default\"`, `\"strict\"`, or `\"permissive\"`.\n * @returns A {@link CodeExecutionResult} containing stdout, stderr, exit code, and timing info.\n *\n * @example\n * ```ts\n * const result = await executeCode(\"python\", \"print(2 + 2)\");\n * console.log(result.stdout); // \"4\\n\"\n * console.log(result.success); // true\n * ```\n *\n * @since 1.0.0\n */\nexport async function executeCode(\n language: \"python\" | \"javascript\" | \"bash\",\n code: string,\n options?: { timeoutSecs?: number; workingDir?: string; sandbox?: \"default\" | \"strict\" | \"permissive\" },\n): Promise<CodeExecutionResult> {\n return execute_code(language, code, options?.timeoutSecs, options?.workingDir, options?.sandbox);\n}\n\n/**\n * Check which code execution runtimes are available on this system.\n *\n * @description Probes the host system for installed language runtimes (e.g. Python, Node.js, Bash)\n * and returns the names of those that are usable with {@link executeCode}.\n *\n * @returns An array of available runtime names (e.g. `[\"python\", \"javascript\", \"bash\"]`).\n *\n * @example\n * ```ts\n * const runtimes = await availableRuntimes();\n * console.log(runtimes); // [\"python\", \"javascript\", \"bash\"]\n * ```\n *\n * @since 1.0.0\n */\nexport async function availableRuntimes(): Promise<string[]> {\n return available_runtimes();\n}\n\n/**\n * Generate images using a provider's image generation API.\n *\n * @description Creates a temporary provider connection, sends the prompt to the image generation\n * model, and returns the result. The provider is automatically destroyed after the call.\n * Supports OpenAI DALL-E, Google Gemini, and other providers with image generation capabilities.\n *\n * @param prompt - Text description of the desired image.\n * @param options - Image generation configuration plus optional provider settings.\n * @param options.provider - LLM provider (auto-detected from env if omitted).\n * @param options.providerOptions - Provider connection options (API key auto-resolved if omitted).\n * @param options.model - Image model identifier (e.g. `\"dall-e-3\"`).\n * @param options.size - Desired image dimensions (e.g. `\"1024x1024\"`).\n * @param options.quality - Quality level (e.g. `\"standard\"`, `\"hd\"`).\n * @param options.style - Style preset (e.g. `\"vivid\"`, `\"natural\"`).\n * @param options.aspectRatio - Aspect ratio for Gemini (e.g. `\"16:9\"`).\n * @param options.n - Number of images to generate.\n * @param options.responseFormat - Response format (`\"url\"` or `\"b64_json\"`).\n * @returns An {@link ImageGenerationResult} containing generated image data and optional revised prompt.\n * @throws {Error} If the provider cannot be initialised or image generation fails.\n *\n * @example\n * ```ts\n * const result = await generateImage(\"A sunset over mountains\", {\n * provider: \"openai\",\n * model: \"dall-e-3\",\n * size: \"1024x1024\",\n * });\n * console.log(result.images[0].url);\n * ```\n *\n * @since 1.0.0\n */\nexport async function generateImage(\n prompt: string,\n options: ImageGenerationConfig & {\n provider?: ProviderType;\n providerOptions?: ProviderOptions;\n } = {},\n): Promise<ImageGenerationResult> {\n const detected = detectProvider();\n const providerType = options.provider ?? detected?.provider ?? \"openai\";\n const model = options.model ?? detected?.model ?? \"dall-e-3\";\n const apiKey = options.providerOptions?.apiKey ?? resolveApiKey(providerType);\n const handle = create_provider(providerType, model, { apiKey, ...options.providerOptions });\n try {\n return await generate_image(\n handle,\n prompt,\n options.model,\n options.size,\n options.quality,\n options.style,\n options.aspectRatio,\n options.n,\n options.responseFormat,\n );\n } finally {\n destroy_provider(handle);\n }\n}\n\n/**\n * Gauss core native library version.\n * @since 1.0.0\n */\nexport { version } from \"gauss-napi\";\n","/**\n * Memory SDK wrapper — in-memory conversation/session store backed by Rust core.\n */\nimport { randomUUID } from \"node:crypto\";\nimport {\n create_memory,\n memory_store,\n memory_recall,\n memory_clear,\n memory_stats,\n destroy_memory,\n} from \"gauss-napi\";\n\nimport type {\n Handle,\n Disposable,\n MemoryEntry,\n MemoryEntryType,\n RecallOptions,\n} from \"./types.js\";\n\n/**\n * In-memory conversation store backed by Rust core.\n *\n * @example\n * const mem = new Memory();\n * await mem.store({ id: \"m1\", content: \"Hello\", entryType: \"message\", timestamp: new Date().toISOString() });\n * const entries = await mem.recall();\n * mem.destroy();\n */\nexport class Memory implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_memory();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n /** Store a memory entry. Accepts a full entry or role+content shorthand. */\n async store(entry: MemoryEntry): Promise<void>;\n async store(role: string, content: string, sessionId?: string): Promise<void>;\n async store(\n entryOrRole: MemoryEntry | string,\n content?: string,\n sessionId?: string\n ): Promise<void> {\n this.assertNotDisposed();\n const entry: MemoryEntry =\n typeof entryOrRole === \"string\"\n ? {\n id: randomUUID(),\n content: content!,\n entryType: (entryOrRole as MemoryEntryType) || \"conversation\",\n timestamp: new Date().toISOString(),\n sessionId,\n }\n : entryOrRole;\n // Convert to snake_case for Rust serde\n const rustEntry = {\n id: entry.id,\n content: entry.content,\n entry_type: entry.entryType,\n timestamp: entry.timestamp,\n tier: entry.tier,\n metadata: entry.metadata,\n importance: entry.importance,\n session_id: entry.sessionId,\n embedding: entry.embedding,\n };\n return memory_store(this._handle, JSON.stringify(rustEntry));\n }\n\n async recall(options?: RecallOptions): Promise<MemoryEntry[]> {\n this.assertNotDisposed();\n const json = options ? JSON.stringify(options) : undefined;\n return memory_recall(this._handle, json) as Promise<MemoryEntry[]>;\n }\n\n async clear(sessionId?: string): Promise<void> {\n this.assertNotDisposed();\n return memory_clear(this._handle, sessionId);\n }\n\n async stats(): Promise<Record<string, unknown>> {\n this.assertNotDisposed();\n return memory_stats(this._handle) as Promise<Record<string, unknown>>;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_memory(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"Memory has been destroyed\");\n }\n }\n}\n","/**\n * VectorStore SDK wrapper — in-memory RAG vector store backed by Rust core.\n */\nimport {\n create_vector_store,\n vector_store_upsert,\n vector_store_search,\n destroy_vector_store,\n cosine_similarity,\n} from \"gauss-napi\";\n\nimport type {\n Handle,\n Disposable,\n VectorChunk,\n SearchResult,\n} from \"./types.js\";\n\nexport class VectorStore implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor(_options?: { dimensions?: number }) {\n this._handle = create_vector_store();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n async upsert(chunks: VectorChunk[]): Promise<void> {\n this.assertNotDisposed();\n // Convert camelCase to snake_case for Rust serde\n const rustChunks = chunks.map((c) => ({\n id: c.id,\n document_id: c.documentId,\n content: c.content,\n index: c.index,\n metadata: c.metadata ?? {},\n embedding: c.embedding,\n }));\n return vector_store_upsert(this._handle, JSON.stringify(rustChunks));\n }\n\n async search(embedding: number[], topK: number): Promise<SearchResult[]> {\n this.assertNotDisposed();\n return vector_store_search(\n this._handle,\n JSON.stringify(embedding),\n topK\n ) as Promise<SearchResult[]>;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_vector_store(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"VectorStore has been destroyed\");\n }\n }\n\n static cosineSimilarity(a: number[], b: number[]): number {\n return cosine_similarity(a, b);\n }\n}\n","/**\n * Graph — DAG-based multi-agent execution backed by Rust core.\n *\n * @example\n * const researcher = new Agent({ name: \"researcher\", instructions: \"Research topics\" });\n * const writer = new Agent({ name: \"writer\", instructions: \"Write articles\" });\n *\n * const graph = new Graph()\n * .addNode({ nodeId: \"research\", agent: researcher })\n * .addNode({ nodeId: \"write\", agent: writer })\n * .addEdge(\"research\", \"write\");\n *\n * const result = await graph.run(\"Write about quantum computing\");\n * graph.destroy();\n */\nimport {\n create_graph,\n graph_add_node,\n graph_add_edge,\n graph_add_fork_node,\n graph_run,\n destroy_graph,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, ToolDef } from \"./types.js\";\nimport type { Agent } from \"./agent.js\";\n\nexport interface GraphNodeConfig {\n nodeId: string;\n agent: Agent;\n instructions?: string;\n tools?: ToolDef[];\n}\n\nexport type ConsensusStrategy = \"first\" | \"concat\";\n\nexport interface ForkNodeConfig {\n nodeId: string;\n agents: Array<{ agent: Agent; instructions?: string }>;\n consensus?: ConsensusStrategy;\n}\n\nexport class Graph implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_graph();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addNode(config: GraphNodeConfig): this {\n this.assertNotDisposed();\n graph_add_node(\n this._handle,\n config.nodeId,\n config.agent.name,\n config.agent.handle,\n config.instructions,\n config.tools ?? []\n );\n return this;\n }\n\n /** Add a fork node — runs multiple agents in parallel, merging via consensus. */\n addFork(config: ForkNodeConfig): this {\n this.assertNotDisposed();\n graph_add_fork_node(\n this._handle,\n config.nodeId,\n config.agents.map(a => ({\n agentName: a.agent.name,\n providerHandle: a.agent.handle,\n instructions: a.instructions,\n })),\n config.consensus ?? \"concat\"\n );\n return this;\n }\n\n addEdge(from: string, to: string): this {\n this.assertNotDisposed();\n graph_add_edge(this._handle, from, to);\n return this;\n }\n\n async run(prompt: string): Promise<Record<string, unknown>> {\n this.assertNotDisposed();\n return graph_run(this._handle, prompt) as Promise<Record<string, unknown>>;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try { destroy_graph(this._handle); } catch { /* ok */ }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) throw new Error(\"Graph has been destroyed\");\n }\n}\n","/**\n * Workflow SDK wrapper — dependency-based step execution backed by Rust core.\n */\nimport {\n create_workflow,\n workflow_add_step,\n workflow_add_dependency,\n workflow_run,\n destroy_workflow,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, ToolDef } from \"./types.js\";\nimport type { Agent } from \"./agent.js\";\n\nexport interface WorkflowStepConfig {\n stepId: string;\n agent: Agent;\n instructions?: string;\n tools?: ToolDef[];\n}\n\nexport class Workflow implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_workflow();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addStep(config: WorkflowStepConfig): this {\n this.assertNotDisposed();\n workflow_add_step(\n this._handle,\n config.stepId,\n config.agent.name,\n config.agent.handle,\n config.instructions,\n config.tools ?? []\n );\n return this;\n }\n\n addDependency(stepId: string, dependsOn: string): this {\n this.assertNotDisposed();\n workflow_add_dependency(this._handle, stepId, dependsOn);\n return this;\n }\n\n async run(prompt: string): Promise<Record<string, unknown>> {\n this.assertNotDisposed();\n return workflow_run(this._handle, prompt) as Promise<\n Record<string, unknown>\n >;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_workflow(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"Workflow has been destroyed\");\n }\n }\n}\n","/**\n * Team — multi-agent coordination backed by Rust core.\n *\n * @example\n * const researcher = new Agent({ name: \"researcher\", instructions: \"Research topics\" });\n * const writer = new Agent({ name: \"writer\", instructions: \"Write summaries\" });\n *\n * const team = new Team(\"content-team\")\n * .add(researcher)\n * .add(writer)\n * .strategy(\"sequential\");\n *\n * const result = await team.run(\"Explain quantum computing\");\n * console.log(result.finalText);\n * team.destroy();\n */\nimport {\n create_team,\n team_add_agent,\n team_set_strategy,\n team_run,\n destroy_team,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\nimport type { Agent } from \"./agent.js\";\n\nexport type TeamStrategy = \"sequential\" | \"parallel\";\n\nexport interface TeamResult {\n finalText: string;\n results: Array<{\n text: string;\n steps: number;\n inputTokens: number;\n outputTokens: number;\n }>;\n}\n\nexport class Team implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n private agents: Agent[] = [];\n\n constructor(name: string) {\n this._handle = create_team(name);\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n /** Add an agent to the team. */\n add(agent: Agent, instructions?: string): this {\n this.assertNotDisposed();\n team_add_agent(this._handle, agent.name, agent.handle, instructions);\n this.agents.push(agent);\n return this;\n }\n\n /** Set the team coordination strategy. */\n strategy(s: TeamStrategy): this {\n this.assertNotDisposed();\n team_set_strategy(this._handle, s);\n return this;\n }\n\n /** Run the team with a prompt or messages. */\n async run(prompt: string): Promise<TeamResult> {\n this.assertNotDisposed();\n const messages = JSON.stringify([\n { role: \"user\", content: [{ type: \"text\", text: prompt }] },\n ]);\n return team_run(this._handle, messages) as Promise<TeamResult>;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_team(this._handle);\n } catch {\n /* ok */\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) throw new Error(\"Team has been destroyed\");\n }\n}\n","/**\n * Network SDK wrapper — multi-agent delegation backed by Rust core.\n */\nimport {\n create_network,\n network_add_agent,\n network_set_supervisor,\n network_delegate,\n network_agent_cards,\n destroy_network,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\nimport type { Agent } from \"./agent.js\";\n\nexport class Network implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_network();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addAgent(agent: Agent, instructions?: string): this {\n this.assertNotDisposed();\n network_add_agent(\n this._handle,\n agent.name,\n agent.handle,\n instructions\n );\n return this;\n }\n\n setSupervisor(agentName: string): this {\n this.assertNotDisposed();\n network_set_supervisor(this._handle, agentName);\n return this;\n }\n\n async delegate(\n fromAgent: string,\n toAgent: string,\n prompt: string\n ): Promise<unknown> {\n this.assertNotDisposed();\n return network_delegate(this._handle, fromAgent, toAgent, prompt);\n }\n\n agentCards(): unknown {\n this.assertNotDisposed();\n return network_agent_cards(this._handle);\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_network(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"Network has been destroyed\");\n }\n }\n}\n","/**\n * Middleware SDK wrapper — request/response chain backed by Rust core.\n */\nimport {\n create_middleware_chain,\n middleware_use_logging,\n middleware_use_caching,\n middleware_use_rate_limit,\n destroy_middleware_chain,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class MiddlewareChain implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_middleware_chain();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n useLogging(): this {\n this.assertNotDisposed();\n middleware_use_logging(this._handle);\n return this;\n }\n\n useCaching(ttlMs: number): this {\n this.assertNotDisposed();\n middleware_use_caching(this._handle, ttlMs);\n return this;\n }\n\n useRateLimit(requestsPerMinute: number, burst?: number): this {\n this.assertNotDisposed();\n middleware_use_rate_limit(this._handle, requestsPerMinute, burst);\n return this;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_middleware_chain(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"MiddlewareChain has been destroyed\");\n }\n }\n}\n","/**\n * Plugin SDK wrapper — event-driven plugin system backed by Rust core.\n */\nimport {\n create_plugin_registry,\n plugin_registry_add_telemetry,\n plugin_registry_add_memory,\n plugin_registry_list,\n plugin_registry_emit,\n destroy_plugin_registry,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class PluginRegistry implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_plugin_registry();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addTelemetry(): this {\n this.assertNotDisposed();\n plugin_registry_add_telemetry(this._handle);\n return this;\n }\n\n addMemory(): this {\n this.assertNotDisposed();\n plugin_registry_add_memory(this._handle);\n return this;\n }\n\n list(): string[] {\n this.assertNotDisposed();\n return plugin_registry_list(this._handle);\n }\n\n emit(event: Record<string, unknown>): void {\n this.assertNotDisposed();\n plugin_registry_emit(this._handle, JSON.stringify(event));\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_plugin_registry(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"PluginRegistry has been destroyed\");\n }\n }\n}\n","/**\n * McpServer SDK wrapper — Model Context Protocol server backed by Rust core.\n */\nimport {\n create_mcp_server,\n mcp_server_add_tool,\n mcpServerAddResource,\n mcpServerAddPrompt,\n mcp_server_handle,\n destroy_mcp_server,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, ToolDef } from \"./types.js\";\n\n// ── MCP Types ──────────────────────────────────────────────────\n\nexport interface McpResource {\n uri: string;\n name: string;\n description?: string;\n mimeType?: string;\n}\n\nexport interface McpPromptArgument {\n name: string;\n description?: string;\n required?: boolean;\n}\n\nexport interface McpPrompt {\n name: string;\n description?: string;\n arguments: McpPromptArgument[];\n}\n\nexport interface McpPromptMessage {\n role: \"user\" | \"assistant\";\n content: McpContent;\n}\n\nexport type McpContent =\n | { type: \"text\"; text: string }\n | { type: \"image\"; data: string; mimeType: string }\n | { type: \"resource\"; resource: McpResourceContent };\n\nexport interface McpResourceContent {\n uri: string;\n mimeType?: string;\n text?: string;\n blob?: string;\n}\n\nexport interface McpPromptResult {\n description?: string;\n messages: McpPromptMessage[];\n}\n\nexport interface McpModelHint {\n name?: string;\n}\n\nexport interface McpModelPreferences {\n hints?: McpModelHint[];\n costPriority?: number;\n speedPriority?: number;\n intelligencePriority?: number;\n}\n\nexport interface McpSamplingMessage {\n role: \"user\" | \"assistant\";\n content: McpContent;\n}\n\nexport interface McpSamplingRequest {\n messages: McpSamplingMessage[];\n modelPreferences?: McpModelPreferences;\n systemPrompt?: string;\n includeContext?: \"none\" | \"thisServer\" | \"allServers\";\n temperature?: number;\n maxTokens: number;\n stopSequences?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface McpSamplingResponse {\n role: \"assistant\";\n content: McpContent;\n model: string;\n stopReason?: string;\n}\n\n// ── McpServer Class ────────────────────────────────────────────\n\nexport class McpServer implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor(name: string, version: string) {\n this._handle = create_mcp_server(name, version);\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addTool(tool: ToolDef): this {\n this.assertNotDisposed();\n mcp_server_add_tool(this._handle, JSON.stringify(tool));\n return this;\n }\n\n addResource(resource: McpResource): this {\n this.assertNotDisposed();\n mcpServerAddResource(this._handle, JSON.stringify(resource));\n return this;\n }\n\n addPrompt(prompt: McpPrompt): this {\n this.assertNotDisposed();\n mcpServerAddPrompt(this._handle, JSON.stringify(prompt));\n return this;\n }\n\n async handleMessage(message: unknown): Promise<unknown> {\n this.assertNotDisposed();\n return mcp_server_handle(this._handle, JSON.stringify(message));\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_mcp_server(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"McpServer has been destroyed\");\n }\n }\n}\n","/**\n * GuardrailChain SDK wrapper — content safety and validation backed by Rust core.\n */\nimport {\n create_guardrail_chain,\n guardrail_chain_add_content_moderation,\n guardrail_chain_add_pii_detection,\n guardrail_chain_add_token_limit,\n guardrail_chain_add_regex_filter,\n guardrail_chain_add_schema,\n guardrail_chain_list,\n destroy_guardrail_chain,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, PiiAction } from \"./types.js\";\n\nexport class GuardrailChain implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_guardrail_chain();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addContentModeration(\n blockPatterns: string[],\n warnPatterns: string[] = []\n ): this {\n this.assertNotDisposed();\n guardrail_chain_add_content_moderation(\n this._handle,\n blockPatterns,\n warnPatterns\n );\n return this;\n }\n\n addPiiDetection(action: PiiAction): this {\n this.assertNotDisposed();\n guardrail_chain_add_pii_detection(this._handle, action);\n return this;\n }\n\n addTokenLimit(maxInput?: number, maxOutput?: number): this {\n this.assertNotDisposed();\n guardrail_chain_add_token_limit(this._handle, maxInput, maxOutput);\n return this;\n }\n\n addRegexFilter(blockRules: string[], warnRules: string[] = []): this {\n this.assertNotDisposed();\n guardrail_chain_add_regex_filter(this._handle, blockRules, warnRules);\n return this;\n }\n\n addSchema(schema: Record<string, unknown>): this {\n this.assertNotDisposed();\n guardrail_chain_add_schema(this._handle, JSON.stringify(schema));\n return this;\n }\n\n list(): string[] {\n this.assertNotDisposed();\n return guardrail_chain_list(this._handle);\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_guardrail_chain(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"GuardrailChain has been destroyed\");\n }\n }\n}\n","/**\n * HITL — Approval Manager SDK wrapper, backed by Rust core.\n */\nimport {\n create_approval_manager,\n approval_request,\n approval_approve,\n approval_deny,\n approval_list_pending,\n destroy_approval_manager,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class ApprovalManager implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_approval_manager();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n request(\n toolName: string,\n args: Record<string, unknown>,\n sessionId: string\n ): string {\n this.assertNotDisposed();\n return approval_request(\n this._handle,\n toolName,\n JSON.stringify(args),\n sessionId\n );\n }\n\n approve(\n requestId: string,\n modifiedArgs?: Record<string, unknown>\n ): void {\n this.assertNotDisposed();\n approval_approve(\n this._handle,\n requestId,\n modifiedArgs ? JSON.stringify(modifiedArgs) : undefined\n );\n }\n\n deny(requestId: string, reason?: string): void {\n this.assertNotDisposed();\n approval_deny(this._handle, requestId, reason);\n }\n\n listPending(): unknown {\n this.assertNotDisposed();\n return approval_list_pending(this._handle);\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_approval_manager(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"ApprovalManager has been destroyed\");\n }\n }\n}\n","/**\n * HITL — Checkpoint Store SDK wrapper, backed by Rust core.\n */\nimport {\n create_checkpoint_store,\n checkpoint_save,\n checkpoint_load,\n checkpoint_load_latest,\n destroy_checkpoint_store,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class CheckpointStore implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_checkpoint_store();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n async save(checkpoint: Record<string, unknown>): Promise<void> {\n this.assertNotDisposed();\n return checkpoint_save(this._handle, JSON.stringify(checkpoint));\n }\n\n async load(checkpointId: string): Promise<unknown> {\n this.assertNotDisposed();\n return checkpoint_load(this._handle, checkpointId);\n }\n\n async loadLatest(sessionId: string): Promise<unknown> {\n this.assertNotDisposed();\n return checkpoint_load_latest(this._handle, sessionId);\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_checkpoint_store(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"CheckpointStore has been destroyed\");\n }\n }\n}\n","/**\n * Eval SDK wrapper — evaluation runner backed by Rust core.\n */\nimport {\n create_eval_runner,\n eval_add_scorer,\n load_dataset_jsonl,\n load_dataset_json,\n destroy_eval_runner,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, EvalScorerType } from \"./types.js\";\n\nexport class EvalRunner implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor(threshold?: number) {\n this._handle = create_eval_runner(threshold);\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n addScorer(scorerType: EvalScorerType): this {\n this.assertNotDisposed();\n eval_add_scorer(this._handle, scorerType);\n return this;\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_eval_runner(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"EvalRunner has been destroyed\");\n }\n }\n\n static loadDatasetJsonl(jsonl: string): unknown {\n return load_dataset_jsonl(jsonl);\n }\n\n static loadDatasetJson(jsonStr: string): unknown {\n return load_dataset_json(jsonStr);\n }\n}\n","/**\n * Telemetry SDK wrapper — spans and metrics backed by Rust core.\n */\nimport {\n create_telemetry,\n telemetry_record_span,\n telemetry_export_spans,\n telemetry_export_metrics,\n telemetry_clear,\n destroy_telemetry,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\nexport class Telemetry implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = create_telemetry();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n /** Record a span. Pass a SpanRecord object or use the convenience overload. */\n recordSpan(span: Record<string, unknown>): void;\n recordSpan(name: string, durationMs: number, attributes?: Record<string, unknown>): void;\n recordSpan(\n nameOrSpan: string | Record<string, unknown>,\n durationMs?: number,\n attributes?: Record<string, unknown>,\n ): void {\n this.assertNotDisposed();\n const span = typeof nameOrSpan === \"string\"\n ? {\n name: nameOrSpan,\n span_type: \"custom\",\n start_ms: Date.now() - (durationMs ?? 0),\n duration_ms: durationMs ?? 0,\n attributes: attributes ?? {},\n status: \"ok\",\n children: [],\n }\n : nameOrSpan;\n telemetry_record_span(this._handle, JSON.stringify(span));\n }\n\n exportSpans(): unknown {\n this.assertNotDisposed();\n return telemetry_export_spans(this._handle);\n }\n\n exportMetrics(): unknown {\n this.assertNotDisposed();\n return telemetry_export_metrics(this._handle);\n }\n\n clear(): void {\n this.assertNotDisposed();\n telemetry_clear(this._handle);\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_telemetry(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"Telemetry has been destroyed\");\n }\n }\n}\n","/**\n * Resilience SDK — fallback providers, circuit breakers, backed by Rust core.\n */\nimport {\n create_fallback_provider,\n create_circuit_breaker,\n create_resilient_provider,\n} from \"gauss-napi\";\n\nimport type { Handle } from \"./types.js\";\nimport type { Agent } from \"./agent.js\";\n\n/**\n * Create a fallback provider that tries providers in order.\n * Returns a provider handle usable with Agent constructor.\n */\nexport function createFallbackProvider(\n providerHandles: Handle[]\n): Handle {\n return create_fallback_provider(providerHandles);\n}\n\n/**\n * Wrap a provider with a circuit breaker.\n * Returns a provider handle usable with Agent constructor.\n */\nexport function createCircuitBreaker(\n providerHandle: Handle,\n failureThreshold?: number,\n recoveryTimeoutMs?: number\n): Handle {\n return create_circuit_breaker(\n providerHandle,\n failureThreshold,\n recoveryTimeoutMs\n );\n}\n\n/**\n * Create a resilient provider with retry, circuit breaker, and fallbacks.\n * Returns a provider handle usable with Agent constructor.\n */\nexport function createResilientProvider(\n primaryHandle: Handle,\n fallbackHandles: Handle[],\n enableCircuitBreaker?: boolean\n): Handle {\n return create_resilient_provider(\n primaryHandle,\n fallbackHandles,\n enableCircuitBreaker\n );\n}\n\n/**\n * Convenience: create a resilient agent by wrapping its provider.\n */\nexport function createResilientAgent(\n primary: Agent,\n fallbacks: Agent[],\n enableCircuitBreaker = true\n): Handle {\n return createResilientProvider(\n primary.handle,\n fallbacks.map((a) => a.handle),\n enableCircuitBreaker\n );\n}\n","/**\n * Token counting utilities backed by Rust core (tiktoken).\n */\nimport {\n count_tokens,\n count_tokens_for_model,\n count_message_tokens,\n get_context_window_size,\n estimate_cost,\n} from \"gauss-napi\";\n\nimport type { CostEstimate, JsMessage } from \"./types.js\";\n\nexport function countTokens(text: string): number {\n return count_tokens(text);\n}\n\nexport function countTokensForModel(text: string, model: string): number {\n return count_tokens_for_model(text, model);\n}\n\nexport function countMessageTokens(messages: JsMessage[]): number {\n return count_message_tokens(messages);\n}\n\nexport function getContextWindowSize(model: string): number {\n return get_context_window_size(model);\n}\n\nexport function estimateCost(\n model: string,\n usage: {\n inputTokens: number;\n outputTokens: number;\n reasoningTokens?: number;\n cacheReadTokens?: number;\n cacheCreationTokens?: number;\n }\n): CostEstimate {\n const raw = estimate_cost(\n model,\n usage.inputTokens,\n usage.outputTokens,\n usage.reasoningTokens,\n usage.cacheReadTokens,\n usage.cacheCreationTokens\n ) as Record<string, unknown>;\n\n return {\n model: String(raw.model ?? model),\n normalizedModel: String(raw.normalized_model ?? model),\n currency: String(raw.currency ?? \"USD\"),\n inputTokens: Number(raw.input_tokens ?? usage.inputTokens),\n outputTokens: Number(raw.output_tokens ?? usage.outputTokens),\n reasoningTokens: Number(raw.reasoning_tokens ?? usage.reasoningTokens ?? 0),\n cacheReadTokens: Number(raw.cache_read_tokens ?? usage.cacheReadTokens ?? 0),\n cacheCreationTokens: Number(raw.cache_creation_tokens ?? usage.cacheCreationTokens ?? 0),\n inputCostUsd: Number(raw.input_cost_usd ?? 0),\n outputCostUsd: Number(raw.output_cost_usd ?? 0),\n reasoningCostUsd: Number(raw.reasoning_cost_usd ?? 0),\n cacheReadCostUsd: Number(raw.cache_read_cost_usd ?? 0),\n cacheCreationCostUsd: Number(raw.cache_creation_cost_usd ?? 0),\n totalCostUsd: Number(raw.total_cost_usd ?? 0),\n };\n}\n","/**\n * Config utilities backed by Rust core.\n */\nimport {\n agent_config_from_json,\n agent_config_resolve_env,\n} from \"gauss-napi\";\n\nexport function parseAgentConfig(jsonStr: string): string {\n return agent_config_from_json(jsonStr);\n}\n\nexport function resolveEnv(value: string): string {\n return agent_config_resolve_env(value);\n}\n","/**\n * Tool Validator SDK wrapper, backed by Rust core.\n */\nimport {\n create_tool_validator,\n tool_validator_validate,\n destroy_tool_validator,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable, CoercionStrategy } from \"./types.js\";\n\nexport class ToolValidator implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor(strategies?: CoercionStrategy[]) {\n this._handle = create_tool_validator(strategies);\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n validate(\n input: Record<string, unknown>,\n schema: Record<string, unknown>\n ): unknown {\n this.assertNotDisposed();\n return JSON.parse(\n tool_validator_validate(\n this._handle,\n JSON.stringify(input),\n JSON.stringify(schema)\n )\n );\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroy_tool_validator(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"ToolValidator has been destroyed\");\n }\n }\n}\n","/**\n * Stream utilities backed by Rust core.\n */\nimport { parse_partial_json } from \"gauss-napi\";\n\nexport function parsePartialJson(text: string): string | null {\n return parse_partial_json(text);\n}\n","/**\n * Retry utilities — exponential backoff and configurable retry logic.\n *\n * @example\n * import { withRetry, RetryConfig } from \"gauss-ts\";\n *\n * const result = await withRetry(() => agent.run(\"Hello\"), {\n * maxRetries: 3,\n * backoff: \"exponential\",\n * });\n *\n * // Or wrap an agent:\n * const resilientRun = retryable(agent, { maxRetries: 5 });\n * const result = await resilientRun(\"Hello\");\n */\n\nimport type { AgentResult, Message } from \"./types.js\";\nimport type { Agent } from \"./agent.js\";\n\n// ─── Config ────────────────────────────────────────────────────────\n\nexport interface RetryConfig {\n /** Maximum number of retry attempts (default: 3). */\n maxRetries?: number;\n /** Backoff strategy (default: \"exponential\"). */\n backoff?: \"fixed\" | \"linear\" | \"exponential\";\n /** Base delay in ms (default: 1000). */\n baseDelayMs?: number;\n /** Maximum delay in ms (default: 30000). */\n maxDelayMs?: number;\n /** Jitter factor 0–1 (default: 0.1). Adds randomness to prevent thundering herd. */\n jitter?: number;\n /** Optional predicate — retry only if this returns true for the error. */\n retryIf?: (error: Error, attempt: number) => boolean;\n /** Called on each retry attempt, useful for logging. */\n onRetry?: (error: Error, attempt: number, delayMs: number) => void;\n}\n\n// ─── Delay calculation ─────────────────────────────────────────────\n\nfunction computeDelay(config: Required<Pick<RetryConfig, \"backoff\" | \"baseDelayMs\" | \"maxDelayMs\" | \"jitter\">>, attempt: number): number {\n let delay: number;\n switch (config.backoff) {\n case \"fixed\":\n delay = config.baseDelayMs;\n break;\n case \"linear\":\n delay = config.baseDelayMs * attempt;\n break;\n case \"exponential\":\n delay = config.baseDelayMs * Math.pow(2, attempt - 1);\n break;\n }\n // Apply jitter\n const jitterRange = delay * config.jitter;\n delay += Math.random() * jitterRange * 2 - jitterRange;\n return Math.min(Math.max(0, delay), config.maxDelayMs);\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// ─── withRetry ─────────────────────────────────────────────────────\n\n/**\n * Execute an async function with retry logic.\n *\n * @example\n * const data = await withRetry(async () => {\n * return await agent.run(\"Summarize this article\");\n * }, { maxRetries: 3, backoff: \"exponential\" });\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config?: RetryConfig\n): Promise<T> {\n const maxRetries = config?.maxRetries ?? 3;\n const backoff = config?.backoff ?? \"exponential\";\n const baseDelayMs = config?.baseDelayMs ?? 1000;\n const maxDelayMs = config?.maxDelayMs ?? 30000;\n const jitter = config?.jitter ?? 0.1;\n const retryIf = config?.retryIf;\n const onRetry = config?.onRetry;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n return await fn();\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err));\n\n if (attempt === maxRetries) break;\n\n if (retryIf && !retryIf(lastError, attempt + 1)) break;\n\n const delayMs = computeDelay({ backoff, baseDelayMs, maxDelayMs, jitter }, attempt + 1);\n onRetry?.(lastError, attempt + 1, delayMs);\n await sleep(delayMs);\n }\n }\n\n throw lastError!;\n}\n\n// ─── retryable ─────────────────────────────────────────────────────\n\n/**\n * Wrap an agent's run method with retry logic. Returns a function\n * that accepts a prompt and returns an AgentResult.\n *\n * @example\n * const run = retryable(agent, { maxRetries: 5 });\n * const result = await run(\"Hello\");\n */\nexport function retryable(\n agent: Agent,\n config?: RetryConfig\n): (prompt: string | Message[]) => Promise<AgentResult> {\n return (prompt) => withRetry(() => agent.run(prompt), config);\n}\n","/**\n * Structured Output — validate and extract typed JSON from LLM responses.\n *\n * @example\n * import { structured, zodSchema } from \"gauss-ts\";\n *\n * const result = await structured(agent, \"List 3 fruits\", {\n * schema: { type: \"object\", properties: { fruits: { type: \"array\", items: { type: \"string\" } } } },\n * });\n * console.log(result.data.fruits); // [\"apple\", \"banana\", \"cherry\"]\n */\n\nimport type { Agent } from \"./agent.js\";\nimport type { AgentResult, Message } from \"./types.js\";\n\n// ─── Types ─────────────────────────────────────────────────────────\n\n/** JSON Schema subset for structured output. */\nexport interface JsonSchema {\n type: string;\n properties?: Record<string, JsonSchema>;\n items?: JsonSchema;\n required?: string[];\n enum?: unknown[];\n description?: string;\n [key: string]: unknown;\n}\n\nexport interface StructuredConfig {\n /** JSON schema the output must conform to. */\n schema: JsonSchema;\n /** Maximum parse retries if the model returns invalid JSON (default: 2). */\n maxParseRetries?: number;\n /** If true, include the raw AgentResult alongside parsed data. */\n includeRaw?: boolean;\n}\n\nexport interface StructuredResult<T = unknown> {\n /** Parsed and validated data. */\n data: T;\n /** Raw agent result (only if includeRaw was true). */\n raw?: AgentResult;\n}\n\n// ─── Implementation ────────────────────────────────────────────────\n\nfunction buildStructuredPrompt(userPrompt: string, schema: JsonSchema): string {\n const schemaStr = JSON.stringify(schema, null, 2);\n return `${userPrompt}\\n\\nRespond ONLY with valid JSON matching this schema:\\n${schemaStr}\\n\\nDo not include any text outside the JSON object.`;\n}\n\nfunction extractJson(text: string): string {\n // Try to extract JSON from markdown code blocks first\n const codeBlockMatch = text.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)\\n?\\s*```/);\n if (codeBlockMatch) return codeBlockMatch[1].trim();\n\n // Try to find first { or [\n const objStart = text.indexOf(\"{\");\n const arrStart = text.indexOf(\"[\");\n\n if (objStart === -1 && arrStart === -1) return text.trim();\n\n const start = objStart === -1 ? arrStart\n : arrStart === -1 ? objStart\n : Math.min(objStart, arrStart);\n\n const isArray = text[start] === \"[\";\n const closer = isArray ? \"]\" : \"}\";\n\n // Find matching closer by counting nesting\n let depth = 0;\n let inString = false;\n let escape = false;\n\n for (let i = start; i < text.length; i++) {\n const ch = text[i];\n\n if (escape) {\n escape = false;\n continue;\n }\n if (ch === \"\\\\\") {\n escape = true;\n continue;\n }\n if (ch === '\"') {\n inString = !inString;\n continue;\n }\n if (inString) continue;\n\n if (ch === text[start]) depth++;\n if (ch === closer) {\n depth--;\n if (depth === 0) return text.slice(start, i + 1);\n }\n }\n\n return text.slice(start);\n}\n\n/**\n * Run an agent with structured output extraction.\n *\n * Automatically instructs the model to output JSON matching the schema,\n * extracts and parses the JSON from the response, and retries on parse failure.\n *\n * @example\n * const { data } = await structured(agent, \"List 3 programming languages\", {\n * schema: {\n * type: \"object\",\n * properties: {\n * languages: { type: \"array\", items: { type: \"string\" } }\n * },\n * required: [\"languages\"]\n * }\n * });\n * console.log(data.languages);\n */\nexport async function structured<T = unknown>(\n agent: Agent,\n prompt: string | Message[],\n config: StructuredConfig\n): Promise<StructuredResult<T>> {\n const maxParseRetries = config.maxParseRetries ?? 2;\n const schemaPrompt = typeof prompt === \"string\"\n ? buildStructuredPrompt(prompt, config.schema)\n : prompt;\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxParseRetries; attempt++) {\n const input = attempt === 0\n ? schemaPrompt\n : typeof schemaPrompt === \"string\"\n ? `${schemaPrompt}\\n\\nPrevious attempt failed: ${lastError?.message}. Please output ONLY valid JSON.`\n : schemaPrompt;\n\n const result = await agent.run(input);\n\n try {\n const jsonStr = extractJson(result.text);\n const data = JSON.parse(jsonStr) as T;\n return {\n data,\n raw: config.includeRaw ? result : undefined,\n };\n } catch (err) {\n lastError = err instanceof Error ? err : new Error(String(err));\n }\n }\n\n throw new Error(\n `Failed to extract structured output after ${maxParseRetries + 1} attempts: ${lastError?.message}`\n );\n}\n","/**\n * Prompt Templates — composable, type-safe prompt construction.\n *\n * @example\n * import { template, PromptTemplate } from \"gauss-ts\";\n *\n * const summarize = template(\"Summarize the following {{format}}:\\n\\n{{text}}\");\n * const prompt = summarize({ format: \"article\", text: \"Lorem ipsum...\" });\n *\n * // Composition:\n * const withTone = template(\"{{base}}\\n\\nUse a {{tone}} tone.\");\n * const prompt = withTone({\n * base: summarize({ format: \"article\", text: \"...\" }),\n * tone: \"professional\",\n * });\n */\n\n// ─── Types ─────────────────────────────────────────────────────────\n\n/** Extract variable names from a template string. */\ntype ExtractVars<T extends string> =\n T extends `${string}{{${infer Var}}}${infer Rest}`\n ? Var | ExtractVars<Rest>\n : never;\n\n/** Variables object for a template. */\ntype TemplateVars<T extends string> = Record<ExtractVars<T>, string>;\n\n/** A compiled prompt template function. */\nexport interface PromptTemplate<T extends string = string> {\n /** Render the template with variables. */\n (vars: TemplateVars<T>): string;\n /** The raw template string. */\n readonly raw: string;\n /** List of variable names in the template. */\n readonly variables: string[];\n}\n\n// ─── Implementation ────────────────────────────────────────────────\n\nconst VAR_PATTERN = /\\{\\{(\\w+)\\}\\}/g;\n\n/**\n * Create a reusable prompt template with `{{variable}}` placeholders.\n *\n * @example\n * const t = template(\"Hello {{name}}, you are {{age}} years old.\");\n * t({ name: \"Alice\", age: \"30\" }); // \"Hello Alice, you are 30 years old.\"\n * t.variables; // [\"name\", \"age\"]\n */\nexport function template<T extends string>(templateStr: T): PromptTemplate<T> {\n const variables = [...new Set(\n Array.from(templateStr.matchAll(VAR_PATTERN), (m) => m[1])\n )];\n\n const fn = (vars: TemplateVars<T>): string => {\n return templateStr.replace(VAR_PATTERN, (_, key) => {\n const value = (vars as Record<string, string>)[key];\n if (value === undefined) {\n throw new Error(`Missing template variable: {{${key}}}`);\n }\n return value;\n });\n };\n\n Object.defineProperty(fn, \"raw\", { value: templateStr, enumerable: true });\n Object.defineProperty(fn, \"variables\", { value: variables, enumerable: true });\n\n return fn as PromptTemplate<T>;\n}\n\n// ─── Built-in templates ────────────────────────────────────────────\n\n/** Summarization template. */\nexport const summarize = template(\n \"Summarize the following {{format}} in {{style}}:\\n\\n{{text}}\"\n);\n\n/** Translation template. */\nexport const translate = template(\n \"Translate the following text to {{language}}:\\n\\n{{text}}\"\n);\n\n/** Code review template. */\nexport const codeReview = template(\n \"Review this {{language}} code for bugs, security issues, and best practices:\\n\\n```{{language}}\\n{{code}}\\n```\"\n);\n\n/** Classification template. */\nexport const classify = template(\n \"Classify the following text into one of these categories: {{categories}}\\n\\nText: {{text}}\\n\\nRespond with only the category name.\"\n);\n\n/** Extraction template. */\nexport const extract = template(\n \"Extract the following information from the text: {{fields}}\\n\\nText: {{text}}\\n\\nRespond as JSON.\"\n);\n","/**\n * AGENTS.MD and SKILL.MD parsers — parse agent/skill specifications from markdown.\n *\n * @example\n * ```ts\n * import { AgentSpec, SkillSpec, discoverAgents } from \"gauss-ts\";\n *\n * // Parse a single AGENTS.MD\n * const spec = AgentSpec.fromMarkdown(content);\n * console.log(spec.name, spec.tools);\n *\n * // Discover all agents in a directory tree\n * const agents = await discoverAgents(\"./agents\");\n *\n * // Parse a SKILL.MD\n * const skill = SkillSpec.fromMarkdown(skillContent);\n * console.log(skill.steps);\n * ```\n */\n\nimport {\n parseAgentsMd,\n discoverAgents as napiDiscoverAgents,\n parseSkillMd,\n} from \"gauss-napi\";\n\n// ─── Types ─────────────────────────────────────────────────────────\n\n/** Tool reference within an AGENTS.MD spec. */\nexport interface AgentToolSpec {\n name: string;\n description: string;\n parameters?: Record<string, unknown>;\n}\n\n/** Parsed agent specification from AGENTS.MD. */\nexport interface AgentSpecData {\n name: string;\n description: string;\n model?: string;\n provider?: string;\n instructions?: string;\n tools: AgentToolSpec[];\n skills: string[];\n capabilities: string[];\n environment: Array<[string, string]>;\n metadata: Record<string, unknown>;\n}\n\n/** Step within a SKILL.MD spec. */\nexport interface SkillStep {\n description: string;\n action?: string;\n}\n\n/** Input or output parameter in a SKILL.MD spec. */\nexport interface SkillParam {\n name: string;\n param_type: string;\n description: string;\n required: boolean;\n}\n\n/** Parsed skill specification from SKILL.MD. */\nexport interface SkillSpecData {\n name: string;\n description: string;\n steps: SkillStep[];\n inputs: SkillParam[];\n outputs: SkillParam[];\n}\n\n// ─── AgentSpec ─────────────────────────────────────────────────────\n\n/** Immutable parsed AGENTS.MD specification with a fluent API. */\nexport class AgentSpec {\n readonly name: string;\n readonly description: string;\n readonly model?: string;\n readonly provider?: string;\n readonly instructions?: string;\n readonly tools: readonly AgentToolSpec[];\n readonly skills: readonly string[];\n readonly capabilities: readonly string[];\n readonly environment: ReadonlyMap<string, string>;\n readonly metadata: Readonly<Record<string, unknown>>;\n\n private constructor(data: AgentSpecData) {\n this.name = data.name;\n this.description = data.description;\n this.model = data.model ?? undefined;\n this.provider = data.provider ?? undefined;\n this.instructions = data.instructions ?? undefined;\n this.tools = Object.freeze([...data.tools]);\n this.skills = Object.freeze([...data.skills]);\n this.capabilities = Object.freeze([...data.capabilities]);\n this.environment = new Map(data.environment);\n this.metadata = Object.freeze({ ...data.metadata });\n }\n\n /** Parse an AGENTS.MD markdown string into an AgentSpec. */\n static fromMarkdown(content: string): AgentSpec {\n const json = parseAgentsMd(content);\n const data: AgentSpecData = typeof json === \"string\" ? JSON.parse(json) : json;\n return new AgentSpec(data);\n }\n\n /** Check whether a specific tool is declared in this spec. */\n hasTool(name: string): boolean {\n return this.tools.some((t) => t.name === name);\n }\n\n /** Check whether a specific capability is declared. */\n hasCapability(name: string): boolean {\n return this.capabilities.includes(name);\n }\n\n /** Serialize back to a plain object. */\n toJSON(): AgentSpecData {\n return {\n name: this.name,\n description: this.description,\n model: this.model,\n provider: this.provider,\n instructions: this.instructions,\n tools: [...this.tools],\n skills: [...this.skills],\n capabilities: [...this.capabilities],\n environment: [...this.environment.entries()],\n metadata: { ...this.metadata },\n };\n }\n}\n\n// ─── SkillSpec ─────────────────────────────────────────────────────\n\n/** Immutable parsed SKILL.MD specification with a fluent API. */\nexport class SkillSpec {\n readonly name: string;\n readonly description: string;\n readonly steps: readonly SkillStep[];\n readonly inputs: readonly SkillParam[];\n readonly outputs: readonly SkillParam[];\n\n private constructor(data: SkillSpecData) {\n this.name = data.name;\n this.description = data.description;\n this.steps = Object.freeze([...data.steps]);\n this.inputs = Object.freeze([...data.inputs]);\n this.outputs = Object.freeze([...data.outputs]);\n }\n\n /** Parse a SKILL.MD markdown string into a SkillSpec. */\n static fromMarkdown(content: string): SkillSpec {\n const json = parseSkillMd(content);\n const data: SkillSpecData = typeof json === \"string\" ? JSON.parse(json) : json;\n return new SkillSpec(data);\n }\n\n /** Get the total number of steps. */\n get stepCount(): number {\n return this.steps.length;\n }\n\n /** Get all required inputs. */\n get requiredInputs(): readonly SkillParam[] {\n return this.inputs.filter((p) => p.required);\n }\n\n /** Serialize back to a plain object. */\n toJSON(): SkillSpecData {\n return {\n name: this.name,\n description: this.description,\n steps: [...this.steps],\n inputs: [...this.inputs],\n outputs: [...this.outputs],\n };\n }\n}\n\n// ─── Discovery ─────────────────────────────────────────────────────\n\n/** Discover all AGENTS.MD files in a directory tree and parse them. */\nexport function discoverAgents(dir: string): AgentSpec[] {\n const json = napiDiscoverAgents(dir);\n const list: AgentSpecData[] = typeof json === \"string\" ? JSON.parse(json) : json;\n return list.map((data) => {\n // Re-use the private constructor via fromMarkdown won't work here,\n // so we create via toJSON round-trip\n return Object.assign(Object.create(AgentSpec.prototype), {\n name: data.name,\n description: data.description,\n model: data.model ?? undefined,\n provider: data.provider ?? undefined,\n instructions: data.instructions ?? undefined,\n tools: Object.freeze([...data.tools]),\n skills: Object.freeze([...data.skills]),\n capabilities: Object.freeze([...data.capabilities]),\n environment: new Map(data.environment),\n metadata: Object.freeze({ ...data.metadata }),\n }) as AgentSpec;\n });\n}\n","/**\n * Pipeline — compose agent operations into clean data flows.\n *\n * @example\n * import { pipe, map, filter, tap } from \"gauss-ts\";\n *\n * const result = await pipe(\n * [\"apple\", \"banana\", \"cherry\"],\n * map(fruit => agent.run(`Describe ${fruit}`)),\n * filter(r => r.text.length > 50),\n * tap(r => console.log(r.text)),\n * );\n */\n\n// ─── Types ─────────────────────────────────────────────────────────\n\n/** An async transform step in a pipeline. */\nexport type PipeStep<I, O> = (input: I) => Promise<O> | O;\n\n// ─── pipe ──────────────────────────────────────────────────────────\n\n/**\n * Compose async operations into a pipeline.\n *\n * @example\n * const result = await pipe(\n * \"Hello\",\n * (s) => agent.run(s),\n * (r) => r.text.toUpperCase(),\n * );\n */\nexport async function pipe<A>(input: A): Promise<A>;\nexport async function pipe<A, B>(input: A, s1: PipeStep<A, B>): Promise<B>;\nexport async function pipe<A, B, C>(input: A, s1: PipeStep<A, B>, s2: PipeStep<B, C>): Promise<C>;\nexport async function pipe<A, B, C, D>(input: A, s1: PipeStep<A, B>, s2: PipeStep<B, C>, s3: PipeStep<C, D>): Promise<D>;\nexport async function pipe<A, B, C, D, E>(input: A, s1: PipeStep<A, B>, s2: PipeStep<B, C>, s3: PipeStep<C, D>, s4: PipeStep<D, E>): Promise<E>;\nexport async function pipe(input: unknown, ...steps: PipeStep<unknown, unknown>[]): Promise<unknown> {\n let result = input;\n for (const step of steps) {\n result = await step(result);\n }\n return result;\n}\n\n// ─── Async collection helpers ──────────────────────────────────────\n\n/**\n * Map an async function over an array with concurrency control.\n *\n * @example\n * const results = await mapAsync(\n * [\"a\", \"b\", \"c\"],\n * (item) => agent.run(item),\n * { concurrency: 2 }\n * );\n */\nexport async function mapAsync<T, R>(\n items: T[],\n fn: (item: T, index: number) => Promise<R>,\n options?: { concurrency?: number }\n): Promise<R[]> {\n const concurrency = options?.concurrency ?? items.length;\n const results: R[] = new Array(items.length);\n const queue = items.map((item, index) => ({ item, index }));\n\n const workers = Array.from({ length: Math.min(concurrency, queue.length) }, async () => {\n while (queue.length > 0) {\n const entry = queue.shift();\n if (!entry) break;\n results[entry.index] = await fn(entry.item, entry.index);\n }\n });\n\n await Promise.all(workers);\n return results;\n}\n\n/**\n * Filter items using an async predicate with concurrency control.\n *\n * @example\n * const valid = await filterAsync(items, async (item) => {\n * const result = await agent.run(`Is \"${item}\" valid?`);\n * return result.text.includes(\"yes\");\n * });\n */\nexport async function filterAsync<T>(\n items: T[],\n predicate: (item: T, index: number) => Promise<boolean>,\n options?: { concurrency?: number }\n): Promise<T[]> {\n const flags = await mapAsync(items, predicate, options);\n return items.filter((_, i) => flags[i]);\n}\n\n/**\n * Reduce items using an async reducer (sequential).\n *\n * @example\n * const summary = await reduceAsync(\n * documents,\n * async (acc, doc) => {\n * const result = await agent.run(`Combine: ${acc}\\n\\nNew: ${doc}`);\n * return result.text;\n * },\n * \"\"\n * );\n */\nexport async function reduceAsync<T, R>(\n items: T[],\n reducer: (accumulator: R, item: T, index: number) => Promise<R>,\n initial: R\n): Promise<R> {\n let result = initial;\n for (let i = 0; i < items.length; i++) {\n result = await reducer(result, items[i], i);\n }\n return result;\n}\n\n/**\n * Execute a side-effect for each item (sequential). Returns input unchanged.\n * Useful in pipelines for logging or monitoring.\n *\n * @example\n * await tapAsync(results, async (r) => console.log(r.text));\n */\nexport async function tapAsync<T>(\n items: T[],\n fn: (item: T, index: number) => Promise<void> | void\n): Promise<T[]> {\n for (let i = 0; i < items.length; i++) {\n await fn(items[i], i);\n }\n return items;\n}\n\n// ─── Compose ───────────────────────────────────────────────────────\n\n/**\n * Compose multiple middleware-style functions into one.\n *\n * @example\n * const enhance = compose(\n * async (text) => `[System] ${text}`,\n * async (text) => text.trim(),\n * );\n * const result = await enhance(\" hello \");\n * // → \"[System] hello\"\n */\nexport function compose<T>(...fns: PipeStep<T, T>[]): PipeStep<T, T> {\n return async (input: T): Promise<T> => {\n let result = input;\n for (const fn of fns) {\n result = await fn(result);\n }\n return result;\n };\n}\n","/**\n * A2A (Agent-to-Agent) Protocol SDK for TypeScript.\n *\n * Provides a high-level, developer-friendly client for interacting with\n * A2A-compliant agents over HTTP using JSON-RPC 2.0.\n *\n * @example\n * ```ts\n * const client = new A2aClient('http://localhost:8080');\n * const card = await client.discover();\n * const response = await client.ask('What is the weather?');\n * ```\n */\n\nimport {\n a2aDiscover,\n a2aSendMessage,\n a2aAsk,\n a2aGetTask,\n a2aCancelTask,\n} from 'gauss-napi';\n\n// ── Types ────────────────────────────────────────────────────────────────────\n\n/** A2A message role. */\nexport type A2aMessageRole = 'user' | 'agent';\n\n/** Content part within a message. */\nexport interface Part {\n type: 'text' | 'file' | 'data';\n text?: string;\n mimeType?: string;\n data?: unknown;\n file?: { name?: string; mimeType?: string; bytes?: string; uri?: string };\n metadata?: Record<string, unknown>;\n}\n\n/** A single A2A message. */\nexport interface A2aMessage {\n role: A2aMessageRole;\n parts: Part[];\n metadata?: Record<string, unknown>;\n}\n\n/** Task state in the A2A lifecycle. */\nexport type TaskState =\n | 'submitted'\n | 'working'\n | 'input-required'\n | 'completed'\n | 'canceled'\n | 'failed'\n | 'unknown';\n\n/** Task status with optional message. */\nexport interface TaskStatus {\n state: TaskState;\n message?: A2aMessage;\n timestamp?: string;\n}\n\n/** An A2A task. */\nexport interface Task {\n id: string;\n sessionId?: string;\n status: TaskStatus;\n artifacts?: Artifact[];\n history?: A2aMessage[];\n metadata?: Record<string, unknown>;\n}\n\n/** An artifact produced by an agent. */\nexport interface Artifact {\n name?: string;\n description?: string;\n parts: Part[];\n index?: number;\n append?: boolean;\n lastChunk?: boolean;\n metadata?: Record<string, unknown>;\n}\n\n/** Agent capability declaration. */\nexport interface AgentCapabilities {\n streaming?: boolean;\n pushNotifications?: boolean;\n stateTransitionHistory?: boolean;\n}\n\n/** Skill declared in an AgentCard. */\nexport interface AgentSkill {\n id: string;\n name: string;\n description?: string;\n tags?: string[];\n examples?: string[];\n inputModes?: string[];\n outputModes?: string[];\n}\n\n/** Agent Card — served at /.well-known/agent.json */\nexport interface AgentCard {\n name: string;\n description?: string;\n url: string;\n version?: string;\n documentationUrl?: string;\n capabilities?: AgentCapabilities;\n skills?: AgentSkill[];\n defaultInputModes?: string[];\n defaultOutputModes?: string[];\n provider?: { organization?: string; url?: string };\n authentication?: { schemes?: string[]; credentials?: string };\n}\n\n/** Configuration for sending a message. */\nexport interface MessageSendConfig {\n acceptedOutputModes?: string[];\n pushNotificationConfig?: {\n url: string;\n token?: string;\n authentication?: { schemes?: string[]; credentials?: string };\n };\n historyLength?: number;\n blocking?: boolean;\n}\n\n/** Result of sending a message — either a Task or a Message. */\nexport type SendMessageResult =\n | { type: 'task'; task: Task }\n | { type: 'message'; message: A2aMessage };\n\n// ── Client ───────────────────────────────────────────────────────────────────\n\n/** Options for creating an A2aClient. */\nexport interface A2aClientOptions {\n /** Base URL of the A2A agent (e.g., 'http://localhost:8080'). */\n baseUrl: string;\n /** Optional Bearer token for authentication. */\n authToken?: string;\n}\n\n/**\n * Client for communicating with A2A-compliant agents.\n *\n * @example\n * ```ts\n * const client = new A2aClient({ baseUrl: 'http://localhost:8080' });\n *\n * // Discover agent capabilities\n * const card = await client.discover();\n * console.log(card.name, card.skills);\n *\n * // Quick ask (text in → text out)\n * const answer = await client.ask('Summarize this document.');\n *\n * // Full message exchange\n * const result = await client.sendMessage({\n * role: 'user',\n * parts: [{ type: 'text', text: 'Hello!' }],\n * });\n *\n * // Get task status\n * const task = await client.getTask('task-123');\n *\n * // Cancel a task\n * await client.cancelTask('task-123');\n * ```\n */\nexport class A2aClient {\n private readonly baseUrl: string;\n private readonly authToken?: string;\n\n constructor(options: A2aClientOptions | string) {\n if (typeof options === 'string') {\n this.baseUrl = options;\n } else {\n this.baseUrl = options.baseUrl;\n this.authToken = options.authToken;\n }\n }\n\n /**\n * Discover the remote agent's capabilities by fetching its AgentCard.\n * The card is served at `/.well-known/agent.json`.\n */\n async discover(): Promise<AgentCard> {\n const raw = await a2aDiscover(this.baseUrl, this.authToken ?? undefined);\n return raw as AgentCard;\n }\n\n /**\n * Send a message to the agent and receive either a Task or a Message.\n */\n async sendMessage(\n message: A2aMessage,\n config?: MessageSendConfig,\n ): Promise<SendMessageResult> {\n const raw = await a2aSendMessage(\n this.baseUrl,\n this.authToken ?? undefined,\n JSON.stringify(message),\n config ? JSON.stringify(config) : undefined,\n );\n if (raw._type === 'task') {\n const { _type, ...task } = raw;\n return { type: 'task', task: task as Task };\n }\n const { _type, ...msg } = raw;\n return { type: 'message', message: msg as A2aMessage };\n }\n\n /**\n * Quick helper: send a text message and get a text response.\n * Sends the text, polls until the task completes, and returns the final text.\n */\n async ask(text: string): Promise<string> {\n return a2aAsk(this.baseUrl, this.authToken ?? undefined, text);\n }\n\n /**\n * Get a task by its ID.\n * @param taskId - The task identifier.\n * @param historyLength - Optional number of history messages to include.\n */\n async getTask(taskId: string, historyLength?: number): Promise<Task> {\n const raw = await a2aGetTask(\n this.baseUrl,\n this.authToken ?? undefined,\n taskId,\n historyLength ?? undefined,\n );\n return raw as Task;\n }\n\n /**\n * Cancel a running task.\n * @param taskId - The task identifier to cancel.\n */\n async cancelTask(taskId: string): Promise<Task> {\n const raw = await a2aCancelTask(\n this.baseUrl,\n this.authToken ?? undefined,\n taskId,\n );\n return raw as Task;\n }\n}\n\n// ── Helper Builders ──────────────────────────────────────────────────────────\n\n/** Create a text message. */\nexport function textMessage(\n role: A2aMessageRole,\n text: string,\n): A2aMessage {\n return { role, parts: [{ type: 'text', text }] };\n}\n\n/** Create a user text message. */\nexport function userMessage(text: string): A2aMessage {\n return textMessage('user', text);\n}\n\n/** Create an agent text message. */\nexport function agentMessage(text: string): A2aMessage {\n return textMessage('agent', text);\n}\n\n/** Extract all text from a message's parts. */\nexport function extractText(message: A2aMessage): string {\n return message.parts\n .filter((p) => p.type === 'text' && p.text)\n .map((p) => p.text!)\n .join('');\n}\n\n/** Extract text from a task's latest status message. */\nexport function taskText(task: Task): string | undefined {\n if (task.status.message) {\n return extractText(task.status.message);\n }\n return undefined;\n}\n","/**\n * ToolRegistry SDK — searchable tool registry with tags, examples, and batch execution.\n */\nimport {\n createToolRegistry,\n toolRegistryAdd,\n toolRegistrySearch,\n toolRegistryByTag,\n toolRegistryList,\n destroyToolRegistry,\n} from \"gauss-napi\";\n\nimport type { Handle, Disposable } from \"./types.js\";\n\n// ── Types ───────────────────────────────────────────────────────\n\nexport interface ToolExample {\n description: string;\n input: unknown;\n expectedOutput?: unknown;\n}\n\nexport interface ToolRegistryEntry {\n name: string;\n description: string;\n tags?: string[];\n examples?: ToolExample[];\n}\n\nexport interface ToolSearchResult {\n name: string;\n description: string;\n tags: string[];\n}\n\n// ── ToolRegistry Class ──────────────────────────────────────────\n\nexport class ToolRegistry implements Disposable {\n private readonly _handle: Handle;\n private disposed = false;\n\n constructor() {\n this._handle = createToolRegistry();\n }\n\n get handle(): Handle {\n return this._handle;\n }\n\n /** Register a tool with optional tags and examples. */\n add(entry: ToolRegistryEntry): this {\n this.assertNotDisposed();\n toolRegistryAdd(this._handle, JSON.stringify(entry));\n return this;\n }\n\n /** Search tools by query (matches name, description, tags). */\n search(query: string): ToolSearchResult[] {\n this.assertNotDisposed();\n return toolRegistrySearch(this._handle, query) as ToolSearchResult[];\n }\n\n /** Find tools by tag. */\n byTag(tag: string): ToolSearchResult[] {\n this.assertNotDisposed();\n return toolRegistryByTag(this._handle, tag) as ToolSearchResult[];\n }\n\n /** List all registered tools. */\n list(): ToolRegistryEntry[] {\n this.assertNotDisposed();\n return toolRegistryList(this._handle) as ToolRegistryEntry[];\n }\n\n destroy(): void {\n if (!this.disposed) {\n this.disposed = true;\n try {\n destroyToolRegistry(this._handle);\n } catch {\n // Already destroyed.\n }\n }\n }\n\n [Symbol.dispose](): void {\n this.destroy();\n }\n\n private assertNotDisposed(): void {\n if (this.disposed) {\n throw new Error(\"ToolRegistry has been destroyed\");\n }\n }\n}\n"],"mappings":"ubAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,eAAAE,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,sBAAAC,GAAA,UAAAC,EAAA,cAAAC,EAAA,gBAAAC,EAAA,oBAAAC,EAAA,oBAAAC,EAAA,qBAAAC,GAAA,uBAAAC,GAAA,eAAAC,GAAA,sBAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,mBAAAC,GAAA,UAAAC,EAAA,mBAAAC,EAAA,oBAAAC,GAAA,cAAAC,EAAA,WAAAC,EAAA,oBAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,gBAAAC,GAAA,iBAAAC,GAAA,qBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,sBAAAC,EAAA,mBAAAC,EAAA,cAAAC,GAAA,qBAAAC,GAAA,SAAAC,EAAA,cAAAC,GAAA,iBAAAC,GAAA,kBAAAC,GAAA,gBAAAC,EAAA,aAAAC,EAAA,gBAAAC,GAAA,iBAAAC,GAAA,sBAAAC,GAAA,UAAAC,GAAA,aAAAC,GAAA,eAAAC,GAAA,YAAAC,GAAA,uBAAAC,GAAA,gBAAAC,GAAA,wBAAAC,GAAA,yBAAAC,GAAA,2BAAAC,GAAA,yBAAAC,GAAA,4BAAAC,GAAA,iBAAAC,GAAA,mBAAAC,EAAA,mBAAAC,GAAA,qBAAAC,GAAA,kBAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,YAAAC,GAAA,gBAAAC,GAAA,gBAAAC,GAAA,UAAAC,GAAA,kBAAAC,GAAA,yBAAAC,GAAA,aAAAC,GAAA,qBAAAC,GAAA,qBAAAC,GAAA,SAAAC,GAAA,gBAAAC,GAAA,kBAAAC,EAAA,eAAAC,GAAA,cAAAC,GAAA,eAAAC,GAAA,cAAAC,GAAA,aAAAC,GAAA,aAAAC,GAAA,aAAAC,EAAA,gBAAAC,GAAA,cAAAC,GAAA,gBAAAC,GAAA,qCAAAC,KAAA,eAAAC,GAAArF,ICQO,IAAMsF,EAAiB,UACjBC,GAAc,UACdC,GAAmB,UACnBC,GAAe,cAGfC,GAAoB,2BACpBC,GAAiB,0BACjBC,GAAoB,yBAGpBC,GAAiB,mBACjBC,GAAiB,iBACjBC,GAAe,mBAGfC,GAAqB,iBAGrBC,GAAmB,gBACnBC,GAAqB,oBAGrBC,GAAmB,0CACnBC,GAAoB,oDACpBC,GAAkB,uBAClBC,GAAqB,YACrBC,GAAc,cAGdC,EAA4C,CACvD,OAAQlB,EACR,UAAWI,GACX,OAAQG,GACR,WAAYG,GACZ,SAAUC,GACV,KAAM,0BACN,OAAQ,WACR,SAAUE,GACV,UAAWC,GACX,QAASC,GACT,WAAYC,GACZ,IAAKC,EACP,EAGO,SAASE,GAAaC,EAA0B,CACrD,OAAOF,EAAkBE,CAAQ,GAAKpB,CACxC,CC6PA,IAAMqB,GAAmC,CACvC,OAAQ,iBACR,UAAW,oBACX,OAAQ,iBACR,KAAM,eACN,SAAU,mBACV,WAAY,qBACZ,SAAU,mBACV,UAAW,oBACX,QAAS,kBACT,WAAY,qBACZ,IAAK,cACL,OAAQ,EACV,EAGO,SAASC,EAAcC,EAAgC,CAC5D,IAAMC,EAAMH,GAASE,CAAQ,GAAK,GAClC,OAAKC,GACG,OAAO,QAAY,IAAc,QAAQ,IAAIA,CAAG,EAAI,KAAO,GADlD,EAEnB,CAGO,SAASC,GAAwE,CACtF,IAAMC,EAAyD,CAC7D,CAAE,IAAK,iBAAkB,SAAU,QAAS,EAC5C,CAAE,IAAK,oBAAqB,SAAU,WAAY,EAClD,CAAE,IAAK,iBAAkB,SAAU,QAAS,EAC5C,CAAE,IAAK,eAAgB,SAAU,MAAO,EACxC,CAAE,IAAK,mBAAoB,SAAU,UAAW,EAChD,CAAE,IAAK,qBAAsB,SAAU,YAAa,EACpD,CAAE,IAAK,mBAAoB,SAAU,UAAW,EAChD,CAAE,IAAK,oBAAqB,SAAU,WAAY,EAClD,CAAE,IAAK,kBAAmB,SAAU,SAAU,EAC9C,CAAE,IAAK,qBAAsB,SAAU,YAAa,EACpD,CAAE,IAAK,cAAe,SAAU,KAAM,CACxC,EACA,OAAW,CAAE,IAAAC,EAAK,SAAAJ,CAAS,IAAKG,EAC9B,GAAI,OAAO,QAAY,KAAe,QAAQ,IAAIC,CAAG,EACnD,MAAO,CAAE,SAAAJ,EAAU,MAAOK,EAAkBL,CAAQ,CAAE,CAI5D,CC7UA,IAAAM,EASO,sBClBP,IAAAC,GAAgD,sBAkBhD,SAASC,GAAYC,EAAuB,CAC1C,MAAO,CACL,GAAGA,EACH,UAAWA,EAAI,WAAW,IAAKC,IAAY,CACzC,KAAMA,EAAE,cAAgBA,EAAE,KAC1B,UAAWA,EAAE,UACb,cAAeA,EAAE,cACjB,MAAOA,EAAE,MACT,IAAKA,EAAE,GACT,EAAE,CACJ,CACF,CA6CO,IAAMC,EAAN,KAAwD,CAiB7D,YACmBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACjB,CANiB,eAAAL,EACA,oBAAAC,EACA,WAAAC,EACA,cAAAC,EACA,aAAAC,EACA,kBAAAC,CAChB,CAvBK,QA2CR,IAAI,QAAkC,CAAE,OAAO,KAAK,OAAS,CAY7D,OAAQ,OAAO,aAAa,GAAgC,CAC1D,IAAMC,EAAwB,CAAC,EAC3BC,EACAC,EAAO,GAELC,EAAWC,GAAiB,CAChC,GAAI,CACFJ,EAAO,KAAK,KAAK,MAAMI,CAAI,CAAgB,CAC7C,MAAQ,CACNJ,EAAO,KAAK,CAAE,KAAM,MAAO,KAAMI,CAAK,CAAC,CACzC,CACAH,IAAU,CACZ,EAEMI,KAAa,oCACjB,KAAK,UACL,KAAK,eACL,KAAK,MACL,KAAK,SACL,KAAK,QACLF,EACA,KAAK,YACP,EAAE,KAAMG,GAAM,CACZ,KAAK,QAAUhB,GAAYgB,CAAC,EAC5BJ,EAAO,GACPD,IAAU,CACZ,CAAC,EAED,KAAO,CAACC,GAAQF,EAAO,OAAS,GAC1BA,EAAO,OAAS,EAClB,MAAMA,EAAO,MAAM,EACTE,GACV,MAAM,IAAI,QAAeI,GAAM,CAAEL,EAAUK,CAAG,CAAC,EAInD,MAAMD,CACR,CACF,EDzHA,SAASE,GAAYC,EAAuB,CAC1C,MAAO,CACL,GAAGA,EACH,UAAWA,EAAI,WAAW,IAAKC,IAAY,CACzC,KAAMA,EAAE,cAAgBA,EAAE,KAC1B,UAAWA,EAAE,UACb,cAAeA,EAAE,cACjB,MAAOA,EAAE,MACT,IAAKA,EAAE,GACT,EAAE,CACJ,CACF,CA4GO,IAAMC,EAAN,KAAkC,CACtB,eACA,MACA,UACA,OACA,cACT,OAAoB,CAAC,EACrB,SAAyB,CAAC,EAC1B,SAAW,GAmBnB,YAAYC,EAAsB,CAAC,EAAG,CACpC,IAAMC,EAAWC,EAAe,EAChC,KAAK,UAAYF,EAAO,UAAYC,GAAU,UAAY,SAC1D,KAAK,OAASD,EAAO,OAASC,GAAU,OAASE,EACjD,KAAK,MAAQH,EAAO,MAAQ,QAC5B,KAAK,cAAgBA,EAAO,cAAgB,GAE5C,IAAMI,EACJJ,EAAO,iBAAiB,QAAUK,EAAc,KAAK,SAAS,EAChE,KAAK,kBAAiB,mBAAgB,KAAK,UAAW,KAAK,OAAQ,CACjE,OAAAD,EACA,GAAGJ,EAAO,eACZ,CAAC,EAEGA,EAAO,QAAO,KAAK,OAAS,CAAC,GAAGA,EAAO,KAAK,GAEhD,IAAMM,EAAQN,EAAO,cACfO,EAAgBD,IAAU,GAC5B,CAAE,OAAQ,GAAM,WAAY,GAAM,KAAM,EAAK,EAC7CA,GAAS,OAEb,KAAK,SAAW,CACd,aAAc,KAAK,eAAiB,OACpC,YAAaN,EAAO,YACpB,SAAUA,EAAO,SACjB,KAAMA,EAAO,KACb,UAAWA,EAAO,UAClB,KAAMA,EAAO,KACb,WAAYA,EAAO,WACnB,aAAcA,EAAO,aACrB,eAAgBA,EAAO,eACvB,gBAAiBA,EAAO,gBACxB,aAAcA,EAAO,aACrB,cAAAO,EACA,UAAWP,EAAO,UAClB,oBAAqBA,EAAO,oBAC5B,mBAAoBA,EAAO,kBAC7B,CACF,CAQA,IAAI,MAAe,CAAE,OAAO,KAAK,KAAO,CAMxC,IAAI,UAAyB,CAAE,OAAO,KAAK,SAAW,CAMtD,IAAI,OAAgB,CAAE,OAAO,KAAK,MAAQ,CAM1C,IAAI,cAAuB,CAAE,OAAO,KAAK,aAAe,CAOxD,IAAI,QAAiB,CAAE,OAAO,KAAK,cAAgB,CAOnD,IAAI,cAA0D,CAC5D,SAAO,6BAA0B,KAAK,cAAc,CACtD,CAmBA,QAAQQ,EAAqB,CAC3B,YAAK,OAAO,KAAKA,CAAI,EACd,IACT,CAoBA,SAASC,EAAwB,CAC/B,YAAK,OAAO,KAAK,GAAGA,CAAK,EAClB,IACT,CAiBA,WAAWC,EAAsC,CAC/C,YAAK,SAAW,CAAE,GAAG,KAAK,SAAU,GAAGA,CAAQ,EACxC,IACT,CAuBA,MAAM,IAAIC,EAAiD,CACzD,KAAK,kBAAkB,EACvB,IAAMC,EAAW,OAAOD,GAAU,SAC9B,CAAC,CAAE,KAAM,OAAiB,QAASA,CAAM,CAAC,EAC1CA,EACJ,OAAOf,GAAY,QAAM,aACvB,KAAK,MACL,KAAK,eACL,KAAK,OACLgB,EACA,KAAK,QACP,CAAC,CACH,CAwBA,MAAM,aACJD,EACAE,EACsB,CACtB,KAAK,kBAAkB,EACvB,IAAMD,EAAW,OAAOD,GAAU,SAC9B,CAAC,CAAE,KAAM,OAAiB,QAASA,CAAM,CAAC,EAC1CA,EACJ,OAAOf,GAAY,QAAM,gCACvB,KAAK,MACL,KAAK,eACL,KAAK,OACLgB,EACA,KAAK,SACLC,CACF,CAAC,CACH,CAwBA,MAAM,OACJF,EACAG,EACAD,EACsB,CACtB,KAAK,kBAAkB,EACvB,IAAMD,EAAW,OAAOD,GAAU,SAC9B,CAAC,CAAE,KAAM,OAAiB,QAASA,CAAM,CAAC,EAC1CA,EACJ,OAAOf,GAAY,QAAM,mCACvB,KAAK,MACL,KAAK,eACL,KAAK,OACLgB,EACA,KAAK,SACLE,EACAD,GAAgBE,EAClB,CAAC,CACH,CAyBA,WACEJ,EACAE,EACa,CACb,KAAK,kBAAkB,EACvB,IAAMD,EAAW,OAAOD,GAAU,SAC9B,CAAC,CAAE,KAAM,OAAiB,QAASA,CAAM,CAAC,EAC1CA,EACJ,OAAO,IAAIK,EACT,KAAK,MACL,KAAK,eACL,KAAK,OACLJ,EACA,KAAK,SACLC,GAAgBE,EAClB,CACF,CAqBA,MAAM,SACJJ,EACAD,EACkB,CAClB,KAAK,kBAAkB,EACvB,IAAME,EAAW,OAAOD,GAAU,SAC9B,CAAC,CAAE,KAAM,OAAiB,QAASA,CAAM,CAAC,EAC1CA,EACJ,SAAO,YACL,KAAK,eACLC,EACAF,GAAS,YACTA,GAAS,SACX,CACF,CA0BA,MAAM,kBACJC,EACAF,EACAC,EACkB,CAClB,KAAK,kBAAkB,EACvB,IAAME,EAAW,OAAOD,GAAU,SAC9B,CAAC,CAAE,KAAM,OAAiB,QAASA,CAAM,CAAC,EAC1CA,EACJ,SAAO,uBACL,KAAK,eACLC,EACAH,EACAC,GAAS,YACTA,GAAS,SACX,CACF,CAaA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,oBAAiB,KAAK,cAAc,CACtC,MAAQ,CAER,CACF,CACF,CAeA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,UAAU,KAAK,KAAK,sBAAsB,CAE9D,CACF,EAGMK,GAAmC,SAAY,KAuBrD,eAAsBE,GACpBC,EACAlB,EACiB,CACjB,IAAMmB,EAAQ,IAAIpB,EAAM,CAAE,KAAM,QAAS,GAAGC,CAAO,CAAC,EACpD,GAAI,CAEF,OADe,MAAMmB,EAAM,IAAID,CAAM,GACvB,IAChB,QAAE,CACAC,EAAM,QAAQ,CAChB,CACF,CEjpBO,SAASC,GAAiBC,EAAkC,CAAC,EAAU,CAC5E,IAAMC,EAAUD,EAAO,iBAAiB,YAAcA,EAAO,SAAW,EAExE,OAAO,IAAIE,EAAM,CACf,GAAGF,EACH,KAAMA,EAAO,MAAQ,mBACrB,SAAUA,EAAO,UAAY,GAC7B,YAAaA,EAAO,aAAe,GACnC,aAAcA,EAAO,cAAgB,GACrC,gBAAiBA,EAAO,iBAAmB,SAC3C,gBAAiB,CACf,GAAGA,EAAO,gBACV,WAAYC,CACd,CACF,CAAC,CACH,CAKA,eAAsBE,GACpBC,EACAJ,EACiB,CACjB,IAAMK,EAAQN,GAAiBC,CAAM,EACrC,GAAI,CAEF,OADe,MAAMK,EAAM,IAAID,CAAM,GACvB,IAChB,QAAE,CACAC,EAAM,QAAQ,CAChB,CACF,CC4BA,eAAsBC,GACpBC,EACAC,EACsB,CACtB,GAAM,CAAE,YAAAC,EAAc,EAAG,GAAGC,CAAY,EAAIF,GAAU,CAAC,EACjDG,EAAqBJ,EAAQ,IAAKK,IAAW,CAAE,MAAAA,CAAM,EAAE,EAEvDC,EAAQ,IAAIC,EAAM,CAAE,KAAM,QAAS,GAAGJ,CAAY,CAAC,EACzD,GAAI,CACF,IAAMK,EAAQ,CAAC,GAAGJ,EAAM,QAAQ,CAAC,EAC3BK,EAAU,MAAM,KAAK,CAAE,OAAQ,KAAK,IAAIP,EAAaM,EAAM,MAAM,CAAE,EAAG,SAAY,CACtF,KAAOA,EAAM,OAAS,GAAG,CACvB,IAAME,EAAQF,EAAM,MAAM,EAC1B,GAAI,CAACE,EAAO,MACZ,GAAM,CAACC,EAAKC,CAAI,EAAIF,EACpB,GAAI,CACFN,EAAMO,CAAG,EAAE,OAAS,MAAML,EAAM,IAAIM,EAAK,KAAK,CAChD,OAASC,EAAK,CACZT,EAAMO,CAAG,EAAE,MAAQE,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CACvE,CACF,CACF,CAAC,EACD,MAAM,QAAQ,IAAIJ,CAAO,CAC3B,QAAE,CACAH,EAAM,QAAQ,CAChB,CACA,OAAOF,CACT,CCpFA,IAAAU,EAMO,sBAiIP,IAAAC,GAAwB,sBA9FxB,eAAsBC,GACpBC,EACAC,EACAC,EAC8B,CAC9B,SAAO,gBAAaF,EAAUC,EAAMC,GAAS,YAAaA,GAAS,WAAYA,GAAS,OAAO,CACjG,CAkBA,eAAsBC,IAAuC,CAC3D,SAAO,sBAAmB,CAC5B,CAmCA,eAAsBC,GACpBC,EACAH,EAGI,CAAC,EAC2B,CAChC,IAAMI,EAAWC,EAAe,EAC1BC,EAAeN,EAAQ,UAAYI,GAAU,UAAY,SACzDG,EAAQP,EAAQ,OAASI,GAAU,OAAS,WAC5CI,EAASR,EAAQ,iBAAiB,QAAUS,EAAcH,CAAY,EACtEI,KAAS,mBAAgBJ,EAAcC,EAAO,CAAE,OAAAC,EAAQ,GAAGR,EAAQ,eAAgB,CAAC,EAC1F,GAAI,CACF,OAAO,QAAM,kBACXU,EACAP,EACAH,EAAQ,MACRA,EAAQ,KACRA,EAAQ,QACRA,EAAQ,MACRA,EAAQ,YACRA,EAAQ,EACRA,EAAQ,cACV,CACF,QAAE,IACA,oBAAiBU,CAAM,CACzB,CACF,CCzIA,IAAAC,GAA2B,kBAC3BC,EAOO,sBAmBMC,EAAN,KAAmC,CACvB,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,iBAAc,CAC/B,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAKA,MAAM,MACJC,EACAC,EACAC,EACe,CACf,KAAK,kBAAkB,EACvB,IAAMC,EACJ,OAAOH,GAAgB,SACnB,CACE,MAAI,eAAW,EACf,QAASC,EACT,UAAYD,GAAmC,eAC/C,UAAW,IAAI,KAAK,EAAE,YAAY,EAClC,UAAAE,CACF,EACAF,EAEAI,EAAY,CAChB,GAAID,EAAM,GACV,QAASA,EAAM,QACf,WAAYA,EAAM,UAClB,UAAWA,EAAM,UACjB,KAAMA,EAAM,KACZ,SAAUA,EAAM,SAChB,WAAYA,EAAM,WAClB,WAAYA,EAAM,UAClB,UAAWA,EAAM,SACnB,EACA,SAAO,gBAAa,KAAK,QAAS,KAAK,UAAUC,CAAS,CAAC,CAC7D,CAEA,MAAM,OAAOC,EAAiD,CAC5D,KAAK,kBAAkB,EACvB,IAAMC,EAAOD,EAAU,KAAK,UAAUA,CAAO,EAAI,OACjD,SAAO,iBAAc,KAAK,QAASC,CAAI,CACzC,CAEA,MAAM,MAAMJ,EAAmC,CAC7C,YAAK,kBAAkB,KAChB,gBAAa,KAAK,QAASA,CAAS,CAC7C,CAEA,MAAM,OAA0C,CAC9C,YAAK,kBAAkB,KAChB,gBAAa,KAAK,OAAO,CAClC,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,kBAAe,KAAK,OAAO,CAC7B,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,2BAA2B,CAE/C,CACF,EC7GA,IAAAK,EAMO,sBASMC,EAAN,KAAwC,CAC5B,QACT,SAAW,GAEnB,YAAYC,EAAoC,CAC9C,KAAK,WAAU,uBAAoB,CACrC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,MAAM,OAAOC,EAAsC,CACjD,KAAK,kBAAkB,EAEvB,IAAMC,EAAaD,EAAO,IAAKE,IAAO,CACpC,GAAIA,EAAE,GACN,YAAaA,EAAE,WACf,QAASA,EAAE,QACX,MAAOA,EAAE,MACT,SAAUA,EAAE,UAAY,CAAC,EACzB,UAAWA,EAAE,SACf,EAAE,EACF,SAAO,uBAAoB,KAAK,QAAS,KAAK,UAAUD,CAAU,CAAC,CACrE,CAEA,MAAM,OAAOE,EAAqBC,EAAuC,CACvE,YAAK,kBAAkB,KAChB,uBACL,KAAK,QACL,KAAK,UAAUD,CAAS,EACxBC,CACF,CACF,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,wBAAqB,KAAK,OAAO,CACnC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,gCAAgC,CAEpD,CAEA,OAAO,iBAAiBC,EAAaC,EAAqB,CACxD,SAAO,qBAAkBD,EAAGC,CAAC,CAC/B,CACF,EC9DA,IAAAC,EAOO,sBAoBMC,EAAN,KAAkC,CACtB,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,gBAAa,CAC9B,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,QAAQC,EAA+B,CACrC,YAAK,kBAAkB,KACvB,kBACE,KAAK,QACLA,EAAO,OACPA,EAAO,MAAM,KACbA,EAAO,MAAM,OACbA,EAAO,aACPA,EAAO,OAAS,CAAC,CACnB,EACO,IACT,CAGA,QAAQA,EAA8B,CACpC,YAAK,kBAAkB,KACvB,uBACE,KAAK,QACLA,EAAO,OACPA,EAAO,OAAO,IAAIC,IAAM,CACtB,UAAWA,EAAE,MAAM,KACnB,eAAgBA,EAAE,MAAM,OACxB,aAAcA,EAAE,YAClB,EAAE,EACFD,EAAO,WAAa,QACtB,EACO,IACT,CAEA,QAAQE,EAAcC,EAAkB,CACtC,YAAK,kBAAkB,KACvB,kBAAe,KAAK,QAASD,EAAMC,CAAE,EAC9B,IACT,CAEA,MAAM,IAAIC,EAAkD,CAC1D,YAAK,kBAAkB,KAChB,aAAU,KAAK,QAASA,CAAM,CACvC,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IAAE,iBAAc,KAAK,OAAO,CAAG,MAAQ,CAAW,CACxD,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SAAU,MAAM,IAAI,MAAM,0BAA0B,CAC/D,CACF,ECzGA,IAAAC,EAMO,sBAYMC,EAAN,KAAqC,CACzB,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,mBAAgB,CACjC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,QAAQC,EAAkC,CACxC,YAAK,kBAAkB,KACvB,qBACE,KAAK,QACLA,EAAO,OACPA,EAAO,MAAM,KACbA,EAAO,MAAM,OACbA,EAAO,aACPA,EAAO,OAAS,CAAC,CACnB,EACO,IACT,CAEA,cAAcC,EAAgBC,EAAyB,CACrD,YAAK,kBAAkB,KACvB,2BAAwB,KAAK,QAASD,EAAQC,CAAS,EAChD,IACT,CAEA,MAAM,IAAIC,EAAkD,CAC1D,YAAK,kBAAkB,KAChB,gBAAa,KAAK,QAASA,CAAM,CAG1C,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,oBAAiB,KAAK,OAAO,CAC/B,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,6BAA6B,CAEjD,CACF,EC/DA,IAAAC,EAMO,sBAiBMC,EAAN,KAAiC,CACrB,QACT,SAAW,GACX,OAAkB,CAAC,EAE3B,YAAYC,EAAc,CACxB,KAAK,WAAU,eAAYA,CAAI,CACjC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAGA,IAAIC,EAAcC,EAA6B,CAC7C,YAAK,kBAAkB,KACvB,kBAAe,KAAK,QAASD,EAAM,KAAMA,EAAM,OAAQC,CAAY,EACnE,KAAK,OAAO,KAAKD,CAAK,EACf,IACT,CAGA,SAASE,EAAuB,CAC9B,YAAK,kBAAkB,KACvB,qBAAkB,KAAK,QAASA,CAAC,EAC1B,IACT,CAGA,MAAM,IAAIC,EAAqC,CAC7C,KAAK,kBAAkB,EACvB,IAAMC,EAAW,KAAK,UAAU,CAC9B,CAAE,KAAM,OAAQ,QAAS,CAAC,CAAE,KAAM,OAAQ,KAAMD,CAAO,CAAC,CAAE,CAC5D,CAAC,EACD,SAAO,YAAS,KAAK,QAASC,CAAQ,CACxC,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,gBAAa,KAAK,OAAO,CAC3B,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SAAU,MAAM,IAAI,MAAM,yBAAyB,CAC9D,CACF,EC3FA,IAAAC,EAOO,sBAKMC,EAAN,KAAoC,CACxB,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,kBAAe,CAChC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,SAASC,EAAcC,EAA6B,CAClD,YAAK,kBAAkB,KACvB,qBACE,KAAK,QACLD,EAAM,KACNA,EAAM,OACNC,CACF,EACO,IACT,CAEA,cAAcC,EAAyB,CACrC,YAAK,kBAAkB,KACvB,0BAAuB,KAAK,QAASA,CAAS,EACvC,IACT,CAEA,MAAM,SACJC,EACAC,EACAC,EACkB,CAClB,YAAK,kBAAkB,KAChB,oBAAiB,KAAK,QAASF,EAAWC,EAASC,CAAM,CAClE,CAEA,YAAsB,CACpB,YAAK,kBAAkB,KAChB,uBAAoB,KAAK,OAAO,CACzC,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,mBAAgB,KAAK,OAAO,CAC9B,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,4BAA4B,CAEhD,CACF,EC3EA,IAAAC,EAMO,sBAIMC,EAAN,KAA4C,CAChC,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,2BAAwB,CACzC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,YAAmB,CACjB,YAAK,kBAAkB,KACvB,0BAAuB,KAAK,OAAO,EAC5B,IACT,CAEA,WAAWC,EAAqB,CAC9B,YAAK,kBAAkB,KACvB,0BAAuB,KAAK,QAASA,CAAK,EACnC,IACT,CAEA,aAAaC,EAA2BC,EAAsB,CAC5D,YAAK,kBAAkB,KACvB,6BAA0B,KAAK,QAASD,EAAmBC,CAAK,EACzD,IACT,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,4BAAyB,KAAK,OAAO,CACvC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,oCAAoC,CAExD,CACF,EC5DA,IAAAC,EAOO,sBAIMC,EAAN,KAA2C,CAC/B,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,0BAAuB,CACxC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,cAAqB,CACnB,YAAK,kBAAkB,KACvB,iCAA8B,KAAK,OAAO,EACnC,IACT,CAEA,WAAkB,CAChB,YAAK,kBAAkB,KACvB,8BAA2B,KAAK,OAAO,EAChC,IACT,CAEA,MAAiB,CACf,YAAK,kBAAkB,KAChB,wBAAqB,KAAK,OAAO,CAC1C,CAEA,KAAKC,EAAsC,CACzC,KAAK,kBAAkB,KACvB,wBAAqB,KAAK,QAAS,KAAK,UAAUA,CAAK,CAAC,CAC1D,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,2BAAwB,KAAK,OAAO,CACtC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,mCAAmC,CAEvD,CACF,ECjEA,IAAAC,EAOO,sBAmFMC,EAAN,KAAsC,CAC1B,QACT,SAAW,GAEnB,YAAYC,EAAcC,EAAiB,CACzC,KAAK,WAAU,qBAAkBD,EAAMC,CAAO,CAChD,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,QAAQC,EAAqB,CAC3B,YAAK,kBAAkB,KACvB,uBAAoB,KAAK,QAAS,KAAK,UAAUA,CAAI,CAAC,EAC/C,IACT,CAEA,YAAYC,EAA6B,CACvC,YAAK,kBAAkB,KACvB,wBAAqB,KAAK,QAAS,KAAK,UAAUA,CAAQ,CAAC,EACpD,IACT,CAEA,UAAUC,EAAyB,CACjC,YAAK,kBAAkB,KACvB,sBAAmB,KAAK,QAAS,KAAK,UAAUA,CAAM,CAAC,EAChD,IACT,CAEA,MAAM,cAAcC,EAAoC,CACtD,YAAK,kBAAkB,KAChB,qBAAkB,KAAK,QAAS,KAAK,UAAUA,CAAO,CAAC,CAChE,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,sBAAmB,KAAK,OAAO,CACjC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,8BAA8B,CAElD,CACF,ECjJA,IAAAC,EASO,sBAIMC,EAAN,KAA2C,CAC/B,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,0BAAuB,CACxC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,qBACEC,EACAC,EAAyB,CAAC,EACpB,CACN,YAAK,kBAAkB,KACvB,0CACE,KAAK,QACLD,EACAC,CACF,EACO,IACT,CAEA,gBAAgBC,EAAyB,CACvC,YAAK,kBAAkB,KACvB,qCAAkC,KAAK,QAASA,CAAM,EAC/C,IACT,CAEA,cAAcC,EAAmBC,EAA0B,CACzD,YAAK,kBAAkB,KACvB,mCAAgC,KAAK,QAASD,EAAUC,CAAS,EAC1D,IACT,CAEA,eAAeC,EAAsBC,EAAsB,CAAC,EAAS,CACnE,YAAK,kBAAkB,KACvB,oCAAiC,KAAK,QAASD,EAAYC,CAAS,EAC7D,IACT,CAEA,UAAUC,EAAuC,CAC/C,YAAK,kBAAkB,KACvB,8BAA2B,KAAK,QAAS,KAAK,UAAUA,CAAM,CAAC,EACxD,IACT,CAEA,MAAiB,CACf,YAAK,kBAAkB,KAChB,wBAAqB,KAAK,OAAO,CAC1C,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,2BAAwB,KAAK,OAAO,CACtC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,mCAAmC,CAEvD,CACF,ECvFA,IAAAC,EAOO,sBAIMC,EAAN,KAA4C,CAChC,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,2BAAwB,CACzC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,QACEC,EACAC,EACAC,EACQ,CACR,YAAK,kBAAkB,KAChB,oBACL,KAAK,QACLF,EACA,KAAK,UAAUC,CAAI,EACnBC,CACF,CACF,CAEA,QACEC,EACAC,EACM,CACN,KAAK,kBAAkB,KACvB,oBACE,KAAK,QACLD,EACAC,EAAe,KAAK,UAAUA,CAAY,EAAI,MAChD,CACF,CAEA,KAAKD,EAAmBE,EAAuB,CAC7C,KAAK,kBAAkB,KACvB,iBAAc,KAAK,QAASF,EAAWE,CAAM,CAC/C,CAEA,aAAuB,CACrB,YAAK,kBAAkB,KAChB,yBAAsB,KAAK,OAAO,CAC3C,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,4BAAyB,KAAK,OAAO,CACvC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,oCAAoC,CAExD,CACF,EC/EA,IAAAC,EAMO,sBAIMC,EAAN,KAA4C,CAChC,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,2BAAwB,CACzC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,MAAM,KAAKC,EAAoD,CAC7D,YAAK,kBAAkB,KAChB,mBAAgB,KAAK,QAAS,KAAK,UAAUA,CAAU,CAAC,CACjE,CAEA,MAAM,KAAKC,EAAwC,CACjD,YAAK,kBAAkB,KAChB,mBAAgB,KAAK,QAASA,CAAY,CACnD,CAEA,MAAM,WAAWC,EAAqC,CACpD,YAAK,kBAAkB,KAChB,0BAAuB,KAAK,QAASA,CAAS,CACvD,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,4BAAyB,KAAK,OAAO,CACvC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,oCAAoC,CAExD,CACF,ECzDA,IAAAC,EAMO,sBAIMC,GAAN,KAAuC,CAC3B,QACT,SAAW,GAEnB,YAAYC,EAAoB,CAC9B,KAAK,WAAU,sBAAmBA,CAAS,CAC7C,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,UAAUC,EAAkC,CAC1C,YAAK,kBAAkB,KACvB,mBAAgB,KAAK,QAASA,CAAU,EACjC,IACT,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,uBAAoB,KAAK,OAAO,CAClC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,+BAA+B,CAEnD,CAEA,OAAO,iBAAiBC,EAAwB,CAC9C,SAAO,sBAAmBA,CAAK,CACjC,CAEA,OAAO,gBAAgBC,EAA0B,CAC/C,SAAO,qBAAkBA,CAAO,CAClC,CACF,ECxDA,IAAAC,EAOO,sBAIMC,GAAN,KAAsC,CAC1B,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,oBAAiB,CAClC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAKA,WACEC,EACAC,EACAC,EACM,CACN,KAAK,kBAAkB,EACvB,IAAMC,EAAO,OAAOH,GAAe,SAC/B,CACE,KAAMA,EACN,UAAW,SACX,SAAU,KAAK,IAAI,GAAKC,GAAc,GACtC,YAAaA,GAAc,EAC3B,WAAYC,GAAc,CAAC,EAC3B,OAAQ,KACR,SAAU,CAAC,CACb,EACAF,KACJ,yBAAsB,KAAK,QAAS,KAAK,UAAUG,CAAI,CAAC,CAC1D,CAEA,aAAuB,CACrB,YAAK,kBAAkB,KAChB,0BAAuB,KAAK,OAAO,CAC5C,CAEA,eAAyB,CACvB,YAAK,kBAAkB,KAChB,4BAAyB,KAAK,OAAO,CAC9C,CAEA,OAAc,CACZ,KAAK,kBAAkB,KACvB,mBAAgB,KAAK,OAAO,CAC9B,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,qBAAkB,KAAK,OAAO,CAChC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,8BAA8B,CAElD,CACF,ECjFA,IAAAC,EAIO,sBASA,SAASC,GACdC,EACQ,CACR,SAAO,4BAAyBA,CAAe,CACjD,CAMO,SAASC,GACdC,EACAC,EACAC,EACQ,CACR,SAAO,0BACLF,EACAC,EACAC,CACF,CACF,CAMO,SAASC,GACdC,EACAC,EACAC,EACQ,CACR,SAAO,6BACLF,EACAC,EACAC,CACF,CACF,CAKO,SAASC,GACdC,EACAC,EACAH,EAAuB,GACf,CACR,OAAOH,GACLK,EAAQ,OACRC,EAAU,IAAKC,GAAMA,EAAE,MAAM,EAC7BJ,CACF,CACF,CChEA,IAAAK,EAMO,sBAIA,SAASC,GAAYC,EAAsB,CAChD,SAAO,gBAAaA,CAAI,CAC1B,CAEO,SAASC,GAAoBD,EAAcE,EAAuB,CACvE,SAAO,0BAAuBF,EAAME,CAAK,CAC3C,CAEO,SAASC,GAAmBC,EAA+B,CAChE,SAAO,wBAAqBA,CAAQ,CACtC,CAEO,SAASC,GAAqBH,EAAuB,CAC1D,SAAO,2BAAwBA,CAAK,CACtC,CAEO,SAASI,GACdJ,EACAK,EAOc,CACd,IAAMC,KAAM,iBACVN,EACAK,EAAM,YACNA,EAAM,aACNA,EAAM,gBACNA,EAAM,gBACNA,EAAM,mBACR,EAEA,MAAO,CACL,MAAO,OAAOC,EAAI,OAASN,CAAK,EAChC,gBAAiB,OAAOM,EAAI,kBAAoBN,CAAK,EACrD,SAAU,OAAOM,EAAI,UAAY,KAAK,EACtC,YAAa,OAAOA,EAAI,cAAgBD,EAAM,WAAW,EACzD,aAAc,OAAOC,EAAI,eAAiBD,EAAM,YAAY,EAC5D,gBAAiB,OAAOC,EAAI,kBAAoBD,EAAM,iBAAmB,CAAC,EAC1E,gBAAiB,OAAOC,EAAI,mBAAqBD,EAAM,iBAAmB,CAAC,EAC3E,oBAAqB,OAAOC,EAAI,uBAAyBD,EAAM,qBAAuB,CAAC,EACvF,aAAc,OAAOC,EAAI,gBAAkB,CAAC,EAC5C,cAAe,OAAOA,EAAI,iBAAmB,CAAC,EAC9C,iBAAkB,OAAOA,EAAI,oBAAsB,CAAC,EACpD,iBAAkB,OAAOA,EAAI,qBAAuB,CAAC,EACrD,qBAAsB,OAAOA,EAAI,yBAA2B,CAAC,EAC7D,aAAc,OAAOA,EAAI,gBAAkB,CAAC,CAC9C,CACF,CC7DA,IAAAC,GAGO,sBAEA,SAASC,GAAiBC,EAAyB,CACxD,SAAO,2BAAuBA,CAAO,CACvC,CAEO,SAASC,GAAWC,EAAuB,CAChD,SAAO,6BAAyBA,CAAK,CACvC,CCXA,IAAAC,EAIO,sBAIMC,GAAN,KAA0C,CAC9B,QACT,SAAW,GAEnB,YAAYC,EAAiC,CAC3C,KAAK,WAAU,yBAAsBA,CAAU,CACjD,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAEA,SACEC,EACAC,EACS,CACT,YAAK,kBAAkB,EAChB,KAAK,SACV,2BACE,KAAK,QACL,KAAK,UAAUD,CAAK,EACpB,KAAK,UAAUC,CAAM,CACvB,CACF,CACF,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,0BAAuB,KAAK,OAAO,CACrC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,kCAAkC,CAEtD,CACF,ECtDA,IAAAC,GAAmC,sBAE5B,SAASC,GAAiBC,EAA6B,CAC5D,SAAO,uBAAmBA,CAAI,CAChC,CCiCA,SAASC,GAAaC,EAA0FC,EAAyB,CACvI,IAAIC,EACJ,OAAQF,EAAO,QAAS,CACtB,IAAK,QACHE,EAAQF,EAAO,YACf,MACF,IAAK,SACHE,EAAQF,EAAO,YAAcC,EAC7B,MACF,IAAK,cACHC,EAAQF,EAAO,YAAc,KAAK,IAAI,EAAGC,EAAU,CAAC,EACpD,KACJ,CAEA,IAAME,EAAcD,EAAQF,EAAO,OACnC,OAAAE,GAAS,KAAK,OAAO,EAAIC,EAAc,EAAIA,EACpC,KAAK,IAAI,KAAK,IAAI,EAAGD,CAAK,EAAGF,EAAO,UAAU,CACvD,CAEA,SAASI,GAAMC,EAA2B,CACxC,OAAO,IAAI,QAASC,GAAY,WAAWA,EAASD,CAAE,CAAC,CACzD,CAYA,eAAsBE,GACpBC,EACAR,EACY,CACZ,IAAMS,EAAaT,GAAQ,YAAc,EACnCU,EAAUV,GAAQ,SAAW,cAC7BW,EAAcX,GAAQ,aAAe,IACrCY,EAAaZ,GAAQ,YAAc,IACnCa,EAASb,GAAQ,QAAU,GAC3Bc,EAAUd,GAAQ,QAClBe,EAAUf,GAAQ,QAEpBgB,EAEJ,QAASf,EAAU,EAAGA,GAAWQ,EAAYR,IAC3C,GAAI,CACF,OAAO,MAAMO,EAAG,CAClB,OAASS,EAAK,CAKZ,GAJAD,EAAYC,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,EAE1DhB,IAAYQ,GAEZK,GAAW,CAACA,EAAQE,EAAWf,EAAU,CAAC,EAAG,MAEjD,IAAMiB,GAAUnB,GAAa,CAAE,QAAAW,EAAS,YAAAC,EAAa,WAAAC,EAAY,OAAAC,CAAO,EAAGZ,EAAU,CAAC,EACtFc,IAAUC,EAAWf,EAAU,EAAGiB,EAAO,EACzC,MAAMd,GAAMc,EAAO,CACrB,CAGF,MAAMF,CACR,CAYO,SAASG,GACdC,EACApB,EACsD,CACtD,OAAQqB,GAAWd,GAAU,IAAMa,EAAM,IAAIC,CAAM,EAAGrB,CAAM,CAC9D,CC3EA,SAASsB,GAAsBC,EAAoBC,EAA4B,CAC7E,IAAMC,EAAY,KAAK,UAAUD,EAAQ,KAAM,CAAC,EAChD,MAAO,GAAGD,CAAU;AAAA;AAAA;AAAA,EAA2DE,CAAS;AAAA;AAAA,iDAC1F,CAEA,SAASC,GAAYC,EAAsB,CAEzC,IAAMC,EAAiBD,EAAK,MAAM,uCAAuC,EACzE,GAAIC,EAAgB,OAAOA,EAAe,CAAC,EAAE,KAAK,EAGlD,IAAMC,EAAWF,EAAK,QAAQ,GAAG,EAC3BG,EAAWH,EAAK,QAAQ,GAAG,EAEjC,GAAIE,IAAa,IAAMC,IAAa,GAAI,OAAOH,EAAK,KAAK,EAEzD,IAAMI,EAAQF,IAAa,GAAKC,EAC5BA,IAAa,GAAKD,EAClB,KAAK,IAAIA,EAAUC,CAAQ,EAGzBE,EADUL,EAAKI,CAAK,IAAM,IACP,IAAM,IAG3BE,EAAQ,EACRC,EAAW,GACXC,EAAS,GAEb,QAASC,EAAIL,EAAOK,EAAIT,EAAK,OAAQS,IAAK,CACxC,IAAMC,EAAKV,EAAKS,CAAC,EAEjB,GAAID,EAAQ,CACVA,EAAS,GACT,QACF,CACA,GAAIE,IAAO,KAAM,CACfF,EAAS,GACT,QACF,CACA,GAAIE,IAAO,IAAK,CACdH,EAAW,CAACA,EACZ,QACF,CACA,GAAI,CAAAA,IAEAG,IAAOV,EAAKI,CAAK,GAAGE,IACpBI,IAAOL,IACTC,IACIA,IAAU,IAAG,OAAON,EAAK,MAAMI,EAAOK,EAAI,CAAC,CAEnD,CAEA,OAAOT,EAAK,MAAMI,CAAK,CACzB,CAoBA,eAAsBO,GACpBC,EACAC,EACAC,EAC8B,CAC9B,IAAMC,EAAkBD,EAAO,iBAAmB,EAC5CE,EAAe,OAAOH,GAAW,SACnClB,GAAsBkB,EAAQC,EAAO,MAAM,EAC3CD,EAEAI,EAEJ,QAASC,EAAU,EAAGA,GAAWH,EAAiBG,IAAW,CAC3D,IAAMC,EAAQD,IAAY,EACtBF,EACA,OAAOA,GAAiB,SACtB,GAAGA,CAAY;AAAA;AAAA,2BAAgCC,GAAW,OAAO,mCACjED,EAEAI,EAAS,MAAMR,EAAM,IAAIO,CAAK,EAEpC,GAAI,CACF,IAAME,EAAUtB,GAAYqB,EAAO,IAAI,EAEvC,MAAO,CACL,KAFW,KAAK,MAAMC,CAAO,EAG7B,IAAKP,EAAO,WAAaM,EAAS,MACpC,CACF,OAASE,EAAK,CACZL,EAAYK,aAAe,MAAQA,EAAM,IAAI,MAAM,OAAOA,CAAG,CAAC,CAChE,CACF,CAEA,MAAM,IAAI,MACR,6CAA6CP,EAAkB,CAAC,cAAcE,GAAW,OAAO,EAClG,CACF,CCnHA,IAAMM,GAAc,iBAUb,SAASC,EAA2BC,EAAmC,CAC5E,IAAMC,EAAY,CAAC,GAAG,IAAI,IACxB,MAAM,KAAKD,EAAY,SAASF,EAAW,EAAII,GAAMA,EAAE,CAAC,CAAC,CAC3D,CAAC,EAEKC,EAAMC,GACHJ,EAAY,QAAQF,GAAa,CAACO,EAAGC,IAAQ,CAClD,IAAMC,EAASH,EAAgCE,CAAG,EAClD,GAAIC,IAAU,OACZ,MAAM,IAAI,MAAM,gCAAgCD,CAAG,IAAI,EAEzD,OAAOC,CACT,CAAC,EAGH,cAAO,eAAeJ,EAAI,MAAO,CAAE,MAAOH,EAAa,WAAY,EAAK,CAAC,EACzE,OAAO,eAAeG,EAAI,YAAa,CAAE,MAAOF,EAAW,WAAY,EAAK,CAAC,EAEtEE,CACT,CAKO,IAAMK,GAAYT,EACvB;AAAA;AAAA,SACF,EAGaU,GAAYV,EACvB;AAAA;AAAA,SACF,EAGaW,GAAaX,EACxB,gHACF,EAGaY,GAAWZ,EACtB;AAAA;AAAA;AAAA;AAAA,qCACF,EAGaa,GAAUb,EACrB;AAAA;AAAA;AAAA;AAAA,iBACF,EC5EA,IAAAc,EAIO,sBAmDMC,EAAN,MAAMC,CAAU,CACZ,KACA,YACA,MACA,SACA,aACA,MACA,OACA,aACA,YACA,SAED,YAAYC,EAAqB,CACvC,KAAK,KAAOA,EAAK,KACjB,KAAK,YAAcA,EAAK,YACxB,KAAK,MAAQA,EAAK,OAAS,OAC3B,KAAK,SAAWA,EAAK,UAAY,OACjC,KAAK,aAAeA,EAAK,cAAgB,OACzC,KAAK,MAAQ,OAAO,OAAO,CAAC,GAAGA,EAAK,KAAK,CAAC,EAC1C,KAAK,OAAS,OAAO,OAAO,CAAC,GAAGA,EAAK,MAAM,CAAC,EAC5C,KAAK,aAAe,OAAO,OAAO,CAAC,GAAGA,EAAK,YAAY,CAAC,EACxD,KAAK,YAAc,IAAI,IAAIA,EAAK,WAAW,EAC3C,KAAK,SAAW,OAAO,OAAO,CAAE,GAAGA,EAAK,QAAS,CAAC,CACpD,CAGA,OAAO,aAAaC,EAA4B,CAC9C,IAAMC,KAAO,iBAAcD,CAAO,EAC5BD,EAAsB,OAAOE,GAAS,SAAW,KAAK,MAAMA,CAAI,EAAIA,EAC1E,OAAO,IAAIH,EAAUC,CAAI,CAC3B,CAGA,QAAQG,EAAuB,CAC7B,OAAO,KAAK,MAAM,KAAM,GAAM,EAAE,OAASA,CAAI,CAC/C,CAGA,cAAcA,EAAuB,CACnC,OAAO,KAAK,aAAa,SAASA,CAAI,CACxC,CAGA,QAAwB,CACtB,MAAO,CACL,KAAM,KAAK,KACX,YAAa,KAAK,YAClB,MAAO,KAAK,MACZ,SAAU,KAAK,SACf,aAAc,KAAK,aACnB,MAAO,CAAC,GAAG,KAAK,KAAK,EACrB,OAAQ,CAAC,GAAG,KAAK,MAAM,EACvB,aAAc,CAAC,GAAG,KAAK,YAAY,EACnC,YAAa,CAAC,GAAG,KAAK,YAAY,QAAQ,CAAC,EAC3C,SAAU,CAAE,GAAG,KAAK,QAAS,CAC/B,CACF,CACF,EAKaC,GAAN,MAAMC,CAAU,CACZ,KACA,YACA,MACA,OACA,QAED,YAAYL,EAAqB,CACvC,KAAK,KAAOA,EAAK,KACjB,KAAK,YAAcA,EAAK,YACxB,KAAK,MAAQ,OAAO,OAAO,CAAC,GAAGA,EAAK,KAAK,CAAC,EAC1C,KAAK,OAAS,OAAO,OAAO,CAAC,GAAGA,EAAK,MAAM,CAAC,EAC5C,KAAK,QAAU,OAAO,OAAO,CAAC,GAAGA,EAAK,OAAO,CAAC,CAChD,CAGA,OAAO,aAAaC,EAA4B,CAC9C,IAAMC,KAAO,gBAAaD,CAAO,EAC3BD,EAAsB,OAAOE,GAAS,SAAW,KAAK,MAAMA,CAAI,EAAIA,EAC1E,OAAO,IAAIG,EAAUL,CAAI,CAC3B,CAGA,IAAI,WAAoB,CACtB,OAAO,KAAK,MAAM,MACpB,CAGA,IAAI,gBAAwC,CAC1C,OAAO,KAAK,OAAO,OAAQM,GAAMA,EAAE,QAAQ,CAC7C,CAGA,QAAwB,CACtB,MAAO,CACL,KAAM,KAAK,KACX,YAAa,KAAK,YAClB,MAAO,CAAC,GAAG,KAAK,KAAK,EACrB,OAAQ,CAAC,GAAG,KAAK,MAAM,EACvB,QAAS,CAAC,GAAG,KAAK,OAAO,CAC3B,CACF,CACF,EAKO,SAASC,GAAeC,EAA0B,CACvD,IAAMN,KAAO,EAAAO,gBAAmBD,CAAG,EAEnC,OAD8B,OAAON,GAAS,SAAW,KAAK,MAAMA,CAAI,EAAIA,GAChE,IAAKF,GAGR,OAAO,OAAO,OAAO,OAAOF,EAAU,SAAS,EAAG,CACvD,KAAME,EAAK,KACX,YAAaA,EAAK,YAClB,MAAOA,EAAK,OAAS,OACrB,SAAUA,EAAK,UAAY,OAC3B,aAAcA,EAAK,cAAgB,OACnC,MAAO,OAAO,OAAO,CAAC,GAAGA,EAAK,KAAK,CAAC,EACpC,OAAQ,OAAO,OAAO,CAAC,GAAGA,EAAK,MAAM,CAAC,EACtC,aAAc,OAAO,OAAO,CAAC,GAAGA,EAAK,YAAY,CAAC,EAClD,YAAa,IAAI,IAAIA,EAAK,WAAW,EACrC,SAAU,OAAO,OAAO,CAAE,GAAGA,EAAK,QAAS,CAAC,CAC9C,CAAC,CACF,CACH,CCvKA,eAAsBU,GAAKC,KAAmBC,EAAuD,CACnG,IAAIC,EAASF,EACb,QAAWG,KAAQF,EACjBC,EAAS,MAAMC,EAAKD,CAAM,EAE5B,OAAOA,CACT,CAcA,eAAsBE,GACpBC,EACAC,EACAC,EACc,CACd,IAAMC,EAAcD,GAAS,aAAeF,EAAM,OAC5CI,EAAe,IAAI,MAAMJ,EAAM,MAAM,EACrCK,EAAQL,EAAM,IAAI,CAACM,EAAMC,KAAW,CAAE,KAAAD,EAAM,MAAAC,CAAM,EAAE,EAEpDC,EAAU,MAAM,KAAK,CAAE,OAAQ,KAAK,IAAIL,EAAaE,EAAM,MAAM,CAAE,EAAG,SAAY,CACtF,KAAOA,EAAM,OAAS,GAAG,CACvB,IAAMI,EAAQJ,EAAM,MAAM,EAC1B,GAAI,CAACI,EAAO,MACZL,EAAQK,EAAM,KAAK,EAAI,MAAMR,EAAGQ,EAAM,KAAMA,EAAM,KAAK,CACzD,CACF,CAAC,EAED,aAAM,QAAQ,IAAID,CAAO,EAClBJ,CACT,CAWA,eAAsBM,GACpBV,EACAW,EACAT,EACc,CACd,IAAMU,EAAQ,MAAMb,GAASC,EAAOW,EAAWT,CAAO,EACtD,OAAOF,EAAM,OAAO,CAACa,EAAG,IAAMD,EAAM,CAAC,CAAC,CACxC,CAeA,eAAsBE,GACpBd,EACAe,EACAC,EACY,CACZ,IAAInB,EAASmB,EACb,QAASC,EAAI,EAAGA,EAAIjB,EAAM,OAAQiB,IAChCpB,EAAS,MAAMkB,EAAQlB,EAAQG,EAAMiB,CAAC,EAAGA,CAAC,EAE5C,OAAOpB,CACT,CASA,eAAsBqB,GACpBlB,EACAC,EACc,CACd,QAASgB,EAAI,EAAGA,EAAIjB,EAAM,OAAQiB,IAChC,MAAMhB,EAAGD,EAAMiB,CAAC,EAAGA,CAAC,EAEtB,OAAOjB,CACT,CAeO,SAASmB,MAAcC,EAAuC,CACnE,MAAO,OAAOzB,GAAyB,CACrC,IAAIE,EAASF,EACb,QAAWM,KAAMmB,EACfvB,EAAS,MAAMI,EAAGJ,CAAM,EAE1B,OAAOA,CACT,CACF,CChJA,IAAAwB,EAMO,sBAqJMC,GAAN,KAAgB,CACJ,QACA,UAEjB,YAAYC,EAAoC,CAC1C,OAAOA,GAAY,SACrB,KAAK,QAAUA,GAEf,KAAK,QAAUA,EAAQ,QACvB,KAAK,UAAYA,EAAQ,UAE7B,CAMA,MAAM,UAA+B,CAEnC,OADY,QAAM,eAAY,KAAK,QAAS,KAAK,WAAa,MAAS,CAEzE,CAKA,MAAM,YACJC,EACAC,EAC4B,CAC5B,IAAMC,EAAM,QAAM,kBAChB,KAAK,QACL,KAAK,WAAa,OAClB,KAAK,UAAUF,CAAO,EACtBC,EAAS,KAAK,UAAUA,CAAM,EAAI,MACpC,EACA,GAAIC,EAAI,QAAU,OAAQ,CACxB,GAAM,CAAE,MAAAC,EAAO,GAAGC,CAAK,EAAIF,EAC3B,MAAO,CAAE,KAAM,OAAQ,KAAME,CAAa,CAC5C,CACA,GAAM,CAAE,MAAAD,EAAO,GAAGE,CAAI,EAAIH,EAC1B,MAAO,CAAE,KAAM,UAAW,QAASG,CAAkB,CACvD,CAMA,MAAM,IAAIC,EAA+B,CACvC,SAAO,UAAO,KAAK,QAAS,KAAK,WAAa,OAAWA,CAAI,CAC/D,CAOA,MAAM,QAAQC,EAAgBC,EAAuC,CAOnE,OANY,QAAM,cAChB,KAAK,QACL,KAAK,WAAa,OAClBD,EACAC,GAAiB,MACnB,CAEF,CAMA,MAAM,WAAWD,EAA+B,CAM9C,OALY,QAAM,iBAChB,KAAK,QACL,KAAK,WAAa,OAClBA,CACF,CAEF,CACF,EAKO,SAASE,GACdC,EACAJ,EACY,CACZ,MAAO,CAAE,KAAAI,EAAM,MAAO,CAAC,CAAE,KAAM,OAAQ,KAAAJ,CAAK,CAAC,CAAE,CACjD,CAGO,SAASK,GAAYL,EAA0B,CACpD,OAAOG,GAAY,OAAQH,CAAI,CACjC,CAGO,SAASM,GAAaN,EAA0B,CACrD,OAAOG,GAAY,QAASH,CAAI,CAClC,CAGO,SAASO,GAAYb,EAA6B,CACvD,OAAOA,EAAQ,MACZ,OAAQc,GAAMA,EAAE,OAAS,QAAUA,EAAE,IAAI,EACzC,IAAKA,GAAMA,EAAE,IAAK,EAClB,KAAK,EAAE,CACZ,CAGO,SAASC,GAASX,EAAgC,CACvD,GAAIA,EAAK,OAAO,QACd,OAAOS,GAAYT,EAAK,OAAO,OAAO,CAG1C,CCxRA,IAAAY,EAOO,sBA2BMC,GAAN,KAAyC,CAC7B,QACT,SAAW,GAEnB,aAAc,CACZ,KAAK,WAAU,sBAAmB,CACpC,CAEA,IAAI,QAAiB,CACnB,OAAO,KAAK,OACd,CAGA,IAAIC,EAAgC,CAClC,YAAK,kBAAkB,KACvB,mBAAgB,KAAK,QAAS,KAAK,UAAUA,CAAK,CAAC,EAC5C,IACT,CAGA,OAAOC,EAAmC,CACxC,YAAK,kBAAkB,KAChB,sBAAmB,KAAK,QAASA,CAAK,CAC/C,CAGA,MAAMC,EAAiC,CACrC,YAAK,kBAAkB,KAChB,qBAAkB,KAAK,QAASA,CAAG,CAC5C,CAGA,MAA4B,CAC1B,YAAK,kBAAkB,KAChB,oBAAiB,KAAK,OAAO,CACtC,CAEA,SAAgB,CACd,GAAI,CAAC,KAAK,SAAU,CAClB,KAAK,SAAW,GAChB,GAAI,IACF,uBAAoB,KAAK,OAAO,CAClC,MAAQ,CAER,CACF,CACF,CAEA,CAAC,OAAO,OAAO,GAAU,CACvB,KAAK,QAAQ,CACf,CAEQ,mBAA0B,CAChC,GAAI,KAAK,SACP,MAAM,IAAI,MAAM,iCAAiC,CAErD,CACF","names":["src_exports","__export","A2aClient","ANTHROPIC_DEFAULT","ANTHROPIC_FAST","ANTHROPIC_PREMIUM","Agent","AgentSpec","AgentStream","ApprovalManager","CheckpointStore","DEEPSEEK_DEFAULT","DEEPSEEK_REASONING","EvalRunner","FIREWORKS_DEFAULT","GOOGLE_DEFAULT","GOOGLE_IMAGE","GOOGLE_PREMIUM","Graph","GuardrailChain","MISTRAL_DEFAULT","McpServer","Memory","MiddlewareChain","Network","OPENAI_DEFAULT","OPENAI_FAST","OPENAI_IMAGE","OPENAI_REASONING","OPENROUTER_DEFAULT","PERPLEXITY_DEFAULT","PROVIDER_DEFAULTS","PluginRegistry","SkillSpec","TOGETHER_DEFAULT","Team","Telemetry","ToolRegistry","ToolValidator","VectorStore","Workflow","XAI_DEFAULT","agentMessage","availableRuntimes","batch","classify","codeReview","compose","countMessageTokens","countTokens","countTokensForModel","createCircuitBreaker","createFallbackProvider","createResilientAgent","createResilientProvider","defaultModel","detectProvider","discoverAgents","enterprisePreset","enterpriseRun","estimateCost","executeCode","extract","extractText","filterAsync","gauss","generateImage","getContextWindowSize","mapAsync","parseAgentConfig","parsePartialJson","pipe","reduceAsync","resolveApiKey","resolveEnv","retryable","structured","summarize","tapAsync","taskText","template","textMessage","translate","userMessage","withRetry","__toCommonJS","OPENAI_DEFAULT","OPENAI_FAST","OPENAI_REASONING","OPENAI_IMAGE","ANTHROPIC_DEFAULT","ANTHROPIC_FAST","ANTHROPIC_PREMIUM","GOOGLE_DEFAULT","GOOGLE_PREMIUM","GOOGLE_IMAGE","OPENROUTER_DEFAULT","DEEPSEEK_DEFAULT","DEEPSEEK_REASONING","TOGETHER_DEFAULT","FIREWORKS_DEFAULT","MISTRAL_DEFAULT","PERPLEXITY_DEFAULT","XAI_DEFAULT","PROVIDER_DEFAULTS","defaultModel","provider","ENV_KEYS","resolveApiKey","provider","key","detectProvider","checks","env","PROVIDER_DEFAULTS","import_gauss_napi","import_gauss_napi","toSdkResult","raw","c","AgentStream","agentName","providerHandle","tools","messages","options","toolExecutor","buffer","resolve","done","onEvent","json","runPromise","r","toSdkResult","raw","c","Agent","config","detected","detectProvider","OPENAI_DEFAULT","apiKey","resolveApiKey","ceOpt","codeExecution","tool","tools","options","input","messages","toolExecutor","onEvent","NOOP_TOOL_EXECUTOR","AgentStream","gauss","prompt","agent","enterprisePreset","config","retries","Agent","enterpriseRun","prompt","agent","batch","prompts","config","concurrency","agentConfig","items","input","agent","Agent","queue","workers","entry","idx","item","err","import_gauss_napi","import_gauss_napi","executeCode","language","code","options","availableRuntimes","generateImage","prompt","detected","detectProvider","providerType","model","apiKey","resolveApiKey","handle","import_node_crypto","import_gauss_napi","Memory","entryOrRole","content","sessionId","entry","rustEntry","options","json","import_gauss_napi","VectorStore","_options","chunks","rustChunks","c","embedding","topK","a","b","import_gauss_napi","Graph","config","a","from","to","prompt","import_gauss_napi","Workflow","config","stepId","dependsOn","prompt","import_gauss_napi","Team","name","agent","instructions","s","prompt","messages","import_gauss_napi","Network","agent","instructions","agentName","fromAgent","toAgent","prompt","import_gauss_napi","MiddlewareChain","ttlMs","requestsPerMinute","burst","import_gauss_napi","PluginRegistry","event","import_gauss_napi","McpServer","name","version","tool","resource","prompt","message","import_gauss_napi","GuardrailChain","blockPatterns","warnPatterns","action","maxInput","maxOutput","blockRules","warnRules","schema","import_gauss_napi","ApprovalManager","toolName","args","sessionId","requestId","modifiedArgs","reason","import_gauss_napi","CheckpointStore","checkpoint","checkpointId","sessionId","import_gauss_napi","EvalRunner","threshold","scorerType","jsonl","jsonStr","import_gauss_napi","Telemetry","nameOrSpan","durationMs","attributes","span","import_gauss_napi","createFallbackProvider","providerHandles","createCircuitBreaker","providerHandle","failureThreshold","recoveryTimeoutMs","createResilientProvider","primaryHandle","fallbackHandles","enableCircuitBreaker","createResilientAgent","primary","fallbacks","a","import_gauss_napi","countTokens","text","countTokensForModel","model","countMessageTokens","messages","getContextWindowSize","estimateCost","usage","raw","import_gauss_napi","parseAgentConfig","jsonStr","resolveEnv","value","import_gauss_napi","ToolValidator","strategies","input","schema","import_gauss_napi","parsePartialJson","text","computeDelay","config","attempt","delay","jitterRange","sleep","ms","resolve","withRetry","fn","maxRetries","backoff","baseDelayMs","maxDelayMs","jitter","retryIf","onRetry","lastError","err","delayMs","retryable","agent","prompt","buildStructuredPrompt","userPrompt","schema","schemaStr","extractJson","text","codeBlockMatch","objStart","arrStart","start","closer","depth","inString","escape","i","ch","structured","agent","prompt","config","maxParseRetries","schemaPrompt","lastError","attempt","input","result","jsonStr","err","VAR_PATTERN","template","templateStr","variables","m","fn","vars","_","key","value","summarize","translate","codeReview","classify","extract","import_gauss_napi","AgentSpec","_AgentSpec","data","content","json","name","SkillSpec","_SkillSpec","p","discoverAgents","dir","napiDiscoverAgents","pipe","input","steps","result","step","mapAsync","items","fn","options","concurrency","results","queue","item","index","workers","entry","filterAsync","predicate","flags","_","reduceAsync","reducer","initial","i","tapAsync","compose","fns","import_gauss_napi","A2aClient","options","message","config","raw","_type","task","msg","text","taskId","historyLength","textMessage","role","userMessage","agentMessage","extractText","p","taskText","import_gauss_napi","ToolRegistry","entry","query","tag"]}