@doderasoftware/restify-ai 0.1.0-beta.1 → 0.1.0-beta.11

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 (60) hide show
  1. package/README.md +937 -401
  2. package/dist/components/AiAvatar.vue.d.ts.map +1 -1
  3. package/dist/components/AiChatDrawer.vue.d.ts +7 -3
  4. package/dist/components/AiChatDrawer.vue.d.ts.map +1 -1
  5. package/dist/components/AiEmptyState.vue.d.ts.map +1 -1
  6. package/dist/components/ChatInput.vue.d.ts +3 -1
  7. package/dist/components/ChatInput.vue.d.ts.map +1 -1
  8. package/dist/components/ChatMessage.vue.d.ts.map +1 -1
  9. package/dist/components/ChatMessageActions.vue.d.ts.map +1 -1
  10. package/dist/components/ErrorBoundary.vue.d.ts +74 -0
  11. package/dist/components/ErrorBoundary.vue.d.ts.map +1 -0
  12. package/dist/components/MentionList.vue.d.ts.map +1 -1
  13. package/dist/components/UserAvatar.vue.d.ts.map +1 -1
  14. package/dist/components/drawer/ConfirmDialog.vue.d.ts.map +1 -1
  15. package/dist/components/drawer/DrawerHeader.vue.d.ts +4 -0
  16. package/dist/components/drawer/DrawerHeader.vue.d.ts.map +1 -1
  17. package/dist/components/drawer/DrawerMessageList.vue.d.ts.map +1 -1
  18. package/dist/components/drawer/SetupGuide.vue.d.ts.map +1 -1
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/index.d.ts.map +1 -1
  21. package/dist/components/input/AttachmentsPreview.vue.d.ts.map +1 -1
  22. package/dist/components/input/InputActions.vue.d.ts.map +1 -1
  23. package/dist/composables/useKeyboardShortcut.d.ts +9 -5
  24. package/dist/composables/useKeyboardShortcut.d.ts.map +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/restify-ai.js +2159 -1984
  28. package/dist/restify-ai.umd.cjs +52 -52
  29. package/dist/store/index.d.ts +2 -0
  30. package/dist/store/index.d.ts.map +1 -0
  31. package/dist/store/storage.d.ts +30 -0
  32. package/dist/store/storage.d.ts.map +1 -0
  33. package/dist/store/store.d.ts +246 -0
  34. package/dist/store/store.d.ts.map +1 -0
  35. package/dist/store/utils.d.ts +23 -0
  36. package/dist/store/utils.d.ts.map +1 -0
  37. package/dist/store.d.ts +1 -246
  38. package/dist/store.d.ts.map +1 -1
  39. package/dist/style.css +1 -1
  40. package/dist/types/api.d.ts +45 -0
  41. package/dist/types/api.d.ts.map +1 -0
  42. package/dist/types/chat.d.ts +56 -0
  43. package/dist/types/chat.d.ts.map +1 -0
  44. package/dist/types/config.d.ts +170 -0
  45. package/dist/types/config.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +15 -599
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/types/mentions.d.ts +34 -0
  49. package/dist/types/mentions.d.ts.map +1 -0
  50. package/dist/types/setup.d.ts +13 -0
  51. package/dist/types/setup.d.ts.map +1 -0
  52. package/dist/types/slots.d.ts +33 -0
  53. package/dist/types/slots.d.ts.map +1 -0
  54. package/dist/types/suggestions.d.ts +32 -0
  55. package/dist/types/suggestions.d.ts.map +1 -0
  56. package/dist/types/texts.d.ts +57 -0
  57. package/dist/types/texts.d.ts.map +1 -0
  58. package/dist/types/ui.d.ts +102 -0
  59. package/dist/types/ui.d.ts.map +1 -0
  60. package/package.json +31 -11
