@talk2view/sdk 0.17.1 → 0.18.1

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.
@@ -17,7 +17,7 @@
17
17
  import { type FC, type ReactNode } from 'react';
18
18
  import { type Talk2ViewChatProps } from './provider.js';
19
19
  /** Which pane the header is showing. */
20
- export type ChatView = 'thread' | 'list' | 'settings' | 'account';
20
+ export type ChatView = 'thread' | 'list' | 'settings' | 'account' | 'skills';
21
21
  export declare function Talk2ViewChat(props: Talk2ViewChatProps): ReactNode;
22
22
  export interface ChatShellProps {
23
23
  /** A short line under the composer, e.g. terms. */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat/chat.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAStF,wCAAwC;AACxC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAclE,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAalE;AAED,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gFAAgF;IAChF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACzC;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAsFxC,CAAC"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat/chat.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAML,KAAK,EAAE,EACP,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAUtF,wCAAwC;AACxC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAe7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAalE;AAED,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gFAAgF;IAChF,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACzC;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAuFxC,CAAC"}
package/dist/chat/chat.js CHANGED
@@ -17,7 +17,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
17
  * half-typed message.
18
18
  */
19
19
  import { useEffect, useMemo, useRef, useState, } from 'react';
20
- import { HistoryIcon, PlusIcon, SettingsIcon, UserRoundIcon } from 'lucide-react';
20
+ import { BookOpenIcon, HistoryIcon, PlusIcon, SettingsIcon, UserRoundIcon } from 'lucide-react';
21
21
  import { ThreadListPrimitive, useAuiState } from '@assistant-ui/react';
22
22
  import { Thread, ComposerExtrasContext } from './vendor/thread.aui.js';
23
23
  import { TooltipIconButton } from './vendor/tooltip-icon-button.js';
@@ -29,6 +29,7 @@ import { ToolFallback, ToolGroup } from './tool-fallback.js';
29
29
  import { useAuthGate } from './auth-gate.js';
30
30
  import { AccountView } from './views/account.js';
31
31
  import { SettingsView } from './views/settings.js';
32
+ import { SkillsView } from './views/skills.js';
32
33
  import { ThreadListView } from './views/thread-list.js';
