@pillar-ai/sdk 0.1.33 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +22 -24
  2. package/dist/api/mcp-client.d.ts +0 -4
  3. package/dist/cli/sync.js +3 -0
  4. package/dist/components/Cards/ConfirmActionCard.d.ts +16 -5
  5. package/dist/components/Panel/TaskButton.d.ts +2 -0
  6. package/dist/core/Pillar.d.ts +44 -2
  7. package/dist/core/config.d.ts +8 -2
  8. package/dist/core/events.d.ts +26 -13
  9. package/dist/index.d.ts +7 -5
  10. package/dist/pillar.esm.js +1 -1
  11. package/dist/store/chat.d.ts +15 -0
  12. package/dist/tools/index.d.ts +1 -1
  13. package/dist/tools/types.d.ts +103 -39
  14. package/package.json +1 -1
  15. package/dist/actions/definitions/analytics.d.ts +0 -18
  16. package/dist/actions/definitions/content.d.ts +0 -40
  17. package/dist/actions/definitions/index.d.ts +0 -26
  18. package/dist/actions/definitions/navigation.d.ts +0 -65
  19. package/dist/actions/definitions/settings.d.ts +0 -162
  20. package/dist/actions/definitions/sources.d.ts +0 -44
  21. package/dist/actions/definitions/support.d.ts +0 -15
  22. package/dist/actions/definitions/team.d.ts +0 -120
  23. package/dist/actions/index.d.ts +0 -33
  24. package/dist/actions/registry.d.ts +0 -98
  25. package/dist/actions/types.d.ts +0 -530
  26. package/dist/api/ag-ui-adapter.d.ts +0 -76
  27. package/dist/api/ag-ui-bridge.d.ts +0 -49
  28. package/dist/api/ag-ui-client.d.ts +0 -102
  29. package/dist/api/ag-ui-handler.d.ts +0 -89
  30. package/dist/button/FloatingButton.d.ts +0 -44
  31. package/dist/components/Button/FloatingButton.d.ts +0 -46
  32. package/dist/components/DevTools/DOMScannerPreview.d.ts +0 -21
  33. package/dist/components/DevTools/styles.d.ts +0 -5
  34. package/dist/components/PagePilot/PagePilotBanner.d.ts +0 -7
  35. package/dist/components/PagePilot/PagePilotManager.d.ts +0 -47
  36. package/dist/components/PagePilot/index.d.ts +0 -6
  37. package/dist/components/PagePilot/styles.d.ts +0 -6
  38. package/dist/components/Panel/styles.d.ts +0 -20
  39. package/dist/components/Plan/InlinePlanView.d.ts +0 -24
  40. package/dist/components/Plan/PlanDocument.d.ts +0 -18
  41. package/dist/components/Plan/PlanStepItem.d.ts +0 -23
  42. package/dist/components/Plan/PlanView.d.ts +0 -10
  43. package/dist/components/Plan/index.d.ts +0 -9
  44. package/dist/components/Progress/AGUIProgress.d.ts +0 -15
  45. package/dist/components/Progress/ReasoningDisclosure.d.ts +0 -16
  46. package/dist/components/TextSelection/styles.d.ts +0 -5
  47. package/dist/components/Tooltips/Tooltip.d.ts +0 -46
  48. package/dist/components/Tooltips/TooltipManager.d.ts +0 -41
  49. package/dist/components/Tooltips/index.d.ts +0 -6
  50. package/dist/components/Tooltips/styles.d.ts +0 -5
  51. package/dist/components/Views/ArticleChatView.d.ts +0 -9
  52. package/dist/components/Views/ArticleView.d.ts +0 -10
  53. package/dist/components/Views/CategoryView.d.ts +0 -11
  54. package/dist/components/Views/DeveloperView.d.ts +0 -6
  55. package/dist/components/Views/SearchView.d.ts +0 -10
  56. package/dist/components/shared/ArticleCard.d.ts +0 -17
  57. package/dist/components/shared/CategoryCard.d.ts +0 -17
  58. package/dist/content/extensions/AccordionNode.d.ts +0 -10
  59. package/dist/content/extensions/CalloutNode.d.ts +0 -11
  60. package/dist/content/extensions/index.d.ts +0 -5
  61. package/dist/content/index.d.ts +0 -5
  62. package/dist/content/renderer.d.ts +0 -24
  63. package/dist/core/plan-executor.d.ts +0 -148
  64. package/dist/core/plan.d.ts +0 -192
  65. package/dist/hooks/useInlineCard.d.ts +0 -35
  66. package/dist/panel/Panel.d.ts +0 -53
  67. package/dist/panel/PanelUI.d.ts +0 -43
  68. package/dist/panel/components/ArticleCard.d.ts +0 -10
  69. package/dist/panel/components/CategoryCard.d.ts +0 -10
  70. package/dist/panel/components/ChatInput.d.ts +0 -36
  71. package/dist/panel/components/Header.d.ts +0 -16
  72. package/dist/panel/components/SearchInput.d.ts +0 -11
  73. package/dist/panel/styles.d.ts +0 -5
  74. package/dist/panel/views/ArticleView.d.ts +0 -21
  75. package/dist/panel/views/CategoryView.d.ts +0 -20
  76. package/dist/panel/views/ChatView.d.ts +0 -30
  77. package/dist/panel/views/HomeView.d.ts +0 -18
  78. package/dist/panel/views/SearchView.d.ts +0 -22
  79. package/dist/store/developer.d.ts +0 -19
  80. package/dist/store/plan-persistence.d.ts +0 -47
  81. package/dist/store/plan.d.ts +0 -45
  82. package/dist/store/tooltips.d.ts +0 -21
  83. package/dist/tooltips/Tooltip.d.ts +0 -63
  84. package/dist/tooltips/TooltipManager.d.ts +0 -42
  85. package/dist/tooltips/styles.d.ts +0 -5
  86. package/dist/ui/config.d.ts +0 -96
  87. package/dist/ui/executor.d.ts +0 -75
  88. package/dist/ui/index.d.ts +0 -11
  89. package/dist/ui/scanner.d.ts +0 -105
  90. package/dist/ui/types.d.ts +0 -293
  91. package/dist/utils/markdown.d.ts +0 -9