@@ -0,0 +1,2 @@
1
+ export { useRestifyAiStore, type RestifyAiStore } from './store';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { ChatMessage, ChatAttachment, SetupState } from '../types';
2
+
3
+ export declare function saveChatHistory(history: ChatMessage[]): void;
4
+ export interface LoadedChatState {
5
+ history: ChatMessage[];
6
+ hasOrphanedUserMessage: boolean;
7
+ orphanedMessage?: {
8
+ question: string;
9
+ attachments: ChatAttachment[];
10
+ };
11
+ }
12
+ export declare function loadChatHistory(): LoadedChatState;
13
+ export declare function clearStoredChatHistory(): void;
14
+ export declare function saveErrorState(error: {
15
+ message: string | null;
16
+ failedQuestion: string | null;
17
+ failedAttachments: ChatAttachment[] | null;
18
+ }): void;
19
+ export declare function loadErrorState(): {
20
+ message: string | null;
21
+ failedQuestion: string | null;
22
+ failedAttachments: ChatAttachment[] | null;
23
+ } | null;
24
+ export declare function clearErrorState(): void;
25
+ export declare function saveDrawerState(isOpen: boolean): void;
26
+ export declare function loadDrawerState(): boolean;
27
+ export declare function isSetupComplete(): boolean;
28
+ export declare function markSetupComplete(): void;
29
+ export declare function getDefaultSetupState(): SetupState;
30
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/store/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAiBvE,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAM5D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,sBAAsB,EAAE,OAAO,CAAA;IAC/B,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,cAAc,EAAE,CAAA;KAAE,CAAA;CACtE;AAED,wBAAgB,eAAe,IAAI,eAAe,CAoCjD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAM7C;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAUjJ;AAED,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAU7I;AAED,wBAAgB,eAAe,IAAI,IAAI,CAMtC;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAMrD;AAED,wBAAgB,eAAe,IAAI,OAAO,CAUzC;AAGD,wBAAgB,eAAe,IAAI,OAAO,CAMzC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED,wBAAgB,oBAAoB,IAAI,UAAU,CASjD"}
@@ -0,0 +1,246 @@
1
+ import { ChatAttachment, Mention, PageContext, AiStoreState, SetupState } from '../types';
2
+
3
+ export declare const useRestifyAiStore: import('pinia').StoreDefinition<"restifyAiStore", AiStoreState, {
4
+ hasMessages: (state: {
5
+ chatHistoryLimit: number;
6
+ chatHistory: {
7
+ id: string;
8
+ role: import('..').ChatRole | string;
9
+ message: string;
10
+ loading?: boolean | undefined;
11
+ streaming?: boolean | undefined;
12
+ timestamp?: number | undefined;
13
+ created_at?: (string | Date) | undefined;
14
+ attachments?: {
15
+ id: string;
16
+ name: string;
17
+ url?: string | undefined;
18
+ type?: string | undefined;
19
+ size?: number | undefined;
20
+ extractedText?: string | undefined;
21
+ uploading?: boolean | undefined;
22
+ progress?: number | undefined;
23
+ previewUrl?: string | undefined;
24
+ }[] | undefined;
25
+ mentions?: {
26
+ id: string;
27
+ name: string;
28
+ type: string;
29
+ metadata?: (Record<string, any> | null) | undefined;
30
+ }[] | undefined;
31
+ }[];
32
+ uploadedFiles: Record<string, ChatAttachment>;
33
+ loading: boolean;
34
+ showChat: boolean;
35
+ isFullscreen: boolean;
36
+ sending: boolean;
37
+ pageContext: {
38
+ pageType: string;
39
+ entityId?: string | undefined;
40
+ entityType?: string | undefined;
41
+ metadata?: Record<string, any> | undefined;
42
+ routePath?: string | undefined;
43
+ } | null;
44
+ quota: {
45
+ limit: number;
46
+ used: number;
47
+ remaining: number;
48
+ };
49
+ error: {
50
+ message: string | null;
51
+ failedQuestion: string | null;
52
+ failedAttachments?: {
53
+ id: string;
54
+ name: string;
55
+ url?: string | undefined;
56
+ type?: string | undefined;
57
+ size?: number | undefined;
58
+ extractedText?: string | undefined;
59
+ uploading?: boolean | undefined;
60
+ progress?: number | undefined;
61
+ previewUrl?: string | undefined;
62
+ }[] | null | undefined;
63
+ timestamp: number | null;
64
+ quotaExceeded?: boolean | undefined;
65
+ };
66
+ supportRequestMode: boolean;
67
+ setupState: {
68
+ isActive: boolean;
69
+ currentStep: import('../types').SetupStep;
70
+ testApiKey: string | null;
71
+ connectionStatus: "idle" | "testing" | "connected" | "failed";
72
+ backendConfigured: boolean;
73
+ lastError: string | null;
74
+ };
75
+ } & import('pinia').PiniaCustomStateProperties<AiStoreState>) => boolean;
76
+ isInSetupMode: (state: {
77
+ chatHistoryLimit: number;
78
+ chatHistory: {
79
+ id: string;
80
+ role: import('..').ChatRole | string;
81
+ message: string;
82
+ loading?: boolean | undefined;
83
+ streaming?: boolean | undefined;
84
+ timestamp?: number | undefined;
85
+ created_at?: (string | Date) | undefined;
86
+ attachments?: {
87
+ id: string;
88
+ name: string;
89
+ url?: string | undefined;
90
+ type?: string | undefined;
91
+ size?: number | undefined;
92
+ extractedText?: string | undefined;
93
+ uploading?: boolean | undefined;
94
+ progress?: number | undefined;
95
+ previewUrl?: string | undefined;
96
+ }[] | undefined;
97
+ mentions?: {
98
+ id: string;
99
+ name: string;
100
+ type: string;
101
+ metadata?: (Record<string, any> | null) | undefined;
102
+ }[] | undefined;
103
+ }[];
104
+ uploadedFiles: Record<string, ChatAttachment>;
105
+ loading: boolean;
106
+ showChat: boolean;
107
+ isFullscreen: boolean;
108
+ sending: boolean;
109
+ pageContext: {
110
+ pageType: string;
111
+ entityId?: string | undefined;
112
+ entityType?: string | undefined;
113
+ metadata?: Record<string, any> | undefined;
114
+ routePath?: string | undefined;
115
+ } | null;
116
+ quota: {
117
+ limit: number;
118
+ used: number;
119
+ remaining: number;
120
+ };
121
+ error: {
122
+ message: string | null;
123
+ failedQuestion: string | null;
124
+ failedAttachments?: {
125
+ id: string;
126
+ name: string;
127
+ url?: string | undefined;
128
+ type?: string | undefined;
129
+ size?: number | undefined;
130
+ extractedText?: string | undefined;
131
+ uploading?: boolean | undefined;
132
+ progress?: number | undefined;
133
+ previewUrl?: string | undefined;
134
+ }[] | null | undefined;
135
+ timestamp: number | null;
136
+ quotaExceeded?: boolean | undefined;
137
+ };
138
+ supportRequestMode: boolean;
139
+ setupState: {
140
+ isActive: boolean;
141
+ currentStep: import('../types').SetupStep;
142
+ testApiKey: string | null;
143
+ connectionStatus: "idle" | "testing" | "connected" | "failed";
144
+ backendConfigured: boolean;
145
+ lastError: string | null;
146
+ };
147
+ } & import('pinia').PiniaCustomStateProperties<AiStoreState>) => boolean;
148
+ canChat: (state: {
149
+ chatHistoryLimit: number;
150
+ chatHistory: {
151
+ id: string;
152
+ role: import('..').ChatRole | string;
153
+ message: string;
154
+ loading?: boolean | undefined;
155
+ streaming?: boolean | undefined;
156
+ timestamp?: number | undefined;
157
+ created_at?: (string | Date) | undefined;
158
+ attachments?: {
159
+ id: string;
160
+ name: string;
161
+ url?: string | undefined;
162
+ type?: string | undefined;
163
+ size?: number | undefined;
164
+ extractedText?: string | undefined;
165
+ uploading?: boolean | undefined;
166
+ progress?: number | undefined;
167
+ previewUrl?: string | undefined;
168
+ }[] | undefined;
169
+ mentions?: {
170
+ id: string;
171
+ name: string;
172
+ type: string;
173
+ metadata?: (Record<string, any> | null) | undefined;
174
+ }[] | undefined;
175
+ }[];
176
+ uploadedFiles: Record<string, ChatAttachment>;
177
+ loading: boolean;
178
+ showChat: boolean;
179
+ isFullscreen: boolean;
180
+ sending: boolean;
181
+ pageContext: {
182
+ pageType: string;
183
+ entityId?: string | undefined;
184
+ entityType?: string | undefined;
185
+ metadata?: Record<string, any> | undefined;
186
+ routePath?: string | undefined;
187
+ } | null;
188
+ quota: {
189
+ limit: number;
190
+ used: number;
191
+ remaining: number;
192
+ };
193
+ error: {
194
+ message: string | null;
195
+ failedQuestion: string | null;
196
+ failedAttachments?: {
197
+ id: string;
198
+ name: string;
199
+ url?: string | undefined;
200
+ type?: string | undefined;
201
+ size?: number | undefined;
202
+ extractedText?: string | undefined;
203
+ uploading?: boolean | undefined;
204
+ progress?: number | undefined;
205
+ previewUrl?: string | undefined;
206
+ }[] | null | undefined;
207
+ timestamp: number | null;
208
+ quotaExceeded?: boolean | undefined;
209
+ };
210
+ supportRequestMode: boolean;
211
+ setupState: {
212
+ isActive: boolean;
213
+ currentStep: import('../types').SetupStep;
214
+ testApiKey: string | null;
215
+ connectionStatus: "idle" | "testing" | "connected" | "failed";
216
+ backendConfigured: boolean;
217
+ lastError: string | null;
218
+ };
219
+ } & import('pinia').PiniaCustomStateProperties<AiStoreState>) => boolean;
220
+ }, {
221
+ scrollToBottom(delay?: number): Promise<void>;
222
+ parseStreamContent(eventType: string | undefined, eventData: string): string | null;
223
+ askQuestion(question: string, attachments?: ChatAttachment[], mentions?: Mention[], isSupportRequest?: boolean): Promise<boolean>;
224
+ cancelRequest(): void;
225
+ clearChatHistory(): void;
226
+ retry(): Promise<boolean>;
227
+ clearError(): void;
228
+ toggleSupportMode(): void;
229
+ fetchQuota(): Promise<void>;
230
+ uploadFile(file: File): Promise<ChatAttachment | null>;
231
+ setPageContext(context: PageContext | null): void;
232
+ toggleDrawer(): void;
233
+ openDrawer(): void;
234
+ closeDrawer(): void;
235
+ startSupportRequest(): void;
236
+ cancelSupportRequest(): void;
237
+ registerUploadedFile(attachment: ChatAttachment): void;
238
+ startSetupMode(): void;
239
+ setSetupStep(step: SetupState["currentStep"]): void;
240
+ setTestApiKey(key: string): void;
241
+ testConnection(): Promise<boolean>;
242
+ completeSetup(): void;
243
+ skipSetup(): void;
244
+ }>;
245
+ export type RestifyAiStore = ReturnType<typeof useRestifyAiStore>;
246
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,OAAO,EACP,WAAW,EACX,YAAY,EACZ,UAAU,EAGX,MAAM,UAAU,CAAA;AA+BjB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAwDE,MAAM,GAAO,OAAO,CAAC,IAAI,CAAC;kCASxB,MAAM,GAAG,SAAS,aAAa,MAAM,GAAG,MAAM,GAAG,IAAI;0BAQvE,MAAM,gBACH,cAAc,EAAE,aACnB,OAAO,EAAE,qBACD,OAAO,GACxB,OAAO,CAAC,OAAO,CAAC;qBA8PF,IAAI;wBAUD,IAAI;aAYT,OAAO,CAAC,OAAO,CAAC;kBAgBjB,IAAI;yBAWG,IAAI;kBAIL,OAAO,CAAC,IAAI,CAAC;qBAoCV,IAAI,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;4BA0EpC,WAAW,GAAG,IAAI,GAAG,IAAI;oBAIjC,IAAI;kBAQN,IAAI;mBAOH,IAAI;2BAMI,IAAI;4BAIH,IAAI;qCAIK,cAAc,GAAG,IAAI;sBAMpC,IAAI;uBAWH,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI;uBAIhC,MAAM,GAAG,IAAI;sBAIR,OAAO,CAAC,OAAO,CAAC;qBAgDvB,IAAI;iBAOR,IAAI;EAKnB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { ChatMessage, ChatAttachment } from '../types';
2
+
3
+ /**
4
+ * Build full URL with baseUrl support
5
+ */
6
+ export declare function buildUrl(endpoint: string | undefined): string;
7
+ /**
8
+ * Convert technical errors to user-friendly messages
9
+ */
10
+ export declare function getUserFriendlyErrorMessage(err: unknown): string;
11
+ /**
12
+ * Default stream parser - supports OpenAI format
13
+ */
14
+ export declare function defaultParseStreamContent(eventData: string, eventType?: string): string | null;
15
+ /**
16
+ * Sleep utility for retry delays
17
+ */
18
+ export declare function sleep(ms: number): Promise<void>;
19
+ /**
20
+ * Extract uploaded files from chat history
21
+ */
22
+ export declare function extractUploadedFiles(history: ChatMessage[]): Record<string, ChatAttachment>;
23
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/store/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG3D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAgB7D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CA2BhE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU9F;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAU3F"}
package/dist/store.d.ts CHANGED
@@ -1,247 +1,2 @@
1
- import { EventSourceMessage } from '@microsoft/fetch-event-source';
2
- import { ChatAttachment, Mention, PageContext, AiStoreState, SetupState } from './types';
3
-
4
- export declare const useRestifyAiStore: import('pinia').StoreDefinition<"restifyAiStore", AiStoreState, {
5
- hasMessages: (state: {
6
- chatHistoryLimit: number;
7
- chatHistory: {
8
- id: string;
9
- role: import('./types').ChatRole | string;
10
- message: string;
11
- loading?: boolean | undefined;
12
- streaming?: boolean | undefined;
13
- timestamp?: number | undefined;
14
- created_at?: (string | Date) | undefined;
15
- attachments?: {
16
- id: string;
17
- name: string;
18
- url?: string | undefined;
19
- type?: string | undefined;
20
- size?: number | undefined;
21
- extractedText?: string | undefined;
22
- uploading?: boolean | undefined;
23
- progress?: number | undefined;
24
- previewUrl?: string | undefined;
25
- }[] | undefined;
26
- mentions?: {
27
- id: string;
28
- name: string;
29
- type: string;
30
- metadata?: (Record<string, any> | null) | undefined;
31
- }[] | undefined;
32
- }[];
33
- uploadedFiles: Record<string, ChatAttachment>;
34
- loading: boolean;
35
- showChat: boolean;
36
- isFullscreen: boolean;
37
- sending: boolean;
38
- pageContext: {
39
- pageType: string;
40
- entityId?: string | undefined;
41
- entityType?: string | undefined;
42
- metadata?: Record<string, any> | undefined;
43
- routePath?: string | undefined;
44
- } | null;
45
- quota: {
46
- limit: number;
47
- used: number;
48
- remaining: number;
49
- };
50
- error: {
51
- message: string | null;
52
- failedQuestion: string | null;
53
- failedAttachments?: {
54
- id: string;
55
- name: string;
56
- url?: string | undefined;
57
- type?: string | undefined;
58
- size?: number | undefined;
59
- extractedText?: string | undefined;
60
- uploading?: boolean | undefined;
61
- progress?: number | undefined;
62
- previewUrl?: string | undefined;
63
- }[] | null | undefined;
64
- timestamp: number | null;
65
- quotaExceeded?: boolean | undefined;
66
- };
67
- supportRequestMode: boolean;
68
- setupState: {
69
- isActive: boolean;
70
- currentStep: import('./types').SetupStep;
71
- testApiKey: string | null;
72
- connectionStatus: "idle" | "testing" | "connected" | "failed";
73
- backendConfigured: boolean;
74
- lastError: string | null;
75
- };
76
- } & import('pinia').PiniaCustomStateProperties<AiStoreState>) => boolean;
77
- isInSetupMode: (state: {
78
- chatHistoryLimit: number;
79
- chatHistory: {
80
- id: string;
81
- role: import('./types').ChatRole | string;
82
- message: string;
83
- loading?: boolean | undefined;
84
- streaming?: boolean | undefined;
85
- timestamp?: number | undefined;
86
- created_at?: (string | Date) | undefined;
87
- attachments?: {
88
- id: string;
89
- name: string;
90
- url?: string | undefined;
91
- type?: string | undefined;
92
- size?: number | undefined;
93
- extractedText?: string | undefined;
94
- uploading?: boolean | undefined;
95
- progress?: number | undefined;
96
- previewUrl?: string | undefined;
97
- }[] | undefined;
98
- mentions?: {
99
- id: string;
100
- name: string;
101
- type: string;
102
- metadata?: (Record<string, any> | null) | undefined;
103
- }[] | undefined;
104
- }[];
105
- uploadedFiles: Record<string, ChatAttachment>;
106
- loading: boolean;
107
- showChat: boolean;
108
- isFullscreen: boolean;
109
- sending: boolean;
110
- pageContext: {
111
- pageType: string;
112
- entityId?: string | undefined;
113
- entityType?: string | undefined;
114
- metadata?: Record<string, any> | undefined;
115
- routePath?: string | undefined;
116
- } | null;
117
- quota: {
118
- limit: number;
119
- used: number;
120
- remaining: number;
121
- };
122
- error: {
123
- message: string | null;
124
- failedQuestion: string | null;
125
- failedAttachments?: {
126
- id: string;
127
- name: string;
128
- url?: string | undefined;
129
- type?: string | undefined;
130
- size?: number | undefined;
131
- extractedText?: string | undefined;
132
- uploading?: boolean | undefined;
133
- progress?: number | undefined;
134
- previewUrl?: string | undefined;
135
- }[] | null | undefined;
136
- timestamp: number | null;
137
- quotaExceeded?: boolean | undefined;
138
- };
139
- supportRequestMode: boolean;
140
- setupState: {
141
- isActive: boolean;
142
- currentStep: import('./types').SetupStep;
143
- testApiKey: string | null;
144
- connectionStatus: "idle" | "testing" | "connected" | "failed";
145
- backendConfigured: boolean;
146
- lastError: string | null;
147
- };
148
- } & import('pinia').PiniaCustomStateProperties<AiStoreState>) => boolean;
149
- canChat: (state: {
150
- chatHistoryLimit: number;
151
- chatHistory: {
152
- id: string;
153
- role: import('./types').ChatRole | string;
154
- message: string;
155
- loading?: boolean | undefined;
156
- streaming?: boolean | undefined;
157
- timestamp?: number | undefined;
158
- created_at?: (string | Date) | undefined;
159
- attachments?: {
160
- id: string;
161
- name: string;
162
- url?: string | undefined;
163
- type?: string | undefined;
164
- size?: number | undefined;
165
- extractedText?: string | undefined;
166
- uploading?: boolean | undefined;
167
- progress?: number | undefined;
168
- previewUrl?: string | undefined;
169
- }[] | undefined;
170
- mentions?: {
171
- id: string;
172
- name: string;
173
- type: string;
174
- metadata?: (Record<string, any> | null) | undefined;
175
- }[] | undefined;
176
- }[];
177
- uploadedFiles: Record<string, ChatAttachment>;
178
- loading: boolean;
179
- showChat: boolean;
180
- isFullscreen: boolean;
181
- sending: boolean;
182
- pageContext: {
183
- pageType: string;
184
- entityId?: string | undefined;
185
- entityType?: string | undefined;
186
- metadata?: Record<string, any> | undefined;
187
- routePath?: string | undefined;
188
- } | null;
189
- quota: {
190
- limit: number;
191
- used: number;
192
- remaining: number;
193
- };
194
- error: {
195
- message: string | null;
196
- failedQuestion: string | null;
197
- failedAttachments?: {
198
- id: string;
199
- name: string;
200
- url?: string | undefined;
201
- type?: string | undefined;
202
- size?: number | undefined;
203
- extractedText?: string | undefined;
204
- uploading?: boolean | undefined;
205
- progress?: number | undefined;
206
- previewUrl?: string | undefined;
207
- }[] | null | undefined;
208
- timestamp: number | null;
209
- quotaExceeded?: boolean | undefined;
210
- };
211
- supportRequestMode: boolean;
212
- setupState: {
213
- isActive: boolean;
214
- currentStep: import('./types').SetupStep;
215
- testApiKey: string | null;
216
- connectionStatus: "idle" | "testing" | "connected" | "failed";
217
- backendConfigured: boolean;
218
- lastError: string | null;
219
- };
220
- } & import('pinia').PiniaCustomStateProperties<AiStoreState>) => boolean;
221
- }, {
222
- scrollToBottom(): Promise<void>;
223
- parseStreamContent(event: EventSourceMessage): string | null;
224
- askQuestion(question: string, attachments?: ChatAttachment[], mentions?: Mention[], isSupportRequest?: boolean): Promise<boolean>;
225
- cancelRequest(): void;
226
- clearChatHistory(): void;
227
- retry(): Promise<boolean>;
228
- clearError(): void;
229
- toggleSupportMode(): void;
230
- fetchQuota(): Promise<void>;
231
- uploadFile(file: File): Promise<ChatAttachment | null>;
232
- setPageContext(context: PageContext | null): void;
233
- toggleDrawer(): void;
234
- openDrawer(): void;
235
- closeDrawer(): void;
236
- startSupportRequest(): void;
237
- cancelSupportRequest(): void;
238
- registerUploadedFile(attachment: ChatAttachment): void;
239
- startSetupMode(): void;
240
- setSetupStep(step: SetupState["currentStep"]): void;
241
- setTestApiKey(key: string): void;
242
- testConnection(): Promise<boolean>;
243
- completeSetup(): void;
244
- skipSetup(): void;
245
- }>;
246
- export type RestifyAiStore = ReturnType<typeof useRestifyAiStore>;
1
+ export { useRestifyAiStore, type RestifyAiStore } from './store/index';
247
2
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AACzF,OAAO,KAAK,EAEV,cAAc,EACd,OAAO,EAGP,WAAW,EACX,YAAY,EACZ,UAAU,EAGX,MAAM,SAAS,CAAA;AAuNhB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAiEF,OAAO,CAAC,IAAI,CAAC;8BAQX,kBAAkB,GAAG,MAAM,GAAG,IAAI;0BAYhD,MAAM,gBACH,cAAc,EAAE,aACnB,OAAO,EAAE,qBACD,OAAO,GACxB,OAAO,CAAC,OAAO,CAAC;qBAwRF,IAAI;wBAUD,IAAI;aAeT,OAAO,CAAC,OAAO,CAAC;kBAmBjB,IAAI;yBAYG,IAAI;kBAIL,OAAO,CAAC,IAAI,CAAC;qBA4CV,IAAI,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;4BAwFpC,WAAW,GAAG,IAAI,GAAG,IAAI;oBAIjC,IAAI;kBAMN,IAAI;mBAMH,IAAI;2BAMI,IAAI;4BAIH,IAAI;qCAMK,cAAc,GAAG,IAAI;sBAMpC,IAAI;uBAWH,UAAU,CAAC,aAAa,CAAC,GAAG,IAAI;uBAIhC,MAAM,GAAG,IAAI;sBAIR,OAAO,CAAC,OAAO,CAAC;qBAkDvB,IAAI;iBAOR,IAAI;EAKnB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA"}
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @keyframes rai-fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:rai-fade-in-up .3s ease-out}.scrollbar-thin::-webkit-scrollbar{width:6px}.scrollbar-thin::-webkit-scrollbar-track{background:transparent}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:#9ca3afb3}.dark .scrollbar-thin::-webkit-scrollbar-thumb{background-color:#4b556380}.dark .scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:#4b5563b3}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.dark .scrollbar-thin{scrollbar-color:rgba(75,85,99,.5) transparent}@media (prefers-reduced-motion: reduce){.animate-in{animation:none}}[data-v-df348786] .mention{display:inline-flex;align-items:center;border-radius:.375rem;background-color:#6366f133;padding:.125rem .5rem;font-weight:500;--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}[data-v-df348786] .bg-primary .mention{background-color:#fff3;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.rai-slide-left-enter-active[data-v-e286ec63],.rai-slide-left-leave-active[data-v-e286ec63]{transition:transform .28s cubic-bezier(.32,.72,0,1)}.rai-slide-left-enter-from[data-v-e286ec63],.rai-slide-left-leave-to[data-v-e286ec63]{transform:translate(100%)}.rai-slide-right-enter-active[data-v-e286ec63],.rai-slide-right-leave-active[data-v-e286ec63]{transition:transform .28s cubic-bezier(.32,.72,0,1)}.rai-slide-right-enter-from[data-v-e286ec63],.rai-slide-right-leave-to[data-v-e286ec63]{transform:translate(-100%)}.rai-fade-enter-active[data-v-e286ec63],.rai-fade-leave-active[data-v-e286ec63]{transition:opacity .2s ease-out}.rai-fade-enter-from[data-v-e286ec63],.rai-fade-leave-to[data-v-e286ec63]{opacity:0}
1
+ @keyframes rai-fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:rai-fade-in-up .3s ease-out}.scrollbar-thin::-webkit-scrollbar{width:6px}.scrollbar-thin::-webkit-scrollbar-track{background:transparent}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:#9ca3afb3}.dark .scrollbar-thin::-webkit-scrollbar-thumb{background-color:#4b556380}.dark .scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:#4b5563b3}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.dark .scrollbar-thin{scrollbar-color:rgba(75,85,99,.5) transparent}@media (prefers-reduced-motion: reduce){.animate-in{animation:none}}[data-v-d045bee3] .mention{display:inline-flex;align-items:center;border-radius:.375rem;background-color:#6366f133;padding:.125rem .5rem;font-weight:500;--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}[data-v-d045bee3] .bg-primary .mention{background-color:#fff3;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.rai-slide-left-enter-active[data-v-45532662],.rai-slide-left-leave-active[data-v-45532662]{transition:transform .28s cubic-bezier(.32,.72,0,1)}.rai-slide-left-enter-from[data-v-45532662],.rai-slide-left-leave-to[data-v-45532662]{transform:translate(100%)}.rai-slide-right-enter-active[data-v-45532662],.rai-slide-right-leave-active[data-v-45532662]{transition:transform .28s cubic-bezier(.32,.72,0,1)}.rai-slide-right-enter-from[data-v-45532662],.rai-slide-right-leave-to[data-v-45532662]{transform:translate(-100%)}.rai-fade-enter-active[data-v-45532662],.rai-fade-leave-active[data-v-45532662]{transition:opacity .2s ease-out}.rai-fade-enter-from[data-v-45532662],.rai-fade-leave-to[data-v-45532662]{opacity:0}
@@ -0,0 +1,45 @@
1
+ import { ChatMessage } from './chat';
2
+
3
+ /**
4
+ * Request/Response Types for hooks
5
+ */
6
+ export interface AiRequestPayload {
7
+ message: string;
8
+ history: Array<{
9
+ role: string;
10
+ content: string;
11
+ }>;
12
+ stream: boolean;
13
+ files?: Array<Record<string, unknown>>;
14
+ context?: Record<string, unknown>;
15
+ contact_support?: boolean;
16
+ model?: string;
17
+ temperature?: number;
18
+ max_tokens?: number;
19
+ [key: string]: unknown;
20
+ }
21
+ export interface AiStreamChunk {
22
+ content: string;
23
+ done: boolean;
24
+ raw: unknown;
25
+ }
26
+ /**
27
+ * Lifecycle hooks
28
+ */
29
+ export type BeforeSendHook = (payload: AiRequestPayload) => AiRequestPayload | Promise<AiRequestPayload>;
30
+ export type AfterResponseHook = (message: ChatMessage) => void | Promise<void>;
31
+ export type OnStreamStartHook = () => void;
32
+ export type OnStreamEndHook = (fullMessage: string) => void;
33
+ export type OnStreamChunkHook = (chunk: AiStreamChunk) => void;
34
+ export type StreamParserFunction = (eventData: string, eventType?: string) => string | null;
35
+ export type RequestInterceptor = (url: string, options: RequestInit) => RequestInit | Promise<RequestInit>;
36
+ export type ResponseInterceptor = (response: Response) => Response | Promise<Response>;
37
+ /**
38
+ * Retry configuration
39
+ */
40
+ export interface RetryConfig {
41
+ maxRetries?: number;
42
+ retryDelay?: number;
43
+ shouldRetry?: (error: Error, attempt: number) => boolean;
44
+ }
45
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEzD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KAEhB,CAAC,CAAA;IACF,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;CACb;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AACxG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAC9E,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAA;AAC1C,MAAM,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;AAC3D,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;AAC3F,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAC1G,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAA;CACzD"}