juneau 0.1.3 → 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.
- package/README.md +137 -49
- package/dist/adapters/mockAdapter.d.ts.map +1 -1
- package/dist/components/AiChatHeader/AiChatHeader.d.ts +4 -3
- package/dist/components/AiChatHeader/AiChatHeader.d.ts.map +1 -1
- package/dist/components/AiSidebar/AiSidebar.d.ts +7 -8
- package/dist/components/AiSidebar/AiSidebar.d.ts.map +1 -1
- package/dist/components/icons.d.ts +3 -1
- package/dist/components/icons.d.ts.map +1 -1
- package/dist/components/parts/AiActivityPart.d.ts +7 -0
- package/dist/components/parts/AiActivityPart.d.ts.map +1 -0
- package/dist/components/parts/AiMessagePartRenderer.d.ts.map +1 -1
- package/dist/context/AiChatContext.d.ts +16 -0
- package/dist/context/AiChatContext.d.ts.map +1 -0
- package/dist/context/AiChatProvider.d.ts +13 -0
- package/dist/context/AiChatProvider.d.ts.map +1 -0
- package/dist/core/types.d.ts +15 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/hooks/useAiChat.d.ts.map +1 -1
- package/dist/i18n/locales/cs.d.ts.map +1 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/types.d.ts +2 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/index.cjs +34 -33
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2429 -2294
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,13 +3,16 @@
|
|
|
3
3
|
React component library for building AI chat interfaces. Streaming-first, adapter-based, fully themeable.
|
|
4
4
|
|
|
5
5
|
```tsx
|
|
6
|
-
import { JuneauProvider, AiSidebar, createSseAdapter } from 'juneau';
|
|
6
|
+
import { JuneauProvider, AiChatProvider, AiSidebar, createSseAdapter } from 'juneau';
|
|
7
7
|
import 'juneau/dist/style.css';
|
|
8
8
|
|
|
9
9
|
const adapter = createSseAdapter('/api/chat');
|
|
10
10
|
|
|
11
11
|
<JuneauProvider>
|
|
12
|
-
<
|
|
12
|
+
<AiChatProvider adapter={adapter}>
|
|
13
|
+
<App />
|
|
14
|
+
<AiSidebar />
|
|
15
|
+
</AiChatProvider>
|
|
13
16
|
</JuneauProvider>
|
|
14
17
|
```
|
|
15
18
|
|
|
@@ -41,10 +44,10 @@ It receives the conversation history and streams back typed events:
|
|
|
41
44
|
|
|
42
45
|
```ts
|
|
43
46
|
type AiStreamEvent =
|
|
44
|
-
| { type: 'text'; text: string }
|
|
45
|
-
| { type: 'part'; part:
|
|
46
|
-
| { type: 'done' }
|
|
47
|
-
| { type: 'error'; message: string }
|
|
47
|
+
| { type: 'text'; text: string } // streamed text chunk — append to current bubble
|
|
48
|
+
| { type: 'part'; part: AiMessagePart } // rich UI block (table, proposal, activity, error)
|
|
49
|
+
| { type: 'done' } // stream finished cleanly
|
|
50
|
+
| { type: 'error'; message: string } // stream failed
|
|
48
51
|
```
|
|
49
52
|
|
|
50
53
|
This means your API keys stay on your backend, you control auth, rate limiting, model selection — Juneau just renders whatever comes back.
|
|
@@ -187,22 +190,23 @@ Shipped for local development. No backend needed — responds to keywords in the
|
|
|
187
190
|
|---|---|
|
|
188
191
|
| `"show"`, `"list"`, `"data"`, `"table"` | A rendered data table |
|
|
189
192
|
| `"suggest"`, `"recommend"`, `"proposal"` | A proposal card with confirm/cancel |
|
|
193
|
+
| `"activity"`, `"progress"`, `"document"` | An activity timeline with running/done states |
|
|
190
194
|
| `"help"`, `"what can you do"` | Capability overview |
|
|
191
195
|
| `"error"`, `"fail"` | Simulated error response |
|
|
192
196
|
| anything else | Explains the available triggers |
|
|
193
197
|
|
|
194
198
|
```ts
|
|
195
199
|
import { mockAdapter } from 'juneau';
|
|
196
|
-
|
|
200
|
+
// Pass to AiChatProvider — see below
|
|
197
201
|
```
|
|
198
202
|
|
|
199
203
|
---
|
|
200
204
|
|
|
201
|
-
##
|
|
205
|
+
## Providers
|
|
202
206
|
|
|
203
207
|
### `<JuneauProvider>`
|
|
204
208
|
|
|
205
|
-
Wrap your app
|
|
209
|
+
Wrap your app once. Provides theme tokens and UI labels to all Juneau components below it.
|
|
206
210
|
|
|
207
211
|
```tsx
|
|
208
212
|
import { JuneauProvider, juneauCs } from 'juneau';
|
|
@@ -224,28 +228,75 @@ import { JuneauProvider, juneauCs } from 'juneau';
|
|
|
224
228
|
|
|
225
229
|
---
|
|
226
230
|
|
|
231
|
+
### `<AiChatProvider>`
|
|
232
|
+
|
|
233
|
+
Holds the shared conversation state. Wrap your app (or layout) once — any page can then render `<AiSidebar />` without losing conversation history on navigation.
|
|
234
|
+
|
|
235
|
+
```tsx
|
|
236
|
+
import { AiChatProvider } from 'juneau';
|
|
237
|
+
|
|
238
|
+
<AiChatProvider
|
|
239
|
+
adapter={myAdapter}
|
|
240
|
+
onProposalConfirm={(id, payload) => handleAction(id, payload)}
|
|
241
|
+
onProposalCancel={(id) => handleDismiss(id)}
|
|
242
|
+
>
|
|
243
|
+
<App />
|
|
244
|
+
</AiChatProvider>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
| Prop | Type | Description |
|
|
248
|
+
|---|---|---|
|
|
249
|
+
| `adapter` | `AiBackendAdapter` | **Required.** Your adapter. |
|
|
250
|
+
| `context` | `Record<string, unknown>` | Initial context forwarded to every adapter call. Update per-page via `setContext()`. |
|
|
251
|
+
| `onProposalConfirm` | `(id, payload) => void` | Called when user confirms a proposal card. |
|
|
252
|
+
| `onProposalCancel` | `(id) => void` | Called when user cancels a proposal card. |
|
|
253
|
+
|
|
254
|
+
**Updating context per page:**
|
|
255
|
+
|
|
256
|
+
Use `setContext()` from `useAiChatContext()` to tell the AI where the user is on each page. The context is forwarded opaquely to every `adapter.sendMessage` call as `input.context`.
|
|
257
|
+
|
|
258
|
+
```tsx
|
|
259
|
+
import { useAiChatContext } from 'juneau';
|
|
260
|
+
|
|
261
|
+
function InvoicesPage() {
|
|
262
|
+
const { setContext } = useAiChatContext();
|
|
263
|
+
|
|
264
|
+
useEffect(() => {
|
|
265
|
+
setContext({
|
|
266
|
+
page: 'invoices',
|
|
267
|
+
availableTools: ['search', 'export'],
|
|
268
|
+
userRole: 'admin',
|
|
269
|
+
});
|
|
270
|
+
}, []);
|
|
271
|
+
|
|
272
|
+
return <main>...</main>;
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Components
|
|
279
|
+
|
|
227
280
|
### `<AiSidebar>`
|
|
228
281
|
|
|
229
|
-
|
|
282
|
+
Fixed-position chat panel. Reads all state from the nearest `<AiChatProvider>` — renders wherever you place it, conversation persists across navigation.
|
|
283
|
+
|
|
284
|
+
The sidebar anchors to the bottom-right of the viewport and opens at 60% screen height by default. Users can minimize it to a compact header bar.
|
|
230
285
|
|
|
231
286
|
```tsx
|
|
232
287
|
<AiSidebar
|
|
233
|
-
adapter={adapter}
|
|
234
288
|
title="AI Assistant"
|
|
235
|
-
|
|
289
|
+
height="70vh"
|
|
236
290
|
/>
|
|
237
291
|
```
|
|
238
292
|
|
|
239
293
|
| Prop | Type | Description |
|
|
240
294
|
|---|---|---|
|
|
241
|
-
| `adapter` | `AiBackendAdapter` | **Required.** Your adapter. |
|
|
242
295
|
| `title` | `string` | Overrides the `sidebarTitle` label for this instance. |
|
|
243
|
-
| `
|
|
244
|
-
| `icon` | `ReactNode` | Override the header + avatar icon. Defaults to a brain icon. |
|
|
296
|
+
| `icon` | `ReactNode` | Override the header + avatar icon. Defaults to a wand icon. |
|
|
245
297
|
| `actions` | `AiInputAction[]` | Toolbar buttons left of send. Pass `[]` to hide entirely. |
|
|
246
298
|
| `sendIcon` | `ReactNode` | Override the send button icon. |
|
|
247
|
-
| `
|
|
248
|
-
| `onProposalCancel` | `(id) => void` | Called when user cancels a proposal card. |
|
|
299
|
+
| `height` | `string` | Height when open. Any CSS value. Defaults to `'60vh'`. |
|
|
249
300
|
| `className` | `string` | Added to the `<aside>` element. |
|
|
250
301
|
| `style` | `CSSProperties` | Inline styles on the `<aside>`. |
|
|
251
302
|
|
|
@@ -314,6 +365,7 @@ const {
|
|
|
314
365
|
sendGreeting, // (contextHint: string) => Promise<void> — assistant speaks first, no user bubble shown
|
|
315
366
|
stop, // () => void — abort in-flight stream, keep existing messages
|
|
316
367
|
isLoading, // boolean — true while streaming
|
|
368
|
+
isConnecting, // boolean — true from send until first token arrives
|
|
317
369
|
error, // string | null — last error, cleared on next send
|
|
318
370
|
reset, // () => void — clear all messages and abort any stream
|
|
319
371
|
confirmProposal, // (id: string, payload: unknown) => void
|
|
@@ -326,6 +378,21 @@ const {
|
|
|
326
378
|
});
|
|
327
379
|
```
|
|
328
380
|
|
|
381
|
+
## `useAiChatContext` hook
|
|
382
|
+
|
|
383
|
+
Reads the shared state from `<AiChatProvider>`. Includes everything from `useAiChat` plus `setContext()`.
|
|
384
|
+
|
|
385
|
+
```ts
|
|
386
|
+
const {
|
|
387
|
+
// all useAiChat fields +
|
|
388
|
+
setContext, // (ctx: Record<string, unknown>) => void — update context forwarded to adapter
|
|
389
|
+
} = useAiChatContext();
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
Throws a descriptive error if called outside `<AiChatProvider>`.
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
329
396
|
### Useful patterns
|
|
330
397
|
|
|
331
398
|
**Proactive greeting on mount (`sendGreeting`):**
|
|
@@ -333,49 +400,29 @@ const {
|
|
|
333
400
|
`sendGreeting(hint)` sends the hint as a `system` role message to the adapter and streams the response as an assistant-only message — no user bubble is added to the conversation. Perfect for page-load summaries where the AI speaks first.
|
|
334
401
|
|
|
335
402
|
```ts
|
|
336
|
-
|
|
337
|
-
const chat = useAiChat({ adapter });
|
|
403
|
+
const { sendGreeting } = useAiChatContext();
|
|
338
404
|
|
|
339
405
|
useEffect(() => {
|
|
340
|
-
|
|
406
|
+
sendGreeting(
|
|
341
407
|
'The user is viewing the Invoices page. ' +
|
|
342
408
|
'Briefly introduce what you can help with on this page.'
|
|
343
409
|
);
|
|
344
410
|
}, []);
|
|
345
411
|
```
|
|
346
412
|
|
|
347
|
-
The hint arrives in your adapter as `input.messages[0]` with `role: 'system'`:
|
|
348
|
-
|
|
349
|
-
```ts
|
|
350
|
-
// In your adapter:
|
|
351
|
-
async *sendMessage({ messages }) {
|
|
352
|
-
const systemMsg = messages.find(m => m.role === 'system');
|
|
353
|
-
const hint = systemMsg ? getMessageText(systemMsg) : '';
|
|
354
|
-
// → "The user is viewing the Invoices page. Briefly introduce…"
|
|
355
|
-
|
|
356
|
-
// Forward to your backend / OpenAI system prompt:
|
|
357
|
-
const res = await fetch('/api/chat', {
|
|
358
|
-
method: 'POST',
|
|
359
|
-
body: JSON.stringify({
|
|
360
|
-
messages: [{ role: 'system', content: hint }],
|
|
361
|
-
stream: true,
|
|
362
|
-
}),
|
|
363
|
-
});
|
|
364
|
-
// …stream response
|
|
365
|
-
}
|
|
366
|
-
```
|
|
367
|
-
|
|
368
413
|
**Trigger from outside the chat (e.g. clicking a data row):**
|
|
369
414
|
```ts
|
|
370
|
-
|
|
415
|
+
const { sendMessageWithText } = useAiChatContext();
|
|
416
|
+
sendMessageWithText(`Summarise order #${order.id} for me`);
|
|
371
417
|
```
|
|
372
418
|
|
|
373
419
|
**Pass page context to every request:**
|
|
374
420
|
```tsx
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
421
|
+
const { setContext } = useAiChatContext();
|
|
422
|
+
|
|
423
|
+
useEffect(() => {
|
|
424
|
+
setContext({ pageId: 'invoices', entityId: invoice.id, userRole: 'admin' });
|
|
425
|
+
}, [invoice.id]);
|
|
379
426
|
```
|
|
380
427
|
|
|
381
428
|
The `context` object lands in `input.context` inside every `adapter.sendMessage` call — use it to inject page-level data without polluting the message history.
|
|
@@ -438,8 +485,41 @@ Assistant messages are composed of typed **parts**. Text is streamed chunk by ch
|
|
|
438
485
|
| `text` | `{ type: 'text', text: string }` stream events, accumulated | Markdown via `react-markdown` — safe against XSS |
|
|
439
486
|
| `table` | `{ type: 'part', part: { type: 'table', ... } }` | `AiTablePart` |
|
|
440
487
|
| `proposal` | `{ type: 'part', part: { type: 'proposal', ... } }` | `AiProposalCard` |
|
|
488
|
+
| `activity` | `{ type: 'part', part: { type: 'activity', ... } }` | `AiActivityPart` |
|
|
441
489
|
| `error` | `{ type: 'error', message: string }` or `{ type: 'part', part: { type: 'error', ... } }` | Inline error in bubble |
|
|
442
490
|
|
|
491
|
+
**Emitting an activity from your adapter:**
|
|
492
|
+
|
|
493
|
+
Activity parts show the user what the AI is doing while it works — skill selection, document search, tool calls, etc. They have three states: `running`, `done`, `failed`.
|
|
494
|
+
|
|
495
|
+
```ts
|
|
496
|
+
// Show a running activity
|
|
497
|
+
yield {
|
|
498
|
+
type: 'part',
|
|
499
|
+
part: {
|
|
500
|
+
type: 'activity',
|
|
501
|
+
id: 'doc-search', // optional stable ID — enables in-place update
|
|
502
|
+
title: 'Searching document',
|
|
503
|
+
description: 'Looking up document by ID.',
|
|
504
|
+
status: 'running',
|
|
505
|
+
},
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
// Later: update the same activity in-place (same id)
|
|
509
|
+
yield {
|
|
510
|
+
type: 'part',
|
|
511
|
+
part: {
|
|
512
|
+
type: 'activity',
|
|
513
|
+
id: 'doc-search',
|
|
514
|
+
title: 'Document found',
|
|
515
|
+
description: 'Found document INV-2024-0894.',
|
|
516
|
+
status: 'done',
|
|
517
|
+
},
|
|
518
|
+
};
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
If `id` is provided, a later activity part with the same `id` updates the previous one in-place instead of appending a new row. Without `id`, activity parts append as a timeline.
|
|
522
|
+
|
|
443
523
|
**Emitting a proposal from your adapter:**
|
|
444
524
|
```ts
|
|
445
525
|
yield {
|
|
@@ -537,7 +617,8 @@ Pass any `Partial<JuneauLabels>` — omitted keys fall back to English:
|
|
|
537
617
|
| Key | Default (EN) | Used in |
|
|
538
618
|
|---|---|---|
|
|
539
619
|
| `sidebarTitle` | `AI Assistant` | `AiChatHeader` title |
|
|
540
|
-
| `
|
|
620
|
+
| `minimizeSidebar` | `Minimize` | `AiChatHeader` minimize button |
|
|
621
|
+
| `expandSidebar` | `Expand` | `AiChatHeader` expand button (when minimized) |
|
|
541
622
|
| `inputPlaceholder` | `Ask a question… (Enter to send)` | `AiInput` textarea |
|
|
542
623
|
| `sendMessage` | `Send message` | `AiInput` send button |
|
|
543
624
|
| `stopMessage` | `Stop` | `AiInput` stop button (while streaming) |
|
|
@@ -560,7 +641,6 @@ The toolbar buttons left of the send button are fully configurable:
|
|
|
560
641
|
|
|
561
642
|
```tsx
|
|
562
643
|
<AiSidebar
|
|
563
|
-
adapter={adapter}
|
|
564
644
|
actions={[
|
|
565
645
|
{
|
|
566
646
|
icon: <MyAttachIcon />,
|
|
@@ -576,7 +656,7 @@ The toolbar buttons left of the send button are fully configurable:
|
|
|
576
656
|
/>
|
|
577
657
|
|
|
578
658
|
// Hide the toolbar entirely:
|
|
579
|
-
<AiSidebar
|
|
659
|
+
<AiSidebar actions={[]} />
|
|
580
660
|
```
|
|
581
661
|
|
|
582
662
|
Each action: `{ icon: ReactNode, label: string, onClick?: () => void }`
|
|
@@ -594,3 +674,11 @@ Each action: `{ icon: ReactNode, label: string, onClick?: () => void }`
|
|
|
594
674
|
## License
|
|
595
675
|
|
|
596
676
|
MIT
|
|
677
|
+
|
|
678
|
+
---
|
|
679
|
+
|
|
680
|
+
## Icon attribution
|
|
681
|
+
|
|
682
|
+
Icons used internally by Juneau are from [Font Awesome Free](https://fontawesome.com) (v6), licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). SVG paths are inlined directly — no runtime dependency on the Font Awesome package.
|
|
683
|
+
|
|
684
|
+
Icons used: `crow`, `paper-plane`, `paperclip`, `bolt`, `plus`, `clock-rotate-left`, `scroll`, `arrow-rotate-left`, `window-minimize`, `window-restore`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/mockAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,eAAe,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"mockAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/mockAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,eAAe,CAAC;AAErF;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,gBAoBzB,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
type Props = {
|
|
3
3
|
title?: string;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
onMinimize?: () => void;
|
|
5
|
+
isMinimized?: boolean;
|
|
6
|
+
/** Override the avatar icon. Pass any ReactNode — an SVG, img, or component. Defaults to a wand icon. */
|
|
6
7
|
icon?: ReactNode;
|
|
7
8
|
};
|
|
8
|
-
export declare function AiChatHeader({ title,
|
|
9
|
+
export declare function AiChatHeader({ title, onMinimize, isMinimized, icon }: Props): import("react").JSX.Element;
|
|
9
10
|
export {};
|
|
10
11
|
//# sourceMappingURL=AiChatHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiChatHeader.d.ts","sourceRoot":"","sources":["../../../src/components/AiChatHeader/AiChatHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"AiChatHeader.d.ts","sourceRoot":"","sources":["../../../src/components/AiChatHeader/AiChatHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yGAAyG;IACzG,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,KAAK,+BAyB3E"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
-
import type { AiBackendAdapter } from '../../core/types';
|
|
3
2
|
import type { AiInputAction } from '../AiInput/AiInput';
|
|
4
3
|
type Props = {
|
|
5
|
-
adapter: AiBackendAdapter;
|
|
6
4
|
/** Overrides the `sidebarTitle` label for this instance only. */
|
|
7
5
|
title?: string;
|
|
8
|
-
|
|
9
|
-
onProposalConfirm?: (proposalId: string, payload: unknown) => void;
|
|
10
|
-
onProposalCancel?: (proposalId: string) => void;
|
|
11
|
-
/** Override the header and assistant avatar icon. Defaults to a brain icon. */
|
|
6
|
+
/** Override the header and assistant avatar icon. Defaults to a wand icon. */
|
|
12
7
|
icon?: ReactNode;
|
|
13
8
|
/**
|
|
14
9
|
* Toolbar action buttons rendered left of the send button.
|
|
15
10
|
* Pass an empty array to hide the toolbar entirely.
|
|
16
|
-
* Defaults to five built-in actions (attach, quick actions, new, history, rules).
|
|
17
11
|
*/
|
|
18
12
|
actions?: AiInputAction[];
|
|
19
13
|
/** Override the send button icon. Defaults to a paper-plane icon. */
|
|
20
14
|
sendIcon?: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Height of the sidebar when open. Any valid CSS value.
|
|
17
|
+
* Defaults to '60vh'.
|
|
18
|
+
*/
|
|
19
|
+
height?: string;
|
|
21
20
|
className?: string;
|
|
22
21
|
style?: CSSProperties;
|
|
23
22
|
};
|
|
24
|
-
export declare function AiSidebar({
|
|
23
|
+
export declare function AiSidebar({ title, icon, actions, sendIcon, height, className, style, }: Props): import("react").JSX.Element;
|
|
25
24
|
export {};
|
|
26
25
|
//# sourceMappingURL=AiSidebar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/AiSidebar/AiSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AiSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/AiSidebar/AiSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,KAAK,KAAK,GAAG;IACX,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,MAAe,EACf,SAAS,EACT,KAAK,GACN,EAAE,KAAK,+BA+CP"}
|
|
@@ -4,13 +4,15 @@ type IconProps = {
|
|
|
4
4
|
style?: CSSProperties;
|
|
5
5
|
'aria-hidden'?: boolean | 'true' | 'false';
|
|
6
6
|
};
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function IconWandMagicSparkles({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
8
8
|
export declare function IconPaperPlane({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
9
9
|
export declare function IconPaperclip({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
10
10
|
export declare function IconBolt({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
11
11
|
export declare function IconPlus({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
12
12
|
export declare function IconClockRotateLeft({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
13
13
|
export declare function IconScroll({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
14
|
+
export declare function IconWindowMinimize({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
15
|
+
export declare function IconWindowRestore({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
14
16
|
export declare function IconArrowRotateLeft({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
15
17
|
export declare function IconWarning({ className, style, 'aria-hidden': ariaHidden }: IconProps): import("react").JSX.Element;
|
|
16
18
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/components/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C,CAAC;AAEF,wBAAgB,
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/components/icons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBtG;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgB/F;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgB9F;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBzF;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBzF;AAED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBpG;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgB3F;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBnG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBlG;AAED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAgBpG;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,UAAiB,EAAE,EAAE,SAAS,+BAe5F"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AiActivityPart as AiActivityPartType } from '../../core/types';
|
|
2
|
+
type Props = {
|
|
3
|
+
part: AiActivityPartType;
|
|
4
|
+
};
|
|
5
|
+
export declare function AiActivityPart({ part }: Props): import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=AiActivityPart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiActivityPart.d.ts","sourceRoot":"","sources":["../../../src/components/parts/AiActivityPart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG7E,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,+BAc7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiMessagePartRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/parts/AiMessagePartRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"AiMessagePartRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/parts/AiMessagePartRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAClE,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,EAAE,KAAK,+BA6BzF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { UseAiChatReturn } from '../hooks/useAiChat';
|
|
2
|
+
export type AiChatContextValue = UseAiChatReturn & {
|
|
3
|
+
/**
|
|
4
|
+
* Update the context forwarded to every adapter.sendMessage call.
|
|
5
|
+
* Call this on each page/view to tell the AI where the user is,
|
|
6
|
+
* what tools are available, etc.
|
|
7
|
+
*/
|
|
8
|
+
setContext: (ctx: Record<string, unknown>) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const AiChatContext: import("react").Context<AiChatContextValue | null>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the shared chat state from the nearest AiChatProvider.
|
|
13
|
+
* Throws if called outside of one — fail fast is better than silent undefined.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useAiChatContext(): AiChatContextValue;
|
|
16
|
+
//# sourceMappingURL=AiChatContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiChatContext.d.ts","sourceRoot":"","sources":["../../src/context/AiChatContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD;;;;OAIG;IACH,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CASrD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { AiBackendAdapter } from '../core/types';
|
|
3
|
+
type Props = {
|
|
4
|
+
adapter: AiBackendAdapter;
|
|
5
|
+
/** Initial context passed to the adapter. Update it per-page via setContext(). */
|
|
6
|
+
context?: Record<string, unknown>;
|
|
7
|
+
onProposalConfirm?: (proposalId: string, payload: unknown) => void;
|
|
8
|
+
onProposalCancel?: (proposalId: string) => void;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export declare function AiChatProvider({ adapter, context: initialContext, onProposalConfirm, onProposalCancel, children, }: Props): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=AiChatProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiChatProvider.d.ts","sourceRoot":"","sources":["../../src/context/AiChatProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,gBAAgB,CAAC;IAC1B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,OAAO,EAAE,cAAc,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,GACT,EAAE,KAAK,+BAmBP"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -25,7 +25,20 @@ export type AiErrorPart = {
|
|
|
25
25
|
type: 'error';
|
|
26
26
|
message: string;
|
|
27
27
|
};
|
|
28
|
-
export type
|
|
28
|
+
export type AiActivityStatus = 'running' | 'done' | 'failed';
|
|
29
|
+
export type AiActivityPart = {
|
|
30
|
+
type: 'activity';
|
|
31
|
+
/**
|
|
32
|
+
* Optional stable ID. If provided, a later activity part with the same ID
|
|
33
|
+
* will update the previous one in-place instead of appending a new row.
|
|
34
|
+
*/
|
|
35
|
+
id?: string;
|
|
36
|
+
title: string;
|
|
37
|
+
description?: string;
|
|
38
|
+
status: AiActivityStatus;
|
|
39
|
+
metadata?: Record<string, unknown>;
|
|
40
|
+
};
|
|
41
|
+
export type AiMessagePart = AiTextPart | AiTablePart | AiProposalPart | AiActivityPart | AiErrorPart;
|
|
29
42
|
export type AiMessage = {
|
|
30
43
|
id: string;
|
|
31
44
|
role: AiMessageRole;
|
|
@@ -38,7 +51,7 @@ export type AiStreamTextEvent = {
|
|
|
38
51
|
};
|
|
39
52
|
export type AiStreamPartEvent = {
|
|
40
53
|
type: 'part';
|
|
41
|
-
part: AiTablePart | AiProposalPart | AiErrorPart;
|
|
54
|
+
part: AiTablePart | AiProposalPart | AiActivityPart | AiErrorPart;
|
|
42
55
|
};
|
|
43
56
|
export type AiStreamDoneEvent = {
|
|
44
57
|
type: 'done';
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAG5D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAG5D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,WAAW,CAAC;AAErG,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,WAAW,CAAA;CAAE,CAAC;AACpH,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACjD,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;CAClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAiChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiChat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EAET,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAKvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,mHAAmH;IACnH,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;OAIG;IACH,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,kEAAkE;IAClE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EACjB,EAAE,gBAAgB,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"useAiChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useAiChat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EAET,gBAAgB,EAEjB,MAAM,eAAe,CAAC;AAKvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,mHAAmH;IACnH,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD;;;;OAIG;IACH,YAAY,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,kEAAkE;IAClE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,gBAAgB,EACjB,EAAE,gBAAgB,GAAG,eAAe,CAoNpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cs.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/cs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"cs.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/cs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,YAoBtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,YAoBtB,CAAC"}
|
package/dist/i18n/types.d.ts
CHANGED
package/dist/i18n/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IAEzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IAEzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAGpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IAGpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAGvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IAGvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC"}
|