or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

apis

agents.mdhooks.mdmcp.mdmessages.mdoptions.mdpermissions.mdquery-api.mdsandbox.mdtools.md
index.mdpatterns.mdquick-reference.mdtypes.md
tile.json

quick-reference.mddocs/

Quick Reference

Functions

// Main query API
query(_params: {prompt: string | AsyncIterable<SDKUserMessage>; options?: Options}): Query

// V2 Session API (unstable)
unstable_v2_createSession(_options: SDKSessionOptions): SDKSession
unstable_v2_resumeSession(_sessionId: string, _options: SDKSessionOptions): SDKSession
unstable_v2_prompt(_message: string, _options: SDKSessionOptions): Promise<SDKResultMessage>

// MCP
createSdkMcpServer(_options: {name: string; version?: string; tools?: Array<SdkMcpToolDefinition<any>>}): McpSdkServerConfigWithInstance
tool<Schema extends ZodRawShape>(_name: string, _description: string, _inputSchema: Schema, _handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>): SdkMcpToolDefinition<Schema>

Query Interface Methods

interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>
  setPermissionMode(mode: PermissionMode): Promise<void>
  setModel(model?: string): Promise<void>
  setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>
  supportedCommands(): Promise<SlashCommand[]>
  supportedModels(): Promise<ModelInfo[]>
  mcpServerStatus(): Promise<McpServerStatus[]>
  accountInfo(): Promise<AccountInfo>
  streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>
}

Options (Top 20)

interface Options {
  // Model & execution
  model?: string
  cwd?: string
  maxTurns?: number
  maxBudgetUsd?: number
  maxThinkingTokens?: number
  abortController?: AbortController

  // Tools
  tools?: string[] | {type: 'preset'; preset: 'claude_code'}
  allowedTools?: string[]
  disallowedTools?: string[]

  // Permissions
  permissionMode?: 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'dontAsk'
  canUseTool?: CanUseTool
  allowDangerouslySkipPermissions?: boolean

  // Environment
  additionalDirectories?: string[]
  env?: {[key: string]: string | undefined}
  sandbox?: SandboxSettings

  // Extensions
  agents?: Record<string, AgentDefinition>
  hooks?: Partial<Record<HookEvent, HookCallbackMatcher[]>>
  mcpServers?: Record<string, McpServerConfig>

  // Session
  continue?: boolean
  resume?: string
}

Message Types

type SDKMessage =
  | SDKAssistantMessage      // Assistant response
  | SDKUserMessage           // User input
  | SDKResultMessage         // Final result
  | SDKSystemMessage         // System info (init, status, hooks)
  | SDKToolProgressMessage   // Tool execution progress
  | SDKAuthStatusMessage     // Auth status
  | SDKPartialAssistantMessage  // Streaming events
  | SDKUserMessageReplay     // Message replay
  | SDKCompactBoundaryMessage   // History compaction marker
  | SDKStatusMessage         // Status updates
  | SDKHookResponseMessage   // Hook execution result

Permission Handler

type CanUseTool = (
  toolName: string,
  input: Record<string, unknown>,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
    blockedPath?: string;
    decisionReason?: string;
    toolUseID: string;
    agentID?: string;
  }
) => Promise<PermissionResult>

type PermissionResult =
  | {behavior: 'allow'; updatedInput: Record<string, unknown>; updatedPermissions?: PermissionUpdate[]; toolUseID?: string}
  | {behavior: 'deny'; message: string; interrupt?: boolean; toolUseID?: string}

Hook System

type HookEvent = 'PreToolUse' | 'PostToolUse' | 'PostToolUseFailure' | 'PermissionRequest'
  | 'UserPromptSubmit' | 'SessionStart' | 'SessionEnd' | 'Stop'
  | 'SubagentStart' | 'SubagentStop' | 'PreCompact' | 'Notification'

type HookCallback = (
  input: HookInput,
  toolUseID: string | undefined,
  options: {signal: AbortSignal}
) => Promise<HookJSONOutput>

Built-in Tools

// File tools
FileReadInput: {file_path: string; offset?: number; limit?: number}
FileEditInput: {file_path: string; old_string: string; new_string: string; replace_all?: boolean}
FileWriteInput: {file_path: string; content: string}

// Search tools
GlobInput: {pattern: string; path?: string}
GrepInput: {pattern: string; path?: string; glob?: string; output_mode?: string; /* ... */}

// Shell tools
BashInput: {command: string; timeout?: number; run_in_background?: boolean; /* ... */}
BashOutputInput: {bash_id: string; filter?: string}
KillShellInput: {shell_id: string}

// Web tools
WebFetchInput: {url: string; prompt: string}
WebSearchInput: {query: string; allowed_domains?: string[]; blocked_domains?: string[]}

// Agent tools
AgentInput: {description: string; prompt: string; subagent_type: string; model?: string; resume?: string}

// Other tools
TodoWriteInput: {todos: Array<{content: string; status: string; activeForm: string}>}
NotebookEditInput: {notebook_path: string; new_source: string; /* ... */}
AskUserQuestionInput: {questions: Array<{/* ... */}>}

Agent Definition

interface AgentDefinition {
  description: string
  tools?: string[]
  disallowedTools?: string[]
  prompt: string
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit'
  criticalSystemReminder_EXPERIMENTAL?: string
}

MCP Server Config

type McpServerConfig =
  | {type?: 'stdio'; command: string; args?: string[]; env?: Record<string, string>}
  | {type: 'sse'; url: string; headers?: Record<string, string>}
  | {type: 'http'; url: string; headers?: Record<string, string>}
  | {type: 'sdk'; name: string; instance: McpServer}

Sandbox Settings

interface SandboxSettings {
  enabled?: boolean
  autoAllowBashIfSandboxed?: boolean
  allowUnsandboxedCommands?: boolean
  network?: {
    allowUnixSockets?: string[]
    allowAllUnixSockets?: boolean
    allowLocalBinding?: boolean
    httpProxyPort?: number
    socksProxyPort?: number
  }
  ignoreViolations?: Record<string, string[]>
  enableWeakerNestedSandbox?: boolean
  excludedCommands?: string[]
  ripgrep?: {command: string; args?: string[]}
}