@molecule/app-ide-react 1.20.4 → 1.21.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.
@@ -63,6 +63,8 @@ export interface DockStripProps {
63
63
  hint?: ReactNode;
64
64
  /** Right-hand readout and action buttons; clicks must stop propagation. */
65
65
  actions?: ReactNode;
66
+ /** Secondary actions: at the top of the open detail in the tray, beside `actions` when standalone. */
67
+ detailActions?: ReactNode;
66
68
  /** Extra attributes for the root (e.g. a tone `data-*`). */
67
69
  rootProps?: Record<string, string>;
68
70
  /** The detail shown when expanded. */
@@ -73,5 +75,5 @@ export interface DockStripProps {
73
75
  * @param props - See {@link DockStripProps}.
74
76
  * @returns The strip.
75
77
  */
76
- export declare function DockStrip({ molId, toggleMolId, expanded, onToggle, icon, label, chipLabel, chipTitle, hint, actions, rootProps, children, }: DockStripProps): JSX.Element | null;
78
+ export declare function DockStrip({ molId, toggleMolId, expanded, onToggle, icon, label, chipLabel, chipTitle, hint, actions, detailActions, rootProps, children, }: DockStripProps): JSX.Element | null;
77
79
  //# sourceMappingURL=DockStrip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DockStrip.d.ts","sourceRoot":"","sources":["../../src/components/DockStrip.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAU3C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,wEAAwE;IACxE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAED,mEAAmE;AACnE,eAAO,MAAM,eAAe,+CAA4C,CAAA;AAExE,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAE3F;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAgB,GACjB,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,GAAG,CAAC,OAAO,CAgGd;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAA;IAChB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAmJrC"}
1
+ {"version":3,"file":"DockStrip.d.ts","sourceRoot":"","sources":["../../src/components/DockStrip.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAU3C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,wEAAwE;IACxE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7B;AAED,mEAAmE;AACnE,eAAO,MAAM,eAAe,+CAA4C,CAAA;AAExE,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;AAE3F;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,IAAgB,GACjB,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,GAAG,CAAC,OAAO,CAgGd;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAA;IACjB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAA;IAChB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sGAAsG;IACtG,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,EACJ,OAAO,EACP,aAAa,EACb,SAAS,EACT,QAAQ,GACT,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyJrC"}
@@ -81,7 +81,7 @@ export function StatusMark({ state, size = MARK_SIZE, }) {
81
81
  * @param props - See {@link DockStripProps}.
82
82
  * @returns The strip.
83
83
  */
84
- export function DockStrip({ molId, toggleMolId, expanded, onToggle, icon, label, chipLabel, chipTitle, hint, actions, rootProps, children, }) {
84
+ export function DockStrip({ molId, toggleMolId, expanded, onToggle, icon, label, chipLabel, chipTitle, hint, actions, detailActions, rootProps, children, }) {
85
85
  const cm = getClassMap();
86
86
  const tray = useContext(WorkTrayContext);
87
87
  if (tray) {
@@ -105,8 +105,8 @@ export function DockStrip({ molId, toggleMolId, expanded, onToggle, icon, label,
105
105
  borderRadius: 6,
106
106
  cursor: 'pointer',
107
107
  background: open ? 'rgba(128,128,128,0.18)' : 'rgba(128,128,128,0.08)',
108
- }, children: [icon, _jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }, children: chipLabel ?? label })] }), actions] }), tray.headerEl), open && children && tray.detailEl
109
- ? createPortal(_jsx("div", { "data-mol-id": `${molId}-detail`, style: { padding: '2px 10px 8px' }, children: children }), tray.detailEl)
108
+ }, children: [icon, _jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }, children: chipLabel ?? label })] }), actions] }), tray.headerEl), open && (children || detailActions) && tray.detailEl
109
+ ? createPortal(_jsxs("div", { "data-mol-id": `${molId}-detail`, style: { padding: '2px 10px 8px' }, children: [detailActions ? (_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: 6, marginBottom: 6 }, children: detailActions })) : null, children] }), tray.detailEl)
110
110
  : null] }));
111
111
  }
