@kodaris/krubble-app-components 1.0.70 → 1.0.72
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.
- package/dist/chatbot.d.ts +137 -26
- package/dist/chatbot.d.ts.map +1 -1
- package/dist/chatbot.js +881 -206
- package/dist/chatbot.js.map +1 -1
- package/dist/krubble-app.bundled.js +878 -206
- package/dist/krubble-app.bundled.js.map +1 -1
- package/dist/krubble-app.bundled.min.js +563 -175
- package/dist/krubble-app.bundled.min.js.map +1 -1
- package/dist/krubble-app.umd.js +878 -206
- package/dist/krubble-app.umd.js.map +1 -1
- package/dist/krubble-app.umd.min.js +579 -191
- package/dist/krubble-app.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/chatbot.d.ts
CHANGED
|
@@ -1,27 +1,72 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
/**
|
|
3
|
-
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* An internal file stored on the server. Mirrors the backend InternalFileViewDto
|
|
4
|
+
* (and its InternalFileCreateUpdateDto base), so files loaded with a conversation
|
|
5
|
+
* pass through unchanged. The chatbot displays images from these by building a
|
|
6
|
+
* view URL from `internalFileID` at render time.
|
|
7
7
|
*/
|
|
8
|
-
export interface
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
name?: string;
|
|
13
|
-
/** MIME type, if known. */
|
|
8
|
+
export interface KRChatbotInternalFile {
|
|
9
|
+
internalFileID: number;
|
|
10
|
+
internalFileUUID?: string;
|
|
11
|
+
niceName?: string;
|
|
14
12
|
mimeType?: string;
|
|
13
|
+
lastModified?: string;
|
|
14
|
+
fileType?: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
created?: string;
|
|
17
|
+
entityID?: number;
|
|
18
|
+
entityType?: string;
|
|
19
|
+
geoCoordinates?: string;
|
|
20
|
+
imageDetectionType?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
creator?: string;
|
|
24
|
+
keywords?: string;
|
|
25
|
+
subType?: string;
|
|
26
|
+
alt?: string;
|
|
27
|
+
metadata?: string;
|
|
28
|
+
deleted?: boolean;
|
|
29
|
+
extraText?: string;
|
|
30
|
+
emailID?: number;
|
|
31
|
+
aiPimSource?: string;
|
|
32
|
+
aiPimLastParsed?: string;
|
|
33
|
+
aiPimStatus?: string;
|
|
34
|
+
folder?: string;
|
|
35
|
+
status?: string;
|
|
36
|
+
extra1?: string;
|
|
37
|
+
extra2?: string;
|
|
38
|
+
extra3?: string;
|
|
39
|
+
extra4?: string;
|
|
40
|
+
extra5?: string;
|
|
41
|
+
parentInternalFileID?: number;
|
|
42
|
+
isFolder?: boolean;
|
|
43
|
+
type?: string;
|
|
44
|
+
aiPimEnabled?: boolean;
|
|
15
45
|
}
|
|
16
46
|
/**
|
|
17
|
-
* Chat message interface
|
|
47
|
+
* Chat message interface. Field names mirror the backend
|
|
48
|
+
* ConversationMessageViewDto so loaded messages pass through without remapping.
|
|
18
49
|
*/
|
|
19
50
|
export interface KRChatbotMessage {
|
|
20
|
-
|
|
51
|
+
type: 'user' | 'assistant';
|
|
21
52
|
content: string;
|
|
22
53
|
reasoning?: string;
|
|
23
|
-
/**
|
|
24
|
-
|
|
54
|
+
/** Internal files attached to this message. */
|
|
55
|
+
internalFiles?: KRChatbotInternalFile[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A skill the user can invoke from the composer. Selecting one inserts
|
|
59
|
+
* `/name ` into the message body — there is no persistent skill state.
|
|
60
|
+
*/
|
|
61
|
+
export interface KRChatbotSkill {
|
|
62
|
+
/** Slash name inserted into the message (e.g. `invoice-auditor`). */
|
|
63
|
+
name: string;
|
|
64
|
+
/** Human-readable label shown in the menu and browse dialog. */
|
|
65
|
+
label: string;
|
|
66
|
+
/** Short description shown in the browse dialog cards. */
|
|
67
|
+
description?: string;
|
|
68
|
+
/** Which catalog the skill belongs to, for the browse dialog tabs. */
|
|
69
|
+
source?: 'org' | 'kodaris';
|
|
25
70
|
}
|
|
26
71
|
/**
|
|
27
72
|
* Callback function type for sending messages.
|
|
@@ -32,7 +77,7 @@ export interface KRChatbotMessage {
|
|
|
32
77
|
export type KRChatbotSend = (params: {
|
|
33
78
|
message: string;
|
|
34
79
|
messages: KRChatbotMessage[];
|
|
35
|
-
|
|
80
|
+
internalFiles: File[];
|
|
36
81
|
}) => Promise<Response>;
|
|
37
82
|
/**
|
|
38
83
|
* AI chatbot component with SSE streaming.
|
|
@@ -54,7 +99,7 @@ export type KRChatbotSend = (params: {
|
|
|
54
99
|
* ## Usage
|
|
55
100
|
* ```html
|
|
56
101
|
* <kr-chatbot
|
|
57
|
-
*
|
|
102
|
+
* label="AI Assistant"
|
|
58
103
|
* .send=${(params) => {
|
|
59
104
|
* return fetch('/api/ai/chat/stream', {
|
|
60
105
|
* method: 'POST',
|
|
@@ -94,16 +139,25 @@ export declare class KRChatbot extends LitElement {
|
|
|
94
139
|
/**
|
|
95
140
|
* Callback function for sending messages. Receives the user's message and
|
|
96
141
|
* current conversation history. Must return a Response with a streaming SSE body.
|
|
142
|
+
*
|
|
143
|
+
* Optional — when not set, the chatbot uses its built-in default that streams
|
|
144
|
+
* from the Kodaris Bedrock conversation endpoints. Set this to override.
|
|
97
145
|
*/
|
|
98
146
|
send: KRChatbotSend | null;
|
|
99
147
|
/**
|
|
100
148
|
* Callback function called when the user clears the conversation.
|
|
101
149
|
* Must return a Promise — messages are only cleared if it resolves.
|
|
150
|
+
*
|
|
151
|
+
* Optional — when not set, the chatbot uses its built-in default that clears
|
|
152
|
+
* the Kodaris Bedrock conversation state. Set this to override.
|
|
102
153
|
*/
|
|
103
154
|
clear: (() => Promise<unknown>) | null;
|
|
104
155
|
/**
|
|
105
156
|
* Callback function called on init to load existing conversation messages.
|
|
106
157
|
* Must return a Promise that resolves with an array of KRChatbotMessage.
|
|
158
|
+
*
|
|
159
|
+
* Optional — when not set, the chatbot uses its built-in default that loads
|
|
160
|
+
* existing messages from the Kodaris Bedrock conversation. Set this to override.
|
|
107
161
|
*/
|
|
108
162
|
load: (() => Promise<KRChatbotMessage[]>) | null;
|
|
109
163
|
/**
|
|
@@ -112,17 +166,19 @@ export declare class KRChatbot extends LitElement {
|
|
|
112
166
|
*/
|
|
113
167
|
messages: KRChatbotMessage[];
|
|
114
168
|
/**
|
|
115
|
-
* Header
|
|
169
|
+
* Header label text.
|
|
116
170
|
*/
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Header subtitle text (shown below title with a green status dot).
|
|
120
|
-
*/
|
|
121
|
-
subtitle: string;
|
|
171
|
+
label: string;
|
|
122
172
|
/**
|
|
123
173
|
* Input placeholder text.
|
|
124
174
|
*/
|
|
125
175
|
placeholder: string;
|
|
176
|
+
/**
|
|
177
|
+
* Skills the user can invoke by typing `/` in the composer. Selecting one
|
|
178
|
+
* inserts `/name ` into the message. The `/` menu shows the first 15 (filtered
|
|
179
|
+
* as the user types); "Browse all skills" opens a dialog with the full list.
|
|
180
|
+
*/
|
|
181
|
+
skills: KRChatbotSkill[];
|
|
126
182
|
/**
|
|
127
183
|
* Whether the chat panel is open. Only relevant in floating mode.
|
|
128
184
|
*/
|
|
@@ -133,21 +189,49 @@ export declare class KRChatbot extends LitElement {
|
|
|
133
189
|
* then driven via the `open()` / `close()` / `toggle()` methods.
|
|
134
190
|
*/
|
|
135
191
|
hideToggle: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Layout mode.
|
|
194
|
+
* - `'floating'` (default): the chatbot is a fixed bottom-right widget with a
|
|
195
|
+
* toggle button, and the panel can be dragged and resized. This is the
|
|
196
|
+
* traditional chat-widget appearance.
|
|
197
|
+
* - `'inline'`: the chatbot drops its fixed positioning and fills its parent
|
|
198
|
+
* container (100% width/height, no border radius/shadow, no toggle, no
|
|
199
|
+
* drag/resize). The panel is always open. Use this to embed the chat as a
|
|
200
|
+
* full page or panel region.
|
|
201
|
+
*/
|
|
202
|
+
variant: 'floating' | 'inline';
|
|
136
203
|
private _inputValue;
|
|
137
204
|
private _isStreaming;
|
|
138
|
-
private _statusText;
|
|
139
205
|
private _error;
|
|
140
206
|
/** Images staged in the composer, before the message is sent. */
|
|
141
|
-
private
|
|
207
|
+
private _pendingInternalFiles;
|
|
142
208
|
/** True while a file is being dragged over the panel (shows the drop overlay). */
|
|
143
209
|
private _isDraggingFile;
|
|
210
|
+
/** Whether the `/` skill menu is open above the composer. */
|
|
211
|
+
private _skillMenuOpened;
|
|
212
|
+
/** Current `/` query (text after the slash), used to filter the skill menu. */
|
|
213
|
+
private _skillQuery;
|
|
214
|
+
/** Highlighted item in the skill menu for keyboard navigation (-1 = none). */
|
|
215
|
+
private _skillHighlighted;
|
|
216
|
+
/** Index of the message whose copy button just flashed "Copied" (-1 = none). */
|
|
217
|
+
private _copiedIndex;
|
|
218
|
+
/** Whether the "Browse all skills" dialog is open. */
|
|
219
|
+
private _skillBrowseOpened;
|
|
220
|
+
/** Active tab in the browse dialog. */
|
|
221
|
+
private _skillBrowseSource;
|
|
222
|
+
/** Search text in the browse dialog. */
|
|
223
|
+
private _skillBrowseQuery;
|
|
144
224
|
private _panelEl;
|
|
145
225
|
private _messagesEl;
|
|
146
226
|
private _inputEl;
|
|
147
227
|
private _fileInputEl;
|
|
228
|
+
private _inputWrapperEl;
|
|
229
|
+
private _skillMenuEl;
|
|
148
230
|
connectedCallback(): void;
|
|
149
231
|
disconnectedCallback(): void;
|
|
150
232
|
updated(changed: Map<string, unknown>): void;
|
|
233
|
+
/** Anchor the fixed skill menu to the composer, opening upward above it. */
|
|
234
|
+
private _positionSkillMenu;
|
|
151
235
|
/**
|
|
152
236
|
* Stops the current stream without clearing the conversation.
|
|
153
237
|
*/
|
|
@@ -189,6 +273,22 @@ export declare class KRChatbot extends LitElement {
|
|
|
189
273
|
private _applyStoredLayout;
|
|
190
274
|
private _handleInputChange;
|
|
191
275
|
private _handleKeyDown;
|
|
276
|
+
/** Run the skill-menu item at the given flat index (0/1 = actions, then skills). */
|
|
277
|
+
private _activateSkillMenuItem;
|
|
278
|
+
/** Skills matching the current `/` query, capped at the first 15. */
|
|
279
|
+
private _filteredSkills;
|
|
280
|
+
/** The `+` button toggles the skill/attachment menu open (showing all skills). */
|
|
281
|
+
private _handlePlusClick;
|
|
282
|
+
/** Insert `/name ` into the composer and focus it, ready for the message. */
|
|
283
|
+
private _handleSkillSelect;
|
|
284
|
+
/** Copy a message's text to the clipboard and briefly flash "Copied". */
|
|
285
|
+
private _handleCopyMessage;
|
|
286
|
+
private _handleSkillBrowseOpen;
|
|
287
|
+
private _handleSkillBrowseClose;
|
|
288
|
+
private _handleSkillBrowseSearch;
|
|
289
|
+
private _handleSkillBrowseTabChange;
|
|
290
|
+
/** Skills for the browse dialog's active tab, filtered by its search box. */
|
|
291
|
+
private _browseSkills;
|
|
192
292
|
private _openFilePicker;
|
|
193
293
|
private _handleFileInputChange;
|
|
194
294
|
private _handlePaste;
|
|
@@ -201,8 +301,8 @@ export declare class KRChatbot extends LitElement {
|
|
|
201
301
|
private _addFiles;
|
|
202
302
|
private _removePending;
|
|
203
303
|
private _clearPending;
|
|
204
|
-
/** Open the shared full-screen previewer for
|
|
205
|
-
private
|
|
304
|
+
/** Open the shared full-screen previewer for a message image. */
|
|
305
|
+
private _openImage;
|
|
206
306
|
/** Whether the send button is active: needs text or at least one image. */
|
|
207
307
|
private _canSend;
|
|
208
308
|
private _handleSubmit;
|
|
@@ -212,6 +312,17 @@ export declare class KRChatbot extends LitElement {
|
|
|
212
312
|
private _handleErrorDismiss;
|
|
213
313
|
private _readStreamChunk;
|
|
214
314
|
private _handleStreamError;
|
|
315
|
+
/** The `/` skill menu shown above the composer while typing a slash command. */
|
|
316
|
+
private _renderSkillMenu;
|
|
317
|
+
/** The "Browse all skills" dialog — a searchable grid of Org / Kodaris cards. */
|
|
318
|
+
private _renderSkillBrowse;
|
|
319
|
+
/** The card grid for the browse dialog's active tab. */
|
|
320
|
+
private _renderSkillGrid;
|
|
321
|
+
/**
|
|
322
|
+
* Render a user message, highlighting a leading `/skill-name` token when it
|
|
323
|
+
* matches a known skill (like the way Claude highlights slash commands).
|
|
324
|
+
*/
|
|
325
|
+
private _renderUserContent;
|
|
215
326
|
render(): import("lit-html").TemplateResult<1>;
|
|
216
327
|
}
|
|
217
328
|
declare global {
|
package/dist/chatbot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatbot.d.ts","sourceRoot":"","sources":["../src/chatbot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"chatbot.d.ts","sourceRoot":"","sources":["../src/chatbot.ts"],"names":[],"mappings":"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"}
|