@ai-projector/ide 0.0.0-stage → 0.11.0
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 +21 -0
- package/README.md +35 -2
- package/bin/install-desktop +17 -0
- package/bin/install-desktop.cmd +11 -0
- package/bin/projector +22 -0
- package/bin/projector.cmd +11 -0
- package/dist/assets/CodeViewer-BAgvP3Yx.js +1 -0
- package/dist/assets/CodeViewer-QIU6uQDH.css +1 -0
- package/dist/assets/DiscussionView-83kZBzfq.js +2 -0
- package/dist/assets/DiscussionView-kEJZ0OhC.css +1 -0
- package/dist/assets/EditorSettings-CPklwfT-.js +13 -0
- package/dist/assets/EditorSettings-DVhn0sGg.css +1 -0
- package/dist/assets/HtmlViewer-C3Mf1IEK.css +1 -0
- package/dist/assets/HtmlViewer-CGHhO9bM.js +2 -0
- package/dist/assets/ImageViewport-BXN_-Ztv.css +1 -0
- package/dist/assets/ImageViewport-lPITcKgO.js +1 -0
- package/dist/assets/IssueView-CfdeTTKs.js +1 -0
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/assets/MarkdownViewer-3VG5ygRT.css +1 -0
- package/dist/assets/MarkdownViewer-DKZvt6XG.js +2 -0
- package/dist/assets/PullRequestView-Bce3nQML.js +3 -0
- package/dist/assets/PullRequestView-F_M37BOq.css +1 -0
- package/dist/assets/ReleaseView-BKH8Kb3T.css +1 -0
- package/dist/assets/ReleaseView-DO-R7ktE.js +2 -0
- package/dist/assets/SplitPanes-BJR26w00.css +1 -0
- package/dist/assets/SplitPanes-DR126xV8.js +1 -0
- package/dist/assets/SvgViewer-CEIl2Ob2.js +2 -0
- package/dist/assets/SvgViewer-DyAp20sd.css +1 -0
- package/dist/assets/TerminalView-CDAJ5gmT.js +16 -0
- package/dist/assets/TerminalView-DnkOpsvR.css +1 -0
- package/dist/assets/TrackerDetail-CV0Qqzx3.js +1 -0
- package/dist/assets/TrackerDetail-OFp4ONUm.css +1 -0
- package/dist/assets/UiPanel-CND7Qs_n.js +1 -0
- package/dist/assets/UiPanel-CS77nWcC.css +1 -0
- package/dist/assets/UiViewerPage-BOvnLith.css +1 -0
- package/dist/assets/UiViewerPage-z_s1uFHO.js +2 -0
- package/dist/assets/VisualMarkdownEditor-CcbKSvtd.css +1 -0
- package/dist/assets/VisualMarkdownEditor-CwwWF0eb.js +1069 -0
- package/dist/assets/_plugin-vue_export-helper-C4wFX7Eq.js +24 -0
- package/dist/assets/apl-gfMMiTNf.js +1 -0
- package/dist/assets/asciiarmor-C_eisQCp.js +1 -0
- package/dist/assets/asn1-DCl_8MCW.js +1 -0
- package/dist/assets/asterisk-BEn0Cwpx.js +1 -0
- package/dist/assets/brainfuck-D5EjA2JK.js +1 -0
- package/dist/assets/clike-xvONpD0Z.js +1 -0
- package/dist/assets/clojure-BflJGmDX.js +1 -0
- package/dist/assets/cmake-84nbDH0I.js +1 -0
- package/dist/assets/cobol-DHLQUbN7.js +1 -0
- package/dist/assets/coffeescript-De_zI4J0.js +1 -0
- package/dist/assets/commonlisp-DgAKBe0r.js +1 -0
- package/dist/assets/compiler-dom.esm-bundler-B0iuTsih.js +9 -0
- package/dist/assets/crystal-Bl6YKCG_.js +1 -0
- package/dist/assets/css-CnaYoQib.js +1 -0
- package/dist/assets/cypher-p9eYesGn.js +1 -0
- package/dist/assets/d-DWkQyNnU.js +1 -0
- package/dist/assets/diff-ChtP43wD.js +1 -0
- package/dist/assets/dist-23D313r2.js +13 -0
- package/dist/assets/dist-9YLT-RM-.js +11 -0
- package/dist/assets/dist-9guQ6tUS.js +1 -0
- package/dist/assets/dist-B1XyTjRF.js +1 -0
- package/dist/assets/dist-BA_HKdx1.js +2 -0
- package/dist/assets/dist-BVEl6uFx.js +1 -0
- package/dist/assets/dist-B_hKnsNE.js +1 -0
- package/dist/assets/dist-BnsBZm0f.js +1 -0
- package/dist/assets/dist-Br4AY_oy.js +1 -0
- package/dist/assets/dist-BuiJgwGF.js +9 -0
- package/dist/assets/dist-C-1XYtJO.js +1 -0
- package/dist/assets/dist-C1mn-4rn.js +1 -0
- package/dist/assets/dist-CRLdLpSX.js +2 -0
- package/dist/assets/dist-CpgyHBvu.js +1 -0
- package/dist/assets/dist-CrRIwgTS.js +1 -0
- package/dist/assets/dist-CxoUUhWx.js +1 -0
- package/dist/assets/dist-CyRvGpIP.js +1 -0
- package/dist/assets/dist-Dqsd8MyB.js +1 -0
- package/dist/assets/dist-DrZek4TY.js +1 -0
- package/dist/assets/dist-DzAS050M.js +23 -0
- package/dist/assets/dist-NMUsQt1c.js +1 -0
- package/dist/assets/dist-b78ZWHZy.js +1 -0
- package/dist/assets/dist-dwBOnDaY.js +2 -0
- package/dist/assets/dist-gPzXCSJV.js +6 -0
- package/dist/assets/dist-p1Xy77w3.js +1 -0
- package/dist/assets/dist-tNJpR9Y1.js +1 -0
- package/dist/assets/dockerfile-DJkHQgkl.js +1 -0
- package/dist/assets/dtd-DTF72YNO.js +1 -0
- package/dist/assets/dylan-S7ucR4pR.js +1 -0
- package/dist/assets/ebnf-D4c0_ac3.js +1 -0
- package/dist/assets/ecl-BVIeWmwY.js +1 -0
- package/dist/assets/editor-theme-DuQQ8n56.js +1 -0
- package/dist/assets/eiffel-BEjRio4Q.js +1 -0
- package/dist/assets/elm-Cshzl8qu.js +1 -0
- package/dist/assets/erlang-BV0c4Hdn.js +1 -0
- package/dist/assets/events.worker-C2Opu9Sc.js +1 -0
- package/dist/assets/external-link-BFTqPI03.js +1 -0
- package/dist/assets/factor-LKH5gN8L.js +1 -0
- package/dist/assets/fcl-ClOhbFR7.js +1 -0
- package/dist/assets/forth-D6RzAl64.js +1 -0
- package/dist/assets/fortran-Bt6PBEDR.js +1 -0
- package/dist/assets/gas-BHEdbvp9.js +1 -0
- package/dist/assets/gherkin-oBAE_ms0.js +1 -0
- package/dist/assets/github-emoji-C2UmmDoA.js +169 -0
- package/dist/assets/github-emoji-qJihbtN6.css +1 -0
- package/dist/assets/groovy-CUrWKPia.js +1 -0
- package/dist/assets/haskell-BRsoo5mP.js +1 -0
- package/dist/assets/haxe-DjVOVvNP.js +1 -0
- package/dist/assets/http-CLVgA2GD.js +1 -0
- package/dist/assets/hub-rvbmNftk.js +1 -0
- package/dist/assets/idl-BUZw3wgd.js +1 -0
- package/dist/assets/javascript-lS2r2ifg.js +1 -0
- package/dist/assets/julia-CQfgDRfP.js +1 -0
- package/dist/assets/livescript-BXxG0Yva.js +1 -0
- package/dist/assets/lua-DPCEkfD_.js +1 -0
- package/dist/assets/main-CgMl4Qjs.css +1 -0
- package/dist/assets/main-DEEGhxlk.js +186 -0
- package/dist/assets/mathematica-u8YMmbU0.js +1 -0
- package/dist/assets/mbox-BEMVcqjs.js +1 -0
- package/dist/assets/mirc-C9zpzAZU.js +1 -0
- package/dist/assets/mllike-B45xgp2S.js +1 -0
- package/dist/assets/modelica-CqHI_q-D.js +1 -0
- package/dist/assets/mscgen-qgSLujhx.js +1 -0
- package/dist/assets/mumps-BSzj6Xyz.js +1 -0
- package/dist/assets/nginx-C-ORUuei.js +1 -0
- package/dist/assets/nsis-viPvXFiq.js +1 -0
- package/dist/assets/ntriples-CzMBulkp.js +1 -0
- package/dist/assets/octave-D2Q8cUp1.js +1 -0
- package/dist/assets/oz-BwTct_5T.js +1 -0
- package/dist/assets/pascal-Dp_KdFgX.js +1 -0
- package/dist/assets/perl-BkSkiI9m.js +1 -0
- package/dist/assets/pig-AF4Hwhju.js +1 -0
- package/dist/assets/powershell-D8WpQPaX.js +1 -0
- package/dist/assets/preload-helper-BLdHbfdN.js +1 -0
- package/dist/assets/properties-C357ku5U.js +1 -0
- package/dist/assets/protobuf-D1ij_kNL.js +1 -0
- package/dist/assets/pug-BqCHZ5xT.js +1 -0
- package/dist/assets/puppet-BZyAS7I4.js +1 -0
- package/dist/assets/python-B_1Jd8HM.js +1 -0
- package/dist/assets/q-B9NhS7L_.js +1 -0
- package/dist/assets/r-CxDmU1I4.js +1 -0
- package/dist/assets/rpm-gpDK5sbt.js +1 -0
- package/dist/assets/ruby-ChfNwlCY.js +1 -0
- package/dist/assets/sas-C2OyD2Y6.js +1 -0
- package/dist/assets/scheme-D9qYN0V5.js +1 -0
- package/dist/assets/shared.esm-bundler-EUzHGNqQ.js +2 -0
- package/dist/assets/shared.worker-DpKROrNH.js +1 -0
- package/dist/assets/shell-DwuoZtxw.js +1 -0
- package/dist/assets/sieve-tLWDfEkZ.js +1 -0
- package/dist/assets/simple-mode-DXiLM1-G.js +1 -0
- package/dist/assets/smalltalk-BLp5-jwC.js +1 -0
- package/dist/assets/solr-B78wSQJQ.js +1 -0
- package/dist/assets/sparql-Dz-mlCAC.js +1 -0
- package/dist/assets/spreadsheet-CTIncYxj.js +1 -0
- package/dist/assets/sql-DuQMFDvy.js +1 -0
- package/dist/assets/stex-DNzd62Q_.js +1 -0
- package/dist/assets/styles-C07CLvbW.js +2 -0
- package/dist/assets/styles-CX3Ni7dk.css +1 -0
- package/dist/assets/stylus-BOVgKnng.js +1 -0
- package/dist/assets/swift-DKB6_1j6.js +1 -0
- package/dist/assets/tcl-BGfruO1u.js +1 -0
- package/dist/assets/textile-C4jVoHG1.js +1 -0
- package/dist/assets/tiddlywiki-VlUiK86J.js +1 -0
- package/dist/assets/tiki-CvUEFusT.js +1 -0
- package/dist/assets/toml-BPTmHmyx.js +1 -0
- package/dist/assets/troff-C2dAgh7P.js +1 -0
- package/dist/assets/ttcn-PPSTk1ow.js +1 -0
- package/dist/assets/ttcn-cfg-2b4Gb5sE.js +1 -0
- package/dist/assets/turtle-Cx3rYX2g.js +1 -0
- package/dist/assets/vb-BthdM_4N.js +1 -0
- package/dist/assets/vbscript-D9f6rSsU.js +1 -0
- package/dist/assets/velocity-CqftRsjg.js +1 -0
- package/dist/assets/verilog-CjI9Y6RI.js +1 -0
- package/dist/assets/vhdl-kS471soi.js +1 -0
- package/dist/assets/webidl-D5jiJvOU.js +1 -0
- package/dist/assets/xquery-BKJx4mf9.js +1 -0
- package/dist/assets/yacas-CXXgtw0p.js +1 -0
- package/dist/assets/z80-Co3PbHdE.js +1 -0
- package/dist/favicon.svg +5 -0
- package/dist/file-icons/LICENSE-lucide.txt +43 -0
- package/dist/file-icons/NOTICE.md +8 -0
- package/dist/file-icons/icons/archive.svg +1 -0
- package/dist/file-icons/icons/assets.svg +1 -0
- package/dist/file-icons/icons/audio.svg +1 -0
- package/dist/file-icons/icons/c.svg +1 -0
- package/dist/file-icons/icons/components.svg +1 -0
- package/dist/file-icons/icons/config.svg +1 -0
- package/dist/file-icons/icons/cpp.svg +1 -0
- package/dist/file-icons/icons/css.svg +1 -0
- package/dist/file-icons/icons/database.svg +1 -0
- package/dist/file-icons/icons/docker.svg +1 -0
- package/dist/file-icons/icons/env.svg +1 -0
- package/dist/file-icons/icons/executable.svg +1 -0
- package/dist/file-icons/icons/file.svg +1 -0
- package/dist/file-icons/icons/folder-open.svg +1 -0
- package/dist/file-icons/icons/folder.svg +1 -0
- package/dist/file-icons/icons/font.svg +1 -0
- package/dist/file-icons/icons/git.svg +1 -0
- package/dist/file-icons/icons/go.svg +1 -0
- package/dist/file-icons/icons/graphql.svg +1 -0
- package/dist/file-icons/icons/html.svg +1 -0
- package/dist/file-icons/icons/ignore.svg +1 -0
- package/dist/file-icons/icons/image.svg +1 -0
- package/dist/file-icons/icons/java.svg +1 -0
- package/dist/file-icons/icons/javascript.svg +1 -0
- package/dist/file-icons/icons/json.svg +1 -0
- package/dist/file-icons/icons/kotlin.svg +1 -0
- package/dist/file-icons/icons/license.svg +1 -0
- package/dist/file-icons/icons/lock.svg +1 -0
- package/dist/file-icons/icons/markdown.svg +1 -0
- package/dist/file-icons/icons/package.svg +1 -0
- package/dist/file-icons/icons/php.svg +1 -0
- package/dist/file-icons/icons/python.svg +1 -0
- package/dist/file-icons/icons/react.svg +1 -0
- package/dist/file-icons/icons/ruby.svg +1 -0
- package/dist/file-icons/icons/rust.svg +1 -0
- package/dist/file-icons/icons/sass.svg +1 -0
- package/dist/file-icons/icons/shell.svg +1 -0
- package/dist/file-icons/icons/source.svg +1 -0
- package/dist/file-icons/icons/svelte.svg +1 -0
- package/dist/file-icons/icons/swift.svg +1 -0
- package/dist/file-icons/icons/tests.svg +1 -0
- package/dist/file-icons/icons/toml.svg +1 -0
- package/dist/file-icons/icons/typescript.svg +1 -0
- package/dist/file-icons/icons/video.svg +1 -0
- package/dist/file-icons/icons/vite.svg +1 -0
- package/dist/file-icons/icons/vue.svg +1 -0
- package/dist/file-icons/icons/yaml.svg +1 -0
- package/dist/file-icons/theme.json +572 -0
- package/dist/file-icons/theme.schema.json +137 -0
- package/dist/github.svg +1 -0
- package/dist/gitlab.svg +1 -0
- package/dist/hub.html +19 -0
- package/dist/icons/apple-touch-icon.png +0 -0
- package/dist/icons/icon-192.png +0 -0
- package/dist/icons/icon-512.png +0 -0
- package/dist/icons/maskable-512.png +0 -0
- package/dist/index.html +39 -0
- package/dist/manifest.webmanifest +37 -0
- package/dist/sw.js +81 -0
- package/package.json +61 -3
- package/packages/cli/app/agent-host.js +163 -0
- package/packages/cli/app/desktop.js +77 -0
- package/packages/cli/app/fix-node-pty.js +52 -0
- package/packages/cli/app/import-companion-key.js +57 -0
- package/packages/cli/app/install-desktop.js +4 -0
- package/packages/cli/app/launch.js +134 -0
- package/packages/cli/app/restart.js +32 -0
- package/packages/cli/commands/logs.js +10 -0
- package/packages/cli/commands/open.js +49 -0
- package/packages/cli/commands/projects.js +18 -0
- package/packages/cli/commands/run.js +39 -0
- package/packages/cli/commands/search.js +19 -0
- package/packages/cli/commands/server.js +32 -0
- package/packages/cli/commands/status.js +42 -0
- package/packages/cli/common/output.js +13 -0
- package/packages/cli/modules/api/index.js +60 -0
- package/packages/cli/modules/arguments/index.js +188 -0
- package/packages/cli/modules/command-runtime/index.js +24 -0
- package/packages/cli/modules/projects/index.js +118 -0
- package/packages/cli/modules/server/index.js +226 -0
- package/packages/cli/modules/server-process/index.js +204 -0
- package/packages/core/modules/agent-features/index.js +8 -0
- package/packages/core/modules/agent-judge/index.js +73 -0
- package/packages/core/modules/agent-read/index.js +25 -0
- package/packages/core/modules/agent-role/index.js +187 -0
- package/packages/core/modules/agent-task/contract.js +34 -0
- package/packages/core/modules/agent-task/index.js +1 -0
- package/packages/core/modules/agent-widgets/bars/index.js +11 -0
- package/packages/core/modules/agent-widgets/button/index.js +19 -0
- package/packages/core/modules/agent-widgets/card/index.js +13 -0
- package/packages/core/modules/agent-widgets/checks/index.js +19 -0
- package/packages/core/modules/agent-widgets/chips/index.js +15 -0
- package/packages/core/modules/agent-widgets/columns/index.js +12 -0
- package/packages/core/modules/agent-widgets/donut/index.js +11 -0
- package/packages/core/modules/agent-widgets/field/index.js +39 -0
- package/packages/core/modules/agent-widgets/form/index.js +18 -0
- package/packages/core/modules/agent-widgets/git-info/index.js +29 -0
- package/packages/core/modules/agent-widgets/image/index.js +22 -0
- package/packages/core/modules/agent-widgets/inline-icon/index.js +45 -0
- package/packages/core/modules/agent-widgets/input/index.js +16 -0
- package/packages/core/modules/agent-widgets/intelligent-form/index.js +32 -0
- package/packages/core/modules/agent-widgets/line/index.js +12 -0
- package/packages/core/modules/agent-widgets/row/index.js +11 -0
- package/packages/core/modules/agent-widgets/safe-secret-show/index.js +21 -0
- package/packages/core/modules/agent-widgets/slider/index.js +18 -0
- package/packages/core/modules/agent-widgets/stat/index.js +16 -0
- package/packages/core/modules/agent-widgets/steps/index.js +14 -0
- package/packages/core/modules/agent-widgets/tab/index.js +12 -0
- package/packages/core/modules/agent-widgets/tabs/index.js +24 -0
- package/packages/core/modules/agents-integration/claude/index.js +1 -0
- package/packages/core/modules/agents-integration/codex/index.js +1 -0
- package/packages/core/modules/agents-integration/cursor/index.js +1 -0
- package/packages/core/modules/agents-integration/kimi/index.js +1 -0
- package/packages/core/modules/agents-integration/opencode/index.js +1 -0
- package/packages/core/modules/app-paths/index.js +14 -0
- package/packages/core/modules/app-paths/logs.js +194 -0
- package/packages/core/modules/app-paths/network-mode.js +24 -0
- package/packages/core/modules/app-paths/paths.js +40 -0
- package/packages/core/modules/app-paths/server-mode.js +18 -0
- package/packages/core/modules/appearance/index.js +35 -0
- package/packages/core/modules/browser/index.js +86 -0
- package/packages/core/modules/devcontainer/classify.js +101 -0
- package/packages/core/modules/devcontainer/contract.js +1 -0
- package/packages/core/modules/devcontainer/index.js +1 -0
- package/packages/core/modules/directories/contract.js +1 -0
- package/packages/core/modules/directories/index.js +1 -0
- package/packages/core/modules/docker/contract.js +1 -0
- package/packages/core/modules/docker/index.js +1 -0
- package/packages/core/modules/editor-themes/index.js +17 -0
- package/packages/core/modules/environment/index.js +1 -0
- package/packages/core/modules/file-icons/contract.js +177 -0
- package/packages/core/modules/file-icons/index.js +1 -0
- package/packages/core/modules/github/index.js +23 -0
- package/packages/core/modules/gitlab/index.js +164 -0
- package/packages/core/modules/hub/index.js +1 -0
- package/packages/core/modules/hub/protocol.js +19 -0
- package/packages/core/modules/ide/agent-command.js +48 -0
- package/packages/core/modules/ide/command-help.js +73 -0
- package/packages/core/modules/ide/commands.js +191 -0
- package/packages/core/modules/ide/index.js +6 -0
- package/packages/core/modules/ide/keybinding-editor.js +34 -0
- package/packages/core/modules/ide/keybindings.js +45 -0
- package/packages/core/modules/ide/palette.js +33 -0
- package/packages/core/modules/ide/safety.js +10 -0
- package/packages/core/modules/launcher/actions.js +5 -0
- package/packages/core/modules/launcher/index.js +5 -0
- package/packages/core/modules/launcher/launcher-model.js +236 -0
- package/packages/core/modules/launcher/launcher.js +76 -0
- package/packages/core/modules/launcher/query.js +42 -0
- package/packages/core/modules/network-mode/index.js +3 -0
- package/packages/core/modules/network-mode/network-mode.js +8 -0
- package/packages/core/modules/os/bash.js +11 -0
- package/packages/core/modules/os/contract.js +1 -0
- package/packages/core/modules/os/index.js +3 -0
- package/packages/core/modules/os/modules/darwin/catalog.js +108 -0
- package/packages/core/modules/os/modules/darwin/directories.js +40 -0
- package/packages/core/modules/os/modules/darwin/docker.js +15 -0
- package/packages/core/modules/os/modules/darwin/gtk.js +6 -0
- package/packages/core/modules/os/modules/darwin/helper.swift +172 -0
- package/packages/core/modules/os/modules/darwin/index.js +12 -0
- package/packages/core/modules/os/modules/darwin/install-desktop.js +135 -0
- package/packages/core/modules/os/modules/darwin/processes.js +97 -0
- package/packages/core/modules/os/modules/darwin/resident.js +235 -0
- package/packages/core/modules/os/modules/darwin/secrets.js +53 -0
- package/packages/core/modules/os/modules/darwin/shell.js +105 -0
- package/packages/core/modules/os/modules/darwin/shortcut.js +61 -0
- package/packages/core/modules/os/modules/darwin/tools.js +52 -0
- package/packages/core/modules/os/modules/darwin/windows.js +135 -0
- package/packages/core/modules/os/modules/linux/bus.js +48 -0
- package/packages/core/modules/os/modules/linux/catalog.js +47 -0
- package/packages/core/modules/os/modules/linux/directories.js +49 -0
- package/packages/core/modules/os/modules/linux/docker.js +48 -0
- package/packages/core/modules/os/modules/linux/index.js +53 -0
- package/packages/core/modules/os/modules/linux/install-desktop.js +66 -0
- package/packages/core/modules/os/modules/linux/processes.js +85 -0
- package/packages/core/modules/os/modules/linux/resident.js +139 -0
- package/packages/core/modules/os/modules/linux/secrets.js +118 -0
- package/packages/core/modules/os/modules/linux/shortcut.js +124 -0
- package/packages/core/modules/os/modules/linux/tools.js +14 -0
- package/packages/core/modules/os/modules/linux/tray.js +190 -0
- package/packages/core/modules/os/modules/linux/windows.js +187 -0
- package/packages/core/modules/os/modules/windows/agent-process.js +60 -0
- package/packages/core/modules/os/modules/windows/alert.js +20 -0
- package/packages/core/modules/os/modules/windows/catalog.js +91 -0
- package/packages/core/modules/os/modules/windows/color-scheme.js +26 -0
- package/packages/core/modules/os/modules/windows/directories.js +101 -0
- package/packages/core/modules/os/modules/windows/docker.js +17 -0
- package/packages/core/modules/os/modules/windows/git.js +42 -0
- package/packages/core/modules/os/modules/windows/hwnd.js +275 -0
- package/packages/core/modules/os/modules/windows/index.js +28 -0
- package/packages/core/modules/os/modules/windows/install-desktop.js +140 -0
- package/packages/core/modules/os/modules/windows/kill-tree.js +26 -0
- package/packages/core/modules/os/modules/windows/processes.js +300 -0
- package/packages/core/modules/os/modules/windows/ps.js +73 -0
- package/packages/core/modules/os/modules/windows/resident-pipe.js +206 -0
- package/packages/core/modules/os/modules/windows/resident.js +286 -0
- package/packages/core/modules/os/modules/windows/secrets.js +110 -0
- package/packages/core/modules/os/modules/windows/shell.js +288 -0
- package/packages/core/modules/os/modules/windows/shortcut.js +82 -0
- package/packages/core/modules/os/modules/windows/tools.js +273 -0
- package/packages/core/modules/os/modules/windows/windows.js +133 -0
- package/packages/core/modules/os/os.js +175 -0
- package/packages/core/modules/os/session-env.js +11 -0
- package/packages/core/modules/os-posix/agent-process.js +105 -0
- package/packages/core/modules/os-posix/contract.js +1 -0
- package/packages/core/modules/os-posix/git.js +26 -0
- package/packages/core/modules/os-posix/index.js +4 -0
- package/packages/core/modules/os-posix/tools.js +258 -0
- package/packages/core/modules/os-posix/xdg.js +8 -0
- package/packages/core/modules/project/contract.js +1 -0
- package/packages/core/modules/project/index.js +1 -0
- package/packages/core/modules/project/ref.js +126 -0
- package/packages/core/modules/server-mode/index.js +3 -0
- package/packages/core/modules/server-mode/server-mode.js +13 -0
- package/packages/core/modules/terminal/contract.js +1 -0
- package/packages/core/modules/terminal/index.js +1 -0
- package/packages/core/modules/usage-analytics/index.js +80 -0
- package/packages/core/modules/widget-catalog/guide.js +76 -0
- package/packages/core/modules/widget-catalog/index.js +219 -0
- package/packages/core/modules/workspace/changes.js +114 -0
- package/packages/core/modules/workspace/contract.js +1 -0
- package/packages/core/modules/workspace/file-size.js +12 -0
- package/packages/core/modules/workspace/files-exclude.js +119 -0
- package/packages/core/modules/workspace/git-decorations.js +4 -0
- package/packages/core/modules/workspace/git-graph.js +35 -0
- package/packages/core/modules/workspace/index.js +11 -0
- package/packages/core/modules/workspace/paths.js +16 -0
- package/packages/core/modules/workspace/pipeline-status.js +86 -0
- package/packages/core/modules/workspace/pull-requests.js +1 -0
- package/packages/core/modules/workspace/pull-status.js +56 -0
- package/packages/core/modules/workspace/scope.js +34 -0
- package/packages/core/modules/workspace/search.js +28 -0
- package/packages/core/modules/workspace/tree-page.js +25 -0
- package/packages/server/app/agents.js +30 -0
- package/packages/server/app/api.js +159 -0
- package/packages/server/app/claude-runner.js +17 -0
- package/packages/server/app/dev-plugin.js +76 -0
- package/packages/server/app/dev-runtime.js +119 -0
- package/packages/server/app/features.js +35 -0
- package/packages/server/app/plugin.js +140 -0
- package/packages/server/app/projector-runner.js +15 -0
- package/packages/server/app/runtime-contract.js +1 -0
- package/packages/server/app/standalone.js +42 -0
- package/packages/server/app/static.js +57 -0
- package/packages/server/app/widgets-mcp.js +36 -0
- package/packages/server/app/widgets.js +54 -0
- package/packages/server/middlewares/local-origin.js +4 -0
- package/packages/server/modules/access/access.js +118 -0
- package/packages/server/modules/access/connections.js +36 -0
- package/packages/server/modules/access/http.js +93 -0
- package/packages/server/modules/access/hub.js +19 -0
- package/packages/server/modules/access/index.js +6 -0
- package/packages/server/modules/access/lan-url.js +21 -0
- package/packages/server/modules/access/password.js +68 -0
- package/packages/server/modules/access/session.js +38 -0
- package/packages/server/modules/agent/agent-host.js +46 -0
- package/packages/server/modules/agent/agent-runs.js +162 -0
- package/packages/server/modules/agent/attachments.js +88 -0
- package/packages/server/modules/agent/backend.js +1 -0
- package/packages/server/modules/agent/chat-archive.js +67 -0
- package/packages/server/modules/agent/command-bridge.js +94 -0
- package/packages/server/modules/agent/controls.js +10 -0
- package/packages/server/modules/agent/event-streams.js +40 -0
- package/packages/server/modules/agent/history-store.js +320 -0
- package/packages/server/modules/agent/history.js +160 -0
- package/packages/server/modules/agent/hosted-process.js +279 -0
- package/packages/server/modules/agent/hosted-run.js +85 -0
- package/packages/server/modules/agent/hosted-runner.js +126 -0
- package/packages/server/modules/agent/index.js +35 -0
- package/packages/server/modules/agent/injection.js +14 -0
- package/packages/server/modules/agent/jobs-diff.js +114 -0
- package/packages/server/modules/agent/jobs-files.js +65 -0
- package/packages/server/modules/agent/jobs-followup.js +66 -0
- package/packages/server/modules/agent/jobs-live.js +180 -0
- package/packages/server/modules/agent/jobs-store.js +59 -0
- package/packages/server/modules/agent/jobs-worktree.js +161 -0
- package/packages/server/modules/agent/jobs.js +316 -0
- package/packages/server/modules/agent/judge-store.js +21 -0
- package/packages/server/modules/agent/lens-request.js +34 -0
- package/packages/server/modules/agent/queue-store.js +21 -0
- package/packages/server/modules/agent/recent-chats.js +63 -0
- package/packages/server/modules/agent/registry.js +108 -0
- package/packages/server/modules/agent/replay.js +84 -0
- package/packages/server/modules/agent/request.js +132 -0
- package/packages/server/modules/agent/role-store.js +21 -0
- package/packages/server/modules/agent/run-hub.js +105 -0
- package/packages/server/modules/agent/run-request.js +208 -0
- package/packages/server/modules/agent/secret-show.js +108 -0
- package/packages/server/modules/agent/side-request.js +142 -0
- package/packages/server/modules/agent/usage-history.js +62 -0
- package/packages/server/modules/agent/worktrees.js +136 -0
- package/packages/server/modules/agent-features/catalog.js +18 -0
- package/packages/server/modules/agent-features/index.js +2 -0
- package/packages/server/modules/agent-features/store.js +172 -0
- package/packages/server/modules/agent-mcp/index.js +106 -0
- package/packages/server/modules/agent-roles/index.js +3 -0
- package/packages/server/modules/agent-roles/project.js +231 -0
- package/packages/server/modules/agent-roles/runtime.js +68 -0
- package/packages/server/modules/agent-roles/store.js +190 -0
- package/packages/server/modules/agents/acp/acp-backend.js +320 -0
- package/packages/server/modules/agents/acp/acp-client.js +153 -0
- package/packages/server/modules/agents/acp/acp-controls.js +179 -0
- package/packages/server/modules/agents/acp/acp-dialect.js +82 -0
- package/packages/server/modules/agents/acp/acp-elicitation.js +135 -0
- package/packages/server/modules/agents/acp/acp-events.js +340 -0
- package/packages/server/modules/agents/acp/acp-process.js +78 -0
- package/packages/server/modules/agents/acp/acp-programs.js +11 -0
- package/packages/server/modules/agents/acp/acp-tools.js +208 -0
- package/packages/server/modules/agents/acp/index.js +4 -0
- package/packages/server/modules/agents/acp/mcp-config.js +100 -0
- package/packages/server/modules/agents/claude-code/claude-code-backend.js +342 -0
- package/packages/server/modules/agents/claude-code/claude-code-checkpoints.js +97 -0
- package/packages/server/modules/agents/claude-code/claude-code-env.js +46 -0
- package/packages/server/modules/agents/claude-code/claude-code-events.js +299 -0
- package/packages/server/modules/agents/claude-code/claude-code-input.js +97 -0
- package/packages/server/modules/agents/claude-code/claude-code-replay.js +71 -0
- package/packages/server/modules/agents/claude-code/claude-code-sessions.js +207 -0
- package/packages/server/modules/agents/claude-code/claude-code-times.js +42 -0
- package/packages/server/modules/agents/claude-code/index.js +2 -0
- package/packages/server/modules/agents/claude-code/questions.js +51 -0
- package/packages/server/modules/agents/codex/dialect.js +130 -0
- package/packages/server/modules/agents/codex/forms.js +24 -0
- package/packages/server/modules/agents/codex/index.js +17 -0
- package/packages/server/modules/agents/cursor/dialect.js +66 -0
- package/packages/server/modules/agents/cursor/images.js +12 -0
- package/packages/server/modules/agents/cursor/index.js +30 -0
- package/packages/server/modules/agents/cursor/plan.js +44 -0
- package/packages/server/modules/agents/cursor/questions.js +37 -0
- package/packages/server/modules/agents/cursor/selection.js +29 -0
- package/packages/server/modules/agents/cursor/task.js +32 -0
- package/packages/server/modules/agents/cursor/todos.js +69 -0
- package/packages/server/modules/agents/ide-mcp/config.js +40 -0
- package/packages/server/modules/agents/ide-mcp/index.js +1 -0
- package/packages/server/modules/agents/ide-mcp/server.js +154 -0
- package/packages/server/modules/agents/kimi/dialect.js +18 -0
- package/packages/server/modules/agents/kimi/index.js +11 -0
- package/packages/server/modules/agents/opencode/dialect.js +232 -0
- package/packages/server/modules/agents/opencode/index.js +21 -0
- package/packages/server/modules/agents/opencode/read.js +46 -0
- package/packages/server/modules/agents/opencode/sessions.js +69 -0
- package/packages/server/modules/agents/projector/agent-lens.js +110 -0
- package/packages/server/modules/agents/projector/agent-tools.js +290 -0
- package/packages/server/modules/agents/projector/answer-doctor.js +32 -0
- package/packages/server/modules/agents/projector/form-doctor.js +33 -0
- package/packages/server/modules/agents/projector/index.js +12 -0
- package/packages/server/modules/agents/projector/project-instructions.js +34 -0
- package/packages/server/modules/agents/projector/projector-backend.js +350 -0
- package/packages/server/modules/agents/projector/projector-budget.js +70 -0
- package/packages/server/modules/agents/projector/projector-compaction.js +128 -0
- package/packages/server/modules/agents/projector/projector-controls.js +70 -0
- package/packages/server/modules/agents/projector/projector-guard.js +196 -0
- package/packages/server/modules/agents/projector/projector-history.js +87 -0
- package/packages/server/modules/agents/projector/projector-hooks.js +201 -0
- package/packages/server/modules/agents/projector/projector-input.js +40 -0
- package/packages/server/modules/agents/projector/projector-mcp-config.js +1 -0
- package/packages/server/modules/agents/projector/projector-mcp.js +119 -0
- package/packages/server/modules/agents/projector/projector-memory.js +92 -0
- package/packages/server/modules/agents/projector/projector-retry.js +52 -0
- package/packages/server/modules/agents/projector/projector-review.js +40 -0
- package/packages/server/modules/agents/projector/projector-side.js +56 -0
- package/packages/server/modules/agents/projector/projector-skills.js +143 -0
- package/packages/server/modules/agents/projector/projector-task.js +235 -0
- package/packages/server/modules/agents/projector/projector-usage.js +19 -0
- package/packages/server/modules/agents/projector/projector-web-search.js +76 -0
- package/packages/server/modules/agents/projector/projector-web.js +172 -0
- package/packages/server/modules/agents/projector/prompts.js +46 -0
- package/packages/server/modules/agents/projector/secrets/secret-destination.js +226 -0
- package/packages/server/modules/agents/projector/secrets/secret-show.js +23 -0
- package/packages/server/modules/agents/projector/secrets/secret-tools.js +124 -0
- package/packages/server/modules/agents/projector/tool-spec.js +4 -0
- package/packages/server/modules/agents/projector/tool-specs.js +167 -0
- package/packages/server/modules/agents/projector/widgets.js +4 -0
- package/packages/server/modules/agents/widgets-mcp/config.js +34 -0
- package/packages/server/modules/agents/widgets-mcp/index.js +1 -0
- package/packages/server/modules/agents-integration/_/usage-cache.js +19 -0
- package/packages/server/modules/agents-integration/claude/client.js +33 -0
- package/packages/server/modules/agents-integration/claude/index.js +1 -0
- package/packages/server/modules/agents-integration/claude/usage.js +49 -0
- package/packages/server/modules/agents-integration/codex/cli.js +86 -0
- package/packages/server/modules/agents-integration/codex/index.js +1 -0
- package/packages/server/modules/agents-integration/codex/usage.js +45 -0
- package/packages/server/modules/agents-integration/cursor/client.js +40 -0
- package/packages/server/modules/agents-integration/cursor/credentials.js +34 -0
- package/packages/server/modules/agents-integration/cursor/index.js +1 -0
- package/packages/server/modules/agents-integration/cursor/usage.js +59 -0
- package/packages/server/modules/agents-integration/kimi/client.js +48 -0
- package/packages/server/modules/agents-integration/kimi/credential-config.js +167 -0
- package/packages/server/modules/agents-integration/kimi/credentials.js +261 -0
- package/packages/server/modules/agents-integration/kimi/index.js +1 -0
- package/packages/server/modules/agents-integration/kimi/usage.js +149 -0
- package/packages/server/modules/agents-integration/opencode/client.js +30 -0
- package/packages/server/modules/agents-integration/opencode/credentials.js +36 -0
- package/packages/server/modules/agents-integration/opencode/index.js +1 -0
- package/packages/server/modules/agents-integration/opencode/usage.js +47 -0
- package/packages/server/modules/appearance/index.js +38 -0
- package/packages/server/modules/browser/cookies.js +112 -0
- package/packages/server/modules/browser/guard.js +55 -0
- package/packages/server/modules/browser/index.js +2 -0
- package/packages/server/modules/browser/key.js +34 -0
- package/packages/server/modules/browser/proxy.js +255 -0
- package/packages/server/modules/browser/rewrite.js +82 -0
- package/packages/server/modules/devcontainer/discovery.js +85 -0
- package/packages/server/modules/devcontainer/exec.js +81 -0
- package/packages/server/modules/devcontainer/index.js +4 -0
- package/packages/server/modules/devcontainer/launch.js +51 -0
- package/packages/server/modules/devcontainer/state.js +68 -0
- package/packages/server/modules/devcontainer/trust.js +41 -0
- package/packages/server/modules/directories/directories.js +34 -0
- package/packages/server/modules/directories/index.js +1 -0
- package/packages/server/modules/docker/actions.js +121 -0
- package/packages/server/modules/docker/daemon.js +72 -0
- package/packages/server/modules/docker/index.js +4 -0
- package/packages/server/modules/docker/settings.js +127 -0
- package/packages/server/modules/docker/snapshot.js +105 -0
- package/packages/server/modules/environments/execution.js +125 -0
- package/packages/server/modules/environments/index.js +3 -0
- package/packages/server/modules/environments/reconcile.js +62 -0
- package/packages/server/modules/environments/settings.js +58 -0
- package/packages/server/modules/events/implementation.js +85 -0
- package/packages/server/modules/events/index.js +1 -0
- package/packages/server/modules/folder-picker/index.js +1 -0
- package/packages/server/modules/folder-picker/pick-folder.js +2 -0
- package/packages/server/modules/git-import/clone.js +47 -0
- package/packages/server/modules/git-import/container.js +57 -0
- package/packages/server/modules/git-import/import.js +82 -0
- package/packages/server/modules/git-import/index.js +4 -0
- package/packages/server/modules/git-import/jobs.js +68 -0
- package/packages/server/modules/github/api.js +260 -0
- package/packages/server/modules/github/browser.js +185 -0
- package/packages/server/modules/github/clone.js +55 -0
- package/packages/server/modules/github/container.js +15 -0
- package/packages/server/modules/github/discussions.js +141 -0
- package/packages/server/modules/github/emojis.js +14 -0
- package/packages/server/modules/github/history.js +205 -0
- package/packages/server/modules/github/index.js +11 -0
- package/packages/server/modules/github/issues.js +81 -0
- package/packages/server/modules/github/navigation.js +35 -0
- package/packages/server/modules/github/pipelines.js +266 -0
- package/packages/server/modules/github/pulls.js +111 -0
- package/packages/server/modules/github/releases.js +241 -0
- package/packages/server/modules/gitlab/api.js +257 -0
- package/packages/server/modules/gitlab/base.js +24 -0
- package/packages/server/modules/gitlab/blob-search.js +110 -0
- package/packages/server/modules/gitlab/browser.js +296 -0
- package/packages/server/modules/gitlab/clone.js +78 -0
- package/packages/server/modules/gitlab/compare.js +68 -0
- package/packages/server/modules/gitlab/connection.js +55 -0
- package/packages/server/modules/gitlab/container.js +15 -0
- package/packages/server/modules/gitlab/history.js +127 -0
- package/packages/server/modules/gitlab/icon.js +67 -0
- package/packages/server/modules/gitlab/index.js +14 -0
- package/packages/server/modules/gitlab/issues.js +61 -0
- package/packages/server/modules/gitlab/merge-requests.js +287 -0
- package/packages/server/modules/gitlab/navigation.js +187 -0
- package/packages/server/modules/gitlab/oauth.js +250 -0
- package/packages/server/modules/gitlab/pipelines.js +240 -0
- package/packages/server/modules/gitlab/releases.js +226 -0
- package/packages/server/modules/gitlab/search.js +75 -0
- package/packages/server/modules/gitlab/trackers.js +96 -0
- package/packages/server/modules/http/download.js +50 -0
- package/packages/server/modules/http/http.js +8 -0
- package/packages/server/modules/http/index.js +2 -0
- package/packages/server/modules/hub/connector.js +114 -0
- package/packages/server/modules/hub/hub.js +142 -0
- package/packages/server/modules/hub/index.js +1 -0
- package/packages/server/modules/ide/editor-settings.js +37 -0
- package/packages/server/modules/ide/index.js +3 -0
- package/packages/server/modules/ide/keybindings.js +37 -0
- package/packages/server/modules/ide/mcp-bridge.js +150 -0
- package/packages/server/modules/instance/index.js +2 -0
- package/packages/server/modules/instance/instance.js +50 -0
- package/packages/server/modules/integration-store/index.js +2 -0
- package/packages/server/modules/integration-store/list.js +12 -0
- package/packages/server/modules/integration-store/store.js +141 -0
- package/packages/server/modules/judge/approval.js +35 -0
- package/packages/server/modules/judge/index.js +3 -0
- package/packages/server/modules/judge/settings.js +35 -0
- package/packages/server/modules/judge/verdict.js +141 -0
- package/packages/server/modules/launcher/browse.js +29 -0
- package/packages/server/modules/launcher/folders.js +138 -0
- package/packages/server/modules/launcher/hosted-search.js +43 -0
- package/packages/server/modules/launcher/index.js +12 -0
- package/packages/server/modules/launcher/launcher.js +352 -0
- package/packages/server/modules/launcher/potential.js +70 -0
- package/packages/server/modules/launcher/project-entries.js +165 -0
- package/packages/server/modules/network/eu-context.js +29 -0
- package/packages/server/modules/network/index.js +1 -0
- package/packages/server/modules/openai-gateway/config.js +125 -0
- package/packages/server/modules/openai-gateway/gateway.js +178 -0
- package/packages/server/modules/openai-gateway/index.js +7 -0
- package/packages/server/modules/preferences/index.js +7 -0
- package/packages/server/modules/preferences/preferences.js +142 -0
- package/packages/server/modules/processes/index.js +6 -0
- package/packages/server/modules/processes/processes.js +174 -0
- package/packages/server/modules/project-presentation/implementation.js +130 -0
- package/packages/server/modules/project-presentation/index.js +1 -0
- package/packages/server/modules/project-widgets/index.js +210 -0
- package/packages/server/modules/projects/discovery.js +179 -0
- package/packages/server/modules/projects/favicon.js +180 -0
- package/packages/server/modules/projects/index.js +11 -0
- package/packages/server/modules/projects/inspect.js +148 -0
- package/packages/server/modules/projects/remote-icon.js +39 -0
- package/packages/server/modules/projects/store.js +41 -0
- package/packages/server/modules/projects/types.js +1 -0
- package/packages/server/modules/providers/atomic-file.js +29 -0
- package/packages/server/modules/providers/balance.js +125 -0
- package/packages/server/modules/providers/index.js +15 -0
- package/packages/server/modules/providers/kinds.js +24 -0
- package/packages/server/modules/providers/model-list.js +16 -0
- package/packages/server/modules/providers/models.js +124 -0
- package/packages/server/modules/providers/openai-client.js +40 -0
- package/packages/server/modules/providers/provider-seeds.js +39 -0
- package/packages/server/modules/providers/provider-store.js +317 -0
- package/packages/server/modules/providers/quiet-model.js +36 -0
- package/packages/server/modules/providers/secret-obfuscation.js +48 -0
- package/packages/server/modules/providers/thinking.js +105 -0
- package/packages/server/modules/providers/types.js +1 -0
- package/packages/server/modules/restart/index.js +1 -0
- package/packages/server/modules/restart/restart.js +56 -0
- package/packages/server/modules/secrets/index.js +1 -0
- package/packages/server/modules/secrets/vault.js +51 -0
- package/packages/server/modules/spend/index.js +2 -0
- package/packages/server/modules/spend/ledger.js +82 -0
- package/packages/server/modules/spend/store.js +92 -0
- package/packages/server/modules/terminal/drop-files.js +42 -0
- package/packages/server/modules/terminal/index.js +15 -0
- package/packages/server/modules/terminal/link-files.js +44 -0
- package/packages/server/modules/terminal/scenario-folder.js +20 -0
- package/packages/server/modules/terminal/session-state.js +85 -0
- package/packages/server/modules/terminal/socket.js +159 -0
- package/packages/server/modules/terminal/terminal-activity.js +56 -0
- package/packages/server/modules/terminal/terminal-file.js +32 -0
- package/packages/server/modules/terminal/terminal-mouse.js +29 -0
- package/packages/server/modules/terminal/terminal.js +308 -0
- package/packages/server/modules/terminal/terminate.js +68 -0
- package/packages/server/modules/terminal-control/control.js +75 -0
- package/packages/server/modules/terminal-control/handlers.js +10 -0
- package/packages/server/modules/terminal-control/index.js +3 -0
- package/packages/server/modules/terminal-control/shared-socket.js +319 -0
- package/packages/server/modules/terminal-control/socket.js +153 -0
- package/packages/server/modules/transport/implementation.js +24 -0
- package/packages/server/modules/transport/index.js +2 -0
- package/packages/server/modules/transport/router.js +16 -0
- package/packages/server/modules/transport/types.js +1 -0
- package/packages/server/modules/usage-analytics/index.js +4 -0
- package/packages/server/modules/usage-analytics/limits.js +144 -0
- package/packages/server/modules/usage-analytics/overview.js +117 -0
- package/packages/server/modules/usage-analytics/providers.js +120 -0
- package/packages/server/modules/usage-analytics/store.js +152 -0
- package/packages/server/modules/window/desktop.js +24 -0
- package/packages/server/modules/window/index.js +8 -0
- package/packages/server/modules/window/window.js +86 -0
- package/packages/server/modules/workspace/archive.py +109 -0
- package/packages/server/modules/workspace/external-files.js +22 -0
- package/packages/server/modules/workspace/files-exclude.js +73 -0
- package/packages/server/modules/workspace/files.js +332 -0
- package/packages/server/modules/workspace/find-paths.js +92 -0
- package/packages/server/modules/workspace/git-branches.js +159 -0
- package/packages/server/modules/workspace/git-compare.js +121 -0
- package/packages/server/modules/workspace/git-history.js +182 -0
- package/packages/server/modules/workspace/git-sync.js +245 -0
- package/packages/server/modules/workspace/git-tree.js +126 -0
- package/packages/server/modules/workspace/git.js +276 -0
- package/packages/server/modules/workspace/ignored.js +23 -0
- package/packages/server/modules/workspace/import.js +190 -0
- package/packages/server/modules/workspace/index.js +15 -0
- package/packages/server/modules/workspace/paths.js +38 -0
- package/packages/server/modules/workspace/reveal.js +14 -0
- package/packages/server/modules/workspace/search.js +136 -0
- package/packages/server/modules/workspace/site.js +62 -0
- package/packages/server/modules/workspace/watcher.js +176 -0
- package/packages/server/routes/api/agent-answer-repair.js +35 -0
- package/packages/server/routes/api/agent-chats.js +77 -0
- package/packages/server/routes/api/agent-features.js +36 -0
- package/packages/server/routes/api/agent-form-repair.js +35 -0
- package/packages/server/routes/api/agent-hooks.js +35 -0
- package/packages/server/routes/api/agent-jobs.js +322 -0
- package/packages/server/routes/api/agent-judge.js +33 -0
- package/packages/server/routes/api/agent-lens.js +27 -0
- package/packages/server/routes/api/agent-mcp.js +41 -0
- package/packages/server/routes/api/agent-memory.js +33 -0
- package/packages/server/routes/api/agent-project-roles.js +112 -0
- package/packages/server/routes/api/agent-project-widgets.js +67 -0
- package/packages/server/routes/api/agent-roles.js +106 -0
- package/packages/server/routes/api/agent-secret-show.js +87 -0
- package/packages/server/routes/api/agent-side.js +70 -0
- package/packages/server/routes/api/agent-skills.js +31 -0
- package/packages/server/routes/api/agent-web.js +27 -0
- package/packages/server/routes/api/agent-worktrees.js +49 -0
- package/packages/server/routes/api/agent.js +269 -0
- package/packages/server/routes/api/analytics.js +21 -0
- package/packages/server/routes/api/app/hide.js +12 -0
- package/packages/server/routes/api/app/mode.js +49 -0
- package/packages/server/routes/api/app/network.js +54 -0
- package/packages/server/routes/api/app/open.js +33 -0
- package/packages/server/routes/api/app/quit.js +14 -0
- package/packages/server/routes/api/app/restart.js +18 -0
- package/packages/server/routes/api/appearance.js +70 -0
- package/packages/server/routes/api/browser.js +27 -0
- package/packages/server/routes/api/claude.js +15 -0
- package/packages/server/routes/api/codex.js +15 -0
- package/packages/server/routes/api/cursor.js +15 -0
- package/packages/server/routes/api/directories.js +16 -0
- package/packages/server/routes/api/docker.js +74 -0
- package/packages/server/routes/api/events.js +25 -0
- package/packages/server/routes/api/health.js +20 -0
- package/packages/server/routes/api/hub.js +26 -0
- package/packages/server/routes/api/ide/commands.js +72 -0
- package/packages/server/routes/api/ide/editor.js +37 -0
- package/packages/server/routes/api/ide/files-exclude.js +37 -0
- package/packages/server/routes/api/ide/keybindings.js +37 -0
- package/packages/server/routes/api/inspect.js +21 -0
- package/packages/server/routes/api/integrations/[...action].js +201 -0
- package/packages/server/routes/api/integrations/github-browse.js +190 -0
- package/packages/server/routes/api/kimi.js +15 -0
- package/packages/server/routes/api/launcher/icon.js +16 -0
- package/packages/server/routes/api/launcher/launch.js +27 -0
- package/packages/server/routes/api/launcher/search.js +20 -0
- package/packages/server/routes/api/launcher/settings.js +68 -0
- package/packages/server/routes/api/openai.js +94 -0
- package/packages/server/routes/api/opencode.js +15 -0
- package/packages/server/routes/api/pick-folder.js +12 -0
- package/packages/server/routes/api/preview-icon.js +21 -0
- package/packages/server/routes/api/projects/[id]/index.js +240 -0
- package/packages/server/routes/api/projects/[id]/site.js +59 -0
- package/packages/server/routes/api/projects/[id]/terminals.js +38 -0
- package/packages/server/routes/api/projects/[id]/workspace-read.js +126 -0
- package/packages/server/routes/api/projects/[id]/workspace.js +147 -0
- package/packages/server/routes/api/projects/index.js +62 -0
- package/packages/server/routes/api/providers/active.js +12 -0
- package/packages/server/routes/api/providers/balance.js +15 -0
- package/packages/server/routes/api/providers/models.js +19 -0
- package/packages/server/routes/api/providers.js +23 -0
- package/packages/server/routes/api/status.js +11 -0
- package/resources/icons/128.png +0 -0
- package/resources/icons/16.png +0 -0
- package/resources/icons/256.png +0 -0
- package/resources/icons/32.png +0 -0
- package/resources/icons/48.png +0 -0
- package/resources/icons/512.png +0 -0
- package/resources/icons/64.png +0 -0
- package/resources/icons/projector.svg +5 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Projector contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @ai-projector/ide
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Projector web IDE: files, Git, terminals and agent chats in one local server. This package does not include the GTK palette.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @ai-projector/ide
|
|
9
|
+
projector --browser
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Open <http://localhost:4177> while Projector is running. Without `@ai-projector/native` the default launch mode opens the browser.
|
|
13
|
+
|
|
14
|
+
The CLI can drive projects without the UI:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
projector open ~/code/app # registers and opens a folder as a project
|
|
18
|
+
projector projects # saved projects
|
|
19
|
+
projector status . # server, project and process state
|
|
20
|
+
projector run . --command dev # start the project command
|
|
21
|
+
projector stop .
|
|
22
|
+
projector search opencode
|
|
23
|
+
projector start | restart | quit
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Use `--json` for machine-readable output. `projector open` also accepts a project id or name, `gh:/owner/repository` and `gl:/<instance>/<group>/<project>`.
|
|
27
|
+
|
|
28
|
+
Requirements: Node.js 24.11–24.x; on Linux, Python 3, `make` and a C++ compiler to build `node-pty`. Projector also uses `git`, `rg` and GNU `mv`.
|
|
29
|
+
|
|
30
|
+
To add a desktop entry and the `projector` command:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
projector-install-desktop
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Data and settings are stored in `$XDG_DATA_HOME/projector` (`~/.local/share/projector` by default).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT="$(cd "$(dirname "$(readlink -f "$0")")/.." && pwd)"
|
|
5
|
+
export PATH="${HOME}/.vite-plus/bin:${ROOT}/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:${PATH}"
|
|
6
|
+
cd "$ROOT"
|
|
7
|
+
|
|
8
|
+
ENTRY="$ROOT/packages/cli/app/install-desktop.ts"
|
|
9
|
+
if [[ ! -f "$ENTRY" ]]; then
|
|
10
|
+
ENTRY="$ROOT/packages/cli/app/install-desktop.js"
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
if [[ -x "${HOME}/.vite-plus/bin/node" ]]; then
|
|
14
|
+
exec "${HOME}/.vite-plus/bin/node" "$ENTRY" "$@"
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
exec node "$ENTRY" "$@"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal
|
|
3
|
+
cd /d "%~dp0.."
|
|
4
|
+
where node >nul 2>&1
|
|
5
|
+
if errorlevel 1 (
|
|
6
|
+
echo Нужен node в PATH 1>&2
|
|
7
|
+
exit /b 1
|
|
8
|
+
)
|
|
9
|
+
set "ENTRY=%~dp0..\packages\cli\app\install-desktop.ts"
|
|
10
|
+
if not exist "%ENTRY%" set "ENTRY=%~dp0..\packages\cli\app\install-desktop.js"
|
|
11
|
+
node "%ENTRY%" %*
|
package/bin/projector
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
ROOT="$(cd "$(dirname "$(readlink -f "$0")")/.." && pwd)"
|
|
5
|
+
export PATH="${HOME}/.vite-plus/bin:${ROOT}/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:${PATH}"
|
|
6
|
+
cd "$ROOT"
|
|
7
|
+
|
|
8
|
+
ENTRY="$ROOT/packages/cli/app/launch.ts"
|
|
9
|
+
if [[ ! -f "$ENTRY" ]]; then
|
|
10
|
+
ENTRY="$ROOT/packages/cli/app/launch.js"
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
if [[ -x "${HOME}/.vite-plus/bin/node" ]]; then
|
|
14
|
+
exec "${HOME}/.vite-plus/bin/node" "$ENTRY" "$@"
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if command -v node >/dev/null 2>&1; then
|
|
18
|
+
exec node "$ENTRY" "$@"
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Нужны vp или node в PATH" >&2
|
|
22
|
+
exit 1
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal
|
|
3
|
+
cd /d "%~dp0.."
|
|
4
|
+
where node >nul 2>&1
|
|
5
|
+
if errorlevel 1 (
|
|
6
|
+
echo Нужен node в PATH 1>&2
|
|
7
|
+
exit /b 1
|
|
8
|
+
)
|
|
9
|
+
set "ENTRY=%~dp0..\packages\cli\app\launch.ts"
|
|
10
|
+
if not exist "%ENTRY%" set "ENTRY=%~dp0..\packages\cli\app\launch.js"
|
|
11
|
+
node "%ENTRY%" %*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,L as t,P as n,S as r,Z as i,_ as a,ct as o,g as s,h as c,it as l,k as ee,t as u,v as d,w as f,z as p}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{q as m,tt as h}from"./shared.esm-bundler-EUzHGNqQ.js";import{O as te,a as g,f as _,i as ne,o as re,r as ie}from"./dist-dwBOnDaY.js";import{t as ae}from"./UiPanel-CND7Qs_n.js";import{At as v,Lt as oe,Rt as y,T as se,Y as b,Z as ce,ct as le,dt as x,ft as S,g as ue,l as C,st as w,tt as T,yt as E}from"./dist-23D313r2.js";import{a as D,c as de,i as fe,l as pe,n as O,o as k,r as A,s as j,u as M}from"./main-DEEGhxlk.js";import{n as N,t as P}from"./dist-CRLdLpSX.js";import{n as F,r as I}from"./editor-theme-DuQQ8n56.js";var L={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function R(e,t){return p(),d(`svg`,L,[...t[0]||=[c(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[c(`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}),c(`path`,{d:`M3 12h18`})],-1)]])}var z=l({name:`lucide-rows-2`,render:R}),B={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function V(e,t){return p(),d(`svg`,B,[...t[0]||=[c(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[c(`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}),c(`path`,{d:`M12 3v18`})],-1)]])}var me=l({name:`lucide-columns-2`,render:V}),H=f({__name:`CodeViewer`,props:{path:{type:String,required:!0},content:{type:String,required:!0},original:{type:String,required:!1},originalLabel:{type:String,required:!1},modifiedLabel:{type:String,required:!1},line:{type:Number,required:!1},endLine:{type:Number,required:!1},column:{type:Number,required:!1},editable:{type:Boolean,required:!1},projectId:{type:String,required:!1},revision:{type:Number,required:!1}},emits:[`change`,`save`],setup(e,{expose:r,emit:a}){r();let s=e,c=a,l=o(),u,d,f=o(!1),p=0,m=new Map,h=``,L=M(),R=L.acquire(),B=ee(Symbol.for(`projector.editor-selection`),void 0),V=()=>!!B&&!!s.projectId&&s.editable===!0&&s.original===void 0&&!s.path.startsWith(`/`);function H(e){if(!V())return;let{main:t}=e.selection,n=e.doc.lineAt(t.from),r=e.doc.lineAt(t.to);t.to>t.from&&r.from===t.to&&r.number>n.number&&(r=e.doc.line(r.number-1)),B.report({path:s.path,from:n.number,to:r.number})}let U=oe.define(),W=y.define({create:()=>!0,update(e,t){let n=e;t.selection&&(n=t.state.selection.main.empty);for(let e of t.effects)e.is(U)&&(n=e.value);return n}}),G=ce.fromClass(class{timer;pointerDown=!1;view;onMouseDown;onMouseUp;constructor(e){this.view=e;let t=e.dom.ownerDocument;this.onMouseDown=t=>{let n=t.target;n instanceof Node&&e.dom.contains(n)&&(n instanceof Element&&n.closest(`.selection-chat`)||(this.pointerDown=!0,this.clear(),e.dispatch({effects:U.of(!1)})))},this.onMouseUp=()=>{this.pointerDown&&(this.pointerDown=!1,this.schedule(120))},t.addEventListener(`mousedown`,this.onMouseDown,!0),t.addEventListener(`mouseup`,this.onMouseUp,!0)}clear(){clearTimeout(this.timer),this.timer=void 0}schedule(e){this.clear(),this.timer=setTimeout(()=>{this.timer=void 0,this.view.state.selection.main.empty||this.view.dispatch({effects:U.of(!0)})},e)}update(e){e.selectionSet&&(this.clear(),e.state.selection.main.empty||this.pointerDown||this.schedule(180))}destroy(){this.clear();let e=this.view.dom.ownerDocument;e.removeEventListener(`mousedown`,this.onMouseDown,!0),e.removeEventListener(`mouseup`,this.onMouseUp,!0)}});function K(){let e=y.define({create:()=>[],update(e,t){let n=t.state.selection.main;return n.empty||!t.state.field(W)?[]:[{pos:n.head,above:!1,create:()=>{let e=document.createElement(`button`);return e.type=`button`,e.className=`selection-chat`,e.textContent=`В чат`,e.title=`Добавить выделенные строки в чат агента`,e.setAttribute(`aria-label`,`Добавить выделенные строки в чат агента`),e.addEventListener(`mousedown`,e=>e.preventDefault()),e.addEventListener(`click`,()=>B?.add()),{dom:e}}}]}});return[W,G,e,E.computeN([e],t=>t.field(e))]}function q(e){let{main:t}=e.selection,n=e.doc.lineAt(t.head);return{line:n.number,column:t.head-n.from+1,selectedChars:t.empty?0:t.to-t.from,selectedLines:t.empty?0:e.doc.lineAt(t.to).number-n.number+1}}async function J(){let e=++p,t=u;if(!t||s.original!==void 0||!s.projectId||s.path.startsWith(`/`)||!te(s.projectId).git)t?.dispatch({effects:D.of(null)});else try{let n=await _(s.projectId,s.path);if(e!==p||u!==t)return;t.dispatch({effects:D.of(n.available?n.original:null)})}catch{e===p&&t.dispatch({effects:D.of(null)})}}function Y(e,t){let n=document.createElement(e===`reject`?`button`:`span`);return e===`reject`&&(n.className=`diff-revert`,n.textContent=`↶ Откатить`,n.title=`Вернуть версию из индекса`,n.onmousedown=t),n}function X(e=`inline`){return[S(),ue(),T(),se(),C(),w(),le(),P(),ne(),x.of([...ie,...N,...g,re]),v.readOnly.of(!s.editable),b.editable.of(!!s.editable),s.editable?b.lineWrapping:[],...V()?K():[],k.of(j(F.value)),A.of([]),v.phrases.of({"Revert this chunk":`Откатить изменение`,"$ unchanged lines":`$ строк без изменений`}),s.original===void 0?O:e===`inline`?pe({original:s.original,gutter:!0,mergeControls:s.editable?Y:!1}):[],b.updateListener.of(e=>{e.docChanged&&s.editable&&c(`change`,e.state.doc.toString()),e.view===u&&(e.selectionSet?L.activate(R,q(e.state)):e.docChanged&&L.update(R,q(e.state)),(e.selectionSet||e.docChanged)&&e.view.hasFocus&&H(e.state))}),b.domEventHandlers({focus(e,t){return H(t.state),!1}})]}function Z(){if(!l.value)return;u&&m.set(h,u.state),d?.destroy(),d=void 0,u?.destroy(),h=s.path;let e=s.original===void 0?m.get(s.path):void 0;s.original!==void 0&&f.value?(d=new de({parent:l.value,a:{doc:s.original,extensions:[...X(`side`),v.readOnly.of(!0),b.editable.of(!1)]},b:{doc:s.content,extensions:X(`side`)},gutter:!0,revertControls:s.editable?`a-to-b`:void 0,highlightChanges:!0,collapseUnchanged:{margin:3,minSize:6}}),u=d.b):u=new b({parent:l.value,state:e??v.create({doc:s.content,extensions:X()})});let t=u;L.activate(R,q(t.state)),fe(s.path).then(e=>{if(u!==t)return;let n={effects:A.reconfigure(e)};d?.a.dispatch(n),t.dispatch(n)}),J(),Q()}function Q(){if(!u||!s.line)return;let e=u.state.doc.line(Math.min(s.line,u.state.doc.lines));if(s.endLine){let t=u.state.doc.line(Math.max(e.number,Math.min(s.endLine,u.state.doc.lines)));u.dispatch({selection:{anchor:e.from,head:t.to},effects:b.scrollIntoView(e.from,{y:`center`})});return}let t=Math.min(e.from+(s.column??1)-1,e.to);u.dispatch({selection:{anchor:t},effects:b.scrollIntoView(t,{y:`center`})})}function he(e){if(!s.editable)return;let t=e.relatedTarget;t instanceof Node&&l.value?.contains(t)||c(`save`)}t(()=>{Z(),I().catch(()=>void 0)}),i(()=>[s.path,s.original,s.editable,f.value],Z),i(F,e=>{let t={effects:k.reconfigure(j(e))};d?.a.dispatch(t),u?.dispatch(t)}),i(()=>s.content,e=>{u&&u.state.doc.toString()!==e&&u.dispatch({changes:{from:0,to:u.state.doc.length,insert:e}})}),i(()=>[s.projectId,s.revision],()=>void J()),i(()=>[s.line,s.column,s.endLine],Q),n(()=>{++p,d?.destroy(),u?.destroy(),m.clear(),L.release(R),B?.clear(s.path)});let $={props:s,emit:c,container:l,get view(){return u},set view(e){u=e},get merge(){return d},set merge(e){d=e},sideBySide:f,get gutterToken(){return p},set gutterToken(e){p=e},states:m,get activePath(){return h},set activePath(e){h=e},statusStore:L,statusId:R,editorSelection:B,tracksSelection:V,reportSelection:H,selectionSettled:U,selectionSettledField:W,selectionSettlePlugin:G,selectionChatTooltip:K,reportCursor:q,loadGutter:J,revertButton:Y,extensions:X,render:Z,reveal:Q,focusOut:he,UiPanel:ae,get IconRows(){return z},get IconColumns(){return me}};return Object.defineProperty($,"__isScriptSetup",{enumerable:!1,value:!0}),$}}),U={key:0,class:`diff-layout`,role:`group`,"aria-label":`Вид сравнения`},W=[`aria-pressed`],G=[`aria-pressed`],K={key:1,class:`diff-header`},q={class:`diff-side u-truncate`},J={key:0,class:`diff-arrow`},Y={class:`diff-side u-truncate`},X=[`aria-label`];function Z(t,n,i,o,l,ee){return p(),s(o.UiPanel,{as:`div`,class:`code-viewer-root`},{default:e(()=>[i.original===void 0?a(`v-if`,!0):(p(),d(`div`,U,[c(`button`,{type:`button`,title:`В одну колонку`,"aria-pressed":!o.sideBySide,class:m({active:!o.sideBySide}),onClick:n[0]||=e=>o.sideBySide=!1},[r(o.IconRows)],10,W),c(`button`,{type:`button`,title:`Две колонки`,"aria-pressed":o.sideBySide,class:m({active:o.sideBySide}),onClick:n[1]||=e=>o.sideBySide=!0},[r(o.IconColumns)],10,G)])),i.original===void 0?a(`v-if`,!0):(p(),d(`div`,K,[c(`span`,q,h(i.originalLabel??`Было`),1),o.sideBySide?a(`v-if`,!0):(p(),d(`span`,J,`→`)),c(`span`,Y,h(i.modifiedLabel??`Стало`),1)])),c(`div`,{ref:`container`,class:`code-viewer`,onFocusout:o.focusOut,"aria-label":i.editable?`Редактор файла`:`Просмотр кода`},null,40,X)]),_:1})}var Q=u(H,[[`render`,Z],[`__scopeId`,`data-v-e365392f`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/CodeViewer.vue`]]);export{Q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.code-viewer-root[data-v-e365392f]{position:relative}.diff-header[data-v-e365392f]{border-bottom:1px solid var(--line);height:24px;color:var(--muted);font:var(--fs-xs) var(--sans);flex:none;align-items:center;display:flex}.diff-side[data-v-e365392f]{flex:1;min-width:0;padding:0 12px}.diff-side+.diff-side[data-v-e365392f]{border-left:1px solid var(--line)}.diff-arrow[data-v-e365392f]{flex:none}.diff-layout[data-v-e365392f]{z-index:5;gap:2px;display:flex;position:absolute;top:2px;right:18px}.diff-layout button[data-v-e365392f]{border-radius:var(--r-sm);width:20px;height:20px;color:var(--muted);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.diff-layout button[data-v-e365392f]:hover,.diff-layout button.active[data-v-e365392f]{background:var(--active);color:var(--text)}.code-viewer[data-v-e365392f] .cm-mergeView,.code-viewer[data-v-e365392f] .cm-mergeViewEditors{height:100%}.code-viewer[data-v-e365392f] .cm-mergeViewEditor{min-width:0;height:100%;overflow:hidden}.code-viewer[data-v-e365392f] .cm-mergeViewEditor+.cm-mergeViewEditor{border-left:1px solid var(--line)}.code-viewer[data-v-e365392f] .cm-mergeView .cm-editor{height:100%}.code-viewer[data-v-e365392f]{flex:1;height:auto;min-height:0;overflow:hidden}.code-viewer[data-v-e365392f] .selection-chat{border:1px solid var(--line-strong);border-radius:var(--r-full);background:var(--bg-3);min-height:26px;box-shadow:var(--shadow-popover);color:var(--text);font:var(--fs-xs) var(--sans);cursor:pointer;align-items:center;padding:0 10px;display:inline-flex}.code-viewer[data-v-e365392f] .selection-chat:hover{background:var(--bg-4)}.code-viewer[data-v-e365392f] .selection-chat:focus-visible{border-color:var(--focus);background:var(--bg-4)}.code-viewer[data-v-e365392f] .cm-dirty-gutter{width:10px}.code-viewer[data-v-e365392f] .git-gutter-added,.code-viewer[data-v-e365392f] .git-gutter-modified{cursor:pointer;background:var(--run);width:3px;height:100%;margin-left:3px}.code-viewer[data-v-e365392f] .git-gutter-modified{background:var(--info)}.code-viewer[data-v-e365392f] .git-gutter-deleted{border-left:4px solid var(--err);border-top:4px solid #0000;border-bottom:4px solid #0000;width:0;height:0;margin-top:100%;margin-left:3px}.code-viewer[data-v-e365392f] .git-gutter-deleted-top{margin-top:0}.code-viewer[data-v-e365392f] .dirty-diff-peek{box-sizing:border-box;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg-2);overflow:hidden}.code-viewer[data-v-e365392f] .dirty-diff-bar{height:20px;color:var(--muted);font:var(--fs-xs) var(--sans);align-items:center;gap:2px;padding:0 8px;display:flex}.code-viewer[data-v-e365392f] .dirty-diff-title{flex:1}.code-viewer[data-v-e365392f] .dirty-diff-button{border-radius:var(--r-sm);min-width:20px;height:18px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;line-height:1}.code-viewer[data-v-e365392f] .dirty-diff-button:hover{background:var(--active);color:var(--text)}.code-viewer[data-v-e365392f] .dirty-diff-body{background:color-mix(in srgb, var(--err) 8%, transparent);font:var(--fs-sm) var(--mono);white-space:pre;padding:0 0 0 64px;line-height:20px}.code-viewer[data-v-e365392f] .cm-changedLine{background:color-mix(in srgb, var(--run) 8%, transparent)}.code-viewer[data-v-e365392f] .cm-changedText{background:color-mix(in srgb, var(--run) 20%, transparent)}.code-viewer[data-v-e365392f] .diff-revert{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-2);color:var(--muted);font:var(--fs-xs) var(--sans);cursor:pointer;margin:0 4px;padding:0 6px}.code-viewer[data-v-e365392f] .diff-revert:hover{background:var(--active);color:var(--text)}.code-viewer[data-v-e365392f] .cm-deletedChunk{background:color-mix(in srgb, var(--err) 8%, transparent)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$ as e,S as t,_ as n,g as r,m as i,t as a,v as o,w as s,x as c,z as l}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{E as u}from"./styles-C07CLvbW.js";import{tt as d}from"./shared.esm-bundler-EUzHGNqQ.js";import{d as f,u as p}from"./UiViewerPage-z_s1uFHO.js";import{h as m}from"./main-DEEGhxlk.js";import{n as h,r as g,t as _}from"./TrackerDetail-CV0Qqzx3.js";var v=s({__name:`DiscussionView`,props:{projectId:{type:String,required:!0},number:{type:Number,required:!0}},emits:[`open`],setup(e,{expose:t,emit:n}){t();let r=e,a=n,{detail:o,loading:s,error:c}=g(()=>r.projectId,()=>r.number,`discussion`,`Не удалось открыть discussion`),l=(e,t)=>({...e,at:e.createdAt,depth:t,badge:e.isAnswer?`ответ`:void 0,badgeClass:e.isAnswer?`answer`:void 0}),d=i(()=>(o.value?.comments??[]).flatMap(e=>[l(e,0),...e.replies.map(e=>l(e,1))])),v=i(()=>(o.value?.comments??[]).some(e=>e.repliesTruncated)),y=i(()=>{let e=o.value?.discussion;return e?.closed?`closed`:e?.answered?`answered`:`open`}),b={open:`открыто`,closed:`закрыто`,answered:`есть ответ`};f(()=>{let e=`Discussion #${o.value?.discussion.number??r.number}`;if(c.value)return{note:e,text:`Ошибка: ${c.value}`};let t=o.value;if(!t)return{note:e,text:`Загрузка…`};let n=t.discussion,i=n.body.length>4e3?`${n.body.slice(0,4e3)}…`:n.body,a=t.comments.flatMap(e=>[`${e.isAnswer?`[ответ] `:``}${e.author.login}`,...e.replies.map(e=>` ↳ ${e.author.login}`)]),s=a.slice(0,200);return{note:e,text:p(`Состояние: ${b[y.value]}`,`${n.title} (#${n.number})`,`Автор: ${n.author.login}, создано ${n.createdAt}`,n.category.name?`Категория: ${n.category.name}`:``,n.labels.length?`Метки: ${n.labels.map(e=>e.name).join(`, `)}`:`Метки: нет`,`Голосов: ${n.upvotes}`,a.length?`Комментарии (${t.comments.length}):\n${s.join(`
|
|
2
|
+
`)}${a.length>s.length?`\n… ещё ${a.length-s.length}`:``}`:`Комментариев: нет`,t.commentsTruncated?`Комментарии показаны не все.`:``,v.value?`Ответы на комментарии показаны не все.`:``,i)}});let x={props:r,emit:a,detail:o,loading:s,error:c,item:l,comments:d,truncatedReplies:v,state:y,STATE_LABEL:b,UiHint:u,EmojiText:m,TrackerComments:h,TrackerDetail:_};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}}),y={key:0,class:`category`},b={key:1};function x(i,a,s,u,f,p){return l(),r(u.TrackerDetail,{"project-id":s.projectId,loading:u.loading,error:u.error,ready:!!u.detail,noun:`discussion`,state:u.state,"state-label":u.STATE_LABEL[u.state],title:u.detail?.discussion.title??``,number:u.detail?.discussion.number??s.number,author:u.detail?.discussion.author??{login:``,avatarUrl:``},"created-at":u.detail?.discussion.createdAt??``,"html-url":u.detail?.discussion.htmlUrl??``,labels:u.detail?.discussion.labels??[],body:u.detail?.discussion.body??``,reactions:u.detail?.discussion.reactions??[],onOpen:a[1]||=e=>u.emit(`open`,e)},{meta:e(()=>[u.detail?.discussion.category.name?(l(),o(`span`,y,[t(u.EmojiText,{text:u.detail.discussion.category.emoji},null,8,[`text`]),c(` `+d(u.detail.discussion.category.name),1)])):n(`v-if`,!0),u.detail?.discussion.upvotes?(l(),o(`span`,b,`▲ `+d(u.detail.discussion.upvotes),1)):n(`v-if`,!0)]),default:e(()=>[t(u.TrackerComments,{"project-id":s.projectId,title:`Комментарии`,empty:`Комментариев нет`,items:u.comments,onOpen:a[0]||=e=>u.emit(`open`,e)},null,8,[`project-id`,`items`]),u.truncatedReplies?(l(),r(u.UiHint,{key:0,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[...a[2]||=[c(` У некоторых комментариев показаны не все ответы. Откройте discussion на GitHub, чтобы увидеть все. `,-1)]]),_:1})):n(`v-if`,!0),u.detail?.commentsTruncated?(l(),r(u.UiHint,{key:1,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[...a[3]||=[c(` Показаны первые 250 комментариев. Откройте discussion на GitHub, чтобы увидеть все. `,-1)]]),_:1})):n(`v-if`,!0)]),_:1},8,[`project-id`,`loading`,`error`,`ready`,`state`,`state-label`,`title`,`number`,`author`,`created-at`,`html-url`,`labels`,`body`,`reactions`])}var S=a(v,[[`render`,x],[`__scopeId`,`data-v-ef24835c`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/DiscussionView.vue`]]);export{S as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.category[data-v-ef24835c]{color:var(--text-2)}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodeViewer-BAgvP3Yx.js","assets/_plugin-vue_export-helper-C4wFX7Eq.js","assets/shared.esm-bundler-EUzHGNqQ.js","assets/dist-dwBOnDaY.js","assets/styles-C07CLvbW.js","assets/styles-CX3Ni7dk.css","assets/preload-helper-BLdHbfdN.js","assets/dist-23D313r2.js","assets/UiPanel-CND7Qs_n.js","assets/UiPanel-CS77nWcC.css","assets/main-DEEGhxlk.js","assets/github-emoji-C2UmmDoA.js","assets/ImageViewport-lPITcKgO.js","assets/ImageViewport-BXN_-Ztv.css","assets/github-emoji-qJihbtN6.css","assets/UiViewerPage-z_s1uFHO.js","assets/external-link-BFTqPI03.js","assets/UiViewerPage-BOvnLith.css","assets/main-CgMl4Qjs.css","assets/dist-CRLdLpSX.js","assets/editor-theme-DuQQ8n56.js","assets/CodeViewer-QIU6uQDH.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,C as t,L as n,S as r,V as i,_ as a,ct as o,f as s,g as c,h as l,m as u,q as d,t as f,v as p,w as m,x as h,z as g}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{A as _,D as v,M as y,N as b,b as x}from"./styles-C07CLvbW.js";import{q as S,tt as C}from"./shared.esm-bundler-EUzHGNqQ.js";import{t as w}from"./preload-helper-BLdHbfdN.js";import{L as T}from"./main-DEEGhxlk.js";import{i as E,n as D,r as O,t as k}from"./editor-theme-DuQQ8n56.js";var A=`// Спокойная подсветка для повседневной работы
|
|
3
|
+
interface Project {
|
|
4
|
+
name: string;
|
|
5
|
+
active: boolean;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function recentProjects(projects: Project[], limit = 5) {
|
|
9
|
+
return projects
|
|
10
|
+
.filter((project) => project.active)
|
|
11
|
+
.slice(0, limit)
|
|
12
|
+
.map((project) => \`Открыть \${project.name}\`);
|
|
13
|
+
}`,j=m({__name:`EditorSettings`,props:{embedded:{type:Boolean,required:!1}},setup(e,{expose:r}){r();let i=d(),a=d(),s=t(()=>w(()=>import(`./CodeViewer-BAgvP3Yx.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]))),c=o(D.value),{ready:l,busy:f,error:p,status:m,load:h,perform:g}=x(),S=u(()=>E.find(e=>e.id===c.value)?.description);function C(){return h(async()=>{await O(),c.value=D.value},`Не удалось загрузить настройки`)}n(C);async function j(){await g(async()=>{let e=await fetch(`/api/ide/editor`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({theme:c.value})}),t=await e.json();if(!e.ok)throw Error(t.error||`Не удалось сохранить тему`);k(c.value)},{errorFallback:`Не удалось сохранить тему`,success:`Тема сохранена`,rollback:()=>{c.value=D.value}})}let M={titleId:i,themeId:a,CodeViewer:s,selected:c,ready:l,busy:f,error:p,status:m,loadSection:h,perform:g,description:S,example:A,load:C,save:j,UiLabel:T,UiMessage:y,UiControl:_,UiHeading:b,UiButton:v,get editorThemes(){return E}};return Object.defineProperty(M,"__isScriptSetup",{enumerable:!1,value:!0}),M}}),M=[`aria-labelledby`],N=[`value`],P={class:`hint`},F={class:`preview`};function I(t,n,o,u,d,f){return g(),p(`section`,{class:`editor-settings`,"aria-labelledby":u.titleId},[r(u.UiHeading,{id:u.titleId,size:`sm`,"space-after":4,class:S({"u-sr-only":o.embedded})},{default:e(()=>[...n[1]||=[h(`Редактор кода`,-1)]]),_:1},8,[`id`,`class`]),r(u.UiLabel,{for:u.themeId,"space-after":2},{default:e(()=>[...n[2]||=[h(`Цветовая тема редактора`,-1)]]),_:1},8,[`for`]),r(u.UiControl,{as:`select`,id:u.themeId,modelValue:u.selected,"onUpdate:modelValue":n[0]||=e=>u.selected=e,disabled:!u.ready||u.busy,onChange:u.save},{default:e(()=>[(g(!0),p(s,null,i(u.editorThemes,e=>(g(),p(`option`,{key:e.id,value:e.id},C(e.title),9,N))),128))]),_:1},8,[`id`,`modelValue`,`disabled`]),l(`p`,P,C(u.description),1),l(`div`,F,[r(u.CodeViewer,{path:`theme-preview.ts`,content:u.example})]),n[4]||=l(`p`,{class:`hint`},` Тема применяется к коду и сравнению изменений во всех проектах. Выбор сохраняется автоматически. `,-1),u.error||u.status?(g(),c(u.UiMessage,{key:0,role:`status`,tone:u.error?`danger`:void 0},{default:e(()=>[h(C(u.error||u.status),1)]),_:1},8,[`tone`])):a(`v-if`,!0),!u.ready&&u.error?(g(),c(u.UiButton,{key:1,onClick:u.load},{default:e(()=>[...n[3]||=[h(`Повторить загрузку`,-1)]]),_:1})):a(`v-if`,!0)],8,M)}var L=f(j,[[`render`,I],[`__scopeId`,`data-v-b2c82033`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/EditorSettings.vue`]]);export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.editor-settings[data-v-b2c82033]{margin-bottom:var(--ui-section-margin,var(--sp-6))}select[data-v-b2c82033]{max-width:420px}.hint[data-v-b2c82033]{color:var(--muted);font-size:var(--ui-hint-font-size,var(--fs-sm));margin:var(--sp-3) 0}.preview[data-v-b2c82033]{border:1px solid var(--line);border-radius:var(--r-md);height:240px;overflow:hidden}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.url[data-v-710c3d91]{min-width:0;font-family:var(--mono);color:var(--muted);flex:1}.page-pane[data-v-710c3d91]{background:var(--bg-3);flex:1;justify-content:center;min-height:0;display:flex;overflow:auto}.page-frame[data-v-710c3d91]{color-scheme:normal;background:#fff;border:0;width:100%;height:100%}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodeViewer-BAgvP3Yx.js","assets/_plugin-vue_export-helper-C4wFX7Eq.js","assets/shared.esm-bundler-EUzHGNqQ.js","assets/dist-dwBOnDaY.js","assets/styles-C07CLvbW.js","assets/styles-CX3Ni7dk.css","assets/preload-helper-BLdHbfdN.js","assets/dist-23D313r2.js","assets/UiPanel-CND7Qs_n.js","assets/UiPanel-CS77nWcC.css","assets/main-DEEGhxlk.js","assets/github-emoji-C2UmmDoA.js","assets/ImageViewport-lPITcKgO.js","assets/ImageViewport-BXN_-Ztv.css","assets/github-emoji-qJihbtN6.css","assets/UiViewerPage-z_s1uFHO.js","assets/external-link-BFTqPI03.js","assets/UiViewerPage-BOvnLith.css","assets/main-CgMl4Qjs.css","assets/dist-CRLdLpSX.js","assets/editor-theme-DuQQ8n56.js","assets/CodeViewer-QIU6uQDH.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,C as t,S as n,V as r,Z as i,_ as a,ct as o,f as s,g as c,h as l,it as u,m as d,t as f,v as p,w as m,x as h,z as g}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{A as _,D as v,k as y}from"./styles-C07CLvbW.js";import{X as b,tt as x}from"./shared.esm-bundler-EUzHGNqQ.js";import{t as S}from"./UiPanel-CND7Qs_n.js";import{t as C}from"./preload-helper-BLdHbfdN.js";import{t as w}from"./external-link-BFTqPI03.js";import{A as T,O as E}from"./main-DEEGhxlk.js";import{t as D}from"./SplitPanes-DR126xV8.js";var O={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function k(e,t){return g(),p(`svg`,O,[...t[0]||=[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`}),l(`path`,{d:`M10 4v4M2 8h20M6 4v4`})],-1)]])}var A=u({name:`lucide-app-window`,render:k}),j=m({__name:`HtmlViewer`,props:{path:{type:String,required:!0},projectId:{type:String,required:!1},content:{type:String,required:!0},saved:{type:String,required:!0},siteUrl:{type:String,required:!0},reload:{type:Number,required:!1},editable:{type:Boolean,required:!1},line:{type:Number,required:!1},endLine:{type:Number,required:!1},column:{type:Number,required:!1}},emits:[`change`,`save`,`command`],setup(e,{expose:n,emit:r}){n();let a=t(()=>C(()=>import(`./CodeViewer-BAgvP3Yx.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]))),s=e,c=r,l=[{id:`auto`,label:`Авто`,width:``},{id:`mobile`,label:`Телефон · 375`,width:`375px`},{id:`tablet`,label:`Планшет · 768`,width:`768px`},{id:`desktop`,label:`Ноутбук · 1280`,width:`1280px`}],u=o(`auto`),f=o(0);i(()=>[s.saved,s.reload],()=>f.value++);let p={CodeViewer:a,props:s,emit:c,widths:l,width:u,loads:f,frameStyle:d(()=>{let e=l.find(e=>e.id===u.value)?.width;return e?{width:e,maxWidth:`100%`}:void 0}),UiControl:_,UiInline:y,UiPanel:S,UiToolbar:T,SplitPanes:D,UiButton:v,get IconRefresh(){return E},get IconExternal(){return w},get IconPanel(){return A}};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),M=[`value`],N=[`title`],P={class:`page-pane`},F=[`src`,`title`];function I(t,i,o,u,d,f){return g(),c(u.UiPanel,{class:`html-viewer`,"aria-label":`Просмотр HTML`},{default:e(()=>[n(u.UiToolbar,{class:`toolbar`,"column-gap":4,text:`xs`},{default:e(()=>[n(u.UiInline,{as:`label`,gap:1.5,justify:`normal`},{default:e(()=>[i[6]||=h(`Ширина `,-1),n(u.UiControl,{as:`select`,modelValue:u.width,"onUpdate:modelValue":i[0]||=e=>u.width=e,appearance:`inline-select`,"aria-label":`Ширина страницы`},{default:e(()=>[(g(),p(s,null,r(u.widths,e=>l(`option`,{key:e.id,value:e.id},x(e.label),9,M)),64))]),_:1},8,[`modelValue`])]),_:1}),l(`span`,{class:`url u-truncate`,title:o.siteUrl},x(o.siteUrl),9,N),n(u.UiButton,{shape:`icon`,size:`sm`,"aria-label":`Перезагрузить страницу`,title:`Перезагрузить страницу`,onClick:i[1]||=e=>u.emit(`command`,`ide.editor.html.reload`)},{default:e(()=>[n(u.IconRefresh,{"aria-hidden":`true`})]),_:1}),n(u.UiButton,{shape:`icon`,size:`sm`,"aria-label":`Открыть во вкладке браузера`,title:`Открыть страницу во вкладке браузера Projector`,onClick:i[2]||=e=>u.emit(`command`,`ide.editor.html.openInBrowserTab`)},{default:e(()=>[n(u.IconPanel,{"aria-hidden":`true`})]),_:1}),n(u.UiButton,{shape:`icon`,size:`sm`,"aria-label":`Открыть в браузере`,title:`Открыть страницу в новой вкладке браузера`,onClick:i[3]||=e=>u.emit(`command`,`ide.editor.html.openInBrowser`)},{default:e(()=>[n(u.IconExternal,{"aria-hidden":`true`})]),_:1})]),_:1}),n(u.SplitPanes,{"top-label":`Страница`,"bottom-label":`Код`,reveal:o.line},{top:e(()=>[l(`div`,P,[a(` No allow-same-origin: the document gets an opaque origin and cannot reach the Projector API. `),(g(),p(`iframe`,{key:u.loads,class:`page-frame`,style:b(u.frameStyle),src:o.siteUrl,title:`Страница ${o.path}`,sandbox:`allow-scripts allow-forms allow-popups allow-modals`,referrerpolicy:`no-referrer`},null,12,F))])]),bottom:e(()=>[n(u.CodeViewer,{path:o.path,"project-id":o.projectId,content:o.content,editable:o.editable,line:o.line,"end-line":o.endLine,column:o.column,onChange:i[4]||=e=>u.emit(`change`,e),onSave:i[5]||=e=>u.emit(`save`)},null,8,[`path`,`project-id`,`content`,`editable`,`line`,`end-line`,`column`])]),_:1},8,[`reveal`])]),_:1})}var L=f(j,[[`render`,I],[`__scopeId`,`data-v-710c3d91`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/HtmlViewer.vue`]]);export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.image-viewport[data-v-4b5e1e5e]{flex:1;min-width:0;position:relative}.image-canvas[data-v-4b5e1e5e]{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;overscroll-behavior:contain;flex:1;min-height:0;position:relative;overflow:hidden}.image-canvas.panning[data-v-4b5e1e5e]{cursor:grabbing}.image-canvas[data-v-4b5e1e5e]:focus-visible{outline-offset:-2px}.image-canvas img[data-v-4b5e1e5e],.image-canvas .image-svg[data-v-4b5e1e5e]{transform-origin:50%;pointer-events:none;max-width:none;max-height:none;position:absolute;top:50%;left:50%}.image-canvas .image-svg svg[data-v-4b5e1e5e]{width:100%;height:100%;display:block}.view-controls[data-v-4b5e1e5e]{align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-1) var(--sp-3);font-size:var(--fs-2xs);border-top:1px solid var(--line);flex-wrap:wrap;display:flex}.zoom[data-v-4b5e1e5e]{font-variant-numeric:tabular-nums;min-width:4ch;margin-right:auto}.background-control select[data-v-4b5e1e5e]{width:auto;padding-block:2px}.image-canvas[data-v-4b5e1e5e]{--preview-light:#f5f5f4;--preview-dark:#18181b;--preview-checker-a:#e4e4e7;--preview-checker-b:#b4b4bb;--preview-gradient-from:#fafafa;--preview-gradient-to:#18181b;--preview-color-1:#c4b5fd;--preview-color-2:#7dd3fc;--preview-color-3:#fda4af}.light[data-v-4b5e1e5e]{background:var(--preview-light)}.dark[data-v-4b5e1e5e]{background:var(--preview-dark)}.transparent[data-v-4b5e1e5e]{background:0 0}.checker[data-v-4b5e1e5e]{background-color:var(--preview-checker-a);background-image:conic-gradient(var(--preview-checker-b) 25%, transparent 0 50%, var(--preview-checker-b) 0 75%, transparent 0);background-size:20px 20px}.gradient[data-v-4b5e1e5e]{background:linear-gradient(135deg, var(--preview-gradient-from), var(--preview-gradient-to))}.color-gradient[data-v-4b5e1e5e]{background:linear-gradient(135deg, var(--preview-color-1), var(--preview-color-2) 50%, var(--preview-color-3))}.error[data-v-4b5e1e5e]{margin:var(--sp-4);padding:var(--sp-3);border-radius:var(--r-md);color:var(--err);background:var(--bg-2);font-size:var(--fs-sm);cursor:default}.floating .view-controls[data-v-4b5e1e5e]{left:50%;bottom:max(var(--sp-3), env(safe-area-inset-bottom));gap:var(--sp-1);padding:var(--sp-1) var(--sp-1) var(--sp-1) var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-full);background:color-mix(in srgb, var(--bg-2) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-popover);font-size:var(--fs-xs);flex-wrap:nowrap;position:absolute;transform:translate(-50%)}.floating .zoom[data-v-4b5e1e5e]{margin-right:var(--sp-1)}.floating .view-controls[data-v-4b5e1e5e] .btn{border-radius:var(--r-full);border-color:#0000}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,L as t,P as n,S as r,Z as i,_ as a,ct as o,d as s,g as c,h as l,it as u,m as d,t as f,v as p,w as m,x as h,z as g}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{A as _,D as v,k as y}from"./styles-C07CLvbW.js";import{X as b,q as x,tt as S}from"./shared.esm-bundler-EUzHGNqQ.js";import{t as C}from"./UiPanel-CND7Qs_n.js";function w(e,t,n,r){let i=Math.max(1/64,Math.min(32,t)),a=e.zoom<1&&i>1||e.zoom>1&&i<1?1:i,o=a/e.zoom;return{zoom:a,x:n-(n-e.x)*o,y:r-(r-e.y)*o}}var T=e=>Math.min(48,e*.1);function E(e,t,n,r){return Math.max(1/64,Math.min(32,Math.max(1,n-T(n))/e,Math.max(1,r-T(r))/t))}var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return g(),p(`svg`,D,[...t[0]||=[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`rect`,{width:`12`,height:`20`,x:`6`,y:`2`,rx:`2`}),l(`rect`,{width:`20`,height:`12`,x:`2`,y:`6`,rx:`2`})],-1)]])}var k=u({name:`lucide-ratio`,render:O}),A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return g(),p(`svg`,A,[...t[0]||=[l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3m8 0h3a2 2 0 0 0 2-2v-3`},null,-1)]])}var M=u({name:`lucide-maximize`,render:j}),N=m({__name:`ImageViewport`,props:{src:{type:String,required:!1},svg:{type:String,required:!1},alt:{type:String,required:!0},width:{type:Number,required:!1},height:{type:Number,required:!1},identity:{type:String,required:!1},fit:{type:Boolean,required:!1,default:!0},background:{type:String,required:!1,default:`checker`},backgroundColor:{type:String,required:!1,default:`#808080`},backgroundControls:{type:Boolean,required:!1,default:!0},error:{type:String,required:!1},floating:{type:Boolean,required:!1}},setup(e,{expose:r}){let a=e,s=o(a.background),c=o(a.backgroundColor),l=d(()=>a.backgroundControls?s.value:a.background),u=d(()=>a.backgroundControls?c.value:a.backgroundColor),f=o(),p=o({width:0,height:0}),m=o({zoom:1,x:0,y:0}),h=o(!1),g=o(!1),b=d(()=>({width:a.width??p.value.width,height:a.height??p.value.height})),x=d(()=>({width:`${b.value.width}px`,height:`${b.value.height}px`,transform:`translate(-50%, -50%) translate(${m.value.x}px, ${m.value.y}px) scale(${m.value.zoom})`})),S=!1,T,D,O=new Map,A,j={clientX:0,clientY:0,x:0,y:0},N=0;function P(e=a.fit){let t=f.value,{width:n,height:r}=b.value;!t||!n||!r||!t.clientWidth||!t.clientHeight?S=!1:(m.value={zoom:e?E(n,r,t.clientWidth,t.clientHeight):1,x:0,y:0},S=!0,N=0)}function F(e){let t=e.target;p.value={width:t.naturalWidth,height:t.naturalHeight},S||P()}function I(e){let t=f.value;if(!t||a.error||h.value)return;let n=performance.now();if(n<N)return;let r=t.getBoundingClientRect(),i=e.deltaMode===1?16:e.deltaMode===2?r.height:1,o=Math.max(-500,Math.min(500,(e.deltaY||e.deltaX)*i)),s=m.value.zoom;m.value=w(m.value,m.value.zoom*Math.exp(-o*.002),e.clientX-r.left-r.width/2,e.clientY-r.top-r.height/2),s!==1&&m.value.zoom===1&&(N=n+180)}function L(e){j={clientX:e.x,clientY:e.y,x:m.value.x,y:m.value.y},g.value=!0}function R(e){if(e.pointerType===`mouse`&&e.button!==0||a.error||h.value)return;e.preventDefault();let t=e.currentTarget;if(t.focus({preventScroll:!0}),t.setPointerCapture(e.pointerId),O.set(e.pointerId,{x:e.clientX,y:e.clientY}),O.size===1)D=e.pointerId,L({x:e.clientX,y:e.clientY});else if(O.size===2){let[e,n]=[...O.values()],r=t.getBoundingClientRect();A={distance:Math.max(1,Math.hypot(e.x-n.x,e.y-n.y)),mid:{x:(e.x+n.x)/2-r.left-r.width/2,y:(e.y+n.y)/2-r.top-r.height/2},view:m.value},g.value=!1}}function z(e){if(O.has(e.pointerId)){if(O.set(e.pointerId,{x:e.clientX,y:e.clientY}),A&&O.size===2){let t=e.currentTarget.getBoundingClientRect(),[n,r]=[...O.values()],i=Math.max(1/64,Math.min(32,A.view.zoom*Math.hypot(n.x-r.x,n.y-r.y)/A.distance)),a=i/A.view.zoom,o={x:(n.x+r.x)/2-t.left-t.width/2,y:(n.y+r.y)/2-t.top-t.height/2};m.value={zoom:i,x:o.x-(A.mid.x-A.view.x)*a,y:o.y-(A.mid.y-A.view.y)*a}}else g.value&&e.pointerId===D&&(m.value={...m.value,x:j.x+e.clientX-j.clientX,y:j.y+e.clientY-j.clientY})}}function B(e){if(!O.delete(e.pointerId))return;let t=e.currentTarget;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),A=void 0;let[n]=[...O.entries()];n?(D=n[0],L(n[1])):(g.value=!1,D=void 0)}function V(e){if([`+`,`=`,`-`,`0`,`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`].includes(e.key)){if(e.preventDefault(),e.key===`0`)P();else if([`+`,`=`,`-`].includes(e.key))m.value=w(m.value,m.value.zoom*(e.key===`-`?1/1.2:1.2),0,0);else{let t=e.shiftKey?100:30;m.value={...m.value,x:m.value.x+(e.key===`ArrowLeft`?-t:e.key===`ArrowRight`?t:0),y:m.value.y+(e.key===`ArrowUp`?-t:e.key===`ArrowDown`?t:0)}}}}i(()=>a.src,()=>{h.value=!1}),i(()=>a.identity??a.src,()=>{S=!1,p.value={width:0,height:0},m.value={zoom:1,x:0,y:0}}),t(()=>{T=new ResizeObserver(()=>{S||P()}),f.value&&T.observe(f.value)}),n(()=>T?.disconnect()),r({reset:P});let H={props:a,localBackground:s,localBackgroundColor:c,canvasBackground:l,canvasBackgroundColor:u,canvas:f,natural:p,view:m,failed:h,panning:g,dimensions:b,imageStyle:x,get initialized(){return S},set initialized(e){S=e},get observer(){return T},set observer(e){T=e},get pointerId(){return D},set pointerId(e){D=e},pointers:O,get pinch(){return A},set pinch(e){A=e},get drag(){return j},set drag(e){j=e},get zoomStopUntil(){return N},set zoomStopUntil(e){N=e},reset:P,loaded:F,wheel:I,beginPan:L,startPan:R,movePan:z,endPan:B,key:V,UiPanel:C,UiControl:_,UiInline:y,UiButton:v,get IconRatio(){return k},get IconMaximize(){return M}};return Object.defineProperty(H,"__isScriptSetup",{enumerable:!1,value:!0}),H}}),P={key:0,class:`error`,role:`alert`},F=[`aria-label`,`innerHTML`],I=[`src`,`alt`],L={class:`view-controls`},R={class:`zoom`};function z(t,n,i,o,u,d){return g(),c(o.UiPanel,{class:x([`image-viewport`,{floating:i.floating}]),"aria-label":`Просмотр изображения`,"data-swipe-ignore":``},{default:e(()=>[l(`div`,{ref:`canvas`,class:x([`image-canvas`,[o.canvasBackground,{panning:o.panning}]]),style:b(o.canvasBackground===`custom`?{background:o.canvasBackgroundColor}:void 0),role:`region`,"aria-label":`Область изображения`,tabindex:`0`,onWheel:s(o.wheel,[`prevent`]),onPointerdown:o.startPan,onPointermove:o.movePan,onPointerup:o.endPan,onPointercancel:o.endPan,onLostpointercapture:o.endPan,onDblclick:n[1]||=e=>o.reset(),onKeydown:o.key,onDragstart:n[2]||=s(()=>{},[`prevent`])},[i.error||o.failed?(g(),p(`p`,P,S(i.error||`Браузер не смог отобразить это изображение.`),1)):a(`v-if`,!0),i.svg?(g(),p(`div`,{key:1,class:`image-svg`,style:b(o.imageStyle),role:`img`,"aria-label":i.alt,innerHTML:i.svg},null,12,F)):(g(),p(`img`,{key:2,src:i.src,alt:i.alt,style:b(o.imageStyle),draggable:`false`,onLoad:o.loaded,onError:n[0]||=e=>o.failed=!0},null,44,I))],38),l(`div`,L,[l(`span`,R,S(Math.round(o.view.zoom*100))+`%`,1),r(o.UiButton,{shape:`icon`,size:`sm`,"aria-label":`Сбросить масштаб`,title:`Масштаб 100% и центрирование изображения`,onClick:n[3]||=e=>o.reset(!1)},{default:e(()=>[r(o.IconRatio,{"aria-hidden":`true`})]),_:1}),r(o.UiButton,{shape:`icon`,size:`sm`,"aria-label":`Вписать`,title:`Вписать изображение в область просмотра`,onClick:n[4]||=e=>o.reset(!0)},{default:e(()=>[r(o.IconMaximize,{"aria-hidden":`true`})]),_:1}),i.backgroundControls?(g(),c(o.UiInline,{key:0,as:`label`,class:`background-control`,gap:1.5,justify:`normal`},{default:e(()=>[n[8]||=h(`Фон `,-1),r(o.UiControl,{as:`select`,modelValue:o.localBackground,"onUpdate:modelValue":n[5]||=e=>o.localBackground=e,"aria-label":`Фон изображения`},{default:e(()=>[...n[7]||=[l(`option`,{value:`light`},`Светлый`,-1),l(`option`,{value:`dark`},`Тёмный`,-1),l(`option`,{value:`transparent`},`Прозрачный`,-1),l(`option`,{value:`checker`},`Шашечки`,-1),l(`option`,{value:`gradient`},`Градиент`,-1),l(`option`,{value:`color-gradient`},`Цветной градиент`,-1),l(`option`,{value:`custom`},`Свой цвет`,-1)]]),_:1},8,[`modelValue`])]),_:1})):a(`v-if`,!0),i.backgroundControls&&o.localBackground===`custom`?(g(),c(o.UiControl,{key:1,modelValue:o.localBackgroundColor,"onUpdate:modelValue":n[6]||=e=>o.localBackgroundColor=e,type:`color`,appearance:`swatch`,"swatch-size":`sm`,"aria-label":`Свой цвет фона изображения`},null,8,[`modelValue`])):a(`v-if`,!0)])]),_:1},8,[`class`])}var B=f(N,[[`render`,z],[`__scopeId`,`data-v-4b5e1e5e`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/common/ui/ImageViewport.vue`]]);export{M as n,B as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,S as t,_ as n,g as r,m as i,t as a,v as o,w as s,x as c,z as l}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{E as u}from"./styles-C07CLvbW.js";import{tt as d}from"./shared.esm-bundler-EUzHGNqQ.js";import{d as f,u as p}from"./UiViewerPage-z_s1uFHO.js";import{n as m,r as h,t as g}from"./TrackerDetail-CV0Qqzx3.js";var _=s({__name:`IssueView`,props:{projectId:{type:String,required:!0},number:{type:Number,required:!0},host:{type:String,required:!1,default:`GitHub`}},emits:[`open`],setup(e,{expose:t,emit:n}){t();let r=e,a=n,{detail:o,loading:s,error:c}=h(()=>r.projectId,()=>r.number,`issue`,`Не удалось открыть issue`),l=i(()=>(o.value?.comments??[]).map(e=>({...e,at:e.createdAt})));f(()=>{let e=`Issue #${o.value?.issue.number??r.number}`;if(c.value)return{note:e,text:`Ошибка: ${c.value}`};let t=o.value;if(!t)return{note:e,text:`Загрузка…`};let n=t.issue,i=n.body.length>4e3?`${n.body.slice(0,4e3)}…`:n.body;return{note:e,text:p(n.state===`closed`?`Состояние: закрыт`:`Состояние: открыт`,`${n.title} (#${n.number})`,`Автор: ${n.author.login}, создано ${n.createdAt}`,n.labels.length?`Метки: ${n.labels.map(e=>e.name).join(`, `)}`:`Метки: нет`,`Комментариев: ${n.comments}`,i,t.commentsTruncated?`Комментарии показаны не все.`:``)}});let d={props:r,emit:a,detail:o,loading:s,error:c,comments:l,UiHint:u,TrackerComments:m,TrackerDetail:g};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),v={key:0};function y(i,a,s,u,f,p){return l(),r(u.TrackerDetail,{"project-id":s.projectId,loading:u.loading,error:u.error,ready:!!u.detail,noun:`issue`,state:u.detail?.issue.state??``,"state-label":u.detail?.issue.state===`closed`?`закрыт`:`открыт`,title:u.detail?.issue.title??``,number:u.detail?.issue.number??s.number,author:u.detail?.issue.author??{login:``,avatarUrl:``},"created-at":u.detail?.issue.createdAt??``,"html-url":u.detail?.issue.htmlUrl??``,labels:u.detail?.issue.labels??[],body:u.detail?.issue.body??``,reactions:u.detail?.issue.reactions??[],host:s.host,onOpen:a[1]||=e=>u.emit(`open`,e)},{meta:e(()=>[u.detail?.issue.comments?(l(),o(`span`,v,d(u.detail.issue.comments)+` комментариев`,1)):n(`v-if`,!0)]),default:e(()=>[t(u.TrackerComments,{"project-id":s.projectId,title:`Комментарии`,empty:`Комментариев нет`,items:u.comments,onOpen:a[0]||=e=>u.emit(`open`,e)},null,8,[`project-id`,`items`]),u.detail?.commentsTruncated?(l(),r(u.UiHint,{key:0,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[c(` Показаны первые 500 комментариев. Откройте issue на `+d(s.host)+`, чтобы увидеть все. `,1)]),_:1})):n(`v-if`,!0)]),_:1},8,[`project-id`,`loading`,`error`,`ready`,`state`,`state-label`,`title`,`number`,`author`,`created-at`,`html-url`,`labels`,`body`,`reactions`,`host`])}var b=a(_,[[`render`,y],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/IssueView.vue`]]);export{b as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.save-error[data-v-c3acaa08]{color:var(--err);font-size:var(--fs-xs);padding:10px var(--sp-4);border-bottom:1px solid var(--line);margin:0}.save-error button[data-v-c3acaa08]{text-decoration:underline}.markdown-body[data-v-c3acaa08]{flex:1;min-height:0;overflow:hidden}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodeViewer-BAgvP3Yx.js","assets/_plugin-vue_export-helper-C4wFX7Eq.js","assets/shared.esm-bundler-EUzHGNqQ.js","assets/dist-dwBOnDaY.js","assets/styles-C07CLvbW.js","assets/styles-CX3Ni7dk.css","assets/preload-helper-BLdHbfdN.js","assets/dist-23D313r2.js","assets/UiPanel-CND7Qs_n.js","assets/UiPanel-CS77nWcC.css","assets/main-DEEGhxlk.js","assets/github-emoji-C2UmmDoA.js","assets/ImageViewport-lPITcKgO.js","assets/ImageViewport-BXN_-Ztv.css","assets/github-emoji-qJihbtN6.css","assets/UiViewerPage-z_s1uFHO.js","assets/external-link-BFTqPI03.js","assets/UiViewerPage-BOvnLith.css","assets/main-CgMl4Qjs.css","assets/dist-CRLdLpSX.js","assets/editor-theme-DuQQ8n56.js","assets/CodeViewer-QIU6uQDH.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,C as t,S as n,_ as r,ct as i,et as a,g as o,h as s,it as c,l,t as u,v as d,w as f,x as p,z as m}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{D as h}from"./styles-C07CLvbW.js";import{tt as g}from"./shared.esm-bundler-EUzHGNqQ.js";import{t as _}from"./UiPanel-CND7Qs_n.js";import{t as v}from"./preload-helper-BLdHbfdN.js";import{k as y,t as b}from"./main-DEEGhxlk.js";import{t as x}from"./VisualMarkdownEditor-CwwWF0eb.js";var S={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function C(e,t){return m(),d(`svg`,S,[...t[0]||=[s(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16`},null,-1)]])}var w=c({name:`lucide-code-xml`,render:C}),T=f({__name:`MarkdownViewer`,props:{projectId:{type:String,required:!0},path:{type:String,required:!0},scope:{type:Object,required:!1},content:{type:String,required:!0},mode:{type:String,required:!0},error:{type:String,required:!1},editable:{type:Boolean,required:!1,default:!0},line:{type:Number,required:!1},endLine:{type:Number,required:!1},column:{type:Number,required:!1}},emits:[`change`,`mode`,`save`,`command`,`open`],setup(e,{expose:n,emit:r}){n();let a=t(()=>v(()=>import(`./CodeViewer-BAgvP3Yx.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]))),o=r,s=i(``);function c(e){let t=e.currentTarget,n=e.relatedTarget;n instanceof Node&&t.contains(n)||o(`save`)}let l={CodeViewer:a,emit:o,editorError:s,focusOut:c,UiPanel:_,UiButton:h,get IconCode(){return w},get IconDocument(){return y},EditorTopbarActions:b,VisualMarkdownEditor:x};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),E={key:0,class:`save-error`,role:`alert`},D={key:1,class:`save-error`,role:`alert`},O={class:`markdown-body`};function k(t,i,c,u,f,h){return m(),o(u.UiPanel,{class:`markdown-viewer`,"aria-label":`Документ Markdown`,onFocusout:u.focusOut},{default:e(()=>[c.error?(m(),d(`p`,E,g(c.error),1)):r(`v-if`,!0),u.editorError&&c.mode===`document`?(m(),d(`p`,D,[p(g(u.editorError)+` `,1),s(`button`,{onClick:i[0]||=e=>u.emit(`mode`,`source`)},`Открыть исходник`)])):r(`v-if`,!0),n(u.EditorTopbarActions,null,{default:e(()=>[n(u.UiButton,{shape:`icon`,size:`sm`,"aria-label":c.mode===`source`?`Показать как документ`:`Показать исходник`,title:c.mode===`source`?`Режим документа (WYSIWYG)`:`Режим исходника (Markdown)`,onClick:i[1]||=e=>u.emit(`command`,`ide.editor.markdown.toggleSource`)},{default:e(()=>[c.mode===`source`?(m(),o(u.IconDocument,{key:0,"aria-hidden":`true`})):(m(),o(u.IconCode,{key:1,"aria-hidden":`true`}))]),_:1},8,[`aria-label`,`title`])]),_:1}),s(`div`,O,[a(n(u.VisualMarkdownEditor,{path:c.path,editable:c.editable!==!1,"project-id":c.projectId,scope:c.scope,content:c.content,onChange:i[2]||=e=>u.emit(`change`,e),onOpen:i[3]||=e=>u.emit(`open`,e),onSource:i[4]||=e=>u.emit(`mode`,`source`),onCommand:i[5]||=(e,t)=>u.emit(`command`,e,t),onError:i[6]||=e=>u.editorError=e},null,8,[`path`,`editable`,`project-id`,`scope`,`content`]),[[l,c.mode===`document`]]),c.mode===`source`?(m(),o(u.CodeViewer,{key:0,path:c.path,"project-id":c.projectId,content:c.content,line:c.line,"end-line":c.endLine,column:c.column,editable:c.editable!==!1,onChange:i[7]||=e=>u.emit(`change`,e),onSave:i[8]||=e=>u.emit(`save`)},null,8,[`path`,`project-id`,`content`,`line`,`end-line`,`column`,`editable`])):r(`v-if`,!0)])]),_:1})}var A=u(T,[[`render`,k],[`__scopeId`,`data-v-c3acaa08`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/MarkdownViewer.vue`]]);export{A as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{$ as e,S as t,V as n,Z as r,_ as i,ct as a,dt as o,f as s,g as c,h as l,it as u,m as d,t as f,v as p,w as m,x as h,z as g}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{D as _,E as v,N as y,_ as b,m as x,v as S,y as C}from"./styles-C07CLvbW.js";import{q as w,tt as T}from"./shared.esm-bundler-EUzHGNqQ.js";import{A as E,I as D,L as O,Q as k,X as A,Z as j}from"./dist-dwBOnDaY.js";import{a as M,d as ee,u as N}from"./UiViewerPage-z_s1uFHO.js";import{d as P,f as F,g as I,j as L}from"./main-DEEGhxlk.js";import{n as R,r as z,t as te}from"./TrackerDetail-CV0Qqzx3.js";var B={mergeable:`можно вливать`,checking:`проверяется`,preparing:`готовится`,ci_still_running:`pipeline идёт`,ci_must_pass:`нужен успешный pipeline`,status_checks_must_pass:`нужны status checks`,approvals_syncing:`одобрения синхронизируются`,not_approved:`нужно одобрение`,blocked_status:`заблокирован`,merge_request_blocked:`ждёт другой merge request`,conflict:`конфликт`,discussions_not_resolved:`обсуждения не решены`,draft_status:`черновик`,commits_status:`нет коммитов`,merge_time:`время merge не наступило`,requested_changes:`запрошены изменения`,security_policy_violations:`нарушена security policy`,jira_association_missing:`нет связи с Jira`},V=new Set([`conflict`,`discussions_not_resolved`,`draft_status`,`not_approved`,`requested_changes`,`security_policy_violations`]),H=new Set([`checking`,`preparing`,`ci_still_running`,`ci_must_pass`,`status_checks_must_pass`,`approvals_syncing`,`blocked_status`,`merge_request_blocked`,`merge_time`,`jira_association_missing`]);function U(e){return e?B[e]??e:``}function W(e){return e===`mergeable`?`success`:V.has(e)?`danger`:H.has(e)?`warning`:`muted`}function G(e,t,n){return P({projectId:e,action:`pull-diff`,params:()=>({number:String(t())}),errorFallback:`Не удалось прочитать изменения`,resetOn:n})}var K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return g(),p(`svg`,K,[...t[0]||=[l(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[l(`path`,{d:`M8 5h13m-8 7h8m-8 7h8M3 10a2 2 0 0 0 2 2h3`}),l(`path`,{d:`M3 5v12a2 2 0 0 0 2 2h3`})],-1)]])}var J=u({name:`lucide-list-tree`,render:q}),Y=m({__name:`PullRequestFiles`,props:{files:{type:Array,required:!0},changedFiles:{type:Number,required:!0},changedFilesCapped:{type:Boolean,required:!1},filesTruncated:{type:Boolean,required:!0},diffRefs:{type:Object,required:!1},expanded:{type:Set,required:!0},heights:{type:Object,required:!0},diffs:{type:Object,required:!0},host:{type:String,required:!1}},emits:[`toggle`,`toggleAll`,`open`,`openTree`,`resize`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{resolver:a}=I(),o=d(()=>r.host??`GitLab`),s={added:`A`,removed:`D`,modified:`M`,renamed:`R`,copied:`C`,changed:`M`,unchanged:`·`},c=d(()=>r.files.map(e=>{let t=e.path.split(`/`).at(-1);return{path:e.path,name:t,directory:e.path.split(`/`).slice(0,-1).join(`/`),icon:a.value.resolve({name:t,path:e.path,directory:!1},!1),previousPath:e.previousPath,mark:s[e.status],additions:e.additions,deletions:e.deletions,binary:!!e.binary,tooLarge:e.tooLarge,generated:e.generated,expandable:!!r.diffRefs&&!e.binary&&!e.tooLarge,openable:!!r.diffRefs&&!e.binary&&!e.tooLarge,disabledTitle:r.diffRefs?e.binary?`Бинарный файл`:e.tooLarge?`Файл слишком большой для diff`:`Показать изменения`:`Diff недоступен`,share:e.additions+e.deletions?e.additions/(e.additions+e.deletions):0}})),l={props:r,emit:i,resolver:a,host:o,MARK:s,files:c,textFiles:d(()=>c.value.filter(e=>e.expandable)),additions:d(()=>r.files.reduce((e,t)=>e+t.additions,0)),deletions:d(()=>r.files.reduce((e,t)=>e+t.deletions,0)),showTrees:d(()=>!!r.diffRefs),totalFiles:d(()=>r.changedFilesCapped?`${r.changedFiles}+`:String(r.changedFiles)),UiButton:_,UiHeading:y,UiHint:v,ChangedFileRow:F,get IconTree(){return J}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),X={class:`changes`},Z={class:`head`},Q={class:`count`},ne={class:`totals`},re={class:`add`},ie={class:`del`},ae={key:1,class:`file-list`};function oe(r,a,o,u,d,f){return g(),p(`section`,X,[l(`div`,Z,[t(u.UiHeading,{as:`h3`,size:`sm`,tone:`secondary`,"space-after":0},{default:e(()=>[a[2]||=h(` Изменённые файлы `,-1),l(`span`,Q,T(u.files.length),1)]),_:1}),l(`span`,ne,[l(`b`,re,`+`+T(u.additions),1),l(`b`,ie,`−`+T(u.deletions),1)]),u.showTrees?(g(),p(`button`,{key:0,type:`button`,class:`tree-button`,"data-command":`ide.mergeRequest.files.open`,title:`Открыть дерево изменений в боковой панели`,onClick:a[0]||=e=>u.emit(`openTree`)},[t(u.IconTree,{"aria-hidden":`true`}),a[3]||=h(` Дерево `,-1)])):i(`v-if`,!0),u.textFiles.length&&o.diffRefs?(g(),c(u.UiButton,{key:1,size:`sm`,"data-command":`ide.mergeRequest.files.toggleAll`,onClick:a[1]||=e=>u.emit(`toggleAll`)},{default:e(()=>[h(T(o.expanded.size?`Свернуть всё`:`Развернуть всё`),1)]),_:1})):i(`v-if`,!0)]),u.files.length?(g(),p(`ul`,ae,[(g(!0),p(s,null,n(u.files,e=>(g(),c(u.ChangedFileRow,{key:e.path,file:e,expanded:o.expanded.has(e.path),diff:o.diffs[e.path],height:o.heights[e.path],"open-command":`ide.mergeRequest.file.open`,host:u.host,onToggle:t=>u.emit(`toggle`,e.path,t),onOpen:t=>u.emit(`open`,e.path),onResize:t=>u.emit(`resize`,e.path,t)},null,8,[`file`,`expanded`,`diff`,`height`,`host`,`onToggle`,`onOpen`,`onResize`]))),128))])):(g(),c(u.UiHint,{key:0,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[...a[4]||=[h(`Файлов нет`,-1)]]),_:1})),o.filesTruncated||o.changedFilesCapped?(g(),c(u.UiHint,{key:2,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[h(` Показано `+T(u.files.length)+` из `+T(u.totalFiles)+` файлов. Остальные — на `+T(u.host)+`. `,1)]),_:1})):i(`v-if`,!0),o.filesTruncated&&u.files.length?(g(),c(u.UiHint,{key:3,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[...a[5]||=[h(` Суммы +/− посчитаны по показанным файлам. `,-1)]]),_:1})):i(`v-if`,!0),o.diffRefs?i(`v-if`,!0):(g(),c(u.UiHint,{key:4,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[h(` Diff файлов этого источника пока недоступен. Изменённые файлы можно посмотреть на `+T(u.host)+`. `,1)]),_:1}))])}var se=f(Y,[[`render`,oe],[`__scopeId`,`data-v-7daf4b69`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/PullRequestFiles.vue`]]),ce=new Set([`queued`,`running`]);function le(e,t){let n=o(),i=a(!1),s=a(``),c=a(0);return r(()=>[e(),t(),c.value],async([e,t],r,a)=>{let o=new AbortController,l=!0,u;a(()=>{l=!1,clearTimeout(u),o.abort()}),i.value=!n.value,s.value=``;try{let r=await E(e,`pipeline`,{id:String(t)},o.signal);if(!l)return;n.value=r,ce.has(r.pipeline.status)&&(u=setTimeout(()=>c.value++,1e4))}catch(e){l&&(s.value=e instanceof Error?e.message:`Не удалось открыть pipeline`)}finally{l&&(i.value=!1)}},{immediate:!0}),{detail:n,loading:i,error:s,reload:()=>c.value++}}var ue=m({__name:`PullRequestPipelineStages`,props:{projectId:{type:String,required:!0},id:{type:Number,required:!0},host:{type:String,required:!0}},emits:[`openJob`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{detail:a,error:o}=le(()=>r.projectId,()=>r.id),s={props:r,emit:i,detail:a,error:o,groups:d(()=>D(a.value?.jobs??[])),UiHint:v,UiStatusDot:C,get durationLabel(){return k},get PIPELINE_STATUS_TONE(){return j}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),de={class:`stages`},fe={class:`stage-head`},pe={class:`stage-name`},me={class:`stage-count`},he={class:`stage-summary`},ge={key:0,class:`jobs`},_e=[`title`,`onClick`],ve={class:`job-name`},ye={key:0,class:`job-time`},be={class:`job-number`},xe={key:0,class:`more`};function Se(r,a,o,u,d,f){return g(),p(`div`,de,[!u.detail&&!u.error?(g(),c(u.UiHint,{key:0,size:`xs`,leading:`inherit`,class:`note`,role:`status`},{default:e(()=>[...a[0]||=[h(`загрузка: стадии…`,-1)]]),_:1})):u.error?(g(),c(u.UiHint,{key:1,size:`xs`,leading:`inherit`,class:`note error`,role:`alert`},{default:e(()=>[h(T(u.error),1)]),_:1})):u.groups.length?i(`v-if`,!0):(g(),c(u.UiHint,{key:2,size:`xs`,leading:`inherit`,class:`note`},{default:e(()=>[...a[1]||=[h(`Джобов нет`,-1)]]),_:1})),(g(!0),p(s,null,n(u.groups,e=>(g(),p(`div`,{key:e.stage,class:`stage`},[l(`div`,fe,[t(u.UiStatusDot,{tone:e.tone,shrink:``},null,8,[`tone`]),l(`span`,pe,T(e.stage),1),l(`span`,me,T(e.done)+`/`+T(e.total),1),l(`span`,he,T(e.summary.join(` · `)),1)]),e.visible.length?(g(),p(`div`,ge,[(g(!0),p(s,null,n(e.visible,e=>(g(),p(`button`,{key:e.id,type:`button`,class:`job`,title:e.failureReason||`Открыть джоб #${e.id}`,onClick:t=>u.emit(`openJob`,{id:e.id,title:e.name})},[t(u.UiStatusDot,{tone:u.PIPELINE_STATUS_TONE[e.status],shrink:``},null,8,[`tone`]),l(`span`,ve,T(e.name||`Job #${e.id}`),1),u.durationLabel(e.duration)?(g(),p(`span`,ye,T(u.durationLabel(e.duration)),1)):i(`v-if`,!0),l(`span`,be,`#`+T(e.id),1)],8,_e))),128)),e.hidden?(g(),p(`span`,xe,`ещё `+T(e.hidden)+` · откройте pipeline`,1)):i(`v-if`,!0)])):i(`v-if`,!0)]))),128)),u.detail?.jobsTruncated?(g(),c(u.UiHint,{key:3,size:`xs`,leading:`inherit`,class:`note`},{default:e(()=>[h(` Показаны не все джобы — остальные на `+T(o.host)+`. `,1)]),_:1})):i(`v-if`,!0)])}var Ce=f(ue,[[`render`,Se],[`__scopeId`,`data-v-7b33ebd1`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/PullRequestPipelineStages.vue`]]),we=m({__name:`PullRequestPipeline`,props:{projectId:{type:String,required:!0},pipeline:{type:Object,required:!0},host:{type:String,required:!1,default:`GitLab`}},emits:[`openPipeline`,`openJob`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,o=a(!1),s=S(`merge-request-pipeline:${r.projectId}:${r.pipeline.id}`,()=>({surface:`merge-request-pipeline`,projectId:r.projectId,pipelineId:r.pipeline.id})),c=b(s.scope);c(`ide.mergeRequest.pipeline.toggle`,`Показать или скрыть стадии pipeline merge request`,`Раскрывает ход pipeline по стадиям прямо в карточке merge request.`,()=>{o.value=!o.value});let l={props:r,emit:i,open:o,commands:s,register:c,UiButton:_,UiStatusDot:C,get relativeTime(){return M},get durationLabel(){return k},get PIPELINE_STATUS_LABEL(){return A},get PIPELINE_STATUS_TONE(){return j},PullRequestPipelineStages:Ce,get IconChevronRight(){return L}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Te={class:`pipeline-card`},Ee={class:`summary-row`},De=[`aria-expanded`,`title`],Oe={class:`title`},ke={class:`state`},Ae={key:0,class:`meta`},je=[`title`],Me=[`href`];function Ne(n,r,a,o,s,u){return g(),p(`div`,Te,[l(`div`,Ee,[l(`button`,{type:`button`,class:`summary`,"aria-expanded":o.open,"data-command":`ide.mergeRequest.pipeline.toggle`,title:o.open?`Свернуть стадии`:`Показать стадии`,onClick:r[0]||=e=>o.open=!o.open},[t(o.IconChevronRight,{class:w([`chevron`,{open:o.open}]),"aria-hidden":`true`},null,8,[`class`]),t(o.UiStatusDot,{tone:o.PIPELINE_STATUS_TONE[a.pipeline.status],shrink:``},null,8,[`tone`]),l(`span`,Oe,`Pipeline #`+T(a.pipeline.id),1),l(`span`,ke,T(o.PIPELINE_STATUS_LABEL[a.pipeline.status]),1),o.durationLabel(a.pipeline.duration)?(g(),p(`span`,Ae,`за `+T(o.durationLabel(a.pipeline.duration)),1)):i(`v-if`,!0),a.pipeline.createdAt?(g(),p(`span`,{key:1,class:`meta`,title:a.pipeline.createdAt},`создан `+T(o.relativeTime(a.pipeline.createdAt)),9,je)):i(`v-if`,!0)],8,De),t(o.UiButton,{size:`sm`,"data-command":`ide.mergeRequest.pipeline.open`,onClick:r[1]||=e=>o.emit(`openPipeline`,{id:o.props.pipeline.id,title:o.props.pipeline.name})},{default:e(()=>[...r[3]||=[h(` Открыть `,-1)]]),_:1}),a.pipeline.webUrl?(g(),p(`a`,{key:0,class:`external`,href:a.pipeline.webUrl,target:`_blank`,rel:`noopener noreferrer`},`на `+T(a.host),9,Me)):i(`v-if`,!0)]),o.open?(g(),c(o.PullRequestPipelineStages,{key:0,"project-id":a.projectId,id:a.pipeline.id,host:a.host,onOpenJob:r[2]||=e=>o.emit(`openJob`,e)},null,8,[`project-id`,`id`,`host`])):i(`v-if`,!0)])}var Pe=f(we,[[`render`,Ne],[`__scopeId`,`data-v-7894caf3`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/PullRequestPipeline.vue`]]),$=m({__name:`PullRequestView`,props:{projectId:{type:String,required:!0},number:{type:Number,required:!0},host:{type:String,required:!1,default:`GitHub`},short:{type:String,required:!1,default:`PR`},noun:{type:String,required:!1,default:`pull request`},onOpenSection:{type:Function,required:!1},onOpenPullFile:{type:Function,required:!1},onOpenJob:{type:Function,required:!1}},emits:[`open`,`openPipeline`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{detail:a,loading:o,error:s,reload:c}=z(()=>r.projectId,()=>r.number,`pull`,`Не удалось открыть ${r.noun}`),l=d(()=>a.value?.diffRefs?.headSha??``),u=d(()=>a.value?.mergeStatus??``),{expanded:f,heights:p,diffs:m,toggle:h}=G(()=>r.projectId,()=>r.number,()=>l.value),g=d(()=>(a.value?.files??[]).filter(e=>!e.binary&&!e.tooLarge)),_=S(`merge-request:${r.projectId}:${r.number}`,()=>({surface:`merge-request`,projectId:r.projectId,number:r.number})),y=b(_.scope),w={open:`открыт`,closed:`закрыт`,merged:`влит`},T={approved:`одобрил`,changes_requested:`запросил изменения`,commented:`прокомментировал`,dismissed:`ревью отклонено`,pending:`черновик ревью`},E={added:`A`,removed:`D`,modified:`M`,renamed:`R`,copied:`C`,changed:`M`,unchanged:`·`},D=e=>e.previousPath?`${e.previousPath} → ${e.path}`:e.path,k=d(()=>(a.value?.reviews??[]).map(e=>({...e,at:e.submittedAt,badge:T[e.state],badgeClass:e.state}))),j=d(()=>(a.value?.comments??[]).map(e=>({...e,at:e.createdAt}))),M=d(()=>{let e=a.value?.pull;return e?.draft&&e.state===`open`?`черновик`:w[e?.state??`open`]}),P=d(()=>a.value?.pipeline??null),F=d(()=>new Set((a.value?.reviews??[]).map(e=>e.author.login))),I=d(()=>{let e=new Set,t=(a.value?.reviewers??[]).map(t=>(e.add(t.login),{author:t,approved:F.value.has(t.login)}));for(let n of a.value?.approvals?.approvedBy??[])e.has(n.login)||(e.add(n.login),t.push({author:n,approved:!0}));return t.sort((e,t)=>Number(t.approved)-Number(e.approved))}),L=()=>{P.value&&i(`openPipeline`,{id:P.value.id,title:P.value.name})},B=()=>{let e=a.value;r.onOpenSection?.({id:`merge-request-files:${r.number}`,title:`Изменения !${r.number}`,source:`Только чтение · MR`,group:`merge-requests`,kind:`merge-request-files`,params:{number:r.number,head:l.value,...e?{snapshot:{files:e.files,changedFiles:e.changedFiles,changedFilesCapped:e.changedFilesCapped===!0,filesTruncated:e.filesTruncated,...e.diffRefs?{diffRefs:e.diffRefs}:{}}}:{}},closable:!0})},V=(e,t=!1)=>r.onOpenPullFile?.(r.number,e,l.value,t),H=e=>r.onOpenJob?.(e);y(`ide.mergeRequest.refresh`,`Обновить merge request`,`Перечитывает состояние, ревью, обсуждение и изменённые файлы merge request.`,()=>c()),y(`ide.mergeRequest.files.open`,`Дерево изменений merge request`,`Открывает временный раздел боковой панели с деревом изменённых файлов merge request.`,()=>B()),y(`ide.mergeRequest.file.open`,`Открыть изменения файла merge request`,`Открывает файл merge request отдельной вкладкой base → head.`,e=>{let{path:t,pinned:n}=x(e);if(typeof t!=`string`||!t)throw Error(`Укажите path файла`);V(t,n===!0)},{path:`string: путь файла в merge request`,pinned:`boolean (необязательно): true — постоянная вкладка`}),y(`ide.mergeRequest.file.toggle`,`Раскрыть изменения файла merge request`,`Раскрывает diff файла прямо в карточке merge request.`,async e=>{let{path:t,open:n}=x(e);if(typeof t!=`string`||!t)throw Error(`Укажите path файла`);if(n!==void 0&&typeof n!=`boolean`)throw Error(`open должен быть boolean`);await h(t,n)},{path:`string: путь файла`,open:`boolean (необязательно): true/false`}),y(`ide.mergeRequest.files.toggleAll`,`Раскрыть или свернуть все файлы merge request`,`Раскрывает diff всех текстовых файлов merge request или сворачивает их.`,async e=>{let{open:t}=x(e);(typeof t==`boolean`?t:f.value.size===0)?await Promise.all(g.value.map(e=>h(e.path,!0))):f.value.clear()},{open:`boolean (необязательно): true — раскрыть всё, false — свернуть`}),y(`ide.mergeRequest.pipeline.open`,`Открыть pipeline merge request`,`Открывает вкладку последнего pipeline источника merge request.`,()=>L()),y(`ide.mergeRequest.pipeline.job.open`,`Открыть джоб merge request`,`Открывает вкладку джоба pipeline merge request.`,e=>{let{id:t,title:n}=x(e);if(typeof t!=`number`)throw Error(`Укажите номер джоба`);H({id:t,title:typeof n==`string`?n:``})},{id:`number: номер джоба`,title:`string (необязательно): заголовок`}),ee(()=>{let e=`${r.short} #${a.value?.pull.number??r.number}`;if(s.value)return{note:e,text:`Ошибка: ${s.value}`};let t=a.value;if(!t)return{note:e,text:`Загрузка…`};let n=t.pull,i=n.body.length>4e3?`${n.body.slice(0,4e3)}…`:n.body,o=t.reviews.map(e=>`${T[e.state]}: ${e.author.login}`),c=t.files.map(e=>`${E[e.status]} ${D(e)}`),l=c.slice(0,100);return{note:e,text:N(`Состояние: ${M.value}`,`${n.title} (#${n.number})`,`Автор: ${n.author.login}, создано ${n.createdAt}`,`Ветки: ${n.head} → ${n.base}`,u.value?`Готовность: ${U(u.value)}`:``,t.diffRefs?`Diff: ${t.diffRefs.baseSha.slice(0,7)}..${t.diffRefs.headSha.slice(0,7)}`:`Diff ещё не подготовлен`,`Коммитов: ${t.commits}, файлов: ${t.changedFiles}, +${t.additions} −${t.deletions}`,t.pipeline?`Pipeline: #${t.pipeline.id} ${A[t.pipeline.status]}`:``,I.value.length?`Ревьюеры: ${I.value.map(e=>`${e.author.login}${e.approved?` (одобрил)`:``}`).join(`, `)}`:``,n.labels.length?`Метки: ${n.labels.map(e=>e.name).join(`, `)}`:`Метки: нет`,`Комментариев: ${t.comments.length}`,o.length?`Ревью (${o.length}):\n${o.join(`
|
|
2
|
+
`)}`:`Ревью: нет`,c.length?`Файлы (${c.length}):\n${l.join(`
|
|
3
|
+
`)}${c.length>l.length?`\n… ещё ${c.length-l.length}`:``}`:`Файлы: нет`,t.filesTruncated?`Файлы показаны не все (${t.files.length} из ${t.changedFiles}${t.changedFilesCapped?`+`:``}).`:``,t.commentsTruncated?`Комментарии показаны не все.`:``,i)}});let K={props:r,emit:i,detail:a,loading:o,error:s,reload:c,headSha:l,mergeStatus:u,expanded:f,heights:p,diffs:m,toggleFile:h,textFiles:g,commands:_,register:y,STATE_LABEL:w,REVIEW_LABEL:T,FILE_MARK:E,filePath:D,reviews:k,comments:j,stateLabel:M,pipeline:P,approvedLogins:F,reviewers:I,openPipeline:L,openChangesTree:B,openFile:V,openJob:H,UiHint:v,UiStatusDot:C,get countRu(){return O},get mergeStatusLabel(){return U},get mergeStatusTone(){return W},TrackerComments:R,TrackerDetail:te,PullRequestFiles:se,PullRequestPipeline:Pe};return Object.defineProperty(K,"__isScriptSetup",{enumerable:!1,value:!0}),K}}),Fe={class:`branches`},Ie={key:0,class:`conflict`},Le={key:1,class:`conflict`},Re={key:2,class:`review-line`},ze={key:0,class:`stats`},Be={class:`add`},Ve={class:`del`};function He(r,a,o,u,d,f){return g(),c(u.TrackerDetail,{"project-id":o.projectId,loading:u.loading,error:u.error,ready:!!u.detail,noun:o.noun,state:u.detail?.pull.state??``,"state-label":u.stateLabel,title:u.detail?.pull.title??``,number:u.detail?.pull.number??o.number,author:u.detail?.pull.author??{login:``,avatarUrl:``},"created-at":u.detail?.pull.createdAt??``,"html-url":u.detail?.pull.htmlUrl??``,labels:u.detail?.pull.labels??[],body:u.detail?.pull.body??``,reactions:u.detail?.pull.reactions??[],host:o.host,onOpen:a[7]||=e=>u.emit(`open`,e)},{meta:e(()=>[l(`span`,Fe,T(u.detail?.pull.head)+` → `+T(u.detail?.pull.base),1)]),summary:e(()=>[u.mergeStatus&&!(u.detail?.pull.draft&&u.mergeStatus===`draft_status`)?(g(),p(`p`,{key:0,class:w([`merge-status`,u.mergeStatusTone(u.mergeStatus)])},[t(u.UiStatusDot,{tone:u.mergeStatusTone(u.mergeStatus),shrink:``},null,8,[`tone`]),l(`span`,null,T(u.mergeStatusLabel(u.mergeStatus)),1),u.detail?.hasConflicts?(g(),p(`span`,Ie,`конфликты`)):u.detail?.blockingDiscussionsResolved===!1?(g(),p(`span`,Le,`обсуждения не решены`)):i(`v-if`,!0)],2)):i(`v-if`,!0),u.pipeline?(g(),c(u.PullRequestPipeline,{key:1,"project-id":o.projectId,pipeline:u.pipeline,host:o.host,onOpenPipeline:a[0]||=e=>u.emit(`openPipeline`,e),onOpenJob:u.openJob},null,8,[`project-id`,`pipeline`,`host`])):i(`v-if`,!0),u.reviewers.length?(g(),p(`p`,Re,[a[8]||=l(`span`,{class:`approvals`},`Ревьюеры`,-1),(g(!0),p(s,null,n(u.reviewers,e=>(g(),p(`span`,{key:e.author.login,class:`reviewer`},[l(`span`,{class:w({approved:e.approved})},T(e.author.login),3),l(`span`,{class:w([`reviewer-mark`,{approved:e.approved}])},T(e.approved?`✓`:`○`),3)]))),128))])):i(`v-if`,!0)]),stats:e(()=>[u.detail?(g(),p(`p`,ze,[l(`span`,null,T(u.countRu(u.detail.commits,`коммит`,`коммита`,`коммитов`)),1),l(`span`,null,T(u.countRu(u.detail.changedFiles,`файл`,`файла`,`файлов`))+T(u.detail.changedFilesCapped?`+`:``),1),l(`span`,Be,`+`+T(u.detail.additions),1),l(`span`,Ve,`−`+T(u.detail.deletions),1)])):i(`v-if`,!0)]),default:e(()=>[u.reviews.length?(g(),c(u.TrackerComments,{key:0,"project-id":o.projectId,title:`Ревью`,items:u.reviews,onOpen:a[1]||=e=>u.emit(`open`,e)},null,8,[`project-id`,`items`])):i(`v-if`,!0),u.detail?(g(),c(u.PullRequestFiles,{key:1,files:u.detail.files,"changed-files":u.detail.changedFiles,"changed-files-capped":u.detail.changedFilesCapped,"files-truncated":u.detail.filesTruncated,"diff-refs":u.detail.diffRefs,host:o.host,expanded:u.expanded,heights:u.heights,diffs:u.diffs,onToggle:a[2]||=(e,t)=>u.commands.run(`ide.mergeRequest.file.toggle`,{path:e,open:t}),onToggleAll:a[3]||=e=>u.commands.run(`ide.mergeRequest.files.toggleAll`),onOpen:u.openFile,onOpenTree:a[4]||=e=>u.commands.run(`ide.mergeRequest.files.open`),onResize:a[5]||=(e,t)=>u.heights[e]=t},null,8,[`files`,`changed-files`,`changed-files-capped`,`files-truncated`,`diff-refs`,`host`,`expanded`,`heights`,`diffs`])):i(`v-if`,!0),t(u.TrackerComments,{"project-id":o.projectId,title:`Обсуждение`,empty:`Комментариев нет`,items:u.comments,onOpen:a[6]||=e=>u.emit(`open`,e)},null,8,[`project-id`,`items`]),u.detail?.commentsTruncated?(g(),c(u.UiHint,{key:2,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[h(` Показаны первые 500 комментариев. Откройте `+T(o.noun)+` на `+T(o.host)+`, чтобы увидеть все. `,1)]),_:1})):i(`v-if`,!0)]),_:1},8,[`project-id`,`loading`,`error`,`ready`,`noun`,`state`,`state-label`,`title`,`number`,`author`,`created-at`,`html-url`,`labels`,`body`,`reactions`,`host`])}var Ue=f($,[[`render`,He],[`__scopeId`,`data-v-c13d0f73`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/PullRequestView.vue`]]);export{Ue as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.changes[data-v-7daf4b69]{margin-top:var(--sp-4)}.head[data-v-7daf4b69]{align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.count[data-v-7daf4b69]{color:var(--faint);font:var(--fs-2xs) var(--mono)}.totals[data-v-7daf4b69]{font:var(--fs-2xs) var(--mono);margin-left:auto}.tree-button[data-v-7daf4b69]{align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--muted);font-size:var(--fs-2xs);display:inline-flex}.tree-button[data-v-7daf4b69]:hover{color:var(--text);border-color:var(--line-strong)}.tree-button svg[data-v-7daf4b69]{width:13px;height:13px}.file-list[data-v-7daf4b69]{border:1px solid var(--line);border-radius:var(--r-md);margin:0;padding:0;list-style:none;overflow:hidden}.file-list li+li[data-v-7daf4b69]{border-top:1px solid var(--line)}.add[data-v-7daf4b69],.del[data-v-7daf4b69]{font:var(--fs-2xs) var(--mono);flex-shrink:0}.add[data-v-7daf4b69]{color:var(--run)}.del[data-v-7daf4b69]{color:var(--err)}.stages[data-v-7b33ebd1]{padding:0 var(--sp-3) var(--sp-2)}.stage+.stage[data-v-7b33ebd1]{margin-top:var(--sp-1)}.stage-head[data-v-7b33ebd1]{align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0;color:var(--muted);font-size:var(--fs-2xs);display:flex}.stage-name[data-v-7b33ebd1]{color:var(--text-2);font-weight:500}.stage-count[data-v-7b33ebd1]{font-family:var(--mono)}.stage-summary[data-v-7b33ebd1]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--faint);overflow:hidden}.jobs[data-v-7b33ebd1]{padding-left:var(--sp-4);flex-direction:column;gap:2px;display:flex}.job[data-v-7b33ebd1]{align-items:center;gap:var(--sp-2);padding:2px var(--sp-2);border-radius:var(--r-sm);text-align:left;color:var(--text-2);font-size:var(--fs-2xs);display:flex}.job[data-v-7b33ebd1]:hover{background:var(--active);color:var(--text)}.job-name[data-v-7b33ebd1]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.job-time[data-v-7b33ebd1],.job-number[data-v-7b33ebd1]{color:var(--muted);font-family:var(--mono)}.more[data-v-7b33ebd1]{padding:1px var(--sp-2);color:var(--faint);font-size:var(--fs-2xs)}.note[data-v-7b33ebd1]{margin:var(--sp-1) 0 0}.pipeline-card[data-v-7894caf3]{margin-top:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-2);font-size:var(--fs-xs)}.summary-row[data-v-7894caf3]{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);min-width:0;display:flex}.summary[data-v-7894caf3]{align-items:center;gap:var(--sp-2);text-align:left;min-width:0;color:var(--text-2);flex:1;display:flex}.summary[data-v-7894caf3]:hover{color:var(--text)}.chevron[data-v-7894caf3]{width:12px;height:12px;color:var(--faint);transition:transform var(--t-fast);flex-shrink:0}.chevron.open[data-v-7894caf3]{transform:rotate(90deg)}.title[data-v-7894caf3]{font-family:var(--mono);white-space:nowrap}.state[data-v-7894caf3]{color:var(--muted);white-space:nowrap}.meta[data-v-7894caf3]{color:var(--faint);font-size:var(--fs-2xs);white-space:nowrap}.external[data-v-7894caf3]{color:var(--muted);font-size:var(--fs-2xs);white-space:nowrap;text-decoration:underline}.branches[data-v-c13d0f73]{font-family:var(--mono);color:var(--text-2)}.stats[data-v-c13d0f73]{gap:var(--sp-2);margin:var(--sp-2) 0 0;color:var(--muted);font-size:var(--fs-xs);display:flex}.merge-status[data-v-c13d0f73]{align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0 0;padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-2);color:var(--muted);font-size:var(--fs-2xs);flex-wrap:wrap;display:flex}.merge-status.success[data-v-c13d0f73]{color:var(--run)}.merge-status.warning[data-v-c13d0f73]{color:var(--warn)}.merge-status.danger[data-v-c13d0f73],.conflict[data-v-c13d0f73]{color:var(--err)}.review-line[data-v-c13d0f73]{gap:var(--sp-2);margin:var(--sp-2) 0 0;color:var(--muted);font-size:var(--fs-2xs);flex-wrap:wrap;display:flex}.approvals[data-v-c13d0f73]{color:var(--text-2)}.reviewer[data-v-c13d0f73]{font-family:var(--mono);align-items:center;gap:2px;display:inline-flex}.reviewer .approved[data-v-c13d0f73]{color:var(--run)}.reviewer-mark[data-v-c13d0f73]{color:var(--faint)}.reviewer-mark.approved[data-v-c13d0f73]{color:var(--run)}.add[data-v-c13d0f73]{color:var(--run);font-family:var(--mono)}.del[data-v-c13d0f73]{color:var(--err);font-family:var(--mono)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.release-assets[data-v-fa14a308]{margin-top:var(--sp-4)}.assets-head[data-v-fa14a308],.group h4[data-v-fa14a308]{align-items:baseline;gap:var(--sp-2);margin:0 0 var(--sp-1);color:var(--text-2);font-size:var(--fs-xs);font-weight:600;display:flex}.assets-head h3[data-v-fa14a308]{font-size:var(--fs-xs);margin:0;font-weight:600}.group+.group[data-v-fa14a308]{margin-top:var(--sp-3)}.count[data-v-fa14a308]{color:var(--faint);font-size:var(--fs-2xs);font-weight:400}.asset-list[data-v-fa14a308]{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.asset[data-v-fa14a308]{align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--line);display:flex}.asset-text[data-v-fa14a308]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.asset-name[data-v-fa14a308]{text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);font-family:var(--mono);font-size:var(--fs-xs);overflow:hidden}.asset-meta[data-v-fa14a308]{gap:var(--sp-2);color:var(--muted);font-size:var(--fs-2xs);flex-wrap:wrap;display:flex}.mono[data-v-fa14a308]{font-family:var(--mono)}.asset-action[data-v-fa14a308],.pending[data-v-fa14a308]{padding:3px var(--sp-2);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--text-2);font-size:var(--fs-2xs);flex-shrink:0}.asset-action[data-v-fa14a308]:hover{border-color:var(--line-strong);background:var(--hover);color:var(--text)}.pending[data-v-fa14a308]{color:var(--muted);border-color:#0000}.tag[data-v-0646b39f]{color:var(--muted);font-size:var(--fs-xs)}.mono[data-v-0646b39f]{font-family:var(--mono)}.author[data-v-0646b39f]{font-family:var(--mono);color:var(--text-2)}.body[data-v-0646b39f]{margin-top:var(--sp-3)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{$ as e,S as t,V as n,Z as r,_ as i,ct as a,dt as o,f as s,g as c,h as l,m as u,t as d,v as f,w as p,x as m,z as h}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{E as g,M as _,_ as v,k as y,m as ee,v as b}from"./styles-C07CLvbW.js";import{tt as x}from"./shared.esm-bundler-EUzHGNqQ.js";import{A as S,L as C}from"./dist-dwBOnDaY.js";import{a as w,d as T,i as E,n as D,r as O,s as k,t as A,u as j}from"./UiViewerPage-z_s1uFHO.js";import{m as M,p as N}from"./main-DEEGhxlk.js";import{t as P}from"./VisualMarkdownEditor-CwwWF0eb.js";function F(e,t){let n=o(),i=a(!1),s=a(``),c=a(0);return r(()=>[e(),t(),c.value],async([e,t],r,a)=>{let o=new AbortController,c=!0;a(()=>{c=!1,o.abort()}),i.value=!n.value,s.value=``;try{let r=await S(e,`release`,{tag:t},o.signal);c&&(n.value=r)}catch(e){c&&(s.value=e instanceof Error?e.message:`Не удалось открыть релиз`)}finally{c&&(i.value=!1)}},{immediate:!0}),{detail:n,loading:i,error:s,reload:()=>c.value++}}var I=p({__name:`ReleaseAssets`,props:{assets:{type:Array,required:!0}},setup(e,{expose:t}){t();let n=e,r={props:n,files:u(()=>n.assets.filter(e=>!e.source)),sources:u(()=>n.assets.filter(e=>e.source)),total:u(()=>n.assets.length),UiHint:g,get countRu(){return C},get downloadsLabel(){return N},get sizeLabel(){return M}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),L={key:0,class:`release-assets`,"aria-label":`Файлы релиза`},R={class:`assets-head`},z={class:`count`},te={key:0,class:`group`},B={class:`asset-list`},V={class:`asset-text`},H=[`title`],U={class:`asset-meta`},W={key:0},G={key:1},K=[`title`],q={key:0,class:`pending`},J=[`href`],Y=[`href`,`download`],X={key:1,class:`group`},Z={class:`asset-list`},Q={class:`asset-text`},ne={class:`asset-name`},re={class:`asset-meta`},ie=[`href`,`download`];function ae(t,r,a,o,u,d){return o.total?(h(),f(`section`,L,[l(`div`,R,[r[0]||=l(`h3`,null,`Файлы`,-1),l(`span`,z,x(o.countRu(o.total,`файл`,`файла`,`файлов`)),1)]),o.files.length?(h(),f(`div`,te,[l(`ul`,B,[(h(!0),f(s,null,n(o.files,e=>(h(),f(`li`,{key:e.id,class:`asset`},[l(`span`,V,[l(`span`,{class:`asset-name`,title:e.name},x(e.name),9,H),l(`span`,U,[o.sizeLabel(e.size)?(h(),f(`span`,W,x(o.sizeLabel(e.size)),1)):i(`v-if`,!0),o.downloadsLabel(e.downloads)?(h(),f(`span`,G,x(o.downloadsLabel(e.downloads)),1)):i(`v-if`,!0),e.digest?(h(),f(`span`,{key:2,class:`mono digest`,title:e.digest},x(e.digest.length>28?`${e.digest.slice(0,28)}…`:e.digest),9,K)):i(`v-if`,!0)])]),e.uploading?(h(),f(`span`,q,`загружается`)):e.external?(h(),f(`a`,{key:1,class:`asset-action`,href:e.url,target:`_blank`,rel:`noopener noreferrer`},`Открыть`,8,J)):(h(),f(`a`,{key:2,class:`asset-action`,href:e.url,download:e.name},`Скачать`,8,Y))]))),128))])])):i(`v-if`,!0),o.sources.length?(h(),f(`div`,X,[r[1]||=l(`h4`,null,`Исходный код`,-1),l(`ul`,Z,[(h(!0),f(s,null,n(o.sources,e=>(h(),f(`li`,{key:e.id,class:`asset`},[l(`span`,Q,[l(`span`,ne,x(e.name),1),l(`span`,re,x(e.contentType),1)]),l(`a`,{class:`asset-action`,href:e.url,download:e.name},`Скачать`,8,ie)]))),128))])])):i(`v-if`,!0)])):(h(),c(o.UiHint,{key:1,size:`xs`,leading:`inherit`,"space-before":2,class:`note`},{default:e(()=>[...r[2]||=[m(`Файлов и исходников нет`,-1)]]),_:1}))}var oe=d(I,[[`render`,ae],[`__scopeId`,`data-v-fa14a308`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/ReleaseAssets.vue`]]),$=p({__name:`ReleaseView`,props:{projectId:{type:String,required:!0},tag:{type:String,required:!0},host:{type:String,required:!1,default:`хостинге`}},setup(e,{expose:t}){t();let n=e,{detail:r,loading:i,error:a,reload:o}=F(()=>n.projectId,()=>n.tag),s=u(()=>{let e=r.value?.release;return e?e.draft?`черновик`:e.prerelease?`пререлиз`:e.upcoming?`скоро`:``:``}),c=b(`release:${n.projectId}:${n.tag}`,()=>({surface:`release`,projectId:n.projectId,tag:n.tag,host:n.host})),l=v(c.scope);l(`ide.release.refresh`,`Обновить релиз`,`Перечитывает описание и файлы релиза.`,()=>o()),l(`ide.release.asset.download`,`Скачать файл релиза`,`Открывает внутреннюю ссылку скачивания или страницу внешнего файла.`,e=>{let{id:t}=ee(e);if(typeof t!=`string`||!t)throw Error(`Укажите id файла релиза`);let n=r.value?.assets.find(e=>e.id===t);if(!n)throw Error(`Файл релиза не найден`);if(n.uploading)throw Error(`Файл ещё загружается`);n.external?window.open(n.url,`_blank`,`noopener,noreferrer`):window.location.assign(n.url)},{id:`string: id файла релиза`}),T(()=>{let e=`Release ${n.tag}`;if(a.value)return{note:e,text:`Ошибка: ${a.value}`};let t=r.value;if(!t)return{note:e,text:`Загрузка…`};let i=t.release,o=i.name&&i.name!==i.tag?i.name:``,s=t.assets.map(e=>{let t=M(e.size),n=N(e.downloads);return`${e.source?`исходники`:e.external?`ссылка`:`файл`}: ${e.name}${t?` (${t})`:``}${n?` · ${n}`:``}`});return{note:e,text:j(`Тег: ${i.tag}`,o?`Название: ${o}`:``,`Автор: ${i.author.login||`нет`}`,`Опубликован: ${i.releasedAt||i.createdAt}`,i.draft?`Черновик`:``,i.prerelease?`Пререлиз`:``,i.upcoming?`Запланирован`:``,`Файлов: ${i.assetCount}`,i.downloads===null?``:`Скачиваний: ${i.downloads}`,t.body.length>4e3?`${t.body.slice(0,4e3)}…`:t.body,s.length?`Файлы:\n${s.slice(0,100).join(`
|
|
2
|
+
`)}`:`Файлов нет`,s.length>100?`Показано 100 файлов, остальные — на ${n.host}.`:``)}});let d={props:n,detail:r,loading:i,error:a,reload:o,releaseState:s,commands:c,register:l,UiArticle:O,UiAvatar:k,UiDetailHeader:D,UiViewerPage:A,UiHint:g,UiInline:y,UiMessage:_,get relativeTime(){return w},get absoluteTime(){return E},get downloadsLabel(){return N},VisualMarkdownEditor:P,ReleaseAssets:oe};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),se={class:`tag mono`},ce=[`title`],le={key:1};function ue(n,r,a,o,s,u){return h(),c(o.UiViewerPage,null,{default:e(()=>[o.loading?(h(),c(o.UiHint,{key:0,size:`xs`,leading:`inherit`,role:`status`},{default:e(()=>[...r[0]||=[m(`загрузка: релиз…`,-1)]]),_:1})):o.error?(h(),c(o.UiMessage,{key:1,variant:`note`,tone:`danger`,size:`xs`,role:`alert`},{default:e(()=>[m(x(o.error),1)]),_:1})):o.detail?(h(),c(o.UiArticle,{key:2},{default:e(()=>[t(o.UiDetailHeader,{state:o.releaseState,tone:o.releaseState?`warning`:`neutral`,"external-href":o.detail.release.htmlUrl,host:a.host},{title:e(()=>[m(x(o.detail.release.name&&o.detail.release.name!==o.detail.release.tag?o.detail.release.name:`Релиз`)+` `,1),l(`span`,se,x(o.detail.release.tag),1)]),meta:e(()=>[t(o.UiInline,{as:`span`,inline:``,gap:1.25,justify:`normal`,class:`author`},{default:e(()=>[t(o.UiAvatar,{src:o.detail.release.author.avatarUrl,alt:o.detail.release.author.login,size:18},null,8,[`src`,`alt`]),m(` `+x(o.detail.release.author.login),1)]),_:1}),o.detail.release.releasedAt||o.detail.release.createdAt?(h(),f(`span`,{key:0,title:o.absoluteTime(o.detail.release.releasedAt||o.detail.release.createdAt)},`опубликован `+x(o.relativeTime(o.detail.release.releasedAt||o.detail.release.createdAt)),9,ce)):i(`v-if`,!0),o.detail.release.downloads?(h(),f(`span`,le,x(o.downloadsLabel(o.detail.release.downloads)),1)):i(`v-if`,!0)]),_:1},8,[`state`,`tone`,`external-href`,`host`]),o.detail.body?(h(),c(o.VisualMarkdownEditor,{key:0,class:`body`,content:o.detail.body,path:``,"project-id":a.projectId,editable:!1,compact:``},null,8,[`content`,`project-id`])):(h(),c(o.UiHint,{key:1,size:`xs`,leading:`inherit`,"space-before":2},{default:e(()=>[...r[1]||=[m(`Без описания`,-1)]]),_:1})),t(o.ReleaseAssets,{assets:o.detail.assets},null,8,[`assets`])]),_:1})):i(`v-if`,!0)]),_:1})}var de=d($,[[`render`,ue],[`__scopeId`,`data-v-0646b39f`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/ReleaseView.vue`]]);export{de as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.panes[data-v-29c28f37]{flex:1;min-width:0;min-height:0;display:grid}.pane-resize[data-v-29c28f37]{color:var(--text);font-size:var(--fs-2xs);line-height:var(--fs-2xs);grid-row:2;position:relative}.panes.dragging[data-v-29c28f37],.panes.dragging[data-v-29c28f37] *{-webkit-user-select:none;user-select:none;cursor:row-resize!important}.top-pane[data-v-29c28f37]{flex-direction:column;grid-row:1;min-width:0;min-height:0;display:flex;overflow:hidden}.bottom-pane[data-v-29c28f37]{border-top:1px solid var(--line);grid-row:3;min-width:0;min-height:0;overflow:hidden}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,H as t,S as n,Z as r,ct as i,et as a,h as o,l as s,m as c,t as l,v as u,w as d,z as f}from"./_plugin-vue_export-helper-C4wFX7Eq.js";import{X as p,q as m,tt as h}from"./shared.esm-bundler-EUzHGNqQ.js";import{C as g,S as _}from"./main-DEEGhxlk.js";var v=d({__name:`SplitPanes`,props:{topLabel:{type:String,required:!1},bottomLabel:{type:String,required:!1},reveal:{type:null,required:!1},initial:{type:Number,required:!1,default:.45},solo:{type:Boolean,required:!1,default:!1}},setup(e,{expose:t}){t();let n=e,a=i(),o=i(n.initial),s=i(n.initial),l=n.initial,u=c(()=>({gridTemplateRows:n.solo?`minmax(0, 1fr)`:`minmax(0, ${o.value}fr) 12px minmax(0, ${1-o.value}fr)`})),d=c(()=>n.topLabel??`Рендер`),f=c(()=>n.bottomLabel??`Код`),p=e=>e.toLowerCase(),m=c(()=>o.value===0?`${d.value} скрыт · потяните вниз или дважды нажмите для восстановления`:o.value===1?`${f.value} скрыт · потяните вверх или дважды нажмите для восстановления`:`Соотношение высот: ${p(d.value)} / ${p(f.value)} · у краёв панель схлопывается · двойной клик восстанавливает`);function h(e){let t=e<=.1?0:e>=.9?1:e;(t===0||t===1)&&!b.value&&o.value>0&&o.value<1&&(s.value=o.value),o.value=t}function v(){o.value=s.value}let y=_({start:()=>(l=o.value,o.value>0&&o.value<1&&(s.value=o.value),l),move:e=>{if(!a.value)return;let t=a.value.getBoundingClientRect();h((e.clientY-t.top-6)/Math.max(1,t.height-12))},finish:(e,t)=>{e===`cancel`&&(o.value=t)}}),{dragging:b,start:x}=y;function S(e){if([`ArrowUp`,`ArrowDown`,`Home`,`End`,`Enter`,`Escape`].includes(e.key)){if(e.preventDefault(),e.key===`Escape`)b.value&&(o.value=l),y.stop();else if(e.key===`Enter`)v();else if(e.key===`Home`)h(0);else if(e.key===`End`)h(1);else{let t=e.shiftKey?.1:.05,n=o.value+(e.key===`ArrowDown`?t:-t);h(o.value===0&&n>0?.15:o.value===1&&n<1?.85:n)}}}r(()=>n.reveal,e=>{e&&o.value===1&&v()});let C={props:n,panes:a,split:o,lastSplit:s,get dragStart(){return l},set dragStart(e){l=e},rows:u,top:d,bottom:f,lower:p,separatorTitle:m,setSplit:h,restoreSplit:v,drag:y,dragging:b,startResize:x,resizeKey:S,UiResizeHandle:g};return Object.defineProperty(C,"__isScriptSetup",{enumerable:!1,value:!0}),C}}),y={class:`top-pane`},b={class:`bottom-pane`};function x(r,i,c,l,d,g){return f(),u(`div`,{ref:`panes`,class:m([`panes`,{dragging:l.dragging}]),style:p(l.rows)},[a(o(`div`,y,[t(r.$slots,`top`,{},void 0,!0)],512),[[s,c.solo||l.split>0]]),a(n(l.UiResizeHandle,{labelled:l.split===0||l.split===1,class:`pane-resize`,"aria-label":`Соотношение высот: ${l.lower(l.top)} / ${l.lower(l.bottom)}`,"aria-valuenow":Math.round(l.split*100),"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-valuetext":l.split===0?`${l.top} скрыт`:l.split===1?`${l.bottom} скрыт`:`${l.top} ${Math.round(l.split*100)}%, ${l.lower(l.bottom)} ${Math.round((1-l.split)*100)}%`,title:l.separatorTitle,tabindex:`0`,onPointerdown:l.startResize,onDblclick:l.restoreSplit,onKeydown:l.resizeKey},{default:e(()=>[o(`span`,null,h(l.split===0?`${l.top} ▾`:l.split===1?`${l.bottom} ▴`:``),1)]),_:1},8,[`labelled`,`aria-label`,`aria-valuenow`,`aria-valuetext`,`title`,`onPointerdown`]),[[s,!c.solo]]),a(o(`div`,b,[t(r.$slots,`bottom`,{},void 0,!0)],512),[[s,!c.solo&&l.split<1]])],6)}var S=l(v,[[`render`,x],[`__scopeId`,`data-v-29c28f37`],[`__file`,`/run/media/zede/general/pr/my/image-gen/projector/packages/client/modules/workspace/modules/viewers/ui/SplitPanes.vue`]]);export{S as t};
|