/** * @aexol/spectral/sdk — Programmatic SDK for driving the full spectral agent * loop from Node.js code. * * Import from the `@aexol/spectral/sdk` subpath when you want to embed the * agent in your own process: create a session, override which tools are * active, register custom tools, and opt in to native extensions. * * Unlike the CLI/serve path, native (built-in) extensions are OFF by default * here — opt in per session with `nativeExtensions`. * * ## Quick Start * * ```ts * import { createAgentSession } from "@aexol/spectral/sdk"; * * const { session } = await createAgentSession({ * cwd: process.cwd(), * // start with no tools enabled... * noTools: "all", * // ...or an explicit allowlist of built-in tool names * // tools: ["read", "bash"], * }); * * // Subscribe BEFORE prompting: prompt() resolves to void, streaming * // arrives as session events (message_update with text_delta; the run * // ends with agent_end, after which prompt() resolves). * session.subscribe((event) => { * if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") { * process.stdout.write(event.assistantMessageEvent.delta); * } * }); * * await session.prompt("What is in this repo?"); * ``` * * ## Custom tools * * ```ts * import { createAgentSession, defineTool } from "@aexol/spectral/sdk"; * * const myTool = defineTool({ * name: "my_tool", * label: "My Tool", * description: "Does something useful.", * parameters: { type: "object", properties: {}, additionalProperties: false }, * async execute(_id, _params) { * return { content: [{ type: "text", text: "Done!" }], details: {} }; * }, * }); * * const { session } = await createAgentSession({ * tools: ["my_tool"], * customTools: [myTool], * }); * ``` * * ## Native extensions (opt-in) * * ```ts * import { createAgentSession, NATIVE_EXTENSIONS } from "@aexol/spectral/sdk"; * * // "all": every file-based native extension; "none" (default): none; * // or an explicit selection by id from NATIVE_EXTENSIONS. * const { session } = await createAgentSession({ * nativeExtensions: { enabled: ["seo"], disabled: [] }, * }); * ``` * * ## Full resource control * * ```ts * import { createAgentSession, DefaultResourceLoader, SessionManager } from "@aexol/spectral/sdk"; * * const loader = new DefaultResourceLoader({ * cwd: process.cwd(), * agentDir: "~/.spectral/agent", * nativeExtensions: "none", // or "all" / { enabled, disabled } * }); * await loader.reload(); * const { session } = await createAgentSession({ * resourceLoader: loader, // wins over nativeExtensions/extensions options * sessionManager: SessionManager.inMemory(), * }); * ``` */ export { AgentSession, type AgentSessionConfig, type AgentSessionEvent, type AgentSessionEventListener, type CreateAgentSessionFromServicesOptions, type CreateAgentSessionOptions, createAgentSession, createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, type CreateAgentSessionResult, } from "./sdk/coding-agent/index.js"; export type { NativeExtensionsOption } from "./sdk/coding-agent/index.js"; export { createBashTool, createCodingTools, createReadOnlyTools, createReadTool, } from "./sdk/coding-agent/index.js"; export { defineTool, type ToolDefinition } from "./index.js"; export { DefaultResourceLoader, type ExtensionFactory, loadProjectContextFiles, type ResourceLoader, SettingsManager, SessionManager, } from "./sdk/coding-agent/index.js"; export { discoverAndLoadExtensions, ExtensionRunner, type LoadExtensionsResult, loadExtensionFromFactory, loadExtensions, } from "./sdk/coding-agent/index.js"; export { type NativeExtensionManifest, NATIVE_EXTENSIONS, getNativeExtension, } from "./sdk/coding-agent/core/extensions/native-extensions.js"; export type { ExtensionAPI } from "./index.js"; export type { AfterProviderResponseEvent, AgentEndEvent, AgentStartEvent, BeforeAgentStartEvent, BeforeProviderRequestEvent, ContextEvent, CustomToolCallEvent, CustomToolResultEvent, ExtensionEvent, InputEvent, MessageEndEvent, MessageStartEvent, MessageUpdateEvent, ModelSelectEvent, ResourcesDiscoverEvent, SessionBeforeCompactEvent, SessionBeforeForkEvent, SessionBeforeSwitchEvent, SessionBeforeTreeEvent, SessionCompactEvent, SessionEvent, SessionShutdownEvent, SessionStartEvent, SessionTreeEvent, ToolCallEvent, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolExecutionUpdateEvent, ToolResultEvent, TurnEndEvent, TurnStartEvent, UserBashEvent, } from "./index.js"; //# sourceMappingURL=sdk-public.d.ts.map