112
112
  return (_jsxs("div", { "data-mol-id": molId, ...rootProps, style: { borderTop: '1px solid rgba(128,128,128,0.15)', padding: '8px 8px 8px 10px' }, children: [_jsxs("div", { role: "button", tabIndex: 0, "data-mol-id": toggleMolId, "aria-expanded": expanded, onClick: onToggle, onKeyDown: (e) => {
@@ -134,6 +134,6 @@ export function DockStrip({ molId, toggleMolId, expanded, onToggle, icon, label,
134
134
  overflow: 'hidden',
135
135
  textOverflow: 'ellipsis',
136
136
  minWidth: 0,
137
- }, children: hint })) : null] }), actions ? (_jsx("div", { style: { display: 'flex', alignItems: 'center', gap: 6, flexShrink: 0 }, children: actions })) : null] }), expanded && children ? (_jsx("div", { style: { marginTop: 6, paddingLeft: 18 }, children: children })) : null] }));
137
+ }, children: hint })) : null] }), actions || detailActions ? (_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 6, flexShrink: 0 }, children: [actions, detailActions] })) : null] }), expanded && children ? (_jsx("div", { style: { marginTop: 6, paddingLeft: 18 }, children: children })) : null] }));
138
138
  }
139
139
  //# sourceMappingURL=DockStrip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DockStrip.js","sourceRoot":"","sources":["../../src/components/DockStrip.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DockStrip.js","sourceRoot":"","sources":["../../src/components/DockStrip.tsx"],"names":[],"mappings":"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"}
@@ -13,12 +13,16 @@
13
13
  * credential, so write access through one is something a host has to opt into
14
14
  * rather than something this modal offers by default.
15
15
  *
16
+ * A host can add its own sections below the links (`children`) — e.g. what a
17
+ * link exposes beyond the app — and can hide the links section (`showLinks`)
18
+ * for a caller who may open the dialog but not see the links.
19
+ *
16
20
  * Styling uses `getClassMap()` (`cm.*`); the only inline styles are layout the
17
21
  * ClassMap can't express. All user-facing text goes through `t()`.
18
22
  *
19
23
  * @module
20
24
  */
21
- import type { JSX } from 'react';
25
+ import type { JSX, ReactNode } from 'react';
22
26
  import type { ShareLinkResult, ShareRole } from './chat-share-utilities.js';
23
27
  /**
24
28
  * The share-link modal opened by `/share`, `/share <role>`, and the header
@@ -27,7 +31,7 @@ import type { ShareLinkResult, ShareRole } from './chat-share-utilities.js';
27
31
  * @param props - Component props.
28
32
  * @returns The rendered share modal.
29
33
  */
