@tutti-os/agent-gui 0.0.60 → 0.0.62

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.
Files changed (55) hide show
  1. package/dist/agent-conversation/index.js +5 -5
  2. package/dist/agent-message-center/index.js +7 -7
  3. package/dist/app/renderer/agentactivity.css +13 -1
  4. package/dist/{chunk-K3UBSTJ5.js → chunk-3KS22CG2.js} +2 -2
  5. package/dist/{chunk-BB2SVMEV.js → chunk-4UTWOSHP.js} +4 -1
  6. package/dist/chunk-4UTWOSHP.js.map +1 -0
  7. package/dist/{chunk-YZ3POK7G.js → chunk-6MUKWI6Z.js} +9 -5
  8. package/dist/chunk-6MUKWI6Z.js.map +1 -0
  9. package/dist/{chunk-I5ZIKJVN.js → chunk-7P6CUYQT.js} +2 -2
  10. package/dist/{chunk-6VVBG4BF.js → chunk-CA25GD5Q.js} +5 -3
  11. package/dist/chunk-CA25GD5Q.js.map +1 -0
  12. package/dist/{chunk-4OPTXOOZ.js → chunk-CVSCZ3CK.js} +2 -2
  13. package/dist/{chunk-2LGUBUEJ.js → chunk-FQQDBBNI.js} +2 -2
  14. package/dist/{chunk-6TEPDMX6.js → chunk-G6UO6JVM.js} +2 -2
  15. package/dist/{chunk-MPZ3CW5C.js → chunk-IIVHPXAB.js} +1 -1
  16. package/dist/chunk-IIVHPXAB.js.map +1 -0
  17. package/dist/{chunk-AWIZJQXW.js → chunk-K4UUEG7X.js} +14 -8
  18. package/dist/chunk-K4UUEG7X.js.map +1 -0
  19. package/dist/{chunk-WNVIKTJK.js → chunk-NZN43XT5.js} +2 -2
  20. package/dist/{chunk-CZSMZRAV.js → chunk-QC642RAG.js} +4 -4
  21. package/dist/{chunk-24CUBQKJ.js → chunk-RO6KQD3J.js} +2 -2
  22. package/dist/{chunk-CUMZV32B.js → chunk-SGXYVGQT.js} +4 -4
  23. package/dist/{chunk-B6YDXIZW.js → chunk-SW6JCJCO.js} +2 -2
  24. package/dist/{chunk-74TIEA6X.js → chunk-ZUVEBW5T.js} +2 -2
  25. package/dist/context-mention-palette/index.js +6 -6
  26. package/dist/i18n/index.d.ts +4 -2
  27. package/dist/i18n/index.js +2 -2
  28. package/dist/index.d.ts +22 -7
  29. package/dist/index.js +320 -78
  30. package/dist/index.js.map +1 -1
  31. package/dist/workbench/contribution.js +5 -5
  32. package/dist/workbench/index.js +8 -8
  33. package/dist/workbench/launch.js +2 -2
  34. package/dist/workbench/sessionTitle.js +3 -3
  35. package/dist/workbench/state.js +2 -2
  36. package/dist/workbench/types.d.ts +1 -0
  37. package/dist/workbench/types.js +1 -1
  38. package/dist/workspace-agent-generated-files.js +3 -3
  39. package/package.json +12 -12
  40. package/dist/chunk-6VVBG4BF.js.map +0 -1
  41. package/dist/chunk-AWIZJQXW.js.map +0 -1
  42. package/dist/chunk-BB2SVMEV.js.map +0 -1
  43. package/dist/chunk-MPZ3CW5C.js.map +0 -1
  44. package/dist/chunk-YZ3POK7G.js.map +0 -1
  45. /package/dist/{chunk-K3UBSTJ5.js.map → chunk-3KS22CG2.js.map} +0 -0
  46. /package/dist/{chunk-I5ZIKJVN.js.map → chunk-7P6CUYQT.js.map} +0 -0
  47. /package/dist/{chunk-4OPTXOOZ.js.map → chunk-CVSCZ3CK.js.map} +0 -0
  48. /package/dist/{chunk-2LGUBUEJ.js.map → chunk-FQQDBBNI.js.map} +0 -0
  49. /package/dist/{chunk-6TEPDMX6.js.map → chunk-G6UO6JVM.js.map} +0 -0
  50. /package/dist/{chunk-WNVIKTJK.js.map → chunk-NZN43XT5.js.map} +0 -0
  51. /package/dist/{chunk-CZSMZRAV.js.map → chunk-QC642RAG.js.map} +0 -0
  52. /package/dist/{chunk-24CUBQKJ.js.map → chunk-RO6KQD3J.js.map} +0 -0
  53. /package/dist/{chunk-CUMZV32B.js.map → chunk-SGXYVGQT.js.map} +0 -0
  54. /package/dist/{chunk-B6YDXIZW.js.map → chunk-SW6JCJCO.js.map} +0 -0
  55. /package/dist/{chunk-74TIEA6X.js.map → chunk-ZUVEBW5T.js.map} +0 -0
