tide-commander 1.201.0 → 1.202.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/CHANGELOG.md +16 -0
- package/dist/assets/{AudioPlayer-jjttJ6SM.js → AudioPlayer-B7nGfgjR.js} +1 -1
- package/dist/assets/{BossLogsModal-DF0ar9g6.js → BossLogsModal-B2hKgPKR.js} +1 -1
- package/dist/assets/{BossSpawnModal-rJfm0Ijw.js → BossSpawnModal-smufSfcS.js} +1 -1
- package/dist/assets/ControlsModal-DFwNI_sS.js +1 -0
- package/dist/assets/{DockerLogsModal-ChSWCsD6.js → DockerLogsModal-CgpZgKz5.js} +1 -1
- package/dist/assets/{EmbeddedEditor-ChdfmuIg.js → EmbeddedEditor-B6e6Tjab.js} +1 -1
- package/dist/assets/{FcStdViewer-CdhcfLu8.js → FcStdViewer-Cvp018yY.js} +1 -1
- package/dist/assets/{GcodeViewer-CG5xftum.js → GcodeViewer-BkGC_S8k.js} +1 -1
- package/dist/assets/{GlbViewer-DvmBSNPm.js → GlbViewer-ksrBWqeR.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-yhSITtw7.js → GmailOAuthSetup-CzIkxjus.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-ugg8hhwa.js → GoogleOAuthSetup-DfGNwK7j.js} +1 -1
- package/dist/assets/{IframeModal-Bjo_-SSc.js → IframeModal-BpLhEygR.js} +1 -1
- package/dist/assets/{IntegrationsPanel-JbfEFuTE.js → IntegrationsPanel-Bjemwaaf.js} +2 -2
- package/dist/assets/{LogViewerModal-CGGtQwwn.js → LogViewerModal-BN-2fkaY.js} +1 -1
- package/dist/assets/{MonitoringModal-D7VxK2C8.js → MonitoringModal-DOXLXC2b.js} +1 -1
- package/dist/assets/{PM2LogsModal-C-Ec4p65.js → PM2LogsModal-rbMVcXlW.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-BBZpQw8I.js → RestoreArchivedAreaModal-zP0f1MJs.js} +1 -1
- package/dist/assets/{Scene2DCanvas-Cpzgqdq1.js → Scene2DCanvas-o7560L-a.js} +1 -1
- package/dist/assets/{SceneManager-B9bEzlSi.js → SceneManager-BgDfVg6I.js} +1 -1
- package/dist/assets/{SkillsPanel-crpQci9P.js → SkillsPanel-CjPjIaWc.js} +2 -2
- package/dist/assets/{SlackMultiInstanceSetup-C1qkAM8r.js → SlackMultiInstanceSetup-DD_rPcgV.js} +1 -1
- package/dist/assets/SpawnModal-D8AMFrPu.js +1 -0
- package/dist/assets/{StatisticsModal-B14YGD66.js → StatisticsModal-Cj-JYH7n.js} +1 -1
- package/dist/assets/{StlViewer-D5EtQxO4.js → StlViewer-BTqw22H9.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-_8NWXgEl.js → SubordinateAssignmentModal-BWeToc-Y.js} +1 -1
- package/dist/assets/{ThreeAreaSelector-Bnb65bJt.js → ThreeAreaSelector-BfXBY8Zd.js} +1 -1
- package/dist/assets/{ThreeViewShortcuts-AI4Mj9zr.js → ThreeViewShortcuts-BGgmAwlu.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-aFrbWG0D.js → TriggerManagerPanel-C_jBXs4k.js} +1 -1
- package/dist/assets/{VideoPlayer-BSVjpcQa.js → VideoPlayer-C-ciwgiq.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-CgFXTubk.js → WorkflowEditorPanel-D09rBihK.js} +1 -1
- package/dist/assets/{abnfDiagram-VRR7QNED-LbVlypD7.js → abnfDiagram-VRR7QNED-Hvauvwpv.js} +1 -1
- package/dist/assets/{arc-DDqZ78fN.js → arc-8xGuxuLE.js} +1 -1
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-BLfa7hLc.js → architectureDiagram-ZJ3FMSHR-DckJ-9FC.js} +1 -1
- package/dist/assets/{area-logos-ml30JJUi.js → area-logos-DKkCiybZ.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-CHWx5n03.js → blockDiagram-677ZJIJ3-DAJq6nFY.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-DvUxK9_Q.js → c4Diagram-LMCZKHZV-PGJGoAsg.js} +1 -1
- package/dist/assets/channel-BhAHX260.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-BFtzwIJU.js → chunk-2Q5K7J3B-D1sP2fsh.js} +1 -1
- package/dist/assets/{chunk-32BRIVSS-CPbVoclL.js → chunk-32BRIVSS-RLL4h20T.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-dTYGN5E5.js → chunk-5VM5RSS4-CevkAGFw.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-CtqfsWRW.js → chunk-EX3LRPZG-D819msSu.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-Bk6bqjv9.js → chunk-JWPE2WC7-CrfN0IY7.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-UYfo6GD_.js → chunk-MOJQB5TN-BZ7Xp1xZ.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-C8_6Iuf_.js → chunk-RYQCIY6F-w0k8a4aN.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-CGdZK5My.js → chunk-V7JOEXUC-CR2m_ZLP.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-C-HH5QTv.js → chunk-VR4S4FIN-BCJR0sNP.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-B2n8y5qo.js → chunk-XXDRQBXY-BhsJv5YE.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-DbI_Lbd-.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-DbI_Lbd-.js +1 -0
- package/dist/assets/compacting-bar.webp +0 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-AB1HxIBy.js → cose-bilkent-JH36ORCC-BSXhVj_l.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-DTS_6pNv.js → cynefin-VYW2F7L2-D1Tm3Vt0.js} +1 -1
- package/dist/assets/{cynefinDiagram-TSTJHNR4-0oJZvAZy.js → cynefinDiagram-TSTJHNR4-DcvA_MXZ.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-mOn_d4U5.js → dagre-VKFMJZFB-6I-LwvhB.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-DqHifujZ.js → diagram-FQU43EPY-BppVFL1M.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-BZ7eUs_p.js → diagram-G47NLZAW-BLGUCT6E.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-C3r43VXW.js → diagram-NH7WQ7WH-CEYltb_-.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-D2RSBPAX.js → diagram-OA4YK3LP-B1EWuzbE.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-B9Nkjrlq.js → diagram-WEI45ONY-LDSoBbk8.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-B1RDvi6g.js → ebnfDiagram-CCIWWBDH-E4wZGnSz.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-B38eKAG5.js → erDiagram-Q63AITRT-Cmuko4DT.js} +1 -1
- package/dist/assets/{flowDiagram-23GEKE2U-C9txCjHm.js → flowDiagram-23GEKE2U-DZ_8svqD.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-BGNoppCl.js → ganttDiagram-NO4QXBWP-BR4hcxxf.js} +1 -1
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-qrryYqaT.js → gitGraphDiagram-IHSO6WYX-DKgytJlK.js} +1 -1
- package/dist/assets/{index-Drtp5UPa.js → index-B-Ykv2WD.js} +1 -1
- package/dist/assets/{index-CKVTIr6G.js → index-BBw8GgfS.js} +1 -1
- package/dist/assets/{index-ClvYehMs.js → index-BNbxKAb4.js} +1 -1
- package/dist/assets/index-Bbsb_wWh.css +1 -0
- package/dist/assets/index-CVEV_ET-.js +2 -0
- package/dist/assets/{index-BXNPTpxx.js → index-CXv8ZS0v.js} +5 -5
- package/dist/assets/{index-B4sdd8Y2.js → index-Ccq9kwRk.js} +1 -1
- package/dist/assets/{index-tE736Avl.js → index-DrxGAsVW.js} +1 -1
- package/dist/assets/index-MEQRanWH.js +2 -0
- package/dist/assets/{index-CYxytlNP.js → index-h-ZJIMFv.js} +3 -3
- package/dist/assets/{infoDiagram-FWYZ7A6U-DilAR8go.js → infoDiagram-FWYZ7A6U-IupeIGNJ.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-B0cTGbt1.js → ishikawaDiagram-FXEZZL3T-BgnsuPSR.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-eHbpGFin.js → journeyDiagram-5HDEW3XC-DH2sCeMM.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-BaSQRYl7.js → kanban-definition-HUTT4EX6-Wb6HQDBS.js} +1 -1
- package/dist/assets/{linear-BoUClmXF.js → linear-q6sA2iAt.js} +1 -1
- package/dist/assets/main-33HX-Nre.js +341 -0
- package/dist/assets/main-l3t22cX-.css +1 -0
- package/dist/assets/{mermaid.core-CGrC54u1.js → mermaid.core-DE8C8qk_.js} +4 -4
- package/dist/assets/{mindmap-definition-LN4V7U3C-BQWnb1yP.js → mindmap-definition-LN4V7U3C-Bs8A2u-b.js} +1 -1
- package/dist/assets/{pegDiagram-2B236MQR-Bs_4Go2e.js → pegDiagram-2B236MQR-CXEy-5xS.js} +1 -1
- package/dist/assets/{pieDiagram-ENE6RG2P-LCcCZeX5.js → pieDiagram-ENE6RG2P-0KEHZ6Qu.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-CdlG1WsA.js → quadrantDiagram-ABIIQ3AL-B4ua4DRe.js} +1 -1
- package/dist/assets/{railroadDiagram-RFXS5EU6-CAcrzOwC.js → railroadDiagram-RFXS5EU6-BmumxmaP.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-zgaCBhns.js → requirementDiagram-TGXJPOKE-BL46wZ-t.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-Cvn05yAi.js → sankeyDiagram-HTMAVEWB-DF7DCX_x.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-C7oW7B56.js → sequenceDiagram-DBY2YBRQ-7ZltWf-f.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-Z61MsHMO.js → sizeCapture-X5ZJPWSS-D-2cB5F9.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-CHjZ2LvZ.js → stateDiagram-2N3HPSRC-CIUa3aAc.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-B-vNeHDE.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-BOxFXKKq.js → swimlanes-5IMT3BWC-B-cxeKvb.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-DMAH0FoM.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-7Hw_U3c1.js → timeline-definition-FHXFAJF6-O6fJ1p9n.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-DXOydhCz.js → vennDiagram-L72KCM5P-BiV5ZylZ.js} +1 -1
- package/dist/assets/{wardleyDiagram-EHGQE667-CHEopdXj.js → wardleyDiagram-EHGQE667-E4l00yC2.js} +1 -1
- package/dist/assets/{web-vmnQRY1J.js → web-CUkMR96i.js} +1 -1
- package/dist/assets/{web-BNIDHx-H.js → web-CfYEEkSC.js} +1 -1
- package/dist/assets/{web-DAWG2rda.js → web-DZ5Y-yBU.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-BpNrwdIN.js → xychartDiagram-FW5EYKEG-B922Z30u.js} +1 -1
- package/dist/build-info.json +1 -1
- package/dist/index.html +2 -2
- package/dist/src/packages/server/claude/session-loader.js +128 -0
- package/dist/src/packages/server/grok/session-watcher.js +24 -0
- package/dist/src/packages/server/routes/agents.js +11 -8
- package/dist/src/packages/server/routes/sessions.js +25 -1
- package/dist/src/packages/server/routes/system.js +13 -0
- package/dist/src/packages/server/services/grok-usage-service.js +13 -3
- package/dist/src/packages/server/services/opencode-usage-service.js +49 -0
- package/package.json +1 -1
- package/dist/assets/ControlsModal-D4JLnO36.js +0 -1
- package/dist/assets/SpawnModal-CIuJWY6N.js +0 -1
- package/dist/assets/channel-CxofHie1.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-15eANucY.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-15eANucY.js +0 -1
- package/dist/assets/index-BdQoxlnS.js +0 -2
- package/dist/assets/index-BoiyspB0.js +0 -2
- package/dist/assets/index-DV4NCFbu.css +0 -1
- package/dist/assets/main-BdVckSM5.css +0 -1
- package/dist/assets/main-DuaHyH5t.js +0 -341
- package/dist/assets/stateDiagram-v2-6OUMAXLB-ePlfPVZw.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-ClgJ2Bw0.js +0 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{bV as ta,u as A,j as e,H as j,bW as Ms,bX as Fs,F as Q,s as D,bY as $s,r as m,aP as X,I as F,aj as Us,bZ as qe,f as na,b_ as la,e as ia,b$ as ra,m as oa,S as ca,g as da,bl as Ks,c0 as Ue}from"./main-33HX-Nre.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DYBBrXTx.js";const ma=[{value:"",labelKey:"terminal:building.colorDefault"},{value:"#2a2a3a",labelKey:"terminal:building.colorDarkGray"},{value:"#3a2a2a",labelKey:"terminal:building.colorDarkRed"},{value:"#2a3a2a",labelKey:"terminal:building.colorDarkGreen"},{value:"#2a2a4a",labelKey:"terminal:building.colorDarkBlue"},{value:"#3a3a2a",labelKey:"terminal:building.colorDarkYellow"},{value:"#3a2a3a",labelKey:"terminal:building.colorDarkPurple"},{value:"#2a3a3a",labelKey:"terminal:building.colorDarkCyan"},{value:"#4a3a3a",labelKey:"terminal:building.colorWarmBrown"},{value:"#3a4a4a",labelKey:"terminal:building.colorCoolSteel"}];function ua(r){return ta.t(r)}function Ve(r){if(r===0)return"0 B";const p=1024,u=["B","KB","MB","GB"],x=Math.floor(Math.log(r)/Math.log(p));return parseFloat((r/Math.pow(p,x)).toFixed(1))+" "+u[x]}function pa(r){const u=Date.now()-r,x=Math.floor(u/(1e3*60*60)),n=Math.floor(u%(1e3*60*60)/(1e3*60));return x>0?`${x}h ${n}m`:`${n}m`}const Hs={30:"#1a1a1a",31:"#e74c3c",32:"#2ecc71",33:"#f39c12",34:"#3498db",35:"#9b59b6",36:"#00bcd4",37:"#ecf0f1",90:"#7f8c8d",91:"#ff6b6b",92:"#4ade80",93:"#fbbf24",94:"#60a5fa",95:"#c084fc",96:"#22d3ee",97:"#ffffff"};function qs(r){const p=[],u=/\x1B\[([0-9;]*)m/g;let x=0,n=null,y;for(;(y=u.exec(r))!==null;){if(y.index>x){const g=r.slice(x,y.index);n?p.push(e.jsx("span",{style:{color:n},children:g},p.length)):p.push(g)}const C=y[1].split(";").map(Number);for(const g of C)g===0||g===39?n=null:Hs[g]&&(n=Hs[g]);x=u.lastIndex}if(x<r.length){const C=r.slice(x);n?p.push(e.jsx("span",{style:{color:n},children:C},p.length)):p.push(C)}return p.length>0?p:[r]}function ha({buildingName:r,onClose:p,onConfirm:u}){const{t:x}=A(["terminal","common"]);return e.jsx("div",{className:"modal-overlay visible",onClick:p,children:e.jsxs("div",{className:"modal confirm-modal",onClick:n=>n.stopPropagation(),children:[e.jsx("div",{className:"modal-header",children:x("terminal:building.deleteBuilding")}),e.jsxs("div",{className:"modal-body confirm-modal-body",children:[e.jsx("p",{children:x("terminal:building.deleteConfirm",{name:r})}),e.jsx("p",{className:"confirm-modal-note",children:x("terminal:building.deleteNote")})]}),e.jsxs("div",{className:"modal-footer",children:[e.jsx("button",{className:"btn btn-secondary",onClick:p,children:x("common:buttons.cancel")}),e.jsx("button",{className:"btn btn-danger",onClick:u,autoFocus:!0,children:x("common:buttons.delete")})]})]})})}function xa({usePM2:r,setUsePM2:p}){const{t:u}=A(["terminal"]);return e.jsxs("div",{className:"form-section pm2-toggle-section",children:[e.jsxs("label",{className:"toggle-switch",children:[e.jsx("input",{type:"checkbox",className:"toggle-input",checked:r,onChange:x=>p(x.target.checked)}),e.jsx("span",{className:"toggle-track",children:e.jsx("span",{className:"toggle-thumb"})}),e.jsxs("span",{className:"toggle-label",children:[e.jsx("span",{className:"pm2-badge",children:"PM2"}),u("terminal:building.usePM2")]})]}),e.jsx("div",{className:"form-hint",children:u("terminal:building.pm2Hint")})]})}function ba({usePM2:r,pm2Script:p,setPm2Script:u,pm2Args:x,setPm2Args:n,pm2Interpreter:y,setPm2Interpreter:C,pm2InterpreterArgs:g,setPm2InterpreterArgs:v,pm2Env:s,setPm2Env:h,isEditMode:a,building:t,handleCommand:c}){var f;const{t:i}=A(["terminal","common"]);return r?e.jsxs("div",{className:"form-section pm2-config-section",children:[e.jsx("label",{className:"form-label",children:i("terminal:building.pm2Configuration")}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:[i("terminal:building.pm2Script"),e.jsx(j,{text:i("terminal:building.helpPm2Script"),title:i("terminal:building.pm2Script"),position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:p,onChange:b=>u(b.target.value),placeholder:"npm, java, python, ./app.js",required:r})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:[i("terminal:building.pm2Arguments"),e.jsx(j,{text:i("terminal:building.helpPm2Arguments"),title:i("terminal:building.pm2Arguments"),position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:x,onChange:b=>n(b.target.value),placeholder:"run dev, -jar app.jar, app.py"})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:[i("terminal:building.pm2Interpreter"),e.jsx(j,{text:i("terminal:building.helpPm2Interpreter"),title:i("terminal:building.pm2Interpreter"),position:"top",size:"sm"})]}),e.jsx("select",{className:"form-input form-select",value:y,onChange:b=>C(b.target.value),children:Object.keys(Ms).map(b=>e.jsx("option",{value:b,children:Ms[b].label},b))})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:[i("terminal:building.pm2InterpArgs"),e.jsx(j,{text:i("terminal:building.helpPm2InterpArgs"),title:i("terminal:building.pm2InterpArgs"),position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:g,onChange:b=>v(b.target.value),placeholder:"-jar (for Java)"})]}),e.jsxs("div",{className:"command-row env-row",children:[e.jsxs("span",{className:"command-label",children:[i("terminal:building.pm2Environment"),e.jsx(j,{text:i("terminal:building.helpPm2Environment"),title:i("terminal:building.pm2Environment"),position:"top",size:"sm"})]}),e.jsx("textarea",{className:"form-input form-textarea",value:s,onChange:b=>h(b.target.value),placeholder:`KEY=value
|
|
2
2
|
SERVER_PORT=7201
|
|
3
3
|
NODE_ENV=production`,rows:3})]}),e.jsx("div",{className:"pm2-examples",children:e.jsxs("details",{children:[e.jsx("summary",{children:i("terminal:building.pm2Examples")}),e.jsxs("div",{className:"pm2-examples-content",children:[e.jsxs("div",{className:"pm2-example",children:[e.jsx("strong",{children:"Node.js:"})," Script: ",e.jsx("code",{children:"npm"}),", Args: ",e.jsx("code",{children:"run dev"})]}),e.jsxs("div",{className:"pm2-example",children:[e.jsx("strong",{children:"Symfony:"})," Script: ",e.jsx("code",{children:"symfony"}),", Args: ",e.jsx("code",{children:"serve --no-daemon"}),", Interpreter: ",e.jsx("code",{children:"None"})]}),e.jsxs("div",{className:"pm2-example",children:[e.jsx("strong",{children:"Java JAR:"})," Script: ",e.jsx("code",{children:"app.jar"}),", Interpreter: ",e.jsx("code",{children:"Java"}),", Interp. Args: ",e.jsx("code",{children:"-jar"})]}),e.jsxs("div",{className:"pm2-example",children:[e.jsx("strong",{children:"Python:"})," Script: ",e.jsx("code",{children:"app.py"}),", Interpreter: ",e.jsx("code",{children:"Python 3"})]})]})]})}),a&&(t==null?void 0:t.pm2Status)&&e.jsx("div",{className:"pm2-status-display",children:e.jsxs("div",{className:"pm2-status-row",children:[e.jsxs("span",{className:"pm2-metric",children:[e.jsx("span",{className:"pm2-metric-label",children:"PID"}),e.jsx("span",{className:"pm2-metric-value",children:t.pm2Status.pid||"-"})]}),e.jsxs("span",{className:"pm2-metric",children:[e.jsx("span",{className:"pm2-metric-label",children:"CPU"}),e.jsxs("span",{className:"pm2-metric-value",children:[((f=t.pm2Status.cpu)==null?void 0:f.toFixed(1))||"0","%"]})]}),e.jsxs("span",{className:"pm2-metric",children:[e.jsx("span",{className:"pm2-metric-label",children:"MEM"}),e.jsx("span",{className:"pm2-metric-value",children:Ve(t.pm2Status.memory||0)})]}),e.jsxs("span",{className:"pm2-metric",children:[e.jsx("span",{className:"pm2-metric-label",children:"Restarts"}),e.jsx("span",{className:"pm2-metric-value",children:t.pm2Status.restarts||0})]}),t.pm2Status.uptime&&e.jsxs("span",{className:"pm2-metric",children:[e.jsx("span",{className:"pm2-metric-label",children:"Uptime"}),e.jsx("span",{className:"pm2-metric-value",children:pa(t.pm2Status.uptime)})]})]})}),a&&e.jsxs("div",{className:"pm2-actions",children:[e.jsx("button",{type:"button",className:"btn btn-sm btn-success",onClick:()=>c("start"),children:i("common:buttons.start")}),e.jsx("button",{type:"button",className:"btn btn-sm btn-danger",onClick:()=>c("stop"),children:i("common:buttons.stop")}),e.jsx("button",{type:"button",className:"btn btn-sm btn-warning",onClick:()=>c("restart"),children:i("terminal:buildingAction.restart")}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>c("logs"),children:i("terminal:logs.title")})]})]}):null}function ja({dockerMode:r,setDockerMode:p,dockerImage:u,setDockerImage:x,dockerContainerName:n,setDockerContainerName:y,dockerCommand:C,setDockerCommand:g,dockerPorts:v,setDockerPorts:s,dockerVolumes:h,setDockerVolumes:a,dockerNetwork:t,setDockerNetwork:c,dockerRestart:i,setDockerRestart:f,dockerPull:b,setDockerPull:z,dockerEnv:T,setDockerEnv:B,dockerComposePath:$,setDockerComposePath:R,dockerComposeProject:K,setDockerComposeProject:I,dockerComposeServices:H,setDockerComposeServices:O,selectedExistingContainer:d,setSelectedExistingContainer:L,dockerContainersList:q,isEditMode:V,building:k,handleCommand:_}){const{t:M}=A(["config","common"]);return e.jsxs("div",{className:"form-section docker-config-section",children:[e.jsx("label",{className:"form-label",children:M("config:buildings.dockerConfig")}),e.jsxs("div",{className:"docker-mode-selector",children:[e.jsxs("label",{className:`docker-mode-option ${r==="container"?"active":""}`,children:[e.jsx("input",{type:"radio",name:"dockerMode",value:"container",checked:r==="container",onChange:()=>p("container")}),e.jsx("span",{className:"docker-mode-icon",children:"📦"}),e.jsx("span",{className:"docker-mode-label",children:"Container"}),e.jsx("span",{className:"docker-mode-desc",children:"Create a new container"})]}),e.jsxs("label",{className:`docker-mode-option ${r==="compose"?"active":""}`,children:[e.jsx("input",{type:"radio",name:"dockerMode",value:"compose",checked:r==="compose",onChange:()=>p("compose")}),e.jsx("span",{className:"docker-mode-icon",children:"🛠"}),e.jsx("span",{className:"docker-mode-label",children:"Compose"}),e.jsx("span",{className:"docker-mode-desc",children:"Manage multiple services"})]}),e.jsxs("label",{className:`docker-mode-option ${r==="existing"?"active":""}`,children:[e.jsx("input",{type:"radio",name:"dockerMode",value:"existing",checked:r==="existing",onChange:()=>p("existing")}),e.jsx("span",{className:"docker-mode-icon",children:"🔎"}),e.jsx("span",{className:"docker-mode-label",children:"Existing"}),e.jsx("span",{className:"docker-mode-desc",children:"Adopt existing container"})]})]}),r==="container"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Image:",e.jsx(j,{text:"Docker image to run, e.g., nginx:latest, redis:alpine, my-app:v1",title:"Image",position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:u,onChange:l=>x(l.target.value),placeholder:"nginx:latest",required:!0})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Container Name:",e.jsx(j,{text:"Custom name for the container. If empty, auto-generated based on building name.",title:"Container Name",position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:n,onChange:l=>y(l.target.value),placeholder:"Auto-generated (tc-{name}-{id})"})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Command:",e.jsx(j,{text:"Override the default container command. Leave empty to use image's CMD.",title:"Command Override",position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:C,onChange:l=>g(l.target.value),placeholder:"Optional command override"})]}),e.jsxs("div",{className:"form-section docker-ports-section",children:[e.jsxs("label",{className:"form-label",children:["Port Mappings",e.jsx("button",{type:"button",className:"btn btn-sm btn-add",onClick:()=>s([...v,""]),children:"+ Add"})]}),v.map((l,S)=>e.jsxs("div",{className:"docker-mapping-row",children:[e.jsx("input",{type:"text",className:"form-input",value:l,onChange:U=>{const E=[...v];E[S]=U.target.value,s(E)},placeholder:"8080:80 or 3000"}),e.jsx("button",{type:"button",className:"btn btn-sm btn-danger",onClick:()=>s(v.filter((U,E)=>E!==S)),children:"x"})]},S)),v.length===0&&e.jsx("div",{className:"form-hint",children:"Format: host:container (e.g., 8080:80) or same port (e.g., 3000)"})]}),e.jsxs("div",{className:"form-section docker-volumes-section",children:[e.jsxs("label",{className:"form-label",children:["Volume Mounts",e.jsx("button",{type:"button",className:"btn btn-sm btn-add",onClick:()=>a([...h,""]),children:"+ Add"})]}),h.map((l,S)=>e.jsxs("div",{className:"docker-mapping-row",children:[e.jsx("input",{type:"text",className:"form-input",value:l,onChange:U=>{const E=[...h];E[S]=U.target.value,a(E)},placeholder:"./data:/app/data or /host/path:/container/path"}),e.jsx("button",{type:"button",className:"btn btn-sm btn-danger",onClick:()=>a(h.filter((U,E)=>E!==S)),children:"x"})]},S)),h.length===0&&e.jsx("div",{className:"form-hint",children:"Format: host_path:container_path (relative paths resolved from working directory)"})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Network:",e.jsx(j,{text:"Docker network to connect to. Leave empty for default bridge network.",title:"Network",position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:t,onChange:l=>c(l.target.value),placeholder:"bridge (default)"})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Restart Policy:",e.jsx(j,{text:"When should Docker restart the container automatically?",title:"Restart Policy",position:"top",size:"sm"})]}),e.jsx("select",{className:"form-input form-select",value:i,onChange:l=>f(l.target.value),children:Object.keys(Fs).map(l=>e.jsx("option",{value:l,children:Fs[l].label},l))})]})]}),r==="compose"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Compose File:",e.jsx(j,{text:"Path to docker-compose.yml file, relative to working directory.",title:"Compose File",position:"top",size:"sm"})]}),e.jsx(Q,{value:$,onChange:R,placeholder:"docker-compose.yml",className:"form-input",directoriesOnly:!1})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Project Name:",e.jsx(j,{text:"Override the compose project name. Leave empty for auto-generated name.",title:"Project Name",position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:K,onChange:l=>I(l.target.value),placeholder:"Auto-generated"})]}),e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Services:",e.jsx(j,{text:"Specific services to manage (comma-separated). Leave empty for all services.",title:"Services",position:"top",size:"sm"})]}),e.jsx("input",{type:"text",className:"form-input",value:H,onChange:l=>O(l.target.value),placeholder:"All services (or: api, db, redis)"})]})]}),r==="existing"&&e.jsxs("div",{className:"docker-existing-section",children:[e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Select Container:",e.jsx(j,{text:"Choose an existing Docker container to monitor and control. The container will not be deleted when removing the building.",title:"Existing Container",position:"top",size:"sm"})]}),e.jsxs("div",{className:"docker-existing-select-wrapper",children:[e.jsxs("select",{className:"form-input form-select",value:d,onChange:l=>L(l.target.value),required:r==="existing",children:[e.jsx("option",{value:"",children:"Select a container..."}),q.map(l=>e.jsxs("option",{value:l.name,children:[l.name," (",l.image,") - ",l.state]},l.id))]}),e.jsx("button",{type:"button",className:"btn btn-sm",onClick:()=>D.requestDockerContainersList(),title:"Refresh container list",children:"↻"})]})]}),q.length===0&&e.jsx("div",{className:"form-hint docker-existing-hint",children:"No containers found. Make sure Docker is running and you have containers available."}),d&&e.jsx("div",{className:"docker-existing-info",children:(()=>{const l=q.find(S=>S.name===d);return l?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"docker-existing-info-row",children:[e.jsx("span",{className:"docker-existing-info-label",children:"Image:"}),e.jsx("span",{className:"docker-existing-info-value",children:l.image})]}),e.jsxs("div",{className:"docker-existing-info-row",children:[e.jsx("span",{className:"docker-existing-info-label",children:"Status:"}),e.jsx("span",{className:`docker-existing-info-value docker-status-${l.status}`,children:l.state})]}),e.jsxs("div",{className:"docker-existing-info-row",children:[e.jsx("span",{className:"docker-existing-info-label",children:"ID:"}),e.jsx("span",{className:"docker-existing-info-value",children:l.id.slice(0,12)})]}),l.ports.length>0&&e.jsxs("div",{className:"docker-existing-info-row",children:[e.jsx("span",{className:"docker-existing-info-label",children:"Ports:"}),e.jsx("span",{className:"docker-existing-info-value",children:l.ports.map(S=>`${S.host}:${S.container}/${S.protocol}`).join(", ")})]})]}):null})()}),e.jsx("div",{className:"form-hint",children:"Note: Existing containers will not be deleted when you remove this building."})]}),r!=="existing"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"command-row",children:[e.jsxs("span",{className:"command-label",children:["Pull Policy:",e.jsx(j,{text:"When to pull images: always, only if missing, or never.",title:"Pull Policy",position:"top",size:"sm"})]}),e.jsx("select",{className:"form-input form-select",value:b,onChange:l=>z(l.target.value),children:Object.keys($s).map(l=>e.jsx("option",{value:l,children:$s[l].label},l))})]}),e.jsxs("div",{className:"command-row env-row",children:[e.jsxs("span",{className:"command-label",children:["Environment:",e.jsx(j,{text:"Environment variables in KEY=value format, one per line.",title:"Environment Variables",position:"top",size:"sm"})]}),e.jsx("textarea",{className:"form-input form-textarea",value:T,onChange:l=>B(l.target.value),placeholder:`KEY=value
|
|
4
4
|
DATABASE_URL=postgres://...
|