30
- export declare function ShareModal({ projectId, initialRole, roles, canManage, canCreate, canRevoke, onClose, onCreated, }: {
34
+ export declare function ShareModal({ projectId, initialRole, roles, canManage, canCreate, canRevoke, showLinks, refreshSignal, children, onClose, onCreated, }: {
31
35
  projectId: string;
32
36
  initialRole?: ShareRole;
33
37
  /**
@@ -48,6 +52,16 @@ export declare function ShareModal({ projectId, initialRole, roles, canManage, c
48
52
  canCreate?: boolean;
49
53
  /** Whether the caller may REVOKE a link. Defaults to `canManage`. */
50
54
  canRevoke?: boolean;
55
+ /**
56
+ * Whether to render the public-link section. Defaults to `true`; pass `false`
57
+ * when the caller may not even LIST links (the host gates the list above
58
+ * them) but the dialog still has host `children` to show.
59
+ */
60
+ showLinks?: boolean;
61
+ /** Changing this value re-fetches the link list (e.g. another client changed it). */
62
+ refreshSignal?: number;
63
+ /** Host sections rendered below the links, inside the dialog. */
64
+ children?: ReactNode;
51
65
  onClose: () => void;
52
66
  onCreated?: (result: ShareLinkResult) => void;
53
67
  }): JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"ShareModal.d.ts","sourceRoot":"","sources":["../../src/components/ShareModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAMhC,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAI3E;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,WAAgC,EAChC,KAA4B,EAC5B,SAAgB,EAChB,SAAqB,EACrB,SAAqB,EACrB,OAAO,EACP,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IAC5B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CAC9C,GAAG,GAAG,CAAC,OAAO,CA4Fd"}
1
+ {"version":3,"file":"ShareModal.d.ts","sourceRoot":"","sources":["../../src/components/ShareModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAM3C,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAI3E;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,WAAgC,EAChC,KAA4B,EAC5B,SAAgB,EAChB,SAAqB,EACrB,SAAqB,EACrB,SAAgB,EAChB,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IAC5B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;CAC9C,GAAG,GAAG,CAAC,OAAO,CAoGd"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect } from 'react';
3
3
  import { t } from '@molecule/app-i18n';
4
4
  import { getClassMap } from '@molecule/app-ui';
@@ -11,7 +11,7 @@ import { ShareLinkManager } from './ShareLinkManager.js';
11
11
  * @param props - Component props.
12
12
  * @returns The rendered share modal.
13
13
  */
14
- export function ShareModal({ projectId, initialRole = DEFAULT_SHARE_ROLE, roles = [DEFAULT_SHARE_ROLE], canManage = true, canCreate = canManage, canRevoke = canManage, onClose, onCreated, }) {
14
+ export function ShareModal({ projectId, initialRole = DEFAULT_SHARE_ROLE, roles = [DEFAULT_SHARE_ROLE], canManage = true, canCreate = canManage, canRevoke = canManage, showLinks = true, refreshSignal, children, onClose, onCreated, }) {
15
15
  const cm = getClassMap();
16
16
  // Escape closes the modal.
17
17
  useEffect(() => {
@@ -42,12 +42,12 @@ export function ShareModal({ projectId, initialRole = DEFAULT_SHARE_ROLE, roles
42
42
  borderRadius: 8,
43
43
  padding: 16,
44
44
  boxShadow: '0 10px 40px rgba(0,0,0,0.35)',
45
- }, children: [_jsx("div", { className: cm.cn(cm.fontWeight('medium'), cm.textSize('lg')), style: { marginBottom: 4 }, children: t('ide.chat.share.heading', undefined, { defaultValue: 'Share project' }) }), _jsx("div", { className: cm.textMuted, style: { marginBottom: 12, lineHeight: 1.4 }, children: offeredRoles.length > 1
46
- ? t('ide.chat.share.subheading', undefined, {
47
- defaultValue: 'Create a public link. Anyone with the link gets the role you choose — a viewer link is read-only.',
48
- })
49
- : t(`ide.chat.share.subheading.${offeredRoles[0]}`, { role: offeredRoles[0] }, {
50
- defaultValue: 'Create a public link. Anyone with the link can act as {{role}}.',
51
- }) }), _jsx(ShareLinkManager, { projectId: projectId, roles: offeredRoles, initialRole: initialRole, canManage: canManage, canCreate: canCreate, canRevoke: canRevoke, onCreated: onCreated }), _jsx("div", { style: { display: 'flex', justifyContent: 'flex-end', gap: 8, marginTop: 16 }, children: _jsx("button", { type: "button", "data-mol-id": "share-close", onClick: onClose, className: cm.cn(cm.button({ variant: 'ghost', size: 'sm' }), cm.touchTargetCompact), children: t('common.done', undefined, { defaultValue: 'Done' }) }) })] }) }));
45
+ }, children: [_jsx("div", { className: cm.cn(cm.fontWeight('medium'), cm.textSize('lg')), style: { marginBottom: 4 }, children: t('ide.chat.share.heading', undefined, { defaultValue: 'Share project' }) }), showLinks && (_jsxs(_Fragment, { children: [_jsx("div", { className: cm.textMuted, style: { marginBottom: 12, lineHeight: 1.4 }, children: offeredRoles.length > 1
46
+ ? t('ide.chat.share.subheading', undefined, {
47
+ defaultValue: 'Create a public link. Anyone with the link gets the role you choose — a viewer link is read-only.',
48
+ })
49
+ : t(`ide.chat.share.subheading.${offeredRoles[0]}`, { role: offeredRoles[0] }, {
50
+ defaultValue: 'Create a public link. Anyone with the link can act as {{role}}.',
51
+ }) }), _jsx(ShareLinkManager, { projectId: projectId, roles: offeredRoles, initialRole: initialRole, canManage: canManage, canCreate: canCreate, canRevoke: canRevoke, onCreated: onCreated, refreshSignal: refreshSignal })] })), children, _jsx("div", { style: { display: 'flex', justifyContent: 'flex-end', gap: 8, marginTop: 16 }, children: _jsx("button", { type: "button", "data-mol-id": "share-close", onClick: onClose, className: cm.cn(cm.button({ variant: 'ghost', size: 'sm' }), cm.touchTargetCompact), children: t('common.done', undefined, { defaultValue: 'Done' }) }) })] }) }));
52
52
  }
