Skip to content

@sqlrooms/ai-core / 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[]; capturedAt: number; }; agentProgress?: Record<string, unknown[]>; }; runContext?: {[key: string]: unknown; items: object[]; 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[]; 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[]; capturedAt: number; }
args.session.runContext.items?object[]
args.session.runContext.capturedAt?number
args.session.agentProgress?Record<string, unknown[]>
args.runContext?{[key: string]: unknown; items: object[]; capturedAt: number; }
args.runContext.items?object[]
args.runContext.capturedAt?number

Returns

string


getRunContext()?

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

Returns

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


formatRunContextInstructions()?

optional formatRunContextInstructions: (args) => string

Parameters

ParameterType
args{ runContext: {[key: string]: unknown; items: object[]; 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[]; capturedAt: number; }; agentProgress?: Record<string, unknown[]>; }; }
args.runContext{[key: string]: unknown; items: object[]; capturedAt: number; }
args.runContext.itemsobject[]
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[]; 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[]; capturedAt: number; }
args.session.runContext.itemsobject[]
args.session.runContext.capturedAtnumber
args.session.agentProgress?Record<string, unknown[]>

Returns

string


defaultProvider?

optional defaultProvider: string


defaultModel?

optional defaultModel: string


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