package/README.md CHANGED
@@ -31,7 +31,7 @@ Pillar understands the intent, builds a multi-step plan, and executes it client-
31
31
  - **Multi-Step Plans** — Chain actions into workflows for complex tasks
32
32
  - **Context-Aware** — Knows current page, user state, and selected text
33
33
  - **Knowledge Sync** — Trained on your docs, Zendesk, Intercom, and more
34
- - **Custom Action Cards** — Render interactive UI for confirmations and data input
34
+ - **Render Custom Components** — Render your own interactive UI in the chat
35
35
  - **Framework Bindings** — First-class support for React, Vue, and Svelte
36
36
 
37
37
  ## Why Pillar?
@@ -42,7 +42,7 @@ Pillar understands the intent, builds a multi-step plan, and executes it client-
42
42
 
43
43
  ## Documentation
44
44
 
45
- **[View Full Documentation](https://trypillar.com/docs)** | [Getting Started](https://trypillar.com/docs/get-started/quickstart) | [API Reference](https://trypillar.com/docs/reference/core)
45
+ **[View Full Documentation](https://trypillar.com/docs)** | [Getting Started](https://trypillar.com/docs/get-started/quickstart) | [API Reference](https://trypillar.com/docs/reference)
46
46
 
47
47
  ## Installation
48
48
 
@@ -56,11 +56,9 @@ yarn add @pillar-ai/sdk
56
56
 
57
57
  ## Quick Start
58
58
 
59
- ### 1. Get Your Product Key
59
+ ### 1. Get your agent slug
60
60
 
61
- > **⚠️ Beta Onboarding:** Cloud access is currently manual while we learn from early teams. Join the waitlist at [trypillar.com](https://trypillar.com), and we will reach out to onboard you.
62
- >
63
- > By default, you'll get an engineer from Pillar to help with setup. If you prefer onboarding without engineering support, include that in your waitlist request and we will support that too.
61
+ Sign up at [app.trypillar.com](https://app.trypillar.com) and grab your agent slug from the dashboard.
64
62
 
65
63
  ### 2. Initialize the SDK
66
64
 
@@ -69,7 +67,7 @@ import { Pillar } from "@pillar-ai/sdk";
69
67
 
70
68
  // Initialize and get the instance
71
69
  const pillar = await Pillar.init({
72
- productKey: "your-product-key", // Provided during onboarding
70
+ agentSlug: "your-agent-slug", // Provided during onboarding
73
71
  });
74
72
 
75
73
  // Now you can use instance methods
@@ -95,7 +93,7 @@ Use `onTask` to handle actions when the AI executes them:
95
93
 
96
94
  ```javascript
97
95
  const pillar = await Pillar.init({
98
- productKey: "your-product-key",
96
+ agentSlug: "your-agent-slug",
99
97
  });
100
98
 
101
99
  // Handle navigation
@@ -122,7 +120,7 @@ For production, define tools in code and sync them via the `pillar-sync` CLI dur
122
120
 
123
121
  ```javascript
124
122
  const pillar = await Pillar.init({
125
- productKey: "your-product-key",
123
+ agentSlug: "your-agent-slug",
126
124
 
127
125
  panel: {
128
126
  position: "right", // 'left' | 'right'
@@ -144,29 +142,29 @@ const pillar = await Pillar.init({
144
142
 
145
143
  ## API Reference
146
144
 
147
- | Method | Description |
148
- |--------|-------------|
149
- | `Pillar.init(config)` | Initialize the SDK, returns the instance |
150
- | `Pillar.getInstance()` | Get the initialized SDK instance |
151
- | `pillar.open()` | Open the co-pilot panel |
152
- | `pillar.close()` | Close the co-pilot panel |
153
- | `pillar.toggle()` | Toggle the co-pilot panel |
154
- | `pillar.setContext(context)` | Update the user/product context |
155
- | `pillar.on(event, callback)` | Subscribe to SDK events |
145
+ | Method | Description |
146
+ | ---------------------------- | ---------------------------------------- |
147
+ | `Pillar.init(config)` | Initialize the SDK, returns the instance |
148
+ | `Pillar.getInstance()` | Get the initialized SDK instance |
149
+ | `pillar.open()` | Open the co-pilot panel |
150
+ | `pillar.close()` | Close the co-pilot panel |
151
+ | `pillar.toggle()` | Toggle the co-pilot panel |
152
+ | `pillar.setContext(context)` | Update the user/product context |
153
+ | `pillar.on(event, callback)` | Subscribe to SDK events |
156
154
 
157
155
  > **Note:** `Pillar.init()` and `Pillar.getInstance()` are static methods on the class. All other methods (lowercase `pillar`) are instance methods - call them on the instance returned from `init()` or `getInstance()`.
158
156
 
159
- For complete API documentation, see the [API Reference](https://trypillar.com/docs/reference/core).
157
+ For complete API documentation, see the [API Reference](https://trypillar.com/docs/reference).
160
158
 
161
159
  ## Framework Integrations
162
160
 
163
161
  For idiomatic integration with your framework, use our framework-specific packages:
164
162
 
165
- | Framework | Package | Installation |
166
- |-----------|---------|--------------|
167
- | React | [@pillar-ai/react](https://github.com/pillarhq/sdk-react) | `npm install @pillar-ai/react` |
168
- | Vue | [@pillar-ai/vue](https://github.com/pillarhq/sdk-vue) | `npm install @pillar-ai/vue` |
169
- | Svelte | [@pillar-ai/svelte](https://github.com/pillarhq/sdk-svelte) | `npm install @pillar-ai/svelte` |
163
+ | Framework | Package | Installation |
164
+ | --------- | ----------------------------------------------------------- | ------------------------------- |
165
+ | React | [@pillar-ai/react](https://github.com/pillarhq/sdk-react) | `npm install @pillar-ai/react` |
166
+ | Vue | [@pillar-ai/vue](https://github.com/pillarhq/sdk-vue) | `npm install @pillar-ai/vue` |
167
+ | Svelte | [@pillar-ai/svelte](https://github.com/pillarhq/sdk-svelte) | `npm install @pillar-ai/svelte` |
170
168
 
171
169
  ## License
172
170
 
@@ -27,8 +27,6 @@ export interface ToolResult {
27
27
  actions?: ToolData[];
28
28
  /** Registered tools for dynamic tool invocations (persisted across turns) */
29
29
  registered_tools?: Record<string, unknown>[];
30
- /** @deprecated Use registered_tools instead */
31
- registered_actions?: Record<string, unknown>[];
32
30
  };
33
31
  _meta?: {
34
32
  conversation_id?: string;
@@ -285,8 +283,6 @@ export interface ConversationStatus {
285
283
  partial_response?: string;
286
284
  display_trace?: DisplayStep[];
287
285
  registered_tools?: Record<string, unknown>[];
288
- /** @deprecated Use registered_tools instead */
289
- registered_actions?: Record<string, unknown>[];
290
286
  }
291
287
  /**
292
288
  * Convert ToolData from MCP response to TaskButtonData for UI rendering.
package/dist/cli/sync.js CHANGED
@@ -437,6 +437,9 @@ function buildManifestFromScan(tools, platform, version, gitSha, agentGuidance)
437
437
  return manifest;
438
438
  }
439
439
  async function main() {
440
+ console.log(
441
+ "[pillar-sync] Note: pillar-sync in @pillar-ai/sdk is deprecated. Use pillar-cli instead: npx pillar-cli sync"
442
+ );
440
443
  const args = parseArgs(process.argv.slice(2));
441
444
  if (args.help) {
442
445
  printUsage();
@@ -3,17 +3,28 @@
3
3
  *
4
4
  * Renders inline_ui type actions as inline cards in the chat.
5
5
  * If a custom card renderer is registered for the card_type, it's used.
6
- * Otherwise, a default confirmation card is rendered.
6
+ * Otherwise, a default preview card is rendered.
7
+ *
8
+ * When `needsConfirmation` is set, the default card includes Confirm / Cancel
9
+ * buttons that gate execution of the tool's `execute` handler.
7
10
  */
8
11
  import type { CardCallbacks } from '../../core/events';
9
12
  import type { TaskButtonData } from '../Panel/TaskButton';
10
13
  /**
11
- * Create the default confirmation card for inline_ui actions.
12
- * Used when no custom card renderer is registered.
14
+ * Create the default card for inline_ui actions.
15
+ * When callbacks include onConfirm/onCancel, confirm/cancel buttons are shown.
13
16
  */
14
17
  export declare function createDefaultConfirmCard(action: TaskButtonData, callbacks: CardCallbacks): HTMLDivElement;
18
+ export interface ConfirmActionCardOptions {
19
+ needsConfirmation?: boolean;
20
+ onConfirm?: (data?: Record<string, unknown>) => void;
21
+ onCancel?: () => void;
22
+ }
15
23
  /**
16
- * Create a confirmation card for a confirm_action type action.
24
+ * Create a card for an inline_ui type action.
17
25
  * Uses custom renderer if registered, otherwise uses default.
26
+ *
27
+ * When `options.needsConfirmation` is true, the card includes Confirm/Cancel
28
+ * buttons that call the provided `onConfirm`/`onCancel` callbacks.
18
29
  */
19
- export declare function createConfirmActionCard(action: TaskButtonData, onConfirm: (data?: Record<string, unknown>) => void, onCancel: () => void): HTMLDivElement;
30
+ export declare function createConfirmActionCard(action: TaskButtonData, options?: ConfirmActionCardOptions): HTMLDivElement;
@@ -26,6 +26,8 @@ export interface TaskButtonData {
26
26
  autoRun?: boolean;
27
27
  /** If true, action completes without waiting for host confirmation */
28
28
  autoComplete?: boolean;
29
+ /** If true, show a confirmation card before executing */
30
+ needsConfirmation?: boolean;
29
31
  }
30
32
  interface TaskButtonProps {
31
33
  task: TaskButtonData;
@@ -675,10 +675,8 @@ export declare class Pillar {
675
675
  * <div class="invite-card">
676
676
  * <h3>Invite Team Members</h3>
677
677
  * ${data.emails.map(e => `<div>${e}</div>`).join('')}
678
- * <button id="confirm">Send Invites</button>
679
678
  * </div>
680
679
  * `;
681
- * container.querySelector('#confirm').onclick = callbacks.onConfirm;
682
680
  * return () => container.innerHTML = ''; // cleanup
683
681
  * });
684
682
  */
@@ -696,6 +694,36 @@ export declare class Pillar {
696
694
  * @param cardType - The card type identifier
697
695
  */
698
696
  hasCardRenderer(cardType: string): boolean;
697
+ /**
698
+ * Get the position (messageIndex, segmentIndex) of the last card segment
699
+ * in the current message list. Returns null if there are no card segments.
700
+ */
701
+ getLatestCardPosition(): {
702
+ messageIndex: number;
703
+ segmentIndex: number;
704
+ } | null;
705
+ /**
706
+ * Check if a given message position is in the latest message.
707
+ * This becomes false as soon as any new message is added (including hidden
708
+ * messages from sendResult). Segment position within the same message is
709
+ * ignored — text segments after a card in the same assistant turn don't
710
+ * make the card "stale".
711
+ */
712
+ isPositionLatest(messageIndex: number, _segmentIndex: number): boolean;
713
+ /**
714
+ * Subscribe to message list changes (for reactive card context).
715
+ * Returns an unsubscribe function.
716
+ */
717
+ subscribeToMessages(callback: () => void): () => void;
718
+ /**
719
+ * Whether the chat is currently streaming a response.
720
+ */
721
+ get isChatLoading(): boolean;
722
+ /**
723
+ * Subscribe to chat loading-state changes (for reactive `isReady` in card context).
724
+ * Returns an unsubscribe function.
725
+ */
726
+ subscribeToLoadingState(callback: () => void): () => void;
699
727
  /**
700
728
  * Get the active workflow, if any.
701
729
  */
@@ -753,6 +781,20 @@ export declare class Pillar {
753
781
  sendToolResult(toolName: string, result: unknown, toolCallId?: string): Promise<void>;
754
782
  /** @deprecated Use sendToolResult instead */
755
783
  sendActionResult(actionName: string, result: unknown, toolCallId?: string): Promise<void>;
784
+ /**
785
+ * Send a tool result as a new chat message, triggering a fresh LLM turn.
786
+ *
787
+ * Unlike `sendToolResult` (which responds to a pending tool call via `action/result`),
788
+ * this method injects the data as a new user message so the LLM can reason about it
789
+ * and decide what to do next (e.g., call another tool like `display_checkout`).
790
+ *
791
+ * Use this for results from already-rendered inline_ui cards where the original
792
+ * tool call has already completed and there is no pending `tool_call_id`.
793
+ *
794
+ * @param toolName - The name of the tool that generated the result
795
+ * @param result - Structured data to send to the LLM
796
+ */
797
+ sendToolResultAsMessage(toolName: string, result: Record<string, unknown>): void;
756
798
  /**
757
799
  * Execute a query tool and send the result back to the agent.
758
800
  *
@@ -332,13 +332,18 @@ export interface ZIndexConfig {
332
332
  }
333
333
  export interface PillarConfig {
334
334
  /**
335
- * Your product key from the Pillar app.
335
+ * Your agent slug from the Pillar dashboard.
336
+ * This is the primary identifier for your copilot agent.
336
337
  * Get it at app.trypillar.com
337
338
  */
339
+ agentSlug?: string;
340
+ /**
341
+ * @deprecated Use `agentSlug` instead. Will be removed in a future version.
342
+ */
338
343
  productKey?: string;
339
344
  /**
340
345
  * Display name for the assistant shown in the sidebar tab.
341
- * @default 'Assistant'
346
+ * @default 'Copilot'
342
347
  */
343
348
  assistantDisplayName?: string;
344
349
  /**
@@ -500,6 +505,7 @@ export interface ResolvedSuggestionsConfig {
500
505
  }
501
506
  export interface ResolvedConfig {
502
507
  productKey: string;
508
+ agentSlug?: string;
503
509
  apiBaseUrl: string;
504
510
  /** Display name for the assistant shown in the sidebar tab */
505
511
  assistantDisplayName: string;
@@ -27,17 +27,32 @@ export interface TaskExecutePayload {
27
27
  * Callbacks provided to custom card renderers.
28
28
  */
29
29
  export interface CardCallbacks {
30
- /**
31
- * Called when user confirms the action. Pass modified data if needed.
32
- * WARNING: Data passed here flows through the SDK pipeline (telemetry,
33
- * agent context, logs). Never include secrets, tokens, or PII.
34
- */
35
- onConfirm: (modifiedData?: Record<string, unknown>) => void;
36
- /** Called when user cancels the action */
37
- onCancel: () => void;
30
+ /** Confirm the action — triggers the tool's `execute` handler. Only present when the tool has `needsConfirmation`. */
31
+ onConfirm?: (modifiedData?: Record<string, unknown>) => void;
32
+ /** Cancel the action dismisses the card. Only present when the tool has `needsConfirmation`. */
33
+ onCancel?: () => void;
34
+ /** Send a result back to the AI agent so it can continue reasoning. */
35
+ sendResult?: (result: Record<string, unknown>) => Promise<void>;
38
36
  /** Called to report card state changes (for analytics/confirmation) */
39
37
  onStateChange?: (state: "loading" | "success" | "error", message?: string) => void;
40
38
  }
39
+ /**
40
+ * Context about a card's position in the chat.
41
+ * Passed to card renderers so they can adapt their UI
42
+ * (e.g., collapse when no longer the latest card).
43
+ */
44
+ export interface ToolCardContext {
45
+ /** True when this is the last card segment across all messages. */
46
+ isLatest: boolean;
47
+ /** True when no message is being streamed — safe to call sendResult. */
48
+ isReady: boolean;
49
+ /** Zero-based index of the message containing this card. */
50
+ messageIndex: number;
51
+ /** Zero-based index of this segment within its message's segments array. */
52
+ segmentIndex: number;
53
+ /** The tool name / card type. */
54
+ toolName: string;
55
+ }
41
56
  /**
42
57
  * Card field schema definition for declarative card configuration.
43
58
  */
@@ -88,8 +103,6 @@ export interface CardRegistrationOptions {
88
103
  /** Theme/styling options */
89
104
  theme?: {
90
105
  variant?: "default" | "compact" | "wide";
91
- confirmLabel?: string;
92
- cancelLabel?: string;
93
106
  };
94
107
  }
95
108
  /**
@@ -102,14 +115,14 @@ export interface RegisteredCard {
102
115
  }
103
116
  /**
104
117
  * Card renderer function signature.
105
- * Customers register these to render custom confirmation cards.
118
+ * Customers register these to render custom inline UI cards.
106
119
  *
107
120
  * @param container - DOM element to render the card into
108
121
  * @param data - Action data including extracted values from AI
109
- * @param callbacks - Callbacks for confirm/cancel actions
122
+ * @param callbacks - Callbacks for state reporting
110
123
  * @returns Optional cleanup function called when card is unmounted
111
124
  */
112
- export type CardRenderer = (container: HTMLElement, data: Record<string, unknown>, callbacks: CardCallbacks) => (() => void) | void;
125
+ export type CardRenderer = (container: HTMLElement, data: Record<string, unknown>, callbacks: CardCallbacks, context?: ToolCardContext) => (() => void) | void;
113
126
  export interface PillarEvents {
114
127
  /** SDK is initialized and ready. */
115
128
  ready: void;
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * <script src="https://cdn.trypillar.com/sdk/pillar.min.js"></script>
7
7
  * <script>
8
8
  * Pillar.init({
9
- * productKey: 'your-product-key',
9
+ * agentSlug: 'your-agent-slug',
10
10
  * });
11
11
  * </script>
12
12
  *
@@ -15,16 +15,18 @@
15
15
  * import { Pillar } from '@pillar-ai/sdk';
16
16
  *
17
17
  * await Pillar.init({
18
- * productKey: 'your-product-key',
18
+ * agentSlug: 'your-agent-slug',
19
19
  * });
20
20
  */
21
- export { EventEmitter, type CardCallbacks, type CardRenderer, type PillarEvents, type TaskExecutePayload, } from "./core/events";
22
- export { Pillar, type ChatContext, type PillarState, type ToolInfo } from "./core/Pillar";
21
+ export { EventEmitter, type CardCallbacks, type CardRenderer, type ToolCardContext, type PillarEvents, type TaskExecutePayload, } from "./core/events";
22
+ export { Pillar, getApiClient, type ChatContext, type PillarState, type ToolInfo } from "./core/Pillar";
23
+ export { getPillarInstance } from "./core/instance";
23
24
  export { DEFAULT_SIDEBAR_TABS, type DOMScanningConfig, type EdgeTriggerConfig, type InteractionHighlightConfig, type MobileTriggerConfig, type MobileTriggerIcon, type MobileTriggerPosition, type MobileTriggerSize, type PanelConfig, type PanelMode, type PanelPosition, type PillarConfig, type ResolvedConfig, type ResolvedDOMScanningConfig, type ResolvedInteractionHighlightConfig, type ResolvedMobileTriggerConfig, type ResolvedPanelConfig, type ResolvedSuggestionsConfig, type ResolvedThemeConfig, type SidebarTabConfig, type SuggestionsConfig, type TextSelectionConfig, type ThemeColors, type ThemeConfig, type ThemeMode, type UrlParamsConfig, type ZIndexConfig, } from "./core/config";
24
25
  export { type AssistantContext, type Context, type Suggestion, type UserProfile, } from "./core/context";
25
- export { clearRegistry, getToolCount, getToolDefinition, getToolNames, getClientInfo, getHandler, getManifest, hasTool, setClientInfo, type ToolDataSchema, type ToolDataSchemaProperty, type ToolDataType, type ToolDefinition, type ToolDefinitions, type ToolManifest, type ToolManifestEntry, type ToolNames, type ToolType, type ToolTypeDataMap, type ToolExecuteResult, type ToolSchema, type ClientInfo, type CopyTextData, type ExternalLinkData, type InlineUIData, type NavigateToolData, type TriggerToolData, type QueryToolData, type Platform, type SyncToolDefinition, type SyncToolDefinitions, type TypedOnTask, type TypedPillarMethods, type TypedTaskHandler, getActionCount, getActionDefinition, getActionNames, hasAction, type ActionDataSchema, type ActionDataSchemaProperty, type ActionDataType, type ActionDefinition, type ActionDefinitions, type ActionManifest, type ActionManifestEntry, type ActionNames, type ActionType, type ActionTypeDataMap, type ActionResult, type ActionSchema, type NavigateActionData, type TriggerActionData, type QueryActionData, type SyncActionDefinition, type SyncActionDefinitions, } from "./tools";
26
+ export { clearRegistry, getToolCount, getToolDefinition, getToolNames, getClientInfo, getHandler, getManifest, hasTool, setClientInfo, type ToolDataSchema, type ToolDataSchemaProperty, type ToolDataType, type ToolDefinition, type ToolDefinitions, type ToolManifest, type ToolManifestEntry, type ToolNames, type ToolType, type ToolTypeDataMap, type ToolExecuteResult, type ToolSchemaBase, type InlineUIToolSchema, type ExecutableToolSchema, type ToolSchema, type ClientInfo, type CopyTextData, type ExternalLinkData, type InlineUIData, type NavigateToolData, type TriggerToolData, type QueryToolData, type Platform, type SyncToolDefinition, type SyncToolDefinitions, type TypedOnTask, type TypedPillarMethods, type TypedTaskHandler, getActionCount, getActionDefinition, getActionNames, hasAction, type ActionDataSchema, type ActionDataSchemaProperty, type ActionDataType, type ActionDefinition, type ActionDefinitions, type ActionManifest, type ActionManifestEntry, type ActionNames, type ActionType, type ActionTypeDataMap, type ActionResult, type ActionSchema, type NavigateActionData, type TriggerActionData, type QueryActionData, type SyncActionDefinition, type SyncActionDefinitions, } from "./tools";
26
27
  export { APIClient, type ArticleSummary, type ChatMessage, type ChatResponse, type ProgressEvent, } from "./api/client";
27
28
  export { type ToolRequest, type ToolData, type ChatImage, type ImageUploadResponse, type TokenUsage, toolToTaskButton, type ActionRequest, type ActionData, actionToTaskButton, } from "./api/mcp-client";
29
+ export { normalizeToolResult } from "./utils/normalize-tool-result";
28
30
  export { DEFAULT_SCAN_OPTIONS, INTERACTABLE_ROLES, INTERACTABLE_TAGS, SKIP_TAGS, type CompactScanResult, type InteractionType, type ScanOptions, } from "./types/dom-scanner";
29
31
  export { buildSelectorFromRef, clearPillarRefs, isDestructiveElement, isInteractable, isRedacted, isValidPillarRef, scanPageDirect, } from "./utils/dom-scanner";
30
32
  export { generateContextId, getContextDisplayLabel, isDOMSnapshotContext, isHighlightedTextContext, type DOMSnapshotContext, type GenericContext, type HighlightedTextContext, type ProductContext, type UserContextItem, type UserProfileContext, } from "./types/user-context";