Skip to content

@sqlrooms/ai / AiSliceOptions

Interface: AiSliceOptions<TTools>

Configuration options for creating an AI slice.

TTools is inferred from the tools value and constrains toolRenderers:

  • Keys must be present in tools
  • Each renderer's output prop is typed to that tool's return type

Example

ts
createAiSlice({
  tools: {query: createQueryTool(store), chart: createVegaChartTool()},
  toolRenderers: {
    query: QueryToolResult,        // ToolRenderer<QueryToolOutput>
    chart: VegaChartToolResult,    // ToolRenderer<VegaChartToolOutput>
    TYPO: SomeRenderer,            // compile error — not a key of tools
  },
})

Type Parameters

Type ParameterDefault type
TTools extends ToolSetToolSet

Properties

config?

optional config?: Partial<{ sessions: object[]; currentSessionId?: string; openSessionTabs?: string[]; }>


initialPrompt?

optional initialPrompt?: string


tools

tools: TTools


toolRenderers?

optional toolRenderers?: ToolRenderers<TTools>


getInstructions

getInstructions: (args?) => string

Parameters

ParameterType
args?{ session?: { id: string; name: string; modelProvider: string; model: string; customModelName?: string; baseUrl?: string; analysisResults: object[]; createdAt?: Date; uiMessages: object[]; messagesRevision: number; prompt: string; isRunning: boolean; lastOpenedAt?: number; runContext?: {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }; agentProgress?: Record<string, unknown[]>; }; runContext?: {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }; }
args.session?{ id: string; name: string; modelProvider: string; model: string; customModelName?: string; baseUrl?: string; analysisResults: object[]; createdAt?: Date; uiMessages: object[]; messagesRevision: number; prompt: string; isRunning: boolean; lastOpenedAt?: number; runContext?: {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }; agentProgress?: Record<string, unknown[]>; }
args.session.id?string
args.session.name?string
args.session.modelProvider?string
args.session.model?string
args.session.customModelName?string
args.session.baseUrl?string
args.session.analysisResults?object[]
args.session.createdAt?Date
args.session.uiMessages?object[]
args.session.messagesRevision?number
args.session.prompt?string
args.session.isRunning?boolean
args.session.lastOpenedAt?number
args.session.runContext?{[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }
args.session.runContext.items?object[]
args.session.runContext.primaryItemId?string
args.session.runContext.primaryItemKind?string
args.session.runContext.capturedAt?number
args.session.agentProgress?Record<string, unknown[]>
args.runContext?{[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }
args.runContext.items?object[]
args.runContext.primaryItemId?string
args.runContext.primaryItemKind?string
args.runContext.capturedAt?number

Returns

string


getRunContext?

optional getRunContext?: () => {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; } | undefined

Returns

{[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; } | undefined


formatRunContextInstructions?

optional formatRunContextInstructions?: (args) => string

Parameters

ParameterType
args{ runContext: {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }; session?: { id: string; name: string; modelProvider: string; model: string; customModelName?: string; baseUrl?: string; analysisResults: object[]; createdAt?: Date; uiMessages: object[]; messagesRevision: number; prompt: string; isRunning: boolean; lastOpenedAt?: number; runContext?: {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }; agentProgress?: Record<string, unknown[]>; }; }
args.runContext{[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }
args.runContext.itemsobject[]
args.runContext.primaryItemId?string
args.runContext.primaryItemKind?string
args.runContext.capturedAtnumber
args.session?{ id: string; name: string; modelProvider: string; model: string; customModelName?: string; baseUrl?: string; analysisResults: object[]; createdAt?: Date; uiMessages: object[]; messagesRevision: number; prompt: string; isRunning: boolean; lastOpenedAt?: number; runContext?: {[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }; agentProgress?: Record<string, unknown[]>; }
args.session.idstring
args.session.namestring
args.session.modelProviderstring
args.session.modelstring
args.session.customModelName?string
args.session.baseUrl?string
args.session.analysisResultsobject[]
args.session.createdAt?Date
args.session.uiMessagesobject[]
args.session.messagesRevisionnumber
args.session.promptstring
args.session.isRunningboolean
args.session.lastOpenedAt?number
args.session.runContext?{[key: string]: unknown; items: object[]; primaryItemId?: string; primaryItemKind?: string; capturedAt: number; }
args.session.runContext.itemsobject[]
args.session.runContext.primaryItemId?string
args.session.runContext.primaryItemKind?string
args.session.runContext.capturedAtnumber
args.session.agentProgress?Record<string, unknown[]>

Returns

string


defaultProvider?

optional defaultProvider?: string


defaultModel?

optional defaultModel?: string


getAvailableModels?

optional getAvailableModels?: () => object[]

Returns

object[]


getCustomModel?

optional getCustomModel?: () => LanguageModel | undefined

Provide a pre-configured model client for a provider (e.g., Azure).

Returns

LanguageModel | undefined


getProviderOptions?

optional getProviderOptions?: GetProviderOptions


maxSteps?

optional maxSteps?: number


getApiKey?

optional getApiKey?: (modelProvider) => string

Parameters

ParameterType
modelProviderstring

Returns

string


getBaseUrl?

optional getBaseUrl?: () => string

Returns

string


chatEndPoint?

optional chatEndPoint?: string

Optional remote endpoint to use for chat; if empty, local transport is used


chatHeaders?

optional chatHeaders?: Record<string, string>

Optional headers to send with remote endpoint