@researai/deepscientist 1.5.9 → 1.5.11

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 (140) hide show
  1. package/README.md +107 -94
  2. package/assets/branding/connector-qq.png +0 -0
  3. package/assets/branding/connector-rokid.png +0 -0
  4. package/assets/branding/connector-weixin.png +0 -0
  5. package/assets/branding/projects.png +0 -0
  6. package/bin/ds.js +168 -9
  7. package/docs/assets/branding/projects.png +0 -0
  8. package/docs/en/00_QUICK_START.md +308 -70
  9. package/docs/en/01_SETTINGS_REFERENCE.md +3 -0
  10. package/docs/en/02_START_RESEARCH_GUIDE.md +112 -0
  11. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
  12. package/docs/en/09_DOCTOR.md +41 -5
  13. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
  14. package/docs/en/11_LICENSE_AND_RISK.md +256 -0
  15. package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +427 -0
  16. package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
  17. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  18. package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
  19. package/docs/en/README.md +79 -0
  20. package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
  21. package/docs/images/weixin/weixin-plugin-entry.png +0 -0
  22. package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
  23. package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
  24. package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
  25. package/docs/images/weixin/weixin-settings-bind.svg +57 -0
  26. package/docs/zh/00_QUICK_START.md +315 -74
  27. package/docs/zh/01_SETTINGS_REFERENCE.md +3 -0
  28. package/docs/zh/02_START_RESEARCH_GUIDE.md +112 -0
  29. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
  30. package/docs/zh/09_DOCTOR.md +41 -5
  31. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
  32. package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
  33. package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +423 -0
  34. package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
  35. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  36. package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
  37. package/docs/zh/README.md +126 -0
  38. package/install.sh +0 -34
  39. package/package.json +2 -2
  40. package/pyproject.toml +1 -1
  41. package/src/deepscientist/__init__.py +1 -1
  42. package/src/deepscientist/annotations.py +343 -0
  43. package/src/deepscientist/artifact/arxiv.py +484 -37
  44. package/src/deepscientist/artifact/service.py +574 -108
  45. package/src/deepscientist/arxiv_library.py +275 -0
  46. package/src/deepscientist/bash_exec/service.py +9 -0
  47. package/src/deepscientist/bridges/builtins.py +2 -0
  48. package/src/deepscientist/bridges/connectors.py +447 -0
  49. package/src/deepscientist/channels/__init__.py +2 -0
  50. package/src/deepscientist/channels/builtins.py +3 -1
  51. package/src/deepscientist/channels/qq.py +1 -1
  52. package/src/deepscientist/channels/qq_gateway.py +1 -1
  53. package/src/deepscientist/channels/relay.py +7 -1
  54. package/src/deepscientist/channels/weixin.py +59 -0
  55. package/src/deepscientist/channels/weixin_ilink.py +317 -0
  56. package/src/deepscientist/config/models.py +22 -2
  57. package/src/deepscientist/config/service.py +431 -60
  58. package/src/deepscientist/connector/__init__.py +4 -0
  59. package/src/deepscientist/connector/connector_profiles.py +481 -0
  60. package/src/deepscientist/connector/lingzhu_support.py +668 -0
  61. package/src/deepscientist/connector/qq_profiles.py +206 -0
  62. package/src/deepscientist/connector/weixin_support.py +663 -0
  63. package/src/deepscientist/connector_profiles.py +1 -374
  64. package/src/deepscientist/connector_runtime.py +2 -0
  65. package/src/deepscientist/daemon/api/handlers.py +165 -5
  66. package/src/deepscientist/daemon/api/router.py +13 -1
  67. package/src/deepscientist/daemon/app.py +1130 -61
  68. package/src/deepscientist/doctor.py +5 -2
  69. package/src/deepscientist/gitops/diff.py +120 -29
  70. package/src/deepscientist/lingzhu_support.py +1 -182
  71. package/src/deepscientist/mcp/server.py +11 -4
  72. package/src/deepscientist/prompts/builder.py +15 -0
  73. package/src/deepscientist/qq_profiles.py +1 -196
  74. package/src/deepscientist/quest/node_traces.py +23 -0
  75. package/src/deepscientist/quest/service.py +112 -43
  76. package/src/deepscientist/quest/stage_views.py +71 -5
  77. package/src/deepscientist/runners/codex.py +55 -3
  78. package/src/deepscientist/weixin_support.py +1 -0
  79. package/src/prompts/connectors/lingzhu.md +3 -1
  80. package/src/prompts/connectors/weixin.md +230 -0
  81. package/src/prompts/system.md +2 -0
  82. package/src/tui/package.json +1 -1
  83. package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-D0mTXG4-.js} +156 -48
  84. package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-Db0cTXxm.js} +1 -1
  85. package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-DrV8je02.js} +164 -9
  86. package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-QXMSCH71.js} +8 -8
  87. package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-7hhtWj_E.js} +5 -5
  88. package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-BWMSnRJe.js} +3 -3
  89. package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-7J9h9Vy_.js} +20 -21
  90. package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-CHJl_0lr.js} +5 -5
  91. package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-1qSow1es.js} +11 -11
  92. package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-eQpPPCEp.js} +2 -1
  93. package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BwRfi89Z.js} +7 -7
  94. package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-836PVQWV.js} +4 -4
  95. package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-C2y_556i.js} +3 -3
  96. package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BRzJbGsn.js} +12 -12
  97. package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-DIX7Mlzu.js} +1 -1
  98. package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-DzRaTAlq.js} +14 -7
  99. package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DZUfIUnp.js} +73 -6
  100. package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-BwtICzue.js} +103 -34
  101. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
  102. package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DHeIAMsx.js} +1 -1
  103. package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C3tCmFox.js} +5 -4
  104. package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-CQsKVm3t.js} +10 -10
  105. package/src/ui/dist/assets/bot-BEA2vWuK.js +21 -0
  106. package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
  107. package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
  108. package/src/ui/dist/assets/{code-BWAY76JP.js → code-XfbSR8K2.js} +1 -1
  109. package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-BjxNaIfy.js} +1 -1
  110. package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-D_lLVQk0.js} +1 -1
  111. package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-D9x_5vlY.js} +1 -1
  112. package/src/ui/dist/assets/{image-D-NZM-6P.js → image-BhWT33W1.js} +1 -1
  113. package/src/ui/dist/assets/{index-DHZJ_0TI.js → index--c4iXtuy.js} +12 -12
  114. package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-BDxipwrC.js} +2 -2
  115. package/src/ui/dist/assets/{index-7Chr1g9c.js → index-DZTZ8mWP.js} +14221 -9523
  116. package/src/ui/dist/assets/{index-DGIYDuTv.css → index-Dqj-Mjb4.css} +2 -13
  117. package/src/ui/dist/assets/index-PJbSbPTy.js +25 -0
  118. package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-K8izTGgo.js} +1 -1
  119. package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DfBors6y.js} +16 -1
  120. package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  121. package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-yFK1J4fL.js} +1 -1
  122. package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-PENr2zcz.js} +1 -74
  123. package/src/ui/dist/assets/select-CAbJDfYv.js +1690 -0
  124. package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-DEuYJqTl.js} +1 -1
  125. package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-omoSUmcd.js} +2 -13
  126. package/src/ui/dist/assets/{trash-BvTgE5__.js → trash--F119N47.js} +1 -1
  127. package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-D31UR23I.js} +1 -1
  128. package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-BH6KcMzq.js} +1 -1
  129. package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-CZ613PM5.js} +1 -1
  130. package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-BgDLAv3z.js} +1 -1
  131. package/src/ui/dist/index.html +2 -2
  132. package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
  133. package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
  134. package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
  135. package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
  136. package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
  137. package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
  138. package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
  139. package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
  140. package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
