@pillar-ai/sdk 0.1.21 → 0.1.22

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 (53) hide show
  1. package/dist/actions/definitions/analytics.d.ts +18 -0
  2. package/dist/actions/definitions/content.d.ts +40 -0
  3. package/dist/actions/definitions/index.d.ts +26 -0
  4. package/dist/actions/definitions/navigation.d.ts +65 -0
  5. package/dist/actions/definitions/settings.d.ts +162 -0
  6. package/dist/actions/definitions/sources.d.ts +44 -0
  7. package/dist/actions/definitions/support.d.ts +15 -0
  8. package/dist/actions/definitions/team.d.ts +120 -0
  9. package/dist/actions/index.d.ts +1 -1
  10. package/dist/actions/types.d.ts +0 -89
  11. package/dist/api/ag-ui-adapter.d.ts +76 -0
  12. package/dist/api/ag-ui-bridge.d.ts +49 -0
  13. package/dist/api/ag-ui-client.d.ts +102 -0
  14. package/dist/api/ag-ui-handler.d.ts +89 -0
  15. package/dist/api/mcp-client.d.ts +46 -24
  16. package/dist/cli/sync.js +62 -43
  17. package/dist/components/Button/FloatingButton.d.ts +46 -0
  18. package/dist/components/PagePilot/styles.d.ts +1 -1
  19. package/dist/components/Panel/TabNavigation.d.ts +16 -0
  20. package/dist/components/Panel/styles.d.ts +1 -1
  21. package/dist/components/Progress/AGUIProgress.d.ts +15 -0
  22. package/dist/components/Tooltips/Tooltip.d.ts +46 -0
  23. package/dist/components/Tooltips/TooltipManager.d.ts +41 -0
  24. package/dist/components/Tooltips/index.d.ts +6 -0
  25. package/dist/components/Tooltips/styles.d.ts +5 -0
  26. package/dist/components/Views/ArticleChatView.d.ts +10 -0
  27. package/dist/components/Views/ArticleView.d.ts +10 -0
  28. package/dist/components/Views/CategoryView.d.ts +11 -0
  29. package/dist/components/Views/HelpCenterArticles.d.ts +17 -0
  30. package/dist/components/Views/SearchView.d.ts +10 -0
  31. package/dist/components/Views/SupportView.d.ts +15 -0
  32. package/dist/components/shared/ArticleCard.d.ts +17 -0
  33. package/dist/components/shared/CategoryCard.d.ts +17 -0
  34. package/dist/content/extensions/AccordionNode.d.ts +10 -0
  35. package/dist/content/extensions/CalloutNode.d.ts +11 -0
  36. package/dist/content/extensions/index.d.ts +5 -0
  37. package/dist/content/index.d.ts +5 -0
  38. package/dist/content/renderer.d.ts +24 -0
  39. package/dist/core/Pillar.d.ts +57 -38
  40. package/dist/core/config.d.ts +1 -1
  41. package/dist/core/events.d.ts +7 -1
  42. package/dist/index.d.ts +2 -2
  43. package/dist/pillar.esm.js +1 -1
  44. package/dist/store/chat.d.ts +2 -0
  45. package/dist/store/tooltips.d.ts +21 -0
  46. package/dist/tools/index.d.ts +27 -0
  47. package/dist/tools/registry.d.ts +106 -0
  48. package/dist/tools/types.d.ts +564 -0
  49. package/dist/utils/helpdesk.d.ts +33 -0
  50. package/dist/utils/markdown.d.ts +9 -0
  51. package/dist/utils/resilient-fetch.d.ts +25 -0
  52. package/package.json +3 -2
  53. package/src/actions/types.ts +0 -622
