tide-commander 1.217.0 → 1.218.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.
Files changed (119) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/assets/{AudioPlayer-wYzUPbI7.js → AudioPlayer-BU35uTDo.js} +1 -1
  3. package/dist/assets/{BossLogsModal-CmZNDIpu.js → BossLogsModal-D49SwElp.js} +1 -1
  4. package/dist/assets/{BossSpawnModal-DtVfSG5G.js → BossSpawnModal-Bgk7exUu.js} +1 -1
  5. package/dist/assets/{ControlsModal-C0tQf4xy.js → ControlsModal-DgTDBUCe.js} +1 -1
  6. package/dist/assets/{DockerLogsModal-DL_eRO-m.js → DockerLogsModal-C183oCfD.js} +1 -1
  7. package/dist/assets/{EmbeddedEditor-DAr7_QUH.js → EmbeddedEditor-ClzdWo_U.js} +1 -1
  8. package/dist/assets/{FcStdViewer-MDGJiz2T.js → FcStdViewer-59S072wF.js} +1 -1
  9. package/dist/assets/{GcodeViewer-BHVydtrp.js → GcodeViewer-DReIiHNj.js} +1 -1
  10. package/dist/assets/{GlbViewer-Bwr_Tayz.js → GlbViewer-D2pSoe0t.js} +1 -1
  11. package/dist/assets/{GmailOAuthSetup-D_uF2cyB.js → GmailOAuthSetup-DKlrbd-z.js} +1 -1
  12. package/dist/assets/{GoogleOAuthSetup-BCmzQl5e.js → GoogleOAuthSetup-BrZMful8.js} +1 -1
  13. package/dist/assets/{IframeModal-CQmCu_P4.js → IframeModal-eHhpdAUr.js} +1 -1
  14. package/dist/assets/{IntegrationsPanel-BmRLC7dz.js → IntegrationsPanel-Ch_7Mixq.js} +2 -2
  15. package/dist/assets/{LogViewerModal-CrnaI78u.js → LogViewerModal-CHQHQhmq.js} +1 -1
  16. package/dist/assets/{MonitoringModal-C6J4g3Jf.js → MonitoringModal-CfNXUJeT.js} +1 -1
  17. package/dist/assets/{PM2LogsModal-Ds3dRnuE.js → PM2LogsModal-CnjSHdiK.js} +1 -1
  18. package/dist/assets/{PluginsPanel-BWG2NKdJ.js → PluginsPanel-DiN979jU.js} +1 -1
  19. package/dist/assets/{RestoreArchivedAreaModal-BNccBE4Z.js → RestoreArchivedAreaModal-BpEjAVuV.js} +1 -1
  20. package/dist/assets/{Scene2DCanvas-CPvMvm9m.js → Scene2DCanvas-BOZhpvt1.js} +1 -1
  21. package/dist/assets/{SceneManager-lb8uiOCO.js → SceneManager-DWKXzRqi.js} +1 -1
  22. package/dist/assets/{SkillsPanel-BTO2Ow7t.js → SkillsPanel-Dc_S8gzp.js} +1 -1
  23. package/dist/assets/{SlackMultiInstanceSetup-Da_GWe5W.js → SlackMultiInstanceSetup-CWXANgYs.js} +1 -1
  24. package/dist/assets/{SpawnModal-JbFRYxZa.js → SpawnModal-CbYA9pn9.js} +1 -1
  25. package/dist/assets/{StatisticsModal-ChSnL5yu.js → StatisticsModal-DKkoc51h.js} +1 -1
  26. package/dist/assets/{StlViewer-BFr-I14v.js → StlViewer-DqpLp63P.js} +1 -1
  27. package/dist/assets/{SubordinateAssignmentModal-DchdwFLE.js → SubordinateAssignmentModal-BYQOXqH2.js} +1 -1
  28. package/dist/assets/{ThreeAreaSelector-D18G4udc.js → ThreeAreaSelector-DbvsMWLv.js} +1 -1
  29. package/dist/assets/{ThreeViewShortcuts-vNiMNFPJ.js → ThreeViewShortcuts-D3xDKZDg.js} +1 -1
  30. package/dist/assets/{TriggerManagerPanel-DjpLl7cf.js → TriggerManagerPanel-BIEiiB0F.js} +1 -1
  31. package/dist/assets/{VideoPlayer-Drj9r9Dx.js → VideoPlayer-CZ2icmjn.js} +1 -1
  32. package/dist/assets/{WorkflowEditorPanel-DLwkYQ8M.js → WorkflowEditorPanel-B2L4VASD.js} +1 -1
  33. package/dist/assets/{abnfDiagram-VRR7QNED-BVuUyMTx.js → abnfDiagram-VRR7QNED-ryySwhVB.js} +1 -1
  34. package/dist/assets/{arc-_phD079o.js → arc-TgqX_heu.js} +1 -1
  35. package/dist/assets/{architectureDiagram-ZJ3FMSHR-B7fAK4WF.js → architectureDiagram-ZJ3FMSHR-CBvaslRl.js} +1 -1
  36. package/dist/assets/{area-logos-RCA-q_Vf.js → area-logos-D4VAmxJY.js} +1 -1
  37. package/dist/assets/{blockDiagram-677ZJIJ3-C-OlY0-3.js → blockDiagram-677ZJIJ3-CjqntcUt.js} +1 -1
  38. package/dist/assets/{c4Diagram-LMCZKHZV-DrwXTZgK.js → c4Diagram-LMCZKHZV-JOcgicYy.js} +1 -1
  39. package/dist/assets/channel-4Acwen4U.js +1 -0
  40. package/dist/assets/{chunk-2Q5K7J3B-DCcJNg3d.js → chunk-2Q5K7J3B-Bpe3_0eg.js} +1 -1
  41. package/dist/assets/{chunk-32BRIVSS-CZZkOSIs.js → chunk-32BRIVSS-Bzixr9TC.js} +1 -1
  42. package/dist/assets/{chunk-5VM5RSS4-BCFrP-q5.js → chunk-5VM5RSS4-k5-E-nAB.js} +1 -1
  43. package/dist/assets/{chunk-EX3LRPZG-Bjnq5732.js → chunk-EX3LRPZG-BRhp3Q-r.js} +1 -1
  44. package/dist/assets/{chunk-JWPE2WC7-CPjRN_WZ.js → chunk-JWPE2WC7-BNXpKFbW.js} +1 -1
  45. package/dist/assets/{chunk-MOJQB5TN-B6jVWpSe.js → chunk-MOJQB5TN-M1rwnbfN.js} +1 -1
  46. package/dist/assets/{chunk-RYQCIY6F-0QrHhHTV.js → chunk-RYQCIY6F-DICAsMV6.js} +1 -1
  47. package/dist/assets/{chunk-V7JOEXUC-DwLSEIop.js → chunk-V7JOEXUC-Cl3na5KS.js} +1 -1
  48. package/dist/assets/{chunk-VR4S4FIN-R-sa6MjG.js → chunk-VR4S4FIN-C1i0aRRM.js} +1 -1
  49. package/dist/assets/{chunk-XXDRQBXY-FuYmcHPd.js → chunk-XXDRQBXY-B9ncDDik.js} +1 -1
  50. package/dist/assets/classDiagram-OUVF2IWQ-ChFbWxiV.js +1 -0
  51. package/dist/assets/classDiagram-v2-EOCWNBFH-ChFbWxiV.js +1 -0
  52. package/dist/assets/{cose-bilkent-JH36ORCC-CvD5NdQ_.js → cose-bilkent-JH36ORCC-BgJ0QFpw.js} +1 -1
  53. package/dist/assets/{cynefin-VYW2F7L2-C8_VnooS.js → cynefin-VYW2F7L2-BSrO1EZm.js} +1 -1
  54. package/dist/assets/{cynefinDiagram-TSTJHNR4-SD_F8ul6.js → cynefinDiagram-TSTJHNR4-DxG0EKrw.js} +1 -1
  55. package/dist/assets/{dagre-VKFMJZFB-Cpeo3cpw.js → dagre-VKFMJZFB-BFcAu0KK.js} +1 -1
  56. package/dist/assets/{diagram-FQU43EPY-DsBnlRvM.js → diagram-FQU43EPY-MjLThK-e.js} +1 -1
  57. package/dist/assets/{diagram-G47NLZAW-BHMRe5db.js → diagram-G47NLZAW-30PERw4M.js} +1 -1
  58. package/dist/assets/{diagram-NH7WQ7WH-D8Rm6qlg.js → diagram-NH7WQ7WH-_o5yBpv1.js} +1 -1
  59. package/dist/assets/{diagram-OA4YK3LP-C4Svb0Zw.js → diagram-OA4YK3LP-DWzw17M1.js} +1 -1
  60. package/dist/assets/{diagram-WEI45ONY-BbFXrI2b.js → diagram-WEI45ONY-DUiBSsAu.js} +1 -1
  61. package/dist/assets/{ebnfDiagram-CCIWWBDH-CCBonTYH.js → ebnfDiagram-CCIWWBDH-BvfeLGVP.js} +1 -1
  62. package/dist/assets/{erDiagram-Q63AITRT-CGGw9uIx.js → erDiagram-Q63AITRT-CcGVeI78.js} +1 -1
  63. package/dist/assets/{flowDiagram-23GEKE2U-DWxHXzyo.js → flowDiagram-23GEKE2U-BaxQK1yy.js} +1 -1
  64. package/dist/assets/{ganttDiagram-NO4QXBWP-D74TSIvX.js → ganttDiagram-NO4QXBWP-BoagKKM_.js} +1 -1
  65. package/dist/assets/{gitGraphDiagram-IHSO6WYX-Cwv5rBxw.js → gitGraphDiagram-IHSO6WYX-CK3MKH5Y.js} +1 -1
  66. package/dist/assets/{index-B9rURqfo.js → index-BppBZhor.js} +1 -1
  67. package/dist/assets/{index-DW1gJ5Cs.js → index-BujRjFVV.js} +1 -1
  68. package/dist/assets/{index-BMXP1Yd8.js → index-CqgOl9zs.js} +3 -3
  69. package/dist/assets/{index-6lLWOBQK.js → index-DL7aFkI7.js} +1 -1
  70. package/dist/assets/{index-s33Ke8oj.js → index-DN6BcPrZ.js} +2 -2
  71. package/dist/assets/{index-DrIXfMcD.js → index-DmNqcx5v.js} +1 -1
  72. package/dist/assets/{index-BZztJf0b.js → index-SXH56b-h.js} +1 -1
  73. package/dist/assets/{index-DOcVAWbZ.js → index-fgJgEGu1.js} +1 -1
  74. package/dist/assets/{index-D-5PhYjN.js → index-qu-MNx34.js} +1 -1
  75. package/dist/assets/{infoDiagram-FWYZ7A6U-VSfMHDx9.js → infoDiagram-FWYZ7A6U-CFZJVVEZ.js} +1 -1
  76. package/dist/assets/{ishikawaDiagram-FXEZZL3T-CgWr16Qr.js → ishikawaDiagram-FXEZZL3T-B4jxlj5i.js} +1 -1
  77. package/dist/assets/{journeyDiagram-5HDEW3XC-Bv4ioJyG.js → journeyDiagram-5HDEW3XC-Di36Ke2R.js} +1 -1
  78. package/dist/assets/{kanban-definition-HUTT4EX6-DsUoZOQz.js → kanban-definition-HUTT4EX6-CfXuNtGm.js} +1 -1
  79. package/dist/assets/{linear-_3oDVafz.js → linear-kPN9OpYx.js} +1 -1
  80. package/dist/assets/{main-BKRg0DBA.js → main-9sJvXBYL.js} +160 -160
  81. package/dist/assets/{mermaid.core-spKo10MG.js → mermaid.core-BsJb1sx5.js} +4 -4
  82. package/dist/assets/{mindmap-definition-LN4V7U3C-C6uCJ4IN.js → mindmap-definition-LN4V7U3C-CmKQGyB-.js} +1 -1
  83. package/dist/assets/{pegDiagram-2B236MQR-BTIBB-Uw.js → pegDiagram-2B236MQR-CyT-8HHi.js} +1 -1
  84. package/dist/assets/{pieDiagram-ENE6RG2P-D7oP-ve7.js → pieDiagram-ENE6RG2P-ieekGcPa.js} +1 -1
  85. package/dist/assets/{quadrantDiagram-ABIIQ3AL-BfmcdARc.js → quadrantDiagram-ABIIQ3AL-CbWWbNLu.js} +1 -1
  86. package/dist/assets/{railroadDiagram-RFXS5EU6-CplgjUu4.js → railroadDiagram-RFXS5EU6-nRTVDuI2.js} +1 -1
  87. package/dist/assets/{requirementDiagram-TGXJPOKE-BiRTuy5B.js → requirementDiagram-TGXJPOKE-Da3qeFmb.js} +1 -1
  88. package/dist/assets/{sankeyDiagram-HTMAVEWB-C81HtBjy.js → sankeyDiagram-HTMAVEWB-CJctgFYp.js} +1 -1
  89. package/dist/assets/{sequenceDiagram-DBY2YBRQ-DFhPtqpN.js → sequenceDiagram-DBY2YBRQ-Bgo3ZLPq.js} +1 -1
  90. package/dist/assets/{sizeCapture-X5ZJPWSS-BkT4qJkY.js → sizeCapture-X5ZJPWSS-BYkiTkB_.js} +1 -1
  91. package/dist/assets/{stateDiagram-2N3HPSRC-CKvn1pfo.js → stateDiagram-2N3HPSRC-BbE4biWs.js} +1 -1
  92. package/dist/assets/stateDiagram-v2-6OUMAXLB-Bgw_r9Hj.js +1 -0
  93. package/dist/assets/{swimlanes-5IMT3BWC-D5WhCwkM.js → swimlanes-5IMT3BWC-Dia74-W4.js} +2 -2
  94. package/dist/assets/swimlanesDiagram-G3AALYLV-Bz9zuVSZ.js +8 -0
  95. package/dist/assets/{timeline-definition-FHXFAJF6-B-UTX_B8.js → timeline-definition-FHXFAJF6-BnpoOi8A.js} +1 -1
  96. package/dist/assets/{vennDiagram-L72KCM5P-DelObiCK.js → vennDiagram-L72KCM5P-B1qV_n6b.js} +1 -1
  97. package/dist/assets/{wardleyDiagram-EHGQE667-DCWJdXij.js → wardleyDiagram-EHGQE667-Ct40RXD2.js} +1 -1
  98. package/dist/assets/{web-C2DocoQz.js → web-C8vsfWIm.js} +1 -1
  99. package/dist/assets/{web-BOFBvPGv.js → web-D_9GMKcH.js} +1 -1
  100. package/dist/assets/{web-qtcj3i0F.js → web-DmbfztKE.js} +1 -1
  101. package/dist/assets/{xychartDiagram-FW5EYKEG-CzbE79ZQ.js → xychartDiagram-FW5EYKEG-BCIYfB3k.js} +1 -1
  102. package/dist/build-info.json +1 -1
  103. package/dist/index.html +1 -1
  104. package/dist/src/packages/server/app.js +8 -0
  105. package/dist/src/packages/server/index.js +8 -0
  106. package/dist/src/packages/server/integrations/slack/slack-polling-client.js +42 -3
  107. package/dist/src/packages/server/pi/backend.js +1 -0
  108. package/dist/src/packages/server/services/plugin-shell-command-service.js +22 -4
  109. package/dist/src/packages/server/services/pm2-service.js +21 -4
  110. package/dist/src/packages/server/utils/java-home.js +83 -0
  111. package/dist/src/packages/server/websocket/handler.js +16 -3
  112. package/dist/src/packages/shared/agent-types.js +5 -0
  113. package/package.json +2 -2
  114. package/scripts/dev-server.mjs +69 -0
  115. package/dist/assets/channel-BWg1ErwG.js +0 -1
  116. package/dist/assets/classDiagram-OUVF2IWQ-Cdy8Clus.js +0 -1
  117. package/dist/assets/classDiagram-v2-EOCWNBFH-Cdy8Clus.js +0 -1
  118. package/dist/assets/stateDiagram-v2-6OUMAXLB-blzdlH4v.js +0 -1
  119. package/dist/assets/swimlanesDiagram-G3AALYLV-BiOWb3s9.js +0 -8