@@ -1,9 +1,24 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CDxNdQdz.js","assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css"])))=>i.map(i=>d[i]);
2
- import { z as createLucideIcon, ck as useMotionValue, cl as useIsomorphicLayoutEffect, cm as cancelFrame_1, cn as frame_1, co as collectMotionValues_1, cp as transform_1, cq as useConstant, r as reactExports, cr as MotionConfigContext, cs as attachFollow_1, ct as isMotionValue_1, cu as useInView, j as jsxRuntimeExports, b as cn, u as useI18n, bK as useCliStore, _ as __vitePreload, c9 as ChevronRight, g as RefreshCw, b6 as Plus, b1 as ScrollArea, c6 as ChevronLeft, cv as GlareHover, a3 as Button, cb as Input, l as Search, k as FileText, cw as Folder, a7 as Terminal, D as Sparkles, bc as Dialog, bd as DialogContent, be as DialogHeader, bf as DialogTitle, ca as DialogDescription, bg as DialogFooter, cx as useTerminal, b7 as Select, b8 as SelectTrigger, b9 as SelectValue, ba as SelectContent, bb as SelectItem, cy as uploadCliFile, bY as Textarea, cz as CircleCheck, I as create, cc as persist, p as useToast, cA as unbindCliServer, G as ConnectionState, cB as updateCliSession, cC as SpotlightCard, bS as DropdownMenu, bT as DropdownMenuTrigger, bU as DropdownMenuContent, bW as DropdownMenuItem, W as Play, cD as DropdownMenuSeparator, X, cE as Pencil, H as EnhancedTerminal, cF as listCliSessions, cG as FadeContent, s as apiClient, cH as getMyToken, c as copyToClipboard, cI as Bell, cg as Trash2, d as Check, cJ as getCliServerMetrics, cK as refreshCliServerStatus, cL as ResponsiveContainer, cM as LineChart, cN as XAxis, cO as YAxis, cP as Tooltip, cQ as Line, cR as getCliHealth, cS as Cpu, cT as listCliFiles, cU as readCliFile, cV as writeCliFile, cW as deleteCliFile, cX as axios, Y as Download, o as useTabsStore, aK as getPluginIdFromExtension, t as BUILTIN_PLUGINS, aJ as getPluginIdFromMimeType, cY as downloadCliFile, cZ as buildCliFileId, c_ as toCliResourcePath, c$ as Upload, L as LoaderCircle, d0 as listCliLogs, d1 as getCliLogObject, d2 as listCliTasks, T as TriangleAlert, d3 as listCliFindings, d4 as listCliMethods, d5 as createCliMethod, bP as useMaxEntitlement, d6 as Noise } from './index-7Chr1g9c.js';
3
- import { S as Server, L as Layers, n as normalizePath, f as formatFileSize, s as splitPath, j as joinPath, a as findSensitiveMarker, D as DOWNLOAD_MAX_BYTES, T as TEXT_PREVIEW_MAX_BYTES } from './file-utils-H2fjA46S.js';
4
- import { S as SquareCheckBig } from './index-CDxNdQdz.js';
5
- import { w as wrapEnvelope, g as getCliClientId, c as acquireCliSocket, n as nextSeq, d as unwrapPayload, a as useCliSocket, e as buildDefaultSessionId, f as buildConversationSessionId, u as useCliAccess } from './useCliAccess-CgPeMOwP.js';
6
- import { C as CloudUpload, S as Stepper, a as Step } from './Stepper-B0Dd8CxK.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-PJbSbPTy.js","assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css"])))=>i.map(i=>d[i]);
2
+ import { w as createLucideIcon, cd as useMotionValue, ce as useIsomorphicLayoutEffect, cf as cancelFrame_1, cg as frame_1, ch as collectMotionValues_1, ci as transform_1, cj as useConstant, r as reactExports, ck as MotionConfigContext, cl as attachFollow_1, cm as isMotionValue_1, cn as useInView, j as jsxRuntimeExports, d as Check, b as cn, aO as Button, u as useI18n, bH as useCliStore, _ as __vitePreload, co as ChevronRight, g as RefreshCw, b9 as Plus, b4 as ScrollArea, cp as ChevronLeft, cq as GlareHover, cr as Input, l as Search, k as FileText, cs as Folder, ac as Terminal, N as Sparkles, ba as Dialog, bb as DialogContent, bc as DialogHeader, bd as DialogTitle, ct as DialogDescription, be as DialogFooter, cu as useTerminal, cv as uploadCliFile, bZ as Textarea, cw as CircleCheck, Q as create, cx as persist, o as useToast, cy as unbindCliServer, O as ConnectionState, cz as updateCliSession, cA as SpotlightCard, bT as DropdownMenu, bU as DropdownMenuTrigger, bV as DropdownMenuContent, bX as DropdownMenuItem, a2 as Play, cB as DropdownMenuSeparator, X, cC as Pencil, P as EnhancedTerminal, cD as listCliSessions, cE as FadeContent, t as apiClient, cF as getMyToken, c as copyToClipboard, cG as Bell, c9 as Trash2, cH as getCliServerMetrics, cI as refreshCliServerStatus, cJ as ResponsiveContainer, cK as LineChart, cL as XAxis, cM as YAxis, cN as Tooltip, cO as Line, cP as getCliHealth, cQ as Cpu, cR as listCliFiles, cS as readCliFile, cT as writeCliFile, cU as deleteCliFile, cV as axios, a3 as Download, n as useTabsStore, aM as getPluginIdFromExtension, v as BUILTIN_PLUGINS, aL as getPluginIdFromMimeType, cW as downloadCliFile, cX as buildCliFileId, cY as toCliResourcePath, cZ as Upload, L as LoaderCircle, c_ as listCliLogs, c$ as getCliLogObject, d0 as listCliTasks, T as TriangleAlert, d1 as listCliFindings, d2 as listCliMethods, d3 as createCliMethod, bM as useMaxEntitlement, d4 as Noise } from './index-DZTZ8mWP.js';
3
+ import { e as Server, S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem, L as Layers, n as normalizePath, f as formatFileSize, s as splitPath, j as joinPath, g as findSensitiveMarker, D as DOWNLOAD_MAX_BYTES, T as TEXT_PREVIEW_MAX_BYTES } from './select-CAbJDfYv.js';
4
+ import { S as SquareCheckBig } from './square-check-big-omoSUmcd.js';
5
+ import { w as wrapEnvelope, g as getCliClientId, c as acquireCliSocket, n as nextSeq, d as unwrapPayload, a as useCliSocket, e as buildDefaultSessionId, f as buildConversationSessionId, u as useCliAccess } from './useCliAccess-D31UR23I.js';
6
+ import './index-PJbSbPTy.js';
7
+
8
+ /**
9
+ * @license lucide-react v0.511.0 - ISC
10
+ *
11
+ * This source code is licensed under the ISC license.
12
+ * See the LICENSE file in the root directory of this source tree.
13
+ */
14
+
15
+
16
+ const __iconNode$9 = [
17
+ ["path", { d: "M12 13v8", key: "1l5pq0" }],
18
+ ["path", { d: "M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242", key: "1pljnt" }],
19
+ ["path", { d: "m8 17 4-4 4 4", key: "1quai1" }]
20
+ ];
21
+ const CloudUpload = createLucideIcon("cloud-upload", __iconNode$9);
7
22
 