53
53
  //# sourceMappingURL=ShareModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShareModal.js","sourceRoot":"","sources":["../../src/components/ShareModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShareModal.js","sourceRoot":"","sources":["../../src/components/ShareModal.tsx"],"names":[],"mappings":"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"}
@@ -33,6 +33,14 @@ import type { TestsRunState } from './tests-card-utilities.js';
33
33
  * @returns The label.
34
34
  */
35
35
  export declare function testsBarLabel(summary: TestsBarSummary): string;
36
+ /**
37
+ * The short label the tray chip wears: one figure, not the sentence — the counts
38
+ * and the running file are in the opened detail.
39
+ *
40
+ * @param summary - The derived run summary.
41
+ * @returns The label.
42
+ */
43
+ export declare function testsChipLabel(summary: TestsBarSummary): string;
36
44
  /** What the bar needs from its host. */
37
45
  export interface TestStatusBarProps {
38
46
  /** The live run state. */
@@ -1 +1 @@
1
- {"version":3,"file":"TestStatusBar.d.ts","sourceRoot":"","sources":["../../src/components/TestStatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAKhC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,0BAA0B,CAAA;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAY9D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA0C9D;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,GAAG,EAAE,aAAa,CAAA;IAClB,iEAAiE;IACjE,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAuHlC"}
1
+ {"version":3,"file":"TestStatusBar.d.ts","sourceRoot":"","sources":["../../src/components/TestStatusBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAKhC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,0BAA0B,CAAA;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAY9D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA0C9D;AAYD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAS/D;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,GAAG,EAAE,aAAa,CAAA;IAClB,iEAAiE;IACjE,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAsGlC"}
@@ -1,7 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { t } from '@molecule/app-i18n';
3
3
  import { getClassMap } from '@molecule/app-ui';
4
- import { DockStrip } from './DockStrip.js';
4
+ import { DockStrip, StatusMark } from './DockStrip.js';
5
5
  import { summariseTestsBar } from './tests-bar-utilities.js';
6
6
  /** The theme token each tone paints its dot and figures with. */
7
7
  const TONE_COLOR = {
@@ -45,6 +45,32 @@ export function testsBarLabel(summary) {
45
45
  defaultValue: count === 1 ? '{{count}} test not run yet' : '{{count}} tests not run yet',
46
46
  });
47
47
  }
48
+ /** The shared status mark each tone wears on the chip. */
49
+ const TONE_MARK = {
50
+ idle: 'todo',
51
+ running: 'active',
52
+ passing: 'done',
53
+ failing: 'failed',
54
+ stopped: 'stopped',
55
+ error: 'failed',
56
+ };
57
+ /**
58
+ * The short label the tray chip wears: one figure, not the sentence — the counts
59
+ * and the running file are in the opened detail.
60
+ *
61
+ * @param summary - The derived run summary.
62
+ * @returns The label.
63
+ */
64
+ export function testsChipLabel(summary) {
65
+ const { tone, passed, failed } = summary;
66
+ if (tone === 'running')
67
+ return t('ide.testsBar.runningLast', undefined, { defaultValue: 'Running tests' });
68
+ if (tone === 'failing')
69
+ return `${failed} ${t('ide.testsBar.failedLabel', undefined, { defaultValue: 'failing' })}`;
70
+ if (tone === 'passing')
71
+ return `${passed} ${t('ide.testsBar.passedLabel', undefined, { defaultValue: 'passing' })}`;
72
+ return testsBarLabel(summary);
73
+ }
48
74
  /**
49
75
  * Renders the tests status strip.
50
76
  *
@@ -54,15 +80,14 @@ export function testsBarLabel(summary) {
54
80
  export function TestStatusBar({ run, tests, expanded, onToggle, onOpen, onStop, }) {
55
81
  const cm = getClassMap();
56
82
  const summary = summariseTestsBar(run, tests);
57
- const hasResults = summary.passed + summary.failed + summary.skipped > 0;
58
83
  const label = testsBarLabel(summary);
59
- return (_jsx(DockStrip, { molId: "tests-bar", toggleMolId: "tests-bar-toggle", rootProps: { 'data-tests-tone': summary.tone }, expanded: expanded, onToggle: onToggle, label: _jsx("span", { "data-mol-id": "tests-bar-label", children: label }), hint: summary.tone === 'running' && (summary.currentTest ?? summary.currentFile) ? (_jsx("span", { "data-mol-id": "tests-bar-current", children: `· ${summary.currentTest ?? summary.currentFile}` })) : undefined, actions: _jsxs(_Fragment, { children: [hasResults ? (_jsxs("span", { "data-mol-id": "tests-bar-counts", className: cm.textSize('xs'), role: "img", "aria-label": t('ide.testsBar.counts', { passed: summary.passed, failed: summary.failed, skipped: summary.skipped }, { defaultValue: '{{passed}} passing, {{failed}} failing, {{skipped}} skipped' }), style: { fontWeight: 600, whiteSpace: 'nowrap', fontVariantNumeric: 'tabular-nums' }, children: [_jsx("span", { style: { color: TONE_COLOR.passing }, children: summary.passed }), _jsx("span", { style: { opacity: 0.4 }, children: ' / ' }), _jsx("span", { style: { color: TONE_COLOR.failing }, children: summary.failed }), _jsx("span", { style: { opacity: 0.4 }, children: ' / ' }), _jsx("span", { style: { color: TONE_COLOR.stopped }, children: summary.skipped })] })) : null, run.running && onStop ? (_jsx("button", { type: "button", "data-mol-id": "tests-bar-stop", className: cm.cn(cm.button({ variant: 'solid', color: 'error', size: 'xs' }), cm.touchTargetCompact), onClick: (e) => {
60
- e.stopPropagation();
61
- onStop();
62
- }, children: t('ide.testsBar.stop', undefined, { defaultValue: 'Stop' }) })) : (_jsx("button", { type: "button", "data-mol-id": "tests-bar-open", className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), onClick: (e) => {
63
- e.stopPropagation();
64
- onOpen();
65
- }, children: t('ide.testsBar.open', undefined, { defaultValue: 'Tests' }) }))] }), children: _jsxs("div", { "data-mol-id": "tests-bar-detail", className: cm.cn(cm.textMuted, cm.textSize('xs')), style: {
84
+ return (_jsx(DockStrip, { molId: "tests-bar", toggleMolId: "tests-bar-toggle", rootProps: { 'data-tests-tone': summary.tone }, expanded: expanded, onToggle: onToggle, label: _jsx("span", { "data-mol-id": "tests-bar-label", children: label }), hint: summary.tone === 'running' && (summary.currentTest ?? summary.currentFile) ? (_jsx("span", { "data-mol-id": "tests-bar-current", children: `· ${summary.currentTest ?? summary.currentFile}` })) : undefined, actions: run.running && onStop ? (_jsx("button", { type: "button", "data-mol-id": "tests-bar-stop", className: cm.cn(cm.button({ variant: 'solid', color: 'error', size: 'xs' }), cm.touchTargetCompact), onClick: (e) => {
85
+ e.stopPropagation();
86
+ onStop();
87
+ }, children: t('ide.testsBar.stop', undefined, { defaultValue: 'Stop' }) })) : undefined, detailActions: run.running && onStop ? undefined : (_jsx("button", { type: "button", "data-mol-id": "tests-bar-open", className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), onClick: (e) => {
88
+ e.stopPropagation();
89
+ onOpen();
90
+ }, children: t('ide.testsBar.open', undefined, { defaultValue: 'Tests' }) })), icon: _jsx(StatusMark, { state: TONE_MARK[summary.tone], size: 14 }), chipLabel: testsChipLabel(summary), children: _jsxs("div", { "data-mol-id": "tests-bar-detail", className: cm.cn(cm.textMuted, cm.textSize('xs')), style: {
66
91
  display: 'flex',
67
92
  flexDirection: 'column',
68
93
  gap: 2,
@@ -1 +1 @@
1
- {"version":3,"file":"TestStatusBar.js","sourceRoot":"","sources":["../../src/components/TestStatusBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestStatusBar.js","sourceRoot":"","sources":["../../src/components/TestStatusBar.tsx"],"names":[],"mappings":"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"}
@@ -8,12 +8,15 @@
8
8
  * commit-message generator) and `compactModel` (conversation compaction), which
9
9
  * fall back to the server's own fast default (never `chatModel`) when unset.
10
10
  * These helpers parse the mode flag, map a mode to its settings field, resolve
11
- * the effective model for a mode, and compute the free-tier clamp (plan →
12
- * `deepseek-v4-pro`, execute → `deepseek-v4-flash`, commit/compact → any
13
- * free-tier-flagged model) against the live catalog. The clamp ids mirror the
14
- * server's FREE_TIER_MODELS in molecule-dev's `model-selection.ts` — keep the
15
- * two in sync (a stale Sonnet-plan assumption here once highlighted the wrong
16
- * "current" model in the picker).
11
+ * the effective model for a mode, and compute the free-tier clamp.
12
+ *
13
+ * The clamp is entirely SERVER-DRIVEN — no model id is ever named here. A
14
+ * free/anon user may use, in any mode, a model the catalog flags `freeTier`,
15
+ * plus the server-sent per-mode default for that mode (`GET /ai/models`
16
+ * `defaults`, which the server resolves from its own free-tier policy). Two
17
+ * earlier generations of this file hardcoded the clamp ids (first a Sonnet
18
+ * planner, then `deepseek-v4-pro`); each went stale the moment the server's
19
+ * policy moved and the picker advertised a model the server would not use.
17
20
  *
18
21
  * Everything here is deterministic and side-effect free so it can be unit tested
19
22
  * without rendering or a backend. The component owns persistence (`PATCH
@@ -21,9 +24,15 @@
21
24
  *
22
25
  * @module
23
26
  */
24
- import type { AppModelDefinition } from '@molecule/app-ai-models';
27
+ import type { AppModelDefinition, AppModeModelDefaults } from '@molecule/app-ai-models';
25
28
  /** A conversation mode or auxiliary job that can have its own model. */
26
29
  export type ModelMode = 'plan' | 'execute' | 'commit' | 'compact';
30
+ /**
31
+ * The server-sent per-mode defaults (`GET /ai/models` `defaults`) — the
32
+ * server's own resolution of what each mode uses for this requester's tier.
33
+ * Partial/absent while the catalog is loading or on servers that don't send it.
34
+ */
35
+ export type ServerModeDefaults = Partial<AppModeModelDefaults> | undefined;
27
36
  /** The subset of project settings this module reads for model resolution. */
28
37
  export interface PerModeModelSettings {
29
38
  /** Model id used in plan mode (falls back to {@link PerModeModelSettings.chatModel}). */
@@ -71,20 +80,18 @@ export declare function modeSettingKey(mode: ModelMode): 'planModel' | 'executeM
71
80
  */
72
81
  export declare function resolveModeModel(settings: PerModeModelSettings, mode: ModelMode): string | undefined;
73
82
  /**
74
- * Computes the free-tier-allowed model id for a mode from the live catalog. The
75
- * free/anon tier is clamped — with no mixing — to `deepseek-v4-pro` in plan
76
- * mode and `deepseek-v4-flash` in execute mode (the auxiliary commit/compact
77
- * jobs share the execute clamp), mirroring the server's FREE_TIER_MODELS.
78
- * Matching is catalog-driven (by id/provider) so it survives id churn; when no
79
- * specific match exists it falls back to the supplied `fallback` (the
80
- * catalog's free-tier model id).
83
+ * The model a free/anon user gets in a mode when nothing else applies: the
84
+ * server-sent default for that mode, else the catalog's `freeTier`-flagged
85
+ * model, else the supplied `fallback`. Never names a model id — the server's
86
+ * free-tier policy (and the catalog flag it publishes) is the only source.
81
87
  *
82
88
  * @param models - The available models from the catalog.
83
89
  * @param mode - The conversation mode or auxiliary job.
84
- * @param fallback - The free-tier model id to use when no match is found.
85
- * @returns The clamped model id for the mode.
90
+ * @param fallback - The free-tier model id to use when neither source has one.
91
+ * @param serverDefaults - Server-sent per-mode defaults (`GET /ai/models`).
92
+ * @returns The free-tier model id for the mode.
86
93
  */
87
- export declare function freeTierModeModelId(models: readonly AppModelDefinition[], mode: ModelMode, fallback: string): string;
94
+ export declare function freeTierModeModelId(models: readonly AppModelDefinition[], mode: ModelMode, fallback: string, serverDefaults?: ServerModeDefaults): string;
88
95
  /**
89
96
  * The model id that will ACTUALLY serve a conversation mode, for display.
90
97
  *
@@ -92,81 +99,71 @@ export declare function freeTierModeModelId(models: readonly AppModelDefinition[
92
99
  * per-request override, which the UI never has): the project's per-mode model,
93
100
  * then the project's SAVED legacy `chatModel`, each skipped when the free-tier
94
101
  * clamp would reject it — then the server-sent per-mode default (which already
95
- * folds in the owner's account-level settings and tier), then the catalog
96
- * clamp as the last resort.
102
+ * folds in the owner's account-level settings and tier), then the catalog's
103
+ * free-tier model as the last resort.
97
104
  *
98
105
  * `settings.chatModel` must be the PERSISTED value only — never a UI-seeded
99
- * default. Seeding the catalog's single free-tier model (the executor) as
100
- * "current" is exactly the bug this exists to fix: every plan-mode surface
101
- * then labeled the planner as the executor model while the server planned
102
- * with its own plan default (observed on prod 2026-08-13 — the UI said
103
- * "DeepSeek V4 Flash" for a plan turn that DeepSeek V4 Pro served).
106
+ * default. Seeding the catalog's free-tier model as "current" once made every
107
+ * plan-mode surface label the wrong model while the server planned with its
108
+ * own plan default.
104
109
  *
105
110
  * @param mode - The conversation mode to resolve.
106
111
  * @param settings - Persisted per-mode + legacy model settings (saved only).
107
112
  * @param serverDefaults - Server-sent per-mode defaults (`GET /ai/models`).
108
113
  * @param isFreeTier - Whether the current user is on the free/anon tier.
109
114
  * @param models - The available models from the catalog.
110
- * @param fallback - The free-tier model id to use when no clamp match exists.
115
+ * @param fallback - The free-tier model id to use when no other source exists.
111
116
  * @returns The model id the mode resolves to.
112
117
  */
113
- export declare function effectiveModeModelId(mode: 'plan' | 'execute', settings: PerModeModelSettings, serverDefaults: {
114
- plan?: string;
115
- execute?: string;
116
- } | undefined, isFreeTier: boolean, models: readonly AppModelDefinition[], fallback: string): string;
118
+ export declare function effectiveModeModelId(mode: 'plan' | 'execute', settings: PerModeModelSettings, serverDefaults: ServerModeDefaults, isFreeTier: boolean, models: readonly AppModelDefinition[], fallback: string): string;
117
119
  /**
118
120
  * Why a model is locked for a free-tier user in a given mode — `'paid'` for a
119
121
  * genuinely paid model, `'mode'` for a model the free tier CAN use, just in a
120
- * different mode (e.g. the execute clamp shown in the plan-scoped picker).
122
+ * different mode (e.g. another mode's server default shown in this picker).
121
123
  */
122
124
  export type FreeTierLockReason = 'paid' | 'mode';
123
125
  /**
124
126
  * The lock reason for a model in a mode under the free-tier clamp, or `null`
125
127
  * when it is selectable. Pro users and `provider: 'custom'` (bring-your-own
126
- * AI) models are never locked; a free/anon user may pick only the mode's
127
- * clamped model (plan/execute) or any free-tier-flagged model (the auxiliary
128
- * commit/compact jobs, mirroring the server's aux-model selection, which
129
- * ignores a non-free platform pick anyway).
128
+ * AI) models are never locked; a free/anon user may pick a `freeTier`-flagged
129
+ * model in any mode, or the server-sent default for the scoped mode.
130
130
  *
131
131
  * A locked model splits into two very different cases the UI must not
132
132
  * conflate: `'paid'` (upgrade actually unlocks it) versus `'mode'` (the model
133
- * is free-tier-usable in ANOTHER mode — it is a different mode's clamp, or
134
- * free-tier-flagged and thus selectable for commit/compact — so a "Pro" badge
135
- * would be flatly wrong).
133
+ * is free-tier-usable in ANOTHER mode, so a "Pro" badge would be flatly wrong).
136
134
  *
137
135
  * @param modelId - The candidate model id.
138
136
  * @param mode - The conversation mode the picker is scoped to.
139
137
  * @param isFreeTier - Whether the current user is on the free/anon tier.
140
138
  * @param models - The available models from the catalog.
141
- * @param fallback - The free-tier model id to use when no clamp match is found.
139
+ * @param serverDefaults - Server-sent per-mode defaults (`GET /ai/models`).
142
140
  * @returns `'paid'` / `'mode'` when locked, `null` when selectable.
143
141
  */
144
- export declare function freeTierLockReason(modelId: string, mode: ModelMode, isFreeTier: boolean, models: readonly AppModelDefinition[], fallback: string): FreeTierLockReason | null;
142
+ export declare function freeTierLockReason(modelId: string, mode: ModelMode, isFreeTier: boolean, models: readonly AppModelDefinition[], serverDefaults?: ServerModeDefaults): FreeTierLockReason | null;
145
143
  /**
146
144
  * The mode a free-tier user can actually use this model in — `'plan'` /
147
- * `'execute'` when it is that mode's clamp, `'commit'` (standing for both
148
- * auxiliary jobs) when it is merely free-tier-flagged, `null` when the free
145
+ * `'execute'` when the free tier allows it there, `'commit'` (standing for
146
+ * both auxiliary jobs) when only an aux job allows it, `null` when the free
149
147
  * tier can't use it anywhere. Drives the "free in <mode>" labeling next to a
150
148
  * `'mode'`-locked row.
151
149
  *
152
150
  * @param modelId - The candidate model id.
153
151
  * @param models - The available models from the catalog.
154
- * @param fallback - The free-tier model id to use when no clamp match is found.
152
+ * @param serverDefaults - Server-sent per-mode defaults (`GET /ai/models`).
155
153
  * @returns The mode the model is free-tier-usable in, or `null`.
156
154
  */
157
- export declare function freeTierUsableMode(modelId: string, models: readonly AppModelDefinition[], fallback: string): ModelMode | null;
155
+ export declare function freeTierUsableMode(modelId: string, models: readonly AppModelDefinition[], serverDefaults?: ServerModeDefaults): ModelMode | null;
158
156
  /**
159
157
  * Whether a model is locked (not selectable) for the given mode under the
160
158
  * free-tier clamp — the boolean view of {@link freeTierLockReason} (which see
161
- * for the rules: pro users and custom models never lock; plan/execute clamp to
162
- * one model; commit/compact accept any free-tier-flagged model).
159
+ * for the rules).
163
160
  *
164
161
  * @param modelId - The candidate model id.
165
162
  * @param mode - The conversation mode the picker is scoped to.
166
163
  * @param isFreeTier - Whether the current user is on the free/anon tier.
167
164
  * @param models - The available models from the catalog.
168
- * @param fallback - The free-tier model id to use when no clamp match is found.
165
+ * @param serverDefaults - Server-sent per-mode defaults (`GET /ai/models`).
169
166
  * @returns `true` when the model is locked for this user and mode.
170
167
  */
171
- export declare function isModeModelLocked(modelId: string, mode: ModelMode, isFreeTier: boolean, models: readonly AppModelDefinition[], fallback: string): boolean;
168
+ export declare function isModeModelLocked(modelId: string, mode: ModelMode, isFreeTier: boolean, models: readonly AppModelDefinition[], serverDefaults?: ServerModeDefaults): boolean;
172
169
  //# sourceMappingURL=chat-model-mode-utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-model-mode-utilities.d.ts","sourceRoot":"","sources":["../../src/components/chat-model-mode-utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEjE,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,GACd,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,CAW/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,SAAS,GACd,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,cAAc,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAC/D,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,MAAM,CAcR;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAA;AAKhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,kBAAkB,GAAG,IAAI,CAe3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,SAAS,GAAG,IAAI,CAKlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAET"}
1
+ {"version":3,"file":"chat-model-mode-utilities.d.ts","sourceRoot":"","sources":["../../src/components/chat-model-mode-utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAEvF,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEjE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAA;AAE1E,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,GACd,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,CAW/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,SAAS,GACd,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,kBAAkB,GAClC,MAAM,CAER;AAuBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,cAAc,EAAE,kBAAkB,EAClC,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,MAAM,CAcR;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAA;AAKhD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,cAAc,CAAC,EAAE,kBAAkB,GAClC,kBAAkB,GAAG,IAAI,CAS3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,cAAc,CAAC,EAAE,kBAAkB,GAClC,SAAS,GAAG,IAAI,CAWlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,SAAS,kBAAkB,EAAE,EACrC,cAAc,CAAC,EAAE,kBAAkB,GAClC,OAAO,CAET"}