@@ -1,2 +1,2 @@
1
- import{r,aa as K,j as e,I as l,c as C,d as S,ab as O,ac as F,ad as J,ae as Y,Z as G,af as W}from"./main-BKRg0DBA.js";import{IntegrationsPanel as Z}from"./IntegrationsPanel-BmRLC7dz.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DSCAlQQW.js";const $={name:"/",summary:"",script:"",cwd:"",runAsSudo:!1,pty:!0,enabled:!0};function A(o,j){return o&&typeof o=="object"&&typeof o.error=="string"?o.error:j}function q(){const[o,j]=r.useState([]),[p,_]=r.useState(null),[a,d]=r.useState($),[z,w]=r.useState(!0),[u,m]=r.useState(!1),[v,i]=r.useState(null),g=r.useCallback(async()=>{w(!0);try{j(await K()),i(null)}catch(s){i(s instanceof Error?s.message:String(s))}finally{w(!1)}},[]);r.useEffect(()=>{g()},[g]);const k=()=>{_("__new__"),d({...$}),i(null)},P=s=>{_(s.id),d({name:s.name,summary:s.summary,script:s.script,cwd:s.cwd??"",runAsSudo:s.runAsSudo,pty:s.pty,enabled:s.enabled}),i(null)},b=async()=>{if(p){m(!0),i(null);try{const s=p==="__new__",n=await C(S(s?"/api/plugins/shell-commands":`/api/plugins/shell-commands/${encodeURIComponent(p)}`),{method:s?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),t=await n.json().catch(()=>null);if(!n.ok)throw new Error(A(t,"Unable to save command script"));_(null),d({...$}),await g()}catch(s){i(s instanceof Error?s.message:String(s))}finally{m(!1)}}},I=async s=>{if(window.confirm(`Delete ${s.name}?`)){m(!0),i(null);try{const n=await C(S(`/api/plugins/shell-commands/${encodeURIComponent(s.id)}`),{method:"DELETE"}),t=await n.json().catch(()=>null);if(!n.ok)throw new Error(A(t,"Unable to delete command script"));await g()}catch(n){i(n instanceof Error?n.message:String(n))}finally{m(!1)}}},N=async s=>{m(!0),i(null);try{const n=await C(S(`/api/plugins/shell-commands/${encodeURIComponent(s.id)}`),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({...s,enabled:!s.enabled})}),t=await n.json().catch(()=>null);if(!n.ok)throw new Error(A(t,"Unable to update command script"));await g()}catch(n){i(n instanceof Error?n.message:String(n))}finally{m(!1)}};return e.jsxs("section",{className:"shell-commands-settings",children:[e.jsxs("header",{className:"shell-commands-settings__header",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"shell-commands-settings__eyebrow",children:[e.jsx(l,{name:"terminal",size:11})," Streamed exec"]}),e.jsx("h3",{children:"Slash command scripts"}),e.jsx("p",{children:"Register trusted Bash scripts that run locally without invoking an LLM."})]}),e.jsxs("button",{type:"button",onClick:k,disabled:!!p||u,children:[e.jsx(l,{name:"plus",size:12})," Add command"]})]}),v&&e.jsxs("div",{className:"shell-commands-settings__error",children:[e.jsx(l,{name:"warn",size:12})," ",v]}),p&&e.jsxs("div",{className:"shell-command-editor",children:[e.jsxs("div",{className:"shell-command-editor__grid",children:[e.jsxs("label",{children:[e.jsx("span",{children:"Slash command"}),e.jsx("input",{value:a.name,onChange:s=>d({...a,name:s.target.value}),placeholder:"/deploy",autoComplete:"off",spellCheck:!1})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Description"}),e.jsx("input",{value:a.summary,onChange:s=>d({...a,summary:s.target.value}),placeholder:"Deploy the current project",autoComplete:"off"})]})]}),e.jsxs("label",{children:[e.jsxs("span",{children:["Working directory ",e.jsx("em",{children:"optional · defaults to the active agent workspace"})]}),e.jsx("input",{value:a.cwd??"",onChange:s=>d({...a,cwd:s.target.value}),placeholder:"/home/user/project",autoComplete:"off",spellCheck:!1})]}),e.jsxs("label",{children:[e.jsxs("span",{children:["Bash script ",e.jsx("em",{children:"slash arguments are available as $1, $2, …"})]}),e.jsx("textarea",{value:a.script,onChange:s=>d({...a,script:s.target.value}),placeholder:`set -euo pipefail
1
+ import{r,aa as K,j as e,I as l,c as C,d as S,ab as O,ac as F,ad as J,ae as Y,Z as G,af as W}from"./main-9sJvXBYL.js";import{IntegrationsPanel as Z}from"./IntegrationsPanel-Ch_7Mixq.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DSCAlQQW.js";const $={name:"/",summary:"",script:"",cwd:"",runAsSudo:!1,pty:!0,enabled:!0};function A(o,j){return o&&typeof o=="object"&&typeof o.error=="string"?o.error:j}function q(){const[o,j]=r.useState([]),[p,_]=r.useState(null),[a,d]=r.useState($),[z,w]=r.useState(!0),[u,m]=r.useState(!1),[v,i]=r.useState(null),g=r.useCallback(async()=>{w(!0);try{j(await K()),i(null)}catch(s){i(s instanceof Error?s.message:String(s))}finally{w(!1)}},[]);r.useEffect(()=>{g()},[g]);const k=()=>{_("__new__"),d({...$}),i(null)},P=s=>{_(s.id),d({name:s.name,summary:s.summary,script:s.script,cwd:s.cwd??"",runAsSudo:s.runAsSudo,pty:s.pty,enabled:s.enabled}),i(null)},b=async()=>{if(p){m(!0),i(null);try{const s=p==="__new__",n=await C(S(s?"/api/plugins/shell-commands":`/api/plugins/shell-commands/${encodeURIComponent(p)}`),{method:s?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),t=await n.json().catch(()=>null);if(!n.ok)throw new Error(A(t,"Unable to save command script"));_(null),d({...$}),await g()}catch(s){i(s instanceof Error?s.message:String(s))}finally{m(!1)}}},I=async s=>{if(window.confirm(`Delete ${s.name}?`)){m(!0),i(null);try{const n=await C(S(`/api/plugins/shell-commands/${encodeURIComponent(s.id)}`),{method:"DELETE"}),t=await n.json().catch(()=>null);if(!n.ok)throw new Error(A(t,"Unable to delete command script"));await g()}catch(n){i(n instanceof Error?n.message:String(n))}finally{m(!1)}}},N=async s=>{m(!0),i(null);try{const n=await C(S(`/api/plugins/shell-commands/${encodeURIComponent(s.id)}`),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({...s,enabled:!s.enabled})}),t=await n.json().catch(()=>null);if(!n.ok)throw new Error(A(t,"Unable to update command script"));await g()}catch(n){i(n instanceof Error?n.message:String(n))}finally{m(!1)}};return e.jsxs("section",{className:"shell-commands-settings",children:[e.jsxs("header",{className:"shell-commands-settings__header",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"shell-commands-settings__eyebrow",children:[e.jsx(l,{name:"terminal",size:11})," Streamed exec"]}),e.jsx("h3",{children:"Slash command scripts"}),e.jsx("p",{children:"Register trusted Bash scripts that run locally without invoking an LLM."})]}),e.jsxs("button",{type:"button",onClick:k,disabled:!!p||u,children:[e.jsx(l,{name:"plus",size:12})," Add command"]})]}),v&&e.jsxs("div",{className:"shell-commands-settings__error",children:[e.jsx(l,{name:"warn",size:12})," ",v]}),p&&e.jsxs("div",{className:"shell-command-editor",children:[e.jsxs("div",{className:"shell-command-editor__grid",children:[e.jsxs("label",{children:[e.jsx("span",{children:"Slash command"}),e.jsx("input",{value:a.name,onChange:s=>d({...a,name:s.target.value}),placeholder:"/deploy",autoComplete:"off",spellCheck:!1})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Description"}),e.jsx("input",{value:a.summary,onChange:s=>d({...a,summary:s.target.value}),placeholder:"Deploy the current project",autoComplete:"off"})]})]}),e.jsxs("label",{children:[e.jsxs("span",{children:["Working directory ",e.jsx("em",{children:"optional · defaults to the active agent workspace"})]}),e.jsx("input",{value:a.cwd??"",onChange:s=>d({...a,cwd:s.target.value}),placeholder:"/home/user/project",autoComplete:"off",spellCheck:!1})]}),e.jsxs("label",{children:[e.jsxs("span",{children:["Bash script ",e.jsx("em",{children:"slash arguments are available as $1, $2, …"})]}),e.jsx("textarea",{value:a.script,onChange:s=>d({...a,script:s.target.value}),placeholder:`set -euo pipefail
2
2
  echo "Deploying $1"`,rows:7,spellCheck:!1})]}),e.jsxs("div",{className:"shell-command-editor__options",children:[e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",checked:a.runAsSudo===!0,onChange:s=>d({...a,runAsSudo:s.target.checked})}),e.jsxs("span",{children:[e.jsx("strong",{children:"Allow sudo"}),e.jsx("small",{children:"Ask once; only sudo lines run as root"})]})]}),e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",checked:a.pty!==!1,onChange:s=>d({...a,pty:s.target.checked})}),e.jsxs("span",{children:[e.jsx("strong",{children:"PTY output"}),e.jsx("small",{children:"Stream interactive progress and colors"})]})]}),e.jsxs("label",{children:[e.jsx("input",{type:"checkbox",checked:a.enabled!==!1,onChange:s=>d({...a,enabled:s.target.checked})}),e.jsxs("span",{children:[e.jsx("strong",{children:"Enabled"}),e.jsx("small",{children:"Show in slash command results"})]})]})]}),a.runAsSudo&&e.jsxs("div",{className:"shell-command-editor__sudo-note",children:[e.jsx(l,{name:"lock",size:11})," Tide passes the password to nested sudo calls over a private per-run channel. The script itself keeps running as the normal user."]}),e.jsxs("footer",{children:[e.jsx("button",{type:"button",onClick:()=>_(null),disabled:u,children:"Cancel"}),e.jsxs("button",{type:"button",className:"is-primary",onClick:()=>void b(),disabled:u||!a.name.trim()||!a.summary.trim()||!a.script.trim(),children:[e.jsx(l,{name:"save",size:11})," ",u?"Saving…":"Save command"]})]})]}),e.jsx("div",{className:"shell-command-list",children:z&&o.length===0?e.jsx("div",{className:"shell-command-list__empty",children:"Loading command scripts…"}):o.length===0?e.jsxs("div",{className:"shell-command-list__empty",children:[e.jsx(l,{name:"terminal",size:18}),e.jsx("strong",{children:"No command scripts registered"}),e.jsx("span",{children:"Add one to expose it in Spotlight and the Commander terminal."})]}):o.map(s=>e.jsxs("article",{className:s.enabled?"is-enabled":"is-disabled",children:[e.jsxs("div",{className:"shell-command-list__identity",children:[e.jsx("code",{children:s.name}),e.jsxs("div",{children:[e.jsx("strong",{children:s.summary}),e.jsx("span",{children:s.cwd||"Active agent workspace"})]})]}),e.jsxs("div",{className:"shell-command-list__badges",children:[s.runAsSudo&&e.jsxs("em",{className:"is-sudo",children:[e.jsx(l,{name:"lock",size:9})," sudo"]}),e.jsxs("em",{children:[e.jsx(l,{name:"bolt",size:9})," streamed"]})]}),e.jsxs("div",{className:"shell-command-list__actions",children:[e.jsx("button",{type:"button",onClick:()=>P(s),disabled:u||!!p,"aria-label":`Edit ${s.name}`,children:e.jsx(l,{name:"edit",size:11})}),e.jsx("button",{type:"button",onClick:()=>void I(s),disabled:u,"aria-label":`Delete ${s.name}`,children:e.jsx(l,{name:"trash",size:11})}),e.jsxs("label",{title:s.enabled?"Disable command":"Enable command",children:[e.jsx("input",{type:"checkbox",checked:s.enabled,disabled:u,onChange:()=>void N(s)}),e.jsx("span",{})]})]})]},s.id))})]})}function ee({isOpen:o,onClose:j}){const[p,_]=r.useState([]),[a,d]=r.useState(""),[z,w]=r.useState(!1),[u,m]=r.useState(null),[v,i]=r.useState(null),[g,k]=r.useState(null),P=O(),b=r.useCallback(async()=>{w(!0);try{_(await F())}catch(s){i({kind:"error",text:s instanceof Error?s.message:String(s)})}finally{w(!1)}},[]);r.useEffect(()=>{o?b():k(null)},[o,b]),r.useEffect(()=>{if(!o)return;const s=n=>{n.key==="Escape"&&j()};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[o,j]);const I=async(s,n)=>{m(s.id),i(null);try{const t=await C(S(`/api/plugins/${encodeURIComponent(s.id)}/${n?"enable":"disable"}`),{method:"POST"}),y=await t.json().catch(()=>({}));if(!t.ok)throw new Error(y.error||`Failed to ${n?"enable":"disable"} plugin`);await b()}catch(t){i({kind:"error",text:t instanceof Error?t.message:String(t)})}finally{m(null)}},N=async()=>{var n;const s=a.trim();if(s){m("__install__"),i(null);try{const t=await C(S("/api/plugins/install"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePath:s})}),y=await t.json().catch(()=>({}));if(!t.ok)throw new Error(y.error||"Plugin install failed");d(""),i({kind:"success",text:`${((n=y.plugin)==null?void 0:n.name)||"Plugin"} installed`}),await b()}catch(t){i({kind:"error",text:t instanceof Error?t.message:String(t)})}finally{m(null)}}};return o?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"modal-overlay visible plugins-panel-overlay",onMouseDown:s=>{s.target===s.currentTarget&&j()},children:e.jsxs("section",{className:"modal plugins-panel",role:"dialog","aria-modal":"true","aria-label":"Plugins",children:[e.jsxs("header",{className:"plugins-panel__header",children:[e.jsxs("div",{children:[e.jsxs("h2",{children:[e.jsx(l,{name:"plug",size:18})," Plugins"]}),e.jsx("p",{children:"Trusted local extensions for Tide Commander"})]}),e.jsx("button",{type:"button",onClick:j,"aria-label":"Close",children:e.jsx(l,{name:"close",size:16})})]}),e.jsxs("div",{className:"plugins-panel__install",children:[e.jsxs("div",{className:"plugins-panel__install-heading",children:[e.jsx("span",{className:"plugins-panel__install-icon",children:e.jsx(l,{name:"folder",size:16})}),e.jsxs("div",{children:[e.jsx("label",{htmlFor:"plugin-source-path",children:"Install from a local folder"}),e.jsx("p",{children:"Enter the absolute path to a Tide plugin directory."})]})]}),e.jsxs("div",{className:"plugins-panel__path-row",children:[e.jsx("span",{className:"plugins-panel__path-prefix","aria-hidden":"true",children:e.jsx(l,{name:"terminal",size:13})}),e.jsx("input",{id:"plugin-source-path",value:a,onChange:s=>d(s.target.value),placeholder:"/path/to/tide-plugin",autoComplete:"off",spellCheck:!1,onKeyDown:s=>{s.key==="Enter"&&N()}}),e.jsxs("button",{type:"button",onClick:()=>void N(),disabled:!a.trim()||u==="__install__",children:[e.jsx(l,{name:"plug",size:13}),e.jsx("span",{children:u==="__install__"?"Installing…":"Install plugin"})]})]}),e.jsxs("div",{className:"plugins-panel__trust-note",children:[e.jsx(l,{name:"lock",size:12}),e.jsxs("span",{children:[e.jsx("strong",{children:"Trusted local code."})," Plugins run with Tide Commander permissions, so install only code you trust."]})]})]}),v&&e.jsx("div",{className:`plugins-panel__message is-${v.kind}`,children:v.text}),e.jsxs("div",{className:"plugins-panel__list",children:[e.jsx(q,{}),z&&p.length===0?e.jsx("div",{className:"plugins-panel__empty",children:"Loading plugins…"}):p.length===0?e.jsx("div",{className:"plugins-panel__empty",children:"No plugins installed"}):p.map(s=>{var n,t,y,D,U,L,M,B,R;return e.jsxs("article",{className:`plugin-list-item${s.enabled?" is-enabled":""}`,children:[e.jsx("div",{className:"plugin-list-item__icon",children:e.jsx(l,{name:"plug",size:16})}),e.jsxs("div",{className:"plugin-list-item__info",children:[e.jsxs("div",{className:"plugin-list-item__title",children:[e.jsx("strong",{children:s.name}),e.jsxs("span",{children:["v",s.version]}),s.builtin||s.source==="builtin"?e.jsx("em",{children:"built-in"}):null]}),e.jsx("p",{children:s.description||s.id}),(((n=s.contributes)==null?void 0:n.settings)||((y=(t=s.manifest)==null?void 0:t.contributes)==null?void 0:y.settings)||[]).map(c=>{var x,E;const h=c;return h.type!=="integration"?null:e.jsxs("section",{className:"plugin-list-item__settings",children:[e.jsxs("div",{className:"plugin-list-item__settings-heading",children:[e.jsxs("span",{children:[e.jsx(l,{name:"gear",size:12})," Configuración"]}),e.jsxs("button",{type:"button",onClick:()=>k(h.integrationId),children:[e.jsx(l,{name:"key",size:11})," Configurar"]})]}),e.jsx("strong",{children:h.title}),h.description&&e.jsx("p",{children:h.description}),(x=h.instructions)!=null&&x.length?e.jsx("ol",{children:h.instructions.map((f,T)=>e.jsx("li",{children:f},`${h.id}-${T}`))}):null,(E=h.secrets)!=null&&E.length?e.jsxs("div",{className:"plugin-list-item__secrets",children:[e.jsxs("span",{children:[e.jsx(l,{name:"lock",size:10})," Secretos administrados de forma segura"]}),e.jsx("div",{children:h.secrets.map(f=>e.jsx("code",{children:f},f))})]}):null]},h.id)}),(((D=s.contributes)==null?void 0:D.slashCommands)||((L=(U=s.manifest)==null?void 0:U.contributes)==null?void 0:L.slashCommands)||[]).length>0&&e.jsxs("div",{className:"plugin-list-item__commands",children:[e.jsxs("div",{className:"plugin-list-item__commands-title",children:[e.jsx(l,{name:"keyboard",size:11})," Global command shortcuts"]}),(((M=s.contributes)==null?void 0:M.slashCommands)||((R=(B=s.manifest)==null?void 0:B.contributes)==null?void 0:R.slashCommands)||[]).map(c=>{var f;const h=J(s.id,c.name),x=Y(P[h]),E={id:`plugin-command:${s.id}:${c.name}`,name:c.name,description:c.summary,key:(x==null?void 0:x.key)||"",modifiers:(x==null?void 0:x.modifiers)||{},enabled:!0,context:"global"};return e.jsxs("div",{className:"plugin-command-shortcut",children:[e.jsxs("div",{className:"plugin-command-shortcut__info",children:[e.jsx("code",{children:c.name}),e.jsx("span",{children:c.summary}),(f=c.aliases)!=null&&f.length?e.jsxs("em",{children:["Aliases: ",c.aliases.join(", ")]}):null]}),e.jsx(G,{shortcut:E,onUpdate:T=>W(s.id,c.name,T)})]},c.name)})]}),s.error&&e.jsx("div",{className:"plugin-list-item__error",children:s.error})]}),e.jsxs("label",{className:"plugin-list-item__toggle",title:s.enabled?"Disable plugin":"Enable plugin",children:[e.jsx("input",{type:"checkbox",checked:s.enabled,disabled:u===s.id,onChange:c=>void I(s,c.target.checked)}),e.jsx("span",{})]})]},s.id)})]})]})}),g&&e.jsx(Z,{isOpen:!0,initialTab:g,zIndex:10030,onClose:()=>{k(null),b()}})]}):null}export{ee as PluginsPanel};
@@ -1 +1 @@
1
- import{u as m,a1 as f,j as e,I as N,s as d}from"./main-BKRg0DBA.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DSCAlQQW.js";function g(r){const t=Date.now()-r,i=Math.floor(t/1e3),a=Math.floor(i/60),c=Math.floor(a/60),n=Math.floor(c/24);return n>0?`${n} day${n>1?"s":""} ago`:c>0?`${c} hour${c>1?"s":""} ago`:a>0?`${a} min${a>1?"s":""} ago`:"just now"}function k({isOpen:r,restorePosition:l,onClose:t,onRestored:i}){const{t:a}=m(["terminal","common"]),c=f(),n=Array.from(c.values()).filter(s=>s.archived===!0),o=(s,j)=>{const x=j?void 0:l||void 0;d.restoreArchivedArea(s,x),i==null||i(),t()},h=()=>{for(const s of n)d.restoreArchivedArea(s.id);i==null||i(),t()},v=s=>{s.target===s.currentTarget&&t()},u=s=>{s.key==="Escape"&&t()};return r?e.jsx("div",{className:`modal-overlay ${r?"visible":""}`,onClick:v,onKeyDown:u,children:e.jsxs("div",{className:"modal restore-archived-modal",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("span",{className:"header-icon",children:e.jsx(N,{name:"package",size:16})}),a("terminal:areas.restoreArchivedZone")]}),e.jsx("div",{className:"modal-body restore-archived-body",children:n.length===0?e.jsx("div",{className:"archived-empty",children:a("terminal:areas.noArchivedZones")}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"restore-info",children:a("terminal:areas.restoreInfo")}),e.jsx("div",{className:"archived-list",children:n.map(s=>e.jsx(p,{area:s,onRestoreHere:()=>o(s.id,!1),onRestoreOriginal:()=>o(s.id,!0),hasRestorePosition:!!l},s.id))}),n.length>1&&e.jsx("div",{className:"restore-all-section",children:e.jsx("button",{className:"btn btn-secondary",onClick:h,children:a("terminal:areas.restoreAllOriginal")})})]})}),e.jsx("div",{className:"modal-footer",children:e.jsx("button",{className:"btn btn-secondary",onClick:t,children:a("common:buttons.cancel")})})]})}):null}function p({area:r,onRestoreHere:l,onRestoreOriginal:t,hasRestorePosition:i}){const{t:a}=m(["terminal","common"]),c=r.assignedAgentIds.length,n=r.directories.length;return e.jsxs("div",{className:"archived-item",children:[e.jsx("div",{className:"archived-item-color",style:{backgroundColor:r.color}}),e.jsxs("div",{className:"archived-item-info",children:[e.jsx("div",{className:"archived-item-name",children:r.name}),e.jsxs("div",{className:"archived-item-meta",children:[e.jsx("span",{className:"archived-item-type",children:r.type}),c>0&&e.jsx("span",{className:"archived-item-agents",children:a("terminal:areas.agentCount",{count:c})}),n>0&&e.jsx("span",{className:"archived-item-dirs",children:a("terminal:areas.folderCount",{count:n})}),r.archivedAt&&e.jsx("span",{className:"archived-item-time",children:g(r.archivedAt)})]})]}),e.jsxs("div",{className:"archived-item-actions",children:[i&&e.jsx("button",{className:"btn btn-small btn-primary",onClick:l,title:a("terminal:areas.placeAtClickedPosition"),children:a("terminal:areas.restoreHere")}),e.jsx("button",{className:"btn btn-small",onClick:t,title:a("terminal:areas.restoreToOriginal"),children:a(i?"terminal:areas.original":"terminal:areas.restore")})]})]})}export{k as RestoreArchivedAreaModal};
1
+ import{u as m,a1 as f,j as e,I as N,s as d}from"./main-9sJvXBYL.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-DSCAlQQW.js";function g(r){const t=Date.now()-r,i=Math.floor(t/1e3),a=Math.floor(i/60),c=Math.floor(a/60),n=Math.floor(c/24);return n>0?`${n} day${n>1?"s":""} ago`:c>0?`${c} hour${c>1?"s":""} ago`:a>0?`${a} min${a>1?"s":""} ago`:"just now"}function k({isOpen:r,restorePosition:l,onClose:t,onRestored:i}){const{t:a}=m(["terminal","common"]),c=f(),n=Array.from(c.values()).filter(s=>s.archived===!0),o=(s,j)=>{const x=j?void 0:l||void 0;d.restoreArchivedArea(s,x),i==null||i(),t()},h=()=>{for(const s of n)d.restoreArchivedArea(s.id);i==null||i(),t()},v=s=>{s.target===s.currentTarget&&t()},u=s=>{s.key==="Escape"&&t()};return r?e.jsx("div",{className:`modal-overlay ${r?"visible":""}`,onClick:v,onKeyDown:u,children:e.jsxs("div",{className:"modal restore-archived-modal",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("span",{className:"header-icon",children:e.jsx(N,{name:"package",size:16})}),a("terminal:areas.restoreArchivedZone")]}),e.jsx("div",{className:"modal-body restore-archived-body",children:n.length===0?e.jsx("div",{className:"archived-empty",children:a("terminal:areas.noArchivedZones")}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"restore-info",children:a("terminal:areas.restoreInfo")}),e.jsx("div",{className:"archived-list",children:n.map(s=>e.jsx(p,{area:s,onRestoreHere:()=>o(s.id,!1),onRestoreOriginal:()=>o(s.id,!0),hasRestorePosition:!!l},s.id))}),n.length>1&&e.jsx("div",{className:"restore-all-section",children:e.jsx("button",{className:"btn btn-secondary",onClick:h,children:a("terminal:areas.restoreAllOriginal")})})]})}),e.jsx("div",{className:"modal-footer",children:e.jsx("button",{className:"btn btn-secondary",onClick:t,children:a("common:buttons.cancel")})})]})}):null}function p({area:r,onRestoreHere:l,onRestoreOriginal:t,hasRestorePosition:i}){const{t:a}=m(["terminal","common"]),c=r.assignedAgentIds.length,n=r.directories.length;return e.jsxs("div",{className:"archived-item",children:[e.jsx("div",{className:"archived-item-color",style:{backgroundColor:r.color}}),e.jsxs("div",{className:"archived-item-info",children:[e.jsx("div",{className:"archived-item-name",children:r.name}),e.jsxs("div",{className:"archived-item-meta",children:[e.jsx("span",{className:"archived-item-type",children:r.type}),c>0&&e.jsx("span",{className:"archived-item-agents",children:a("terminal:areas.agentCount",{count:c})}),n>0&&e.jsx("span",{className:"archived-item-dirs",children:a("terminal:areas.folderCount",{count:n})}),r.archivedAt&&e.jsx("span",{className:"archived-item-time",children:g(r.archivedAt)})]})]}),e.jsxs("div",{className:"archived-item-actions",children:[i&&e.jsx("button",{className:"btn btn-small btn-primary",onClick:l,title:a("terminal:areas.placeAtClickedPosition"),children:a("terminal:areas.restoreHere")}),e.jsx("button",{className:"btn btn-small",onClick:t,title:a("terminal:areas.restoreToOriginal"),children:a(i?"terminal:areas.original":"terminal:areas.restore")})]})]})}export{k as RestoreArchivedAreaModal};