8
23
  /**
9
24
  * @license lucide-react v0.511.0 - ISC
@@ -365,6 +380,146 @@ function CountUp({
365
380
  return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className, ref });
366
381
  }
367
382
 
383
+ function Step({ children }) {
384
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children });
385
+ }
386
+ const clampStep = (step, totalSteps) => {
387
+ if (totalSteps <= 0) return 1;
388
+ return Math.min(Math.max(step, 1), totalSteps);
389
+ };
390
+ function Stepper({
391
+ initialStep = 1,
392
+ onStepChange,
393
+ onFinalStepCompleted,
394
+ backButtonText = "Previous",
395
+ nextButtonText = "Next",
396
+ nextDisabled,
397
+ backDisabled,
398
+ contentAnimation = false,
399
+ className,
400
+ children
401
+ }) {
402
+ const steps = reactExports.useMemo(
403
+ () => reactExports.Children.toArray(children).filter((child) => reactExports.isValidElement(child)),
404
+ [children]
405
+ );
406
+ const totalSteps = steps.length;
407
+ const [currentStep, setCurrentStep] = reactExports.useState(() => clampStep(initialStep, totalSteps));
408
+ const previousStepRef = reactExports.useRef(currentStep);
409
+ reactExports.useEffect(() => {
410
+ setCurrentStep(clampStep(initialStep, totalSteps));
411
+ }, [initialStep, totalSteps]);
412
+ reactExports.useEffect(() => {
413
+ onStepChange?.(currentStep);
414
+ }, [currentStep, onStepChange]);
415
+ reactExports.useEffect(() => {
416
+ previousStepRef.current = currentStep;
417
+ }, [currentStep]);
418
+ const resolveDisabled = (value, step, total) => {
419
+ if (typeof value === "function") return value(step, total);
420
+ return Boolean(value);
421
+ };
422
+ const isFinalStep = currentStep >= totalSteps;
423
+ const isNextDisabled = resolveDisabled(nextDisabled, currentStep, totalSteps);
424
+ const isBackDisabled = resolveDisabled(backDisabled, currentStep, totalSteps);
425
+ const canGoBack = currentStep > 1 && !isBackDisabled;
426
+ const nextLabel = typeof nextButtonText === "function" ? nextButtonText(currentStep, totalSteps) : nextButtonText;
427
+ const handleNext = () => {
428
+ if (isFinalStep) {
429
+ if (!isNextDisabled) {
430
+ onFinalStepCompleted?.();
431
+ }
432
+ return;
433
+ }
434
+ if (isNextDisabled) return;
435
+ setCurrentStep((prev) => clampStep(prev + 1, totalSteps));
436
+ };
437
+ const handleBack = () => {
438
+ if (!canGoBack) return;
439
+ setCurrentStep((prev) => clampStep(prev - 1, totalSteps));
440
+ };
441
+ if (totalSteps === 0) {
442
+ return null;
443
+ }
444
+ const activeStep = steps[currentStep - 1];
445
+ const activeTitle = activeStep?.props?.title ?? `Step ${currentStep}`;
446
+ const activeDescription = activeStep?.props?.description;
447
+ const stepDirection = currentStep >= previousStepRef.current ? "forward" : "back";
448
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn("stepper-root flex flex-col gap-5", className), children: [
449
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "stepper-header flex flex-wrap items-center justify-between gap-3", children: [
450
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap items-center gap-3", children: steps.map((step, index) => {
451
+ const stepNumber = index + 1;
452
+ const isComplete = stepNumber < currentStep;
453
+ const isActive = stepNumber === currentStep;
454
+ const title = step.props.title ?? `Step ${stepNumber}`;
455
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
456
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
457
+ "div",
458
+ {
459
+ className: cn(
460
+ "stepper-dot flex h-8 w-8 items-center justify-center rounded-full border text-xs font-semibold transition",
461
+ isComplete && "border-transparent bg-[var(--cli-accent-olive)] text-[var(--cli-ink-0)]",
462
+ isActive && "border-[var(--cli-accent-olive)] bg-white/90 text-[var(--cli-ink-1)]",
463
+ !isComplete && !isActive && "border-white/60 bg-white/60 text-[var(--cli-muted-1)]"
464
+ ),
465
+ "data-state": isComplete ? "complete" : isActive ? "active" : "upcoming",
466
+ children: isComplete ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "h-4 w-4" }) : stepNumber
467
+ }
468
+ ),
469
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col", children: [
470
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]", children: [
471
+ "Step ",
472
+ stepNumber
473
+ ] }),
474
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
475
+ "span",
476
+ {
477
+ className: cn(
478
+ "text-xs font-semibold",
479
+ isActive ? "text-[var(--cli-ink-1)]" : "text-[var(--cli-muted-1)]"
480
+ ),
481
+ children: title
482
+ }
483
+ )
484
+ ] }),
485
+ index < totalSteps - 1 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-px w-8 bg-white/60", "aria-hidden": "true" }) : null
486
+ ] }, `${title}-${stepNumber}`);
487
+ }) }),
488
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-full border border-white/50 bg-white/80 px-3 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]", children: [
489
+ currentStep,
490
+ " / ",
491
+ totalSteps
492
+ ] })
493
+ ] }),
494
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
495
+ "div",
496
+ {
497
+ className: "stepper-content rounded-xl border border-white/40 bg-white/80 p-4",
498
+ "data-step": currentStep,
499
+ "data-direction": stepDirection,
500
+ children: [
501
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
502
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
503
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-sm font-semibold text-[var(--cli-ink-1)]", children: activeTitle }),
504
+ activeDescription ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs text-[var(--cli-muted-1)]", children: activeDescription }) : null
505
+ ] }),
506
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "rounded-full border border-white/60 bg-white/70 px-2 py-1 text-[10px] uppercase tracking-wide text-[var(--cli-muted-1)]", children: [
507
+ "Step ",
508
+ currentStep
509
+ ] })
510
+ ] }),
511
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-4", children: activeStep })
512
+ ]
513
+ },
514
+ contentAnimation ? `step-${currentStep}` : "step-static"
515
+ ),
516
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "stepper-actions flex flex-wrap items-center justify-between gap-3", children: [
517
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "secondary", onClick: handleBack, disabled: !canGoBack, children: backButtonText }),
518
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: handleNext, disabled: isNextDisabled, children: nextLabel })
519
+ ] })
520
+ ] });
521
+ }
522
+
368
523
  const statusClasses$1 = {
369
524
  online: "bg-[var(--cli-status-online)]",
370
525
  offline: "bg-[var(--cli-status-offline)]",
@@ -523,7 +678,7 @@ function ServerList({
523
678
  const container = listRef.current;
524
679
  const targets = container.querySelectorAll("[data-cli-server-card]");
525
680
  if (targets.length === 0) return;
526
- __vitePreload(async () => { const {default: anime} = await import('./index-CDxNdQdz.js').then(n => n.i);return { default: anime }},true?__vite__mapDeps([0,1,2]):void 0).then(({ default: anime }) => {
681
+ __vitePreload(async () => { const {default: anime} = await import('./index-PJbSbPTy.js').then(n => n.i);return { default: anime }},true?__vite__mapDeps([0,1,2]):void 0).then(({ default: anime }) => {
527
682
  if (cancelled) return;
528
683
  anime({
529
684
  targets,
@@ -4919,7 +5074,7 @@ function TasksPanel({ projectId, serverId }) {
4919
5074
  let cancelled = false;
4920
5075
  const targets = listRef.current.querySelectorAll("[data-cli-task-item]");
4921
5076
  if (targets.length === 0) return;
4922
- __vitePreload(async () => { const {default: anime} = await import('./index-CDxNdQdz.js').then(n => n.i);return { default: anime }},true?__vite__mapDeps([0,1,2]):void 0).then(({ default: anime }) => {
5077
+ __vitePreload(async () => { const {default: anime} = await import('./index-PJbSbPTy.js').then(n => n.i);return { default: anime }},true?__vite__mapDeps([0,1,2]):void 0).then(({ default: anime }) => {
4923
5078
  if (cancelled) return;
4924
5079
  anime({
4925
5080
  targets,
@@ -5046,7 +5201,7 @@ function FindingsPanel({ projectId, serverId }) {
5046
5201
  let cancelled = false;
5047
5202
  const targets = listRef.current.querySelectorAll("[data-cli-finding-item]");
5048
5203
  if (targets.length === 0) return;
5049
- __vitePreload(async () => { const {default: anime} = await import('./index-CDxNdQdz.js').then(n => n.i);return { default: anime }},true?__vite__mapDeps([0,1,2]):void 0).then(({ default: anime }) => {
5204
+ __vitePreload(async () => { const {default: anime} = await import('./index-PJbSbPTy.js').then(n => n.i);return { default: anime }},true?__vite__mapDeps([0,1,2]):void 0).then(({ default: anime }) => {
5050
5205
  if (cancelled) return;
5051
5206
  anime({
5052
5207
  targets,
@@ -1,12 +1,12 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-Cb2uKKe6.js","assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css"])))=>i.map(i=>d[i]);
2
- import { i as isCliFileId, R as React, f as useFileTreeStore, j as jsxRuntimeExports, b as cn, L as LoaderCircle, S as Save, B as Braces, g as RefreshCw, h as dynamic, _ as __vitePreload } from './index-7Chr1g9c.js';
3
- import { u as useFileContentStore, a as useFileContentLoading } from './file-content-C1NwU5oQ.js';
4
- import { a as acquireFileSocket } from './file-socket-B4kzuOBQ.js';
5
- import { c as configureMonacoLoader } from './monaco-Cb2uKKe6.js';
6
- import { u as useFileDiffOverlay } from './useFileDiffOverlay-xPhz7P5B.js';
7
- import { F as FileDiffPanel } from './file-diff-panel-CywslwB9.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-K8izTGgo.js","assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css"])))=>i.map(i=>d[i]);
2
+ import { i as isCliFileId, R as React, f as useFileTreeStore, j as jsxRuntimeExports, b as cn, L as LoaderCircle, S as Save, B as Braces, g as RefreshCw, h as dynamic, _ as __vitePreload } from './index-DZTZ8mWP.js';
3
+ import { u as useFileContentStore, a as useFileContentLoading } from './file-content-BjxNaIfy.js';
4
+ import { a as acquireFileSocket } from './file-socket-D9x_5vlY.js';
5
+ import { c as configureMonacoLoader } from './monaco-K8izTGgo.js';
6
+ import { u as useFileDiffOverlay } from './useFileDiffOverlay-BH6KcMzq.js';
7
+ import { F as FileDiffPanel } from './file-diff-panel-D_lLVQk0.js';
8
8
 
9
- const MonacoEditor = dynamic(() => __vitePreload(() => import('./monaco-Cb2uKKe6.js').then(n => n.i),true?__vite__mapDeps([0,1,2]):void 0), { });
9
+ const MonacoEditor = dynamic(() => __vitePreload(() => import('./monaco-K8izTGgo.js').then(n => n.i),true?__vite__mapDeps([0,1,2]):void 0), { });
10
10
  configureMonacoLoader();
11
11
  function getLanguageFromName(name) {
12
12
  const lower = name.toLowerCase();
@@ -1,8 +1,8 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css"])))=>i.map(i=>d[i]);
2
- import { u as useI18n, a as useWorkspaceSurfaceStore, r as reactExports, c as copyToClipboard, j as jsxRuntimeExports, L as LoaderCircle, C as CircleAlert, F as FileCode, E as Eye, b as cn, d as Check, e as Copy, _ as __vitePreload } from './index-7Chr1g9c.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css"])))=>i.map(i=>d[i]);
2
+ import { u as useI18n, a as useWorkspaceSurfaceStore, r as reactExports, c as copyToClipboard, j as jsxRuntimeExports, L as LoaderCircle, C as CircleAlert, F as FileCode, E as Eye, b as cn, d as Check, e as Copy, _ as __vitePreload } from './index-DZTZ8mWP.js';
3
3
  import { c as consumeFileJumpEffects } from './file-jump-queue-r5XKgJEV.js';
4
- import { C as Code } from './code-BWAY76JP.js';
5
- import { H as Hash, W as WrapText } from './wrap-text-C3Un3YQr.js';
4
+ import { C as Code } from './code-XfbSR8K2.js';
5
+ import { H as Hash, W as WrapText } from './wrap-text-CZ613PM5.js';
6
6
 
7
7
  const EXTENSION_TO_LANGUAGE = {
8
8
  // JavaScript/TypeScript
@@ -416,7 +416,7 @@ function CodeViewerPlugin({
416
416
  setLoading(false);
417
417
  return;
418
418
  }
419
- const { getFileContent } = await __vitePreload(async () => { const { getFileContent } = await import('./index-7Chr1g9c.js').then(n => n.el);return { getFileContent }},true?__vite__mapDeps([0,1]):void 0);
419
+ const { getFileContent } = await __vitePreload(async () => { const { getFileContent } = await import('./index-DZTZ8mWP.js').then(n => n.el);return { getFileContent }},true?__vite__mapDeps([0,1]):void 0);
420
420
  const text = await getFileContent(context.resourceId);
421
421
  setContent(text);
422
422
  } catch (err) {
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css"])))=>i.map(i=>d[i]);
2
- import { z as createLucideIcon, u as useI18n, r as reactExports, j as jsxRuntimeExports, L as LoaderCircle, b as cn, T as TriangleAlert, Y as Download, _ as __vitePreload, a4 as FileSpreadsheet, k as FileText } from './index-7Chr1g9c.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css"])))=>i.map(i=>d[i]);
2
+ import { w as createLucideIcon, u as useI18n, r as reactExports, j as jsxRuntimeExports, L as LoaderCircle, b as cn, T as TriangleAlert, a3 as Download, _ as __vitePreload, a9 as FileSpreadsheet, k as FileText } from './index-DZTZ8mWP.js';
3
3
 
4
4
  /**
5
5
  * @license lucide-react v0.511.0 - ISC
@@ -228,7 +228,7 @@ function DocViewerPlugin({
228
228
  if (!context.resourceId) return;
229
229
  (async () => {
230
230
  try {
231
- const { downloadFileById } = await __vitePreload(async () => { const { downloadFileById } = await import('./index-7Chr1g9c.js').then(n => n.el);return { downloadFileById }},true?__vite__mapDeps([0,1]):void 0);
231
+ const { downloadFileById } = await __vitePreload(async () => { const { downloadFileById } = await import('./index-DZTZ8mWP.js').then(n => n.el);return { downloadFileById }},true?__vite__mapDeps([0,1]):void 0);
232
232
  await downloadFileById(context.resourceId, fileName);
233
233
  } catch (err) {
234
234
  console.error("Failed to download document:", err);
@@ -1,26 +1,25 @@
1
- import { z as createLucideIcon, aI as inferWorkspaceContentKindFromMetadata, t as BUILTIN_PLUGINS, aJ as getPluginIdFromMimeType, aK as getPluginIdFromExtension, r as reactExports, j as jsxRuntimeExports, u as useI18n, b as cn, a as useWorkspaceSurfaceStore, aL as useQuery, k as FileText, a3 as Button, g as RefreshCw, aM as buildQuestFileNodeFromDocument, N as toFilesResourcePath, aN as client } from './index-7Chr1g9c.js';
2
- import ImageViewerPlugin from './ImageViewerPlugin-GVS5MsnC.js';
3
- import MarkdownViewerPlugin from './MarkdownViewerPlugin-D3ooGAH0.js';
4
- import { N as NotebookEditor } from './NotebookEditor-s8JhzuX1.js';
5
- import PdfViewerPlugin from './PdfViewerPlugin-BYTmz2fK.js';
6
- import './image-D-NZM-6P.js';
7
- import './zoom-out-BgxLa0Ri.js';
8
- import './code-BWAY76JP.js';
9
- import './NotebookEditor-DDl0_Mc0.js';
1
+ import { w as createLucideIcon, aK as inferWorkspaceContentKindFromMetadata, v as BUILTIN_PLUGINS, aL as getPluginIdFromMimeType, aM as getPluginIdFromExtension, r as reactExports, j as jsxRuntimeExports, u as useI18n, b as cn, a as useWorkspaceSurfaceStore, aN as useQuery, k as FileText, aO as Button, g as RefreshCw, aP as buildQuestFileNodeFromDocument, W as toFilesResourcePath, aQ as client } from './index-DZTZ8mWP.js';
2
+ import ImageViewerPlugin from './ImageViewerPlugin-CHJl_0lr.js';
3
+ import MarkdownViewerPlugin from './MarkdownViewerPlugin-836PVQWV.js';
4
+ import { N as NotebookEditor } from './NotebookEditor-BRzJbGsn.js';
5
+ import PdfViewerPlugin from './PdfViewerPlugin-BwtICzue.js';
6
+ import './image-BhWT33W1.js';
7
+ import './zoom-out-BgDLAv3z.js';
8
+ import './code-XfbSR8K2.js';
9
+ import './NotebookEditor-DIX7Mlzu.js';
10
10
  import './function-B5QZkkHC.js';
11
11
  import './yjs-DncrqiZ8.js';
12
- import './project-sync-Ce_0BglY.js';
13
- import './index-CDxNdQdz.js';
14
- import './popover-Bg72DGgT.js';
15
- import './trash-BvTgE5__.js';
16
- import './sigma-DPaACDrh.js';
17
- import './useFileDiffOverlay-xPhz7P5B.js';
18
- import './file-diff-panel-CywslwB9.js';
19
- import './file-socket-B4kzuOBQ.js';
20
- import './pdf-effect-queue-DSw_D3RV.js';
21
- import './bibtex-CKaefIN2.js';
22
- import './PdfLoader-C2Sf6SJM.js';
23
- import './message-square-BzjLiXir.js';
12
+ import './project-sync-PENr2zcz.js';
13
+ import './square-check-big-omoSUmcd.js';
14
+ import './popover-yFK1J4fL.js';
15
+ import './trash--F119N47.js';
16
+ import './sigma-DEuYJqTl.js';
17
+ import './useFileDiffOverlay-BH6KcMzq.js';
18
+ import './file-diff-panel-D_lLVQk0.js';
19
+ import './file-socket-D9x_5vlY.js';
20
+ import './pdf-effect-queue-DfBors6y.js';
21
+ import './PdfLoader-DzRaTAlq.js';
22
+ import './index-PJbSbPTy.js';
24
23
 
25
24
  /**
26
25
  * @license lucide-react v0.511.0 - ISC
@@ -1,7 +1,7 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css"])))=>i.map(i=>d[i]);
2
- import { z as createLucideIcon, r as reactExports, j as jsxRuntimeExports, b as cn, af as RotateCcw, ag as Info, Y as Download, L as LoaderCircle, _ as __vitePreload } from './index-7Chr1g9c.js';
3
- import { I as Image } from './image-D-NZM-6P.js';
4
- import { Z as ZoomOut, a as ZoomIn } from './zoom-out-BgxLa0Ri.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css"])))=>i.map(i=>d[i]);
2
+ import { w as createLucideIcon, r as reactExports, j as jsxRuntimeExports, b as cn, ah as RotateCcw, ai as Info, a3 as Download, L as LoaderCircle, _ as __vitePreload } from './index-DZTZ8mWP.js';
3
+ import { I as Image } from './image-BhWT33W1.js';
4
+ import { Z as ZoomOut, a as ZoomIn } from './zoom-out-BgDLAv3z.js';
5
5
 
6
6
  /**
7
7
  * @license lucide-react v0.511.0 - ISC
@@ -280,7 +280,7 @@ function ImageViewerPlugin({
280
280
  }
281
281
  const loadImageUrl = async () => {
282
282
  try {
283
- const { createFileObjectUrl } = await __vitePreload(async () => { const { createFileObjectUrl } = await import('./index-7Chr1g9c.js').then(n => n.el);return { createFileObjectUrl }},true?__vite__mapDeps([0,1]):void 0);
283
+ const { createFileObjectUrl } = await __vitePreload(async () => { const { createFileObjectUrl } = await import('./index-DZTZ8mWP.js').then(n => n.el);return { createFileObjectUrl }},true?__vite__mapDeps([0,1]):void 0);
284
284
  objectUrl = await createFileObjectUrl(context.resourceId);
285
285
  if (cancelled) {
286
286
  URL.revokeObjectURL(objectUrl);
@@ -1,15 +1,15 @@
1
- import { z as createLucideIcon, r as reactExports, aO as reactDomExports, aP as useReducedMotion, j as jsxRuntimeExports, aQ as useQueryClient, p as useToast, u as useI18n, ay as useLabCopilotStore, aR as useLabGraphSelectionStore, aS as useChatSessionStore, aT as buildAvatarColorMap, aU as isLabWorkingStatus, aV as getLabAgentDirectSession, aW as buildAgentDescriptor, aX as resolveAgentLogo, aD as resolveAgentDisplayName, aE as resolveAgentMentionLabel, aY as AnimatePresence, aZ as motion, a3 as Button, a_ as pickAvatarFrameColor, aF as resolveQuestLabel, d as Check, b as cn, x as useAuthStore, a$ as useCopilotDockHeaderPortal, b0 as assignLabAgent, b1 as ScrollArea, L as LoaderCircle, b2 as likeLabMoment, b3 as unlikeLabMoment, b4 as commentLabMoment, b5 as Ellipsis, b6 as Plus, l as Search, b7 as Select, b8 as SelectTrigger, b9 as SelectValue, ba as SelectContent, bb as SelectItem, bc as Dialog, bd as DialogContent, be as DialogHeader, bf as DialogTitle, bg as DialogFooter, bh as getLabGroupSession, bi as getLabFriendsSession } from './index-7Chr1g9c.js';
2
- import { P as Popover, a as PopoverTrigger, b as PopoverContent } from './popover-Bg72DGgT.js';
3
- import { A as AiManusChatView, D as DEFAULT_AGENT_ID, C as ChatBox, a as applyChatEvent, u as useSSESession, b as ChatMessage, r as renderMarkdown } from './AiManusChatView-BKZ103sn.js';
4
- import './file-content-C1NwU5oQ.js';
5
- import './file-utils-H2fjA46S.js';
1
+ import { w as createLucideIcon, r as reactExports, aR as reactDomExports, aS as useReducedMotion, j as jsxRuntimeExports, aT as useQueryClient, o as useToast, u as useI18n, aA as useLabCopilotStore, aU as useLabGraphSelectionStore, aV as useChatSessionStore, aW as buildAvatarColorMap, aX as isLabWorkingStatus, aY as getLabAgentDirectSession, aZ as buildAgentDescriptor, a_ as resolveAgentLogo, aF as resolveAgentDisplayName, aG as resolveAgentMentionLabel, a$ as AnimatePresence, b0 as motion, aO as Button, b1 as pickAvatarFrameColor, aH as resolveQuestLabel, d as Check, b as cn, z as useAuthStore, b2 as useCopilotDockHeaderPortal, b3 as assignLabAgent, b4 as ScrollArea, L as LoaderCircle, b5 as likeLabMoment, b6 as unlikeLabMoment, b7 as commentLabMoment, b8 as Ellipsis, b9 as Plus, l as Search, ba as Dialog, bb as DialogContent, bc as DialogHeader, bd as DialogTitle, be as DialogFooter, bf as getLabGroupSession, bg as getLabFriendsSession } from './index-DZTZ8mWP.js';
2
+ import { P as Popover, a as PopoverTrigger, b as PopoverContent } from './popover-yFK1J4fL.js';
3
+ import { S as Select, a as SelectTrigger, b as SelectValue, c as SelectContent, d as SelectItem } from './select-CAbJDfYv.js';
4
+ import { A as AiManusChatView, D as DEFAULT_AGENT_ID, C as ChatBox, a as applyChatEvent, u as useSSESession, b as ChatMessage, r as renderMarkdown } from './AiManusChatView-D0mTXG4-.js';
5
+ import './index-PJbSbPTy.js';
6
+ import './file-content-BjxNaIfy.js';
6
7
  import './file-jump-queue-r5XKgJEV.js';
7
- import './pdf-effect-queue-DSw_D3RV.js';
8
- import './file-diff-panel-CywslwB9.js';
9
- import './message-square-BzjLiXir.js';
10
- import './NotebookEditor-DDl0_Mc0.js';
11
- import './tooltip-C_mA6R0w.js';
12
- import './trash-BvTgE5__.js';
8
+ import './pdf-effect-queue-DfBors6y.js';
9
+ import './file-diff-panel-D_lLVQk0.js';
10
+ import './bot-BEA2vWuK.js';
11
+ import './NotebookEditor-DIX7Mlzu.js';
12
+ import './trash--F119N47.js';
13
13
 
14
14
  /**
15
15
  * @license lucide-react v0.511.0 - ISC
@@ -1,4 +1,5 @@
1
- import { z as createLucideIcon, aL as useQuery, r as reactExports, j as jsxRuntimeExports, bj as Skeleton, bk as Badge, aN as client, bl as ReactFlowProvider, u as useI18n, aD as resolveAgentDisplayName, aX as resolveAgentLogo, a_ as pickAvatarFrameColor, aU as isLabWorkingStatus, bm as normalizeLabStatus, bn as useNodesState, bo as useReactFlow, bp as index, bq as Background, b as cn, br as Handle, bs as Position, bt as CircleHelp, bu as OrbitLogoStatus, bv as Clock, bw as Moon, aG as formatRelativeTime, n as ChevronDown, aQ as useQueryClient, ay as useLabCopilotStore, aR as useLabGraphSelectionStore, bx as resolveLabCanvasSelectionSemantic, a3 as Button, g as RefreshCw, by as LabQuestGraphCanvas, bz as ArrowLeft, b1 as ScrollArea, D as Sparkles, bA as GitBranch, bB as Bot, bC as LAB_CANVAS_SEMANTIC_TONE_META, bD as getLabQuest, bE as getLabQuestSummary, bF as getLabQuestEventPayload, bG as getLabQuestNodeTrace, bH as isQuestRuntimeSurface, bI as getApiBaseUrl, bJ as redirectToLanding, bK as useCliStore, bL as useActiveTab, t as BUILTIN_PLUGINS, bM as listLabTemplates, az as listLabAgents, aA as listLabQuests, bN as getLabOverview, bO as getProject, bP as useMaxEntitlement } from './index-7Chr1g9c.js';
1
+ import { w as createLucideIcon, aN as useQuery, r as reactExports, j as jsxRuntimeExports, bh as Skeleton, bi as Badge, aQ as client, bj as ReactFlowProvider, u as useI18n, aF as resolveAgentDisplayName, a_ as resolveAgentLogo, b1 as pickAvatarFrameColor, aX as isLabWorkingStatus, bk as normalizeLabStatus, bl as useNodesState, bm as useReactFlow, bn as index, bo as Background, b as cn, bp as Handle, bq as Position, br as CircleHelp, bs as OrbitLogoStatus, bt as Clock, bu as Moon, aI as formatRelativeTime, m as ChevronDown, aT as useQueryClient, aA as useLabCopilotStore, aU as useLabGraphSelectionStore, bv as resolveLabCanvasSelectionSemantic, aO as Button, g as RefreshCw, bw as LabQuestGraphCanvas, bx as ArrowLeft, b4 as ScrollArea, N as Sparkles, by as GitBranch, bz as LAB_CANVAS_SEMANTIC_TONE_META, bA as getLabQuest, bB as getLabQuestSummary, bC as getLabQuestEventPayload, bD as getLabQuestNodeTrace, bE as isQuestRuntimeSurface, bF as getApiBaseUrl, bG as redirectToLanding, bH as useCliStore, bI as useActiveTab, v as BUILTIN_PLUGINS, bJ as listLabTemplates, aB as listLabAgents, aC as listLabQuests, bK as getLabOverview, bL as getProject, bM as useMaxEntitlement } from './index-DZTZ8mWP.js';
2
+ import { B as Bot } from './bot-BEA2vWuK.js';
2
3
 
3
4
  /**
4
5
  * @license lucide-react v0.511.0 - ISC
@@ -1,9 +1,9 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-Cb2uKKe6.js","assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css","assets/yjs-DncrqiZ8.js","assets/function-B5QZkkHC.js","assets/awareness-C0NPR2Dj.js"])))=>i.map(i=>d[i]);
2
- import { z as createLucideIcon, x as useAuthStore, u as useI18n, a as useWorkspaceSurfaceStore, r as reactExports, f as useFileTreeStore, N as toFilesResourcePath, O as checkProjectAccess, P as listFiles, K as getFileContent, _ as __vitePreload, J as updateFileContent, Q as compileLatex, U as listLatexBuilds, j as jsxRuntimeExports, b as cn, k as FileText, V as Link2, L as LoaderCircle, S as Save, W as Play, T as TriangleAlert, Y as Download, Z as getLatexBuild, $ as getLatexBuildPdfBlob, a0 as getLatexBuildLogText, h as dynamic } from './index-7Chr1g9c.js';
3
- import { P as ProjectSyncClient } from './project-sync-Ce_0BglY.js';
4
- import { c as configureMonacoLoader } from './monaco-Cb2uKKe6.js';
5
- import { P as PAGE_DIMENSIONS, a as PdfLoader, b as PDF_CMAP_URL, c as PDF_WORKER_SRC, Z as ZOOM_LEVELS, d as PdfHighlighter } from './PdfLoader-C2Sf6SJM.js';
6
- import { Z as ZoomOut, a as ZoomIn } from './zoom-out-BgxLa0Ri.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-K8izTGgo.js","assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css","assets/yjs-DncrqiZ8.js","assets/function-B5QZkkHC.js","assets/awareness-C0NPR2Dj.js"])))=>i.map(i=>d[i]);
2
+ import { w as createLucideIcon, z as useAuthStore, u as useI18n, a as useWorkspaceSurfaceStore, r as reactExports, f as useFileTreeStore, W as toFilesResourcePath, Y as checkProjectAccess, Z as listFiles, V as getFileContent, _ as __vitePreload, U as updateFileContent, $ as compileLatex, a0 as listLatexBuilds, j as jsxRuntimeExports, b as cn, k as FileText, a1 as Link2, L as LoaderCircle, S as Save, a2 as Play, T as TriangleAlert, a3 as Download, a4 as getLatexBuild, a5 as getLatexBuildPdfBlob, a6 as getLatexBuildLogText, h as dynamic } from './index-DZTZ8mWP.js';
3
+ import { P as ProjectSyncClient } from './project-sync-PENr2zcz.js';
4
+ import { c as configureMonacoLoader } from './monaco-K8izTGgo.js';
5
+ import { P as PAGE_DIMENSIONS, a as PdfLoader, b as PDF_CMAP_URL, c as PDF_WORKER_SRC, Z as ZOOM_LEVELS, d as PdfHighlighter } from './PdfLoader-DzRaTAlq.js';
6
+ import { Z as ZoomOut, a as ZoomIn } from './zoom-out-BgDLAv3z.js';
7
7
 
8
8
  /**
9
9
  * @license lucide-react v0.511.0 - ISC
@@ -19,7 +19,7 @@ const __iconNode = [
19
19
  ];
20
20
  const AtSign = createLucideIcon("at-sign", __iconNode);
21
21
 
22
- const MonacoEditor = dynamic(() => __vitePreload(() => import('./monaco-Cb2uKKe6.js').then(n => n.i),true?__vite__mapDeps([0,1,2]):void 0), { });
22
+ const MonacoEditor = dynamic(() => __vitePreload(() => import('./monaco-K8izTGgo.js').then(n => n.i),true?__vite__mapDeps([0,1,2]):void 0), { });
23
23
  configureMonacoLoader();
24
24
  function useIsDarkMode() {
25
25
  const [isDark, setIsDark] = reactExports.useState(() => {
@@ -1,6 +1,6 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-7Chr1g9c.js","assets/index-DGIYDuTv.css"])))=>i.map(i=>d[i]);
2
- import { u as useI18n, a as useWorkspaceSurfaceStore, r as reactExports, R as React, a1 as getQuestMarkdownContextFromFileId, c as copyToClipboard, j as jsxRuntimeExports, L as LoaderCircle, C as CircleAlert, a2 as MARKDOWN_VIEWER_STYLES, k as FileText, E as Eye, b as cn, d as Check, e as Copy, M as MarkdownRenderer, _ as __vitePreload } from './index-7Chr1g9c.js';
3
- import { C as Code } from './code-BWAY76JP.js';
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css"])))=>i.map(i=>d[i]);
2
+ import { u as useI18n, a as useWorkspaceSurfaceStore, r as reactExports, R as React, a7 as getQuestMarkdownContextFromFileId, c as copyToClipboard, j as jsxRuntimeExports, L as LoaderCircle, C as CircleAlert, a8 as MARKDOWN_VIEWER_STYLES, k as FileText, E as Eye, b as cn, d as Check, e as Copy, M as MarkdownRenderer, _ as __vitePreload } from './index-DZTZ8mWP.js';
3
+ import { C as Code } from './code-XfbSR8K2.js';
4
4
 
5
5
  function isMdxDocument(fileName) {
6
6
  if (!fileName) return false;
@@ -217,7 +217,7 @@ function MarkdownViewerPlugin({
217
217
  setLoading(false);
218
218
  return;
219
219
  }
220
- const { getFileContent } = await __vitePreload(async () => { const { getFileContent } = await import('./index-7Chr1g9c.js').then(n => n.el);return { getFileContent }},true?__vite__mapDeps([0,1]):void 0);
220
+ const { getFileContent } = await __vitePreload(async () => { const { getFileContent } = await import('./index-DZTZ8mWP.js').then(n => n.el);return { getFileContent }},true?__vite__mapDeps([0,1]):void 0);
221
221
  const text = await getFileContent(context.resourceId);
222
222
  setContent(text);
223
223
  } catch (err) {
@@ -1,6 +1,6 @@
1
- import { z as createLucideIcon, r as reactExports, a5 as useNavigate, o as useTabsStore, a6 as useOpenFile, f as useFileTreeStore, t as BUILTIN_PLUGINS, j as jsxRuntimeExports, l as Search, D as Sparkles, a7 as Terminal, a8 as Settings, a9 as Puzzle, aa as BookOpen, k as FileText, ab as FileCode2, b as cn } from './index-7Chr1g9c.js';
2
- import { S as Sigma } from './sigma-DPaACDrh.js';
3
- import { I as Image } from './image-D-NZM-6P.js';
1
+ import { w as createLucideIcon, r as reactExports, aa as useNavigate, n as useTabsStore, ab as useOpenFile, f as useFileTreeStore, v as BUILTIN_PLUGINS, j as jsxRuntimeExports, l as Search, N as Sparkles, ac as Terminal, ad as Settings, ae as Puzzle, af as BookOpen, k as FileText, ag as FileCode2, b as cn } from './index-DZTZ8mWP.js';
2
+ import { S as Sigma } from './sigma-DEuYJqTl.js';
3
+ import { I as Image } from './image-BhWT33W1.js';
4
4
 
5
5
  /**
6
6
  * @license lucide-react v0.511.0 - ISC
@@ -1,16 +1,16 @@
1
- import { z as createLucideIcon, j as jsxRuntimeExports, a3 as Button, n as ChevronDown, d as Check, b as cn, r as reactExports, bz as ArrowLeft, c8 as ArrowRight, ce as Separator, cf as ArrowUp, cg as Trash2, u as useI18n, p as useToast, K as getFileContent, L as LoaderCircle, e as Copy, C as CircleAlert, f as useFileTreeStore, a1 as getQuestMarkdownContextFromFileId, ch as rewriteQuestMarkdownForDisplay, ci as rewriteQuestMarkdownForSave, cj as uploadQuestDocumentAsset, J as updateFileContent } from './index-7Chr1g9c.js';
2
- import { P as PluginKey, a as Plugin, S as Slice, F as Fragment, T as TextSelection, A as AllSelection, N as NodeSelection, E as Extension, m as me, l as le, u as useCurrentEditor, w, b as P, f as findParentNodeClosestToPos, g as getEditorMarkdown, s as setEditorMarkdown, q, c as uploadNotebookAsset, r as resolveNotebookAssetUrl, d as defaultExtensions, J, U, I, e as T, B, O, h as S, K as K$1, G, i as ce, j as isSupportedNotebookAsset } from './NotebookEditor-DDl0_Mc0.js';
1
+ import { w as createLucideIcon, j as jsxRuntimeExports, aO as Button, m as ChevronDown, d as Check, b as cn, r as reactExports, bx as ArrowLeft, c6 as ArrowRight, c7 as Separator, c8 as ArrowUp, c9 as Trash2, u as useI18n, o as useToast, V as getFileContent, L as LoaderCircle, e as Copy, C as CircleAlert, f as useFileTreeStore, a7 as getQuestMarkdownContextFromFileId, ca as rewriteQuestMarkdownForDisplay, cb as rewriteQuestMarkdownForSave, cc as uploadQuestDocumentAsset, U as updateFileContent } from './index-DZTZ8mWP.js';
2
+ import { P as PluginKey, a as Plugin, S as Slice, F as Fragment, T as TextSelection, A as AllSelection, N as NodeSelection, E as Extension, m as me, l as le, u as useCurrentEditor, w, b as P, f as findParentNodeClosestToPos, g as getEditorMarkdown, s as setEditorMarkdown, q, c as uploadNotebookAsset, r as resolveNotebookAssetUrl, d as defaultExtensions, J, U, I, e as T, B, O, h as S, K as K$1, G, i as ce, j as isSupportedNotebookAsset } from './NotebookEditor-DIX7Mlzu.js';
3
3
  import { a4 as BIT8, ai as BIT30, ab as min, $ as max, y as unexpectedCase, n as methodUnimplemented, aj as keys, u as every, H as setIfUndefined, D as create } from './function-B5QZkkHC.js';
4
4
  import { t as toBase64, e as encodeAny, i as isBrowser, d as doc, s as snapshot, D as Doc, a as applyUpdateV2, f as findIndexSS, b as iterateDeletedStructs, c as typeListToArraySnapshot, S as Snapshot, U as UndoManager, g as createSnapshot, h as isDeleted, Y as YXmlElement, j as YXmlText, k as YText, o as oneOf, C as ContentString, l as ContentFormat, m as createDeleteSet, I as Item, n as createRelativePositionFromTypeIndex, R as RelativePosition, p as findRootTypeKey, q as createID, r as createAbsolutePositionFromRelativePosition, u as isParentOf, v as ContentType, w as encodeStateVector, x as applyUpdate, y as mergeUpdates } from './yjs-DncrqiZ8.js';
5
- import { P as ProjectSyncClient } from './project-sync-Ce_0BglY.js';
6
- import { S as SquareCheckBig } from './index-CDxNdQdz.js';
7
- import { C as Code } from './code-BWAY76JP.js';
8
- import { I as Image } from './image-D-NZM-6P.js';
9
- import { P as Popover, a as PopoverTrigger, b as PopoverContent } from './popover-Bg72DGgT.js';
10
- import { T as Trash, A as ArrowDown } from './trash-BvTgE5__.js';
11
- import { S as Sigma } from './sigma-DPaACDrh.js';
12
- import { u as useFileDiffOverlay } from './useFileDiffOverlay-xPhz7P5B.js';
13
- import { F as FileDiffPanel } from './file-diff-panel-CywslwB9.js';
5
+ import { P as ProjectSyncClient } from './project-sync-PENr2zcz.js';
6
+ import { S as SquareCheckBig } from './square-check-big-omoSUmcd.js';
7
+ import { C as Code } from './code-XfbSR8K2.js';
8
+ import { I as Image } from './image-BhWT33W1.js';
9
+ import { P as Popover, a as PopoverTrigger, b as PopoverContent } from './popover-yFK1J4fL.js';
10
+ import { T as Trash, A as ArrowDown } from './trash--F119N47.js';
11
+ import { S as Sigma } from './sigma-DEuYJqTl.js';
12
+ import { u as useFileDiffOverlay } from './useFileDiffOverlay-BH6KcMzq.js';
13
+ import { F as FileDiffPanel } from './file-diff-panel-D_lLVQk0.js';
14
14
 
15
15
  /**
16
16
  * @license lucide-react v0.511.0 - ISC
@@ -2889,7 +2889,7 @@ const LinkSelector = ({ open, onOpenChange }) => {
2889
2889
  },
2890
2890
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash, { className: "h-4 w-4" })
2891
2891
  }
2892
- ) : /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { size: "icon", className: "h-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "h-4 w-4" }) })
2892
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { size: "icon", type: "submit", className: "h-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "h-4 w-4" }) })
2893
2893
  ]
2894
2894
  }
2895
2895
  ) })
@@ -1,4 +1,4 @@
1
- import { R as React, r as reactExports, aO as reactDomExports, e9 as ReactDOM, I as create, j as jsxRuntimeExports, ea as createSlot, ak as useId, eb as Root, ec as Portal, ed as Overlay, ee as Content, ah as composeRefs, d9 as getDefaultExportFromCjs$2, ef as clsx, eg as shimExports$1, eh as katex, ei as Slot, y as resolveApiBaseUrl, c2 as uploadFileAuto, ej as nanoid, ek as cx } from './index-7Chr1g9c.js';
1
+ import { R as React, r as reactExports, aR as reactDomExports, e8 as ReactDOM, Q as create, j as jsxRuntimeExports, e9 as createSlot, am as useId, ea as Root, eb as Portal, ec as Overlay, ed as Content, aj as composeRefs, d7 as getDefaultExportFromCjs$2, ee as clsx, ef as shimExports$1, eg as katex, eh as Slot, D as resolveApiBaseUrl, ei as uploadFileAuto, ej as nanoid, ek as cx } from './index-DZTZ8mWP.js';
2
2
 
3
3
  // ::- Persistent data structure representing an ordered mapping from
4
4
  // strings to values, with some convenient update methods.
@@ -1,12 +1,15 @@
1
- import { j as jsxRuntimeExports, r as reactExports, R as React$1, _ as __vitePreload, d7 as createRoot, d8 as getAugmentedNamespace, aO as reactDomExports, d9 as getDefaultExportFromCjs } from './index-7Chr1g9c.js';
1
+ import { j as jsxRuntimeExports, r as reactExports, R as React$1, _ as __vitePreload, d5 as createRoot, d6 as getAugmentedNamespace, aR as reactDomExports, d7 as getDefaultExportFromCjs } from './index-DZTZ8mWP.js';
2
2
 
3
3
  const PAGE_DIMENSIONS = {
4
4
  /** A4 width in points */
