@researai/deepscientist 1.5.8 → 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 (148) hide show
  1. package/LICENSE +186 -21
  2. package/README.md +108 -95
  3. package/assets/branding/connector-qq.png +0 -0
  4. package/assets/branding/connector-rokid.png +0 -0
  5. package/assets/branding/connector-weixin.png +0 -0
  6. package/assets/branding/projects.png +0 -0
  7. package/bin/ds.js +172 -13
  8. package/docs/assets/branding/projects.png +0 -0
  9. package/docs/en/00_QUICK_START.md +308 -70
  10. package/docs/en/01_SETTINGS_REFERENCE.md +3 -0
  11. package/docs/en/02_START_RESEARCH_GUIDE.md +112 -0
  12. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
  13. package/docs/en/09_DOCTOR.md +41 -5
  14. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
  15. package/docs/en/11_LICENSE_AND_RISK.md +256 -0
  16. package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +427 -0
  17. package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
  18. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  19. package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
  20. package/docs/en/README.md +79 -0
  21. package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
  22. package/docs/images/weixin/weixin-plugin-entry.png +0 -0
  23. package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
  24. package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
  25. package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
  26. package/docs/images/weixin/weixin-settings-bind.svg +57 -0
  27. package/docs/zh/00_QUICK_START.md +315 -74
  28. package/docs/zh/01_SETTINGS_REFERENCE.md +3 -0
  29. package/docs/zh/02_START_RESEARCH_GUIDE.md +112 -0
  30. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
  31. package/docs/zh/09_DOCTOR.md +41 -5
  32. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
  33. package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
  34. package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +423 -0
  35. package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
  36. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  37. package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
  38. package/docs/zh/README.md +126 -0
  39. package/install.sh +0 -34
  40. package/package.json +3 -3
  41. package/pyproject.toml +2 -2
  42. package/src/deepscientist/__init__.py +1 -1
  43. package/src/deepscientist/annotations.py +343 -0
  44. package/src/deepscientist/artifact/arxiv.py +484 -37
  45. package/src/deepscientist/artifact/metrics.py +1 -3
  46. package/src/deepscientist/artifact/service.py +1347 -111
  47. package/src/deepscientist/arxiv_library.py +275 -0
  48. package/src/deepscientist/bash_exec/service.py +9 -0
  49. package/src/deepscientist/bridges/builtins.py +2 -0
  50. package/src/deepscientist/bridges/connectors.py +447 -0
  51. package/src/deepscientist/channels/__init__.py +2 -0
  52. package/src/deepscientist/channels/builtins.py +3 -1
  53. package/src/deepscientist/channels/qq.py +1 -1
  54. package/src/deepscientist/channels/qq_gateway.py +1 -1
  55. package/src/deepscientist/channels/relay.py +7 -1
  56. package/src/deepscientist/channels/weixin.py +59 -0
  57. package/src/deepscientist/channels/weixin_ilink.py +317 -0
  58. package/src/deepscientist/config/models.py +22 -2
  59. package/src/deepscientist/config/service.py +431 -60
  60. package/src/deepscientist/connector/__init__.py +4 -0
  61. package/src/deepscientist/connector/connector_profiles.py +481 -0
  62. package/src/deepscientist/connector/lingzhu_support.py +668 -0
  63. package/src/deepscientist/connector/qq_profiles.py +206 -0
  64. package/src/deepscientist/connector/weixin_support.py +663 -0
  65. package/src/deepscientist/connector_profiles.py +1 -374
  66. package/src/deepscientist/connector_runtime.py +2 -0
  67. package/src/deepscientist/daemon/api/handlers.py +295 -5
  68. package/src/deepscientist/daemon/api/router.py +16 -1
  69. package/src/deepscientist/daemon/app.py +1130 -61
  70. package/src/deepscientist/doctor.py +5 -2
  71. package/src/deepscientist/gitops/diff.py +120 -29
  72. package/src/deepscientist/lingzhu_support.py +1 -182
  73. package/src/deepscientist/mcp/server.py +14 -5
  74. package/src/deepscientist/prompts/builder.py +29 -1
  75. package/src/deepscientist/qq_profiles.py +1 -196
  76. package/src/deepscientist/quest/node_traces.py +152 -2
  77. package/src/deepscientist/quest/service.py +169 -43
  78. package/src/deepscientist/quest/stage_views.py +172 -9
  79. package/src/deepscientist/registries/baseline.py +56 -4
  80. package/src/deepscientist/runners/codex.py +55 -3
  81. package/src/deepscientist/weixin_support.py +1 -0
  82. package/src/prompts/connectors/lingzhu.md +3 -1
  83. package/src/prompts/connectors/weixin.md +230 -0
  84. package/src/prompts/system.md +9 -0
  85. package/src/skills/idea/SKILL.md +16 -0
  86. package/src/skills/idea/references/literature-survey-template.md +24 -0
  87. package/src/skills/idea/references/related-work-playbook.md +4 -0
  88. package/src/skills/idea/references/selection-gate.md +9 -0
  89. package/src/skills/write/SKILL.md +1 -1
  90. package/src/tui/package.json +1 -1
  91. package/src/ui/dist/assets/{AiManusChatView-m2FNtwbn.js → AiManusChatView-D0mTXG4-.js} +156 -48
  92. package/src/ui/dist/assets/{AnalysisPlugin-BMTF8EGL.js → AnalysisPlugin-Db0cTXxm.js} +1 -1
  93. package/src/ui/dist/assets/{CliPlugin-BEOWgxCI.js → CliPlugin-DrV8je02.js} +164 -9
  94. package/src/ui/dist/assets/{CodeEditorPlugin-BCXvjqmb.js → CodeEditorPlugin-QXMSCH71.js} +8 -8
  95. package/src/ui/dist/assets/{CodeViewerPlugin-DaJcy3nD.js → CodeViewerPlugin-7hhtWj_E.js} +5 -5
  96. package/src/ui/dist/assets/{DocViewerPlugin-ByfeIq4K.js → DocViewerPlugin-BWMSnRJe.js} +3 -3
  97. package/src/ui/dist/assets/{GitDiffViewerPlugin-Cksf3VZ-.js → GitDiffViewerPlugin-7J9h9Vy_.js} +20 -21
  98. package/src/ui/dist/assets/{ImageViewerPlugin-CFz-OsTS.js → ImageViewerPlugin-CHJl_0lr.js} +5 -5
  99. package/src/ui/dist/assets/{LabCopilotPanel-CJ1cJzoX.js → LabCopilotPanel-1qSow1es.js} +11 -11
  100. package/src/ui/dist/assets/{LabPlugin-BF3dVJwa.js → LabPlugin-eQpPPCEp.js} +2 -1
  101. package/src/ui/dist/assets/{LatexPlugin-DDkwZ6Sj.js → LatexPlugin-BwRfi89Z.js} +7 -7
  102. package/src/ui/dist/assets/{MarkdownViewerPlugin-HAuvurcT.js → MarkdownViewerPlugin-836PVQWV.js} +4 -4
  103. package/src/ui/dist/assets/{MarketplacePlugin-BtoTYy2C.js → MarketplacePlugin-C2y_556i.js} +3 -3
  104. package/src/ui/dist/assets/{NotebookEditor-CSJYx7b-.js → NotebookEditor-BRzJbGsn.js} +12 -12
  105. package/src/ui/dist/assets/{NotebookEditor-DQgRezm_.js → NotebookEditor-DIX7Mlzu.js} +1 -1
  106. package/src/ui/dist/assets/{PdfLoader-DPa_-fv6.js → PdfLoader-DzRaTAlq.js} +14 -7
  107. package/src/ui/dist/assets/{PdfMarkdownPlugin-BZpXOEjm.js → PdfMarkdownPlugin-DZUfIUnp.js} +73 -6
  108. package/src/ui/dist/assets/{PdfViewerPlugin-BT8a6wGR.js → PdfViewerPlugin-BwtICzue.js} +103 -34
  109. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
  110. package/src/ui/dist/assets/{SearchPlugin-D_blveZi.js → SearchPlugin-DHeIAMsx.js} +1 -1
  111. package/src/ui/dist/assets/{TextViewerPlugin-Btx0M3hX.js → TextViewerPlugin-C3tCmFox.js} +5 -4
  112. package/src/ui/dist/assets/{VNCViewer-DImJO4rO.js → VNCViewer-CQsKVm3t.js} +10 -10
  113. package/src/ui/dist/assets/bot-BEA2vWuK.js +21 -0
  114. package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
  115. package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
  116. package/src/ui/dist/assets/{code-BUfXGJSl.js → code-XfbSR8K2.js} +1 -1
  117. package/src/ui/dist/assets/{file-content-VqamwI3X.js → file-content-BjxNaIfy.js} +1 -1
  118. package/src/ui/dist/assets/{file-diff-panel-C_wOoS7a.js → file-diff-panel-D_lLVQk0.js} +1 -1
  119. package/src/ui/dist/assets/{file-socket-D2bTuMVP.js → file-socket-D9x_5vlY.js} +1 -1
  120. package/src/ui/dist/assets/{image-BZkGJ4mM.js → image-BhWT33W1.js} +1 -1
  121. package/src/ui/dist/assets/{index-DdRW6RMJ.js → index--c4iXtuy.js} +12 -12
  122. package/src/ui/dist/assets/{index-CxkvSeKw.js → index-BDxipwrC.js} +2 -2
  123. package/src/ui/dist/assets/{index-DjggJovS.js → index-DZTZ8mWP.js} +14934 -9613
  124. package/src/ui/dist/assets/{index-DXZ1daiJ.css → index-Dqj-Mjb4.css} +2 -13
  125. package/src/ui/dist/assets/index-PJbSbPTy.js +25 -0
  126. package/src/ui/dist/assets/{monaco-DHMc7kKM.js → monaco-K8izTGgo.js} +1 -1
  127. package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DfBors6y.js} +16 -1
  128. package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  129. package/src/ui/dist/assets/{popover-B85oCgCS.js → popover-yFK1J4fL.js} +1 -1
  130. package/src/ui/dist/assets/{project-sync-DOMCcPac.js → project-sync-PENr2zcz.js} +1 -74
  131. package/src/ui/dist/assets/select-CAbJDfYv.js +1690 -0
  132. package/src/ui/dist/assets/{sigma-BO2rQrl3.js → sigma-DEuYJqTl.js} +1 -1
  133. package/src/ui/dist/assets/{index-D9QIGcmc.js → square-check-big-omoSUmcd.js} +2 -13
  134. package/src/ui/dist/assets/{trash-BsVEH_dV.js → trash--F119N47.js} +1 -1
  135. package/src/ui/dist/assets/{useCliAccess-b8L6JuZm.js → useCliAccess-D31UR23I.js} +1 -1
  136. package/src/ui/dist/assets/{useFileDiffOverlay-BY7uA9hV.js → useFileDiffOverlay-BH6KcMzq.js} +1 -1
  137. package/src/ui/dist/assets/{wrap-text-BwyVuUIK.js → wrap-text-CZ613PM5.js} +1 -1
  138. package/src/ui/dist/assets/{zoom-out-RDpLugQP.js → zoom-out-BgDLAv3z.js} +1 -1
  139. package/src/ui/dist/index.html +2 -2
  140. package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
  141. package/src/ui/dist/assets/AutoFigurePlugin-DxPdMUNb.js +0 -8149
  142. package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
  143. package/src/ui/dist/assets/Stepper-DH2k75Vo.js +0 -158
  144. package/src/ui/dist/assets/bibtex-B-Hqu0Sg.js +0 -189
  145. package/src/ui/dist/assets/file-utils--zJCPN1i.js +0 -109
  146. package/src/ui/dist/assets/message-square-FUIPIhU2.js +0 -16
  147. package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
  148. package/src/ui/dist/assets/tooltip-B1OspAkx.js +0 -108
