agent-relay-server 0.47.0 → 0.49.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/docs/openapi.json +29 -1
- package/package.json +1 -1
- package/public/assets/{activity-Dkzmef0Z.js → activity--wk4dICK.js} +2 -2
- package/public/assets/{activity-Dkzmef0Z.js.map → activity--wk4dICK.js.map} +1 -1
- package/public/assets/{agent-profiles-DQYHMAyu.js → agent-profiles-D_GQ78i3.js} +2 -2
- package/public/assets/{agent-profiles-DQYHMAyu.js.map → agent-profiles-D_GQ78i3.js.map} +1 -1
- package/public/assets/{agents-atr6HZ1e.js → agents-CrGzl-aX.js} +2 -2
- package/public/assets/{agents-atr6HZ1e.js.map → agents-CrGzl-aX.js.map} +1 -1
- package/public/assets/{analytics-azFfAy4R.js → analytics-CvZ_3LoL.js} +2 -2
- package/public/assets/{analytics-azFfAy4R.js.map → analytics-CvZ_3LoL.js.map} +1 -1
- package/public/assets/{andromeeda-TOIXRHPH.js → andromeeda-DedNvx3u.js} +1 -1
- package/public/assets/{andromeeda-TOIXRHPH.js.map → andromeeda-DedNvx3u.js.map} +1 -1
- package/public/assets/{angular-html-BayrRwsh.js → angular-html-BDsKlrFR.js} +2 -2
- package/public/assets/{angular-html-BayrRwsh.js.map → angular-html-BDsKlrFR.js.map} +1 -1
- package/public/assets/{angular-ts-BSsl-wTg.js → angular-ts-Dj0DuNAz.js} +2 -2
- package/public/assets/{angular-ts-BSsl-wTg.js.map → angular-ts-Dj0DuNAz.js.map} +1 -1
- package/public/assets/{astro-CMeXtmOY.js → astro-CWT8VbA8.js} +2 -2
- package/public/assets/{astro-CMeXtmOY.js.map → astro-CWT8VbA8.js.map} +1 -1
- package/public/assets/{aurora-x-COD2iFEK.js → aurora-x-BaB_RRL_.js} +1 -1
- package/public/assets/{aurora-x-COD2iFEK.js.map → aurora-x-BaB_RRL_.js.map} +1 -1
- package/public/assets/automation-D-p56w9w.js +2 -0
- package/public/assets/{automation-Bk4umHIm.js.map → automation-D-p56w9w.js.map} +1 -1
- package/public/assets/{ayu-dark-C26og0gq.js → ayu-dark-DNAy_9St.js} +1 -1
- package/public/assets/{ayu-dark-C26og0gq.js.map → ayu-dark-DNAy_9St.js.map} +1 -1
- package/public/assets/{ayu-light-CjU_OF-J.js → ayu-light-CPmuGcAc.js} +1 -1
- package/public/assets/{ayu-light-CjU_OF-J.js.map → ayu-light-CPmuGcAc.js.map} +1 -1
- package/public/assets/{ayu-mirage-mioaBxYY.js → ayu-mirage-Bl6FPCHF.js} +1 -1
- package/public/assets/{ayu-mirage-mioaBxYY.js.map → ayu-mirage-Bl6FPCHF.js.map} +1 -1
- package/public/assets/{badge-CFVr4fG9.js → badge-BR4bvEsy.js} +1 -1
- package/public/assets/{badge-CFVr4fG9.js.map → badge-BR4bvEsy.js.map} +1 -1
- package/public/assets/{blade-B4XscQpM.js → blade-Ba6j-i-7.js} +2 -2
- package/public/assets/{blade-B4XscQpM.js.map → blade-Ba6j-i-7.js.map} +1 -1
- package/public/assets/{branch-state-badge-DymObp8d.js → branch-state-badge-B8h3vcwK.js} +2 -2
- package/public/assets/{branch-state-badge-DymObp8d.js.map → branch-state-badge-B8h3vcwK.js.map} +1 -1
- package/public/assets/{bundle-web-C85e9Tgc.js → bundle-web-CXNb85wK.js} +4 -4
- package/public/assets/{bundle-web-C85e9Tgc.js.map → bundle-web-CXNb85wK.js.map} +1 -1
- package/public/assets/{button-BuTu0MHx.js → button-BwqJZS4O.js} +1 -1
- package/public/assets/{button-BuTu0MHx.js.map → button-BwqJZS4O.js.map} +1 -1
- package/public/assets/{c-ByxfEyyT.js → c-DMcYlaVJ.js} +1 -1
- package/public/assets/{c-ByxfEyyT.js.map → c-DMcYlaVJ.js.map} +1 -1
- package/public/assets/{card-C3ErQ372.js → card-C7JtSyuM.js} +1 -1
- package/public/assets/{card-C3ErQ372.js.map → card-C7JtSyuM.js.map} +1 -1
- package/public/assets/{catppuccin-frappe-Kqc2IrH6.js → catppuccin-frappe-CED1OCCz.js} +1 -1
- package/public/assets/{catppuccin-frappe-Kqc2IrH6.js.map → catppuccin-frappe-CED1OCCz.js.map} +1 -1
- package/public/assets/{catppuccin-latte-BE2tZ0v0.js → catppuccin-latte-C5iwPIMF.js} +1 -1
- package/public/assets/{catppuccin-latte-BE2tZ0v0.js.map → catppuccin-latte-C5iwPIMF.js.map} +1 -1
- package/public/assets/{catppuccin-macchiato-Crk2wQFW.js → catppuccin-macchiato-ZH42ATbn.js} +1 -1
- package/public/assets/{catppuccin-macchiato-Crk2wQFW.js.map → catppuccin-macchiato-ZH42ATbn.js.map} +1 -1
- package/public/assets/{catppuccin-mocha-E6G_9ebZ.js → catppuccin-mocha-BHvtuFhF.js} +1 -1
- package/public/assets/{catppuccin-mocha-E6G_9ebZ.js.map → catppuccin-mocha-BHvtuFhF.js.map} +1 -1
- package/public/assets/{channels-B_0wDy0s.js → channels-K5yks-NP.js} +2 -2
- package/public/assets/{channels-B_0wDy0s.js.map → channels-K5yks-NP.js.map} +1 -1
- package/public/assets/{chat-DxV4MyYF.js → chat-AcrAMzhN.js} +2 -2
- package/public/assets/{chat-DxV4MyYF.js.map → chat-AcrAMzhN.js.map} +1 -1
- package/public/assets/{coffee-ATZfkmsf.js → coffee-ahz2W4ez.js} +2 -2
- package/public/assets/{coffee-ATZfkmsf.js.map → coffee-ahz2W4ez.js.map} +1 -1
- package/public/assets/{connectors-DLqYF2_3.js → connectors-fy5L_B2T.js} +2 -2
- package/public/assets/{connectors-DLqYF2_3.js.map → connectors-fy5L_B2T.js.map} +1 -1
- package/public/assets/{copy-button-BOj6uOlU.js → copy-button-nbDhTE0M.js} +2 -2
- package/public/assets/{copy-button-BOj6uOlU.js.map → copy-button-nbDhTE0M.js.map} +1 -1
- package/public/assets/{cpp-BMZiIqTo.js → cpp-D6codUeh.js} +2 -2
- package/public/assets/{cpp-BMZiIqTo.js.map → cpp-D6codUeh.js.map} +1 -1
- package/public/assets/{css-pVoA-V-6.js → css-DqWVA79r.js} +1 -1
- package/public/assets/{css-pVoA-V-6.js.map → css-DqWVA79r.js.map} +1 -1
- package/public/assets/{csv-BSXvLGS5.js → csv-Dkqn3OZd.js} +1 -1
- package/public/assets/{csv-BSXvLGS5.js.map → csv-Dkqn3OZd.js.map} +1 -1
- package/public/assets/{dark-plus-D92FcoIb.js → dark-plus-Bhbx-RUU.js} +1 -1
- package/public/assets/{dark-plus-D92FcoIb.js.map → dark-plus-Bhbx-RUU.js.map} +1 -1
- package/public/assets/{display-ConJ9cJB.js → display-CXhnBwGf.js} +2 -2
- package/public/assets/display-CXhnBwGf.js.map +1 -0
- package/public/assets/dist-tX4uIBFU.js +2 -0
- package/public/assets/dist-tX4uIBFU.js.map +1 -0
- package/public/assets/{dracula-CLm43lMW.js → dracula-CFWRbQev.js} +1 -1
- package/public/assets/{dracula-CLm43lMW.js.map → dracula-CFWRbQev.js.map} +1 -1
- package/public/assets/{dracula-soft-BWF1hppd.js → dracula-soft-DgjJVcsb.js} +1 -1
- package/public/assets/{dracula-soft-BWF1hppd.js.map → dracula-soft-DgjJVcsb.js.map} +1 -1
- package/public/assets/{everforest-dark-T3FmZXFC.js → everforest-dark-BCF48HzC.js} +1 -1
- package/public/assets/{everforest-dark-T3FmZXFC.js.map → everforest-dark-BCF48HzC.js.map} +1 -1
- package/public/assets/{everforest-light-sVfJGMcT.js → everforest-light-QmYaRFne.js} +1 -1
- package/public/assets/{everforest-light-sVfJGMcT.js.map → everforest-light-QmYaRFne.js.map} +1 -1
- package/public/assets/{formatted-body-impl-LK0QcFLC.js → formatted-body-impl-BRKtV_Ec.js} +2 -2
- package/public/assets/{formatted-body-impl-LK0QcFLC.js.map → formatted-body-impl-BRKtV_Ec.js.map} +1 -1
- package/public/assets/{github-dark-DsObA6K_.js → github-dark-CUoBUDXH.js} +1 -1
- package/public/assets/{github-dark-DsObA6K_.js.map → github-dark-CUoBUDXH.js.map} +1 -1
- package/public/assets/{github-dark-default-BFXKIBjn.js → github-dark-default-xm9OU1Or.js} +1 -1
- package/public/assets/{github-dark-default-BFXKIBjn.js.map → github-dark-default-xm9OU1Or.js.map} +1 -1
- package/public/assets/{github-dark-dimmed-CA0i637b.js → github-dark-dimmed-DWnz-mHy.js} +1 -1
- package/public/assets/{github-dark-dimmed-CA0i637b.js.map → github-dark-dimmed-DWnz-mHy.js.map} +1 -1
- package/public/assets/{github-dark-high-contrast-Ca5xjJfx.js → github-dark-high-contrast-vOK_ibgU.js} +1 -1
- package/public/assets/{github-dark-high-contrast-Ca5xjJfx.js.map → github-dark-high-contrast-vOK_ibgU.js.map} +1 -1
- package/public/assets/{github-light-fLfNb4d8.js → github-light-CSF3E5Ti.js} +1 -1
- package/public/assets/{github-light-fLfNb4d8.js.map → github-light-CSF3E5Ti.js.map} +1 -1
- package/public/assets/{github-light-default-Dsv_97Kr.js → github-light-default-C01wYcDQ.js} +1 -1
- package/public/assets/{github-light-default-Dsv_97Kr.js.map → github-light-default-C01wYcDQ.js.map} +1 -1
- package/public/assets/{github-light-high-contrast-DTv2awN9.js → github-light-high-contrast-CKMMnFZg.js} +1 -1
- package/public/assets/{github-light-high-contrast-DTv2awN9.js.map → github-light-high-contrast-CKMMnFZg.js.map} +1 -1
- package/public/assets/{glsl-Bn23UELY.js → glsl-1QPrVesi.js} +2 -2
- package/public/assets/{glsl-Bn23UELY.js.map → glsl-1QPrVesi.js.map} +1 -1
- package/public/assets/{graphql-aueZA_Ef.js → graphql-CeRwileo.js} +2 -2
- package/public/assets/{graphql-aueZA_Ef.js.map → graphql-CeRwileo.js.map} +1 -1
- package/public/assets/{gruvbox-dark-hard-CD8QV-rj.js → gruvbox-dark-hard-DfDjG47E.js} +1 -1
- package/public/assets/{gruvbox-dark-hard-CD8QV-rj.js.map → gruvbox-dark-hard-DfDjG47E.js.map} +1 -1
- package/public/assets/{gruvbox-dark-medium-DWjrnm0G.js → gruvbox-dark-medium-BaAW7CWr.js} +1 -1
- package/public/assets/{gruvbox-dark-medium-DWjrnm0G.js.map → gruvbox-dark-medium-BaAW7CWr.js.map} +1 -1
- package/public/assets/{gruvbox-dark-soft-Dutnyk8h.js → gruvbox-dark-soft-BbwgAlEC.js} +1 -1
- package/public/assets/{gruvbox-dark-soft-Dutnyk8h.js.map → gruvbox-dark-soft-BbwgAlEC.js.map} +1 -1
- package/public/assets/{gruvbox-light-hard-DxOkDhYo.js → gruvbox-light-hard-GnBGwkrS.js} +1 -1
- package/public/assets/{gruvbox-light-hard-DxOkDhYo.js.map → gruvbox-light-hard-GnBGwkrS.js.map} +1 -1
- package/public/assets/{gruvbox-light-medium-TPSmjstG.js → gruvbox-light-medium-tlbreNy6.js} +1 -1
- package/public/assets/{gruvbox-light-medium-TPSmjstG.js.map → gruvbox-light-medium-tlbreNy6.js.map} +1 -1
- package/public/assets/{gruvbox-light-soft-Ds4EoYMY.js → gruvbox-light-soft-D2K4d_jB.js} +1 -1
- package/public/assets/{gruvbox-light-soft-Ds4EoYMY.js.map → gruvbox-light-soft-D2K4d_jB.js.map} +1 -1
- package/public/assets/{haml-I560b6sm.js → haml-CAFaQgkc.js} +2 -2
- package/public/assets/{haml-I560b6sm.js.map → haml-CAFaQgkc.js.map} +1 -1
- package/public/assets/{handlebars-DDaqkztc.js → handlebars-PzQcjzkd.js} +2 -2
- package/public/assets/{handlebars-DDaqkztc.js.map → handlebars-PzQcjzkd.js.map} +1 -1
- package/public/assets/{horizon-Btssz0LS.js → horizon-DIDc_X2h.js} +1 -1
- package/public/assets/{horizon-Btssz0LS.js.map → horizon-DIDc_X2h.js.map} +1 -1
- package/public/assets/{horizon-bright-Wt7Dv8FR.js → horizon-bright-BJPNCJjc.js} +1 -1
- package/public/assets/{horizon-bright-Wt7Dv8FR.js.map → horizon-bright-BJPNCJjc.js.map} +1 -1
- package/public/assets/{houston-BAzN2-5D.js → houston-OF5sQVBP.js} +1 -1
- package/public/assets/{houston-BAzN2-5D.js.map → houston-OF5sQVBP.js.map} +1 -1
- package/public/assets/{html-CWUNxVmc.js → html-CO8fGX9G.js} +2 -2
- package/public/assets/{html-CWUNxVmc.js.map → html-CO8fGX9G.js.map} +1 -1
- package/public/assets/{html-derivative-CZZaFvoZ.js → html-derivative-jkdQXb1I.js} +2 -2
- package/public/assets/{html-derivative-CZZaFvoZ.js.map → html-derivative-jkdQXb1I.js.map} +1 -1
- package/public/assets/{http-oB_MYwkH.js → http-awp31Uam.js} +2 -2
- package/public/assets/{http-oB_MYwkH.js.map → http-awp31Uam.js.map} +1 -1
- package/public/assets/{hurl-Dh_Bacst.js → hurl-CYLzH5tU.js} +2 -2
- package/public/assets/{hurl-Dh_Bacst.js.map → hurl-CYLzH5tU.js.map} +1 -1
- package/public/assets/{imba-CYU3KKfp.js → imba-DSmsmqxt.js} +1 -1
- package/public/assets/{imba-CYU3KKfp.js.map → imba-DSmsmqxt.js.map} +1 -1
- package/public/assets/index-B8ND8v33.css +2 -0
- package/public/assets/index-C6HByEQl.js +21 -0
- package/public/assets/index-C6HByEQl.js.map +1 -0
- package/public/assets/{input-CawU8wfc.js → input-YoPXrp72.js} +1 -1
- package/public/assets/{input-CawU8wfc.js.map → input-YoPXrp72.js.map} +1 -1
- package/public/assets/insights-DFs8q-45.js +2 -0
- package/public/assets/{insights-DZKCKL71.js.map → insights-DFs8q-45.js.map} +1 -1
- package/public/assets/{integrations-CdeQuRSQ.js → integrations-Bg_JSXvm.js} +2 -2
- package/public/assets/{integrations-CdeQuRSQ.js.map → integrations-Bg_JSXvm.js.map} +1 -1
- package/public/assets/{java-W2nUDe85.js → java-DgkDOVUq.js} +1 -1
- package/public/assets/{java-W2nUDe85.js.map → java-DgkDOVUq.js.map} +1 -1
- package/public/assets/{javascript-DhhMt2AW.js → javascript-B_u1HgsA.js} +1 -1
- package/public/assets/{javascript-DhhMt2AW.js.map → javascript-B_u1HgsA.js.map} +1 -1
- package/public/assets/{jinja-BAB89wEM.js → jinja-2vqfsTaa.js} +2 -2
- package/public/assets/{jinja-BAB89wEM.js.map → jinja-2vqfsTaa.js.map} +1 -1
- package/public/assets/{jison-Be2VyOc7.js → jison-R_8Xl2fT.js} +2 -2
- package/public/assets/{jison-Be2VyOc7.js.map → jison-R_8Xl2fT.js.map} +1 -1
- package/public/assets/{json-BE_Kg3UN.js → json-gsp9Jz-Q.js} +1 -1
- package/public/assets/{json-BE_Kg3UN.js.map → json-gsp9Jz-Q.js.map} +1 -1
- package/public/assets/{json5-B1_eJGWL.js → json5-CyawKEQV.js} +1 -1
- package/public/assets/{json5-B1_eJGWL.js.map → json5-CyawKEQV.js.map} +1 -1
- package/public/assets/{jsonc-c9fYzzNa.js → jsonc-C5zIYKcF.js} +1 -1
- package/public/assets/{jsonc-c9fYzzNa.js.map → jsonc-C5zIYKcF.js.map} +1 -1
- package/public/assets/{jsonl-DxKnIZRN.js → jsonl-7Iqw6Ajc.js} +1 -1
- package/public/assets/{jsonl-DxKnIZRN.js.map → jsonl-7Iqw6Ajc.js.map} +1 -1
- package/public/assets/{jsx-DP4JsN7e.js → jsx-6UC0zwzb.js} +1 -1
- package/public/assets/{jsx-DP4JsN7e.js.map → jsx-6UC0zwzb.js.map} +1 -1
- package/public/assets/{julia-DIA2-AWD.js → julia-B68-s46l.js} +2 -2
- package/public/assets/{julia-DIA2-AWD.js.map → julia-B68-s46l.js.map} +1 -1
- package/public/assets/{kanagawa-dragon-D7ScO9qT.js → kanagawa-dragon-CXS-g1Gx.js} +1 -1
- package/public/assets/{kanagawa-dragon-D7ScO9qT.js.map → kanagawa-dragon-CXS-g1Gx.js.map} +1 -1
- package/public/assets/{kanagawa-lotus-BHmtJ61Q.js → kanagawa-lotus-8h3vn-GZ.js} +1 -1
- package/public/assets/{kanagawa-lotus-BHmtJ61Q.js.map → kanagawa-lotus-8h3vn-GZ.js.map} +1 -1
- package/public/assets/{kanagawa-wave-C8Lga2zE.js → kanagawa-wave-C0HtbWGq.js} +1 -1
- package/public/assets/{kanagawa-wave-C8Lga2zE.js.map → kanagawa-wave-C0HtbWGq.js.map} +1 -1
- package/public/assets/{laserwave-D4LCoVki.js → laserwave-CbYdyo81.js} +1 -1
- package/public/assets/{laserwave-D4LCoVki.js.map → laserwave-CbYdyo81.js.map} +1 -1
- package/public/assets/{less-C4-yvJVc.js → less-CfNrES-C.js} +1 -1
- package/public/assets/{less-C4-yvJVc.js.map → less-CfNrES-C.js.map} +1 -1
- package/public/assets/{lib-BmYG-YKF.js → lib-D8ccisdr.js} +2 -2
- package/public/assets/{lib-BmYG-YKF.js.map → lib-D8ccisdr.js.map} +1 -1
- package/public/assets/{lib-D3a84zdu.js → lib-VSpj1Yz-.js} +1 -1
- package/public/assets/{lib-D3a84zdu.js.map → lib-VSpj1Yz-.js.map} +1 -1
- package/public/assets/{light-plus-CKgUzHbZ.js → light-plus-D5ngymkI.js} +1 -1
- package/public/assets/{light-plus-CKgUzHbZ.js.map → light-plus-D5ngymkI.js.map} +1 -1
- package/public/assets/{maintenance-DbqSE_ps.js → maintenance-DHZOmgPn.js} +2 -2
- package/public/assets/{maintenance-DbqSE_ps.js.map → maintenance-DHZOmgPn.js.map} +1 -1
- package/public/assets/{managed-agents-BxhRiBVn.js → managed-agents-DmSyKkG1.js} +2 -2
- package/public/assets/{managed-agents-BxhRiBVn.js.map → managed-agents-DmSyKkG1.js.map} +1 -1
- package/public/assets/{markdown-BJXgi76t.js → markdown-DcNETIgQ.js} +1 -1
- package/public/assets/{markdown-BJXgi76t.js.map → markdown-DcNETIgQ.js.map} +1 -1
- package/public/assets/{markdown-preview-impl-Dz2Spmat.js → markdown-preview-impl-C1D7h9Rg.js} +2 -2
- package/public/assets/{markdown-preview-impl-Dz2Spmat.js.map → markdown-preview-impl-C1D7h9Rg.js.map} +1 -1
- package/public/assets/{marko-s78cde-R.js → marko-BknKj3Pf.js} +2 -2
- package/public/assets/{marko-s78cde-R.js.map → marko-BknKj3Pf.js.map} +1 -1
- package/public/assets/{material-theme-ZMpZUDuj.js → material-theme-Gg3xfPe0.js} +1 -1
- package/public/assets/{material-theme-ZMpZUDuj.js.map → material-theme-Gg3xfPe0.js.map} +1 -1
- package/public/assets/{material-theme-darker-BAQbewVz.js → material-theme-darker-BZuy5-S0.js} +1 -1
- package/public/assets/{material-theme-darker-BAQbewVz.js.map → material-theme-darker-BZuy5-S0.js.map} +1 -1
- package/public/assets/{material-theme-lighter-FyN5xGWf.js → material-theme-lighter-C5V_iqXU.js} +1 -1
- package/public/assets/{material-theme-lighter-FyN5xGWf.js.map → material-theme-lighter-C5V_iqXU.js.map} +1 -1
- package/public/assets/{material-theme-ocean-C-7FJG01.js → material-theme-ocean-Bm7qyAET.js} +1 -1
- package/public/assets/{material-theme-ocean-C-7FJG01.js.map → material-theme-ocean-Bm7qyAET.js.map} +1 -1
- package/public/assets/{material-theme-palenight-CTAI-sIL.js → material-theme-palenight--HkFOey5.js} +1 -1
- package/public/assets/{material-theme-palenight-CTAI-sIL.js.map → material-theme-palenight--HkFOey5.js.map} +1 -1
- package/public/assets/{mdc-D1B7fLQ0.js → mdc-DZz2DrXs.js} +2 -2
- package/public/assets/{mdc-D1B7fLQ0.js.map → mdc-DZz2DrXs.js.map} +1 -1
- package/public/assets/{mdx-DZlYR5iE.js → mdx-8jaRik-D.js} +1 -1
- package/public/assets/{mdx-DZlYR5iE.js.map → mdx-8jaRik-D.js.map} +1 -1
- package/public/assets/{memory-BTjUKTyA.js → memory-p2-2Ondq.js} +2 -2
- package/public/assets/{memory-BTjUKTyA.js.map → memory-p2-2Ondq.js.map} +1 -1
- package/public/assets/{messages-C8z05Y3O.js → messages-vytFTjcd.js} +2 -2
- package/public/assets/{messages-C8z05Y3O.js.map → messages-vytFTjcd.js.map} +1 -1
- package/public/assets/{min-dark-BZ3g8z3r.js → min-dark-BwzrQQKV.js} +1 -1
- package/public/assets/{min-dark-BZ3g8z3r.js.map → min-dark-BwzrQQKV.js.map} +1 -1
- package/public/assets/{min-light-BVOwCf2X.js → min-light-CuZnzJu2.js} +1 -1
- package/public/assets/{min-light-BVOwCf2X.js.map → min-light-CuZnzJu2.js.map} +1 -1
- package/public/assets/{monokai-BD0UwGu2.js → monokai-DQ6Z_SqG.js} +1 -1
- package/public/assets/{monokai-BD0UwGu2.js.map → monokai-DQ6Z_SqG.js.map} +1 -1
- package/public/assets/{night-owl-E_m7-w50.js → night-owl-CJ5iV153.js} +1 -1
- package/public/assets/{night-owl-E_m7-w50.js.map → night-owl-CJ5iV153.js.map} +1 -1
- package/public/assets/{night-owl-light-C4iZ6jhb.js → night-owl-light-C46RDt8C.js} +1 -1
- package/public/assets/{night-owl-light-C4iZ6jhb.js.map → night-owl-light-C46RDt8C.js.map} +1 -1
- package/public/assets/{nord-DjtS30mp.js → nord-DB8NWghW.js} +1 -1
- package/public/assets/{nord-DjtS30mp.js.map → nord-DB8NWghW.js.map} +1 -1
- package/public/assets/{one-dark-pro-XzudhQYY.js → one-dark-pro-Dkf7ad3J.js} +1 -1
- package/public/assets/{one-dark-pro-XzudhQYY.js.map → one-dark-pro-Dkf7ad3J.js.map} +1 -1
- package/public/assets/{one-light-D7oIost9.js → one-light-kl_9JE41.js} +1 -1
- package/public/assets/{one-light-D7oIost9.js.map → one-light-kl_9JE41.js.map} +1 -1
- package/public/assets/{orchestrators-DQqtYryc.js → orchestrators-CQNQYFnL.js} +2 -2
- package/public/assets/{orchestrators-DQqtYryc.js.map → orchestrators-CQNQYFnL.js.map} +1 -1
- package/public/assets/{overview-CGYu6qQr.js → overview-CurMUxSA.js} +2 -2
- package/public/assets/{overview-CGYu6qQr.js.map → overview-CurMUxSA.js.map} +1 -1
- package/public/assets/{pairs-BgqXzCto.js → pairs-CSga0gZ4.js} +2 -2
- package/public/assets/{pairs-BgqXzCto.js.map → pairs-CSga0gZ4.js.map} +1 -1
- package/public/assets/{php-jzPvT2nT.js → php-BzbyfbR-.js} +2 -2
- package/public/assets/{php-jzPvT2nT.js.map → php-BzbyfbR-.js.map} +1 -1
- package/public/assets/{plastic-CbbYdTlt.js → plastic-zJz-m3Rm.js} +1 -1
- package/public/assets/{plastic-CbbYdTlt.js.map → plastic-zJz-m3Rm.js.map} +1 -1
- package/public/assets/{poimandres-D_GVW1nv.js → poimandres-tJBwotov.js} +1 -1
- package/public/assets/{poimandres-D_GVW1nv.js.map → poimandres-tJBwotov.js.map} +1 -1
- package/public/assets/{postcss-C9pEROMA.js → postcss-BIneP_cF.js} +1 -1
- package/public/assets/{postcss-C9pEROMA.js.map → postcss-BIneP_cF.js.map} +1 -1
- package/public/assets/{pug-By7fl28s.js → pug-DA_d_Siw.js} +2 -2
- package/public/assets/{pug-By7fl28s.js.map → pug-DA_d_Siw.js.map} +1 -1
- package/public/assets/{python-B3yVAntA.js → python-BVsgiBse.js} +1 -1
- package/public/assets/{python-B3yVAntA.js.map → python-BVsgiBse.js.map} +1 -1
- package/public/assets/{r-Cj0FbcZN.js → r-Eveq-XaR.js} +1 -1
- package/public/assets/{r-Cj0FbcZN.js.map → r-Eveq-XaR.js.map} +1 -1
- package/public/assets/{red-mpYhQQnN.js → red-BibI5kCP.js} +1 -1
- package/public/assets/{red-mpYhQQnN.js.map → red-BibI5kCP.js.map} +1 -1
- package/public/assets/{regexp-CZO5qNCb.js → regexp-BfvBV9FB.js} +1 -1
- package/public/assets/{regexp-CZO5qNCb.js.map → regexp-BfvBV9FB.js.map} +1 -1
- package/public/assets/{rose-pine-BFFt2t6B.js → rose-pine-DvIcl7lT.js} +1 -1
- package/public/assets/{rose-pine-BFFt2t6B.js.map → rose-pine-DvIcl7lT.js.map} +1 -1
- package/public/assets/{rose-pine-dawn-D85FBDtp.js → rose-pine-dawn-BqS6xqEj.js} +1 -1
- package/public/assets/{rose-pine-dawn-D85FBDtp.js.map → rose-pine-dawn-BqS6xqEj.js.map} +1 -1
- package/public/assets/{rose-pine-moon-xbAMILS6.js → rose-pine-moon-BGbVQH-B.js} +1 -1
- package/public/assets/{rose-pine-moon-xbAMILS6.js.map → rose-pine-moon-BGbVQH-B.js.map} +1 -1
- package/public/assets/{sass-Cgtxkbc_.js → sass-BdjHl3zg.js} +1 -1
- package/public/assets/{sass-Cgtxkbc_.js.map → sass-BdjHl3zg.js.map} +1 -1
- package/public/assets/{scss-BmqDcfJ5.js → scss-BULQDDIU.js} +2 -2
- package/public/assets/{scss-BmqDcfJ5.js.map → scss-BULQDDIU.js.map} +1 -1
- package/public/assets/{security-BqfRVw-p.js → security-BFmvd8TS.js} +2 -2
- package/public/assets/{security-BqfRVw-p.js.map → security-BFmvd8TS.js.map} +1 -1
- package/public/assets/select-U0nqw_nv.js +2 -0
- package/public/assets/select-U0nqw_nv.js.map +1 -0
- package/public/assets/settings-D_1nlrGB.js +10 -0
- package/public/assets/settings-D_1nlrGB.js.map +1 -0
- package/public/assets/{shellscript-CCotFWp7.js → shellscript-C1qfRdhy.js} +1 -1
- package/public/assets/{shellscript-CCotFWp7.js.map → shellscript-C1qfRdhy.js.map} +1 -1
- package/public/assets/{slack-dark-DC1pzHlk.js → slack-dark-BLmwQRBe.js} +1 -1
- package/public/assets/{slack-dark-DC1pzHlk.js.map → slack-dark-BLmwQRBe.js.map} +1 -1
- package/public/assets/{slack-ochin-DzuCpDdy.js → slack-ochin-CRvGVzm3.js} +1 -1
- package/public/assets/{slack-ochin-DzuCpDdy.js.map → slack-ochin-CRvGVzm3.js.map} +1 -1
- package/public/assets/{snazzy-light-a1eNYevY.js → snazzy-light-SlUvEGGf.js} +1 -1
- package/public/assets/{snazzy-light-a1eNYevY.js.map → snazzy-light-SlUvEGGf.js.map} +1 -1
- package/public/assets/{solarized-dark-BOM_aOHg.js → solarized-dark-DbIwHRsR.js} +1 -1
- package/public/assets/{solarized-dark-BOM_aOHg.js.map → solarized-dark-DbIwHRsR.js.map} +1 -1
- package/public/assets/{solarized-light-pc9woDHa.js → solarized-light-CYdGXtLL.js} +1 -1
- package/public/assets/{solarized-light-pc9woDHa.js.map → solarized-light-CYdGXtLL.js.map} +1 -1
- package/public/assets/{sql-BRVJ7Db3.js → sql-CA1RHzsH.js} +1 -1
- package/public/assets/{sql-BRVJ7Db3.js.map → sql-CA1RHzsH.js.map} +1 -1
- package/public/assets/{store-B6qT5_de.js → store-qcA2XXVy.js} +2 -2
- package/public/assets/{store-B6qT5_de.js.map → store-qcA2XXVy.js.map} +1 -1
- package/public/assets/{stylus-D0f0is5z.js → stylus-BbeofjW2.js} +1 -1
- package/public/assets/{stylus-D0f0is5z.js.map → stylus-BbeofjW2.js.map} +1 -1
- package/public/assets/{svelte-BNHEoLRc.js → svelte-bnIQdxmO.js} +2 -2
- package/public/assets/{svelte-BNHEoLRc.js.map → svelte-bnIQdxmO.js.map} +1 -1
- package/public/assets/{synthwave-84-B6wFOt-G.js → synthwave-84-DGP9WYc0.js} +1 -1
- package/public/assets/{synthwave-84-B6wFOt-G.js.map → synthwave-84-DGP9WYc0.js.map} +1 -1
- package/public/assets/{tasks-DiZ_4TYW.js → tasks-TnEbfohb.js} +2 -2
- package/public/assets/{tasks-DiZ_4TYW.js.map → tasks-TnEbfohb.js.map} +1 -1
- package/public/assets/teams-D5GY1lKs.js +2 -0
- package/public/assets/teams-D5GY1lKs.js.map +1 -0
- package/public/assets/{terminal-viewer-impl-D3T1F77z.js → terminal-viewer-impl-DwuhfM71.js} +2 -2
- package/public/assets/{terminal-viewer-impl-D3T1F77z.js.map → terminal-viewer-impl-DwuhfM71.js.map} +1 -1
- package/public/assets/{tokyo-night-CdlRv-Oa.js → tokyo-night-B7UMNIj1.js} +1 -1
- package/public/assets/{tokyo-night-CdlRv-Oa.js.map → tokyo-night-B7UMNIj1.js.map} +1 -1
- package/public/assets/{ts-tags-i7eO9SLg.js → ts-tags-BRtdAecP.js} +2 -2
- package/public/assets/{ts-tags-i7eO9SLg.js.map → ts-tags-BRtdAecP.js.map} +1 -1
- package/public/assets/{tsx-BTTibUSH.js → tsx-BUodVN6v.js} +1 -1
- package/public/assets/{tsx-BTTibUSH.js.map → tsx-BUodVN6v.js.map} +1 -1
- package/public/assets/{typescript-DpFaB1ya.js → typescript-DqNmJejE.js} +1 -1
- package/public/assets/{typescript-DpFaB1ya.js.map → typescript-DqNmJejE.js.map} +1 -1
- package/public/assets/{use-keyboard-viewport-ihP7KLb9.js → use-keyboard-viewport-BY99X7eI.js} +1 -1
- package/public/assets/{use-keyboard-viewport-ihP7KLb9.js.map → use-keyboard-viewport-BY99X7eI.js.map} +1 -1
- package/public/assets/{vesper-DKdu8Hyo.js → vesper-DaqCNT42.js} +1 -1
- package/public/assets/{vesper-DKdu8Hyo.js.map → vesper-DaqCNT42.js.map} +1 -1
- package/public/assets/{vitesse-black-Be8WuqKU.js → vitesse-black-ClNY6UCb.js} +1 -1
- package/public/assets/{vitesse-black-Be8WuqKU.js.map → vitesse-black-ClNY6UCb.js.map} +1 -1
- package/public/assets/{vitesse-dark-ClMFyn4F.js → vitesse-dark-C8_hSmOi.js} +1 -1
- package/public/assets/{vitesse-dark-ClMFyn4F.js.map → vitesse-dark-C8_hSmOi.js.map} +1 -1
- package/public/assets/{vitesse-light-7vho7arZ.js → vitesse-light-BXxp78a7.js} +1 -1
- package/public/assets/{vitesse-light-7vho7arZ.js.map → vitesse-light-BXxp78a7.js.map} +1 -1
- package/public/assets/{vue-v9GvV0kN.js → vue-Dj6AvMUo.js} +2 -2
- package/public/assets/{vue-v9GvV0kN.js.map → vue-Dj6AvMUo.js.map} +1 -1
- package/public/assets/{vue-html-CdsVcCQg.js → vue-html-Bbzrp6BF.js} +2 -2
- package/public/assets/{vue-html-CdsVcCQg.js.map → vue-html-Bbzrp6BF.js.map} +1 -1
- package/public/assets/{vue-vine-N4EjXMTf.js → vue-vine-CzAmGrih.js} +2 -2
- package/public/assets/{vue-vine-N4EjXMTf.js.map → vue-vine-CzAmGrih.js.map} +1 -1
- package/public/assets/{wasm-LHfX4W14.js → wasm-jf5ULvTY.js} +1 -1
- package/public/assets/{wasm-LHfX4W14.js.map → wasm-jf5ULvTY.js.map} +1 -1
- package/public/assets/{wasm-DU4DF4l4.js → wasm-tO7wdIO0.js} +1 -1
- package/public/assets/{wasm-DU4DF4l4.js.map → wasm-tO7wdIO0.js.map} +1 -1
- package/public/assets/{wgsl-C5uU9e4j.js → wgsl-m1TdqKPy.js} +1 -1
- package/public/assets/{wgsl-C5uU9e4j.js.map → wgsl-m1TdqKPy.js.map} +1 -1
- package/public/assets/{wit-DzVUU5dg.js → wit-Cgq8vEAf.js} +1 -1
- package/public/assets/{wit-DzVUU5dg.js.map → wit-Cgq8vEAf.js.map} +1 -1
- package/public/assets/{work-queue-C1p2Hybt.js → work-queue-D1iqCla1.js} +2 -2
- package/public/assets/{work-queue-C1p2Hybt.js.map → work-queue-D1iqCla1.js.map} +1 -1
- package/public/assets/{workspaces-DqVr0uN7.js → workspaces-BRVqBWat.js} +2 -2
- package/public/assets/{workspaces-DqVr0uN7.js.map → workspaces-BRVqBWat.js.map} +1 -1
- package/public/assets/{xml-CqN01Zdp.js → xml-Ct93EBnJ.js} +2 -2
- package/public/assets/{xml-CqN01Zdp.js.map → xml-Ct93EBnJ.js.map} +1 -1
- package/public/assets/{yaml-DV9wFwNg.js → yaml-Bs2vd4Y_.js} +1 -1
- package/public/assets/{yaml-DV9wFwNg.js.map → yaml-Bs2vd4Y_.js.map} +1 -1
- package/public/index.html +10 -10
- package/src/db/teams.ts +7 -0
- package/src/routes/index.ts +2 -1
- package/src/routes/teams.ts +14 -1
- package/public/assets/automation-Bk4umHIm.js +0 -2
- package/public/assets/display-ConJ9cJB.js.map +0 -1
- package/public/assets/index-CT10XH5Y.js +0 -21
- package/public/assets/index-CT10XH5Y.js.map +0 -1
- package/public/assets/index-Ryvn1efN.css +0 -2
- package/public/assets/insights-DZKCKL71.js +0 -2
- package/public/assets/settings-63whklIq.js +0 -10
- package/public/assets/settings-63whklIq.js.map +0 -1
- package/public/assets/switch-Bp64beKV.js +0 -2
- package/public/assets/switch-Bp64beKV.js.map +0 -1
- /package/public/assets/{preload-helper-CDM1EFcn.js → preload-helper-CP_edrrL.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-light-D7oIost9.js","names":[],"sources":["../../dashboard/node_modules/@shikijs/themes/dist/one-light.mjs"],"sourcesContent":["/* Theme: one-light */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"activityBar.background\\\":\\\"#FAFAFA\\\",\\\"activityBar.foreground\\\":\\\"#121417\\\",\\\"activityBarBadge.background\\\":\\\"#526FFF\\\",\\\"activityBarBadge.foreground\\\":\\\"#FFFFFF\\\",\\\"badge.background\\\":\\\"#526FFF\\\",\\\"badge.foreground\\\":\\\"#FFFFFF\\\",\\\"button.background\\\":\\\"#5871EF\\\",\\\"button.foreground\\\":\\\"#FFFFFF\\\",\\\"button.hoverBackground\\\":\\\"#6B83ED\\\",\\\"diffEditor.insertedTextBackground\\\":\\\"#00809B33\\\",\\\"dropdown.background\\\":\\\"#FFFFFF\\\",\\\"dropdown.border\\\":\\\"#DBDBDC\\\",\\\"editor.background\\\":\\\"#FAFAFA\\\",\\\"editor.findMatchHighlightBackground\\\":\\\"#526FFF33\\\",\\\"editor.foreground\\\":\\\"#383A42\\\",\\\"editor.lineHighlightBackground\\\":\\\"#383A420C\\\",\\\"editor.selectionBackground\\\":\\\"#E5E5E6\\\",\\\"editorCursor.foreground\\\":\\\"#526FFF\\\",\\\"editorGroup.background\\\":\\\"#EAEAEB\\\",\\\"editorGroup.border\\\":\\\"#DBDBDC\\\",\\\"editorGroupHeader.tabsBackground\\\":\\\"#EAEAEB\\\",\\\"editorHoverWidget.background\\\":\\\"#EAEAEB\\\",\\\"editorHoverWidget.border\\\":\\\"#DBDBDC\\\",\\\"editorIndentGuide.activeBackground\\\":\\\"#626772\\\",\\\"editorIndentGuide.background\\\":\\\"#383A4233\\\",\\\"editorInlayHint.background\\\":\\\"#F5F5F5\\\",\\\"editorInlayHint.foreground\\\":\\\"#AFB2BB\\\",\\\"editorLineNumber.activeForeground\\\":\\\"#383A42\\\",\\\"editorLineNumber.foreground\\\":\\\"#9D9D9F\\\",\\\"editorRuler.foreground\\\":\\\"#383A4233\\\",\\\"editorSuggestWidget.background\\\":\\\"#EAEAEB\\\",\\\"editorSuggestWidget.border\\\":\\\"#DBDBDC\\\",\\\"editorSuggestWidget.selectedBackground\\\":\\\"#FFFFFF\\\",\\\"editorWhitespace.foreground\\\":\\\"#383A4233\\\",\\\"editorWidget.background\\\":\\\"#EAEAEB\\\",\\\"editorWidget.border\\\":\\\"#E5E5E6\\\",\\\"extensionButton.prominentBackground\\\":\\\"#3BBA54\\\",\\\"extensionButton.prominentHoverBackground\\\":\\\"#4CC263\\\",\\\"focusBorder\\\":\\\"#526FFF\\\",\\\"input.background\\\":\\\"#FFFFFF\\\",\\\"input.border\\\":\\\"#DBDBDC\\\",\\\"list.activeSelectionBackground\\\":\\\"#DBDBDC\\\",\\\"list.activeSelectionForeground\\\":\\\"#232324\\\",\\\"list.focusBackground\\\":\\\"#DBDBDC\\\",\\\"list.highlightForeground\\\":\\\"#121417\\\",\\\"list.hoverBackground\\\":\\\"#DBDBDC66\\\",\\\"list.inactiveSelectionBackground\\\":\\\"#DBDBDC\\\",\\\"list.inactiveSelectionForeground\\\":\\\"#232324\\\",\\\"notebook.cellEditorBackground\\\":\\\"#F5F5F5\\\",\\\"notification.background\\\":\\\"#333333\\\",\\\"peekView.border\\\":\\\"#526FFF\\\",\\\"peekViewEditor.background\\\":\\\"#FFFFFF\\\",\\\"peekViewResult.background\\\":\\\"#EAEAEB\\\",\\\"peekViewResult.selectionBackground\\\":\\\"#DBDBDC\\\",\\\"peekViewTitle.background\\\":\\\"#FFFFFF\\\",\\\"pickerGroup.border\\\":\\\"#526FFF\\\",\\\"scrollbarSlider.activeBackground\\\":\\\"#747D9180\\\",\\\"scrollbarSlider.background\\\":\\\"#4E566680\\\",\\\"scrollbarSlider.hoverBackground\\\":\\\"#5A637580\\\",\\\"sideBar.background\\\":\\\"#EAEAEB\\\",\\\"sideBarSectionHeader.background\\\":\\\"#FAFAFA\\\",\\\"statusBar.background\\\":\\\"#EAEAEB\\\",\\\"statusBar.debuggingForeground\\\":\\\"#FFFFFF\\\",\\\"statusBar.foreground\\\":\\\"#424243\\\",\\\"statusBar.noFolderBackground\\\":\\\"#EAEAEB\\\",\\\"statusBarItem.hoverBackground\\\":\\\"#DBDBDC\\\",\\\"tab.activeBackground\\\":\\\"#FAFAFA\\\",\\\"tab.activeForeground\\\":\\\"#121417\\\",\\\"tab.border\\\":\\\"#DBDBDC\\\",\\\"tab.inactiveBackground\\\":\\\"#EAEAEB\\\",\\\"titleBar.activeBackground\\\":\\\"#EAEAEB\\\",\\\"titleBar.activeForeground\\\":\\\"#424243\\\",\\\"titleBar.inactiveBackground\\\":\\\"#EAEAEB\\\",\\\"titleBar.inactiveForeground\\\":\\\"#424243\\\"},\\\"displayName\\\":\\\"One Light\\\",\\\"name\\\":\\\"one-light\\\",\\\"tokenColors\\\":[{\\\"scope\\\":[\\\"comment\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"comment markup.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"entity.name.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"entity.other.inherited-class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"keyword\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"keyword.control\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"keyword.other.special-method\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"keyword.other.unit\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"storage\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"storage.type.annotation\\\",\\\"storage.type.primitive\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"storage.modifier.package\\\",\\\"storage.modifier.import\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"constant\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"constant.variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"constant.character.escape\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"constant.numeric\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"constant.other.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"constant.other.symbol\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"variable.interpolation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"variable.parameter\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"string > source\\\",\\\"string embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"string.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"string.regexp source.ruby.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"string.other.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.comment\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.method-parameters\\\",\\\"punctuation.definition.function-parameters\\\",\\\"punctuation.definition.parameters\\\",\\\"punctuation.definition.separator\\\",\\\"punctuation.definition.seperator\\\",\\\"punctuation.definition.array\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.heading\\\",\\\"punctuation.definition.identity\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.bold\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.italic\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"punctuation.section.method\\\",\\\"punctuation.section.class\\\",\\\"punctuation.section.inner-class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"support.class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"support.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"support.function\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"support.function.any-method\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"entity.name.function\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"entity.name.class\\\",\\\"entity.name.type.class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"entity.name.section\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"entity.name.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name.id\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"meta.class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"meta.class.body\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.method-call\\\",\\\"meta.method\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.definition.variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"meta.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"meta.require\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"meta.selector\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"meta.separator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"underline\\\"],\\\"settings\\\":{\\\"text-decoration\\\":\\\"underline\\\"}},{\\\"scope\\\":[\\\"none\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"invalid.deprecated\\\"],\\\"settings\\\":{\\\"background\\\":\\\"#F2A60D\\\",\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"invalid.illegal\\\"],\\\"settings\\\":{\\\"background\\\":\\\"#FF1414\\\",\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"markup.bold\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"markup.changed\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"markup.deleted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"markup.italic\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"markup.heading\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"markup.heading punctuation.definition.heading\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"markup.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"markup.inserted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"markup.quote\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"markup.raw\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.c keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.cpp keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.cs keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.css property-name\\\",\\\"source.css property-value\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#696C77\\\"}},{\\\"scope\\\":[\\\"source.css property-name.support\\\",\\\"source.css property-value.support\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.elixir source.embedded.source\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.elixir constant.language\\\",\\\"source.elixir constant.numeric\\\",\\\"source.elixir constant.definition\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"source.elixir variable.definition\\\",\\\"source.elixir variable.anonymous\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.elixir parameter.variable.function\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"source.elixir quoted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.elixir keyword.special-method\\\",\\\"source.elixir embedded.section\\\",\\\"source.elixir embedded.source.empty\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.elixir readwrite.module punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.elixir regexp.section\\\",\\\"source.elixir regexp.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"source.elixir separator\\\",\\\"source.elixir keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"source.elixir variable.constant\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"source.elixir array\\\",\\\"source.elixir scope\\\",\\\"source.elixir section\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#696C77\\\"}},{\\\"scope\\\":[\\\"source.gfm markup\\\"],\\\"settings\\\":{\\\"-webkit-font-smoothing\\\":\\\"auto\\\"}},{\\\"scope\\\":[\\\"source.gfm link entity\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"source.go storage.type.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.ini keyword.other.definition.ini\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.java storage.modifier.import\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"source.java storage.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"source.java keyword.operator.instanceof\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.java-properties meta.key-pair\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.java-properties meta.key-pair > punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.js keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.js keyword.operator.delete\\\",\\\"source.js keyword.operator.in\\\",\\\"source.js keyword.operator.of\\\",\\\"source.js keyword.operator.instanceof\\\",\\\"source.js keyword.operator.new\\\",\\\"source.js keyword.operator.typeof\\\",\\\"source.js keyword.operator.void\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.ts keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.flow keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > string.quoted.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > value.json > string.quoted.json\\\",\\\"source.json meta.structure.array.json > value.json > string.quoted.json\\\",\\\"source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation\\\",\\\"source.json meta.structure.array.json > value.json > string.quoted.json > punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > constant.language.json\\\",\\\"source.json meta.structure.array.json > constant.language.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"ng.interpolation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"ng.interpolation.begin\\\",\\\"ng.interpolation.end\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"ng.interpolation function\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"ng.interpolation function.begin\\\",\\\"ng.interpolation function.end\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"ng.interpolation bool\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"ng.interpolation bracket\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"ng.pipe\\\",\\\"ng.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"ng.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"ng.attribute-with-value attribute-name\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"ng.attribute-with-value string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"ng.attribute-with-value string.begin\\\",\\\"ng.attribute-with-value string.end\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.ruby constant.other.symbol > punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"inherit\\\"}},{\\\"scope\\\":[\\\"source.php class.bracket\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.python keyword.operator.logical.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.python variable.parameter\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"customrule\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"support.type.property-name\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"string.quoted.double punctuation\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"support.constant\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"support.type.property-name.json\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"support.type.property-name.json punctuation\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"punctuation.separator.key-value.ts\\\",\\\"punctuation.separator.key-value.js\\\",\\\"punctuation.separator.key-value.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.js.embedded.html keyword.operator\\\",\\\"source.ts.embedded.html keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"variable.other.readwrite.js\\\",\\\"variable.other.readwrite.ts\\\",\\\"variable.other.readwrite.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"support.variable.dom.js\\\",\\\"support.variable.dom.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"support.variable.property.dom.js\\\",\\\"support.variable.property.dom.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js punctuation.definition\\\",\\\"meta.template.expression.ts punctuation.definition\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"source.ts punctuation.definition.typeparameters\\\",\\\"source.js punctuation.definition.typeparameters\\\",\\\"source.tsx punctuation.definition.typeparameters\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.ts punctuation.definition.block\\\",\\\"source.js punctuation.definition.block\\\",\\\"source.tsx punctuation.definition.block\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.ts punctuation.separator.comma\\\",\\\"source.js punctuation.separator.comma\\\",\\\"source.tsx punctuation.separator.comma\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"support.variable.property.js\\\",\\\"support.variable.property.ts\\\",\\\"support.variable.property.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"keyword.control.default.js\\\",\\\"keyword.control.default.ts\\\",\\\"keyword.control.default.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"keyword.operator.expression.instanceof.js\\\",\\\"keyword.operator.expression.instanceof.ts\\\",\\\"keyword.operator.expression.instanceof.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"keyword.operator.expression.of.js\\\",\\\"keyword.operator.expression.of.ts\\\",\\\"keyword.operator.expression.of.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"meta.brace.round.js\\\",\\\"meta.array-binding-pattern-variable.js\\\",\\\"meta.brace.square.js\\\",\\\"meta.brace.round.ts\\\",\\\"meta.array-binding-pattern-variable.ts\\\",\\\"meta.brace.square.ts\\\",\\\"meta.brace.round.tsx\\\",\\\"meta.array-binding-pattern-variable.tsx\\\",\\\"meta.brace.square.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.js punctuation.accessor\\\",\\\"source.ts punctuation.accessor\\\",\\\"source.tsx punctuation.accessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"punctuation.terminator.statement.js\\\",\\\"punctuation.terminator.statement.ts\\\",\\\"punctuation.terminator.statement.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.array-binding-pattern-variable.js variable.other.readwrite.js\\\",\\\"meta.array-binding-pattern-variable.ts variable.other.readwrite.ts\\\",\\\"meta.array-binding-pattern-variable.tsx variable.other.readwrite.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"source.js support.variable\\\",\\\"source.ts support.variable\\\",\\\"source.tsx support.variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"variable.other.constant.property.js\\\",\\\"variable.other.constant.property.ts\\\",\\\"variable.other.constant.property.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"keyword.operator.new.ts\\\",\\\"keyword.operator.new.j\\\",\\\"keyword.operator.new.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.ts keyword.operator\\\",\\\"source.tsx keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"punctuation.separator.parameter.js\\\",\\\"punctuation.separator.parameter.ts\\\",\\\"punctuation.separator.parameter.tsx \\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"constant.language.import-export-all.js\\\",\\\"constant.language.import-export-all.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"constant.language.import-export-all.jsx\\\",\\\"constant.language.import-export-all.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"keyword.control.as.js\\\",\\\"keyword.control.as.ts\\\",\\\"keyword.control.as.jsx\\\",\\\"keyword.control.as.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"variable.other.readwrite.alias.js\\\",\\\"variable.other.readwrite.alias.ts\\\",\\\"variable.other.readwrite.alias.jsx\\\",\\\"variable.other.readwrite.alias.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"variable.other.constant.js\\\",\\\"variable.other.constant.ts\\\",\\\"variable.other.constant.jsx\\\",\\\"variable.other.constant.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"meta.export.default.js variable.other.readwrite.js\\\",\\\"meta.export.default.ts variable.other.readwrite.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.js meta.template.expression.js punctuation.accessor\\\",\\\"source.ts meta.template.expression.ts punctuation.accessor\\\",\\\"source.tsx meta.template.expression.tsx punctuation.accessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.js meta.import-equals.external.js keyword.operator\\\",\\\"source.jsx meta.import-equals.external.jsx keyword.operator\\\",\\\"source.ts meta.import-equals.external.ts keyword.operator\\\",\\\"source.tsx meta.import-equals.external.tsx keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.type.module.js,entity.name.type.module.ts,entity.name.type.module.jsx,entity.name.type.module.tsx\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"meta.class.js,meta.class.ts,meta.class.jsx,meta.class.tsx\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.definition.property.js variable\\\",\\\"meta.definition.property.ts variable\\\",\\\"meta.definition.property.jsx variable\\\",\\\"meta.definition.property.tsx variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.type.parameters.js support.type\\\",\\\"meta.type.parameters.jsx support.type\\\",\\\"meta.type.parameters.ts support.type\\\",\\\"meta.type.parameters.tsx support.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.js meta.tag.js keyword.operator\\\",\\\"source.jsx meta.tag.jsx keyword.operator\\\",\\\"source.ts meta.tag.ts keyword.operator\\\",\\\"source.tsx meta.tag.tsx keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.tag.js punctuation.section.embedded\\\",\\\"meta.tag.jsx punctuation.section.embedded\\\",\\\"meta.tag.ts punctuation.section.embedded\\\",\\\"meta.tag.tsx punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.array.literal.js variable\\\",\\\"meta.array.literal.jsx variable\\\",\\\"meta.array.literal.ts variable\\\",\\\"meta.array.literal.tsx variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"support.type.object.module.js\\\",\\\"support.type.object.module.jsx\\\",\\\"support.type.object.module.ts\\\",\\\"support.type.object.module.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"constant.language.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"variable.other.constant.object.js\\\",\\\"variable.other.constant.object.jsx\\\",\\\"variable.other.constant.object.ts\\\",\\\"variable.other.constant.object.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"storage.type.property.js\\\",\\\"storage.type.property.jsx\\\",\\\"storage.type.property.ts\\\",\\\"storage.type.property.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js string.quoted punctuation.definition\\\",\\\"meta.template.expression.jsx string.quoted punctuation.definition\\\",\\\"meta.template.expression.ts string.quoted punctuation.definition\\\",\\\"meta.template.expression.tsx string.quoted punctuation.definition\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js string.template punctuation.definition.string.template\\\",\\\"meta.template.expression.jsx string.template punctuation.definition.string.template\\\",\\\"meta.template.expression.ts string.template punctuation.definition.string.template\\\",\\\"meta.template.expression.tsx string.template punctuation.definition.string.template\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"keyword.operator.expression.in.js\\\",\\\"keyword.operator.expression.in.jsx\\\",\\\"keyword.operator.expression.in.ts\\\",\\\"keyword.operator.expression.in.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"variable.other.object.js\\\",\\\"variable.other.object.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.object-literal.key.js\\\",\\\"meta.object-literal.key.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"source.python constant.other\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"source.python constant\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"constant.character.format.placeholder.other.python storage\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"support.variable.magic.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"meta.function.parameters.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"punctuation.separator.annotation.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.separator.parameters.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.variable.field.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"source.cs keyword.operator\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"variable.other.readwrite.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"variable.other.object.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"variable.other.object.property.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.variable.property.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":\\\"storage.type.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":\\\"keyword.other.unsafe.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":\\\"entity.name.type.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":\\\"storage.modifier.lifetime.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.lifetime.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"storage.type.core.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":\\\"meta.attribute.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"storage.class.std.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":\\\"markup.raw.block.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.variable.shell\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"support.constant.property-value.css\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.constant.css\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"punctuation.separator.key-value.scss\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"punctuation.definition.constant.scss\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"meta.property-list.scss punctuation.separator.key-value.scss\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"storage.type.primitive.array.java\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":\\\"entity.name.section.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"punctuation.definition.heading.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"markup.heading.setext\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.bold.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"markup.inline.raw.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"beginning.punctuation.definition.list.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"markup.quote.markdown\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.string.begin.markdown\\\",\\\"punctuation.definition.string.end.markdown\\\",\\\"punctuation.definition.metadata.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.metadata.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"markup.underline.link.markdown\\\",\\\"markup.underline.link.image.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"string.other.link.title.markdown\\\",\\\"string.other.link.description.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":\\\"punctuation.separator.variable.ruby\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"variable.other.constant.ruby\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"keyword.operator.other.ruby\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"punctuation.definition.variable.php\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"meta.class.php\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}}],\\\"type\\\":\\\"light\\\"}\"))\n"],"x_google_ignoreList":[0],"mappings":"AACA,IAAA,EAAe,OAAO,OAAO,KAAK,MAAM,2pxBAA202B,CAAC"}
|
|
1
|
+
{"version":3,"file":"one-light-kl_9JE41.js","names":[],"sources":["../../dashboard/node_modules/@shikijs/themes/dist/one-light.mjs"],"sourcesContent":["/* Theme: one-light */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"activityBar.background\\\":\\\"#FAFAFA\\\",\\\"activityBar.foreground\\\":\\\"#121417\\\",\\\"activityBarBadge.background\\\":\\\"#526FFF\\\",\\\"activityBarBadge.foreground\\\":\\\"#FFFFFF\\\",\\\"badge.background\\\":\\\"#526FFF\\\",\\\"badge.foreground\\\":\\\"#FFFFFF\\\",\\\"button.background\\\":\\\"#5871EF\\\",\\\"button.foreground\\\":\\\"#FFFFFF\\\",\\\"button.hoverBackground\\\":\\\"#6B83ED\\\",\\\"diffEditor.insertedTextBackground\\\":\\\"#00809B33\\\",\\\"dropdown.background\\\":\\\"#FFFFFF\\\",\\\"dropdown.border\\\":\\\"#DBDBDC\\\",\\\"editor.background\\\":\\\"#FAFAFA\\\",\\\"editor.findMatchHighlightBackground\\\":\\\"#526FFF33\\\",\\\"editor.foreground\\\":\\\"#383A42\\\",\\\"editor.lineHighlightBackground\\\":\\\"#383A420C\\\",\\\"editor.selectionBackground\\\":\\\"#E5E5E6\\\",\\\"editorCursor.foreground\\\":\\\"#526FFF\\\",\\\"editorGroup.background\\\":\\\"#EAEAEB\\\",\\\"editorGroup.border\\\":\\\"#DBDBDC\\\",\\\"editorGroupHeader.tabsBackground\\\":\\\"#EAEAEB\\\",\\\"editorHoverWidget.background\\\":\\\"#EAEAEB\\\",\\\"editorHoverWidget.border\\\":\\\"#DBDBDC\\\",\\\"editorIndentGuide.activeBackground\\\":\\\"#626772\\\",\\\"editorIndentGuide.background\\\":\\\"#383A4233\\\",\\\"editorInlayHint.background\\\":\\\"#F5F5F5\\\",\\\"editorInlayHint.foreground\\\":\\\"#AFB2BB\\\",\\\"editorLineNumber.activeForeground\\\":\\\"#383A42\\\",\\\"editorLineNumber.foreground\\\":\\\"#9D9D9F\\\",\\\"editorRuler.foreground\\\":\\\"#383A4233\\\",\\\"editorSuggestWidget.background\\\":\\\"#EAEAEB\\\",\\\"editorSuggestWidget.border\\\":\\\"#DBDBDC\\\",\\\"editorSuggestWidget.selectedBackground\\\":\\\"#FFFFFF\\\",\\\"editorWhitespace.foreground\\\":\\\"#383A4233\\\",\\\"editorWidget.background\\\":\\\"#EAEAEB\\\",\\\"editorWidget.border\\\":\\\"#E5E5E6\\\",\\\"extensionButton.prominentBackground\\\":\\\"#3BBA54\\\",\\\"extensionButton.prominentHoverBackground\\\":\\\"#4CC263\\\",\\\"focusBorder\\\":\\\"#526FFF\\\",\\\"input.background\\\":\\\"#FFFFFF\\\",\\\"input.border\\\":\\\"#DBDBDC\\\",\\\"list.activeSelectionBackground\\\":\\\"#DBDBDC\\\",\\\"list.activeSelectionForeground\\\":\\\"#232324\\\",\\\"list.focusBackground\\\":\\\"#DBDBDC\\\",\\\"list.highlightForeground\\\":\\\"#121417\\\",\\\"list.hoverBackground\\\":\\\"#DBDBDC66\\\",\\\"list.inactiveSelectionBackground\\\":\\\"#DBDBDC\\\",\\\"list.inactiveSelectionForeground\\\":\\\"#232324\\\",\\\"notebook.cellEditorBackground\\\":\\\"#F5F5F5\\\",\\\"notification.background\\\":\\\"#333333\\\",\\\"peekView.border\\\":\\\"#526FFF\\\",\\\"peekViewEditor.background\\\":\\\"#FFFFFF\\\",\\\"peekViewResult.background\\\":\\\"#EAEAEB\\\",\\\"peekViewResult.selectionBackground\\\":\\\"#DBDBDC\\\",\\\"peekViewTitle.background\\\":\\\"#FFFFFF\\\",\\\"pickerGroup.border\\\":\\\"#526FFF\\\",\\\"scrollbarSlider.activeBackground\\\":\\\"#747D9180\\\",\\\"scrollbarSlider.background\\\":\\\"#4E566680\\\",\\\"scrollbarSlider.hoverBackground\\\":\\\"#5A637580\\\",\\\"sideBar.background\\\":\\\"#EAEAEB\\\",\\\"sideBarSectionHeader.background\\\":\\\"#FAFAFA\\\",\\\"statusBar.background\\\":\\\"#EAEAEB\\\",\\\"statusBar.debuggingForeground\\\":\\\"#FFFFFF\\\",\\\"statusBar.foreground\\\":\\\"#424243\\\",\\\"statusBar.noFolderBackground\\\":\\\"#EAEAEB\\\",\\\"statusBarItem.hoverBackground\\\":\\\"#DBDBDC\\\",\\\"tab.activeBackground\\\":\\\"#FAFAFA\\\",\\\"tab.activeForeground\\\":\\\"#121417\\\",\\\"tab.border\\\":\\\"#DBDBDC\\\",\\\"tab.inactiveBackground\\\":\\\"#EAEAEB\\\",\\\"titleBar.activeBackground\\\":\\\"#EAEAEB\\\",\\\"titleBar.activeForeground\\\":\\\"#424243\\\",\\\"titleBar.inactiveBackground\\\":\\\"#EAEAEB\\\",\\\"titleBar.inactiveForeground\\\":\\\"#424243\\\"},\\\"displayName\\\":\\\"One Light\\\",\\\"name\\\":\\\"one-light\\\",\\\"tokenColors\\\":[{\\\"scope\\\":[\\\"comment\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"comment markup.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"entity.name.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"entity.other.inherited-class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"keyword\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"keyword.control\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"keyword.other.special-method\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"keyword.other.unit\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"storage\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"storage.type.annotation\\\",\\\"storage.type.primitive\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"storage.modifier.package\\\",\\\"storage.modifier.import\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"constant\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"constant.variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"constant.character.escape\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"constant.numeric\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"constant.other.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"constant.other.symbol\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"variable.interpolation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"variable.parameter\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"string > source\\\",\\\"string embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"string.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"string.regexp source.ruby.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"string.other.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.comment\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.method-parameters\\\",\\\"punctuation.definition.function-parameters\\\",\\\"punctuation.definition.parameters\\\",\\\"punctuation.definition.separator\\\",\\\"punctuation.definition.seperator\\\",\\\"punctuation.definition.array\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.heading\\\",\\\"punctuation.definition.identity\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.bold\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.italic\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"punctuation.section.method\\\",\\\"punctuation.section.class\\\",\\\"punctuation.section.inner-class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"support.class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"support.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"support.function\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"support.function.any-method\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"entity.name.function\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"entity.name.class\\\",\\\"entity.name.type.class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"entity.name.section\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"entity.name.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name.id\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"meta.class\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"meta.class.body\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.method-call\\\",\\\"meta.method\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.definition.variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"meta.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"meta.require\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"meta.selector\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"meta.separator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"underline\\\"],\\\"settings\\\":{\\\"text-decoration\\\":\\\"underline\\\"}},{\\\"scope\\\":[\\\"none\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"invalid.deprecated\\\"],\\\"settings\\\":{\\\"background\\\":\\\"#F2A60D\\\",\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"invalid.illegal\\\"],\\\"settings\\\":{\\\"background\\\":\\\"#FF1414\\\",\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"markup.bold\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"markup.changed\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"markup.deleted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"markup.italic\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"markup.heading\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"markup.heading punctuation.definition.heading\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"markup.link\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"markup.inserted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"markup.quote\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"markup.raw\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.c keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.cpp keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.cs keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.css property-name\\\",\\\"source.css property-value\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#696C77\\\"}},{\\\"scope\\\":[\\\"source.css property-name.support\\\",\\\"source.css property-value.support\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.elixir source.embedded.source\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.elixir constant.language\\\",\\\"source.elixir constant.numeric\\\",\\\"source.elixir constant.definition\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"source.elixir variable.definition\\\",\\\"source.elixir variable.anonymous\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.elixir parameter.variable.function\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"source.elixir quoted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.elixir keyword.special-method\\\",\\\"source.elixir embedded.section\\\",\\\"source.elixir embedded.source.empty\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.elixir readwrite.module punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.elixir regexp.section\\\",\\\"source.elixir regexp.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"source.elixir separator\\\",\\\"source.elixir keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"source.elixir variable.constant\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"source.elixir array\\\",\\\"source.elixir scope\\\",\\\"source.elixir section\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#696C77\\\"}},{\\\"scope\\\":[\\\"source.gfm markup\\\"],\\\"settings\\\":{\\\"-webkit-font-smoothing\\\":\\\"auto\\\"}},{\\\"scope\\\":[\\\"source.gfm link entity\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"source.go storage.type.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.ini keyword.other.definition.ini\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.java storage.modifier.import\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"source.java storage.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"source.java keyword.operator.instanceof\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.java-properties meta.key-pair\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.java-properties meta.key-pair > punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.js keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.js keyword.operator.delete\\\",\\\"source.js keyword.operator.in\\\",\\\"source.js keyword.operator.of\\\",\\\"source.js keyword.operator.instanceof\\\",\\\"source.js keyword.operator.new\\\",\\\"source.js keyword.operator.typeof\\\",\\\"source.js keyword.operator.void\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.ts keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.flow keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > string.quoted.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > value.json > string.quoted.json\\\",\\\"source.json meta.structure.array.json > value.json > string.quoted.json\\\",\\\"source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation\\\",\\\"source.json meta.structure.array.json > value.json > string.quoted.json > punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.json meta.structure.dictionary.json > constant.language.json\\\",\\\"source.json meta.structure.array.json > constant.language.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"ng.interpolation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"ng.interpolation.begin\\\",\\\"ng.interpolation.end\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"ng.interpolation function\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"ng.interpolation function.begin\\\",\\\"ng.interpolation function.end\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":[\\\"ng.interpolation bool\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"ng.interpolation bracket\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"ng.pipe\\\",\\\"ng.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"ng.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"ng.attribute-with-value attribute-name\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"ng.attribute-with-value string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"ng.attribute-with-value string.begin\\\",\\\"ng.attribute-with-value string.end\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.ruby constant.other.symbol > punctuation\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"inherit\\\"}},{\\\"scope\\\":[\\\"source.php class.bracket\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.python keyword.operator.logical.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.python variable.parameter\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"customrule\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"support.type.property-name\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"string.quoted.double punctuation\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"support.constant\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"support.type.property-name.json\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"support.type.property-name.json punctuation\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"punctuation.separator.key-value.ts\\\",\\\"punctuation.separator.key-value.js\\\",\\\"punctuation.separator.key-value.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"source.js.embedded.html keyword.operator\\\",\\\"source.ts.embedded.html keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"variable.other.readwrite.js\\\",\\\"variable.other.readwrite.ts\\\",\\\"variable.other.readwrite.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"support.variable.dom.js\\\",\\\"support.variable.dom.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"support.variable.property.dom.js\\\",\\\"support.variable.property.dom.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js punctuation.definition\\\",\\\"meta.template.expression.ts punctuation.definition\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CA1243\\\"}},{\\\"scope\\\":[\\\"source.ts punctuation.definition.typeparameters\\\",\\\"source.js punctuation.definition.typeparameters\\\",\\\"source.tsx punctuation.definition.typeparameters\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.ts punctuation.definition.block\\\",\\\"source.js punctuation.definition.block\\\",\\\"source.tsx punctuation.definition.block\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.ts punctuation.separator.comma\\\",\\\"source.js punctuation.separator.comma\\\",\\\"source.tsx punctuation.separator.comma\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"support.variable.property.js\\\",\\\"support.variable.property.ts\\\",\\\"support.variable.property.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"keyword.control.default.js\\\",\\\"keyword.control.default.ts\\\",\\\"keyword.control.default.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"keyword.operator.expression.instanceof.js\\\",\\\"keyword.operator.expression.instanceof.ts\\\",\\\"keyword.operator.expression.instanceof.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"keyword.operator.expression.of.js\\\",\\\"keyword.operator.expression.of.ts\\\",\\\"keyword.operator.expression.of.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"meta.brace.round.js\\\",\\\"meta.array-binding-pattern-variable.js\\\",\\\"meta.brace.square.js\\\",\\\"meta.brace.round.ts\\\",\\\"meta.array-binding-pattern-variable.ts\\\",\\\"meta.brace.square.ts\\\",\\\"meta.brace.round.tsx\\\",\\\"meta.array-binding-pattern-variable.tsx\\\",\\\"meta.brace.square.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.js punctuation.accessor\\\",\\\"source.ts punctuation.accessor\\\",\\\"source.tsx punctuation.accessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"punctuation.terminator.statement.js\\\",\\\"punctuation.terminator.statement.ts\\\",\\\"punctuation.terminator.statement.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.array-binding-pattern-variable.js variable.other.readwrite.js\\\",\\\"meta.array-binding-pattern-variable.ts variable.other.readwrite.ts\\\",\\\"meta.array-binding-pattern-variable.tsx variable.other.readwrite.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"source.js support.variable\\\",\\\"source.ts support.variable\\\",\\\"source.tsx support.variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"variable.other.constant.property.js\\\",\\\"variable.other.constant.property.ts\\\",\\\"variable.other.constant.property.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"keyword.operator.new.ts\\\",\\\"keyword.operator.new.j\\\",\\\"keyword.operator.new.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"source.ts keyword.operator\\\",\\\"source.tsx keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"punctuation.separator.parameter.js\\\",\\\"punctuation.separator.parameter.ts\\\",\\\"punctuation.separator.parameter.tsx \\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"constant.language.import-export-all.js\\\",\\\"constant.language.import-export-all.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"constant.language.import-export-all.jsx\\\",\\\"constant.language.import-export-all.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"keyword.control.as.js\\\",\\\"keyword.control.as.ts\\\",\\\"keyword.control.as.jsx\\\",\\\"keyword.control.as.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"variable.other.readwrite.alias.js\\\",\\\"variable.other.readwrite.alias.ts\\\",\\\"variable.other.readwrite.alias.jsx\\\",\\\"variable.other.readwrite.alias.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"variable.other.constant.js\\\",\\\"variable.other.constant.ts\\\",\\\"variable.other.constant.jsx\\\",\\\"variable.other.constant.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"meta.export.default.js variable.other.readwrite.js\\\",\\\"meta.export.default.ts variable.other.readwrite.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"source.js meta.template.expression.js punctuation.accessor\\\",\\\"source.ts meta.template.expression.ts punctuation.accessor\\\",\\\"source.tsx meta.template.expression.tsx punctuation.accessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"source.js meta.import-equals.external.js keyword.operator\\\",\\\"source.jsx meta.import-equals.external.jsx keyword.operator\\\",\\\"source.ts meta.import-equals.external.ts keyword.operator\\\",\\\"source.tsx meta.import-equals.external.tsx keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.type.module.js,entity.name.type.module.ts,entity.name.type.module.jsx,entity.name.type.module.tsx\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"meta.class.js,meta.class.ts,meta.class.jsx,meta.class.tsx\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.definition.property.js variable\\\",\\\"meta.definition.property.ts variable\\\",\\\"meta.definition.property.jsx variable\\\",\\\"meta.definition.property.tsx variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.type.parameters.js support.type\\\",\\\"meta.type.parameters.jsx support.type\\\",\\\"meta.type.parameters.ts support.type\\\",\\\"meta.type.parameters.tsx support.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"source.js meta.tag.js keyword.operator\\\",\\\"source.jsx meta.tag.jsx keyword.operator\\\",\\\"source.ts meta.tag.ts keyword.operator\\\",\\\"source.tsx meta.tag.tsx keyword.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.tag.js punctuation.section.embedded\\\",\\\"meta.tag.jsx punctuation.section.embedded\\\",\\\"meta.tag.ts punctuation.section.embedded\\\",\\\"meta.tag.tsx punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.array.literal.js variable\\\",\\\"meta.array.literal.jsx variable\\\",\\\"meta.array.literal.ts variable\\\",\\\"meta.array.literal.tsx variable\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":[\\\"support.type.object.module.js\\\",\\\"support.type.object.module.jsx\\\",\\\"support.type.object.module.ts\\\",\\\"support.type.object.module.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":[\\\"constant.language.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"variable.other.constant.object.js\\\",\\\"variable.other.constant.object.jsx\\\",\\\"variable.other.constant.object.ts\\\",\\\"variable.other.constant.object.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":[\\\"storage.type.property.js\\\",\\\"storage.type.property.jsx\\\",\\\"storage.type.property.ts\\\",\\\"storage.type.property.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js string.quoted punctuation.definition\\\",\\\"meta.template.expression.jsx string.quoted punctuation.definition\\\",\\\"meta.template.expression.ts string.quoted punctuation.definition\\\",\\\"meta.template.expression.tsx string.quoted punctuation.definition\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js string.template punctuation.definition.string.template\\\",\\\"meta.template.expression.jsx string.template punctuation.definition.string.template\\\",\\\"meta.template.expression.ts string.template punctuation.definition.string.template\\\",\\\"meta.template.expression.tsx string.template punctuation.definition.string.template\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":[\\\"keyword.operator.expression.in.js\\\",\\\"keyword.operator.expression.in.jsx\\\",\\\"keyword.operator.expression.in.ts\\\",\\\"keyword.operator.expression.in.tsx\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"variable.other.object.js\\\",\\\"variable.other.object.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":[\\\"meta.object-literal.key.js\\\",\\\"meta.object-literal.key.ts\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"source.python constant.other\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"source.python constant\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"constant.character.format.placeholder.other.python storage\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"support.variable.magic.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"meta.function.parameters.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"punctuation.separator.annotation.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.separator.parameters.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.variable.field.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"source.cs keyword.operator\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"variable.other.readwrite.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"variable.other.object.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"variable.other.object.property.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.variable.property.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":\\\"storage.type.cs\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":\\\"keyword.other.unsafe.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":\\\"entity.name.type.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":\\\"storage.modifier.lifetime.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"entity.name.lifetime.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"storage.type.core.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":\\\"meta.attribute.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"storage.class.std.rust\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0184BC\\\"}},{\\\"scope\\\":\\\"markup.raw.block.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.variable.shell\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"support.constant.property-value.css\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.constant.css\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"punctuation.separator.key-value.scss\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"punctuation.definition.constant.scss\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"meta.property-list.scss punctuation.separator.key-value.scss\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"storage.type.primitive.array.java\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#C18401\\\"}},{\\\"scope\\\":\\\"entity.name.section.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"punctuation.definition.heading.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"markup.heading.setext\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.bold.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"markup.inline.raw.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"beginning.punctuation.definition.list.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"markup.quote.markdown\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#A0A1A7\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.string.begin.markdown\\\",\\\"punctuation.definition.string.end.markdown\\\",\\\"punctuation.definition.metadata.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}},{\\\"scope\\\":\\\"punctuation.definition.metadata.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"markup.underline.link.markdown\\\",\\\"markup.underline.link.image.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A626A4\\\"}},{\\\"scope\\\":[\\\"string.other.link.title.markdown\\\",\\\"string.other.link.description.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4078F2\\\"}},{\\\"scope\\\":\\\"punctuation.separator.variable.ruby\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"variable.other.constant.ruby\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#986801\\\"}},{\\\"scope\\\":\\\"keyword.operator.other.ruby\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#50A14F\\\"}},{\\\"scope\\\":\\\"punctuation.definition.variable.php\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#E45649\\\"}},{\\\"scope\\\":\\\"meta.class.php\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#383A42\\\"}}],\\\"type\\\":\\\"light\\\"}\"))\n"],"x_google_ignoreList":[0],"mappings":"AACA,IAAA,EAAe,OAAO,OAAO,KAAK,MAAM,2pxBAA202B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$t as e,I as t,P as n,T as r,jn as i,k as a,p as o,zt as s}from"./lucide-react-ChOGD4vc.js";import{o as c,t as l}from"./store-
|
|
2
|
-
//# sourceMappingURL=orchestrators-
|
|
1
|
+
import{$t as e,I as t,P as n,T as r,jn as i,k as a,p as o,zt as s}from"./lucide-react-ChOGD4vc.js";import{o as c,t as l}from"./store-qcA2XXVy.js";import{H as u,M as d,N as f}from"./display-CXhnBwGf.js";import{t as p}from"./badge-BR4bvEsy.js";import{t as m}from"./button-BwqJZS4O.js";import{M as h}from"./index-C6HByEQl.js";import{i as g,n as _,r as v,t as y}from"./card-C7JtSyuM.js";var b=i();function x({agent:e,orch:t}){let r=l(e=>e.orchestratorAction),i=l(e=>e.openFilesAt);return(0,b.jsxs)(`div`,{className:`flex items-center gap-2 py-1.5`,children:[(0,b.jsx)(s,{className:`w-3.5 h-3.5 text-muted-foreground shrink-0`}),(0,b.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,b.jsx)(`div`,{className:`text-xs font-medium truncate`,children:e.label||e.agentId.slice(-12)}),(0,b.jsxs)(`button`,{type:`button`,className:`max-w-full truncate text-left text-[10px] text-muted-foreground hover:text-foreground`,title:`Open ${e.cwd||t.baseDir} in Files`,onClick:n=>{n.stopPropagation(),i({orchestratorId:t.id,path:e.cwd||t.baseDir})},children:[e.provider,` · `,e.cwd||`~`]})]}),(0,b.jsxs)(`div`,{className:`flex gap-1`,children:[(0,b.jsx)(m,{size:`icon`,variant:`ghost`,className:`h-6 w-6`,title:`Restart agent`,onClick:n=>{n.stopPropagation(),r(t.id,`restart`,e.agentId,`orchestrators`)},children:(0,b.jsx)(a,{className:`w-3 h-3`})}),(0,b.jsx)(m,{size:`icon`,variant:`ghost`,className:`h-6 w-6 text-red-400 hover:text-red-300`,title:`Shutdown agent`,onClick:n=>{n.stopPropagation(),r(t.id,`shutdown`,e.agentId,`orchestrators`)},children:(0,b.jsx)(n,{className:`w-3 h-3`})})]})]})}function S({orch:i}){let s=c(),S=l(e=>e.orchestratorAction),C=l(e=>e.upgradeOrchestrator),w=l(e=>e.stats.version),T=l(e=>e.openOrchestratorSpawnFor),E=l(e=>e.openFilesAt),D=l(e=>e.deleteOrchestrator),O=l(e=>e.refreshOrchestratorProviders),k=f(i),A=d(i),j=i.status===`online`,M=i.package?.version||i.version,N=i.upgrade,P=N?.status===`pending`,F=j&&!!i.version&&!!w&&i.version!==w,I=j&&!P&&(F||N?.status===`failed`),L=Object.entries(i.contracts||{}).filter(([,e])=>typeof e==`number`),R=i.providerStatus||i.providers.map(e=>({name:e,available:!0,checkedAt:Number(i.lastSeen)||Date.now()})),z=i.managedAgents.map(e=>e.workspace?{agent:e,workspace:e.workspace}:null).filter(e=>!!(e?.workspace?.id||e?.workspace?.worktreePath));return(0,b.jsxs)(y,{className:`${j?``:`opacity-60`}`,children:[(0,b.jsx)(v,{className:`pb-2 pt-4 px-4`,children:(0,b.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,b.jsx)(`div`,{className:`p-1.5 rounded-md ${j?`bg-emerald-500/10`:`bg-zinc-800`}`,children:(0,b.jsx)(r,{className:`w-4 h-4 ${j?`text-emerald-400`:`text-zinc-500`}`})}),(0,b.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,b.jsx)(g,{className:`text-sm font-medium truncate`,children:i.hostname}),(0,b.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:[i.id.slice(0,16),`…`]})]}),(0,b.jsx)(p,{className:`text-[10px] shrink-0 ${A}`,children:k})]})}),(0,b.jsxs)(_,{className:`px-4 pb-4 space-y-3`,children:[(0,b.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground`,children:[(0,b.jsx)(`span`,{className:j?`text-emerald-400`:`text-zinc-500`,children:i.status}),M&&(0,b.jsxs)(`span`,{children:[i.package?.name||`orchestrator`,` v`,M]}),P&&(0,b.jsxs)(p,{className:`text-[10px] bg-amber-500/10 text-amber-400 border-amber-500/20 gap-1`,children:[(0,b.jsx)(e,{className:`w-3 h-3 animate-pulse`}),`upgrading → v`,N.desiredVersion]}),!P&&N?.status===`failed`&&(0,b.jsxs)(p,{className:`text-[10px] bg-red-500/10 text-red-400 border-red-500/20 gap-1`,title:N.error,children:[(0,b.jsx)(o,{className:`w-3 h-3`}),`upgrade failed`]}),!P&&F&&(0,b.jsxs)(p,{className:`text-[10px] bg-blue-500/10 text-blue-400 border-blue-500/20`,children:[`→ v`,w,` available`]}),(0,b.jsx)(`span`,{className:`ml-auto`,children:u(s,i.lastSeen)})]}),R.length>0&&(0,b.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:R.map(e=>(0,b.jsx)(p,{variant:`secondary`,title:e.available?`version`in e&&e.version?e.version:e.name:`reason`in e&&e.reason?e.reason:`${e.name} unavailable`,className:`text-[10px] ${e.available?`bg-emerald-500/10 text-emerald-400 border-emerald-500/20`:`bg-red-500/10 text-red-400 border-red-500/20`}`,children:e.name},e.name))}),L.length>0&&(0,b.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:L.map(([e,t])=>(0,b.jsxs)(p,{variant:`secondary`,className:`text-[10px]`,children:[e,`=`,t]},e))}),i.managedAgents.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h,{}),(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:[`Managed agents (`,i.managedAgents.length,`)`]}),(0,b.jsx)(`div`,{className:`space-y-0`,children:i.managedAgents.map(e=>(0,b.jsx)(x,{agent:e,orch:i},e.agentId))})]})]}),z.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h,{}),(0,b.jsxs)(`div`,{children:[(0,b.jsxs)(`div`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:[`Workspaces (`,z.length,`)`]}),(0,b.jsx)(`div`,{className:`space-y-1`,children:z.map(({agent:e,workspace:t})=>(0,b.jsxs)(`button`,{type:`button`,className:`block w-full min-w-0 rounded border border-border/60 px-2 py-1.5 text-left hover:bg-accent/40`,onClick:()=>t.worktreePath&&void E({orchestratorId:i.id,path:t.worktreePath}),children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,b.jsx)(`span`,{className:`truncate font-medium`,children:t.branch||e.label||e.agentId.slice(-12)}),t.status&&(0,b.jsx)(p,{variant:`outline`,className:`h-4 shrink-0 text-[10px]`,children:t.status})]}),(0,b.jsx)(`div`,{className:`truncate text-[10px] text-muted-foreground`,children:t.worktreePath||t.repoRoot})]},t.id||t.worktreePath))})]})]}),(0,b.jsx)(h,{}),(0,b.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[j&&(0,b.jsxs)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs gap-1`,onClick:()=>T(i.id),children:[(0,b.jsx)(t,{className:`w-3 h-3`}),`Spawn agent`]}),j&&(0,b.jsxs)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs gap-1`,onClick:()=>O(i.id),children:[(0,b.jsx)(a,{className:`w-3 h-3`}),`Refresh providers`]}),(I||P)&&(0,b.jsxs)(m,{size:`sm`,variant:`outline`,disabled:P,className:`h-7 text-xs gap-1 text-blue-400 hover:text-blue-300 border-blue-500/30 disabled:opacity-60`,title:P?`Upgrading to v${N.desiredVersion}…`:`Upgrade to v${w}`,onClick:()=>C(i.id),children:[(0,b.jsx)(e,{className:`w-3 h-3 ${P?`animate-pulse`:``}`}),P?`Upgrading…`:`Upgrade`]}),j&&(0,b.jsxs)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs gap-1`,onClick:()=>S(i.id,`restart`,void 0,`orchestrators`),children:[(0,b.jsx)(a,{className:`w-3 h-3`}),`Restart all`]}),j&&(0,b.jsxs)(m,{size:`sm`,variant:`outline`,className:`h-7 text-xs gap-1 text-red-400 hover:text-red-300 border-red-500/30`,onClick:()=>S(i.id,`shutdown`,void 0,`orchestrators`),children:[(0,b.jsx)(n,{className:`w-3 h-3`}),`Shutdown all`]}),(0,b.jsx)(m,{size:`sm`,variant:`ghost`,className:`h-7 text-xs text-muted-foreground hover:text-red-400`,onClick:()=>D(i.id),children:`Remove`})]})]})]})}function C(){let e=l(e=>e.orchestrators),n=l(e=>e.openOrchestratorSpawn),i=l(e=>e.openOrchestratorInstall),a=e.filter(e=>e.status===`online`).length;return(0,b.jsxs)(`div`,{className:`space-y-4`,children:[(0,b.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`h2`,{className:`text-base font-semibold`,children:`Orchestrators`}),(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Multi-host agent lifecycle managers`})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,b.jsxs)(p,{variant:`outline`,className:`text-xs`,children:[a,` online`]}),(0,b.jsxs)(m,{size:`sm`,variant:`outline`,className:`gap-1`,onClick:i,children:[(0,b.jsx)(r,{className:`w-3.5 h-3.5`}),`Add`]}),(0,b.jsxs)(m,{size:`sm`,className:`gap-1`,onClick:n,children:[(0,b.jsx)(t,{className:`w-3.5 h-3.5`}),`Spawn`]})]})]}),e.length===0?(0,b.jsx)(`div`,{className:`text-center py-16 text-muted-foreground text-sm`,children:`No orchestrators registered.`}):(0,b.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`,children:e.map(e=>(0,b.jsx)(S,{orch:e},e.id))})]})}export{C as OrchestratorsView};
|
|
2
|
+
//# sourceMappingURL=orchestrators-CQNQYFnL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrators-DQqtYryc.js","names":[],"sources":["../../dashboard/src/components/views/orchestrators.tsx"],"sourcesContent":["import { useRelayStore, useNow } from '@/store'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Separator } from '@/components/ui/separator'\nimport { displayName, orchestratorHealthLabel, orchestratorHealthClass, timeAgo } from '@/lib/display'\nimport { Server, Plus, RotateCw, Power, Cpu, ArrowUpCircle, AlertTriangle } from 'lucide-react'\nimport type { Orchestrator, ManagedAgent } from '@/types'\n\nfunction ManagedAgentRow({ agent, orch }: { agent: ManagedAgent; orch: Orchestrator }) {\n const orchestratorAction = useRelayStore((s) => s.orchestratorAction)\n const openFilesAt = useRelayStore((s) => s.openFilesAt)\n\n return (\n <div className=\"flex items-center gap-2 py-1.5\">\n <Cpu className=\"w-3.5 h-3.5 text-muted-foreground shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-xs font-medium truncate\">\n {agent.label || agent.agentId.slice(-12)}\n </div>\n <button\n type=\"button\"\n className=\"max-w-full truncate text-left text-[10px] text-muted-foreground hover:text-foreground\"\n title={`Open ${agent.cwd || orch.baseDir} in Files`}\n onClick={(e) => { e.stopPropagation(); void openFilesAt({ orchestratorId: orch.id, path: agent.cwd || orch.baseDir }) }}\n >\n {agent.provider} · {agent.cwd || '~'}\n </button>\n </div>\n <div className=\"flex gap-1\">\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6\"\n title=\"Restart agent\"\n onClick={(e) => { e.stopPropagation(); orchestratorAction(orch.id, 'restart', agent.agentId, 'orchestrators') }}\n >\n <RotateCw className=\"w-3 h-3\" />\n </Button>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6 text-red-400 hover:text-red-300\"\n title=\"Shutdown agent\"\n onClick={(e) => { e.stopPropagation(); orchestratorAction(orch.id, 'shutdown', agent.agentId, 'orchestrators') }}\n >\n <Power className=\"w-3 h-3\" />\n </Button>\n </div>\n </div>\n )\n}\n\nfunction OrchestratorCard({ orch }: { orch: Orchestrator }) {\n const now = useNow()\n const orchestratorAction = useRelayStore((s) => s.orchestratorAction)\n const upgradeOrchestrator = useRelayStore((s) => s.upgradeOrchestrator)\n const fleetTarget = useRelayStore((s) => s.stats.version)\n const openOrchestratorSpawnFor = useRelayStore((s) => s.openOrchestratorSpawnFor)\n const openFilesAt = useRelayStore((s) => s.openFilesAt)\n const deleteOrchestrator = useRelayStore((s) => s.deleteOrchestrator)\n const refreshOrchestratorProviders = useRelayStore((s) => s.refreshOrchestratorProviders)\n\n const healthLabel = orchestratorHealthLabel(orch)\n const healthClass = orchestratorHealthClass(orch)\n const online = orch.status === 'online'\n const packageVersion = orch.package?.version || orch.version\n const upgrade = orch.upgrade\n const upgrading = upgrade?.status === 'pending'\n // Drift = reported version differs from the relay's own version (fleet target).\n const driftAvailable = online && !!orch.version && !!fleetTarget && orch.version !== fleetTarget\n const canUpgrade = online && !upgrading && (driftAvailable || upgrade?.status === 'failed')\n const contractEntries = Object.entries(orch.contracts || {}).filter(([, value]) => typeof value === 'number')\n const providerStatus = orch.providerStatus || orch.providers.map((provider) => ({ name: provider, available: true, checkedAt: Number(orch.lastSeen) || Date.now() }))\n const workspaces = orch.managedAgents\n .map((agent) => agent.workspace ? { agent, workspace: agent.workspace } : null)\n .filter((item): item is { agent: ManagedAgent; workspace: NonNullable<ManagedAgent['workspace']> } => Boolean(item?.workspace?.id || item?.workspace?.worktreePath))\n\n return (\n <Card className={`${!online ? 'opacity-60' : ''}`}>\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <div className=\"flex items-start gap-2\">\n <div className={`p-1.5 rounded-md ${online ? 'bg-emerald-500/10' : 'bg-zinc-800'}`}>\n <Server className={`w-4 h-4 ${online ? 'text-emerald-400' : 'text-zinc-500'}`} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"text-sm font-medium truncate\">{orch.hostname}</CardTitle>\n <div className=\"text-xs text-muted-foreground mt-0.5\">{orch.id.slice(0, 16)}…</div>\n </div>\n <Badge className={`text-[10px] shrink-0 ${healthClass}`}>{healthLabel}</Badge>\n </div>\n </CardHeader>\n\n <CardContent className=\"px-4 pb-4 space-y-3\">\n {/* Meta row */}\n <div className=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n <span className={online ? 'text-emerald-400' : 'text-zinc-500'}>{orch.status}</span>\n {packageVersion && <span>{orch.package?.name || 'orchestrator'} v{packageVersion}</span>}\n {upgrading && (\n <Badge className=\"text-[10px] bg-amber-500/10 text-amber-400 border-amber-500/20 gap-1\">\n <ArrowUpCircle className=\"w-3 h-3 animate-pulse\" />upgrading → v{upgrade!.desiredVersion}\n </Badge>\n )}\n {!upgrading && upgrade?.status === 'failed' && (\n <Badge className=\"text-[10px] bg-red-500/10 text-red-400 border-red-500/20 gap-1\" title={upgrade.error}>\n <AlertTriangle className=\"w-3 h-3\" />upgrade failed\n </Badge>\n )}\n {!upgrading && driftAvailable && (\n <Badge className=\"text-[10px] bg-blue-500/10 text-blue-400 border-blue-500/20\">→ v{fleetTarget} available</Badge>\n )}\n <span className=\"ml-auto\">{timeAgo(now, orch.lastSeen)}</span>\n </div>\n\n {providerStatus.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {providerStatus.map((status) => (\n <Badge\n key={status.name}\n variant=\"secondary\"\n title={status.available ? ('version' in status && status.version ? status.version : status.name) : ('reason' in status && status.reason ? status.reason : `${status.name} unavailable`)}\n className={`text-[10px] ${status.available ? 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20' : 'bg-red-500/10 text-red-400 border-red-500/20'}`}\n >\n {status.name}\n </Badge>\n ))}\n </div>\n )}\n\n {contractEntries.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {contractEntries.map(([name, version]) => (\n <Badge key={name} variant=\"secondary\" className=\"text-[10px]\">{name}={version}</Badge>\n ))}\n </div>\n )}\n\n {/* Managed agents */}\n {orch.managedAgents.length > 0 && (\n <>\n <Separator />\n <div>\n <div className=\"text-xs font-medium text-muted-foreground mb-1.5\">\n Managed agents ({orch.managedAgents.length})\n </div>\n <div className=\"space-y-0\">\n {orch.managedAgents.map((a) => (\n <ManagedAgentRow key={a.agentId} agent={a} orch={orch} />\n ))}\n </div>\n </div>\n </>\n )}\n\n {workspaces.length > 0 && (\n <>\n <Separator />\n <div>\n <div className=\"text-xs font-medium text-muted-foreground mb-1.5\">\n Workspaces ({workspaces.length})\n </div>\n <div className=\"space-y-1\">\n {workspaces.map(({ agent, workspace }) => (\n <button\n key={workspace.id || workspace.worktreePath}\n type=\"button\"\n className=\"block w-full min-w-0 rounded border border-border/60 px-2 py-1.5 text-left hover:bg-accent/40\"\n onClick={() => workspace.worktreePath && void openFilesAt({ orchestratorId: orch.id, path: workspace.worktreePath })}\n >\n <div className=\"flex items-center gap-2 text-xs\">\n <span className=\"truncate font-medium\">{workspace.branch || agent.label || agent.agentId.slice(-12)}</span>\n {workspace.status && <Badge variant=\"outline\" className=\"h-4 shrink-0 text-[10px]\">{workspace.status}</Badge>}\n </div>\n <div className=\"truncate text-[10px] text-muted-foreground\">{workspace.worktreePath || workspace.repoRoot}</div>\n </button>\n ))}\n </div>\n </div>\n </>\n )}\n\n {/* Actions */}\n <Separator />\n <div className=\"flex flex-wrap gap-1.5\">\n {online && (\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs gap-1\" onClick={() => openOrchestratorSpawnFor(orch.id)}>\n <Plus className=\"w-3 h-3\" />\n Spawn agent\n </Button>\n )}\n {online && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs gap-1\"\n onClick={() => refreshOrchestratorProviders(orch.id)}\n >\n <RotateCw className=\"w-3 h-3\" />\n Refresh providers\n </Button>\n )}\n {(canUpgrade || upgrading) && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={upgrading}\n className=\"h-7 text-xs gap-1 text-blue-400 hover:text-blue-300 border-blue-500/30 disabled:opacity-60\"\n title={upgrading ? `Upgrading to v${upgrade!.desiredVersion}…` : `Upgrade to v${fleetTarget}`}\n onClick={() => upgradeOrchestrator(orch.id)}\n >\n <ArrowUpCircle className={`w-3 h-3 ${upgrading ? 'animate-pulse' : ''}`} />\n {upgrading ? 'Upgrading…' : 'Upgrade'}\n </Button>\n )}\n {online && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs gap-1\"\n onClick={() => orchestratorAction(orch.id, 'restart', undefined, 'orchestrators')}\n >\n <RotateCw className=\"w-3 h-3\" />\n Restart all\n </Button>\n )}\n {online && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs gap-1 text-red-400 hover:text-red-300 border-red-500/30\"\n onClick={() => orchestratorAction(orch.id, 'shutdown', undefined, 'orchestrators')}\n >\n <Power className=\"w-3 h-3\" />\n Shutdown all\n </Button>\n )}\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-7 text-xs text-muted-foreground hover:text-red-400\"\n onClick={() => deleteOrchestrator(orch.id)}\n >\n Remove\n </Button>\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport function OrchestratorsView() {\n const orchestrators = useRelayStore((s) => s.orchestrators)\n const openOrchestratorSpawn = useRelayStore((s) => s.openOrchestratorSpawn)\n const openOrchestratorInstall = useRelayStore((s) => s.openOrchestratorInstall)\n\n const onlineCount = orchestrators.filter((o) => o.status === 'online').length\n\n return (\n <div className=\"space-y-4\">\n {/* Header */}\n <div className=\"flex items-center gap-3\">\n <div>\n <h2 className=\"text-base font-semibold\">Orchestrators</h2>\n <p className=\"text-xs text-muted-foreground\">Multi-host agent lifecycle managers</p>\n </div>\n <div className=\"flex items-center gap-2 ml-auto\">\n <Badge variant=\"outline\" className=\"text-xs\">\n {onlineCount} online\n </Badge>\n <Button size=\"sm\" variant=\"outline\" className=\"gap-1\" onClick={openOrchestratorInstall}>\n <Server className=\"w-3.5 h-3.5\" />\n Add\n </Button>\n <Button size=\"sm\" className=\"gap-1\" onClick={openOrchestratorSpawn}>\n <Plus className=\"w-3.5 h-3.5\" />\n Spawn\n </Button>\n </div>\n </div>\n\n {/* Cards */}\n {orchestrators.length === 0 ? (\n <div className=\"text-center py-16 text-muted-foreground text-sm\">\n No orchestrators registered.\n </div>\n ) : (\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {orchestrators.map((orch) => (\n <OrchestratorCard key={orch.id} orch={orch} />\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrators-CQNQYFnL.js","names":[],"sources":["../../dashboard/src/components/views/orchestrators.tsx"],"sourcesContent":["import { useRelayStore, useNow } from '@/store'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Separator } from '@/components/ui/separator'\nimport { displayName, orchestratorHealthLabel, orchestratorHealthClass, timeAgo } from '@/lib/display'\nimport { Server, Plus, RotateCw, Power, Cpu, ArrowUpCircle, AlertTriangle } from 'lucide-react'\nimport type { Orchestrator, ManagedAgent } from '@/types'\n\nfunction ManagedAgentRow({ agent, orch }: { agent: ManagedAgent; orch: Orchestrator }) {\n const orchestratorAction = useRelayStore((s) => s.orchestratorAction)\n const openFilesAt = useRelayStore((s) => s.openFilesAt)\n\n return (\n <div className=\"flex items-center gap-2 py-1.5\">\n <Cpu className=\"w-3.5 h-3.5 text-muted-foreground shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-xs font-medium truncate\">\n {agent.label || agent.agentId.slice(-12)}\n </div>\n <button\n type=\"button\"\n className=\"max-w-full truncate text-left text-[10px] text-muted-foreground hover:text-foreground\"\n title={`Open ${agent.cwd || orch.baseDir} in Files`}\n onClick={(e) => { e.stopPropagation(); void openFilesAt({ orchestratorId: orch.id, path: agent.cwd || orch.baseDir }) }}\n >\n {agent.provider} · {agent.cwd || '~'}\n </button>\n </div>\n <div className=\"flex gap-1\">\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6\"\n title=\"Restart agent\"\n onClick={(e) => { e.stopPropagation(); orchestratorAction(orch.id, 'restart', agent.agentId, 'orchestrators') }}\n >\n <RotateCw className=\"w-3 h-3\" />\n </Button>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"h-6 w-6 text-red-400 hover:text-red-300\"\n title=\"Shutdown agent\"\n onClick={(e) => { e.stopPropagation(); orchestratorAction(orch.id, 'shutdown', agent.agentId, 'orchestrators') }}\n >\n <Power className=\"w-3 h-3\" />\n </Button>\n </div>\n </div>\n )\n}\n\nfunction OrchestratorCard({ orch }: { orch: Orchestrator }) {\n const now = useNow()\n const orchestratorAction = useRelayStore((s) => s.orchestratorAction)\n const upgradeOrchestrator = useRelayStore((s) => s.upgradeOrchestrator)\n const fleetTarget = useRelayStore((s) => s.stats.version)\n const openOrchestratorSpawnFor = useRelayStore((s) => s.openOrchestratorSpawnFor)\n const openFilesAt = useRelayStore((s) => s.openFilesAt)\n const deleteOrchestrator = useRelayStore((s) => s.deleteOrchestrator)\n const refreshOrchestratorProviders = useRelayStore((s) => s.refreshOrchestratorProviders)\n\n const healthLabel = orchestratorHealthLabel(orch)\n const healthClass = orchestratorHealthClass(orch)\n const online = orch.status === 'online'\n const packageVersion = orch.package?.version || orch.version\n const upgrade = orch.upgrade\n const upgrading = upgrade?.status === 'pending'\n // Drift = reported version differs from the relay's own version (fleet target).\n const driftAvailable = online && !!orch.version && !!fleetTarget && orch.version !== fleetTarget\n const canUpgrade = online && !upgrading && (driftAvailable || upgrade?.status === 'failed')\n const contractEntries = Object.entries(orch.contracts || {}).filter(([, value]) => typeof value === 'number')\n const providerStatus = orch.providerStatus || orch.providers.map((provider) => ({ name: provider, available: true, checkedAt: Number(orch.lastSeen) || Date.now() }))\n const workspaces = orch.managedAgents\n .map((agent) => agent.workspace ? { agent, workspace: agent.workspace } : null)\n .filter((item): item is { agent: ManagedAgent; workspace: NonNullable<ManagedAgent['workspace']> } => Boolean(item?.workspace?.id || item?.workspace?.worktreePath))\n\n return (\n <Card className={`${!online ? 'opacity-60' : ''}`}>\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <div className=\"flex items-start gap-2\">\n <div className={`p-1.5 rounded-md ${online ? 'bg-emerald-500/10' : 'bg-zinc-800'}`}>\n <Server className={`w-4 h-4 ${online ? 'text-emerald-400' : 'text-zinc-500'}`} />\n </div>\n <div className=\"flex-1 min-w-0\">\n <CardTitle className=\"text-sm font-medium truncate\">{orch.hostname}</CardTitle>\n <div className=\"text-xs text-muted-foreground mt-0.5\">{orch.id.slice(0, 16)}…</div>\n </div>\n <Badge className={`text-[10px] shrink-0 ${healthClass}`}>{healthLabel}</Badge>\n </div>\n </CardHeader>\n\n <CardContent className=\"px-4 pb-4 space-y-3\">\n {/* Meta row */}\n <div className=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground\">\n <span className={online ? 'text-emerald-400' : 'text-zinc-500'}>{orch.status}</span>\n {packageVersion && <span>{orch.package?.name || 'orchestrator'} v{packageVersion}</span>}\n {upgrading && (\n <Badge className=\"text-[10px] bg-amber-500/10 text-amber-400 border-amber-500/20 gap-1\">\n <ArrowUpCircle className=\"w-3 h-3 animate-pulse\" />upgrading → v{upgrade!.desiredVersion}\n </Badge>\n )}\n {!upgrading && upgrade?.status === 'failed' && (\n <Badge className=\"text-[10px] bg-red-500/10 text-red-400 border-red-500/20 gap-1\" title={upgrade.error}>\n <AlertTriangle className=\"w-3 h-3\" />upgrade failed\n </Badge>\n )}\n {!upgrading && driftAvailable && (\n <Badge className=\"text-[10px] bg-blue-500/10 text-blue-400 border-blue-500/20\">→ v{fleetTarget} available</Badge>\n )}\n <span className=\"ml-auto\">{timeAgo(now, orch.lastSeen)}</span>\n </div>\n\n {providerStatus.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {providerStatus.map((status) => (\n <Badge\n key={status.name}\n variant=\"secondary\"\n title={status.available ? ('version' in status && status.version ? status.version : status.name) : ('reason' in status && status.reason ? status.reason : `${status.name} unavailable`)}\n className={`text-[10px] ${status.available ? 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20' : 'bg-red-500/10 text-red-400 border-red-500/20'}`}\n >\n {status.name}\n </Badge>\n ))}\n </div>\n )}\n\n {contractEntries.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {contractEntries.map(([name, version]) => (\n <Badge key={name} variant=\"secondary\" className=\"text-[10px]\">{name}={version}</Badge>\n ))}\n </div>\n )}\n\n {/* Managed agents */}\n {orch.managedAgents.length > 0 && (\n <>\n <Separator />\n <div>\n <div className=\"text-xs font-medium text-muted-foreground mb-1.5\">\n Managed agents ({orch.managedAgents.length})\n </div>\n <div className=\"space-y-0\">\n {orch.managedAgents.map((a) => (\n <ManagedAgentRow key={a.agentId} agent={a} orch={orch} />\n ))}\n </div>\n </div>\n </>\n )}\n\n {workspaces.length > 0 && (\n <>\n <Separator />\n <div>\n <div className=\"text-xs font-medium text-muted-foreground mb-1.5\">\n Workspaces ({workspaces.length})\n </div>\n <div className=\"space-y-1\">\n {workspaces.map(({ agent, workspace }) => (\n <button\n key={workspace.id || workspace.worktreePath}\n type=\"button\"\n className=\"block w-full min-w-0 rounded border border-border/60 px-2 py-1.5 text-left hover:bg-accent/40\"\n onClick={() => workspace.worktreePath && void openFilesAt({ orchestratorId: orch.id, path: workspace.worktreePath })}\n >\n <div className=\"flex items-center gap-2 text-xs\">\n <span className=\"truncate font-medium\">{workspace.branch || agent.label || agent.agentId.slice(-12)}</span>\n {workspace.status && <Badge variant=\"outline\" className=\"h-4 shrink-0 text-[10px]\">{workspace.status}</Badge>}\n </div>\n <div className=\"truncate text-[10px] text-muted-foreground\">{workspace.worktreePath || workspace.repoRoot}</div>\n </button>\n ))}\n </div>\n </div>\n </>\n )}\n\n {/* Actions */}\n <Separator />\n <div className=\"flex flex-wrap gap-1.5\">\n {online && (\n <Button size=\"sm\" variant=\"outline\" className=\"h-7 text-xs gap-1\" onClick={() => openOrchestratorSpawnFor(orch.id)}>\n <Plus className=\"w-3 h-3\" />\n Spawn agent\n </Button>\n )}\n {online && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs gap-1\"\n onClick={() => refreshOrchestratorProviders(orch.id)}\n >\n <RotateCw className=\"w-3 h-3\" />\n Refresh providers\n </Button>\n )}\n {(canUpgrade || upgrading) && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n disabled={upgrading}\n className=\"h-7 text-xs gap-1 text-blue-400 hover:text-blue-300 border-blue-500/30 disabled:opacity-60\"\n title={upgrading ? `Upgrading to v${upgrade!.desiredVersion}…` : `Upgrade to v${fleetTarget}`}\n onClick={() => upgradeOrchestrator(orch.id)}\n >\n <ArrowUpCircle className={`w-3 h-3 ${upgrading ? 'animate-pulse' : ''}`} />\n {upgrading ? 'Upgrading…' : 'Upgrade'}\n </Button>\n )}\n {online && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs gap-1\"\n onClick={() => orchestratorAction(orch.id, 'restart', undefined, 'orchestrators')}\n >\n <RotateCw className=\"w-3 h-3\" />\n Restart all\n </Button>\n )}\n {online && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 text-xs gap-1 text-red-400 hover:text-red-300 border-red-500/30\"\n onClick={() => orchestratorAction(orch.id, 'shutdown', undefined, 'orchestrators')}\n >\n <Power className=\"w-3 h-3\" />\n Shutdown all\n </Button>\n )}\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-7 text-xs text-muted-foreground hover:text-red-400\"\n onClick={() => deleteOrchestrator(orch.id)}\n >\n Remove\n </Button>\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport function OrchestratorsView() {\n const orchestrators = useRelayStore((s) => s.orchestrators)\n const openOrchestratorSpawn = useRelayStore((s) => s.openOrchestratorSpawn)\n const openOrchestratorInstall = useRelayStore((s) => s.openOrchestratorInstall)\n\n const onlineCount = orchestrators.filter((o) => o.status === 'online').length\n\n return (\n <div className=\"space-y-4\">\n {/* Header */}\n <div className=\"flex items-center gap-3\">\n <div>\n <h2 className=\"text-base font-semibold\">Orchestrators</h2>\n <p className=\"text-xs text-muted-foreground\">Multi-host agent lifecycle managers</p>\n </div>\n <div className=\"flex items-center gap-2 ml-auto\">\n <Badge variant=\"outline\" className=\"text-xs\">\n {onlineCount} online\n </Badge>\n <Button size=\"sm\" variant=\"outline\" className=\"gap-1\" onClick={openOrchestratorInstall}>\n <Server className=\"w-3.5 h-3.5\" />\n Add\n </Button>\n <Button size=\"sm\" className=\"gap-1\" onClick={openOrchestratorSpawn}>\n <Plus className=\"w-3.5 h-3.5\" />\n Spawn\n </Button>\n </div>\n </div>\n\n {/* Cards */}\n {orchestrators.length === 0 ? (\n <div className=\"text-center py-16 text-muted-foreground text-sm\">\n No orchestrators registered.\n </div>\n ) : (\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {orchestrators.map((orch) => (\n <OrchestratorCard key={orch.id} orch={orch} />\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./chunk-CilyBKbf.js";import{$ as t,J as n,On as r,Un as i,at as a,hn as o,jn as s,l as c,mt as l,ot as u,p as d}from"./lucide-react-ChOGD4vc.js";import{o as f,t as p}from"./store-
|
|
2
|
-
//# sourceMappingURL=overview-
|
|
1
|
+
import{r as e}from"./chunk-CilyBKbf.js";import{$ as t,J as n,On as r,Un as i,at as a,hn as o,jn as s,l as c,mt as l,ot as u,p as d}from"./lucide-react-ChOGD4vc.js";import{o as f,t as p}from"./store-qcA2XXVy.js";import{H as m,K as h,U as g,d as _,f as v,g as y,k as b,lt as x}from"./display-CXhnBwGf.js";import{t as S}from"./badge-BR4bvEsy.js";import{I as C,L as w,M as T,S as E,s as D,x as O,z as k}from"./index-C6HByEQl.js";import{i as A,n as j,r as M,t as N}from"./card-C7JtSyuM.js";var P=e(i(),1),F=s();function I(){let e=p(e=>e.stats),i=p(e=>e.agents),s=p(e=>e.messages),I=p(e=>e.health),L=f(),R=p(e=>e.agentsById),z=p(e=>e.switchView),B=p(e=>e.runHealthAction),V=p(e=>e.managedPolicies),H=p(e=>e.showOffline),U=k(),W=w(),G=C(),K=(0,P.useMemo)(()=>{let e=h(i,!1,V);return H||(e=e.filter(e=>e.status!==`offline`)),[...e].sort((e,t)=>(x[e.status]??9)-(x[t.status]??9)||g(t.lastSeen)-g(e.lastSeen))},[i,H,V]),q=K.slice(0,20),J=[...s].sort((e,t)=>t.id-e.id).slice(0,15),Y=I&&I.status!==`ok`?y(I.checks||[]):[];function X(e){z(e)}return(0,F.jsxs)(`div`,{className:`space-y-6`,children:[(0,F.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:[(0,F.jsxs)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors`,onClick:()=>X(`agents`),children:[(0,F.jsx)(M,{className:`pb-1 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-xs font-medium text-muted-foreground flex items-center gap-1.5`,children:[(0,F.jsx)(c,{className:`w-3.5 h-3.5`}),`Agents`]})}),(0,F.jsxs)(j,{className:`px-4 pb-4`,children:[(0,F.jsx)(`div`,{className:`text-2xl font-bold`,children:K.length}),(0,F.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:[U,` online`]})]})]}),(0,F.jsxs)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors`,onClick:()=>X(`agents`),children:[(0,F.jsx)(M,{className:`pb-1 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-xs font-medium text-muted-foreground flex items-center gap-1.5`,children:[(0,F.jsx)(r,{className:`w-3.5 h-3.5`}),`Busy`]})}),(0,F.jsxs)(j,{className:`px-4 pb-4`,children:[(0,F.jsx)(`div`,{className:`text-2xl font-bold`,children:W}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:`in a turn now`})]})]}),(0,F.jsxs)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors`,onClick:()=>X(`messages`),children:[(0,F.jsx)(M,{className:`pb-1 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-xs font-medium text-muted-foreground flex items-center gap-1.5`,children:[(0,F.jsx)(n,{className:`w-3.5 h-3.5`}),`Messages 24h`]})}),(0,F.jsxs)(j,{className:`px-4 pb-4`,children:[(0,F.jsx)(`div`,{className:`text-2xl font-bold`,children:e.messagesLast24h??`—`}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:`last 24 hours`})]})]}),(0,F.jsxs)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors`,onClick:()=>X(`messages`),children:[(0,F.jsx)(M,{className:`pb-1 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-xs font-medium text-muted-foreground flex items-center gap-1.5`,children:[(0,F.jsx)(t,{className:`w-3.5 h-3.5`}),`Total Messages`]})}),(0,F.jsxs)(j,{className:`px-4 pb-4`,children:[(0,F.jsx)(`div`,{className:`text-2xl font-bold`,children:e.messages??`—`}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:`all time`})]})]})]}),Y.length>0&&(0,F.jsxs)(N,{className:`border-yellow-500/40 bg-yellow-500/5`,children:[(0,F.jsx)(M,{className:`pb-2 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-sm font-medium text-yellow-400 flex items-center gap-2`,children:[(0,F.jsx)(d,{className:`w-4 h-4`}),`Health Alerts (`,Y.length,`)`]})}),(0,F.jsx)(j,{className:`px-4 pb-4 space-y-2`,children:Y.map(e=>(0,F.jsxs)(`div`,{className:`text-sm space-y-1`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(S,{variant:`outline`,className:e.status===`error`?`border-red-500/40 text-red-400`:`border-yellow-500/40 text-yellow-400`,children:e.status}),(0,F.jsx)(`span`,{className:`font-medium`,children:e.name})]}),(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.detail}),e.subjects.length>0&&(0,F.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.subjects.map(e=>(0,F.jsxs)(S,{variant:`secondary`,className:`max-w-full truncate text-[11px]`,title:[e.id,e.status,e.detail].filter(Boolean).join(` · `),children:[e.label||e.id,e.status?` · ${e.status}`:``,e.detail?` · ${e.detail}`:``]},e.id))}),e.actions.length>0&&(0,F.jsx)(`div`,{className:`flex flex-wrap gap-1.5 pt-0.5`,children:e.actions.slice(0,3).map(e=>(0,F.jsx)(`button`,{onClick:()=>B(e),className:`text-xs text-blue-400 hover:text-blue-300 underline underline-offset-2`,children:e.label},e.label))})]},e.name))})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-3 gap-4`,children:[(0,F.jsx)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors ${G.unreadInbox>0?`border-red-500/40`:``}`,onClick:()=>X(`chat`),children:(0,F.jsxs)(j,{className:`p-4 flex items-center gap-3`,children:[(0,F.jsx)(`div`,{className:`p-2 rounded-lg ${G.unreadInbox>0?`bg-red-500/15`:`bg-zinc-800`}`,children:(0,F.jsx)(l,{className:`w-4 h-4 ${G.unreadInbox>0?`text-red-400`:`text-zinc-400`}`})}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`div`,{className:`text-lg font-bold`,children:G.unreadInbox}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Unread`})]})]})}),(0,F.jsx)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors ${G.pendingPairInvites>0?`border-yellow-500/40`:``}`,onClick:()=>X(`pairs`),children:(0,F.jsxs)(j,{className:`p-4 flex items-center gap-3`,children:[(0,F.jsx)(`div`,{className:`p-2 rounded-lg ${G.pendingPairInvites>0?`bg-yellow-500/15`:`bg-zinc-800`}`,children:(0,F.jsx)(u,{className:`w-4 h-4 ${G.pendingPairInvites>0?`text-yellow-400`:`text-zinc-400`}`})}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`div`,{className:`text-lg font-bold`,children:G.pendingPairInvites}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Pair invites`})]})]})}),(0,F.jsx)(N,{className:`cursor-pointer hover:border-zinc-600 transition-colors ${G.claimableTasks>0?`border-orange-500/40`:``}`,onClick:()=>X(`work`),children:(0,F.jsxs)(j,{className:`p-4 flex items-center gap-3`,children:[(0,F.jsx)(`div`,{className:`p-2 rounded-lg ${G.claimableTasks>0?`bg-orange-500/15`:`bg-zinc-800`}`,children:(0,F.jsx)(a,{className:`w-4 h-4 ${G.claimableTasks>0?`text-orange-400`:`text-zinc-400`}`})}),(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`div`,{className:`text-lg font-bold`,children:G.claimableTasks}),(0,F.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Claimable waiting`})]})]})})]}),(0,F.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,F.jsxs)(N,{children:[(0,F.jsx)(M,{className:`pb-2 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,F.jsx)(o,{className:`w-4 h-4 text-muted-foreground`}),`Agents`,(0,F.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground font-normal`,children:q.length})]})}),(0,F.jsx)(j,{className:`px-0 pb-0`,children:(0,F.jsx)(D,{className:`h-[340px]`,children:q.length===0?(0,F.jsx)(`div`,{className:`px-4 pb-4 text-sm text-muted-foreground`,children:`No agents registered.`}):(0,F.jsx)(`div`,{className:`space-y-0`,children:q.map((e,t)=>(0,F.jsxs)(`div`,{children:[t>0&&(0,F.jsx)(T,{}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2.5 px-4 py-2.5 hover:bg-zinc-800/50 transition-colors cursor-pointer`,onClick:()=>p.getState().openAgentDetail(e),children:[(0,F.jsx)(E,{agent:e,now:L}),(0,F.jsx)(O,{agent:e}),(0,F.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,F.jsx)(`div`,{className:`text-sm font-medium truncate`,children:_(e)}),e.tags.length>0&&(0,F.jsx)(`div`,{className:`flex gap-1 mt-0.5 flex-wrap`,children:e.tags.slice(0,2).map(e=>(0,F.jsx)(S,{variant:`outline`,className:`text-[9px] px-1 py-0 h-4`,children:e},e))})]}),(0,F.jsx)(`span`,{className:`text-xs text-muted-foreground shrink-0`,children:m(L,e.lastSeen)})]})]},e.id))})})})]}),(0,F.jsxs)(N,{children:[(0,F.jsx)(M,{className:`pb-2 pt-4 px-4`,children:(0,F.jsxs)(A,{className:`text-sm font-medium flex items-center gap-2`,children:[(0,F.jsx)(r,{className:`w-4 h-4 text-muted-foreground`}),`Recent Activity`,(0,F.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground font-normal`,children:J.length})]})}),(0,F.jsx)(j,{className:`px-0 pb-0`,children:(0,F.jsx)(D,{className:`h-[340px]`,children:J.length===0?(0,F.jsx)(`div`,{className:`px-4 pb-4 text-sm text-muted-foreground`,children:`No recent messages.`}):(0,F.jsx)(`div`,{className:`space-y-0`,children:J.map((e,t)=>(0,F.jsxs)(`div`,{children:[t>0&&(0,F.jsx)(T,{}),(0,F.jsxs)(`div`,{className:`px-4 py-2.5 hover:bg-zinc-800/50 transition-colors`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-1 text-xs text-muted-foreground mb-0.5`,children:[(0,F.jsx)(`span`,{className:`text-foreground font-medium truncate max-w-[100px]`,children:v(e.from,R)}),(0,F.jsx)(`span`,{children:`→`}),(0,F.jsx)(`span`,{className:`truncate max-w-[100px]`,children:v(e.to,R)}),(0,F.jsxs)(`span`,{className:`ml-auto shrink-0 tabular-nums`,children:[(0,F.jsxs)(`span`,{className:`opacity-40 mr-1`,children:[`#`,e.id]}),m(L,e.createdAt)]})]}),(0,F.jsx)(`div`,{className:`text-xs text-foreground line-clamp-2 leading-snug`,children:b(e)})]})]},e.id))})})})]})]})]})}export{I as OverviewView};
|
|
2
|
+
//# sourceMappingURL=overview-CurMUxSA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview-CGYu6qQr.js","names":[],"sources":["../../dashboard/src/components/views/overview.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useRelayStore, useNow } from '@/store'\nimport { useAttentionSummary, useOnlineCount, useBusyCount } from '@/hooks/use-selectors'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { Separator } from '@/components/ui/separator'\nimport { StatusDot } from '@/components/shared/status-dot'\nimport { AgentTypeIcon } from '@/components/shared/agent-type-icon'\nimport {\n displayName, displayTarget, timeAgo, messagePreview, healthDiagnostics,\n toneToColor, visibleAgents, toTimestamp,\n} from '@/lib/display'\nimport { STATUS_SORT_ORDER } from '@/lib/constants'\nimport {\n Bot, Mail, Link, Inbox, AlertTriangle, Activity,\n Users, MessageSquare, ListChecks,\n} from 'lucide-react'\nimport type { ViewName } from '@/types'\n\nexport function OverviewView() {\n const stats = useRelayStore((s) => s.stats)\n const agents = useRelayStore((s) => s.agents)\n const messages = useRelayStore((s) => s.messages)\n const health = useRelayStore((s) => s.health)\n const now = useNow()\n const agentsById = useRelayStore((s) => s.agentsById)\n const switchView = useRelayStore((s) => s.switchView)\n const runHealthAction = useRelayStore((s) => s.runHealthAction)\n const managedPolicies = useRelayStore((s) => s.managedPolicies)\n\n const showOffline = useRelayStore((s) => s.showOffline)\n\n const onlineCount = useOnlineCount()\n const busyCount = useBusyCount()\n const attention = useAttentionSummary()\n\n const filteredAgents = useMemo(() => {\n let list = visibleAgents(agents, false, managedPolicies)\n if (!showOffline) list = list.filter((a) => a.status !== 'offline')\n return [...list].sort((a, b) => {\n const s = (STATUS_SORT_ORDER[a.status] ?? 9) - (STATUS_SORT_ORDER[b.status] ?? 9)\n return s || toTimestamp(b.lastSeen) - toTimestamp(a.lastSeen)\n })\n }, [agents, showOffline, managedPolicies])\n const recentAgents = filteredAgents.slice(0, 20)\n const recentMessages = [...messages].sort((a, b) => b.id - a.id).slice(0, 15)\n\n const healthIssues =\n health && health.status !== 'ok'\n ? healthDiagnostics(health.checks || [])\n : []\n\n function nav(view: ViewName) {\n switchView(view)\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Stat cards */}\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('agents')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <Users className=\"w-3.5 h-3.5\" />\n Agents\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{filteredAgents.length}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">{onlineCount} online</div>\n </CardContent>\n </Card>\n\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('agents')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <Activity className=\"w-3.5 h-3.5\" />\n Busy\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{busyCount}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">in a turn now</div>\n </CardContent>\n </Card>\n\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('messages')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <MessageSquare className=\"w-3.5 h-3.5\" />\n Messages 24h\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{stats.messagesLast24h ?? '—'}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">last 24 hours</div>\n </CardContent>\n </Card>\n\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('messages')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <Mail className=\"w-3.5 h-3.5\" />\n Total Messages\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{stats.messages ?? '—'}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">all time</div>\n </CardContent>\n </Card>\n </div>\n\n {/* Health alert banner */}\n {healthIssues.length > 0 && (\n <Card className=\"border-yellow-500/40 bg-yellow-500/5\">\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <CardTitle className=\"text-sm font-medium text-yellow-400 flex items-center gap-2\">\n <AlertTriangle className=\"w-4 h-4\" />\n Health Alerts ({healthIssues.length})\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4 space-y-2\">\n {healthIssues.map((issue) => (\n <div key={issue.name} className=\"text-sm space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Badge\n variant=\"outline\"\n className={issue.status === 'error' ? 'border-red-500/40 text-red-400' : 'border-yellow-500/40 text-yellow-400'}\n >\n {issue.status}\n </Badge>\n <span className=\"font-medium\">{issue.name}</span>\n </div>\n <p className=\"text-xs text-muted-foreground\">{issue.detail}</p>\n {issue.subjects.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {issue.subjects.map((subject) => (\n <Badge key={subject.id} variant=\"secondary\" className=\"max-w-full truncate text-[11px]\" title={[subject.id, subject.status, subject.detail].filter(Boolean).join(' · ')}>\n {subject.label || subject.id}\n {subject.status ? ` · ${subject.status}` : ''}\n {subject.detail ? ` · ${subject.detail}` : ''}\n </Badge>\n ))}\n </div>\n )}\n {issue.actions.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 pt-0.5\">\n {issue.actions.slice(0, 3).map((action) => (\n <button\n key={action.label}\n onClick={() => runHealthAction(action)}\n className=\"text-xs text-blue-400 hover:text-blue-300 underline underline-offset-2\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n\n {/* Attention shortcuts */}\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <Card\n className={`cursor-pointer hover:border-zinc-600 transition-colors ${attention.unreadInbox > 0 ? 'border-red-500/40' : ''}`}\n onClick={() => nav('chat')}\n >\n <CardContent className=\"p-4 flex items-center gap-3\">\n <div className={`p-2 rounded-lg ${attention.unreadInbox > 0 ? 'bg-red-500/15' : 'bg-zinc-800'}`}>\n <Inbox className={`w-4 h-4 ${attention.unreadInbox > 0 ? 'text-red-400' : 'text-zinc-400'}`} />\n </div>\n <div>\n <div className=\"text-lg font-bold\">{attention.unreadInbox}</div>\n <div className=\"text-xs text-muted-foreground\">Unread</div>\n </div>\n </CardContent>\n </Card>\n\n <Card\n className={`cursor-pointer hover:border-zinc-600 transition-colors ${attention.pendingPairInvites > 0 ? 'border-yellow-500/40' : ''}`}\n onClick={() => nav('pairs')}\n >\n <CardContent className=\"p-4 flex items-center gap-3\">\n <div className={`p-2 rounded-lg ${attention.pendingPairInvites > 0 ? 'bg-yellow-500/15' : 'bg-zinc-800'}`}>\n <Link className={`w-4 h-4 ${attention.pendingPairInvites > 0 ? 'text-yellow-400' : 'text-zinc-400'}`} />\n </div>\n <div>\n <div className=\"text-lg font-bold\">{attention.pendingPairInvites}</div>\n <div className=\"text-xs text-muted-foreground\">Pair invites</div>\n </div>\n </CardContent>\n </Card>\n\n <Card\n className={`cursor-pointer hover:border-zinc-600 transition-colors ${attention.claimableTasks > 0 ? 'border-orange-500/40' : ''}`}\n onClick={() => nav('work')}\n >\n <CardContent className=\"p-4 flex items-center gap-3\">\n <div className={`p-2 rounded-lg ${attention.claimableTasks > 0 ? 'bg-orange-500/15' : 'bg-zinc-800'}`}>\n <ListChecks className={`w-4 h-4 ${attention.claimableTasks > 0 ? 'text-orange-400' : 'text-zinc-400'}`} />\n </div>\n <div>\n <div className=\"text-lg font-bold\">{attention.claimableTasks}</div>\n <div className=\"text-xs text-muted-foreground\">Claimable waiting</div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Two-column: agents + recent activity */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n {/* Top agents */}\n <Card>\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <Bot className=\"w-4 h-4 text-muted-foreground\" />\n Agents\n <span className=\"ml-auto text-xs text-muted-foreground font-normal\">{recentAgents.length}</span>\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-0 pb-0\">\n <ScrollArea className=\"h-[340px]\">\n {recentAgents.length === 0 ? (\n <div className=\"px-4 pb-4 text-sm text-muted-foreground\">No agents registered.</div>\n ) : (\n <div className=\"space-y-0\">\n {recentAgents.map((agent, i) => (\n <div key={agent.id}>\n {i > 0 && <Separator />}\n <div className=\"flex items-center gap-2.5 px-4 py-2.5 hover:bg-zinc-800/50 transition-colors cursor-pointer\" onClick={() => useRelayStore.getState().openAgentDetail(agent)}>\n <StatusDot agent={agent} now={now} />\n <AgentTypeIcon agent={agent} />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm font-medium truncate\">{displayName(agent)}</div>\n {agent.tags.length > 0 && (\n <div className=\"flex gap-1 mt-0.5 flex-wrap\">\n {agent.tags.slice(0, 2).map((t) => (\n <Badge key={t} variant=\"outline\" className=\"text-[9px] px-1 py-0 h-4\">{t}</Badge>\n ))}\n </div>\n )}\n </div>\n <span className=\"text-xs text-muted-foreground shrink-0\">{timeAgo(now, agent.lastSeen)}</span>\n </div>\n </div>\n ))}\n </div>\n )}\n </ScrollArea>\n </CardContent>\n </Card>\n\n {/* Recent activity */}\n <Card>\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <Activity className=\"w-4 h-4 text-muted-foreground\" />\n Recent Activity\n <span className=\"ml-auto text-xs text-muted-foreground font-normal\">{recentMessages.length}</span>\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-0 pb-0\">\n <ScrollArea className=\"h-[340px]\">\n {recentMessages.length === 0 ? (\n <div className=\"px-4 pb-4 text-sm text-muted-foreground\">No recent messages.</div>\n ) : (\n <div className=\"space-y-0\">\n {recentMessages.map((msg, i) => (\n <div key={msg.id}>\n {i > 0 && <Separator />}\n <div className=\"px-4 py-2.5 hover:bg-zinc-800/50 transition-colors\">\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground mb-0.5\">\n <span className=\"text-foreground font-medium truncate max-w-[100px]\">{displayTarget(msg.from, agentsById)}</span>\n <span>→</span>\n <span className=\"truncate max-w-[100px]\">{displayTarget(msg.to, agentsById)}</span>\n <span className=\"ml-auto shrink-0 tabular-nums\"><span className=\"opacity-40 mr-1\">#{msg.id}</span>{timeAgo(now, msg.createdAt)}</span>\n </div>\n <div className=\"text-xs text-foreground line-clamp-2 leading-snug\">{messagePreview(msg)}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n </ScrollArea>\n </CardContent>\n </Card>\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"overview-CurMUxSA.js","names":[],"sources":["../../dashboard/src/components/views/overview.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useRelayStore, useNow } from '@/store'\nimport { useAttentionSummary, useOnlineCount, useBusyCount } from '@/hooks/use-selectors'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { Separator } from '@/components/ui/separator'\nimport { StatusDot } from '@/components/shared/status-dot'\nimport { AgentTypeIcon } from '@/components/shared/agent-type-icon'\nimport {\n displayName, displayTarget, timeAgo, messagePreview, healthDiagnostics,\n toneToColor, visibleAgents, toTimestamp,\n} from '@/lib/display'\nimport { STATUS_SORT_ORDER } from '@/lib/constants'\nimport {\n Bot, Mail, Link, Inbox, AlertTriangle, Activity,\n Users, MessageSquare, ListChecks,\n} from 'lucide-react'\nimport type { ViewName } from '@/types'\n\nexport function OverviewView() {\n const stats = useRelayStore((s) => s.stats)\n const agents = useRelayStore((s) => s.agents)\n const messages = useRelayStore((s) => s.messages)\n const health = useRelayStore((s) => s.health)\n const now = useNow()\n const agentsById = useRelayStore((s) => s.agentsById)\n const switchView = useRelayStore((s) => s.switchView)\n const runHealthAction = useRelayStore((s) => s.runHealthAction)\n const managedPolicies = useRelayStore((s) => s.managedPolicies)\n\n const showOffline = useRelayStore((s) => s.showOffline)\n\n const onlineCount = useOnlineCount()\n const busyCount = useBusyCount()\n const attention = useAttentionSummary()\n\n const filteredAgents = useMemo(() => {\n let list = visibleAgents(agents, false, managedPolicies)\n if (!showOffline) list = list.filter((a) => a.status !== 'offline')\n return [...list].sort((a, b) => {\n const s = (STATUS_SORT_ORDER[a.status] ?? 9) - (STATUS_SORT_ORDER[b.status] ?? 9)\n return s || toTimestamp(b.lastSeen) - toTimestamp(a.lastSeen)\n })\n }, [agents, showOffline, managedPolicies])\n const recentAgents = filteredAgents.slice(0, 20)\n const recentMessages = [...messages].sort((a, b) => b.id - a.id).slice(0, 15)\n\n const healthIssues =\n health && health.status !== 'ok'\n ? healthDiagnostics(health.checks || [])\n : []\n\n function nav(view: ViewName) {\n switchView(view)\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Stat cards */}\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('agents')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <Users className=\"w-3.5 h-3.5\" />\n Agents\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{filteredAgents.length}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">{onlineCount} online</div>\n </CardContent>\n </Card>\n\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('agents')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <Activity className=\"w-3.5 h-3.5\" />\n Busy\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{busyCount}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">in a turn now</div>\n </CardContent>\n </Card>\n\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('messages')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <MessageSquare className=\"w-3.5 h-3.5\" />\n Messages 24h\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{stats.messagesLast24h ?? '—'}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">last 24 hours</div>\n </CardContent>\n </Card>\n\n <Card className=\"cursor-pointer hover:border-zinc-600 transition-colors\" onClick={() => nav('messages')}>\n <CardHeader className=\"pb-1 pt-4 px-4\">\n <CardTitle className=\"text-xs font-medium text-muted-foreground flex items-center gap-1.5\">\n <Mail className=\"w-3.5 h-3.5\" />\n Total Messages\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4\">\n <div className=\"text-2xl font-bold\">{stats.messages ?? '—'}</div>\n <div className=\"text-xs text-muted-foreground mt-0.5\">all time</div>\n </CardContent>\n </Card>\n </div>\n\n {/* Health alert banner */}\n {healthIssues.length > 0 && (\n <Card className=\"border-yellow-500/40 bg-yellow-500/5\">\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <CardTitle className=\"text-sm font-medium text-yellow-400 flex items-center gap-2\">\n <AlertTriangle className=\"w-4 h-4\" />\n Health Alerts ({healthIssues.length})\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-4 pb-4 space-y-2\">\n {healthIssues.map((issue) => (\n <div key={issue.name} className=\"text-sm space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Badge\n variant=\"outline\"\n className={issue.status === 'error' ? 'border-red-500/40 text-red-400' : 'border-yellow-500/40 text-yellow-400'}\n >\n {issue.status}\n </Badge>\n <span className=\"font-medium\">{issue.name}</span>\n </div>\n <p className=\"text-xs text-muted-foreground\">{issue.detail}</p>\n {issue.subjects.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {issue.subjects.map((subject) => (\n <Badge key={subject.id} variant=\"secondary\" className=\"max-w-full truncate text-[11px]\" title={[subject.id, subject.status, subject.detail].filter(Boolean).join(' · ')}>\n {subject.label || subject.id}\n {subject.status ? ` · ${subject.status}` : ''}\n {subject.detail ? ` · ${subject.detail}` : ''}\n </Badge>\n ))}\n </div>\n )}\n {issue.actions.length > 0 && (\n <div className=\"flex flex-wrap gap-1.5 pt-0.5\">\n {issue.actions.slice(0, 3).map((action) => (\n <button\n key={action.label}\n onClick={() => runHealthAction(action)}\n className=\"text-xs text-blue-400 hover:text-blue-300 underline underline-offset-2\"\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n ))}\n </CardContent>\n </Card>\n )}\n\n {/* Attention shortcuts */}\n <div className=\"grid grid-cols-1 sm:grid-cols-3 gap-4\">\n <Card\n className={`cursor-pointer hover:border-zinc-600 transition-colors ${attention.unreadInbox > 0 ? 'border-red-500/40' : ''}`}\n onClick={() => nav('chat')}\n >\n <CardContent className=\"p-4 flex items-center gap-3\">\n <div className={`p-2 rounded-lg ${attention.unreadInbox > 0 ? 'bg-red-500/15' : 'bg-zinc-800'}`}>\n <Inbox className={`w-4 h-4 ${attention.unreadInbox > 0 ? 'text-red-400' : 'text-zinc-400'}`} />\n </div>\n <div>\n <div className=\"text-lg font-bold\">{attention.unreadInbox}</div>\n <div className=\"text-xs text-muted-foreground\">Unread</div>\n </div>\n </CardContent>\n </Card>\n\n <Card\n className={`cursor-pointer hover:border-zinc-600 transition-colors ${attention.pendingPairInvites > 0 ? 'border-yellow-500/40' : ''}`}\n onClick={() => nav('pairs')}\n >\n <CardContent className=\"p-4 flex items-center gap-3\">\n <div className={`p-2 rounded-lg ${attention.pendingPairInvites > 0 ? 'bg-yellow-500/15' : 'bg-zinc-800'}`}>\n <Link className={`w-4 h-4 ${attention.pendingPairInvites > 0 ? 'text-yellow-400' : 'text-zinc-400'}`} />\n </div>\n <div>\n <div className=\"text-lg font-bold\">{attention.pendingPairInvites}</div>\n <div className=\"text-xs text-muted-foreground\">Pair invites</div>\n </div>\n </CardContent>\n </Card>\n\n <Card\n className={`cursor-pointer hover:border-zinc-600 transition-colors ${attention.claimableTasks > 0 ? 'border-orange-500/40' : ''}`}\n onClick={() => nav('work')}\n >\n <CardContent className=\"p-4 flex items-center gap-3\">\n <div className={`p-2 rounded-lg ${attention.claimableTasks > 0 ? 'bg-orange-500/15' : 'bg-zinc-800'}`}>\n <ListChecks className={`w-4 h-4 ${attention.claimableTasks > 0 ? 'text-orange-400' : 'text-zinc-400'}`} />\n </div>\n <div>\n <div className=\"text-lg font-bold\">{attention.claimableTasks}</div>\n <div className=\"text-xs text-muted-foreground\">Claimable waiting</div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Two-column: agents + recent activity */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n {/* Top agents */}\n <Card>\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <Bot className=\"w-4 h-4 text-muted-foreground\" />\n Agents\n <span className=\"ml-auto text-xs text-muted-foreground font-normal\">{recentAgents.length}</span>\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-0 pb-0\">\n <ScrollArea className=\"h-[340px]\">\n {recentAgents.length === 0 ? (\n <div className=\"px-4 pb-4 text-sm text-muted-foreground\">No agents registered.</div>\n ) : (\n <div className=\"space-y-0\">\n {recentAgents.map((agent, i) => (\n <div key={agent.id}>\n {i > 0 && <Separator />}\n <div className=\"flex items-center gap-2.5 px-4 py-2.5 hover:bg-zinc-800/50 transition-colors cursor-pointer\" onClick={() => useRelayStore.getState().openAgentDetail(agent)}>\n <StatusDot agent={agent} now={now} />\n <AgentTypeIcon agent={agent} />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm font-medium truncate\">{displayName(agent)}</div>\n {agent.tags.length > 0 && (\n <div className=\"flex gap-1 mt-0.5 flex-wrap\">\n {agent.tags.slice(0, 2).map((t) => (\n <Badge key={t} variant=\"outline\" className=\"text-[9px] px-1 py-0 h-4\">{t}</Badge>\n ))}\n </div>\n )}\n </div>\n <span className=\"text-xs text-muted-foreground shrink-0\">{timeAgo(now, agent.lastSeen)}</span>\n </div>\n </div>\n ))}\n </div>\n )}\n </ScrollArea>\n </CardContent>\n </Card>\n\n {/* Recent activity */}\n <Card>\n <CardHeader className=\"pb-2 pt-4 px-4\">\n <CardTitle className=\"text-sm font-medium flex items-center gap-2\">\n <Activity className=\"w-4 h-4 text-muted-foreground\" />\n Recent Activity\n <span className=\"ml-auto text-xs text-muted-foreground font-normal\">{recentMessages.length}</span>\n </CardTitle>\n </CardHeader>\n <CardContent className=\"px-0 pb-0\">\n <ScrollArea className=\"h-[340px]\">\n {recentMessages.length === 0 ? (\n <div className=\"px-4 pb-4 text-sm text-muted-foreground\">No recent messages.</div>\n ) : (\n <div className=\"space-y-0\">\n {recentMessages.map((msg, i) => (\n <div key={msg.id}>\n {i > 0 && <Separator />}\n <div className=\"px-4 py-2.5 hover:bg-zinc-800/50 transition-colors\">\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground mb-0.5\">\n <span className=\"text-foreground font-medium truncate max-w-[100px]\">{displayTarget(msg.from, agentsById)}</span>\n <span>→</span>\n <span className=\"truncate max-w-[100px]\">{displayTarget(msg.to, agentsById)}</span>\n <span className=\"ml-auto shrink-0 tabular-nums\"><span className=\"opacity-40 mr-1\">#{msg.id}</span>{timeAgo(now, msg.createdAt)}</span>\n </div>\n <div className=\"text-xs text-foreground line-clamp-2 leading-snug\">{messagePreview(msg)}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n </ScrollArea>\n </CardContent>\n </Card>\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{$ as e,ct as t,d as n,jn as r,ot as i,xn as a}from"./lucide-react-ChOGD4vc.js";import{o,t as s}from"./store-
|
|
2
|
-
//# sourceMappingURL=pairs-
|
|
1
|
+
import{$ as e,ct as t,d as n,jn as r,ot as i,xn as a}from"./lucide-react-ChOGD4vc.js";import{o,t as s}from"./store-qcA2XXVy.js";import{H as c,d as l,h as u,st as d}from"./display-CXhnBwGf.js";import{t as f}from"./badge-BR4bvEsy.js";import{t as p}from"./button-BwqJZS4O.js";import{s as m}from"./index-C6HByEQl.js";import{n as h,r as g,t as _}from"./card-C7JtSyuM.js";var v=r(),y=[{value:`open`,label:`Active & Pending`},{value:`active`,label:`Active`},{value:`pending`,label:`Pending`},{value:`ended`,label:`Ended`},{value:`rejected`,label:`Rejected`},{value:`expired`,label:`Expired`},{value:``,label:`All`}];function b(){let e=o(),t=s(e=>e.pairs),r=s(e=>e.agentsById),a=s(e=>e.pairStatusFilter),c=s(e=>e.set),u=s(e=>e.fetchPairs),d=s(e=>e.openPairInvite),h=s(e=>e.openPairMessage),g=s(e=>e.doAcceptPair),_=s(e=>e.doRejectPair),b=s(e=>e.doHangupPair),S=t.filter(e=>e.status===`pending`).length;function C(e){c({pairStatusFilter:e}),setTimeout(()=>u(),0)}function w(e){return r[e]?l(r[e]):e.slice(-10)}return(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(i,{className:`w-5 h-5 text-muted-foreground`}),(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Pair Sessions`}),S>0&&(0,v.jsxs)(f,{className:`bg-yellow-500/20 text-yellow-400 border-yellow-500/30 border`,children:[S,` pending`]})]}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(`select`,{className:`rounded-md border border-input bg-background px-3 py-1.5 text-sm`,value:a,onChange:e=>C(e.target.value),children:y.map(e=>(0,v.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,v.jsxs)(p,{size:`sm`,onClick:()=>d(),children:[(0,v.jsx)(n,{className:`w-4 h-4 mr-1`}),` Pair agents`]})]})]}),(0,v.jsx)(m,{className:`h-[calc(100dvh-11rem)]`,children:(0,v.jsxs)(`div`,{className:`space-y-3 pr-2`,children:[t.length===0&&(0,v.jsx)(`div`,{className:`text-center text-muted-foreground py-16 text-sm`,children:`No pair sessions`}),t.map(t=>(0,v.jsx)(x,{pair:t,now:e,agentName:w,onAccept:()=>g(t),onReject:()=>_(t),onMessage:()=>h(t),onHangup:()=>b(t)},t.id))]})})]})}function x({pair:n,now:r,agentName:i,onAccept:o,onReject:s,onMessage:l,onHangup:m}){let y=d[n.status]||`bg-zinc-500/20 text-zinc-400`,b=n.status===`pending`,x=n.status===`active`;return(0,v.jsxs)(_,{children:[(0,v.jsx)(g,{className:`py-3 px-4 pb-0`,children:(0,v.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap flex-1 min-w-0`,children:[(0,v.jsx)(f,{className:`${y} border text-xs`,children:n.status}),(0,v.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm min-w-0`,children:[(0,v.jsx)(`span`,{className:`font-medium truncate max-w-[120px]`,title:n.requesterId,children:i(n.requesterId)}),(0,v.jsx)(a,{className:`w-3.5 h-3.5 text-muted-foreground shrink-0`}),(0,v.jsx)(`span`,{className:`font-medium truncate max-w-[120px]`,title:n.targetId,children:i(n.targetId)})]})]}),(0,v.jsxs)(`div`,{className:`text-right shrink-0`,children:[(0,v.jsx)(`div`,{className:`text-xs font-mono text-muted-foreground/60 truncate max-w-[100px]`,children:n.id.slice(-10)}),(0,v.jsx)(`div`,{className:`text-xs text-muted-foreground`,title:u(n.updatedAt),children:c(r,n.updatedAt)})]})]})}),(0,v.jsxs)(h,{className:`px-4 py-3`,children:[n.objective&&(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground mb-3 line-clamp-2`,children:n.objective}),(0,v.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[b&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(p,{size:`sm`,className:`bg-emerald-600 hover:bg-emerald-700 text-white h-7 text-xs`,onClick:o,children:`Accept`}),(0,v.jsx)(p,{size:`sm`,variant:`outline`,className:`h-7 text-xs text-red-400 hover:text-red-300`,onClick:s,children:`Reject`})]}),x&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(p,{size:`sm`,variant:`outline`,className:`h-7 text-xs`,onClick:l,children:[(0,v.jsx)(e,{className:`w-3.5 h-3.5 mr-1`}),` Message`]}),(0,v.jsxs)(p,{size:`sm`,variant:`outline`,className:`h-7 text-xs text-red-400 hover:text-red-300`,onClick:m,children:[(0,v.jsx)(t,{className:`w-3.5 h-3.5 mr-1`}),` Hang up`]})]})]})]})]})}export{b as PairsView};
|
|
2
|
+
//# sourceMappingURL=pairs-CSga0gZ4.js.map
|