5
5
  A4_WIDTH: 595};
6
6
  const ZOOM_LEVELS = [0.5, 0.75, 1, 1.25, 1.5, 2];
7
7
 
8
- const PDF_WORKER_SRC = "/pdf.worker.min.mjs?v=4.10.38";
9
- const PDF_CMAP_URL = "/cmaps/";
8
+ const pdfWorkerUrl = "/ui/assets/pdf.worker.min-yatZIOMy.mjs";
9
+
10
+ const PDF_WORKER_SRC = pdfWorkerUrl;
11
+ const PDF_CMAP_URL = void 0;
12
+ const PDF_CMAP_PACKED = false;
10
13
 
11
14
  function debounce(fn, waitMs) {
12
15
  let timeoutId;
@@ -25394,7 +25397,9 @@ class PdfLoader extends reactExports.Component {
25394
25397
  error: null
25395
25398
  };
25396
25399
  static defaultProps = {
25397
- workerSrc: "/pdf.worker.min.mjs"
25400
+ workerSrc: PDF_WORKER_SRC,
25401
+ cMapUrl: PDF_CMAP_URL,
25402
+ cMapPacked: PDF_CMAP_PACKED
25398
25403
  };
25399
25404
  documentRef = React$1.createRef();
25400
25405
  componentDidMount() {
@@ -25433,8 +25438,10 @@ class PdfLoader extends reactExports.Component {
25433
25438
  const document2 = {
25434
25439
  ...this.props,
25435
25440
  ownerDocument,
25436
- cMapUrl,
25437
- cMapPacked
25441
+ ...cMapUrl ? {
25442
+ cMapUrl,
25443
+ cMapPacked
25444
+ } : {}
25438
25445
  };
25439
25446
  return __webpack_exports__getDocument(document2).promise.then((pdfDocument) => {
25440
25447
  this.setState({ pdfDocument });
@@ -25458,4 +25465,4 @@ class PdfLoader extends reactExports.Component {
25458
25465
  }
25459
25466
  }
25460
25467
 
25461
- export { PAGE_DIMENSIONS as P, Rnd as R, ZOOM_LEVELS as Z, PdfLoader as a, PDF_CMAP_URL as b, PDF_WORKER_SRC as c, PdfHighlighter as d, getPageFromElement as g };
25468
+ export { PAGE_DIMENSIONS as P, Rnd as R, ZOOM_LEVELS as Z, PdfLoader as a, PDF_CMAP_URL as b, PDF_WORKER_SRC as c, PdfHighlighter as d, PDF_CMAP_PACKED as e, getPageFromElement as g };