@blade-hq/agent-kit 1.0.25 → 1.0.28
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/dist/chunk-7LEKQI47.js +32 -0
- package/dist/chunk-7LEKQI47.js.map +1 -0
- package/dist/{chunk-3I4ZURKH.js → chunk-BGNKHPCD.js} +223 -50
- package/dist/chunk-BGNKHPCD.js.map +1 -0
- package/dist/{chunk-4D4EXLVT.js → chunk-DQCXSPHP.js} +2 -2
- package/dist/chunk-HCQDDDOX.js +23 -0
- package/dist/chunk-HCQDDDOX.js.map +1 -0
- package/dist/{chunk-QODAKTG5.js → chunk-JCJFFJ42.js} +2 -31
- package/dist/chunk-JCJFFJ42.js.map +1 -0
- package/dist/{chunk-XCIDE3JW.js → chunk-OGHUIKCY.js} +7 -7
- package/dist/{chunk-WPLEMYL7.js → chunk-PYYDXV2A.js} +2 -2
- package/dist/{chunk-VJY6RLYU.js → chunk-TVWC3PED.js} +2 -2
- package/dist/{chunk-WVXXQ3KM.js → chunk-UWNQ4PXK.js} +134 -1201
- package/dist/chunk-UWNQ4PXK.js.map +1 -0
- package/dist/{chunk-M45K3554.js → chunk-YJ6BX3FU.js} +1382 -32
- package/dist/chunk-YJ6BX3FU.js.map +1 -0
- package/dist/client/auth.d.ts +8 -0
- package/dist/client/blade-client.d.ts +82 -0
- package/dist/client/index.d.ts +23 -15348
- package/dist/client/index.js +3 -1
- package/dist/client/resources/api-keys.d.ts +28 -0
- package/dist/client/resources/app-dev-templates.d.ts +93 -0
- package/dist/client/resources/auth.d.ts +26 -0
- package/dist/client/resources/env-buckets.d.ts +20 -0
- package/dist/client/resources/gis.d.ts +8 -0
- package/dist/client/resources/headless.d.ts +33 -0
- package/dist/client/resources/memories.d.ts +63 -0
- package/dist/client/resources/models.d.ts +26 -0
- package/dist/client/resources/published-apps.d.ts +8 -0
- package/dist/client/resources/registry.d.ts +58 -0
- package/dist/client/resources/runs.d.ts +8 -0
- package/dist/client/resources/scenarios.d.ts +49 -0
- package/dist/client/resources/sessions.d.ts +253 -0
- package/dist/client/resources/skills.d.ts +38 -0
- package/dist/client/resources/solutions.d.ts +31 -0
- package/dist/client/resources/user-preferences.d.ts +26 -0
- package/dist/client/rest.d.ts +19 -0
- package/dist/client/shared/projection/builder.d.ts +59 -0
- package/dist/client/shared/projection/helpers.d.ts +34 -0
- package/dist/client/shared/projection/history.d.ts +12 -0
- package/dist/client/shared/projection/index.d.ts +3 -0
- package/dist/client/shared/projection/state.d.ts +22 -0
- package/dist/client/socket.d.ts +9 -0
- package/dist/client/types/index.d.ts +8 -0
- package/dist/client/types/rest.d.ts +16316 -0
- package/dist/client/types/sdk-profile.d.ts +47 -0
- package/dist/client/types/socket-events.d.ts +389 -0
- package/dist/react/api/api-keys.d.ts +6 -0
- package/dist/react/api/app-dev-templates.d.ts +5 -0
- package/dist/react/api/auth.d.ts +7 -0
- package/dist/react/api/client.d.ts +8 -0
- package/dist/react/api/env-buckets.d.ts +10 -0
- package/dist/react/api/gis-api.d.ts +4 -0
- package/dist/react/api/memories.d.ts +14 -0
- package/dist/react/api/model-config.d.ts +68 -0
- package/dist/react/api/models.d.ts +13 -0
- package/dist/react/api/partner-skill.d.ts +2 -0
- package/dist/react/api/prod-solution.d.ts +456 -0
- package/dist/react/api/published-apps.d.ts +21 -0
- package/dist/react/api/published-apps.js +14 -0
- package/dist/react/api/published-apps.js.map +1 -0
- package/dist/react/api/registry.d.ts +46 -0
- package/dist/react/api/scenarios.d.ts +9 -0
- package/dist/react/api/scheduled-tasks.d.ts +24 -0
- package/dist/react/api/session-skill.d.ts +2 -0
- package/dist/react/api/sessions.d.ts +109 -0
- package/dist/react/api/sessions.js +93 -0
- package/dist/react/api/sessions.js.map +1 -0
- package/dist/react/api/skills.d.ts +27 -0
- package/dist/react/api/socket.d.ts +5 -0
- package/dist/react/api/solutions.d.ts +11 -0
- package/dist/react/api/user-preferences.d.ts +8 -0
- package/dist/react/asr/VoiceWaveform.d.ts +10 -0
- package/dist/react/asr/use-tiptap-voice-input.d.ts +29 -0
- package/dist/react/asr/use-voice-input.d.ts +17 -0
- package/dist/react/asr/voice-input-support.d.ts +5 -0
- package/dist/react/bootstrap.d.ts +4 -0
- package/dist/react/cards/register.d.ts +1 -2
- package/dist/react/cards/register.js +3 -2
- package/dist/react/cards/register.js.map +1 -1
- package/dist/react/components/ai-elements/file-tree.d.ts +26 -0
- package/dist/react/components/ai-elements/reasoning.d.ts +32 -0
- package/dist/react/components/ai-elements/shimmer.d.ts +11 -0
- package/dist/react/components/card/CardCodeBlock.d.ts +5 -0
- package/dist/react/components/card/CardContext.d.ts +7 -0
- package/dist/react/components/card/CardRenderer.d.ts +7 -0
- package/dist/react/components/card/CardStates.d.ts +8 -0
- package/dist/react/components/card/cards/attraction-card.d.ts +2 -0
- package/dist/react/components/card/cards/cite-card.d.ts +10 -0
- package/dist/react/components/card/cards/comprehensive-analysis-card.d.ts +2 -0
- package/dist/react/components/card/cards/conflict-detection-card.d.ts +4 -0
- package/dist/react/components/card/cards/counter.d.ts +2 -0
- package/dist/react/components/card/cards/damage-effect-card.d.ts +4 -0
- package/dist/react/components/card/cards/destination-card.d.ts +2 -0
- package/dist/react/components/card/cards/diff-card.d.ts +2 -0
- package/dist/react/components/card/cards/execution-order-card.d.ts +2 -0
- package/dist/react/components/card/cards/experience-card-with-options.d.ts +4 -0
- package/dist/react/components/card/cards/flight-card.d.ts +2 -0
- package/dist/react/components/card/cards/hotel-card.d.ts +2 -0
- package/dist/react/components/card/cards/kill-chain-card.d.ts +2 -0
- package/dist/react/components/card/cards/kill-chain-types.d.ts +157 -0
- package/dist/react/components/card/cards/map-card.d.ts +2 -0
- package/dist/react/components/card/cards/order-status-card.d.ts +2 -0
- package/dist/react/components/card/cards/patch-card.d.ts +15 -0
- package/dist/react/components/card/cards/product-recommendation-card.d.ts +2 -0
- package/dist/react/components/card/cards/reflection-optimization-card.d.ts +2 -0
- package/dist/react/components/card/cards/resolution-modifications-card.d.ts +2 -0
- package/dist/react/components/card/cards/resolution-summary-card.d.ts +2 -0
- package/dist/react/components/card/cards/restaurant-card.d.ts +2 -0
- package/dist/react/components/card/cards/shopping-list-card.d.ts +2 -0
- package/dist/react/components/card/cards/simulation-event-card.d.ts +4 -0
- package/dist/react/components/card/cards/survival-effect-card.d.ts +4 -0
- package/dist/react/components/card/cards/travel-itinerary-card.d.ts +2 -0
- package/dist/react/components/card/register.d.ts +1 -0
- package/dist/react/components/chat/AgentLoopBlock.d.ts +8 -0
- package/dist/react/components/chat/AskUserQuestionBlock.d.ts +32 -0
- package/dist/react/components/chat/AssistantTurnBlock.d.ts +28 -0
- package/dist/react/components/chat/AttachmentPreviewDialog.d.ts +26 -0
- package/dist/react/components/chat/BackgroundTasksPill.d.ts +3 -0
- package/dist/react/components/chat/ChatInput.d.ts +94 -0
- package/dist/react/components/chat/ChatView.d.ts +18 -0
- package/dist/react/components/chat/CompactionCard.d.ts +6 -0
- package/dist/react/components/chat/ConnectionBanner.d.ts +1 -0
- package/dist/react/components/chat/FileCompletionMenu.d.ts +13 -0
- package/dist/react/components/chat/FileSizeLimitDialog.d.ts +9 -0
- package/dist/react/components/chat/ImageLightbox.d.ts +11 -0
- package/dist/react/components/chat/MessageActions.d.ts +6 -0
- package/dist/react/components/chat/MessageContextPills.d.ts +6 -0
- package/dist/react/components/chat/MessageFileAttachmentList.d.ts +13 -0
- package/dist/react/components/chat/MessageList.d.ts +15 -0
- package/dist/react/components/chat/ProgressCircle.d.ts +12 -0
- package/dist/react/components/chat/RenderErrorBoundary.d.ts +19 -0
- package/dist/react/components/chat/ResourceIframe.d.ts +5 -0
- package/dist/react/components/chat/Shimmer.d.ts +6 -0
- package/dist/react/components/chat/SkillCompletionMenu.d.ts +9 -0
- package/dist/react/components/chat/SkillStatusBar.d.ts +8 -0
- package/dist/react/components/chat/StickyStatusBar.d.ts +10 -0
- package/dist/react/components/chat/TextAttachmentPills.d.ts +10 -0
- package/dist/react/components/chat/ThinkingToggle.d.ts +7 -0
- package/dist/react/components/chat/ToolCallBlock.d.ts +18 -0
- package/dist/react/components/chat/TurnNavRail.d.ts +11 -0
- package/dist/react/components/chat/UserMessageBubble.d.ts +20 -0
- package/dist/react/components/chat/WhatIfUserBubble.d.ts +13 -0
- package/dist/react/components/chat/customization.d.ts +82 -0
- package/dist/react/components/chat/display-utils.d.ts +35 -0
- package/dist/react/components/chat/extensions/file-mention.d.ts +12 -0
- package/dist/react/components/chat/extensions/skill-mention.d.ts +25 -0
- package/dist/react/components/chat/index.d.ts +16 -115
- package/dist/react/components/chat/index.js +8 -7
- package/dist/react/components/chat/scroll-anchor.d.ts +8 -0
- package/dist/react/components/chat/tool-renderers/BashRenderer.d.ts +2 -0
- package/dist/react/components/chat/tool-renderers/FileEditRenderer.d.ts +2 -0
- package/dist/react/components/chat/tool-renderers/FileReadRenderer.d.ts +2 -0
- package/dist/react/components/chat/tool-renderers/SearchRenderer.d.ts +2 -0
- package/dist/react/components/chat/tool-renderers/SubmitResultRenderer.d.ts +2 -0
- package/dist/react/components/chat/tool-renderers/registry.d.ts +9 -0
- package/dist/react/components/chat/tool-renderers/shared.d.ts +26 -0
- package/dist/react/components/chat/whatif-quote-context.d.ts +15 -0
- package/dist/react/components/markdown/ExternalLinkDialog.d.ts +8 -0
- package/dist/react/components/markdown/FileCardComponent.d.ts +10 -0
- package/dist/react/components/markdown/MarkdownContent.d.ts +19 -0
- package/dist/react/components/model/ModelSelector.d.ts +9 -0
- package/dist/react/components/plan/PlanSummaryCard.d.ts +8 -0
- package/dist/react/components/plan/PlanVisualization.d.ts +13 -0
- package/dist/react/components/plan/debug-log.d.ts +21 -0
- package/dist/react/components/plan/extract-plan-messages.d.ts +2 -0
- package/dist/react/components/plan/index.d.ts +6 -110
- package/dist/react/components/plan/index.js +7 -6
- package/dist/react/components/plan/index.js.map +1 -1
- package/dist/react/components/plan/parse-plan-messages.d.ts +10 -0
- package/dist/react/components/plan/parse-plan-tree.d.ts +16 -0
- package/dist/react/components/plan/phases/PlanMindMap.d.ts +8 -0
- package/dist/react/components/plan/phases/PlanStatusIcon.d.ts +5 -0
- package/dist/react/components/plan/phases/PlanTree.d.ts +8 -0
- package/dist/react/components/plan/phases/SkillAnalysis.d.ts +7 -0
- package/dist/react/components/plan/phases/SkillDiscovery.d.ts +10 -0
- package/dist/react/components/plan/types.d.ts +56 -0
- package/dist/react/components/session/SessionDetail.d.ts +8 -0
- package/dist/react/components/session/SessionList.d.ts +9 -0
- package/dist/react/components/session/SessionListItem.d.ts +8 -0
- package/dist/react/components/session/StatusBadge.d.ts +3 -0
- package/dist/react/components/session/index.d.ts +5 -53
- package/dist/react/components/session/index.js +6 -5
- package/dist/react/components/session/index.js.map +1 -1
- package/dist/react/components/session/session-utils.d.ts +19 -0
- package/dist/react/components/ui/collapsible.d.ts +5 -0
- package/dist/react/components/workspace/FileTree.d.ts +21 -0
- package/dist/react/components/workspace/WorkspaceFilesPanel.d.ts +30 -0
- package/dist/react/components/workspace/file-icon-assets.d.ts +3 -0
- package/dist/react/components/workspace/index.d.ts +2 -59
- package/dist/react/components/workspace/index.js +6 -5
- package/dist/react/components/workspace/index.js.map +1 -1
- package/dist/react/context.d.ts +2 -0
- package/dist/react/devtools/bridge-devtools/BridgeDevtoolsFab.d.ts +1 -0
- package/dist/react/devtools/bridge-devtools/index.d.ts +3 -36
- package/dist/react/devtools/bridge-devtools/mount.d.ts +1 -0
- package/dist/react/devtools/bridge-devtools/store.d.ts +15 -0
- package/dist/react/devtools/bridge-devtools/tap.d.ts +5 -0
- package/dist/react/devtools/bridge-devtools/types.d.ts +29 -0
- package/dist/react/hooks/use-background-tasks.d.ts +7 -0
- package/dist/react/hooks/use-card-state.d.ts +1 -0
- package/dist/react/hooks/use-chat.d.ts +13 -0
- package/dist/react/hooks/use-check-skill-file.d.ts +4 -0
- package/dist/react/hooks/use-check-solution-file.d.ts +4 -0
- package/dist/react/hooks/use-context-stats.d.ts +7 -0
- package/dist/react/hooks/use-gis.d.ts +17 -0
- package/dist/react/hooks/use-global-skill-stats.d.ts +6 -0
- package/dist/react/hooks/use-input-history.d.ts +7 -0
- package/dist/react/hooks/use-model-preferences.d.ts +18 -0
- package/dist/react/hooks/use-registry.d.ts +53 -0
- package/dist/react/hooks/use-resolved-model.d.ts +6 -0
- package/dist/react/hooks/use-session.d.ts +10 -0
- package/dist/react/hooks/use-skill-stats.d.ts +7 -0
- package/dist/react/hooks/use-skills.d.ts +6 -0
- package/dist/react/hooks/use-token-pressure.d.ts +6 -0
- package/dist/react/index.d.ts +124 -2034
- package/dist/react/index.js +125 -50
- package/dist/react/index.js.map +1 -1
- package/dist/react/lib/analytics.d.ts +7 -0
- package/dist/react/lib/attachment-upload.d.ts +10 -0
- package/dist/react/lib/card-registry.d.ts +35 -0
- package/dist/react/lib/chat.d.ts +48 -0
- package/dist/react/lib/code-highlight.d.ts +9 -0
- package/dist/react/lib/html-element-selection.d.ts +140 -0
- package/dist/react/lib/html-source-locator.d.ts +16 -0
- package/dist/react/lib/open-session-file.d.ts +2 -0
- package/dist/react/lib/parent-bridge.d.ts +22 -0
- package/dist/react/lib/preview-dispatch.d.ts +24 -0
- package/dist/react/lib/resource-bridge.d.ts +11 -0
- package/dist/react/lib/session-file-preview.d.ts +8 -0
- package/dist/react/lib/step-ranges.d.ts +42 -0
- package/dist/react/lib/tool-preview.d.ts +2 -0
- package/dist/react/lib/ui-meta.d.ts +9 -0
- package/dist/react/lib/utils.d.ts +3 -0
- package/dist/react/lib/whatif-prompt.d.ts +45 -0
- package/dist/react/provider.d.ts +8 -0
- package/dist/react/routes.d.ts +1 -0
- package/dist/react/schemas/background.d.ts +16 -0
- package/dist/react/schemas/event.d.ts +51 -0
- package/dist/react/schemas/gis.d.ts +50 -0
- package/dist/{AskUserQuestionBlock---kOTouk.d.ts → react/schemas/message.d.ts} +15 -48
- package/dist/react/schemas/partner-skill.d.ts +46 -0
- package/dist/{projection-BWYEFYNn.d.ts → react/schemas/projection.d.ts} +12 -10
- package/dist/react/schemas/published-apps.d.ts +38 -0
- package/dist/react/schemas/scheduled-task.d.ts +32 -0
- package/dist/react/schemas/session.d.ts +121 -0
- package/dist/react/schemas/skill.d.ts +50 -0
- package/dist/react/schemas/studio/agent.d.ts +12 -0
- package/dist/react/schemas/studio/database.d.ts +39 -0
- package/dist/react/schemas/studio/env.d.ts +7 -0
- package/dist/react/schemas/studio/knowledge.d.ts +18 -0
- package/dist/react/schemas/studio/resource-base.d.ts +7 -0
- package/dist/react/schemas/studio/scene.d.ts +12 -0
- package/dist/react/schemas/studio/tool.d.ts +25 -0
- package/dist/react/schemas/task.d.ts +12 -0
- package/dist/react/sockets/event-bridge.d.ts +115 -0
- package/dist/react/sockets/socket-state.d.ts +4 -0
- package/dist/react/stores/answer-callback-store.d.ts +9 -0
- package/dist/react/stores/auth-store.d.ts +38 -0
- package/dist/react/stores/background-store.d.ts +13 -0
- package/dist/react/stores/card-state-store.d.ts +10 -0
- package/dist/react/stores/chat-store.d.ts +34 -0
- package/dist/react/stores/client-aware.d.ts +7 -0
- package/dist/react/stores/connection-store.d.ts +14 -0
- package/dist/react/stores/gis-store.d.ts +19 -0
- package/dist/react/stores/index.d.ts +14 -0
- package/dist/react/stores/runtime-features-store.d.ts +21 -0
- package/dist/react/stores/runtime-store.d.ts +18 -0
- package/dist/react/stores/session-store.d.ts +44 -0
- package/dist/react/stores/task-store.d.ts +9 -0
- package/dist/react/stores/ui-bridge-store.d.ts +32 -0
- package/dist/react/stores/ui-store.d.ts +69 -0
- package/dist/react/types/index.d.ts +7 -0
- package/dist/react/types/solution.d.ts +101 -0
- package/package.json +41 -11
- package/dist/SkillStatusBar-U6fbQxMu.d.ts +0 -340
- package/dist/blade-client-qTOovekU.d.ts +0 -1609
- package/dist/chunk-3I4ZURKH.js.map +0 -1
- package/dist/chunk-M45K3554.js.map +0 -1
- package/dist/chunk-QODAKTG5.js.map +0 -1
- package/dist/chunk-WVXXQ3KM.js.map +0 -1
- package/dist/session-CNnotR90.d.ts +0 -227
- package/dist/sessions-BvfLGbjw.d.ts +0 -177
- /package/dist/{chunk-4D4EXLVT.js.map → chunk-DQCXSPHP.js.map} +0 -0
- /package/dist/{chunk-XCIDE3JW.js.map → chunk-OGHUIKCY.js.map} +0 -0
- /package/dist/{chunk-WPLEMYL7.js.map → chunk-PYYDXV2A.js.map} +0 -0
- /package/dist/{chunk-VJY6RLYU.js.map → chunk-TVWC3PED.js.map} +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/react/lib/utils.ts
|
|
2
|
+
import { clsx } from "clsx";
|
|
3
|
+
import { twMerge } from "tailwind-merge";
|
|
4
|
+
function cn(...inputs) {
|
|
5
|
+
return twMerge(clsx(inputs));
|
|
6
|
+
}
|
|
7
|
+
async function copyToClipboard(text) {
|
|
8
|
+
if (navigator.clipboard) {
|
|
9
|
+
try {
|
|
10
|
+
await navigator.clipboard.writeText(text);
|
|
11
|
+
return true;
|
|
12
|
+
} catch {
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const textarea = document.createElement("textarea");
|
|
16
|
+
textarea.value = text;
|
|
17
|
+
textarea.style.position = "fixed";
|
|
18
|
+
textarea.style.opacity = "0";
|
|
19
|
+
document.body.appendChild(textarea);
|
|
20
|
+
textarea.select();
|
|
21
|
+
try {
|
|
22
|
+
return document.execCommand("copy");
|
|
23
|
+
} finally {
|
|
24
|
+
document.body.removeChild(textarea);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
cn,
|
|
30
|
+
copyToClipboard
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=chunk-7LEKQI47.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/lib/utils.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport async function copyToClipboard(text: string): Promise<boolean> {\n if (navigator.clipboard) {\n try {\n await navigator.clipboard.writeText(text)\n return true\n } catch {\n // fall through to textarea fallback\n }\n }\n // Fallback for insecure contexts (HTTP non-localhost)\n const textarea = document.createElement(\"textarea\")\n textarea.value = text\n textarea.style.position = \"fixed\"\n textarea.style.opacity = \"0\"\n document.body.appendChild(textarea)\n textarea.select()\n try {\n return document.execCommand(\"copy\")\n } finally {\n document.body.removeChild(textarea)\n }\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAEA,eAAsB,gBAAgB,MAAgC;AACpE,MAAI,UAAU,WAAW;AACvB,QAAI;AACF,YAAM,UAAU,UAAU,UAAU,IAAI;AACxC,aAAO;AAAA,IACT,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,cAAc,UAAU;AAClD,WAAS,QAAQ;AACjB,WAAS,MAAM,WAAW;AAC1B,WAAS,MAAM,UAAU;AACzB,WAAS,KAAK,YAAY,QAAQ;AAClC,WAAS,OAAO;AAChB,MAAI;AACF,WAAO,SAAS,YAAY,MAAM;AAAA,EACpC,UAAE;AACA,aAAS,KAAK,YAAY,QAAQ;AAAA,EACpC;AACF;","names":[]}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Collapsible,
|
|
3
|
+
CollapsibleContent,
|
|
4
|
+
CollapsibleTrigger
|
|
5
|
+
} from "./chunk-H62LH2AG.js";
|
|
1
6
|
import {
|
|
2
7
|
AskUserQuestionBlock,
|
|
3
8
|
CardCodeBlock,
|
|
@@ -8,15 +13,10 @@ import {
|
|
|
8
13
|
getCodeLanguageFromFilename,
|
|
9
14
|
parseAskUserQuestion,
|
|
10
15
|
useHighlightedCodeHtml
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import {
|
|
13
|
-
Collapsible,
|
|
14
|
-
CollapsibleContent,
|
|
15
|
-
CollapsibleTrigger
|
|
16
|
-
} from "./chunk-H62LH2AG.js";
|
|
16
|
+
} from "./chunk-OGHUIKCY.js";
|
|
17
17
|
import {
|
|
18
18
|
resolveSessionFilePreviewTarget
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-PYYDXV2A.js";
|
|
20
20
|
import {
|
|
21
21
|
apiFetchResponse,
|
|
22
22
|
buildMessageContent,
|
|
@@ -60,20 +60,20 @@ import {
|
|
|
60
60
|
useUiBridgeStore,
|
|
61
61
|
useUiStore,
|
|
62
62
|
writeFile
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-UWNQ4PXK.js";
|
|
64
|
+
import {
|
|
65
|
+
registerBridgeIframe,
|
|
66
|
+
tapBridgeEvent
|
|
67
|
+
} from "./chunk-J3XVFPOV.js";
|
|
64
68
|
import {
|
|
65
69
|
ModelOption,
|
|
66
70
|
ModelsConfig,
|
|
67
71
|
ModelsResource
|
|
68
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-YJ6BX3FU.js";
|
|
69
73
|
import {
|
|
70
74
|
cn,
|
|
71
75
|
copyToClipboard
|
|
72
|
-
} from "./chunk-
|
|
73
|
-
import {
|
|
74
|
-
registerBridgeIframe,
|
|
75
|
-
tapBridgeEvent
|
|
76
|
-
} from "./chunk-J3XVFPOV.js";
|
|
76
|
+
} from "./chunk-7LEKQI47.js";
|
|
77
77
|
import {
|
|
78
78
|
__export
|
|
79
79
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -704,6 +704,7 @@ function useModelConfig() {
|
|
|
704
704
|
return {
|
|
705
705
|
models: data?.models ?? [],
|
|
706
706
|
defaultModel: data?.default ?? "",
|
|
707
|
+
thinkingAvailable: data?.thinkingAvailable ?? false,
|
|
707
708
|
isLoading
|
|
708
709
|
};
|
|
709
710
|
}
|
|
@@ -1000,9 +1001,9 @@ function useInputHistory(sessionId) {
|
|
|
1000
1001
|
// src/react/hooks/use-resolved-model.ts
|
|
1001
1002
|
import { useMemo as useMemo3 } from "react";
|
|
1002
1003
|
function useResolvedModel(activeSessionModel) {
|
|
1003
|
-
const { models, defaultModel, isLoading } = useModelConfig();
|
|
1004
|
+
const { models, defaultModel, thinkingAvailable, isLoading } = useModelConfig();
|
|
1004
1005
|
const { preferredModel } = usePreferredModel();
|
|
1005
|
-
|
|
1006
|
+
const resolved = useMemo3(() => {
|
|
1006
1007
|
if (isLoading) {
|
|
1007
1008
|
const optimistic = activeSessionModel || preferredModel || defaultModel || "";
|
|
1008
1009
|
return {
|
|
@@ -1027,6 +1028,8 @@ function useResolvedModel(activeSessionModel) {
|
|
|
1027
1028
|
}
|
|
1028
1029
|
return { resolvedModel: "", hasAvailableModel: false, isLoading };
|
|
1029
1030
|
}, [activeSessionModel, preferredModel, defaultModel, models, isLoading]);
|
|
1031
|
+
const selectedThinkingAvailable = models.find((model) => model.id === resolved.resolvedModel)?.thinkingAvailable ?? thinkingAvailable;
|
|
1032
|
+
return { ...resolved, thinkingAvailable: selectedThinkingAvailable };
|
|
1030
1033
|
}
|
|
1031
1034
|
|
|
1032
1035
|
// src/react/lib/attachment-upload.ts
|
|
@@ -2935,7 +2938,12 @@ function ChatInput({
|
|
|
2935
2938
|
const draftAppends = useUiBridgeStore(
|
|
2936
2939
|
(state) => activeSessionId ? state.draftAppends[activeSessionId] : void 0
|
|
2937
2940
|
);
|
|
2938
|
-
const {
|
|
2941
|
+
const {
|
|
2942
|
+
resolvedModel,
|
|
2943
|
+
hasAvailableModel,
|
|
2944
|
+
thinkingAvailable,
|
|
2945
|
+
isLoading: isModelLoading
|
|
2946
|
+
} = useResolvedModel(activeSessionModel);
|
|
2939
2947
|
useEffect7(() => {
|
|
2940
2948
|
setSelectedModel(resolvedModel);
|
|
2941
2949
|
}, [resolvedModel]);
|
|
@@ -3528,7 +3536,7 @@ function ChatInput({
|
|
|
3528
3536
|
onSend(nextPayload, {
|
|
3529
3537
|
targetSessionId: uploadTargetSessionId,
|
|
3530
3538
|
model: selectedModel || null,
|
|
3531
|
-
thinkingOverride: sessionThinking != null || thinkingPreference != null ? thinkingEnabled : void 0
|
|
3539
|
+
thinkingOverride: thinkingAvailable && (sessionThinking != null || thinkingPreference != null) ? thinkingEnabled : void 0
|
|
3532
3540
|
});
|
|
3533
3541
|
if (text.trim()) {
|
|
3534
3542
|
inputHistory.addEntry(text);
|
|
@@ -3859,7 +3867,7 @@ function ChatInput({
|
|
|
3859
3867
|
}
|
|
3860
3868
|
)
|
|
3861
3869
|
] }) : null,
|
|
3862
|
-
/* @__PURE__ */ jsx10(
|
|
3870
|
+
thinkingAvailable ? /* @__PURE__ */ jsx10(
|
|
3863
3871
|
ThinkingToggle,
|
|
3864
3872
|
{
|
|
3865
3873
|
enabled: thinkingEnabled,
|
|
@@ -3868,7 +3876,7 @@ function ChatInput({
|
|
|
3868
3876
|
setPreferredThinkingEnabled(next);
|
|
3869
3877
|
}
|
|
3870
3878
|
}
|
|
3871
|
-
),
|
|
3879
|
+
) : null,
|
|
3872
3880
|
/* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2 px-3 py-2", children: [
|
|
3873
3881
|
/* @__PURE__ */ jsx10(Sparkles2, { size: 13 }),
|
|
3874
3882
|
/* @__PURE__ */ jsx10("span", { className: "shrink-0", children: "\u6A21\u578B" }),
|
|
@@ -8218,6 +8226,21 @@ function TurnNavRail({
|
|
|
8218
8226
|
);
|
|
8219
8227
|
}
|
|
8220
8228
|
|
|
8229
|
+
// src/react/components/chat/scroll-anchor.ts
|
|
8230
|
+
var ENTRY_SCROLL_MARGIN_PX = 24;
|
|
8231
|
+
function normalizeScrollEntryKey(value) {
|
|
8232
|
+
const text = value?.trim();
|
|
8233
|
+
return text ? text : null;
|
|
8234
|
+
}
|
|
8235
|
+
function calculateAnchoredScrollTop({
|
|
8236
|
+
scrollTop,
|
|
8237
|
+
containerTop,
|
|
8238
|
+
targetTop,
|
|
8239
|
+
margin = ENTRY_SCROLL_MARGIN_PX
|
|
8240
|
+
}) {
|
|
8241
|
+
return Math.max(0, scrollTop + targetTop - containerTop - margin);
|
|
8242
|
+
}
|
|
8243
|
+
|
|
8221
8244
|
// src/react/components/chat/MessageList.tsx
|
|
8222
8245
|
import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
8223
8246
|
function parseModeChange(message) {
|
|
@@ -8296,13 +8319,20 @@ function findScrollContainer(start) {
|
|
|
8296
8319
|
}
|
|
8297
8320
|
return null;
|
|
8298
8321
|
}
|
|
8322
|
+
function findEntryAnchor(root, entryId) {
|
|
8323
|
+
return Array.from(root.querySelectorAll("[data-entry-id]")).find(
|
|
8324
|
+
(el) => el.dataset.entryId === entryId
|
|
8325
|
+
) ?? null;
|
|
8326
|
+
}
|
|
8299
8327
|
function MessageList({
|
|
8300
8328
|
sessionId,
|
|
8301
8329
|
messages: rawMessages,
|
|
8302
8330
|
onAnswer,
|
|
8303
8331
|
sessionStatus,
|
|
8304
8332
|
onConfirmPlan,
|
|
8305
|
-
customization
|
|
8333
|
+
customization,
|
|
8334
|
+
scrollToStartKey,
|
|
8335
|
+
scrollToEntryKey
|
|
8306
8336
|
}) {
|
|
8307
8337
|
const messages = Array.isArray(rawMessages) ? rawMessages : [];
|
|
8308
8338
|
const agentLoops = useChatStore((state) => state.agentLoops[sessionId]);
|
|
@@ -8381,7 +8411,8 @@ function MessageList({
|
|
|
8381
8411
|
blocks.push({
|
|
8382
8412
|
type: "message",
|
|
8383
8413
|
message,
|
|
8384
|
-
key: message.entry_id ?? `${message.role}-${blocks.length}
|
|
8414
|
+
key: message.entry_id ?? `${message.role}-${blocks.length}`,
|
|
8415
|
+
anchorId: message.entry_id ? `chat-entry-${message.entry_id}` : null
|
|
8385
8416
|
});
|
|
8386
8417
|
}
|
|
8387
8418
|
flushAssistant();
|
|
@@ -8429,9 +8460,18 @@ function MessageList({
|
|
|
8429
8460
|
) ?? null,
|
|
8430
8461
|
[lastTurnId, renderBlocks]
|
|
8431
8462
|
);
|
|
8463
|
+
const scrollEntryId = useMemo18(() => normalizeScrollEntryKey(scrollToEntryKey), [scrollToEntryKey]);
|
|
8464
|
+
const shouldAnchorEntry = Boolean(scrollEntryId);
|
|
8465
|
+
const hasMessages = messages.length > 0;
|
|
8432
8466
|
const containerRef = useRef13(null);
|
|
8433
8467
|
const scrollContainerRef = useRef13(null);
|
|
8434
8468
|
const frameRef = useRef13(null);
|
|
8469
|
+
const startScrollFrameRef = useRef13(null);
|
|
8470
|
+
const startScrollTimeoutRef = useRef13(null);
|
|
8471
|
+
const entryScrollFrameRef = useRef13(null);
|
|
8472
|
+
const entryScrollTimeoutRefs = useRef13([]);
|
|
8473
|
+
const appliedStartScrollKeyRef = useRef13(null);
|
|
8474
|
+
const appliedEntryScrollKeyRef = useRef13(null);
|
|
8435
8475
|
const [activeTurnId, setActiveTurnId] = useState21(lastTurnId);
|
|
8436
8476
|
const layoutSignature = useMemo18(
|
|
8437
8477
|
() => getMessagesMeasureSignature(messages),
|
|
@@ -8492,6 +8532,123 @@ function MessageList({
|
|
|
8492
8532
|
useEffect18(() => {
|
|
8493
8533
|
scheduleMeasure();
|
|
8494
8534
|
}, [lastTurnId, layoutSignature, scheduleMeasure]);
|
|
8535
|
+
const scrollToSessionStart = useEffectEvent4(() => {
|
|
8536
|
+
const container = scrollContainerRef.current ?? findScrollContainer(containerRef.current);
|
|
8537
|
+
if (!container) return;
|
|
8538
|
+
container.scrollTo({ top: 0, behavior: "auto" });
|
|
8539
|
+
setActiveTurnId(null);
|
|
8540
|
+
});
|
|
8541
|
+
useEffect18(() => {
|
|
8542
|
+
if (!scrollToStartKey || !hasMessages) return;
|
|
8543
|
+
const applyKey = scrollToStartKey;
|
|
8544
|
+
if (appliedStartScrollKeyRef.current === applyKey) return;
|
|
8545
|
+
appliedStartScrollKeyRef.current = applyKey;
|
|
8546
|
+
if (startScrollFrameRef.current != null) {
|
|
8547
|
+
window.cancelAnimationFrame(startScrollFrameRef.current);
|
|
8548
|
+
}
|
|
8549
|
+
if (startScrollTimeoutRef.current != null) {
|
|
8550
|
+
window.clearTimeout(startScrollTimeoutRef.current);
|
|
8551
|
+
}
|
|
8552
|
+
startScrollFrameRef.current = window.requestAnimationFrame(() => {
|
|
8553
|
+
startScrollFrameRef.current = null;
|
|
8554
|
+
scrollToSessionStart();
|
|
8555
|
+
startScrollTimeoutRef.current = window.setTimeout(() => {
|
|
8556
|
+
startScrollTimeoutRef.current = null;
|
|
8557
|
+
scrollToSessionStart();
|
|
8558
|
+
}, 80);
|
|
8559
|
+
});
|
|
8560
|
+
return () => {
|
|
8561
|
+
if (startScrollFrameRef.current != null) {
|
|
8562
|
+
window.cancelAnimationFrame(startScrollFrameRef.current);
|
|
8563
|
+
startScrollFrameRef.current = null;
|
|
8564
|
+
}
|
|
8565
|
+
if (startScrollTimeoutRef.current != null) {
|
|
8566
|
+
window.clearTimeout(startScrollTimeoutRef.current);
|
|
8567
|
+
startScrollTimeoutRef.current = null;
|
|
8568
|
+
}
|
|
8569
|
+
};
|
|
8570
|
+
}, [hasMessages, scrollToSessionStart, scrollToStartKey]);
|
|
8571
|
+
const scrollToEntry = useEffectEvent4((entryId) => {
|
|
8572
|
+
const root = containerRef.current;
|
|
8573
|
+
if (!root) return false;
|
|
8574
|
+
const target = findEntryAnchor(root, entryId);
|
|
8575
|
+
if (!target) return false;
|
|
8576
|
+
stickContextRef.current?.stopScroll();
|
|
8577
|
+
const container = scrollContainerRef.current ?? findScrollContainer(root);
|
|
8578
|
+
if (container) {
|
|
8579
|
+
const containerRect = container.getBoundingClientRect();
|
|
8580
|
+
const targetRect = target.getBoundingClientRect();
|
|
8581
|
+
container.scrollTo({
|
|
8582
|
+
top: calculateAnchoredScrollTop({
|
|
8583
|
+
scrollTop: container.scrollTop,
|
|
8584
|
+
containerTop: containerRect.top,
|
|
8585
|
+
targetTop: targetRect.top
|
|
8586
|
+
}),
|
|
8587
|
+
behavior: "auto"
|
|
8588
|
+
});
|
|
8589
|
+
} else {
|
|
8590
|
+
target.scrollIntoView({ behavior: "auto", block: "start" });
|
|
8591
|
+
}
|
|
8592
|
+
setActiveTurnId(target.dataset.turnId ?? null);
|
|
8593
|
+
return true;
|
|
8594
|
+
});
|
|
8595
|
+
const getAnchorTargetScrollTop = useCallback12(
|
|
8596
|
+
(defaultTargetScrollTop, { scrollElement, contentElement }) => {
|
|
8597
|
+
if (!scrollEntryId) return defaultTargetScrollTop;
|
|
8598
|
+
const target = findEntryAnchor(contentElement, scrollEntryId);
|
|
8599
|
+
if (!target) return defaultTargetScrollTop;
|
|
8600
|
+
const containerRect = scrollElement.getBoundingClientRect();
|
|
8601
|
+
const targetRect = target.getBoundingClientRect();
|
|
8602
|
+
return calculateAnchoredScrollTop({
|
|
8603
|
+
scrollTop: scrollElement.scrollTop,
|
|
8604
|
+
containerTop: containerRect.top,
|
|
8605
|
+
targetTop: targetRect.top
|
|
8606
|
+
});
|
|
8607
|
+
},
|
|
8608
|
+
[scrollEntryId]
|
|
8609
|
+
);
|
|
8610
|
+
useEffect18(() => {
|
|
8611
|
+
if (!scrollEntryId || !hasMessages) return;
|
|
8612
|
+
const entryId = scrollEntryId;
|
|
8613
|
+
const applyKey = scrollEntryId;
|
|
8614
|
+
if (appliedEntryScrollKeyRef.current === applyKey) return;
|
|
8615
|
+
appliedEntryScrollKeyRef.current = applyKey;
|
|
8616
|
+
if (entryScrollFrameRef.current != null) {
|
|
8617
|
+
window.cancelAnimationFrame(entryScrollFrameRef.current);
|
|
8618
|
+
}
|
|
8619
|
+
for (const timeoutId of entryScrollTimeoutRefs.current) {
|
|
8620
|
+
window.clearTimeout(timeoutId);
|
|
8621
|
+
}
|
|
8622
|
+
entryScrollTimeoutRefs.current = [];
|
|
8623
|
+
entryScrollFrameRef.current = window.requestAnimationFrame(() => {
|
|
8624
|
+
entryScrollFrameRef.current = null;
|
|
8625
|
+
const attempts = [0, 60, 160, 360, 700, 1200];
|
|
8626
|
+
let matched = false;
|
|
8627
|
+
for (const delay of attempts) {
|
|
8628
|
+
const timeoutId = window.setTimeout(() => {
|
|
8629
|
+
matched = scrollToEntry(entryId) || matched;
|
|
8630
|
+
}, delay);
|
|
8631
|
+
entryScrollTimeoutRefs.current.push(timeoutId);
|
|
8632
|
+
}
|
|
8633
|
+
const fallbackId = window.setTimeout(() => {
|
|
8634
|
+
entryScrollTimeoutRefs.current = [];
|
|
8635
|
+
if (!matched && !scrollToEntry(entryId)) {
|
|
8636
|
+
scrollToSessionStart();
|
|
8637
|
+
}
|
|
8638
|
+
}, 1400);
|
|
8639
|
+
entryScrollTimeoutRefs.current.push(fallbackId);
|
|
8640
|
+
});
|
|
8641
|
+
return () => {
|
|
8642
|
+
if (entryScrollFrameRef.current != null) {
|
|
8643
|
+
window.cancelAnimationFrame(entryScrollFrameRef.current);
|
|
8644
|
+
entryScrollFrameRef.current = null;
|
|
8645
|
+
}
|
|
8646
|
+
for (const timeoutId of entryScrollTimeoutRefs.current) {
|
|
8647
|
+
window.clearTimeout(timeoutId);
|
|
8648
|
+
}
|
|
8649
|
+
entryScrollTimeoutRefs.current = [];
|
|
8650
|
+
};
|
|
8651
|
+
}, [hasMessages, scrollEntryId, scrollToEntry, scrollToSessionStart]);
|
|
8495
8652
|
const handleSelectTurn = useCallback12((turnId) => {
|
|
8496
8653
|
document.getElementById(turnId)?.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
8497
8654
|
}, []);
|
|
@@ -8514,8 +8671,9 @@ function MessageList({
|
|
|
8514
8671
|
{
|
|
8515
8672
|
contextRef: stickContextRef,
|
|
8516
8673
|
className: "h-full overflow-y-hidden",
|
|
8517
|
-
initial: "instant",
|
|
8674
|
+
initial: shouldAnchorEntry ? "instant" : "instant",
|
|
8518
8675
|
resize: stickyTurn ? { damping: 0.8, stiffness: 0.08, mass: 1 } : "instant",
|
|
8676
|
+
targetScrollTop: shouldAnchorEntry ? getAnchorTargetScrollTop : void 0,
|
|
8519
8677
|
children: [
|
|
8520
8678
|
/* @__PURE__ */ jsx37(StickToBottom.Content, { className: "px-5 py-6", children: /* @__PURE__ */ jsx37(
|
|
8521
8679
|
MessageListContent,
|
|
@@ -8536,7 +8694,8 @@ function MessageList({
|
|
|
8536
8694
|
) }),
|
|
8537
8695
|
/* @__PURE__ */ jsx37(ScrollToBottomButton, {})
|
|
8538
8696
|
]
|
|
8539
|
-
}
|
|
8697
|
+
},
|
|
8698
|
+
scrollEntryId ?? "latest"
|
|
8540
8699
|
)
|
|
8541
8700
|
]
|
|
8542
8701
|
}
|
|
@@ -8581,31 +8740,40 @@ function MessageListContent({
|
|
|
8581
8740
|
/* @__PURE__ */ jsx37("span", { className: "text-sm opacity-60", children: "\u5728\u4E0B\u65B9\u8F93\u5165\u6D88\u606F\u5F00\u59CB\u804A\u5929" })
|
|
8582
8741
|
] }) : renderBlocks.map((block, blockIndex) => {
|
|
8583
8742
|
if (block.type === "message") {
|
|
8584
|
-
return /* @__PURE__ */ jsx37(
|
|
8585
|
-
|
|
8586
|
-
{
|
|
8587
|
-
message: block.message,
|
|
8588
|
-
className: customization.classNames?.userMessage
|
|
8589
|
-
}
|
|
8590
|
-
) : /* @__PURE__ */ jsx37(
|
|
8591
|
-
UserMessageBubble,
|
|
8592
|
-
{
|
|
8593
|
-
message: block.message,
|
|
8594
|
-
className: customization?.classNames?.userMessage
|
|
8595
|
-
}
|
|
8596
|
-
) : isErrorMessage(block.message) ? customization?.components?.ErrorMessage ? /* @__PURE__ */ jsx37(
|
|
8597
|
-
customization.components.ErrorMessage,
|
|
8598
|
-
{
|
|
8599
|
-
message: block.message,
|
|
8600
|
-
className: customization.classNames?.errorMessage
|
|
8601
|
-
}
|
|
8602
|
-
) : /* @__PURE__ */ jsx37(
|
|
8603
|
-
ErrorMessageBlock,
|
|
8743
|
+
return /* @__PURE__ */ jsx37(
|
|
8744
|
+
"div",
|
|
8604
8745
|
{
|
|
8605
|
-
|
|
8606
|
-
|
|
8607
|
-
|
|
8608
|
-
|
|
8746
|
+
id: block.anchorId ?? void 0,
|
|
8747
|
+
"data-entry-id": block.message.entry_id,
|
|
8748
|
+
className: "msg-animate scroll-mt-6",
|
|
8749
|
+
children: isUserMessage(block.message) ? customization?.components?.UserMessage ? /* @__PURE__ */ jsx37(
|
|
8750
|
+
customization.components.UserMessage,
|
|
8751
|
+
{
|
|
8752
|
+
message: block.message,
|
|
8753
|
+
className: customization.classNames?.userMessage
|
|
8754
|
+
}
|
|
8755
|
+
) : /* @__PURE__ */ jsx37(
|
|
8756
|
+
UserMessageBubble,
|
|
8757
|
+
{
|
|
8758
|
+
message: block.message,
|
|
8759
|
+
className: customization?.classNames?.userMessage
|
|
8760
|
+
}
|
|
8761
|
+
) : isErrorMessage(block.message) ? customization?.components?.ErrorMessage ? /* @__PURE__ */ jsx37(
|
|
8762
|
+
customization.components.ErrorMessage,
|
|
8763
|
+
{
|
|
8764
|
+
message: block.message,
|
|
8765
|
+
className: customization.classNames?.errorMessage
|
|
8766
|
+
}
|
|
8767
|
+
) : /* @__PURE__ */ jsx37(
|
|
8768
|
+
ErrorMessageBlock,
|
|
8769
|
+
{
|
|
8770
|
+
message: block.message,
|
|
8771
|
+
className: customization?.classNames?.errorMessage
|
|
8772
|
+
}
|
|
8773
|
+
) : null
|
|
8774
|
+
},
|
|
8775
|
+
block.key
|
|
8776
|
+
);
|
|
8609
8777
|
}
|
|
8610
8778
|
if (block.type === "assistant_turn") {
|
|
8611
8779
|
const nextBlock = renderBlocks[blockIndex + 1];
|
|
@@ -8621,6 +8789,7 @@ function MessageListContent({
|
|
|
8621
8789
|
{
|
|
8622
8790
|
id: block.anchorId,
|
|
8623
8791
|
"data-turn-id": block.anchorId,
|
|
8792
|
+
"data-entry-id": block.messages[0]?.entry_id,
|
|
8624
8793
|
className: "msg-animate flex scroll-mt-6 flex-col gap-4",
|
|
8625
8794
|
children: [
|
|
8626
8795
|
/* @__PURE__ */ jsx37(
|
|
@@ -8735,6 +8904,8 @@ function ChatView({
|
|
|
8735
8904
|
inputLabel,
|
|
8736
8905
|
onDoubleEscape,
|
|
8737
8906
|
composerHint,
|
|
8907
|
+
scrollToStartKey,
|
|
8908
|
+
scrollToEntryKey,
|
|
8738
8909
|
classNames,
|
|
8739
8910
|
components,
|
|
8740
8911
|
renderers
|
|
@@ -8789,7 +8960,9 @@ function ChatView({
|
|
|
8789
8960
|
onAnswer: isViewer ? void 0 : (msg, toolCallId, answerData) => send(msg, mode, { tool_call_id: toolCallId, ...answerData }),
|
|
8790
8961
|
sessionStatus,
|
|
8791
8962
|
onConfirmPlan: isViewer ? void 0 : onConfirmPlan,
|
|
8792
|
-
customization
|
|
8963
|
+
customization,
|
|
8964
|
+
scrollToStartKey,
|
|
8965
|
+
scrollToEntryKey
|
|
8793
8966
|
},
|
|
8794
8967
|
sessionId
|
|
8795
8968
|
),
|
|
@@ -8878,4 +9051,4 @@ use-stick-to-bottom/dist/StickToBottom.js:
|
|
|
8878
9051
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
8879
9052
|
*--------------------------------------------------------------------------------------------*)
|
|
8880
9053
|
*/
|
|
8881
|
-
//# sourceMappingURL=chunk-
|
|
9054
|
+
//# sourceMappingURL=chunk-BGNKHPCD.js.map
|