33
34
  /**
34
35
  * Plain English over assistant-ui's own words: the thing an end-user starts is
@@ -40,6 +41,7 @@ const VIEW_TITLES = {
40
41
  list: 'Chats',
41
42
  settings: 'Settings',
42
43
  account: 'Account',
44
+ skills: 'Skills',
43
45
  };
44
46
  export function Talk2ViewChat(props) {
45
47
  const { className, fontFamily, footer } = props;
@@ -91,7 +93,7 @@ export const ChatShell = ({ footer, headerEnd, view: given, onViewChange }) => {
91
93
  ref: (node) => {
92
94
  if (node)
93
95
  node.inert = view !== 'thread';
94
- }, className: "aui-modal-thread h-full", children: thread }), view === 'list' && features.threadList && (_jsx(ThreadListView, { onSelect: () => setView('thread') })), view === 'settings' && features.settings && _jsx(SettingsView, {}), view === 'account' && (_jsx(AccountView, { reason: gate.reason, onSignedIn: () => setView('thread') }))] }), footer ? (_jsx("div", { className: "t2v-chat-footer text-muted-foreground border-foreground/10 shrink-0 border-t px-3.5 py-2 text-xs", children: footer })) : null] }));
96
+ }, className: "aui-modal-thread h-full", children: thread }), view === 'list' && features.threadList && (_jsx(ThreadListView, { onSelect: () => setView('thread') })), view === 'settings' && features.settings && _jsx(SettingsView, {}), view === 'skills' && features.skills && _jsx(SkillsView, {}), view === 'account' && (_jsx(AccountView, { reason: gate.reason, onSignedIn: () => setView('thread') }))] }), footer ? (_jsx("div", { className: "t2v-chat-footer text-muted-foreground border-foreground/10 shrink-0 border-t px-3.5 py-2 text-xs", children: footer })) : null] }));
95
97
  };
96
98
  const ChatHeader = ({ view, onViewChange, end, signedIn }) => {
97
99
  const { features } = useChatContext();
@@ -122,7 +124,7 @@ const ChatHeader = ({ view, onViewChange, end, signedIn }) => {
122
124
  // "Account" in both states. An icon-only button's name should say
123
125
  // where it goes, and "Sign in" here collided with the account form's
124
126
  // own submit button — two controls, one name, two different actions.
125
- tooltip: "Account", side: "bottom", "aria-pressed": view === 'account', className: cn(HEADER_BUTTON, 'relative'), onClick: toggle('account'), children: [_jsx(UserRoundIcon, { className: "size-3.5" }), signedIn ? (_jsx("span", { "aria-hidden": "true", className: "bg-primary absolute end-1 top-1 size-1.5 rounded-full max-sm:end-2 max-sm:top-2" })) : null] })), features.settings && (_jsx(TooltipIconButton, { tooltip: "Settings", side: "bottom", "aria-pressed": view === 'settings', className: HEADER_BUTTON, onClick: toggle('settings'), children: _jsx(SettingsIcon, { className: "size-3.5" }) })), features.threadList && (_jsx(TooltipIconButton, { tooltip: "Chats", side: "bottom", "aria-pressed": view === 'list', disabled: !hasThreads && view === 'thread', className: HEADER_BUTTON, onClick: toggle('list'), children: _jsx(HistoryIcon, { className: "size-3.5" }) })), _jsx(ThreadListPrimitive.New, { render: _jsx(TooltipIconButton, { tooltip: "New chat", side: "bottom", className: HEADER_BUTTON, onClick: () => onViewChange('thread') }), children: _jsx(PlusIcon, { className: "size-3.5" }) }), end] })] }));
127
+ tooltip: "Account", side: "bottom", "aria-pressed": view === 'account', className: cn(HEADER_BUTTON, 'relative'), onClick: toggle('account'), children: [_jsx(UserRoundIcon, { className: "size-3.5" }), signedIn ? (_jsx("span", { "aria-hidden": "true", className: "bg-primary absolute end-1 top-1 size-1.5 rounded-full max-sm:end-2 max-sm:top-2" })) : null] })), features.skills && (_jsx(TooltipIconButton, { tooltip: "Skills", side: "bottom", "aria-pressed": view === 'skills', className: HEADER_BUTTON, onClick: toggle('skills'), children: _jsx(BookOpenIcon, { className: "size-3.5" }) })), features.settings && (_jsx(TooltipIconButton, { tooltip: "Settings", side: "bottom", "aria-pressed": view === 'settings', className: HEADER_BUTTON, onClick: toggle('settings'), children: _jsx(SettingsIcon, { className: "size-3.5" }) })), features.threadList && (_jsx(TooltipIconButton, { tooltip: "Chats", side: "bottom", "aria-pressed": view === 'list', disabled: !hasThreads && view === 'thread', className: HEADER_BUTTON, onClick: toggle('list'), children: _jsx(HistoryIcon, { className: "size-3.5" }) })), _jsx(ThreadListPrimitive.New, { render: _jsx(TooltipIconButton, { tooltip: "New chat", side: "bottom", className: HEADER_BUTTON, onClick: () => onViewChange('thread') }), children: _jsx(PlusIcon, { className: "size-3.5" }) }), end] })] }));
126
128
  };
127
129
  /* 28px on a mouse, 36px under a finger — the touch target, not the icon. */
