@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.
- package/LICENSE +186 -21
- package/README.md +108 -95
- package/assets/branding/connector-qq.png +0 -0
- package/assets/branding/connector-rokid.png +0 -0
- package/assets/branding/connector-weixin.png +0 -0
- package/assets/branding/projects.png +0 -0
- package/bin/ds.js +172 -13
- package/docs/assets/branding/projects.png +0 -0
- package/docs/en/00_QUICK_START.md +308 -70
- package/docs/en/01_SETTINGS_REFERENCE.md +3 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +112 -0
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
- package/docs/en/09_DOCTOR.md +41 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
- package/docs/en/11_LICENSE_AND_RISK.md +256 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +427 -0
- package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/en/README.md +79 -0
- package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
- package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
- package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
- package/docs/images/weixin/weixin-settings-bind.svg +57 -0
- package/docs/zh/00_QUICK_START.md +315 -74
- package/docs/zh/01_SETTINGS_REFERENCE.md +3 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +112 -0
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
- package/docs/zh/09_DOCTOR.md +41 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
- package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +423 -0
- package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/zh/README.md +126 -0
- package/install.sh +0 -34
- package/package.json +3 -3
- package/pyproject.toml +2 -2
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/annotations.py +343 -0
- package/src/deepscientist/artifact/arxiv.py +484 -37
- package/src/deepscientist/artifact/metrics.py +1 -3
- package/src/deepscientist/artifact/service.py +1347 -111
- package/src/deepscientist/arxiv_library.py +275 -0
- package/src/deepscientist/bash_exec/service.py +9 -0
- package/src/deepscientist/bridges/builtins.py +2 -0
- package/src/deepscientist/bridges/connectors.py +447 -0
- package/src/deepscientist/channels/__init__.py +2 -0
- package/src/deepscientist/channels/builtins.py +3 -1
- package/src/deepscientist/channels/qq.py +1 -1
- package/src/deepscientist/channels/qq_gateway.py +1 -1
- package/src/deepscientist/channels/relay.py +7 -1
- package/src/deepscientist/channels/weixin.py +59 -0
- package/src/deepscientist/channels/weixin_ilink.py +317 -0
- package/src/deepscientist/config/models.py +22 -2
- package/src/deepscientist/config/service.py +431 -60
- package/src/deepscientist/connector/__init__.py +4 -0
- package/src/deepscientist/connector/connector_profiles.py +481 -0
- package/src/deepscientist/connector/lingzhu_support.py +668 -0
- package/src/deepscientist/connector/qq_profiles.py +206 -0
- package/src/deepscientist/connector/weixin_support.py +663 -0
- package/src/deepscientist/connector_profiles.py +1 -374
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +295 -5
- package/src/deepscientist/daemon/api/router.py +16 -1
- package/src/deepscientist/daemon/app.py +1130 -61
- package/src/deepscientist/doctor.py +5 -2
- package/src/deepscientist/gitops/diff.py +120 -29
- package/src/deepscientist/lingzhu_support.py +1 -182
- package/src/deepscientist/mcp/server.py +14 -5
- package/src/deepscientist/prompts/builder.py +29 -1
- package/src/deepscientist/qq_profiles.py +1 -196
- package/src/deepscientist/quest/node_traces.py +152 -2
- package/src/deepscientist/quest/service.py +169 -43
- package/src/deepscientist/quest/stage_views.py +172 -9
- package/src/deepscientist/registries/baseline.py +56 -4
- package/src/deepscientist/runners/codex.py +55 -3
- package/src/deepscientist/weixin_support.py +1 -0
- package/src/prompts/connectors/lingzhu.md +3 -1
- package/src/prompts/connectors/weixin.md +230 -0
- package/src/prompts/system.md +9 -0
- package/src/skills/idea/SKILL.md +16 -0
- package/src/skills/idea/references/literature-survey-template.md +24 -0
- package/src/skills/idea/references/related-work-playbook.md +4 -0
- package/src/skills/idea/references/selection-gate.md +9 -0
- package/src/skills/write/SKILL.md +1 -1
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-m2FNtwbn.js → AiManusChatView-D0mTXG4-.js} +156 -48
- package/src/ui/dist/assets/{AnalysisPlugin-BMTF8EGL.js → AnalysisPlugin-Db0cTXxm.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-BEOWgxCI.js → CliPlugin-DrV8je02.js} +164 -9
- package/src/ui/dist/assets/{CodeEditorPlugin-BCXvjqmb.js → CodeEditorPlugin-QXMSCH71.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-DaJcy3nD.js → CodeViewerPlugin-7hhtWj_E.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-ByfeIq4K.js → DocViewerPlugin-BWMSnRJe.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-Cksf3VZ-.js → GitDiffViewerPlugin-7J9h9Vy_.js} +20 -21
- package/src/ui/dist/assets/{ImageViewerPlugin-CFz-OsTS.js → ImageViewerPlugin-CHJl_0lr.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-CJ1cJzoX.js → LabCopilotPanel-1qSow1es.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-BF3dVJwa.js → LabPlugin-eQpPPCEp.js} +2 -1
- package/src/ui/dist/assets/{LatexPlugin-DDkwZ6Sj.js → LatexPlugin-BwRfi89Z.js} +7 -7
- package/src/ui/dist/assets/{MarkdownViewerPlugin-HAuvurcT.js → MarkdownViewerPlugin-836PVQWV.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-BtoTYy2C.js → MarketplacePlugin-C2y_556i.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-CSJYx7b-.js → NotebookEditor-BRzJbGsn.js} +12 -12
- package/src/ui/dist/assets/{NotebookEditor-DQgRezm_.js → NotebookEditor-DIX7Mlzu.js} +1 -1
- package/src/ui/dist/assets/{PdfLoader-DPa_-fv6.js → PdfLoader-DzRaTAlq.js} +14 -7
- package/src/ui/dist/assets/{PdfMarkdownPlugin-BZpXOEjm.js → PdfMarkdownPlugin-DZUfIUnp.js} +73 -6
- package/src/ui/dist/assets/{PdfViewerPlugin-BT8a6wGR.js → PdfViewerPlugin-BwtICzue.js} +103 -34
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
- package/src/ui/dist/assets/{SearchPlugin-D_blveZi.js → SearchPlugin-DHeIAMsx.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-Btx0M3hX.js → TextViewerPlugin-C3tCmFox.js} +5 -4
- package/src/ui/dist/assets/{VNCViewer-DImJO4rO.js → VNCViewer-CQsKVm3t.js} +10 -10
- package/src/ui/dist/assets/bot-BEA2vWuK.js +21 -0
- package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
- package/src/ui/dist/assets/{code-BUfXGJSl.js → code-XfbSR8K2.js} +1 -1
- package/src/ui/dist/assets/{file-content-VqamwI3X.js → file-content-BjxNaIfy.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-C_wOoS7a.js → file-diff-panel-D_lLVQk0.js} +1 -1
- package/src/ui/dist/assets/{file-socket-D2bTuMVP.js → file-socket-D9x_5vlY.js} +1 -1
- package/src/ui/dist/assets/{image-BZkGJ4mM.js → image-BhWT33W1.js} +1 -1
- package/src/ui/dist/assets/{index-DdRW6RMJ.js → index--c4iXtuy.js} +12 -12
- package/src/ui/dist/assets/{index-CxkvSeKw.js → index-BDxipwrC.js} +2 -2
- package/src/ui/dist/assets/{index-DjggJovS.js → index-DZTZ8mWP.js} +14934 -9613
- package/src/ui/dist/assets/{index-DXZ1daiJ.css → index-Dqj-Mjb4.css} +2 -13
- package/src/ui/dist/assets/index-PJbSbPTy.js +25 -0
- package/src/ui/dist/assets/{monaco-DHMc7kKM.js → monaco-K8izTGgo.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DfBors6y.js} +16 -1
- package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/src/ui/dist/assets/{popover-B85oCgCS.js → popover-yFK1J4fL.js} +1 -1
- package/src/ui/dist/assets/{project-sync-DOMCcPac.js → project-sync-PENr2zcz.js} +1 -74
- package/src/ui/dist/assets/select-CAbJDfYv.js +1690 -0
- package/src/ui/dist/assets/{sigma-BO2rQrl3.js → sigma-DEuYJqTl.js} +1 -1
- package/src/ui/dist/assets/{index-D9QIGcmc.js → square-check-big-omoSUmcd.js} +2 -13
- package/src/ui/dist/assets/{trash-BsVEH_dV.js → trash--F119N47.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-b8L6JuZm.js → useCliAccess-D31UR23I.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-BY7uA9hV.js → useFileDiffOverlay-BH6KcMzq.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-BwyVuUIK.js → wrap-text-CZ613PM5.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-RDpLugQP.js → zoom-out-BgDLAv3z.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
- package/src/ui/dist/assets/AutoFigurePlugin-DxPdMUNb.js +0 -8149
- package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
- package/src/ui/dist/assets/Stepper-DH2k75Vo.js +0 -158
- package/src/ui/dist/assets/bibtex-B-Hqu0Sg.js +0 -189
- package/src/ui/dist/assets/file-utils--zJCPN1i.js +0 -109
- package/src/ui/dist/assets/message-square-FUIPIhU2.js +0 -16
- package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
- package/src/ui/dist/assets/tooltip-B1OspAkx.js +0 -108
|
@@ -28,6 +28,11 @@ Score the final serious candidate on a `0/1/2` scale:
|
|
|
28
28
|
- `2` fully compliant with dataset, protocol, and compute limits
|
|
29
29
|
|
|
30
30
|
If total `< 7/10`, do not promote the idea yet.
|
|
31
|
+
Also treat these as hard gates before promotion:
|
|
32
|
+
|
|
33
|
+
- the literature survey must already durably cover at least `5` and usually `5-10` related and usable papers
|
|
34
|
+
- the closest-prior-work comparison must explain why the idea is still needed
|
|
35
|
+
- the final selected-idea draft must be ready to carry standard-format citations for the papers actually used
|
|
31
36
|
|
|
32
37
|
## 2. Honest novelty / value labels
|
|
33
38
|
|
|
@@ -53,6 +58,7 @@ The selected idea record should include:
|
|
|
53
58
|
- `theory_and_method`
|
|
54
59
|
- `code_level_plan`
|
|
55
60
|
- `relation_to_literature`
|
|
61
|
+
- `references` or `bibliography` in a standard citation format
|
|
56
62
|
- evidence or source pointers
|
|
57
63
|
|
|
58
64
|
Inside the implementation handoff, also include:
|
|
@@ -70,6 +76,7 @@ Use a compact Pyramid structure:
|
|
|
70
76
|
- first line: falsifiable claim plus metric focus plus boundary condition
|
|
71
77
|
- then `3-6` bullets of reasoning and evidence pointers
|
|
72
78
|
- then the minimal validation plan
|
|
79
|
+
- then a short `References` or `Bibliography` section that cites the survey-stage papers actually used
|
|
73
80
|
|
|
74
81
|
## 5. Promotion gate
|
|
75
82
|
|
|
@@ -80,3 +87,5 @@ Do not promote a candidate if any of these remain unclear:
|
|
|
80
87
|
- what minimal experiment can refute it
|
|
81
88
|
- which code touchpoints are affected
|
|
82
89
|
- what evidence package would later defend it in writing
|
|
90
|
+
- which `5-10` surveyed papers actually support the motivation, mechanism, and claim boundary
|
|
91
|
+
- whether the final idea draft includes proper citation markers plus a standard-format reference list
|
|
@@ -1044,7 +1044,7 @@ Preferred artifact choices:
|
|
|
1044
1044
|
- use `approval` when the user explicitly confirms a submission-critical choice
|
|
1045
1045
|
- use `artifact.submit_paper_outline(mode='candidate'|'select'|'revise', ...)` for the real outline lifecycle instead of leaving outline choice only in prose
|
|
1046
1046
|
- use `artifact.submit_paper_bundle(...)` before leaving the writing stage when the draft, plan, references, and packaging evidence are durable enough
|
|
1047
|
-
- continue writing on the
|
|
1047
|
+
- continue writing on the dedicated `paper/*` branch/worktree after analysis slices finish; treat the parent run or idea branch as the evidence source, not the drafting surface
|
|
1048
1048
|
|
|
1049
1049
|
Keep each writing artifact tightly linked to evidence paths.
|
|
1050
1050
|
|
package/src/tui/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import {
|
|
3
|
-
import { u as useFileContentStore } from './file-content-
|
|
4
|
-
import { n as normalizePath$1, j as joinPath, s as splitPath,
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BDxipwrC.js","assets/index-DZTZ8mWP.js","assets/index-Dqj-Mjb4.css","assets/useCliAccess-D31UR23I.js","assets/VNCViewer-CQsKVm3t.js","assets/file-content-BjxNaIfy.js","assets/select-CAbJDfYv.js","assets/index-PJbSbPTy.js","assets/file-jump-queue-r5XKgJEV.js","assets/pdf-effect-queue-DfBors6y.js","assets/file-diff-panel-D_lLVQk0.js","assets/bot-BEA2vWuK.js","assets/NotebookEditor-DIX7Mlzu.js","assets/NotebookEditor-C3VQ7ylN.css","assets/trash--F119N47.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import { w as createLucideIcon, r as reactExports, ce as useIsomorphicLayoutEffect, cg as frame_1, d8 as LayoutGroupContext, d9 as nodeGroup_1, j as jsxRuntimeExports, cj as useConstant, t as apiClient, bE as isQuestRuntimeSurface, da as shouldUseQuestProject, bF as getApiBaseUrl, db as deriveMcpIdentity, dc as supportsProductApis, cV as axios, dd as getCachedValue, de as setCachedValue, df as recordRequestEvent, dg as redactSensitive, dh as sanitizeUrl, di as refreshAccessToken, aV as useChatSessionStore, cF as getMyToken, bG as redirectToLanding, Q as create$1, aA as useLabCopilotStore, bH as useCliStore, dj as EXPLORER_REFRESH_EVENT, n as useTabsStore, cX as buildCliFileId, dk as getCliFileName, cY as toCliResourcePath, aM as getPluginIdFromExtension, v as BUILTIN_PLUGINS, b as cn, dl as GripVertical, f as useFileTreeStore, W as toFilesResourcePath, aL as getPluginIdFromMimeType, T as TriangleAlert, dm as resolveMcpIdentity, dn as getToolArgsRecord, dp as getToolResultRecord, dq as getToolResultValue, dr as asString$2, ds as asRecord$4, dt as asStringArray, du as extractPathEntries, dv as BookOpenText, dw as Clock3, dx as truncateText, dy as ArrowUpRight, l as Search, dz as Database, dA as ArrowRightLeft, N as Sparkles, k as FileText, by as GitBranch, dB as asBoolean, dC as asNumber, dD as BASH_CARRIAGE_RETURN_PREFIX, aN as useQuery, br as CircleHelp, dE as Activity, bt as Clock, dF as truncateText$1, dG as listLabPendingQuestions, dH as listLabQuestionHistory, af as BookOpen, dI as ExternalLink, u as useI18n, dJ as GraduationCap, dK as normalizeWebSearchPayload, dL as WebSearchQueryPills, dM as WebSearchResults, P as EnhancedTerminal, h as dynamic, _ as __vitePreload, dN as BashToolView, ac as Terminal, o as useToast, dO as getMimeTypeFromExtension, dP as getFileTextPreview, c2 as createFileObjectUrl, c as copyToClipboard, cp as ChevronLeft, cs as Folder, m as ChevronDown, X as X$1, L as LoaderCircle, aJ as FileIcon, dQ as formatFileSize, E as Eye, e as Copy, ba as Dialog, bb as DialogContent, co as ChevronRight, dR as ConfirmModal, dS as RotatingText, d as Check, aS as useReducedMotion, dT as useTokenStream, dU as McpBashExecView, dV as PngIcon, dW as Brain, dX as BRAND_LOGO_SMALL_SRC, dY as BRAND_LOGO_SMALL_SRC_INVERTED, dZ as CircleX, b0 as motion, bd as DialogTitle, ct as DialogDescription, bT as DropdownMenu, bU as DropdownMenuTrigger, b8 as Ellipsis, bV as DropdownMenuContent, bX as DropdownMenuItem, cB as DropdownMenuSeparator, cq as GlareHover, cA as SpotlightCard, d4 as Noise, b9 as Plus, ai as Info, a2 as Play, d_ as getWorkspaceContentTone, a$ as AnimatePresence, ab as useOpenFile, a as useWorkspaceSurfaceStore, z as useAuthStore, d$ as useSearchParams, e0 as useAgentRegistryStore, e1 as PanelLeft, e2 as parseCliFileId, c0 as getFile, bL as getProject, cI as refreshCliServerStatus, e3 as COPILOT_FILES_ENABLED, a0 as listLatexBuilds, a6 as getLatexBuildLogText, $ as compileLatex, e4 as ThinkingIndicator, e5 as assetUrl, e6 as VariableSizeList, bs as OrbitLogoStatus, aR as reactDomExports, e7 as ChatScrollProvider, bc as DialogHeader, be as DialogFooter } from './index-DZTZ8mWP.js';
|
|
3
|
+
import { u as useFileContentStore } from './file-content-BjxNaIfy.js';
|
|
4
|
+
import { n as normalizePath$1, j as joinPath, s as splitPath, e as Server, L as Layers, S as Select, a as SelectTrigger, c as SelectContent, d as SelectItem } from './select-CAbJDfYv.js';
|
|
5
5
|
import { q as queueFileJumpEffect } from './file-jump-queue-r5XKgJEV.js';
|
|
6
|
-
import { q as queuePdfEffect } from './pdf-effect-queue-
|
|
7
|
-
import { F as FileDiffPanel } from './file-diff-panel-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { T as Trash, A as ArrowDown } from './trash
|
|
6
|
+
import { q as queuePdfEffect, M as MessageSquare } from './pdf-effect-queue-DfBors6y.js';
|
|
7
|
+
import { F as FileDiffPanel } from './file-diff-panel-D_lLVQk0.js';
|
|
8
|
+
import { B as Bot } from './bot-BEA2vWuK.js';
|
|
9
|
+
import { C as ChevronUp } from './index-PJbSbPTy.js';
|
|
10
|
+
import { v as ve$2, d as defaultExtensions, g as getEditorMarkdown, s as setEditorMarkdown, U as U$2, I as I$1 } from './NotebookEditor-DIX7Mlzu.js';
|
|
11
|
+
import { T as Trash, A as ArrowDown } from './trash--F119N47.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -18,12 +18,12 @@ import { T as Trash, A as ArrowDown } from './trash-BsVEH_dV.js';
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
const __iconNode$
|
|
21
|
+
const __iconNode$j = [
|
|
22
22
|
["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
|
|
23
23
|
["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
|
|
24
24
|
["path", { d: "M10 12h4", key: "a56b0p" }]
|
|
25
25
|
];
|
|
26
|
-
const Archive = createLucideIcon("archive", __iconNode$
|
|
26
|
+
const Archive = createLucideIcon("archive", __iconNode$j);
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -33,11 +33,11 @@ const Archive = createLucideIcon("archive", __iconNode$k);
|
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
const __iconNode$
|
|
36
|
+
const __iconNode$i = [
|
|
37
37
|
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
38
38
|
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
39
39
|
];
|
|
40
|
-
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$
|
|
40
|
+
const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$i);
|
|
41
41
|
|
|
42
42
|
/**
|
|
43
43
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -47,12 +47,12 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$j);
|
|
|
47
47
|
*/
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
const __iconNode$
|
|
50
|
+
const __iconNode$h = [
|
|
51
51
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
52
52
|
["line", { x1: "10", x2: "10", y1: "15", y2: "9", key: "c1nkhi" }],
|
|
53
53
|
["line", { x1: "14", x2: "14", y1: "15", y2: "9", key: "h65svq" }]
|
|
54
54
|
];
|
|
55
|
-
const CirclePause = createLucideIcon("circle-pause", __iconNode$
|
|
55
|
+
const CirclePause = createLucideIcon("circle-pause", __iconNode$h);
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -62,13 +62,13 @@ const CirclePause = createLucideIcon("circle-pause", __iconNode$i);
|
|
|
62
62
|
*/
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
const __iconNode$
|
|
65
|
+
const __iconNode$g = [
|
|
66
66
|
[
|
|
67
67
|
"path",
|
|
68
68
|
{ d: "M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3", key: "11bfej" }
|
|
69
69
|
]
|
|
70
70
|
];
|
|
71
|
-
const Command = createLucideIcon("command", __iconNode$
|
|
71
|
+
const Command = createLucideIcon("command", __iconNode$g);
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -78,7 +78,7 @@ const Command = createLucideIcon("command", __iconNode$h);
|
|
|
78
78
|
*/
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
const __iconNode$
|
|
81
|
+
const __iconNode$f = [
|
|
82
82
|
["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
|
|
83
83
|
[
|
|
84
84
|
"path",
|
|
@@ -87,7 +87,7 @@ const __iconNode$g = [
|
|
|
87
87
|
["path", { d: "m9 18-1.5-1.5", key: "1j6qii" }],
|
|
88
88
|
["circle", { cx: "5", cy: "14", r: "3", key: "ufru5t" }]
|
|
89
89
|
];
|
|
90
|
-
const FileSearch = createLucideIcon("file-search", __iconNode$
|
|
90
|
+
const FileSearch = createLucideIcon("file-search", __iconNode$f);
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
93
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -97,12 +97,12 @@ const FileSearch = createLucideIcon("file-search", __iconNode$g);
|
|
|
97
97
|
*/
|
|
98
98
|
|
|
99
99
|
|
|
100
|
-
const __iconNode$
|
|
100
|
+
const __iconNode$e = [
|
|
101
101
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
|
|
102
102
|
["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
|
|
103
103
|
["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
|
|
104
104
|
];
|
|
105
|
-
const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$
|
|
105
|
+
const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$e);
|
|
106
106
|
|
|
107
107
|
/**
|
|
108
108
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -112,33 +112,12 @@ const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode
|
|
|
112
112
|
*/
|
|
113
113
|
|
|
114
114
|
|
|
115
|
-
const __iconNode$
|
|
115
|
+
const __iconNode$d = [
|
|
116
116
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
117
117
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
118
118
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
119
119
|
];
|
|
120
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* @license lucide-react v0.511.0 - ISC
|
|
124
|
-
*
|
|
125
|
-
* This source code is licensed under the ISC license.
|
|
126
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
127
|
-
*/
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const __iconNode$d = [
|
|
131
|
-
[
|
|
132
|
-
"path",
|
|
133
|
-
{
|
|
134
|
-
d: "M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",
|
|
135
|
-
key: "j76jl0"
|
|
136
|
-
}
|
|
137
|
-
],
|
|
138
|
-
["path", { d: "M22 10v6", key: "1lu8f3" }],
|
|
139
|
-
["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
|
|
140
|
-
];
|
|
141
|
-
const GraduationCap = createLucideIcon("graduation-cap", __iconNode$d);
|
|
120
|
+
const Globe = createLucideIcon("globe", __iconNode$d);
|
|
142
121
|
|
|
143
122
|
/**
|
|
144
123
|
* @license lucide-react v0.511.0 - ISC
|
|
@@ -9557,6 +9536,29 @@ function renderAttachBaseline(resultRecord) {
|
|
|
9557
9536
|
] }) });
|
|
9558
9537
|
}
|
|
9559
9538
|
function renderArxiv(resultRecord, args) {
|
|
9539
|
+
const mode = asString$2(resultRecord?.mode) || asString$2(args.mode) || "read";
|
|
9540
|
+
if (mode === "list") {
|
|
9541
|
+
const items = Array.isArray(resultRecord?.items) ? resultRecord.items.map((entry) => asRecord$4(entry)).filter((entry) => Boolean(entry)) : [];
|
|
9542
|
+
const count = typeof resultRecord?.count === "number" ? resultRecord.count : items.length;
|
|
9543
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: /* @__PURE__ */ jsxRuntimeExports.jsx(DsToolSection, { title: "Saved arXiv papers", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2 text-[12px] leading-6 text-[var(--text-secondary)]", children: [
|
|
9544
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
9545
|
+
"Count: ",
|
|
9546
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-[var(--text-primary)]", children: count })
|
|
9547
|
+
] }),
|
|
9548
|
+
items.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "No saved arXiv papers yet." }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-2", children: items.map((item, index) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
9549
|
+
"div",
|
|
9550
|
+
{
|
|
9551
|
+
className: "rounded-[12px] border border-[var(--border-light)] bg-[rgba(255,255,255,0.76)] px-3 py-3",
|
|
9552
|
+
children: [
|
|
9553
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[12px] font-medium text-[var(--text-primary)]", children: asString$2(item.title) || asString$2(item.arxiv_id) || `Paper ${index + 1}` }),
|
|
9554
|
+
asString$2(item.arxiv_id) ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 text-[11px] font-mono text-[var(--text-tertiary)]", children: asString$2(item.arxiv_id) }) : null,
|
|
9555
|
+
asString$2(item.abstract) ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-2 text-[12px] leading-6 text-[var(--text-secondary)]", children: truncateText(asString$2(item.abstract), 320) }) : null
|
|
9556
|
+
]
|
|
9557
|
+
},
|
|
9558
|
+
`${asString$2(item.arxiv_id) || index}`
|
|
9559
|
+
)) })
|
|
9560
|
+
] }) }) });
|
|
9561
|
+
}
|
|
9560
9562
|
const paperId = asString$2(resultRecord?.paper_id) || asString$2(args.paper_id);
|
|
9561
9563
|
const title = asString$2(resultRecord?.title) || paperId || "arXiv paper";
|
|
9562
9564
|
const source = asString$2(resultRecord?.source);
|
|
@@ -9729,6 +9731,7 @@ function McpArtifactToolView({ toolContent }) {
|
|
|
9729
9731
|
const resultValue = getToolResultValue(toolContent);
|
|
9730
9732
|
const error = asString$2(toolContent.content?.error) || asString$2(resultRecord?.error);
|
|
9731
9733
|
const active = toolContent.status === "calling";
|
|
9734
|
+
const arxivMode = asString$2(resultRecord?.mode) || asString$2(args.mode) || "read";
|
|
9732
9735
|
const titleMap = {
|
|
9733
9736
|
record: active ? "DeepScientist is recording artifact..." : "DeepScientist recorded artifact.",
|
|
9734
9737
|
checkpoint: active ? "DeepScientist is creating checkpoint..." : "DeepScientist created checkpoint.",
|
|
@@ -9761,7 +9764,7 @@ function McpArtifactToolView({ toolContent }) {
|
|
|
9761
9764
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
9762
9765
|
DsToolFrame,
|
|
9763
9766
|
{
|
|
9764
|
-
title: titleMap[toolLabel] || (active ? "DeepScientist is updating artifact..." : "DeepScientist updated artifact."),
|
|
9767
|
+
title: toolLabel === "arxiv" && arxivMode === "list" ? active ? "DeepScientist is listing saved arXiv papers..." : "DeepScientist listed the saved arXiv papers." : titleMap[toolLabel] || (active ? "DeepScientist is updating artifact..." : "DeepScientist updated artifact."),
|
|
9765
9768
|
subtitle: recordSummary || subtitleMap[toolLabel] || "Artifact tools persist branch, report, baseline, and interaction state.",
|
|
9766
9769
|
accent,
|
|
9767
9770
|
meta: /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
@@ -11535,7 +11538,7 @@ function SearchToolView({ toolContent, panelMode }) {
|
|
|
11535
11538
|
}
|
|
11536
11539
|
|
|
11537
11540
|
const CliToolTerminal = dynamic(
|
|
11538
|
-
() => __vitePreload(() => import('./index-
|
|
11541
|
+
() => __vitePreload(() => import('./index-BDxipwrC.js'),true?__vite__mapDeps([0,1,2,3]):void 0).then((mod) => mod.CliToolTerminal),
|
|
11539
11542
|
{
|
|
11540
11543
|
loading: () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-xs text-[var(--text-tertiary)]", children: "Loading terminal..." })
|
|
11541
11544
|
}
|
|
@@ -16875,6 +16878,111 @@ const ChatMessage = reactExports.memo(ChatMessageBase, (prev, next) => {
|
|
|
16875
16878
|
});
|
|
16876
16879
|
ChatMessage.displayName = "ChatMessage";
|
|
16877
16880
|
|
|
16881
|
+
const TooltipContext = reactExports.createContext(null);
|
|
16882
|
+
const TooltipProvider = ({
|
|
16883
|
+
children,
|
|
16884
|
+
// These props are accepted for compatibility but not used in this simple implementation
|
|
16885
|
+
delayDuration: _delayDuration,
|
|
16886
|
+
skipDelayDuration: _skipDelayDuration
|
|
16887
|
+
}) => {
|
|
16888
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children });
|
|
16889
|
+
};
|
|
16890
|
+
const Tooltip = ({
|
|
16891
|
+
children,
|
|
16892
|
+
delayDuration = 200
|
|
16893
|
+
}) => {
|
|
16894
|
+
const [open, setOpen] = reactExports.useState(false);
|
|
16895
|
+
const timeoutRef = reactExports.useRef();
|
|
16896
|
+
const handleOpen = reactExports.useCallback(() => {
|
|
16897
|
+
timeoutRef.current = setTimeout(() => {
|
|
16898
|
+
setOpen(true);
|
|
16899
|
+
}, delayDuration);
|
|
16900
|
+
}, [delayDuration]);
|
|
16901
|
+
const handleClose = reactExports.useCallback(() => {
|
|
16902
|
+
if (timeoutRef.current) {
|
|
16903
|
+
clearTimeout(timeoutRef.current);
|
|
16904
|
+
}
|
|
16905
|
+
setOpen(false);
|
|
16906
|
+
}, []);
|
|
16907
|
+
reactExports.useEffect(() => {
|
|
16908
|
+
return () => {
|
|
16909
|
+
if (timeoutRef.current) {
|
|
16910
|
+
clearTimeout(timeoutRef.current);
|
|
16911
|
+
}
|
|
16912
|
+
};
|
|
16913
|
+
}, []);
|
|
16914
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16915
|
+
TooltipContext.Provider,
|
|
16916
|
+
{
|
|
16917
|
+
value: {
|
|
16918
|
+
open,
|
|
16919
|
+
setOpen: (value) => {
|
|
16920
|
+
if (value) {
|
|
16921
|
+
handleOpen();
|
|
16922
|
+
} else {
|
|
16923
|
+
handleClose();
|
|
16924
|
+
}
|
|
16925
|
+
}
|
|
16926
|
+
},
|
|
16927
|
+
children
|
|
16928
|
+
}
|
|
16929
|
+
);
|
|
16930
|
+
};
|
|
16931
|
+
const TooltipTrigger = reactExports.forwardRef(
|
|
16932
|
+
({ className, children, asChild, ...props }, ref) => {
|
|
16933
|
+
const context = reactExports.useContext(TooltipContext);
|
|
16934
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16935
|
+
"div",
|
|
16936
|
+
{
|
|
16937
|
+
ref,
|
|
16938
|
+
className: cn("inline-flex", className),
|
|
16939
|
+
onMouseEnter: () => context?.setOpen(true),
|
|
16940
|
+
onMouseLeave: () => context?.setOpen(false),
|
|
16941
|
+
onFocus: () => context?.setOpen(true),
|
|
16942
|
+
onBlur: () => context?.setOpen(false),
|
|
16943
|
+
...props,
|
|
16944
|
+
children
|
|
16945
|
+
}
|
|
16946
|
+
);
|
|
16947
|
+
}
|
|
16948
|
+
);
|
|
16949
|
+
TooltipTrigger.displayName = "TooltipTrigger";
|
|
16950
|
+
const TooltipContent = reactExports.forwardRef(
|
|
16951
|
+
({ className, side = "top", sideOffset = 4, children, ...props }, ref) => {
|
|
16952
|
+
const context = reactExports.useContext(TooltipContext);
|
|
16953
|
+
if (!context?.open) {
|
|
16954
|
+
return null;
|
|
16955
|
+
}
|
|
16956
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
16957
|
+
"div",
|
|
16958
|
+
{
|
|
16959
|
+
ref,
|
|
16960
|
+
className: cn(
|
|
16961
|
+
"absolute z-[10002] overflow-hidden rounded-soft-sm px-3 py-1.5",
|
|
16962
|
+
"bg-soft-bg-elevated text-soft-text-primary text-sm",
|
|
16963
|
+
"shadow-soft-sm border border-soft-border",
|
|
16964
|
+
"animate-in fade-in-0 zoom-in-95",
|
|
16965
|
+
// Position based on side
|
|
16966
|
+
side === "top" && "bottom-full mb-2",
|
|
16967
|
+
side === "bottom" && "top-full mt-2",
|
|
16968
|
+
side === "left" && "right-full mr-2",
|
|
16969
|
+
side === "right" && "left-full ml-2",
|
|
16970
|
+
className
|
|
16971
|
+
),
|
|
16972
|
+
style: {
|
|
16973
|
+
marginTop: side === "bottom" ? sideOffset : void 0,
|
|
16974
|
+
marginBottom: side === "top" ? sideOffset : void 0,
|
|
16975
|
+
marginLeft: side === "right" ? sideOffset : void 0,
|
|
16976
|
+
marginRight: side === "left" ? sideOffset : void 0
|
|
16977
|
+
},
|
|
16978
|
+
...props,
|
|
16979
|
+
children
|
|
16980
|
+
}
|
|
16981
|
+
);
|
|
16982
|
+
}
|
|
16983
|
+
);
|
|
16984
|
+
TooltipContent.displayName = "TooltipContent";
|
|
16985
|
+
|
|
16878
16986
|
function PlanPanel({
|
|
16879
16987
|
plan,
|
|
16880
16988
|
sessionId,
|
|
@@ -18393,7 +18501,7 @@ function pickGreetingTemplate() {
|
|
|
18393
18501
|
return GREETING_TEMPLATES[index];
|
|
18394
18502
|
}
|
|
18395
18503
|
const VNCViewer = dynamic(
|
|
18396
|
-
() => __vitePreload(() => import('./VNCViewer-
|
|
18504
|
+
() => __vitePreload(() => import('./VNCViewer-CQsKVm3t.js'),true?__vite__mapDeps([4,1,2,5,6,7,8,9,10,11,12,13,14]):void 0).then((mod) => mod.VNCViewer),
|
|
18397
18505
|
{
|
|
18398
18506
|
loading: () => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full w-full items-center justify-center text-sm text-[var(--text-tertiary)]", children: "Loading sandbox view..." })
|
|
18399
18507
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as reactExports, c as copyToClipboard, j as jsxRuntimeExports, k as FileText, l as Search,
|
|
1
|
+
import { r as reactExports, c as copyToClipboard, j as jsxRuntimeExports, k as FileText, l as Search, K as ChartColumn, N as Sparkles, d as Check, e as Copy, b as cn } from './index-DZTZ8mWP.js';
|
|
2
2
|
|
|
3
3
|
const actions = [
|
|
4
4
|
{
|
|
@@ -1,9 +1,24 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { S as SquareCheckBig } from './
|
|
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-
|
|
6
|
-
import
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3
|
-
import { u as useFileContentStore, a as useFileContentLoading } from './file-content-
|
|
4
|
-
import { a as acquireFileSocket } from './file-socket-
|
|
5
|
-
import { c as configureMonacoLoader } from './monaco-
|
|
6
|
-
import { u as useFileDiffOverlay } from './useFileDiffOverlay-
|
|
7
|
-
import { F as FileDiffPanel } from './file-diff-panel-
|
|
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-
|
|
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();
|