@@ -0,0 +1,18 @@
1
+ export declare const analyticsActions: {
2
+ view_search_analytics: {
3
+ description: string;
4
+ type: "navigate";
5
+ path: string;
6
+ autoRun: true;
7
+ autoComplete: true;
8
+ handler: () => void;
9
+ };
10
+ view_ai_analytics: {
11
+ description: string;
12
+ type: "navigate";
13
+ path: string;
14
+ autoRun: true;
15
+ autoComplete: true;
16
+ handler: () => void;
17
+ };
18
+ };
@@ -0,0 +1,40 @@
1
+ export declare const contentActions: {
2
+ view_all_articles: {
3
+ description: string;
4
+ type: "navigate";
5
+ path: string;
6
+ autoRun: true;
7
+ autoComplete: true;
8
+ handler: () => void;
9
+ };
10
+ view_article: {
11
+ description: string;
12
+ type: "trigger_action";
13
+ autoRun: false;
14
+ autoComplete: false;
15
+ defaultData: {
16
+ action: string;
17
+ };
18
+ handler: () => void;
19
+ };
20
+ filter_stale: {
21
+ description: string;
22
+ type: "trigger_action";
23
+ autoRun: false;
24
+ autoComplete: false;
25
+ defaultData: {
26
+ action: string;
27
+ };
28
+ handler: () => void;
29
+ };
30
+ view_categories: {
31
+ description: string;
32
+ type: "trigger_action";
33
+ autoRun: false;
34
+ autoComplete: false;
35
+ defaultData: {
36
+ action: string;
37
+ };
38
+ handler: () => void;
39
+ };
40
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Action Definitions Index
3
+ *
4
+ * Imports and registers all action definitions for the Pillar Admin app.
5
+ * These are code-first action definitions that get synced to the backend
6
+ * during CI/CD builds.
7
+ *
8
+ * To use in your app:
9
+ * 1. Import this file early in your app initialization
10
+ * 2. Or create your own action definitions using defineActions()
11
+ *
12
+ * The action metadata is extracted via `npm run extract-actions` and
13
+ * synced to the backend via `npm run sync-actions`.
14
+ */
15
+ import './navigation';
16
+ import './settings';
17
+ import './sources';
18
+ import './analytics';
19
+ import './team';
20
+ import './support';
21
+ export { navigationActions } from './navigation';
22
+ export { settingsActions } from './settings';
23
+ export { sourcesActions } from './sources';
24
+ export { analyticsActions } from './analytics';
25
+ export { teamActions } from './team';
26
+ export { supportActions } from './support';
@@ -0,0 +1,65 @@
1
+ export declare const navigationActions: {
2
+ open_knowledge: {
3
+ description: string;
4
+ examples: string[];
5
+ type: "navigate";
6
+ path: string;
7
+ autoRun: true;
8
+ autoComplete: true;
9
+ handler: () => void;
10
+ };
11
+ open_settings: {
12
+ description: string;
13
+ examples: string[];
14
+ type: "navigate";
15
+ path: string;
16
+ autoRun: true;
17
+ autoComplete: true;
18
+ handler: () => void;
19
+ };
20
+ open_actions: {
21
+ description: string;
22
+ examples: string[];
23
+ type: "navigate";
24
+ path: string;
25
+ autoRun: true;
26
+ autoComplete: true;
27
+ handler: () => void;
28
+ };
29
+ open_analytics: {
30
+ description: string;
31
+ examples: string[];
32
+ type: "navigate";
33
+ path: string;
34
+ autoRun: true;
35
+ autoComplete: true;
36
+ handler: () => void;
37
+ };
38
+ open_ai_tester: {
39
+ description: string;
40
+ examples: string[];
41
+ type: "navigate";
42
+ path: string;
43
+ autoRun: true;
44
+ autoComplete: true;
45
+ handler: () => void;
46
+ };
47
+ open_configure: {
48
+ description: string;
49
+ examples: string[];
50
+ type: "navigate";
51
+ path: string;
52
+ autoRun: true;
53
+ autoComplete: true;
54
+ handler: () => void;
55
+ };
56
+ create_new_action: {
57
+ description: string;
58
+ examples: string[];
59
+ type: "navigate";
60
+ path: string;
61
+ autoRun: true;
62
+ autoComplete: true;
63
+ handler: () => void;
64
+ };
65
+ };
@@ -0,0 +1,162 @@
1
+ export declare const settingsActions: {
2
+ open_branding_settings: {
3
+ description: string;
4
+ examples: string[];
5
+ type: "navigate";
6
+ path: string;
7
+ autoRun: true;
8
+ autoComplete: true;
9
+ handler: () => void;
10
+ };
11
+ open_layout_settings: {
12
+ description: string;
13
+ examples: string[];
14
+ type: "navigate";
15
+ path: string;
16
+ autoRun: true;
17
+ autoComplete: true;
18
+ handler: () => void;
19
+ };
20
+ open_header_settings: {
21
+ description: string;
22
+ examples: string[];
23
+ type: "navigate";
24
+ path: string;
25
+ autoRun: true;
26
+ autoComplete: true;
27
+ handler: () => void;
28
+ };
29
+ open_footer_settings: {
30
+ description: string;
31
+ examples: string[];
32
+ type: "navigate";
33
+ path: string;
34
+ autoRun: true;
35
+ autoComplete: true;
36
+ handler: () => void;
37
+ };
38
+ open_features_settings: {
39
+ description: string;
40
+ examples: string[];
41
+ type: "navigate";
42
+ path: string;
43
+ autoRun: true;
44
+ autoComplete: true;
45
+ handler: () => void;
46
+ };
47
+ open_ai_settings: {
48
+ description: string;
49
+ examples: string[];
50
+ type: "navigate";
51
+ path: string;
52
+ autoRun: true;
53
+ autoComplete: true;
54
+ handler: () => void;
55
+ };
56
+ open_seo_settings: {
57
+ description: string;
58
+ examples: string[];
59
+ type: "navigate";
60
+ path: string;
61
+ autoRun: true;
62
+ autoComplete: true;
63
+ handler: () => void;
64
+ };
65
+ enable_ai_assistant: {
66
+ description: string;
67
+ type: "trigger_action";
68
+ autoRun: false;
69
+ autoComplete: false;
70
+ defaultData: {
71
+ action: string;
72
+ target: string;
73
+ };
74
+ handler: () => void;
75
+ };
76
+ disable_ai_assistant: {
77
+ description: string;
78
+ type: "trigger_action";
79
+ autoRun: false;
80
+ autoComplete: false;
81
+ defaultData: {
82
+ action: string;
83
+ target: string;
84
+ };
85
+ handler: () => void;
86
+ };
87
+ enable_dark_mode: {
88
+ description: string;
89
+ examples: string[];
90
+ type: "trigger_action";
91
+ autoRun: true;
92
+ autoComplete: true;
93
+ defaultData: {
94
+ action: string;
95
+ theme: string;
96
+ };
97
+ handler: () => void;
98
+ };
99
+ disable_dark_mode: {
100
+ description: string;
101
+ examples: string[];
102
+ type: "trigger_action";
103
+ autoRun: true;
104
+ autoComplete: true;
105
+ defaultData: {
106
+ action: string;
107
+ theme: string;
108
+ };
109
+ handler: () => void;
110
+ };
111
+ toggle_dark_mode: {
112
+ description: string;
113
+ examples: string[];
114
+ type: "trigger_action";
115
+ autoRun: true;
116
+ autoComplete: true;
117
+ defaultData: {
118
+ action: string;
119
+ };
120
+ handler: () => void;
121
+ };
122
+ change_theme: {
123
+ description: string;
124
+ type: "trigger_action";
125
+ autoRun: true;
126
+ autoComplete: true;
127
+ defaultData: {
128
+ action: string;
129
+ };
130
+ handler: () => void;
131
+ };
132
+ update_logo: {
133
+ description: string;
134
+ type: "trigger_action";
135
+ autoRun: true;
136
+ autoComplete: true;
137
+ defaultData: {
138
+ action: string;
139
+ };
140
+ handler: () => void;
141
+ };
142
+ add_footer_link: {
143
+ description: string;
144
+ type: "trigger_action";
145
+ autoRun: true;
146
+ autoComplete: true;
147
+ defaultData: {
148
+ action: string;
149
+ };
150
+ handler: () => void;
151
+ };
152
+ configure_suggested_questions: {
153
+ description: string;
154
+ type: "trigger_action";
155
+ autoRun: true;
156
+ autoComplete: true;
157
+ defaultData: {
158
+ action: string;
159
+ };
160
+ handler: () => void;
161
+ };
162
+ };
@@ -0,0 +1,44 @@
1
+ export declare const sourcesActions: {
2
+ add_new_source: {
3
+ description: string;
4
+ examples: string[];
5
+ type: "navigate";
6
+ path: string;
7
+ autoRun: true;
8
+ autoComplete: true;
9
+ dataSchema: {
10
+ type: "object";
11
+ properties: {
12
+ type: {
13
+ type: "string";
14
+ description: string;
15
+ };
16
+ url: {
17
+ type: "string";
18
+ description: string;
19
+ };
20
+ name: {
21
+ type: "string";
22
+ description: string;
23
+ };
24
+ };
25
+ };
26
+ handler: () => void;
27
+ };
28
+ crawl_website: {
29
+ description: string;
30
+ type: "navigate";
31
+ path: string;
32
+ autoRun: true;
33
+ autoComplete: true;
34
+ handler: () => void;
35
+ };
36
+ connect_cloud_storage: {
37
+ description: string;
38
+ type: "navigate";
39
+ path: string;
40
+ autoRun: true;
41
+ autoComplete: true;
42
+ handler: () => void;
43
+ };
44
+ };
@@ -0,0 +1,15 @@
1
+ export declare const supportActions: {
2
+ escalate: {
3
+ description: string;
4
+ examples: string[];
5
+ type: "external_link";
6
+ externalUrl: string;
7
+ handler: () => void;
8
+ };
9
+ defer: {
10
+ description: string;
11
+ examples: string[];
12
+ type: "trigger_action";
13
+ handler: () => void;
14
+ };
15
+ };
@@ -0,0 +1,120 @@
1
+ export declare const teamActions: {
2
+ open_team_settings: {
3
+ description: string;
4
+ type: "navigate";
5
+ path: string;
6
+ autoRun: true;
7
+ autoComplete: true;
8
+ handler: () => void;
9
+ };
10
+ invite_team_member: {
11
+ description: string;
12
+ type: "inline_ui";
13
+ autoRun: false;
14
+ autoComplete: false;
15
+ defaultData: {
16
+ card_type: string;
17
+ emails: never[];
18
+ role: string;
19
+ };
20
+ dataSchema: {
21
+ type: "object";
22
+ properties: {
23
+ emails: {
24
+ type: "array";
25
+ description: string;
26
+ };
27
+ role: {
28
+ type: "string";
29
+ description: string;
30
+ enum: string[];
31
+ };
32
+ };
33
+ required: string[];
34
+ };
35
+ requiredContext: {
36
+ userRole: string;
37
+ };
38
+ handler: () => void;
39
+ };
40
+ view_pending_invitations: {
41
+ description: string;
42
+ type: "trigger_action";
43
+ autoRun: true;
44
+ autoComplete: true;
45
+ defaultData: {
46
+ action: string;
47
+ };
48
+ requiredContext: {
49
+ userRole: string;
50
+ };
51
+ handler: () => void;
52
+ };
53
+ resend_invitation: {
54
+ description: string;
55
+ type: "trigger_action";
56
+ autoRun: false;
57
+ autoComplete: false;
58
+ defaultData: {
59
+ action: string;
60
+ };
61
+ requiredContext: {
62
+ userRole: string;
63
+ };
64
+ handler: () => void;
65
+ };
66
+ cancel_invitation: {
67
+ description: string;
68
+ type: "trigger_action";
69
+ autoRun: false;
70
+ autoComplete: false;
71
+ defaultData: {
72
+ action: string;
73
+ };
74
+ requiredContext: {
75
+ userRole: string;
76
+ };
77
+ handler: () => void;
78
+ };
79
+ remove_team_member: {
80
+ description: string;
81
+ type: "trigger_action";
82
+ autoRun: false;
83
+ autoComplete: false;
84
+ defaultData: {
85
+ action: string;
86
+ };
87
+ requiredContext: {
88
+ userRole: string;
89
+ };
90
+ handler: () => void;
91
+ };
92
+ promote_to_admin: {
93
+ description: string;
94
+ type: "trigger_action";
95
+ autoRun: false;
96
+ autoComplete: false;
97
+ defaultData: {
98
+ action: string;
99
+ role: string;
100
+ };
101
+ requiredContext: {
102
+ userRole: string;
103
+ };
104
+ handler: () => void;
105
+ };
106
+ demote_to_member: {
107
+ description: string;
108
+ type: "trigger_action";
109
+ autoRun: false;
110
+ autoComplete: false;
111
+ defaultData: {
112
+ action: string;
113
+ role: string;
114
+ };
115
+ requiredContext: {
116
+ userRole: string;
117
+ };
118
+ handler: () => void;
119
+ };
120
+ };
@@ -29,5 +29,5 @@
29
29
  *
30
30
  * @module actions
31
31
  */
32
- export type { ActionType, ActionDataSchema, ActionDefinition, ActionDefinitions, ActionManifest, ActionManifestEntry, ClientInfo, Platform, SyncActionDefinition, SyncActionDefinitions, ActionTypeDataMap, NavigateActionData, TriggerActionData, InlineUIData, ExternalLinkData, CopyTextData, ActionDataType, ActionNames, TypedTaskHandler, TypedOnTask, TypedPillarMethods, ActionResult, ActionSchema, } from './types';
32
+ export type { ActionType, ActionDataSchema, ActionDefinition, ActionDefinitions, ActionManifest, ActionManifestEntry, ClientInfo, Platform, SyncActionDefinition, SyncActionDefinitions, ActionTypeDataMap, NavigateActionData, TriggerActionData, InlineUIData, ExternalLinkData, CopyTextData, ActionDataType, ActionNames, TypedTaskHandler, TypedOnTask, TypedPillarMethods, } from './types';
33
33
  export { setClientInfo, getClientInfo, getHandler, getActionDefinition, hasAction, getActionNames, getManifest, clearRegistry, getActionCount, } from './registry';
@@ -439,92 +439,3 @@ export interface TypedOnTask<TActions extends SyncActionDefinitions | ActionDefi
439
439
  export interface TypedPillarMethods<TActions extends SyncActionDefinitions | ActionDefinitions> {
440
440
  onTask: TypedOnTask<TActions>;
441
441
  }
442
- /**
443
- * Result returned from an action's execute function.
444
- *
445
- * Follows the MCP tool result format. Plain objects are also accepted
446
- * by the SDK and normalized to this shape automatically.
447
- */
448
- export interface ActionResult {
449
- content: Array<{
450
- type: 'text';
451
- text: string;
452
- } | {
453
- type: 'image';
454
- data: string;
455
- mimeType: string;
456
- }>;
457
- isError?: boolean;
458
- }
459
- /**
460
- * Unified action definition that co-locates metadata and handler.
461
- *
462
- * Use with `pillar.defineAction()` or the `usePillarAction()` React hook.
463
- * The CLI scanner (`npx pillar-sync --scan ./src`) discovers these
464
- * definitions automatically — no barrel file needed.
465
- *
466
- * @template TInput - Type of the input object passed to `execute`
467
- *
468
- * @example
469
- * ```ts
470
- * pillar.defineAction({
471
- * name: 'add_to_cart',
472
- * description: 'Add a product to the shopping cart',
473
- * inputSchema: {
474
- * type: 'object',
475
- * properties: {
476
- * productId: { type: 'string', description: 'Product ID' },
477
- * quantity: { type: 'number', description: 'Quantity to add' },
478
- * },
479
- * required: ['productId', 'quantity'],
480
- * },
481
- * execute: async ({ productId, quantity }) => {
482
- * await cartApi.add(productId, quantity);
483
- * return { content: [{ type: 'text', text: 'Added to cart' }] };
484
- * },
485
- * });
486
- * ```
487
- */
488
- export interface ActionSchema<TInput = Record<string, unknown>> {
489
- /** Unique action name (e.g., 'add_to_cart') */
490
- name: string;
491
- /** Human-readable description for AI matching */
492
- description: string;
493
- /**
494
- * Type of action - determines how the SDK handles it and organizes it in the UI.
495
- */
496
- type?: ActionType;
497
- /**
498
- * JSON Schema describing the input parameters.
499
- * The AI extracts structured data from the conversation to populate these.
500
- */
501
- inputSchema?: {
502
- type: 'object';
503
- properties: Record<string, unknown>;
504
- required?: string[];
505
- };
506
- /**
507
- * Example user queries that should trigger this action.
508
- * Used for semantic matching alongside the description.
509
- */
510
- examples?: string[];
511
- /**
512
- * Whether to auto-execute without user confirmation.
513
- * @default false
514
- */
515
- autoRun?: boolean;
516
- /**
517
- * Whether the action completes immediately after execution.
518
- * @default true
519
- */
520
- autoComplete?: boolean;
521
- /**
522
- * Handler function executed when the AI invokes this action.
523
- *
524
- * Can return:
525
- * - An `ActionResult` with MCP-style content blocks
526
- * - A plain object (SDK normalizes it for the agent)
527
- * - `void` if the action has no return value
528
- */
529
- execute: (input: TInput) => Promise<ActionResult | unknown | void> | ActionResult | unknown | void;
530
- }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * AG-UI Client Adapter for Pillar SDK
3
+ *
4
+ * Bridges the new AGUIClient to existing chat store patterns.
5
+ * Allows gradual migration without changing all components at once.
6
+ *
7
+ * Copyright (C) 2025 Pillar Team
8
+ */
9
+ import type { ResolvedConfig } from '../core/config';
10
+ import type { ExecutionPlan } from '../core/plan';
11
+ import type { TaskButtonData } from '../components/Panel/TaskButton';
12
+ import type { UserContextItem } from '../types/user-context';
13
+ import type { ArticleSummary, ChatMessage, ChatResponse, ProgressEvent } from './client';
14
+ import type { QueryRequest, ChatImage } from './mcp-client';
15
+ import { type ClientTool } from './ag-ui-client';
16
+ export interface LegacyStreamCallbacks {
17
+ /** Called for each text token */
18
+ onToken?: (token: string) => void;
19
+ /** Called when sources are available */
20
+ onSources?: (sources: ArticleSummary[]) => void;
21
+ /** Called when actions are available */
22
+ onActions?: (actions: TaskButtonData[]) => void;
23
+ /** Called when a plan is created */
24
+ onPlan?: (plan: ExecutionPlan) => void;
25
+ /** Called for progress updates */
26
+ onProgress?: (progress: ProgressEvent) => void;
27
+ /** Called when conversation starts (early conversation_id) */
28
+ onConversationStarted?: (conversationId: string, messageId?: string) => void;
29
+ /** Called when agent requests data from host app */
30
+ onQueryRequest?: (request: QueryRequest) => Promise<void>;
31
+ /** Called on error */
32
+ onError?: (error: string) => void;
33
+ /** Called when stream is complete */
34
+ onComplete?: (conversationId?: string, queryLogId?: string) => void;
35
+ }
36
+ /**
37
+ * Wraps AGUIClient to provide the same interface as the legacy MCPClient.
38
+ * Used during migration to minimize component changes.
39
+ */
40
+ export declare class AGUIClientAdapter {
41
+ private client;
42
+ private currentStep;
43
+ constructor(config: ResolvedConfig);
44
+ /**
45
+ * Register a client-side tool (query action).
46
+ */
47
+ registerTool(tool: ClientTool): void;
48
+ /**
49
+ * Unregister a client-side tool.
50
+ */
51
+ unregisterTool(toolName: string): void;
52
+ /**
53
+ * Chat with streaming, using legacy callback patterns.
54
+ */
55
+ chat(message: string, callbacks: LegacyStreamCallbacks, options?: {
56
+ history?: ChatMessage[];
57
+ userContext?: UserContextItem[];
58
+ images?: ChatImage[];
59
+ signal?: AbortSignal;
60
+ }): Promise<ChatResponse>;
61
+ /**
62
+ * Get current thread ID.
63
+ */
64
+ get threadId(): string;
65
+ /**
66
+ * Start a new conversation.
67
+ */
68
+ newThread(): string;
69
+ /**
70
+ * Send action result back to the agent (for query actions).
71
+ *
72
+ * @param actionName - The name of the action that was executed
73
+ * @param result - The result data to send back to the agent
74
+ */
75
+ sendActionResult(actionName: string, result: unknown): Promise<void>;
76
+ }