Core SDK@pillar-ai/sdk
Events
Subscribe to SDK lifecycle and interaction events.
typescript
import Pillar from '@pillar-ai/sdk'
Methods
Pillar.on()
Subscribe to SDK events
typescript
on(event: K, callback: (data: PillarEvents[K]) => void): () => void
Parameters
eventrequiredK
No description.
callbackrequired(data: PillarEvents[K]) => void
No description.
Returns
() => voidTypes
PillarEvents
interfacetypescript
interface PillarEvents {/** SDK is initialized and ready. */ready: void;/** SDK encountered an error. */error: Error;/** Panel was opened. */"panel:open": void;/** Panel was closed. */"panel:close": void;/** Panel navigated to a different view. */"panel:navigate": { view: string; params?: Record<string, string> };/** User viewed an article. */"article:view": { articleSlug: string };/** User performed a search. */"search:query": { query: string };/** User sent a chat message. */"chat:message": { message: string };/** Text selection popover was shown. */"textSelection:shown": { text: string };/** User clicked the text selection popover. */"textSelection:click": { text: string };/** Context was updated. */"context:change": { context: Context };/** User profile was updated. */"profile:change": { profile: UserProfile };/** User action was reported. */"action:report": { action: string; metadata?: Record<string, unknown> };/** User was identified. */"user:identified": {userId: string;profile?: {name?: string;email?: string;metadata?: Record<string, unknown>;};};/** User logged out. */"user:logout": Record<string, never>;/** Query tool returned a result to the agent. */"tool:result": { toolName: string; result: unknown; toolCallId?: string };/** @deprecated Use tool:result instead */"action:result": { actionName: string; result: unknown; toolCallId?: string };/** AI-suggested task is being executed. */"task:execute": TaskExecutePayload;/** Task completed. */"task:complete": {id?: string;name: string;success: boolean;data?: Record<string, unknown>;};/** Multi-step workflow started. */"workflow:start": Workflow;/** Workflow step became active. */"workflow:step:active": { workflow: Workflow; step: WorkflowStep };/** Workflow step completed. */"workflow:step:complete": {workflow: Workflow;step: WorkflowStep;success: boolean;};/** Workflow step was skipped. */"workflow:step:skip": { workflow: Workflow; step: WorkflowStep };/** Workflow completed all steps. */"workflow:complete": Workflow;/** Workflow was cancelled. */"workflow:cancel": Workflow;/** Theme was changed. */"theme:change": { theme: ResolvedThemeConfig };/** Text selection feature was toggled. */"textSelection:change": { enabled: boolean };/** DOM was scanned. */"dom:scanned": CompactScanResult;/** DOM scanning feature was toggled. */"domScanning:change": { enabled: boolean };/** Page-aware suggestions were updated. */"suggestions:updated": {suggestions: Array<{ id: string; text: string }>;route: string;};/** Sidebar tab was clicked. Use to integrate external support systems. */"sidebar:click": { tabId: string; label: string };/** A tool was registered or unregistered. */"tools:change": { action: "add" | "remove"; name: string };/** @deprecated Use 'sidebar:click' instead. Will be removed in next major version. */"support:request": { tabId: string };}
Properties
readyrequiredvoid
SDK is initialized and ready.
errorrequiredError
SDK encountered an error.
"panel:open"requiredvoid
Panel was opened.
"panel:close"requiredvoid
Panel was closed.
"panel:navigate"required{ view: string; params?: Record<string, string> }
Panel navigated to a different view.
"article:view"required{ articleSlug: string }
User viewed an article.
"search:query"required{ query: string }
User performed a search.
"chat:message"required{ message: string }
User sent a chat message.
"textSelection:shown"required{ text: string }
Text selection popover was shown.
"textSelection:click"required{ text: string }
User clicked the text selection popover.
"context:change"required{ context: Context }
Context was updated.
"profile:change"required{ profile: UserProfile }
User profile was updated.
"action:report"required{ action: string; metadata?: Record<string, unknown> }
User action was reported.
"user:identified"required{
userId: string;
profile?: {
name?: string;
email?: string;
metadata?: Record<string, unknown>;
};
}
User was identified.
"user:logout"requiredRecord<string, never>
User logged out.
"tool:result"required{ toolName: string; result: unknown; toolCallId?: string }
Query tool returned a result to the agent.
"task:execute"requiredTaskExecutePayload
AI-suggested task is being executed.
"task:complete"required{
id?: string;
name: string;
success: boolean;
data?: Record<string, unknown>;
}
Task completed.
"workflow:start"requiredWorkflow
Multi-step workflow started.
"workflow:step:active"required{ workflow: Workflow; step: WorkflowStep }
Workflow step became active.
"workflow:step:complete"required{
workflow: Workflow;
step: WorkflowStep;
success: boolean;
}
Workflow step completed.
"workflow:step:skip"required{ workflow: Workflow; step: WorkflowStep }
Workflow step was skipped.
"workflow:complete"requiredWorkflow
Workflow completed all steps.
"workflow:cancel"requiredWorkflow
Workflow was cancelled.
"theme:change"required{ theme: ResolvedThemeConfig }
Theme was changed.
"textSelection:change"required{ enabled: boolean }
Text selection feature was toggled.
"dom:scanned"requiredCompactScanResult
DOM was scanned.
"domScanning:change"required{ enabled: boolean }
DOM scanning feature was toggled.
"suggestions:updated"required{
suggestions: Array<{ id: string; text: string }>;
route: string;
}
Page-aware suggestions were updated.
"sidebar:click"required{ tabId: string; label: string }
Sidebar tab was clicked. Use to integrate external support systems.
"tools:change"required{ action: "add" | "remove"; name: string }
A tool was registered or unregistered.
Deprecated
"action:result"required{ actionName: string; result: unknown; toolCallId?: string }
Deprecated.
"support:request"required{ tabId: string }
Deprecated.