@@ -1,8 +1,8 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DjggJovS.js","assets/index-DXZ1daiJ.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-DjggJovS.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-BUfXGJSl.js';
5
- import { H as Hash, W as WrapText } from './wrap-text-BwyVuUIK.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-DjggJovS.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-DjggJovS.js","assets/index-DXZ1daiJ.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-DjggJovS.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-DjggJovS.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-DjggJovS.js';
2
- import ImageViewerPlugin from './ImageViewerPlugin-CFz-OsTS.js';
3
- import MarkdownViewerPlugin from './MarkdownViewerPlugin-HAuvurcT.js';
4
- import { N as NotebookEditor } from './NotebookEditor-CSJYx7b-.js';
5
- import PdfViewerPlugin from './PdfViewerPlugin-BT8a6wGR.js';
6
- import './image-BZkGJ4mM.js';
7
- import './zoom-out-RDpLugQP.js';
8
- import './code-BUfXGJSl.js';
9
- import './NotebookEditor-DQgRezm_.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-DOMCcPac.js';
13
- import './index-D9QIGcmc.js';
14
- import './popover-B85oCgCS.js';
15
- import './trash-BsVEH_dV.js';
16
- import './sigma-BO2rQrl3.js';
17
- import './useFileDiffOverlay-BY7uA9hV.js';
18
- import './file-diff-panel-C_wOoS7a.js';
19
- import './file-socket-D2bTuMVP.js';
20
- import './pdf-effect-queue-DSw_D3RV.js';
21
- import './bibtex-B-Hqu0Sg.js';
22
- import './PdfLoader-DPa_-fv6.js';
23
- import './message-square-FUIPIhU2.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-DjggJovS.js","assets/index-DXZ1daiJ.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-DjggJovS.js';
3
- import { I as Image } from './image-BZkGJ4mM.js';
4
- import { Z as ZoomOut, a as ZoomIn } from './zoom-out-RDpLugQP.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-DjggJovS.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-DjggJovS.js';
2
- import { P as Popover, a as PopoverTrigger, b as PopoverContent } from './popover-B85oCgCS.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-m2FNtwbn.js';
4
- import './file-content-VqamwI3X.js';
5
- import './file-utils--zJCPN1i.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-C_wOoS7a.js';
9
- import './message-square-FUIPIhU2.js';
10
- import './NotebookEditor-DQgRezm_.js';
11
- import './tooltip-B1OspAkx.js';
12
- import './trash-BsVEH_dV.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-DjggJovS.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-DHMc7kKM.js","assets/index-DjggJovS.js","assets/index-DXZ1daiJ.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-DjggJovS.js';
3
- import { P as ProjectSyncClient } from './project-sync-DOMCcPac.js';
4
- import { c as configureMonacoLoader } from './monaco-DHMc7kKM.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-DPa_-fv6.js';
6
- import { Z as ZoomOut, a as ZoomIn } from './zoom-out-RDpLugQP.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-DHMc7kKM.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-DjggJovS.js","assets/index-DXZ1daiJ.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-DjggJovS.js';
3
- import { C as Code } from './code-BUfXGJSl.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-DjggJovS.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-DjggJovS.js';
2
- import { S as Sigma } from './sigma-BO2rQrl3.js';
3
- import { I as Image } from './image-BZkGJ4mM.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-DjggJovS.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-DQgRezm_.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-DOMCcPac.js';
6
- import { S as SquareCheckBig } from './index-D9QIGcmc.js';
7
- import { C as Code } from './code-BUfXGJSl.js';
8
- import { I as Image } from './image-BZkGJ4mM.js';
9
- import { P as Popover, a as PopoverTrigger, b as PopoverContent } from './popover-B85oCgCS.js';
10
- import { T as Trash, A as ArrowDown } from './trash-BsVEH_dV.js';
11
- import { S as Sigma } from './sigma-BO2rQrl3.js';
12
- import { u as useFileDiffOverlay } from './useFileDiffOverlay-BY7uA9hV.js';
13
- import { F as FileDiffPanel } from './file-diff-panel-C_wOoS7a.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-DjggJovS.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-DjggJovS.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 };
@@ -1,6 +1,5 @@
1
- import { o as useTabsStore, a as useWorkspaceSurfaceStore, p as useToast, q as useArxivStore, r as reactExports, c as copyToClipboard, s as apiClient, t as BUILTIN_PLUGINS, j as jsxRuntimeExports, k as FileText, b as cn, g as RefreshCw, M as MarkdownRenderer } from './index-DjggJovS.js';
2
- import { d as defaultExtensions, s as setEditorMarkdown, U, I, r as resolveNotebookAssetUrl } from './NotebookEditor-DQgRezm_.js';
3
- import { g as generateBibTeX, I as InfoTriangleIcon, A as ArxivInfoModal } from './bibtex-B-Hqu0Sg.js';
1
+ import { n as useTabsStore, a as useWorkspaceSurfaceStore, o as useToast, p as useArxivStore, r as reactExports, q as buildArxivSummaryMarkdown, s as generateBibTeX, c as copyToClipboard, t as apiClient, v as BUILTIN_PLUGINS, j as jsxRuntimeExports, k as FileText, I as InfoTriangleIcon, b as cn, M as MarkdownRenderer, A as ArxivInfoModal, g as RefreshCw } from './index-DZTZ8mWP.js';
2
+ import { d as defaultExtensions, s as setEditorMarkdown, U, I, r as resolveNotebookAssetUrl } from './NotebookEditor-DIX7Mlzu.js';
4
3
 