@@ -6,20 +6,20 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-YZ3POK7G.js";
10
- import "../chunk-B6YDXIZW.js";
9
+ } from "../chunk-6MUKWI6Z.js";
10
+ import "../chunk-SW6JCJCO.js";
11
11
  import "../chunk-PSLAWU25.js";
12
- import "../chunk-2LGUBUEJ.js";
12
+ import "../chunk-FQQDBBNI.js";
13
13
  import "../chunk-Y35GDLP2.js";
14
14
  import "../chunk-LUGELG5V.js";
15
15
  import "../chunk-FRCIPTUD.js";
16
16
  import "../chunk-TYGL25EL.js";
17
17
  import {
18
18
  translate
19
- } from "../chunk-24CUBQKJ.js";
19
+ } from "../chunk-RO6KQD3J.js";
20
20
  import "../chunk-PJP5BUU6.js";
21
21
  import "../chunk-V4JGVBUN.js";
22
- import "../chunk-6VVBG4BF.js";
22
+ import "../chunk-CA25GD5Q.js";
23
23
 
24
24
  // shared/WorkspaceAgentSessionDetail.tsx
25
25
  import { useMemo } from "react";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  formatAgentGuiConversationPlainTitle
3
- } from "../chunk-6TEPDMX6.js";
3
+ } from "../chunk-G6UO6JVM.js";
4
4
  import {
5
5
  AgentInteractivePromptSurface,
6
6
  approvalOptionDisplayLabel,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-CZSMZRAV.js";
9
+ } from "../chunk-QC642RAG.js";
10
10
  import {
11
11
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
12
12
  PLAN_IMPLEMENTATION_PROMPT,
@@ -15,7 +15,7 @@ import {
15
15
  } from "../chunk-MKHDRIGN.js";
16
16
  import {
17
17
  formatAgentSessionMentionText
18
- } from "../chunk-4OPTXOOZ.js";
18
+ } from "../chunk-CVSCZ3CK.js";
19
19
  import {
20
20
  AgentMessageMarkdown,
21
21
  CustomScrollArea,
@@ -25,11 +25,11 @@ import {
25
25
  extractExitPlanModeOptions,
26
26
  isExitPlanSwitchModeInput,
27
27
  normalizeAskUserQuestions
28
- } from "../chunk-B6YDXIZW.js";
28
+ } from "../chunk-SW6JCJCO.js";
29
29
  import {
30
30
  userAvatarPlaceholderUrl,
31
31
  workspaceAgentActivityStatusLabel
32
- } from "../chunk-74TIEA6X.js";
32
+ } from "../chunk-ZUVEBW5T.js";
33
33
  import {
34
34
  resolveWorkspaceAgentSessionSortTimeUnixMs
35
35
  } from "../chunk-IBIMGLCD.js";
@@ -43,10 +43,10 @@ import {
43
43
  AgentGuiI18nProvider,
44
44
  getActiveUiLanguage,
45
45
  useTranslation
46
- } from "../chunk-24CUBQKJ.js";
46
+ } from "../chunk-RO6KQD3J.js";
47
47
  import "../chunk-PJP5BUU6.js";
48
48
  import "../chunk-V4JGVBUN.js";
49
- import "../chunk-6VVBG4BF.js";
49
+ import "../chunk-CA25GD5Q.js";
50
50
  import "../chunk-GCBDIQDX.js";
51
51
 
52
52
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
@@ -4728,6 +4728,7 @@ aside.workspace-agents-status-panel
4728
4728
  background: var(--agent-gui-session-sidepanel-background);
4729
4729
  overflow: hidden;
4730
4730
  transition: width 180ms cubic-bezier(0.22, 1, 0.36, 1);
4731
+ -webkit-app-region: no-drag;
4731
4732
  }
4732
4733
 
4733
4734
  .agent-gui-node__provider-rail-panel::after {
@@ -5721,7 +5722,7 @@ button.agent-gui-node__conversation-section-toggle:hover
5721
5722
  flex: 0 0 14px;
5722
5723
  width: 14px;
5723
5724
  height: 14px;
5724
- color: var(--text-secondary);
5725
+ color: var(--text-tertiary);
5725
5726
  background-color: currentColor;
5726
5727
  mask: var(--agent-gui-conversation-provider-icon-url) center / contain
5727
5728
  no-repeat;
@@ -7860,6 +7861,10 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7860
7861
  color: var(--text-primary);
7861
7862
  }
7862
7863
 
7864
+ .agent-gui-node__composer-handoff-icon[data-disabled="true"] {
7865
+ color: var(--agent-gui-text-tertiary);
7866
+ }
7867
+
7863
7868
  .agent-gui-node__composer-handoff-icon-static,
7864
7869
  .agent-gui-node__composer-handoff-icon-animated {
7865
7870
  width: 18px;
@@ -7889,6 +7894,11 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7889
7894
  opacity: 1;
7890
7895
  }
7891
7896
 
7897
+ .agent-gui-node__composer-handoff-icon[data-disabled="true"]
7898
+ .agent-gui-node__composer-handoff-icon-animated {
7899
+ opacity: 0;
7900
+ }
7901
+
7892
7902
  :root[data-theme="dark"] .agent-gui-node__composer-handoff-icon-animated {
7893
7903
  --agent-gui-handoff-lottie-filter: brightness(0) invert(1);
7894
7904
  }
@@ -8324,6 +8334,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8324
8334
  padding: 0 0 12px;
8325
8335
  overflow-x: hidden;
8326
8336
  overflow-y: auto;
8337
+ -webkit-app-region: no-drag;
8327
8338
  }
8328
8339
 
8329
8340
  .agent-gui-node__provider-rail-tile {
@@ -8341,6 +8352,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8341
8352
  font-weight: 600;
8342
8353
  line-height: 14px;
8343
8354
  text-align: center;
8355
+ -webkit-app-region: no-drag;
8344
8356
  }
8345
8357
 