128
130
  const HEADER_BUTTON = 'text-muted-foreground hover:text-foreground aria-pressed:bg-muted aria-pressed:text-foreground size-7 max-sm:size-9 rounded-md p-0';
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat/chat.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GAIT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,cAAc,EAA2B,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKxD;;;;GAIG;AACH,MAAM,WAAW,GAA6B;IAC5C,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAChD,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QACpC,4EAA4E;QAC5E,KAAK,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU,EAAoB,CAAC,CAAC,CAAC,SAAS,YAEjF,KAAC,YAAY,OAAK,KAAK,YACrB,KAAC,SAAS,IAAC,MAAM,EAAE,MAAM,GAAI,GAChB,GACX,CACP,CAAC;AACJ,CAAC;AAYD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAuB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;IAChG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IACjE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAW,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,CAAC;IAC5B,8EAA8E;IAC9E,4EAA4E;IAC5E,qBAAqB;IACrB,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9E,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,2EAA2E;IAC3E,uEAAuE;IACvE,2EAA2E;IAC3E,kDAAkD;IAClD,EAAE;IACF,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACnC,SAAS,CACP,GAAG,EAAE,CACH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,IAAI,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzF,CAAC,CAAC,EACJ,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAmB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/F,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAC,iBAAiB,KAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,EAC7E,CAAC,QAAQ,CAAC,WAAW,CAAC,CACvB,CAAC;IACF,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,CACJ,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAC3C,KAAC,MAAM,IAAC,UAAU,EAAE,UAAU,GAAI,GACH,CAClC,EACD,CAAC,UAAU,EAAE,MAAM,CAAC,CACrB,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,6HAA6H,aAC1I,KAAC,UAAU,IACT,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,OAAO,EACrB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,GAC7C,EACF,eAAK,SAAS,EAAC,sDAAsD,aACnE;wBACE,wEAAwE;wBACxE,gEAAgE;wBAChE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;4BACZ,IAAI,IAAI;gCAAE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,QAAQ,CAAC;wBAC3C,CAAC,EACD,SAAS,EAAC,yBAAyB,YAElC,MAAM,GACH,EACL,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,CACzC,KAAC,cAAc,IAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAI,CACtD,EACA,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,IAAI,KAAC,YAAY,KAAG,EAG5D,IAAI,KAAK,SAAS,IAAI,CACrB,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAI,CAC1E,IACG,EACL,MAAM,CAAC,CAAC,CAAC,CACR,cAAK,SAAS,EAAC,kGAAkG,YAC9G,MAAM,GACH,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAKX,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAElC,8EAA8E;IAC9E,4EAA4E;IAC5E,0EAA0E;IAC1E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QAC1C,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;QACtC,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC/E,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,mEAAmE;IACnE,MAAM,MAAM,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE7F,OAAO,CACL,eAAK,SAAS,EAAC,kHAAkH,aAC/H,aACE,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAC,8EAA8E,YAEvF,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GACjE,EACL,eAAK,SAAS,EAAC,oCAAoC,aAChD,QAAQ,CAAC,OAAO,IAAI,CACnB,MAAC,iBAAiB;oBAChB,kEAAkE;oBAClE,qEAAqE;oBACrE,qEAAqE;;wBAFrE,kEAAkE;wBAClE,qEAAqE;wBACrE,qEAAqE;wBACrE,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,QAAQ,kBACC,IAAI,KAAK,SAAS,EAChC,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EACxC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,aAE1B,KAAC,aAAa,IAAC,SAAS,EAAC,UAAU,GAAG,EAErC,QAAQ,CAAC,CAAC,CAAC,CACV,8BACc,MAAM,EAClB,SAAS,EAAC,iFAAiF,GAC3F,CACH,CAAC,CAAC,CAAC,IAAI,IACU,CACrB,EACA,QAAQ,CAAC,QAAQ,IAAI,CACpB,KAAC,iBAAiB,IAChB,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,QAAQ,kBACC,IAAI,KAAK,UAAU,EACjC,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,YAE3B,KAAC,YAAY,IAAC,SAAS,EAAC,UAAU,GAAG,GACnB,CACrB,EACA,QAAQ,CAAC,UAAU,IAAI,CACtB,KAAC,iBAAiB,IAChB,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,QAAQ,kBACC,IAAI,KAAK,MAAM,EAC7B,QAAQ,EAAE,CAAC,UAAU,IAAI,IAAI,KAAK,QAAQ,EAC1C,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,YAEvB,KAAC,WAAW,IAAC,SAAS,EAAC,UAAU,GAAG,GAClB,CACrB,EACD,KAAC,mBAAmB,CAAC,GAAG,IACtB,MAAM,EACJ,KAAC,iBAAiB,IAChB,OAAO,EAAC,UAAU,EAClB,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GACrC,YAGJ,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,GACT,EACzB,GAAG,IACA,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,aAAa,GACjB,oIAAoI,CAAC"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat/chat.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Talk2View } from '../../index.js';
2
+ import type { UserSkill } from '../../types.js';
3
+ export interface SkillsStore {
4
+ /** Every skill on this device, in the order they were added. */
5
+ skills: UserSkill[];
6
+ /** Names that are switched off: kept here, never sent. */
7
+ disabled: ReadonlySet<string>;
8
+ /** Add or replace by name. Returns false when the name is empty. */
9
+ save: (skill: UserSkill) => boolean;
10
+ remove: (name: string) => void;
11
+ toggle: (name: string, enabled: boolean) => void;
12
+ /** What would be sent right now. */
13
+ enabled: UserSkill[];
14
+ /** Whether the last register attempt reached the engine. */
15
+ status: 'idle' | 'saving' | 'error';
16
+ }
17
+ export declare function useSkills(client: Talk2View, options: {
18
+ enabled: boolean;
19
+ }): SkillsStore;
20
+ /** Pull `name`, `description` and the body out of a markdown file. */
21
+ export declare function skillFromMarkdown(filename: string, text: string): UserSkill;
22
+ //# sourceMappingURL=use-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-skills.d.ts","sourceRoot":"","sources":["../../../src/chat/lib/use-skills.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,oEAAoE;IACpE,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,oCAAoC;IACpC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAsBD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,WAAW,CA2GvF;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAyB3E"}
@@ -0,0 +1,170 @@
1
+ 'use client';
2
+ /**
3
+ * The end-user's own skills: markdown the agent can load to learn something
4
+ * only this person or this team knows — a protocol, a house style, the way
5
+ * their department names things.
6
+ *
7
+ * Where they live: this device. The list is the SDK's own skill store
8
+ * (`t2v_user_skills` in localStorage) and the switched-off ones are a set of
9
+ * names beside it, so a skill can be kept without being sent. Both keys are
10
+ * the ones the OHIF viewer already wrote, so its existing skills survive the
11
+ * move into this chat.
12
+ *
13
+ * When they are sent: the enabled ones go to the engine for the current
14
+ * session, where they merge with the partner's and the built-in ones, and win
15
+ * over both. Registering needs somebody signed in — a guest counts — so
16
+ * nothing is sent before then, and the client registers again on its own
17
+ * whenever it starts a session.
18
+ */
19
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
20
+ const DISABLED_KEY = 't2v_disabled_skills';
21
+ function readDisabled() {
22
+ if (typeof localStorage === 'undefined')
23
+ return new Set();
24
+ try {
25
+ const raw = localStorage.getItem(DISABLED_KEY);
26
+ const parsed = raw ? JSON.parse(raw) : [];
27
+ return new Set(Array.isArray(parsed) ? parsed.filter((n) => typeof n === 'string') : []);
28
+ }
29
+ catch {
30
+ return new Set();
31
+ }
32
+ }
33
+ function writeDisabled(disabled) {
34
+ if (typeof localStorage === 'undefined')
35
+ return;
36
+ try {
37
+ localStorage.setItem(DISABLED_KEY, JSON.stringify([...disabled]));
38
+ }
39
+ catch {
40
+ // A full or blocked store costs the preference, not the skill.
41
+ }
42
+ }
43
+ export function useSkills(client, options) {
44
+ const live = options.enabled;
45
+ const [skills, setSkills] = useState([]);
46
+ const [disabled, setDisabled] = useState(() => new Set());
47
+ const [status, setStatus] = useState('idle');
48
+ // Read the device's list once. `load()` also seeds the client's own store,
49
+ // which is what the client re-registers when it starts a session.
50
+ useEffect(() => {
51
+ if (!live)
52
+ return;
53
+ setSkills(client.skills.load());
54
+ setDisabled(readDisabled());
55
+ }, [client, live]);
56
+ const enabled = useMemo(() => skills.filter((s) => !disabled.has(s.name)), [skills, disabled]);
57
+ // Send the enabled set whenever it changes, and again when somebody signs
58
+ // in. Registering needs a session, and a session needs an account — a guest
59
+ // counts — so before that there is nobody to register them for: the call
60
+ // would 401, in the console of every logged-out visitor, for nothing. The
61
+ // client registers on its own when it starts a session, which covers the
62
+ // visitor who signs in by sending their first message as a guest.
63
+ const [identity, setIdentity] = useState(() => client.auth.getUser()?.id ?? null);
64
+ useEffect(() => {
65
+ if (!live)
66
+ return;
67
+ return client.auth.onAuthStateChange((user) => setIdentity(user?.id ?? null));
68
+ }, [client, live]);
69
+ const lastSent = useRef('');
70
+ useEffect(() => {
71
+ if (!live)
72
+ return;
73
+ if (!identity) {
74
+ // Nothing is registered for nobody, so the next signed-in run must send.
75
+ lastSent.current = '';
76
+ return;
77
+ }
78
+ const payload = JSON.stringify(enabled);
79
+ if (payload === lastSent.current)
80
+ return;
81
+ lastSent.current = payload;
82
+ let cancelled = false;
83
+ setStatus('saving');
84
+ client.skills
85
+ .register(enabled)
86
+ .then(() => !cancelled && setStatus('idle'))
87
+ .catch(() => {
88
+ if (cancelled)
89
+ return;
90
+ lastSent.current = '';
91
+ setStatus('error');
92
+ });
93
+ return () => {
94
+ cancelled = true;
95
+ };
96
+ }, [client, enabled, identity, live]);
97
+ const persist = useCallback((next) => {
98
+ setSkills(next);
99
+ // The client's store is the copy that gets re-registered on a new
100
+ // session, so keep it to the enabled set and the device's file whole.
101
+ client.skills.clear();
102
+ next.forEach((s) => client.skills.add(s));
103
+ client.skills.save();
104
+ }, [client]);
105
+ const save = useCallback((skill) => {
106
+ const name = skill.name.trim();
107
+ if (!name || !skill.content.trim())
108
+ return false;
109
+ const cleaned = {
110
+ name,
111
+ description: skill.description.trim(),
112
+ content: skill.content,
113
+ };
114
+ const idx = skills.findIndex((s) => s.name === name);
115
+ persist(idx >= 0 ? skills.map((s, i) => (i === idx ? cleaned : s)) : [...skills, cleaned]);
116
+ return true;
117
+ }, [persist, skills]);
118
+ const remove = useCallback((name) => {
119
+ persist(skills.filter((s) => s.name !== name));
120
+ setDisabled((prev) => {
121
+ if (!prev.has(name))
122
+ return prev;
123
+ const next = new Set(prev);
124
+ next.delete(name);
125
+ writeDisabled(next);
126
+ return next;
127
+ });
128
+ }, [persist, skills]);
129
+ const toggle = useCallback((name, on) => {
130
+ setDisabled((prev) => {
131
+ const next = new Set(prev);
132
+ if (on)
133
+ next.delete(name);
134
+ else
135
+ next.add(name);
136
+ writeDisabled(next);
137
+ return next;
138
+ });
139
+ }, []);
140
+ return { skills, disabled, save, remove, toggle, enabled, status };
141
+ }
142
+ /** Pull `name`, `description` and the body out of a markdown file. */
143
+ export function skillFromMarkdown(filename, text) {
144
+ const fallbackName = filename
145
+ .replace(/\.[^.]+$/, '')
146
+ .replace(/[_\s]+/g, '-')
147
+ .toLowerCase();
148
+ const match = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(text);
149
+ if (!match)
150
+ return { name: fallbackName, description: '', content: text.trim() };
151
+ const front = {};
152
+ for (const line of match[1].split(/\r?\n/)) {
153
+ const at = line.indexOf(':');
154
+ if (at <= 0)
155
+ continue;
156
+ const key = line.slice(0, at).trim().toLowerCase();
157
+ const value = line
158
+ .slice(at + 1)
159
+ .trim()
160
+ .replace(/^["']|["']$/g, '');
161
+ if (key && value)
162
+ front[key] = value;
163
+ }
164
+ return {
165
+ name: front.name || fallbackName,
166
+ description: front.description || '',
167
+ content: text.slice(match[0].length).trim() || text.trim(),
168
+ };
169
+ }
170
+ //# sourceMappingURL=use-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-skills.js","sourceRoot":"","sources":["../../../src/chat/lib/use-skills.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { Talk2View } from '../index.js';
11
11
  import type { ClientTool, ClientToolSchema, PartnerConfig, T2VConfig } from '../types.js';
12
12
  import { type GuestLimits } from './auth-gate.js';
13
13
  import { type DictationPhaseStore } from './lib/dictation-phase.js';
14
+ import { type SkillsStore } from './lib/use-skills.js';
14
15
  /** The opening screen: a heading and the openers offered under the composer. */
15
16
  export interface Talk2ViewChatWelcome {
16
17
  heading?: string;
@@ -26,6 +27,8 @@ export interface Talk2ViewChatFeatures {
26
27
  settings?: boolean;
27
28
  account?: boolean;
28
29
  threadList?: boolean;
30
+ /** The end-user's own markdown skills, written in the chat (default true). */
31
+ skills?: boolean;
29
32
  }
30
33
  export interface Talk2ViewChatProps extends Omit<T2VConfig, 'partnerKey'> {
31
34
  /** Either give the config (a client is created for you) … */
@@ -89,6 +92,8 @@ export interface Talk2ViewChatContextValue {
89
92
  * refusal arrives.
90
93
  */
91
94
  limits: GuestLimits;
95
+ /** The end-user's own skills, and what is sent with their chats. */
96
+ skills: SkillsStore;
92
97
  dictation: DictationPhaseStore;
93
98
  /**
94
99
  * Whether the integrator asked for dark mode, i.e. `className` carries
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ import { useGuestLimits } from './auth-gate.js';
18
18
  import { PortalHostContext, useCreatePortalHost } from './lib/portal-host.js';
19
19
  import { createDictationPhaseStore } from './lib/dictation-phase.js';
20
20
  import { useConversations } from './lib/use-conversations.js';
21
+ import { useSkills } from './lib/use-skills.js';
21
22
  /** `dark` as a whole word, so `darkroom-theme` is not dark mode. */
22
23
  export function hasDarkClass(className) {
23
24
  return !!className && /(^|\s)dark(\s|$)/.test(className);
@@ -40,6 +41,7 @@ const FEATURE_DEFAULTS = {
40
41
  settings: true,
41
42
  account: true,
42
43
  threadList: true,
44
+ skills: true,
43
45
  };
44
46
  const NO_WELCOME = {};
45
47
  export function ChatProvider({ children, ...props }) {
@@ -97,6 +99,7 @@ export function ChatProvider({ children, ...props }) {
97
99
  // this device left off on back into the client, and the runtime reads the
98
100
  // client's messages as its own initial state on the same render.
99
101
  const threadList = useConversations(client, { enabled: features.threadList });
102
+ const skills = useSkills(client, { enabled: features.skills });
100
103
  const runtime = useTalk2ViewRuntimeForClient(client, {
101
104
  systemPrompt,
102
105
  tools,
@@ -158,10 +161,11 @@ export function ChatProvider({ children, ...props }) {
158
161
  welcome,
159
162
  portalHost,
160
163
  limits,
164
+ skills,
161
165
  dictation,
162
166
  dark,
163
167
  behaviour,
164
- }), [client, partnerConfig, features, welcome, portalHost, limits, dictation, dark]);
168
+ }), [client, partnerConfig, features, welcome, portalHost, limits, skills, dictation, dark]);
165
169
  return (_jsx(ChatContext.Provider, { value: value, children: _jsx(PortalHostContext.Provider, { value: portalHost, children: _jsx(AssistantRuntimeProvider, { runtime: runtime, children: _jsx(SuggestionStore, { suggestions: welcome.suggestions, children: children }) }) }) }));
166
170
  }
167
171
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/chat/provider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The Skills view: markdown the end-user writes once and the agent can load
3
+ * whenever it helps — a protocol, a naming convention, the way their team
4
+ * reports something.
5
+ *
6
+ * Two panes in one: the list, and the editor for whichever skill is open. The
7
+ * list is what someone sees most, so it leads; writing is a deliberate step
8
+ * behind "New skill" or a tap on a row.
9
+ */
10
+ import { type FC } from 'react';
11
+ export declare const SkillsView: FC;
12
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/chat/views/skills.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,OAAO,EAA2B,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAQzD,eAAO,MAAM,UAAU,EAAE,EAoBxB,CAAC"}
@@ -0,0 +1,72 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * The Skills view: markdown the end-user writes once and the agent can load
5
+ * whenever it helps — a protocol, a naming convention, the way their team
6
+ * reports something.
7
+ *
8
+ * Two panes in one: the list, and the editor for whichever skill is open. The
9
+ * list is what someone sees most, so it leads; writing is a deliberate step
10
+ * behind "New skill" or a tap on a row.
11
+ */
12
+ import { useId, useRef, useState } from 'react';
13
+ import { PencilIcon, PlusIcon, TrashIcon, UploadIcon } from 'lucide-react';
14
+ import { useChatContext } from '../provider.js';
15
+ import { skillFromMarkdown } from '../lib/use-skills.js';
16
+ const EMPTY = { name: '', description: '', content: '' };
17
+ export const SkillsView = () => {
18
+ const { skills } = useChatContext();
19
+ const [editing, setEditing] = useState(null);
20
+ return (_jsx("div", { className: "t2v-chat-skills aui-modal-skills bg-popover absolute inset-0 flex flex-col overflow-y-auto p-4 text-sm", children: editing ? (_jsx(SkillEditor, { skill: editing, existing: skills.skills, onCancel: () => setEditing(null), onSave: (next) => {
21
+ if (skills.save(next))
22
+ setEditing(null);
23
+ } })) : (_jsx(SkillList, { onEdit: setEditing, onNew: () => setEditing({ ...EMPTY }) })) }));
24
+ };
25
+ const SkillList = ({ onEdit, onNew, }) => {
26
+ const { skills } = useChatContext();
27
+ const fileRef = useRef(null);
28
+ const [importError, setImportError] = useState(null);
29
+ const importFiles = async (files) => {
30
+ if (!files?.length)
31
+ return;
32
+ setImportError(null);
33
+ for (const file of Array.from(files)) {
34
+ try {
35
+ const text = await file.text();
36
+ if (!text.trim())
37
+ throw new Error('empty');
38
+ skills.save(skillFromMarkdown(file.name, text));
39
+ }
40
+ catch {
41
+ setImportError(`Couldn’t read ${file.name}.`);
42
+ }
43
+ }
44
+ if (fileRef.current)
45
+ fileRef.current.value = '';
46
+ };
47
+ return (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("div", { className: "flex items-start justify-between gap-2", children: _jsx("p", { className: "text-muted-foreground text-xs", children: "Markdown the assistant can read when it needs what you know. Kept on this device, sent with your chats." }) }), _jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { type: "button", className: BUTTON, onClick: onNew, children: [_jsx(PlusIcon, { className: "size-3.5", "aria-hidden": "true" }), "New skill"] }), _jsxs("button", { type: "button", className: BUTTON, onClick: () => fileRef.current?.click(), children: [_jsx(UploadIcon, { className: "size-3.5", "aria-hidden": "true" }), "Import .md"] }), _jsx("input", { ref: fileRef, type: "file", accept: ".md,.markdown,text/markdown,text/plain", multiple: true, className: "hidden", onChange: (e) => void importFiles(e.target.files) })] }), importError ? _jsx("p", { className: "text-destructive text-xs", children: importError }) : null, skills.status === 'error' ? (_jsx("p", { className: "text-destructive text-xs", children: "Couldn\u2019t save your skills to this chat. They are still on this device." })) : null, skills.skills.length === 0 ? (_jsx("p", { className: "text-muted-foreground border-foreground/10 border border-dashed p-4 text-center text-xs", children: "No skills yet. Write one, or import a markdown file." })) : (_jsx("ul", { className: "flex flex-col gap-2", children: skills.skills.map((skill) => {
48
+ const on = !skills.disabled.has(skill.name);
49
+ return (_jsxs("li", { className: "border-foreground/10 flex items-start gap-3 border p-3", children: [_jsxs("label", { className: "flex min-w-0 flex-1 cursor-pointer items-start gap-3", children: [_jsx("input", { type: "checkbox", className: "accent-primary mt-0.5 size-3.5 shrink-0", checked: on, onChange: (e) => skills.toggle(skill.name, e.target.checked) }), _jsxs("span", { className: "min-w-0 flex-1", children: [_jsx("span", { className: "block truncate font-medium", children: skill.name }), _jsx("span", { className: "text-muted-foreground block truncate text-xs", children: skill.description || `${skill.content.trim().split(/\s+/).length} words` })] })] }), _jsxs("span", { className: "flex shrink-0 gap-1", children: [_jsx("button", { type: "button", className: ICON_BUTTON, "aria-label": `Edit ${skill.name}`, onClick: () => onEdit(skill), children: _jsx(PencilIcon, { className: "size-3.5", "aria-hidden": "true" }) }), _jsx("button", { type: "button", className: ICON_BUTTON, "aria-label": `Delete ${skill.name}`, onClick: () => skills.remove(skill.name), children: _jsx(TrashIcon, { className: "size-3.5", "aria-hidden": "true" }) })] })] }, skill.name));
50
+ }) }))] }));
51
+ };
52
+ const SkillEditor = ({ skill, existing, onSave, onCancel }) => {
53
+ const nameId = useId();
54
+ const descriptionId = useId();
55
+ const contentId = useId();
56
+ const [draft, setDraft] = useState(skill);
57
+ const isNew = !skill.name;
58
+ const clash = isNew && draft.name.trim() && existing.some((s) => s.name === draft.name.trim())
59
+ ? 'A skill with this name already exists — saving replaces it.'
60
+ : null;
61
+ const ready = draft.name.trim().length > 0 && draft.content.trim().length > 0;
62
+ return (_jsxs("form", { className: "flex flex-col gap-4", onSubmit: (e) => {
63
+ e.preventDefault();
64
+ if (ready)
65
+ onSave(draft);
66
+ }, children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { htmlFor: nameId, className: "font-medium", children: "Name" }), _jsx("input", { id: nameId, className: INPUT, value: draft.name, maxLength: 255, placeholder: "reporting-style", onChange: (e) => setDraft({ ...draft, name: e.target.value }) }), _jsx("p", { className: "text-muted-foreground text-xs", children: clash ?? 'How the assistant refers to it. Short and specific.' })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { htmlFor: descriptionId, className: "font-medium", children: "Description" }), _jsx("input", { id: descriptionId, className: INPUT, value: draft.description, placeholder: "When to use this", onChange: (e) => setDraft({ ...draft, description: e.target.value }) }), _jsx("p", { className: "text-muted-foreground text-xs", children: "One line. This is what the assistant reads when deciding whether to load it." })] }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { htmlFor: contentId, className: "font-medium", children: "Content" }), _jsx("textarea", { id: contentId, className: `${INPUT} min-h-48 resize-y py-2 font-mono text-xs leading-relaxed`, value: draft.content, placeholder: '# Reporting style\n\nAlways lead with the finding, then the measurement.', onChange: (e) => setDraft({ ...draft, content: e.target.value }) }), _jsx("p", { className: "text-muted-foreground text-xs", children: "Markdown. Everything here is sent with your chats, so keep it to what the assistant needs." })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx("button", { type: "submit", className: PRIMARY_BUTTON, disabled: !ready, children: "Save skill" }), _jsx("button", { type: "button", className: BUTTON, onClick: onCancel, children: "Cancel" })] })] }));
67
+ };
68
+ const INPUT = 'border-input bg-background text-foreground focus-visible:ring-ring w-full border px-2.5 py-1.5 text-sm outline-none focus-visible:ring-2';
69
+ const BUTTON = 'border-input text-foreground hover:bg-muted inline-flex h-8 items-center gap-1.5 border px-3 text-xs font-medium';
70
+ const PRIMARY_BUTTON = 'bg-primary text-primary-foreground hover:bg-primary/90 inline-flex h-8 items-center px-3 text-xs font-medium disabled:opacity-50';
71
+ const ICON_BUTTON = 'text-muted-foreground hover:text-foreground hover:bg-muted inline-flex size-7 items-center justify-center';
72
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/chat/views/skills.tsx"],"names":[],"mappings":"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"}