@molecule/app-ide-react 3.0.0 → 3.0.2

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 CHANGED
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
3
3
  Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
4
4
  Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
5
5
  To change this document, edit the module-level JSDoc in src/index.ts.
6
- Generated: 2026-10-27T23:36:08.782Z
6
+ Generated: 2026-10-29T14:19:07.765Z
7
7
  -->
8
8
 
9
9
  # @molecule/app-ide-react
@@ -1947,6 +1947,7 @@ function ChatPanel({
1947
1947
  isPro,
1948
1948
  isAnonymous,
1949
1949
  canEdit = true,
1950
+ canSendTeamMessages = true,
1950
1951
  canShare,
1951
1952
  shareLinksAllowed,
1952
1953
  shareLinksRefreshSignal,
@@ -48,11 +48,13 @@ import type { AutoCommitState } from './chat-autocommit-utilities.js';
48
48
  * floating button absolutely positioned over the input area.
49
49
  * @returns The rendered button, or `null` when auto-commit is disabled.
50
50
  */
51
- export declare function AutoCommitBadge({ state, onCommitNow, disabled, inline, }: {
51
+ export declare function AutoCommitBadge({ state, onCommitNow, disabled, inline, label, }: {
52
52
  state: AutoCommitState;
53
53
  onCommitNow: () => void;
54
54
  disabled?: boolean;
55
55
  inline?: boolean;
56
+ /** Combined action/info label, e.g. "Commit 2 files". */
57
+ label?: string;
56
58
  }): JSX.Element | null;
57
59
  export declare namespace AutoCommitBadge {
58
60
  var displayName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCommitBadge.d.ts","sourceRoot":"","sources":["../../src/components/AutoCommitBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAKhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAOrE;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,QAAgB,EAChB,MAAc,GACf,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAmDrB;yBA7De,eAAe"}
1
+ {"version":3,"file":"AutoCommitBadge.d.ts","sourceRoot":"","sources":["../../src/components/AutoCommitBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAKhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAOrE;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,QAAgB,EAChB,MAAc,EACd,KAAK,GACN,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyDrB;yBAtEe,eAAe"}
@@ -15,15 +15,15 @@ import { formatAutoCommitBadge, isAutoCommitCountdownVisible, isAutoCommitEnable
15
15
  * floating button absolutely positioned over the input area.
16
16
  * @returns The rendered button, or `null` when auto-commit is disabled.
17
17
  */
18
- export function AutoCommitBadge({ state, onCommitNow, disabled = false, inline = false, }) {
18
+ export function AutoCommitBadge({ state, onCommitNow, disabled = false, inline = false, label, }) {
19
19
  const cm = getClassMap();
20
20
  if (!isAutoCommitEnabled(state))
21
21
  return null;
22
22
  // A held countdown is paused, not imminent — never show the countdown label
23
23
  // while disabled, only the plain "Commit".
24
24
  const showCountdown = !disabled && isAutoCommitCountdownVisible(state);
25
- const commitLabel = t('ide.chat.commit', undefined, { defaultValue: 'Commit' });
26
- const countdownLabel = t('ide.chat.autoCommit.badge', { countdown: formatAutoCommitBadge(state) }, { defaultValue: 'Auto-commit in {{countdown}}' });
25
+ const commitLabel = label ?? t('ide.chat.commit', undefined, { defaultValue: 'Commit' });
26
+ const countdownLabel = t(label ? 'ide.chat.autoCommit.countedBadge' : 'ide.chat.autoCommit.badge', { commit: commitLabel, countdown: formatAutoCommitBadge(state) }, { defaultValue: label ? '{{commit}} in {{countdown}}' : 'Auto-commit in {{countdown}}' });
27
27
  return (_jsx("button", { type: "button", "data-mol-id": "chat-autocommit-badge", disabled: disabled,
28
28
  // The manual commit button's exact treatment, recolored to the SUCCESS
29
29
  // semantic. The CVA owns hover/active/focus-visible AND the disabled look
@@ -39,7 +39,11 @@ export function AutoCommitBadge({ state, onCommitNow, disabled = false, inline =
39
39
  if (disabled)
40
40
  return;
41
41
  onCommitNow();
42
- }, "aria-label": showCountdown ? `${countdownLabel} — ${commitLabel}` : commitLabel, title: showCountdown ? commitLabel : undefined,
42
+ }, "aria-label": showCountdown
43
+ ? label
44
+ ? countdownLabel
45
+ : `${countdownLabel} — ${commitLabel}`
46
+ : commitLabel, title: showCountdown && !label ? commitLabel : undefined,
43
47
  // ONLY what the ClassMap cannot express: where the button sits, and the
44
48
  // tabular figures that stop the countdown label jittering as it ticks.
45
49
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCommitBadge.js","sourceRoot":"","sources":["../../src/components/AutoCommitBadge.tsx"],"names":[],"mappings":";AAsCA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,MAAM,GAAG,KAAK,GAMf;IACC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,4EAA4E;IAC5E,2CAA2C;IAC3C,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAA;IACtE,MAAM,WAAW,GAAG,CAAC,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC/E,MAAM,cAAc,GAAG,CAAC,CACtB,2BAA2B,EAC3B,EAAE,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,EAC3C,EAAE,YAAY,EAAE,8BAA8B,EAAE,CACjD,CAAA;IACD,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,iBACD,uBAAuB,EACnC,QAAQ,EAAE,QAAQ;QAClB,uEAAuE;QACvE,0EAA0E;QAC1E,oEAAoE;QACpE,qEAAqE;QACrE,4DAA4D;QAC5D,SAAS,EAAE,EAAE,CAAC,EAAE,CACd,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAC7D,EAAE,CAAC,kBAAkB,CACtB,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,iEAAiE;YACjE,mEAAmE;YACnE,yDAAyD;YACzD,qEAAqE;YACrE,CAAC,CAAC,eAAe,EAAE,CAAA;YACnB,IAAI,QAAQ;gBAAE,OAAM;YACpB,WAAW,EAAE,CAAA;QACf,CAAC,gBACW,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,EAC9E,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC9C,wEAAwE;QACxE,uEAAuE;QACvE,KAAK,EAAE;YACL,wEAAwE;YACxE,mDAAmD;YACnD,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;gBAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC7D,kBAAkB,EAAE,cAAc;SACnC,YAEA,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,GACtC,CACV,CAAA;AACH,CAAC;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA"}
1
+ {"version":3,"file":"AutoCommitBadge.js","sourceRoot":"","sources":["../../src/components/AutoCommitBadge.tsx"],"names":[],"mappings":";AAsCA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,gCAAgC,CAAA;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,MAAM,GAAG,KAAK,EACd,KAAK,GAQN;IACC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,4EAA4E;IAC5E,2CAA2C;IAC3C,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAA;IACtE,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAA;IACxF,MAAM,cAAc,GAAG,CAAC,CACtB,KAAK,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,2BAA2B,EACxE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,EAChE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,8BAA8B,EAAE,CACzF,CAAA;IACD,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,iBACD,uBAAuB,EACnC,QAAQ,EAAE,QAAQ;QAClB,uEAAuE;QACvE,0EAA0E;QAC1E,oEAAoE;QACpE,qEAAqE;QACrE,4DAA4D;QAC5D,SAAS,EAAE,EAAE,CAAC,EAAE,CACd,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAC7D,EAAE,CAAC,kBAAkB,CACtB,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,iEAAiE;YACjE,mEAAmE;YACnE,yDAAyD;YACzD,qEAAqE;YACrE,CAAC,CAAC,eAAe,EAAE,CAAA;YACnB,IAAI,QAAQ;gBAAE,OAAM;YACpB,WAAW,EAAE,CAAA;QACf,CAAC,gBAEC,aAAa;YACX,CAAC,CAAC,KAAK;gBACL,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,GAAG,cAAc,MAAM,WAAW,EAAE;YACxC,CAAC,CAAC,WAAW,EAEjB,KAAK,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACxD,wEAAwE;QACxE,uEAAuE;QACvE,KAAK,EAAE;YACL,wEAAwE;YACxE,mDAAmD;YACnD,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;gBAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YAC7D,kBAAkB,EAAE,cAAc;SACnC,YAEA,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,GACtC,CACV,CAAA;AACH,CAAC;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA"}
@@ -149,6 +149,8 @@ export interface ChatInnerProps {
149
149
  isAnonymous?: boolean;
150
150
  /** Whether the user may write shared project state — see {@link ChatPanelProps.canEdit}. */
151
151
  canEdit?: boolean;
152
+ /** Whether team messages are allowed — see {@link ChatPanelProps.canSendTeamMessages}. */
153
+ canSendTeamMessages?: boolean;
152
154
  /** Whether the user may manage public share links — see {@link ChatPanelProps.canShare}. */
153
155
  canShare?: boolean;
154
156
  /** Whether the share dialog shows its links — see {@link ChatPanelProps.shareLinksAllowed}. */
@@ -256,7 +258,7 @@ export interface ChatInnerProps {
256
258
  * @param props - Component props (see {@link MessageItemProps}).
257
259
  * @returns The rendered chat panel element.
258
260
  */
259
- export declare function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, isAnonymous, canEdit, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, skipToolCall, className, }: ChatPanelProps): JSX.Element;
261
+ export declare function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, isAnonymous, canEdit, canSendTeamMessages, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, skipToolCall, className, }: ChatPanelProps): JSX.Element;
260
262
  export declare namespace ChatPanel {
261
263
  var displayName: string;
262
264
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"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"}
@@ -1326,7 +1326,7 @@ const MessageItem = memo(function MessageItem(props) {
1326
1326
  * @param props - Component props (see {@link MessageItemProps}).
1327
1327
  * @returns The rendered chat inner component.
1328
1328
  */
1329
- function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent, isPro, isAnonymous, canEdit, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onConversationId, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, openSettingsSignal, onManageCustomModels, modelSelectionSignal, openReportSignal, openShareSignal, initialInputValue, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, gitStatusTick: externalGitStatusTick, discovery, userAvatar, agentName = DEFAULT_AGENT_NAME, productName = DEFAULT_PRODUCT_NAME, version, extraCommands, listTests, runTests, canRunTests, testsAvailable, skipToolCall,
1329
+ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent, isPro, isAnonymous, canEdit, canSendTeamMessages = true, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onConversationId, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, openSettingsSignal, onManageCustomModels, modelSelectionSignal, openReportSignal, openShareSignal, initialInputValue, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, gitStatusTick: externalGitStatusTick, discovery, userAvatar, agentName = DEFAULT_AGENT_NAME, productName = DEFAULT_PRODUCT_NAME, version, extraCommands, listTests, runTests, canRunTests, testsAvailable, skipToolCall,
1330
1330
  // feedbackUrl: prop kept for back-compat (callers still pass it), but no longer
1331
1331
  // consumed here — its only use was the command-menu footer link removed in P3-21.
1332
1332
  }) {
@@ -1334,6 +1334,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
1334
1334
  // Share-link management may be gated ABOVE canEdit by the host (molecule.dev
1335
1335
  // mints/lists/revokes at admin+) — every /share surface below uses this, so
1336
1336
  // an editor without the capability gets no dead modal.
1337
+ const transcriptOnly = canEdit === false && canSendTeamMessages === false;
1337
1338
  const shareAllowed = canShare ?? canEdit !== false;
1338
1339
  const themeMode = useThemeMode();
1339
1340
  const isLight = themeMode === 'light';
@@ -1737,8 +1738,6 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
1737
1738
  const [commitState, setCommitState] = useState(null);
1738
1739
  const [pendingFiles, setPendingFiles] = useState(null);
1739
1740
  const [commitBarExpanded, setCommitBarExpanded] = useState(false);
1740
- // The tests strip sits above the commit bar and starts collapsed, like it.
1741
- const [testsBarExpanded, setTestsBarExpanded] = useState(false);
1742
1741
  const [commitCards, setCommitCards] = useState([]);
1743
1742
  /**
1744
1743
  * Number of timeline items rendered in the DOM. Starts at the most recent
@@ -2412,6 +2411,18 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
2412
2411
  }, 50);
2413
2412
  }
2414
2413
  }, []);
2414
+ // Check the unfiltered definitions at the send boundary. Removing a disabled
2415
+ // command from the menu must not reinterpret its raw text as an assistant send:
2416
+ // a host backend may still intercept that command or any of its aliases.
2417
+ const blockDisabledTeamMessage = useCallback((message) => {
2418
+ if (canSendTeamMessages !== false ||
2419
+ !matchesSideChannelCommand(extraCommands?.length ? [...COMMANDS, ...extraCommands] : COMMANDS, message))
2420
+ return false;
2421
+ addSystemCard(t('ide.chat.teamMessagesUnavailable', undefined, {
2422
+ defaultValue: 'Team messaging is unavailable in this workspace.',
2423
+ }));
2424
+ return true;
2425
+ }, [canSendTeamMessages, extraCommands, addSystemCard, t]);
2415
2426
  // Apply a chat event broadcast by another project member (the chat push channel). The
2416
2427
  // originating member's SERVER already persisted everything; this client renders the
2417
2428
  // broadcast live and gets the durable copy on reload. EVERY frame of a remote turn
@@ -2604,7 +2615,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
2604
2615
  // any tip and never reappears for this conversation. Resuming an existing
2605
2616
  // conversation (conversationId set) is NOT a fresh start, so no entry tip there.
2606
2617
  useEffect(() => {
2607
- if (entryTipShownRef.current)
2618
+ if (transcriptOnly || entryTipShownRef.current)
2608
2619
  return;
2609
2620
  // No onboarding tip during the initial discovery phase (mvp B1) — discovery is
2610
2621
  // its own guided Q&A; a blue tip there is noise.
@@ -2616,7 +2627,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
2616
2627
  shownTipIdsRef.current = [...shownTipIdsRef.current, ENTRY_TIP.id];
2617
2628
  const text = t(`ide.chat.tip.${ENTRY_TIP.id}`, { agentName }, { defaultValue: ENTRY_TIP.text });
2618
2629
  setTipCards((prev) => [...prev, { id: crypto.randomUUID(), text, timestamp: Date.now() }]);
2619
- }, [conversationId, messages.length, agentName, discovery]);
2630
+ }, [conversationId, messages.length, agentName, discovery, transcriptOnly]);
2620
2631
  // Viewer orientation tip: a read-only member's explainer — GOLD like the
2621
2632
  // team-only messages and led by the same `people` icon it explains, so the
2622
2633
  // badge on a team note is self-describing. A regular dismissable tip (never a
@@ -2625,7 +2636,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
2625
2636
  // hosts that don't do roles never see it.
2626
2637
  const viewerTipShownRef = useRef(false);
2627
2638
  useEffect(() => {
2628
- if (canEdit !== false || discovery || viewerTipShownRef.current)
2639
+ if (transcriptOnly || canEdit !== false || discovery || viewerTipShownRef.current)
2629
2640
  return;
2630
2641
  viewerTipShownRef.current = true;
2631
2642
  const text = t('ide.chat.tip.viewerTeamOnly', { agentName }, {
@@ -2641,13 +2652,16 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
2641
2652
  icon: 'people',
2642
2653
  },
2643
2654
  ]);
2644
- }, [canEdit, discovery, agentName]);
2655
+ }, [canEdit, discovery, agentName, transcriptOnly]);
2645
2656
  // Surface an occasional idle tip. This effect re-runs on every message change, so
2646
2657
  // the idle timer is continually reset by activity; it only fires once the
2647
2658
  // conversation has been quiet for TIP_IDLE_MS — and even then only when the
2648
2659
  // cooldown + random roll allow, and never before TIP_MIN_MESSAGES (so never on the
2649
2660
  // first prompt). Skipped entirely while a message is streaming.
2650
2661
  useEffect(() => {
2662
+ // Public transcript viewers have no actionable composer onboarding.
2663
+ if (transcriptOnly)
2664
+ return;
2651
2665
  // No idle tips during the initial discovery phase (mvp B1).
2652
2666
  if (discovery)
2653
2667
  return;
@@ -2671,7 +2685,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
2671
2685
  setTipCards((prev) => [...prev, { id: crypto.randomUUID(), text, timestamp: Date.now() }]);
2672
2686
  }, TIP_IDLE_MS);
2673
2687
  return () => clearTimeout(timer);
2674
- }, [messages, discovery]);
2688
+ }, [messages, discovery, transcriptOnly]);
2675
2689
  // ── Sounds picker (shown when /sounds is executed) ────────────────────────
2676
2690
  const [soundsPicker, setSoundsPicker] = useState(null);
2677
2691
  // Notification sounds are a PER-DEVICE, per-user preference — localStorage,
@@ -3477,11 +3491,25 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
3477
3491
  // so it is never retried either.
3478
3492
  if (canEdit === false)
3479
3493
  return;
3480
- const sideChannel = matchesSideChannelCommand(extraCommands?.length ? [...COMMANDS, ...extraCommands] : COMMANDS, initialMessage);
3494
+ if (blockDisabledTeamMessage(initialMessage)) {
3495
+ onInitialMessageSent?.();
3496
+ return;
3497
+ }
3498
+ const sideChannel = canSendTeamMessages !== false &&
3499
+ matchesSideChannelCommand(extraCommands?.length ? [...COMMANDS, ...extraCommands] : COMMANDS, initialMessage);
3481
3500
  sendMessage(initialMessage, undefined, sideChannel ? { suppressUserMessage: true } : undefined);
3482
3501
  onInitialMessageSent?.();
3483
3502
  }
3484
- }, [initialMessage, hasConversation, sendMessage, onInitialMessageSent, extraCommands, canEdit]);
3503
+ }, [
3504
+ initialMessage,
3505
+ hasConversation,
3506
+ sendMessage,
3507
+ onInitialMessageSent,
3508
+ extraCommands,
3509
+ canEdit,
3510
+ canSendTeamMessages,
3511
+ blockDisabledTeamMessage,
3512
+ ]);
3485
3513
  // ── Auto-send pending message (e.g. "Fix with AI", preview errors) ──────
3486
3514
  // Defers sending while the AI is streaming to avoid queueing up auto-fix
3487
3515
  // messages during active work. Messages are sent once streaming ends.
@@ -3496,7 +3524,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
3496
3524
  // kickoffs, auto-fixes, preview-failure reports): the server 403s them
3497
3525
  // and the denial used to surface as a red error in the viewer's chat.
3498
3526
  // Consume the key (above) so the same message isn't retried.
3499
- if (canEdit === false)
3527
+ if (canEdit === false || blockDisabledTeamMessage(pendingMessage))
3500
3528
  return;
3501
3529
  // A pending message is ALWAYS system-composed (an auto-fix prompt, a preview-failure
3502
3530
  // report, a "Fix with AI" request) — never text the user typed. So it must NEVER
@@ -3532,6 +3560,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
3532
3560
  sendMessage,
3533
3561
  isLoading,
3534
3562
  canEdit,
3563
+ blockDisabledTeamMessage,
3535
3564
  ]);
3536
3565
  // When streaming ends, send any deferred message. (A user Stop also ends
3537
3566
  // streaming, but handleAbort drops the deferred message first — and useChat's
@@ -3547,7 +3576,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
3547
3576
  deferredPendingUserInitiatedRef.current = false;
3548
3577
  // A viewer never dispatches platform-composed sends (same as the
3549
3578
  // immediate path above) — the refs are already drained, so it just drops.
3550
- if (canEdit === false)
3579
+ if (canEdit === false || blockDisabledTeamMessage(msg))
3551
3580
  return;
3552
3581
  // Same rule as the immediate path: a deferred pending message is system-composed —
3553
3582
  // always `automatic` (suppressed or visible), never a plain user bubble.
@@ -3557,7 +3586,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
3557
3586
  ...(userInitiated ? { userInitiated: true } : {}),
3558
3587
  });
3559
3588
  }
3560
- }, [isLoading, sendMessage, canEdit]);
3589
+ }, [isLoading, sendMessage, canEdit, blockDisabledTeamMessage]);
3561
3590
  // ── Auto-delete queued autofix messages when user edits a relevant file ────
3562
3591
  const lastUserEditKeyRef = useRef(userEditedFileKey);
3563
3592
  useEffect(() => {
@@ -4105,12 +4134,12 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
4105
4134
  // message). Once per mount, and never over text the user already has.
4106
4135
  const viewerPrefillDoneRef = useRef(false);
4107
4136
  useEffect(() => {
4108
- if (canEdit !== false || viewerPrefillDoneRef.current)
4137
+ if (transcriptOnly || canEdit !== false || viewerPrefillDoneRef.current)
4109
4138
  return;
4110
4139
  viewerPrefillDoneRef.current = true;
4111
4140
  if (!inputRef.current.trim())
4112
4141
  setInputAndCursorEnd('/teamsay ');
4113
- }, [canEdit, setInputAndCursorEnd, conversationId]);
4142
+ }, [canEdit, setInputAndCursorEnd, conversationId, transcriptOnly]);
4114
4143
  /**
4115
4144
  * Select and apply a model by ID. When `mode` is given the choice persists to
4116
4145
  * that mode's per-mode field (`planModel` / `executeModel` /
@@ -4206,12 +4235,12 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
4206
4235
  // must then list it once, with the host's label and description. Declared
4207
4236
  // before executeCommand since it lives in that callback's dependency list.
4208
4237
  const allCommands = useMemo(() => {
4209
- if (!extraCommands?.length)
4210
- return COMMANDS;
4211
- const overridden = new Set(extraCommands.map((c) => c.id));
4212
- return [...COMMANDS.filter((c) => !overridden.has(c.id)), ...extraCommands];
4213
- }, [extraCommands]);
4214
- const extraCommandIds = useMemo(() => new Set((extraCommands ?? []).map((c) => c.id)), [extraCommands]);
4238
+ const overridden = new Set((extraCommands ?? []).map((c) => c.id));
4239
+ return [...COMMANDS.filter((c) => !overridden.has(c.id)), ...(extraCommands ?? [])].filter((command) => canSendTeamMessages !== false || !command.sideChannel);
4240
+ }, [extraCommands, canSendTeamMessages]);
4241
+ const extraCommandIds = useMemo(() => new Set((extraCommands ?? [])
4242
+ .filter((command) => canSendTeamMessages !== false || !command.sideChannel)
4243
+ .map((c) => c.id)), [extraCommands, canSendTeamMessages]);
4215
4244
  const executeCommand = useCallback(async (id) => {
4216
4245
  setCommandMenu(null);
4217
4246
  // Any command closes every sibling popup (panel overlay, model/effort/
@@ -4663,9 +4692,13 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
4663
4692
  else {
4664
4693
  recognitionRef.current?.stop();
4665
4694
  }
4695
+ if (transcriptOnly)
4696
+ return;
4666
4697
  const trimmed = inputRef.current.trim();
4667
4698
  if (!trimmed && attachedFiles.length === 0)
4668
4699
  return;
4700
+ if (blockDisabledTeamMessage(trimmed))
4701
+ return;
4669
4702
  // Read-only VIEWER guard. A viewer cannot run the assistant (the server 403s
4670
4703
  // the chat route) or any project-mutating command, so block a plain message
4671
4704
  // or a write-command here with a read-only note instead of a silent 403 —
@@ -5131,6 +5164,8 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
5131
5164
  sendMessage(message, chatAttachments.length > 0 ? chatAttachments : undefined, viaDictation ? { viaDictation: true } : undefined);
5132
5165
  }, [
5133
5166
  applyTimestampsVisible,
5167
+ transcriptOnly,
5168
+ blockDisabledTeamMessage,
5134
5169
  attachedFiles,
5135
5170
  http,
5136
5171
  projectId,
@@ -6094,7 +6129,8 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
6094
6129
  overflowY: 'auto',
6095
6130
  scrollbarWidth: 'thin',
6096
6131
  overflowAnchor: 'none',
6097
- }, children: [timeline.length === 0 &&
6132
+ }, children: [!transcriptOnly &&
6133
+ timeline.length === 0 &&
6098
6134
  !isLoading &&
6099
6135
  !isRemoteStreaming &&
6100
6136
  !awaitingSandboxBoot &&
@@ -7586,13 +7622,16 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
7586
7622
  }, onMouseLeave: (e) => {
7587
7623
  e.currentTarget.style.opacity = '0.7';
7588
7624
  e.currentTarget.style.background = 'none';
7589
- }, children: _jsx("svg", { width: "13", height: "13", viewBox: "0 0 12 12", style: { display: 'block' }, children: _jsx("path", { d: "M 2.5,6.5 L 6,3 L 9.5,6.5 M 6,3.5 L 6,10", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) }) }))] }, qm.id))) })] })), workVisible && (_jsxs(WorkCard, { children: [_jsx(PlanCard, { todos: plan, live: planLive, awaitingUser: planAwaitingUser }), _jsx(BackgroundTasksStrip, { tasks: backgroundTasks }), showTests && (_jsx(TestStatusBar, { run: testsRun, tests: testsList, expanded: testsBarExpanded, onToggle: () => setTestsBarExpanded((v) => !v), onOpen: () => openTestsBrowser(''), onStop: testsRun.running ? cancelTestsRun : undefined })), showFiles && pendingFiles != null && (_jsx(DockStrip, { molId: "chat-commit-bar", toggleMolId: "chat-commit-toggle", expanded: commitBarExpanded, onToggle: () => setCommitBarExpanded((v) => !v), label: commitState?.status === 'committed'
7590
- ? stripCommitCoauthorTrailer(commitState.message ?? '')
7591
- : commitState?.status === 'error'
7592
- ? t('ide.chat.commitFailed')
7593
- : t('ide.chat.uncommittedFileCount', { count: pendingFiles.length }, { defaultValue: '{{count}} uncommitted files' }), actions: _jsx(_Fragment, { children: isAutoCommitEnabled(autoCommit) &&
7625
+ }, children: _jsx("svg", { width: "13", height: "13", viewBox: "0 0 12 12", style: { display: 'block' }, children: _jsx("path", { d: "M 2.5,6.5 L 6,3 L 9.5,6.5 M 6,3.5 L 6,10", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) }) }))] }, qm.id))) })] })), workVisible && (_jsxs(WorkCard, { children: [_jsx(PlanCard, { todos: plan, live: planLive, awaitingUser: planAwaitingUser }), _jsx(BackgroundTasksStrip, { tasks: backgroundTasks }), showTests && (_jsx(TestStatusBar, { run: testsRun, tests: testsList, onOpen: () => openTestsBrowser(''), onStop: testsRun.running ? cancelTestsRun : undefined })), showFiles && pendingFiles != null && (_jsx(DockStrip, { molId: "chat-commit-bar", toggleMolId: "chat-commit-toggle", expanded: commitBarExpanded, onToggle: () => setCommitBarExpanded((v) => !v), hideLabel: true, label: t('ide.chat.showChangedFiles', undefined, {
7626
+ defaultValue: 'Show changed files',
7627
+ }), actions: _jsx(_Fragment, { children: isAutoCommitEnabled(autoCommit) &&
7594
7628
  commitState?.status !== 'committing' &&
7595
- commitState?.status !== 'committed' ? (_jsx(AutoCommitBadge, { state: autoCommit, disabled: autoCommitHeld, onCommitNow: () => {
7629
+ commitState?.status !== 'committed' ? (_jsx(AutoCommitBadge, { state: autoCommit, label: t('ide.chat.commitFileCount', { count: pendingFiles.length }, {
7630
+ count: pendingFiles.length,
7631
+ defaultValue: pendingFiles.length === 1
7632
+ ? 'Commit {{count}} file'
7633
+ : 'Commit {{count}} files',
7634
+ }), disabled: autoCommitHeld, onCommitNow: () => {
7596
7635
  // Pause the countdown before committing so a due auto-fire
7597
7636
  // doesn't race the manual commit onto a freshly clean tree
7598
7637
  // (which would drop a noisy "No changes to commit" card).
@@ -7618,7 +7657,14 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
7618
7657
  // it visibly mismatched the 13px/3px tests-bar button.
7619
7658
  className: cm.cn(cm.button({ variant: 'solid', color: 'primary', size: 'xs' }), cm.touchTargetCompact), children: commitState?.status === 'committing'
7620
7659
  ? t('ide.chat.committing')
7621
- : t('ide.chat.commit') }));
7660
+ : commitState?.status === 'committed'
7661
+ ? t('ide.chat.committed')
7662
+ : t('ide.chat.commitFileCount', { count: pendingFiles.length }, {
7663
+ count: pendingFiles.length,
7664
+ defaultValue: pendingFiles.length === 1
7665
+ ? 'Commit {{count}} file'
7666
+ : 'Commit {{count}} files',
7667
+ }) }));
7622
7668
  })()) }), children: _jsx("div", { style: { maxHeight: 200, overflowY: 'auto' }, children: pendingFiles.map((f) => (_jsxs("button", { type: "button", onClick: () => onFileDiff?.(f.path), onMouseEnter: (e) => {
7623
7669
  // Theme PRIMARY token, not a literal blue — the row sits in
7624
7670
  // the same bar as the commit button, which is now primary.
@@ -7695,7 +7741,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
7695
7741
  opacity: 0.5,
7696
7742
  transition: 'opacity 100ms, background 100ms',
7697
7743
  ...(!(f.additions || f.deletions) ? { marginLeft: 'auto' } : {}),
7698
- }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "12", height: "12", fill: "currentColor", children: _jsx("path", { d: "M1.22 6.28a.749.749 0 0 1 0-1.06l3.5-3.5a.749.749 0 1 1 1.06 1.06L3.561 5h7.188l.001.007L10.749 5c.058 0 .116.007.171.019A4.501 4.501 0 0 1 10.5 14H8.796a.75.75 0 0 1 0-1.5H10.5a3 3 0 1 0 0-6H3.561L5.78 8.72a.749.749 0 1 1-1.06 1.06l-3.5-3.5Z" }) }) }))] }, f.path))) }) }))] })), _jsxs("div", { className: cm.surfaceSecondary, ...(canEdit === false ? { 'data-mol-viewer': '' } : {}), style: {
7744
+ }, children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "12", height: "12", fill: "currentColor", children: _jsx("path", { d: "M1.22 6.28a.749.749 0 0 1 0-1.06l3.5-3.5a.749.749 0 1 1 1.06 1.06L3.561 5h7.188l.001.007L10.749 5c.058 0 .116.007.171.019A4.501 4.501 0 0 1 10.5 14H8.796a.75.75 0 0 1 0-1.5H10.5a3 3 0 1 0 0-6H3.561L5.78 8.72a.749.749 0 1 1-1.06 1.06l-3.5-3.5Z" }) }) }))] }, f.path))) }) }))] })), _jsxs("div", { className: cm.surfaceSecondary, hidden: transcriptOnly, "data-mol-id": "chat-composer", ...(canEdit === false ? { 'data-mol-viewer': '' } : {}), style: {
7699
7745
  // Round the TOP corners only (8px) so the composer reads as a self-contained
7700
7746
  // input with its own border on all sides, flush at the bottom-left/right with
7701
7747
  // the panel's bottom edge. Discovery rounds ALL FOUR corners (the centered
@@ -7962,7 +8008,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
7962
8008
  e.currentTarget.style.opacity = '0.85';
7963
8009
  }, onMouseLeave: (e) => {
7964
8010
  e.currentTarget.style.opacity = '0.4';
7965
- }, children: sym === 'slash' ? (_jsx("svg", { width: "9", height: "13", viewBox: "0 0 9 13", style: { display: 'block', position: 'relative', top: `${nudgeY}px` }, children: _jsx("line", { x1: "8", y1: "1", x2: "1", y2: "12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })) : (_jsx("span", { style: { position: 'relative', top: `${nudgeY}px` }, children: sym })) }, sym))), canEdit !== false && contextUsage && (_jsx(ContextUsageIndicator, { usage: contextUsage, history: contextHistory, compactions: contextCompactions })), _jsxs("div", { style: {
8011
+ }, children: sym === 'slash' ? (_jsx("svg", { width: "9", height: "13", viewBox: "0 0 9 13", style: { display: 'block', position: 'relative', top: `${nudgeY}px` }, children: _jsx("line", { x1: "8", y1: "1", x2: "1", y2: "12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })) : (_jsx("span", { style: { position: 'relative', top: `${nudgeY}px` }, children: sym })) }, sym))), canEdit !== false && contextUsage && (_jsx(ContextUsageIndicator, { usage: contextUsage, history: contextHistory, compactions: contextCompactions, projectId: projectId, conversationId: conversationId, onOpenSettings: () => openPanelOverlay('settings') })), _jsxs("div", { style: {
7966
8012
  // 'auto' pins the stop/send cluster right; the context ring
7967
8013
  // (hidden for viewers even when contextUsage exists) otherwise
7968
8014
  // carries the auto margin and this becomes a 4px gap.
@@ -8026,7 +8072,7 @@ function ChatInner({ projectId, endpoint, initialMessage, onInitialMessageSent,
8026
8072
  * @param props - Component props (see {@link MessageItemProps}).
8027
8073
  * @returns The rendered chat panel element.
8028
8074
  */
8029
- export function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader = true, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, isAnonymous, canEdit = true, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, skipToolCall, className, }) {
8075
+ export function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessageSent, activeFile, openTabs, onFileOpen, onFileDoubleClick, onFileDiff, onFileRevert, onFileChange, onFileDeleted, onCommit, onActivityClick, onRenderError, onProfileClick, currentUserId, onReadyToBuild, awaitingSandboxBoot, onClientAction, onTurnComplete, onLoadingChange, onNavigatePreview, onRegisterPushHandler, onRegisterHistoryReconcile, autoSubmitSignal, initialInputValue, hideConversationMenu, renderConversationHeader = true, conversationId: controlledConversationId, chatKey: controlledChatKey, onConversationId: controlledOnConversationId, openShareSignal: controlledShareSignal, openReportSignal: controlledReportSignal, openSettingsSignal: controlledSettingsSignal, onManageCustomModels, gitStatusTick, pendingMessage, pendingMessageKey, pendingMessageSuppressUser, pendingMessageUserInitiated, userEditedFile, userEditedFileKey, isPro, isAnonymous, canEdit = true, canSendTeamMessages = true, canShare, shareLinksAllowed, shareLinksRefreshSignal, shareModalContent, buildUpgradeCta, buildHelpUpgradeSection, userAvatar, agentName, productName, version, extraCommands, feedbackUrl, listTests, runTests, canRunTests, testsAvailable, skipToolCall, className, }) {
8030
8076
  const cm = getClassMap();
8031
8077
  // Share management may be gated ABOVE canEdit by the host (see
8032
8078
  // ChatPanelProps.canShare) — gates the built-in header share button here and
@@ -8241,7 +8287,7 @@ export function ChatPanel({ projectId, endpoint, initialMessage, onInitialMessag
8241
8287
  textOverflow: 'ellipsis',
8242
8288
  whiteSpace: 'nowrap',
8243
8289
  width: '100%',
8244
- }, children: conv.preview ?? 'New conversation' }), _jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { opacity: 0.55 }, children: relativeTime(conv.updatedAt) })] }, conv.id)))] }))] })), _jsx(ChatInner, { projectId: projectId, endpoint: chatEndpoint, initialMessage: initialMessage, onInitialMessageSent: onInitialMessageSent, isPro: isPro, isAnonymous: isAnonymous, canEdit: canEdit, canShare: shareAllowed, shareLinksAllowed: shareLinksAllowed, shareLinksRefreshSignal: shareLinksRefreshSignal, shareModalContent: shareModalContent, buildUpgradeCta: buildUpgradeCta, buildHelpUpgradeSection: buildHelpUpgradeSection, activeFile: activeFile, openTabs: openTabs, onFileOpen: onFileOpen, onFileDoubleClick: onFileDoubleClick, onFileDiff: onFileDiff, onFileRevert: onFileRevert, onFileChange: onFileChange, onFileDeleted: onFileDeleted, onCommit: onCommit, onConversationId: reportConversationId, onActivityClick: onActivityClick, onRenderError: onRenderError, onProfileClick: onProfileClick, currentUserId: currentUserId, onReadyToBuild: onReadyToBuild, awaitingSandboxBoot: awaitingSandboxBoot, onClientAction: onClientAction, onTurnComplete: onTurnComplete, onLoadingChange: onLoadingChange, onNavigatePreview: onNavigatePreview, onRegisterPushHandler: onRegisterPushHandler, onRegisterHistoryReconcile: onRegisterHistoryReconcile, autoSubmitSignal: autoSubmitSignal, openSettingsSignal: effectiveSettingsSignal, onManageCustomModels: onManageCustomModels, openReportSignal: effectiveReportSignal, openShareSignal: effectiveShareSignal, initialInputValue: initialInputValue, pendingMessage: pendingMessage, pendingMessageKey: pendingMessageKey, pendingMessageSuppressUser: pendingMessageSuppressUser, pendingMessageUserInitiated: pendingMessageUserInitiated, userEditedFile: userEditedFile, userEditedFileKey: userEditedFileKey, gitStatusTick: gitStatusTick, discovery: hideConversationMenu, userAvatar: userAvatar, agentName: agentName, productName: productName, version: version, extraCommands: extraCommands, feedbackUrl: feedbackUrl, listTests: listTests, runTests: runTests, canRunTests: canRunTests, testsAvailable: testsAvailable, skipToolCall: skipToolCall }, chatKey)] }));
8290
+ }, children: conv.preview ?? 'New conversation' }), _jsx("span", { className: cm.cn(cm.textMuted, cm.textSize('xs')), style: { opacity: 0.55 }, children: relativeTime(conv.updatedAt) })] }, conv.id)))] }))] })), _jsx(ChatInner, { projectId: projectId, endpoint: chatEndpoint, initialMessage: initialMessage, onInitialMessageSent: onInitialMessageSent, isPro: isPro, isAnonymous: isAnonymous, canEdit: canEdit, canSendTeamMessages: canSendTeamMessages, canShare: shareAllowed, shareLinksAllowed: shareLinksAllowed, shareLinksRefreshSignal: shareLinksRefreshSignal, shareModalContent: shareModalContent, buildUpgradeCta: buildUpgradeCta, buildHelpUpgradeSection: buildHelpUpgradeSection, activeFile: activeFile, openTabs: openTabs, onFileOpen: onFileOpen, onFileDoubleClick: onFileDoubleClick, onFileDiff: onFileDiff, onFileRevert: onFileRevert, onFileChange: onFileChange, onFileDeleted: onFileDeleted, onCommit: onCommit, onConversationId: reportConversationId, onActivityClick: onActivityClick, onRenderError: onRenderError, onProfileClick: onProfileClick, currentUserId: currentUserId, onReadyToBuild: onReadyToBuild, awaitingSandboxBoot: awaitingSandboxBoot, onClientAction: onClientAction, onTurnComplete: onTurnComplete, onLoadingChange: onLoadingChange, onNavigatePreview: onNavigatePreview, onRegisterPushHandler: onRegisterPushHandler, onRegisterHistoryReconcile: onRegisterHistoryReconcile, autoSubmitSignal: autoSubmitSignal, openSettingsSignal: effectiveSettingsSignal, onManageCustomModels: onManageCustomModels, openReportSignal: effectiveReportSignal, openShareSignal: effectiveShareSignal, initialInputValue: initialInputValue, pendingMessage: pendingMessage, pendingMessageKey: pendingMessageKey, pendingMessageSuppressUser: pendingMessageSuppressUser, pendingMessageUserInitiated: pendingMessageUserInitiated, userEditedFile: userEditedFile, userEditedFileKey: userEditedFileKey, gitStatusTick: gitStatusTick, discovery: hideConversationMenu, userAvatar: userAvatar, agentName: agentName, productName: productName, version: version, extraCommands: extraCommands, feedbackUrl: feedbackUrl, listTests: listTests, runTests: runTests, canRunTests: canRunTests, testsAvailable: testsAvailable, skipToolCall: skipToolCall }, chatKey)] }));
8245
8291
  }
8246
8292
  ChatPanel.displayName = 'ChatPanel';
8247
8293
  //# sourceMappingURL=ChatPanel.js.map