5
4
  function rewriteMarkdownImages(markdown, fileId) {
6
5
  if (!markdown) return markdown;
@@ -58,6 +57,8 @@ function PdfMarkdownPlugin({
58
57
  return arxivItems.find((item) => item.fileId === fileId) || null;
59
58
  }, [arxivFromContext, arxivItems, fileId]);
60
59
  const arxivError = arxivPaper ? arxivErrors[arxivPaper.arxivId] : void 0;
60
+ const isArxivPdf = Boolean(arxivPaper);
61
+ const arxivSummaryMarkdown = reactExports.useMemo(() => buildArxivSummaryMarkdown(arxivPaper), [arxivPaper]);
61
62
  const handleCopyBibtex = reactExports.useCallback(async () => {
62
63
  if (!arxivPaper) return;
63
64
  const bibtex = generateBibTeX(arxivPaper);
@@ -74,8 +75,8 @@ function PdfMarkdownPlugin({
74
75
  window.open(`https://arxiv.org/abs/${arxivPaper.arxivId}`, "_blank", "noopener,noreferrer");
75
76
  }, [arxivPaper]);
76
77
  reactExports.useEffect(() => {
77
- setTitle(fileName);
78
- }, [fileName, setTitle]);
78
+ setTitle(isArxivPdf ? `${fileName} Summary` : fileName);
79
+ }, [fileName, isArxivPdf, setTitle]);
79
80
  reactExports.useEffect(() => {
80
81
  parseRequestedRef.current = false;
81
82
  setRenderMode("novel");
@@ -134,9 +135,15 @@ function PdfMarkdownPlugin({
134
135
  setIsRetrying(false);
135
136
  }, [fileId, isRetrying, loadMarkdown, triggerParse]);
136
137
  reactExports.useEffect(() => {
138
+ if (isArxivPdf) {
139
+ setState("idle");
140
+ setMarkdown("");
141
+ setError(null);
142
+ return;
143
+ }
137
144
  if (!fileId) return;
138
145
  void loadMarkdown();
139
- }, [fileId, loadMarkdown]);
146
+ }, [fileId, isArxivPdf, loadMarkdown]);
140
147
  reactExports.useEffect(() => {
141
148
  updateWorkspaceTabState(tabId, {
142
149
  contentKind: "pdf",
@@ -189,6 +196,66 @@ function PdfMarkdownPlugin({
189
196
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Select a PDF in the file tree or import one from arXiv, then open the Markdown view to see MinerU output." })
190
197
  ] }) });
191
198
  }
199
+ if (isArxivPdf) {
200
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full bg-background", children: [
201
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between px-4 py-2 border-b border-border bg-muted/30", children: [
202
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
203
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileText, { className: "w-4 h-4 text-muted-foreground" }),
204
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm text-foreground", children: fileName }),
205
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs px-2 py-0.5 rounded bg-muted text-muted-foreground uppercase", children: "Summary" }),
206
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
207
+ "button",
208
+ {
209
+ type: "button",
210
+ onClick: () => setInfoOpen(true),
211
+ className: cn(
212
+ "flex h-7 w-7 items-center justify-center rounded-full",
213
+ "text-muted-foreground transition-colors",
214
+ "hover:bg-muted hover:text-foreground"
215
+ ),
216
+ title: "Paper info",
217
+ "aria-label": "Paper info",
218
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(InfoTriangleIcon, { className: "h-4 w-4" })
219
+ }
220
+ )
221
+ ] }),
222
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
223
+ "button",
224
+ {
225
+ type: "button",
226
+ onClick: handleBackToPdf,
227
+ className: cn(
228
+ "flex items-center gap-2 px-3 py-1.5 rounded-full border transition-colors text-sm",
229
+ "bg-background hover:bg-muted/60 border-border"
230
+ ),
231
+ title: "Back to PDF view",
232
+ children: [
233
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FileText, { className: "w-4 h-4" }),
234
+ "PDF"
235
+ ]
236
+ }
237
+ ) })
238
+ ] }),
239
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden flex justify-center px-4 py-4 bg-muted/10", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-full w-[min(62.5vw,100%)] max-w-[70rem]", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "notebook-editor-container relative h-full overflow-hidden rounded-2xl border border-border bg-background shadow-soft-card", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "notebook-doc-editor relative h-full w-full overflow-y-auto p-8", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
240
+ MarkdownRenderer,
241
+ {
242
+ content: arxivSummaryMarkdown,
243
+ className: "prose prose-lg dark:prose-invert max-w-full"
244
+ }
245
+ ) }) }) }) }),
246
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
247
+ ArxivInfoModal,
248
+ {
249
+ open: infoOpen,
250
+ onClose: () => setInfoOpen(false),
251
+ paper: arxivPaper,
252
+ errorCode: arxivError,
253
+ onCopyBibtex: arxivPaper ? handleCopyBibtex : void 0,
254
+ onOpenArxiv: arxivPaper ? handleOpenArxiv : void 0
255
+ }
256
+ )
257
+ ] });
258
+ }
192
259
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full bg-background", children: [
193
260
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between px-4 py-2 border-b border-border bg-muted/30", children: [
194
261
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [