juneau 0.3.3 → 0.4.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 +834 -789
- package/dist/adapters/dashboardAdapter.d.ts.map +1 -1
- package/dist/adapters/mockAdapter.d.ts.map +1 -1
- package/dist/components/AiChat/AiChat.d.ts +8 -1
- package/dist/components/AiChat/AiChat.d.ts.map +1 -1
- package/dist/components/AiMessageBubble/AiMessageBubble.d.ts +4 -1
- package/dist/components/AiMessageBubble/AiMessageBubble.d.ts.map +1 -1
- package/dist/components/AiMessageList/AiMessageList.d.ts +4 -1
- package/dist/components/AiMessageList/AiMessageList.d.ts.map +1 -1
- package/dist/components/AiSidebar/AiSidebar.d.ts +8 -1
- package/dist/components/AiSidebar/AiSidebar.d.ts.map +1 -1
- package/dist/components/parts/AiMessagePartRenderer.d.ts +11 -1
- package/dist/components/parts/AiMessagePartRenderer.d.ts.map +1 -1
- package/dist/core/types.d.ts +14 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.cjs +28 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2635 -2613
- package/dist/index.js.map +1 -1
- package/dist/server/createSkillSet.d.ts +5 -1
- package/dist/server/createSkillSet.d.ts.map +1 -1
- package/dist/server/index.cjs +6 -4
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +107 -72
- package/dist/server/index.js.map +1 -1
- package/dist/server/types.d.ts +26 -6
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/withToolRecovery.d.ts +9 -3
- package/dist/server/withToolRecovery.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/server/types.d.ts
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import type { ZodType, z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Helpers injected into a skill's execute fn as the second argument.
|
|
4
|
+
*/
|
|
5
|
+
export interface SkillExecuteContext {
|
|
6
|
+
/**
|
|
7
|
+
* Emits a custom part wire event directly into the stream, alongside the
|
|
8
|
+
* automatic running/done/failed activities. Available synchronously at any
|
|
9
|
+
* point during execution — parts appear in the stream in emit order.
|
|
10
|
+
* The part is wrapped as { type: 'part', part } on the wire.
|
|
11
|
+
*/
|
|
12
|
+
emit: (part: {
|
|
13
|
+
type: string;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
2
17
|
/**
|
|
3
18
|
* A single skill definition — description, zod input schema, i18n labels, and the execute fn.
|
|
4
19
|
*/
|
|
@@ -19,7 +34,7 @@ export interface SkillDefinition<TInput extends ZodType = ZodType> {
|
|
|
19
34
|
en: string;
|
|
20
35
|
};
|
|
21
36
|
};
|
|
22
|
-
execute: (input: z.infer<TInput
|
|
37
|
+
execute: (input: z.infer<TInput>, context: SkillExecuteContext) => Promise<unknown>;
|
|
23
38
|
}
|
|
24
39
|
/**
|
|
25
40
|
* The object returned by createSkillSet.
|
|
@@ -57,14 +72,19 @@ export interface SkillSetOptions {
|
|
|
57
72
|
export interface ToolRecoveryStreamResult {
|
|
58
73
|
fullStream: AsyncIterable<unknown>;
|
|
59
74
|
/**
|
|
60
|
-
* ai-sdk v7: resolves after the stream is consumed to the
|
|
61
|
-
*
|
|
75
|
+
* ai-sdk v7: resolves after the stream is consumed to the FULL message
|
|
76
|
+
* history — user, assistant(tool-call), and tool(tool-result) turns.
|
|
77
|
+
* Preferred source for phase 3; Gemini rejects histories where a tool-call
|
|
78
|
+
* turn is not followed by its tool-result turn.
|
|
79
|
+
*/
|
|
80
|
+
messages?: Promise<unknown[]>;
|
|
81
|
+
/**
|
|
82
|
+
* Fallback only — may resolve to an incomplete subset of the history
|
|
83
|
+
* (observed: missing tool-result turns). Used when `messages` is unavailable.
|
|
62
84
|
*/
|
|
63
85
|
response?: Promise<{
|
|
64
|
-
messages
|
|
86
|
+
messages?: unknown[];
|
|
65
87
|
}>;
|
|
66
|
-
/** Some ai-sdk versions expose the message history directly. */
|
|
67
|
-
messages?: Promise<unknown[]>;
|
|
68
88
|
}
|
|
69
89
|
export interface ToolRecoveryOptions {
|
|
70
90
|
phase1: () => ToolRecoveryStreamResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,OAAO,GAAG,OAAO;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,IAAI,EAAK;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,MAAM,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;KACrC,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,SAAS,OAAO,GAAG,OAAO;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,IAAI,EAAK;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACpC,MAAM,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;KACrC,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrF;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,eAAe,IAAI,MAAM,EAAE,CAAC;IAE5B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,wBAAwB,CAAC;IACvC,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK;QAAE,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAC3E;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK;QAAE,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IACzE,QAAQ,EAAE,QAAQ,CAAC;IACnB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -15,11 +15,17 @@ import type { ToolRecoveryOptions } from './types';
|
|
|
15
15
|
* model wrote no text. Confirmed Gemini 2.5 Flash behaviour: the fullStream ends
|
|
16
16
|
* with tool-call → tool-result → finish-step → finish and no text-delta ever
|
|
17
17
|
* arrives — Gemini treats the tool call as its complete response. Phase 3 receives
|
|
18
|
-
* the full phase 1 message history
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* the full phase 1 message history including tool-call AND tool-result turns —
|
|
19
|
+
* Gemini rejects histories where a tool-call turn is not immediately followed by
|
|
20
|
+
* a tool-result turn ("function call turn must come immediately after a user turn
|
|
21
|
+
* or after a function response turn"). The history is resolved from the consumed
|
|
22
|
+
* phase 1 result's `messages` promise (ai-sdk v7 — resolves to all turns after
|
|
23
|
+
* the stream is consumed), with `response.messages` as fallback.
|
|
21
24
|
* If phase3 is not provided, falls back to emitting done (previous behaviour).
|
|
22
25
|
*
|
|
26
|
+
* Errors thrown by phase 2 / phase 3 model calls are surfaced as wire error
|
|
27
|
+
* events — never swallowed into a silent done.
|
|
28
|
+
*
|
|
23
29
|
* @returns AsyncIterable<string> of Juneau wire SSE strings (activities + text + done)
|
|
24
30
|
*/
|
|
25
31
|
export declare function withToolRecovery(options: ToolRecoveryOptions): AsyncIterable<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withToolRecovery.d.ts","sourceRoot":"","sources":["../../src/server/withToolRecovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"withToolRecovery.d.ts","sourceRoot":"","sources":["../../src/server/withToolRecovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAWnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAuB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAwG3F"}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--juneau-color-primary: #000000;--juneau-color-primary-dark: #252528;--juneau-color-primary-light: #ECECEC;--juneau-color-primary-border: #E8E8EC;--juneau-color-accent: #FF49A4;--juneau-color-accent-dark: #FF6BB3;--juneau-color-accent-light: #FFF0F7;--juneau-color-accent-border: #FFBDD9;--juneau-color-surface: #FFFFFF;--juneau-color-surface-raised: #F4F4F6;--juneau-color-surface-hover: #ECECEC;--juneau-color-border: #E8E8EC;--juneau-color-border-subtle: #ECECEC;--juneau-color-text-primary: #000000;--juneau-color-text-secondary: #474747;--juneau-color-text-muted: #474747;--juneau-color-text-faint: #9090A0;--juneau-color-text-inverse: #FFFFFF;--juneau-color-assistant-avatar: #FF49A4;--juneau-color-error-bg: #FFF0F7;--juneau-color-error-border: #E6244A;--juneau-color-error-text: #C41A3B;--juneau-color-success-bg: #F4FDE8;--juneau-color-success-text: #3F7528;--juneau-color-warning-bg: #FFF6E5;--juneau-color-warning-text: #B37400;--juneau-color-danger-bg: #FFF0F7;--juneau-color-danger-text: #C41A3B;--juneau-radius-sm: 6px;--juneau-radius-md: 8px;--juneau-radius-lg: 12px;--juneau-radius-full: 9999px;--juneau-font-size-xs: 11px;--juneau-font-size-sm: 12px;--juneau-font-size-base: 13px;--juneau-font-size-md: 14px;--juneau-font-size-lg: 15px;--juneau-font-size-xl: 16px;--juneau-font-size-2xl: 22px;--juneau-font-size-3xl: 24px;--juneau-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--juneau-transition-fast: .15s}._root_1etc2_1{display:contents;font-family:var(--juneau-font-family)}._wrapper_izvjy_1{overflow-x:auto;margin:8px 0;border-radius:var(--juneau-radius-md);border:1px solid var(--juneau-color-border)}._table_izvjy_15{width:100%;border-collapse:collapse;font-size:var(--juneau-font-size-base)}._th_izvjy_27{background-color:var(--juneau-color-surface-raised);padding:8px 12px;text-align:left;font-weight:600;color:var(--juneau-color-text-secondary);border-bottom:1px solid var(--juneau-color-border);white-space:nowrap}._tr_izvjy_47:nth-child(2n){background-color:var(--juneau-color-surface-raised)}._tr_izvjy_47:hover{background-color:var(--juneau-color-surface-hover)}._td_izvjy_63{padding:7px 12px;color:var(--juneau-color-text-primary);border-bottom:1px solid var(--juneau-color-border-subtle)}._card_qrvry_1{background:linear-gradient(135deg,var(--juneau-color-accent-light) 0%,var(--juneau-color-accent-border) 100%);border:1px solid var(--juneau-color-accent-border);border-radius:var(--juneau-radius-lg);padding:14px 16px;margin:8px 0}._header_qrvry_17{display:flex;align-items:center;gap:8px;margin-bottom:6px}._icon_qrvry_31{flex-shrink:0;width:16px;height:16px;color:var(--juneau-color-accent)}._title_qrvry_45{font-weight:600;font-size:var(--juneau-font-size-md);color:var(--juneau-color-accent-dark)}._description_qrvry_57{font-size:var(--juneau-font-size-base);color:var(--juneau-color-text-secondary);margin:0 0 12px;line-height:1.5}._actions_qrvry_71{display:flex;gap:8px}._confirm_qrvry_81{padding:7px 16px;background-color:var(--juneau-color-accent);color:var(--juneau-color-text-inverse);border:none;border-radius:var(--juneau-radius-sm);font-size:var(--juneau-font-size-base);font-weight:500;cursor:pointer;transition:background-color var(--juneau-transition-fast)}._confirm_qrvry_81:hover{background-color:var(--juneau-color-accent-dark)}._cancel_qrvry_113{padding:7px 16px;background-color:transparent;color:var(--juneau-color-text-muted);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-sm);font-size:var(--juneau-font-size-base);font-weight:500;cursor:pointer;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._cancel_qrvry_113:hover{background-color:var(--juneau-color-surface-hover);color:var(--juneau-color-text-secondary)}._activity_1661l_1{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;margin:4px 0;border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);background:var(--juneau-color-surface-raised);font-size:var(--juneau-font-size-sm)}._indicator_1661l_25{width:7px;height:7px;margin-top:5px;border-radius:var(--juneau-radius-full);background:var(--juneau-color-text-faint);flex-shrink:0;transition:background var(--juneau-transition-fast)}._activity_1661l_1[data-status=running] ._indicator_1661l_25{background:var(--juneau-color-accent);animation:_pulse_1661l_1 1.4s ease-in-out infinite}._activity_1661l_1[data-status=done] ._indicator_1661l_25{background:var(--juneau-color-success-text)}._activity_1661l_1[data-status=failed] ._indicator_1661l_25{background:var(--juneau-color-error-text)}._content_1661l_71{min-width:0}._title_1661l_79{font-weight:500;color:var(--juneau-color-text-secondary)}._description_1661l_89{margin-top:1px;color:var(--juneau-color-text-faint)}@keyframes _pulse_1661l_1{0%,to{opacity:1}50%{opacity:.35}}._markdown_97mdk_1{line-height:1.6;font-size:var(--juneau-font-size-md)}._markdown_97mdk_1 p{margin:0 0 .5em}._markdown_97mdk_1 p:last-child{margin-bottom:0}._markdown_97mdk_1 strong{font-weight:700}._markdown_97mdk_1 em{font-style:italic}._markdown_97mdk_1 code{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,monospace;font-size:.9em;background:var(--juneau-color-surface-raised);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-sm);padding:.1em .35em}._markdown_97mdk_1 pre{background:var(--juneau-color-surface-raised);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);padding:10px 14px;overflow-x:auto;margin:.5em 0}._markdown_97mdk_1 pre code{background:none;border:none;padding:0;font-size:var(--juneau-font-size-sm)}._markdown_97mdk_1 ul,._markdown_97mdk_1 ol{margin:.25em 0 .5em;padding-left:1.4em}._markdown_97mdk_1 li{margin-bottom:.2em}._markdown_97mdk_1 blockquote{margin:.5em 0;padding-left:.75em;border-left:3px solid var(--juneau-color-border);color:var(--juneau-color-text-secondary)}._markdown_97mdk_1 a{color:var(--juneau-color-accent);text-decoration:underline}._markdown_97mdk_1 h1,._markdown_97mdk_1 h2,._markdown_97mdk_1 h3,._markdown_97mdk_1 h4{margin:.6em 0 .3em;font-weight:700;line-height:1.3}._markdown_97mdk_1 h1{font-size:var(--juneau-font-size-xl)}._markdown_97mdk_1 h2{font-size:var(--juneau-font-size-lg)}._markdown_97mdk_1 h3,._markdown_97mdk_1 h4{font-size:var(--juneau-font-size-md)}._errorText_97mdk_165{display:inline-flex;align-items:center;gap:5px;color:var(--juneau-color-error-text);font-size:var(--juneau-font-size-base)}._errorIcon_97mdk_181{width:14px;height:14px;flex-shrink:0}._wrapper_1jkxo_1{display:flex;align-items:flex-start;gap:8px;padding:4px 0}._user_1jkxo_15{flex-direction:row-reverse}._assistant_1jkxo_23{flex-direction:row}._avatar_1jkxo_31{flex-shrink:0;width:30px;height:30px;border-radius:var(--juneau-radius-full);font-size:var(--juneau-font-size-xs);font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:2px}._user_1jkxo_15 ._avatar_1jkxo_31{background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse)}._assistant_1jkxo_23 ._avatar_1jkxo_31{background-color:var(--juneau-color-assistant-avatar);color:var(--juneau-color-text-inverse)}._bubble_1jkxo_77{max-width:85%;padding:10px 14px;border-radius:var(--juneau-radius-lg);font-size:var(--juneau-font-size-md);line-height:1.6;word-break:break-word}._user_1jkxo_15 ._bubble_1jkxo_77{background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);border-bottom-right-radius:3px}._assistant_1jkxo_23 ._bubble_1jkxo_77{background-color:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary);border:1px solid var(--juneau-color-border);border-bottom-left-radius:3px}._empty_1jkxo_121{display:inline-block;width:4px;height:16px}._wrapper_1oco7_1{display:flex;align-items:center;gap:4px;padding:10px 14px}._dot_1oco7_15{width:7px;height:7px;border-radius:var(--juneau-radius-full);background-color:var(--juneau-color-text-faint);animation:_bounce_1oco7_1 1.2s infinite ease-in-out}._dot_1oco7_15:nth-child(2){animation-delay:.2s}._dot_1oco7_15:nth-child(3){animation-delay:.4s}._connectingLabel_1oco7_37{margin-left:4px;font-size:var(--juneau-font-size-sm);color:var(--juneau-color-text-faint)}@keyframes _bounce_1oco7_1{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}._list_ixto8_1{flex:1;overflow-y:auto;padding:16px 12px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}._empty_ixto8_21{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--juneau-color-text-faint);font-size:var(--juneau-font-size-md);gap:6px;padding:40px 20px}._hint_ixto8_47{font-size:var(--juneau-font-size-sm);color:var(--juneau-color-text-faint)}._typing_ixto8_61{display:flex;align-items:flex-start;gap:8px;padding:2px 0}._wrapper_ehrkb_1{display:flex;flex-direction:column;border-top:1px solid var(--juneau-color-border);background-color:var(--juneau-color-surface);flex-shrink:0}._textarea_ehrkb_21{resize:none;border:none;outline:none;padding:12px 14px 6px;font-size:var(--juneau-font-size-md);font-family:inherit;line-height:1.6;color:var(--juneau-color-text-primary);background-color:var(--juneau-color-surface);width:100%}._textarea_ehrkb_21::placeholder{color:var(--juneau-color-text-faint)}._textarea_ehrkb_21:disabled{opacity:.6;cursor:not-allowed}._toolbar_ehrkb_69{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 10px;gap:8px}._actions_ehrkb_89{display:flex;align-items:center;gap:2px;flex-wrap:wrap}._actionBtn_ehrkb_103{display:flex;align-items:center;gap:5px;padding:5px 8px;border:none;border-radius:var(--juneau-radius-sm);background:transparent;color:var(--juneau-color-text-muted);font-size:var(--juneau-font-size-sm);font-family:inherit;cursor:pointer;white-space:nowrap;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._actionBtn_ehrkb_103 svg{font-size:11px;opacity:.8}._actionBtn_ehrkb_103:hover:not(:disabled){background:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary)}._actionBtn_ehrkb_103:disabled{opacity:.4;cursor:not-allowed}._sendBtn_ehrkb_169{display:flex;align-items:center;gap:7px;padding:7px 14px;border:none;border-radius:var(--juneau-radius-md);background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);font-size:var(--juneau-font-size-base);font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color var(--juneau-transition-fast),opacity var(--juneau-transition-fast)}._sendBtn_ehrkb_169 svg{font-size:12px}._sendBtn_ehrkb_169:hover:not(:disabled){background-color:var(--juneau-color-primary-dark)}._sendBtn_ehrkb_169:disabled{opacity:.4;cursor:not-allowed}._spinnerIcon_ehrkb_231{width:14px;height:14px;animation:_spin_ehrkb_231 .8s linear infinite}@keyframes _spin_ehrkb_231{to{transform:rotate(360deg)}}._stopBtn_ehrkb_251{display:flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);background-color:var(--juneau-color-surface);color:var(--juneau-color-text-secondary);font-size:var(--juneau-font-size-base);font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._stopBtn_ehrkb_251:hover{background-color:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary)}._stopIcon_ehrkb_297{width:14px;height:14px}._wrapper_1e3w5_1{display:flex;align-items:center;gap:8px;padding:10px 14px;background-color:var(--juneau-color-error-bg);border:1px solid var(--juneau-color-error-border);border-radius:var(--juneau-radius-md);margin:4px 12px;font-size:var(--juneau-font-size-base);color:var(--juneau-color-error-text)}._icon_1e3w5_27{flex-shrink:0;width:16px;height:16px}._message_1e3w5_39{flex:1}._dismiss_1e3w5_47{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--juneau-color-error-text);padding:0 2px;opacity:.7;transition:opacity var(--juneau-transition-fast)}._dismiss_1e3w5_47 svg{width:14px;height:14px}._dismiss_1e3w5_47:hover{opacity:1}._chat_13051_1{display:flex;flex-direction:column;height:100%;overflow:hidden}._header_1saak_1{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--juneau-color-border);background:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);flex-shrink:0}._left_1saak_23{display:flex;align-items:center;gap:8px}._icon_1saak_35{font-size:14px;opacity:.9}._title_1saak_45{font-size:var(--juneau-font-size-base);font-weight:600;letter-spacing:.02em}._resetBtn_1saak_57{background:transparent;border:none;border-radius:var(--juneau-radius-sm);color:var(--juneau-color-text-inverse);width:26px;height:26px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.7;transition:background-color var(--juneau-transition-fast),opacity var(--juneau-transition-fast)}._resetBtn_1saak_57:hover{background:#ffffff26;opacity:1}._actions_1saak_99{display:flex;align-items:center;gap:2px}._sidebar_u9ybt_1{position:fixed;bottom:0;right:0;display:flex;flex-direction:column;width:420px;background-color:var(--juneau-color-surface);border-left:1px solid var(--juneau-color-border);border-top:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-lg) var(--juneau-radius-lg) 0 0;box-shadow:-4px 0 24px #00000014;overflow:hidden;z-index:200;transition:height .25s cubic-bezier(.4,0,.2,1),width .25s cubic-bezier(.4,0,.2,1),box-shadow .25s ease}._minimized_u9ybt_39{height:auto!important;width:280px;box-shadow:0 -2px 16px #0000001a}
|
|
1
|
+
:root{--juneau-color-primary: #000000;--juneau-color-primary-dark: #252528;--juneau-color-primary-light: #ECECEC;--juneau-color-primary-border: #E8E8EC;--juneau-color-accent: #FF49A4;--juneau-color-accent-dark: #FF6BB3;--juneau-color-accent-light: #FFF0F7;--juneau-color-accent-border: #FFBDD9;--juneau-color-surface: #FFFFFF;--juneau-color-surface-raised: #F4F4F6;--juneau-color-surface-hover: #ECECEC;--juneau-color-border: #E8E8EC;--juneau-color-border-subtle: #ECECEC;--juneau-color-text-primary: #000000;--juneau-color-text-secondary: #474747;--juneau-color-text-muted: #474747;--juneau-color-text-faint: #9090A0;--juneau-color-text-inverse: #FFFFFF;--juneau-color-assistant-avatar: #FF49A4;--juneau-color-error-bg: #FFF0F7;--juneau-color-error-border: #E6244A;--juneau-color-error-text: #C41A3B;--juneau-color-success-bg: #F4FDE8;--juneau-color-success-text: #3F7528;--juneau-color-warning-bg: #FFF6E5;--juneau-color-warning-text: #B37400;--juneau-color-danger-bg: #FFF0F7;--juneau-color-danger-text: #C41A3B;--juneau-radius-sm: 6px;--juneau-radius-md: 8px;--juneau-radius-lg: 12px;--juneau-radius-full: 9999px;--juneau-font-size-xs: 11px;--juneau-font-size-sm: 12px;--juneau-font-size-base: 13px;--juneau-font-size-md: 14px;--juneau-font-size-lg: 15px;--juneau-font-size-xl: 16px;--juneau-font-size-2xl: 22px;--juneau-font-size-3xl: 24px;--juneau-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--juneau-transition-fast: .15s}._root_1etc2_1{display:contents;font-family:var(--juneau-font-family)}._wrapper_izvjy_1{overflow-x:auto;margin:8px 0;border-radius:var(--juneau-radius-md);border:1px solid var(--juneau-color-border)}._table_izvjy_15{width:100%;border-collapse:collapse;font-size:var(--juneau-font-size-base)}._th_izvjy_27{background-color:var(--juneau-color-surface-raised);padding:8px 12px;text-align:left;font-weight:600;color:var(--juneau-color-text-secondary);border-bottom:1px solid var(--juneau-color-border);white-space:nowrap}._tr_izvjy_47:nth-child(2n){background-color:var(--juneau-color-surface-raised)}._tr_izvjy_47:hover{background-color:var(--juneau-color-surface-hover)}._td_izvjy_63{padding:7px 12px;color:var(--juneau-color-text-primary);border-bottom:1px solid var(--juneau-color-border-subtle)}._card_qrvry_1{background:linear-gradient(135deg,var(--juneau-color-accent-light) 0%,var(--juneau-color-accent-border) 100%);border:1px solid var(--juneau-color-accent-border);border-radius:var(--juneau-radius-lg);padding:14px 16px;margin:8px 0}._header_qrvry_17{display:flex;align-items:center;gap:8px;margin-bottom:6px}._icon_qrvry_31{flex-shrink:0;width:16px;height:16px;color:var(--juneau-color-accent)}._title_qrvry_45{font-weight:600;font-size:var(--juneau-font-size-md);color:var(--juneau-color-accent-dark)}._description_qrvry_57{font-size:var(--juneau-font-size-base);color:var(--juneau-color-text-secondary);margin:0 0 12px;line-height:1.5}._actions_qrvry_71{display:flex;gap:8px}._confirm_qrvry_81{padding:7px 16px;background-color:var(--juneau-color-accent);color:var(--juneau-color-text-inverse);border:none;border-radius:var(--juneau-radius-sm);font-size:var(--juneau-font-size-base);font-weight:500;cursor:pointer;transition:background-color var(--juneau-transition-fast)}._confirm_qrvry_81:hover{background-color:var(--juneau-color-accent-dark)}._cancel_qrvry_113{padding:7px 16px;background-color:transparent;color:var(--juneau-color-text-muted);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-sm);font-size:var(--juneau-font-size-base);font-weight:500;cursor:pointer;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._cancel_qrvry_113:hover{background-color:var(--juneau-color-surface-hover);color:var(--juneau-color-text-secondary)}._activity_1661l_1{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;margin:4px 0;border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);background:var(--juneau-color-surface-raised);font-size:var(--juneau-font-size-sm)}._indicator_1661l_25{width:7px;height:7px;margin-top:5px;border-radius:var(--juneau-radius-full);background:var(--juneau-color-text-faint);flex-shrink:0;transition:background var(--juneau-transition-fast)}._activity_1661l_1[data-status=running] ._indicator_1661l_25{background:var(--juneau-color-accent);animation:_pulse_1661l_1 1.4s ease-in-out infinite}._activity_1661l_1[data-status=done] ._indicator_1661l_25{background:var(--juneau-color-success-text)}._activity_1661l_1[data-status=failed] ._indicator_1661l_25{background:var(--juneau-color-error-text)}._content_1661l_71{min-width:0}._title_1661l_79{font-weight:500;color:var(--juneau-color-text-secondary)}._description_1661l_89{margin-top:1px;color:var(--juneau-color-text-faint)}@keyframes _pulse_1661l_1{0%,to{opacity:1}50%{opacity:.35}}._markdown_sznoh_1{line-height:1.6;font-size:var(--juneau-font-size-md)}._markdown_sznoh_1 p{margin:0 0 .5em}._markdown_sznoh_1 p:last-child{margin-bottom:0}._markdown_sznoh_1 strong{font-weight:700}._markdown_sznoh_1 em{font-style:italic}._markdown_sznoh_1 code{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,monospace;font-size:.9em;background:var(--juneau-color-surface-raised);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-sm);padding:.1em .35em}._markdown_sznoh_1 pre{background:var(--juneau-color-surface-raised);border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);padding:10px 14px;overflow-x:auto;margin:.5em 0}._markdown_sznoh_1 pre code{background:none;border:none;padding:0;font-size:var(--juneau-font-size-sm)}._markdown_sznoh_1 ul,._markdown_sznoh_1 ol{margin:.25em 0 .5em;padding-left:1.4em}._markdown_sznoh_1 li{margin-bottom:.2em}._markdown_sznoh_1 blockquote{margin:.5em 0;padding-left:.75em;border-left:3px solid var(--juneau-color-border);color:var(--juneau-color-text-secondary)}._markdown_sznoh_1 a{color:var(--juneau-color-accent);text-decoration:underline}._markdown_sznoh_1 h1,._markdown_sznoh_1 h2,._markdown_sznoh_1 h3,._markdown_sznoh_1 h4{margin:.6em 0 .3em;font-weight:700;line-height:1.3}._markdown_sznoh_1 h1{font-size:var(--juneau-font-size-xl)}._markdown_sznoh_1 h2{font-size:var(--juneau-font-size-lg)}._markdown_sznoh_1 h3,._markdown_sznoh_1 h4{font-size:var(--juneau-font-size-md)}._unknownPart_sznoh_167{border:1px dashed var(--juneau-color-warning-text);background:var(--juneau-color-warning-bg);color:var(--juneau-color-warning-text);border-radius:var(--juneau-radius-sm);padding:6px 10px;font-size:var(--juneau-font-size-sm)}._unknownPart_sznoh_167 code{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,monospace;font-size:.9em}._errorText_sznoh_195{display:inline-flex;align-items:center;gap:5px;color:var(--juneau-color-error-text);font-size:var(--juneau-font-size-base)}._errorIcon_sznoh_211{width:14px;height:14px;flex-shrink:0}._wrapper_1jkxo_1{display:flex;align-items:flex-start;gap:8px;padding:4px 0}._user_1jkxo_15{flex-direction:row-reverse}._assistant_1jkxo_23{flex-direction:row}._avatar_1jkxo_31{flex-shrink:0;width:30px;height:30px;border-radius:var(--juneau-radius-full);font-size:var(--juneau-font-size-xs);font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:2px}._user_1jkxo_15 ._avatar_1jkxo_31{background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse)}._assistant_1jkxo_23 ._avatar_1jkxo_31{background-color:var(--juneau-color-assistant-avatar);color:var(--juneau-color-text-inverse)}._bubble_1jkxo_77{max-width:85%;padding:10px 14px;border-radius:var(--juneau-radius-lg);font-size:var(--juneau-font-size-md);line-height:1.6;word-break:break-word}._user_1jkxo_15 ._bubble_1jkxo_77{background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);border-bottom-right-radius:3px}._assistant_1jkxo_23 ._bubble_1jkxo_77{background-color:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary);border:1px solid var(--juneau-color-border);border-bottom-left-radius:3px}._empty_1jkxo_121{display:inline-block;width:4px;height:16px}._wrapper_1oco7_1{display:flex;align-items:center;gap:4px;padding:10px 14px}._dot_1oco7_15{width:7px;height:7px;border-radius:var(--juneau-radius-full);background-color:var(--juneau-color-text-faint);animation:_bounce_1oco7_1 1.2s infinite ease-in-out}._dot_1oco7_15:nth-child(2){animation-delay:.2s}._dot_1oco7_15:nth-child(3){animation-delay:.4s}._connectingLabel_1oco7_37{margin-left:4px;font-size:var(--juneau-font-size-sm);color:var(--juneau-color-text-faint)}@keyframes _bounce_1oco7_1{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}._list_ixto8_1{flex:1;overflow-y:auto;padding:16px 12px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}._empty_ixto8_21{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--juneau-color-text-faint);font-size:var(--juneau-font-size-md);gap:6px;padding:40px 20px}._hint_ixto8_47{font-size:var(--juneau-font-size-sm);color:var(--juneau-color-text-faint)}._typing_ixto8_61{display:flex;align-items:flex-start;gap:8px;padding:2px 0}._wrapper_ehrkb_1{display:flex;flex-direction:column;border-top:1px solid var(--juneau-color-border);background-color:var(--juneau-color-surface);flex-shrink:0}._textarea_ehrkb_21{resize:none;border:none;outline:none;padding:12px 14px 6px;font-size:var(--juneau-font-size-md);font-family:inherit;line-height:1.6;color:var(--juneau-color-text-primary);background-color:var(--juneau-color-surface);width:100%}._textarea_ehrkb_21::placeholder{color:var(--juneau-color-text-faint)}._textarea_ehrkb_21:disabled{opacity:.6;cursor:not-allowed}._toolbar_ehrkb_69{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 10px;gap:8px}._actions_ehrkb_89{display:flex;align-items:center;gap:2px;flex-wrap:wrap}._actionBtn_ehrkb_103{display:flex;align-items:center;gap:5px;padding:5px 8px;border:none;border-radius:var(--juneau-radius-sm);background:transparent;color:var(--juneau-color-text-muted);font-size:var(--juneau-font-size-sm);font-family:inherit;cursor:pointer;white-space:nowrap;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._actionBtn_ehrkb_103 svg{font-size:11px;opacity:.8}._actionBtn_ehrkb_103:hover:not(:disabled){background:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary)}._actionBtn_ehrkb_103:disabled{opacity:.4;cursor:not-allowed}._sendBtn_ehrkb_169{display:flex;align-items:center;gap:7px;padding:7px 14px;border:none;border-radius:var(--juneau-radius-md);background-color:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);font-size:var(--juneau-font-size-base);font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color var(--juneau-transition-fast),opacity var(--juneau-transition-fast)}._sendBtn_ehrkb_169 svg{font-size:12px}._sendBtn_ehrkb_169:hover:not(:disabled){background-color:var(--juneau-color-primary-dark)}._sendBtn_ehrkb_169:disabled{opacity:.4;cursor:not-allowed}._spinnerIcon_ehrkb_231{width:14px;height:14px;animation:_spin_ehrkb_231 .8s linear infinite}@keyframes _spin_ehrkb_231{to{transform:rotate(360deg)}}._stopBtn_ehrkb_251{display:flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-md);background-color:var(--juneau-color-surface);color:var(--juneau-color-text-secondary);font-size:var(--juneau-font-size-base);font-family:inherit;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color var(--juneau-transition-fast),color var(--juneau-transition-fast)}._stopBtn_ehrkb_251:hover{background-color:var(--juneau-color-surface-raised);color:var(--juneau-color-text-primary)}._stopIcon_ehrkb_297{width:14px;height:14px}._wrapper_1e3w5_1{display:flex;align-items:center;gap:8px;padding:10px 14px;background-color:var(--juneau-color-error-bg);border:1px solid var(--juneau-color-error-border);border-radius:var(--juneau-radius-md);margin:4px 12px;font-size:var(--juneau-font-size-base);color:var(--juneau-color-error-text)}._icon_1e3w5_27{flex-shrink:0;width:16px;height:16px}._message_1e3w5_39{flex:1}._dismiss_1e3w5_47{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--juneau-color-error-text);padding:0 2px;opacity:.7;transition:opacity var(--juneau-transition-fast)}._dismiss_1e3w5_47 svg{width:14px;height:14px}._dismiss_1e3w5_47:hover{opacity:1}._chat_13051_1{display:flex;flex-direction:column;height:100%;overflow:hidden}._header_1saak_1{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--juneau-color-border);background:var(--juneau-color-primary);color:var(--juneau-color-text-inverse);flex-shrink:0}._left_1saak_23{display:flex;align-items:center;gap:8px}._icon_1saak_35{font-size:14px;opacity:.9}._title_1saak_45{font-size:var(--juneau-font-size-base);font-weight:600;letter-spacing:.02em}._resetBtn_1saak_57{background:transparent;border:none;border-radius:var(--juneau-radius-sm);color:var(--juneau-color-text-inverse);width:26px;height:26px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.7;transition:background-color var(--juneau-transition-fast),opacity var(--juneau-transition-fast)}._resetBtn_1saak_57:hover{background:#ffffff26;opacity:1}._actions_1saak_99{display:flex;align-items:center;gap:2px}._sidebar_u9ybt_1{position:fixed;bottom:0;right:0;display:flex;flex-direction:column;width:420px;background-color:var(--juneau-color-surface);border-left:1px solid var(--juneau-color-border);border-top:1px solid var(--juneau-color-border);border-radius:var(--juneau-radius-lg) var(--juneau-radius-lg) 0 0;box-shadow:-4px 0 24px #00000014;overflow:hidden;z-index:200;transition:height .25s cubic-bezier(.4,0,.2,1),width .25s cubic-bezier(.4,0,.2,1),box-shadow .25s ease}._minimized_u9ybt_39{height:auto!important;width:280px;box-shadow:0 -2px 16px #0000001a}
|