8346
8358
  .agent-gui-node__provider-rail-tile + .agent-gui-node__provider-rail-tile {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  agentGuiWorkbenchOpenSessionActivationType,
3
3
  agentGuiWorkbenchPrefillPromptActivationType
4
- } from "./chunk-MPZ3CW5C.js";
4
+ } from "./chunk-IIVHPXAB.js";
5
5
  import {
6
6
  isAgentGuiWorkbenchProvider,
7
7
  normalizeAgentGuiWorkbenchProvider
@@ -236,4 +236,4 @@ export {
236
236
  resolveAgentGuiWorkbenchLaunchDockEntryId,
237
237
  shouldReuseAgentGuiWorkbenchDockEntryNode
238
238
  };
239
- //# sourceMappingURL=chunk-K3UBSTJ5.js.map
239
+ //# sourceMappingURL=chunk-3KS22CG2.js.map
@@ -65,6 +65,8 @@ function localAgentGUIAgentTargetId(provider) {
65
65
  return "local:hermes";
66
66
  case "nexight":
67
67
  return "local:nexight";
68
+ case "openclaw":
69
+ return "local:openclaw";
68
70
  default:
69
71
  return null;
70
72
  }
@@ -180,8 +182,9 @@ export {
180
182
  createDisabledPlaceholderAgentGUIProviderTarget,
181
183
  createLocalAgentGUIProviderTargets,
182
184
  localAgentGUIProviderTargetId,
185
+ localAgentGUIAgentTargetId,
183
186
  normalizeAgentGUIProviderTargets,
184
187
  resolveAgentGUIProviderTarget,
185
188
  agentGUIProviderTargetRefsEqual
186
189
  };
187
- //# sourceMappingURL=chunk-BB2SVMEV.js.map
190
+ //# sourceMappingURL=chunk-4UTWOSHP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../providerTargets.ts"],"sourcesContent":["import type {\n AgentGUIProvider,\n AgentGUIProviderTarget,\n AgentGUIProviderTargetRef\n} from \"./types.ts\";\n\nconst agentGUIProviderTargetStaticLabels: Record<AgentGUIProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n gemini: \"Gemini\",\n hermes: \"Hermes\",\n nexight: \"Tutti Agent\",\n openclaw: \"OpenClaw\"\n};\n\nexport const agentGUIDefaultTargetProviders = [\n \"codex\",\n \"claude-code\",\n \"nexight\",\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nconst agentGUIDisabledPlaceholderProviders = [\n \"nexight\",\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nexport function createLocalAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n const targetId = localAgentGUIProviderTargetId(provider);\n const agentTargetId = localAgentGUIAgentTargetId(provider);\n return {\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider,\n ref: {\n kind: \"local\",\n provider\n },\n label: agentGUIProviderTargetStaticLabels[provider] ?? provider\n };\n}\n\nexport function createDisabledPlaceholderAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n return {\n ...createLocalAgentGUIProviderTarget(provider),\n disabled: true\n };\n}\n\nexport function createLocalAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders\n): AgentGUIProviderTarget[] {\n return providers.map((provider) =>\n createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nfunction createStaticAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders,\n options?: { includeDisabledPlaceholders?: boolean }\n): AgentGUIProviderTarget[] {\n const disabledProviders = new Set<AgentGUIProvider>(\n options?.includeDisabledPlaceholders === true\n ? agentGUIDisabledPlaceholderProviders\n : []\n );\n return providers.map((provider) =>\n disabledProviders.has(provider)\n ? createDisabledPlaceholderAgentGUIProviderTarget(provider)\n : createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nexport function localAgentGUIProviderTargetId(\n provider: AgentGUIProvider\n): string {\n return `local:${provider}`;\n}\n\nexport function localAgentGUIAgentTargetId(\n provider: AgentGUIProvider\n): string | null {\n switch (provider) {\n case \"codex\":\n return \"local:codex\";\n case \"claude-code\":\n return \"local:claude-code\";\n case \"hermes\":\n return \"local:hermes\";\n case \"nexight\":\n return \"local:nexight\";\n case \"openclaw\":\n return \"local:openclaw\";\n default:\n return null;\n }\n}\n\nexport function normalizeAgentGUIProviderTargets(\n targets: readonly AgentGUIProviderTarget[] | null | undefined,\n options?: {\n includeDisabledPlaceholders?: boolean;\n useStaticCatalog?: boolean;\n }\n): AgentGUIProviderTarget[] {\n const includeDisabledPlaceholders =\n options?.includeDisabledPlaceholders === true;\n const useStaticCatalog = options?.useStaticCatalog !== false;\n const source = targets && targets.length > 0 ? targets : [];\n const normalizedTargets: AgentGUIProviderTarget[] = [];\n const seenTargetKeys = new Set<string>();\n const seenProviders = new Set<AgentGUIProvider>();\n for (const target of source) {\n const normalized = normalizeAgentGUIProviderTarget(target);\n if (!normalized) {\n continue;\n }\n const dedupeKey = `${normalized.provider}\\u0000${normalized.targetId}`;\n if (seenTargetKeys.has(dedupeKey)) {\n continue;\n }\n seenTargetKeys.add(dedupeKey);\n seenProviders.add(normalized.provider);\n normalizedTargets.push(normalized);\n }\n if (includeDisabledPlaceholders && normalizedTargets.length > 0) {\n for (const provider of agentGUIDisabledPlaceholderProviders) {\n if (seenProviders.has(provider)) {\n continue;\n }\n normalizedTargets.push(\n createDisabledPlaceholderAgentGUIProviderTarget(provider)\n );\n }\n }\n return normalizedTargets.length > 0 || !useStaticCatalog\n ? normalizedTargets\n : createStaticAgentGUIProviderTargets(undefined, {\n includeDisabledPlaceholders\n });\n}\n\nexport function resolveAgentGUIProviderTarget(input: {\n agentTargetId?: string | null;\n defaultProviderTargetId?: string | null;\n provider: AgentGUIProvider;\n providerTargetId?: string | null;\n providerTargets: readonly AgentGUIProviderTarget[];\n useStaticCatalog?: boolean;\n}): AgentGUIProviderTarget | null {\n const targetByAgentTargetId = new Map(\n input.providerTargets.flatMap((target) =>\n target.agentTargetId ? [[target.agentTargetId, target] as const] : []\n )\n );\n const agentTarget = targetByAgentTargetId.get(\n input.agentTargetId?.trim() ?? \"\"\n );\n if (agentTarget) {\n return agentTarget;\n }\n const providerTargets = input.providerTargets.filter(\n (target) => target.provider === input.provider\n );\n const targetById = new Map(\n providerTargets.map((target) => [target.targetId, target])\n );\n return (\n targetById.get(input.providerTargetId?.trim() ?? \"\") ??\n targetById.get(input.defaultProviderTargetId?.trim() ?? \"\") ??\n targetById.get(localAgentGUIProviderTargetId(input.provider)) ??\n providerTargets.find((target) => target.disabled !== true) ??\n providerTargets[0] ??\n (input.useStaticCatalog === false\n ? null\n : createLocalAgentGUIProviderTarget(input.provider))\n );\n}\n\nexport function agentGUIProviderTargetRefsEqual(\n left: AgentGUIProviderTargetRef | null | undefined,\n right: AgentGUIProviderTargetRef | null | undefined\n): boolean {\n if (left === right) {\n return true;\n }\n if (!left && !right) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);\n}\n\nfunction normalizeAgentGUIProviderTarget(\n target: AgentGUIProviderTarget\n): AgentGUIProviderTarget | null {\n const targetId = target.targetId.trim();\n const agentTargetId = target.agentTargetId?.trim();\n const label = target.label.trim();\n const kind =\n typeof target.ref.kind === \"string\" ? target.ref.kind.trim() : \"\";\n if (!targetId || !label || !kind || target.ref.provider !== target.provider) {\n return null;\n }\n return {\n ...target,\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider: target.provider,\n ref: {\n ...target.ref,\n kind,\n provider: target.provider\n },\n label,\n ...(target.description?.trim()\n ? { description: target.description.trim() }\n : {}),\n ...(target.ownerLabel?.trim()\n ? { ownerLabel: target.ownerLabel.trim() }\n : {}),\n ...(target.unavailableReason?.trim()\n ? { unavailableReason: target.unavailableReason.trim() }\n : {})\n };\n}\n\nfunction stableProviderTargetRefKey(ref: AgentGUIProviderTargetRef): string {\n return JSON.stringify(sortProviderTargetRefValue(ref));\n}\n\nfunction sortProviderTargetRefValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortProviderTargetRefValue);\n }\n if (!value || typeof value !== \"object\") {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])\n );\n}\n"],"mappings":"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","names":[]}
@@ -15,7 +15,7 @@ import {
15
15
  resolveWorkspaceFilePathCandidate,
16
16
  resolveWorkspaceLinkAction,
17
17
  useAgentTargetPresentations
18
- } from "./chunk-B6YDXIZW.js";
18
+ } from "./chunk-SW6JCJCO.js";
19
19
  import {
20
20
  classifyFailedAgentMessage,
21
21
  openAgentEnvPanel,
@@ -28,7 +28,7 @@ import {
28
28
  formatAgentMentionMarkdown,
29
29
  mentionItemToAttrs,
30
30
  parseAgentMentionMarkdown
31
- } from "./chunk-2LGUBUEJ.js";
31
+ } from "./chunk-FQQDBBNI.js";
32
32
  import {
33
33
  fileChangeCountFromChanges,
34
34
  fileChangeEntriesFromChanges,
@@ -45,7 +45,7 @@ import {
45
45
  import {
46
46
  getActiveUiLanguage,
47
47
  translate
48
- } from "./chunk-24CUBQKJ.js";
48
+ } from "./chunk-RO6KQD3J.js";
49
49
 
50
50
  // shared/workspaceAgentTimelineCanonical.ts
51
51
  import { isLiveTurnLifecyclePhase } from "@tutti-os/agent-activity-core";
@@ -14115,6 +14115,7 @@ var AGENT_MESSAGE_LOCATOR_BOTTOM_SAFE_INSET_MAX_PX = 48;
14115
14115
  var AGENT_MESSAGE_LOCATOR_NATIVE_SMOOTH_MAX_DISTANCE_PX = 720;
14116
14116
  var AGENT_MESSAGE_LOCATOR_FAST_SCROLL_SPEED_PX_PER_MS = 8;
14117
14117
  var AGENT_MESSAGE_LOCATOR_FAST_SCROLL_MIN_DURATION_MS = 120;
14118
+ var AGENT_MESSAGE_LOCATOR_FAST_SCROLL_MAX_DURATION_MS = 320;
14118
14119
  var agentMessageLocatorScrollAnimations = /* @__PURE__ */ new WeakMap();
14119
14120
  function transcriptLabelsEqual(previous, next) {
14120
14121
  return previous === next || previous.thinkingLabel === next.thinkingLabel && previous.processing === next.processing && previous.turnSummary === next.turnSummary && previous.rawTimelineJson === next.rawTimelineJson && previous.userMessageLocator === next.userMessageLocator && previous.toolCallsLabel === next.toolCallsLabel;
@@ -14754,7 +14755,10 @@ function animateMessageLocatorScroll(scrollParent, targetScrollTop, distance) {
14754
14755
  const delta = targetScrollTop - startScrollTop;
14755
14756
  const durationMs = Math.max(
14756
14757
  AGENT_MESSAGE_LOCATOR_FAST_SCROLL_MIN_DURATION_MS,
14757
- distance / AGENT_MESSAGE_LOCATOR_FAST_SCROLL_SPEED_PX_PER_MS
14758
+ Math.min(
14759
+ AGENT_MESSAGE_LOCATOR_FAST_SCROLL_MAX_DURATION_MS,
14760
+ distance / AGENT_MESSAGE_LOCATOR_FAST_SCROLL_SPEED_PX_PER_MS
14761
+ )
14758
14762
  );
14759
14763
  const startedAt = performance.now();
14760
14764
  const step = (now) => {
@@ -15049,4 +15053,4 @@ export {
15049
15053
  AgentConversationFlow,
15050
15054
  useProjectedAgentConversation
15051
15055
  };
15052
- //# sourceMappingURL=chunk-YZ3POK7G.js.map
15056
+ //# sourceMappingURL=chunk-6MUKWI6Z.js.map