agent-relay-server 0.46.0 → 0.48.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 +67 -1
- package/package.json +2 -2
- package/public/assets/{activity-Dkzmef0Z.js → activity-B7rLbnPy.js} +2 -2
- package/public/assets/{activity-Dkzmef0Z.js.map → activity-B7rLbnPy.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-BVQGIUe8.js} +2 -2
- package/public/assets/{agents-atr6HZ1e.js.map → agents-BVQGIUe8.js.map} +1 -1
- package/public/assets/{analytics-azFfAy4R.js → analytics-BoGZ46xL.js} +2 -2
- package/public/assets/{analytics-azFfAy4R.js.map → analytics-BoGZ46xL.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-DH0gqxI2.js +2 -0
- package/public/assets/{automation-Bk4umHIm.js.map → automation-DH0gqxI2.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-CAg1G_AE.js} +2 -2
- package/public/assets/{chat-DxV4MyYF.js.map → chat-CAg1G_AE.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-Cq3BVd4_.js} +2 -2
- package/public/assets/{formatted-body-impl-LK0QcFLC.js.map → formatted-body-impl-Cq3BVd4_.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-DY-jpX4m.css +2 -0
- package/public/assets/index-DtubrNEq.js +21 -0
- package/public/assets/index-DtubrNEq.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-D9AWKTUT.js +2 -0
- package/public/assets/{insights-DZKCKL71.js.map → insights-D9AWKTUT.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-B4gOLu3O.js} +2 -2
- package/public/assets/{maintenance-DbqSE_ps.js.map → maintenance-B4gOLu3O.js.map} +1 -1
- package/public/assets/{managed-agents-BxhRiBVn.js → managed-agents-BiuAnZXF.js} +2 -2
- package/public/assets/{managed-agents-BxhRiBVn.js.map → managed-agents-BiuAnZXF.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-Dgt126-c.js} +2 -2
- package/public/assets/{markdown-preview-impl-Dz2Spmat.js.map → markdown-preview-impl-Dgt126-c.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-C9ugmii9.js} +2 -2
- package/public/assets/{memory-BTjUKTyA.js.map → memory-C9ugmii9.js.map} +1 -1
- package/public/assets/{messages-C8z05Y3O.js → messages-BTSGjXwT.js} +2 -2
- package/public/assets/{messages-C8z05Y3O.js.map → messages-BTSGjXwT.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-BLbeF61k.js} +2 -2
- package/public/assets/{orchestrators-DQqtYryc.js.map → orchestrators-BLbeF61k.js.map} +1 -1
- package/public/assets/{overview-CGYu6qQr.js → overview-BXtry9lM.js} +2 -2
- package/public/assets/{overview-CGYu6qQr.js.map → overview-BXtry9lM.js.map} +1 -1
- package/public/assets/{pairs-BgqXzCto.js → pairs-lm0CpPLI.js} +2 -2
- package/public/assets/{pairs-BgqXzCto.js.map → pairs-lm0CpPLI.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-D_GiLWK-.js} +2 -2
- package/public/assets/{security-BqfRVw-p.js.map → security-D_GiLWK-.js.map} +1 -1
- package/public/assets/select-Dfy3f6py.js +2 -0
- package/public/assets/select-Dfy3f6py.js.map +1 -0
- package/public/assets/settings-BEHFzRj_.js +10 -0
- package/public/assets/settings-BEHFzRj_.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-D_awpUcE.js} +2 -2
- package/public/assets/{tasks-DiZ_4TYW.js.map → tasks-D_awpUcE.js.map} +1 -1
- package/public/assets/teams-C0INWuQC.js +2 -0
- package/public/assets/teams-C0INWuQC.js.map +1 -0
- package/public/assets/{terminal-viewer-impl-D3T1F77z.js → terminal-viewer-impl-DsxxgYft.js} +2 -2
- package/public/assets/{terminal-viewer-impl-D3T1F77z.js.map → terminal-viewer-impl-DsxxgYft.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-DniyVomK.js} +2 -2
- package/public/assets/{work-queue-C1p2Hybt.js.map → work-queue-DniyVomK.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/migrations.ts +5 -0
- package/src/db/schema.ts +1 -0
- package/src/db/teams.ts +32 -0
- package/src/maintenance.ts +72 -0
- package/src/routes/index.ts +4 -1
- package/src/routes/teams.ts +44 -13
- package/src/services/team.ts +17 -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":"maintenance-DbqSE_ps.js","names":[],"sources":["../../dashboard/src/components/views/maintenance.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { Activity, AlertTriangle, CheckCircle2, Clock3, Play, RefreshCw, Wrench } from 'lucide-react'\nimport { useRelayStore, useNow } from '@/store'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { cn } from '@/lib/utils'\nimport { fmtTime, timeAgo } from '@/lib/display'\nimport type { MaintenanceJob } from '@/types'\n\nconst STATUS_CLASS: Record<string, string> = {\n succeeded: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/30',\n running: 'bg-blue-500/10 text-blue-400 border-blue-500/30',\n failed: 'bg-red-500/10 text-red-400 border-red-500/30',\n idle: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/30',\n disabled: 'bg-zinc-500/10 text-zinc-500 border-zinc-500/20',\n}\n\nexport function MaintenanceView() {\n const now = useNow()\n const jobs = useRelayStore((s) => s.maintenanceJobs)\n const fetchMaintenanceJobs = useRelayStore((s) => s.fetchMaintenanceJobs)\n const runMaintenanceJob = useRelayStore((s) => s.runMaintenanceJob)\n\n const summary = useMemo(() => {\n const failed = jobs.filter((job) => job.lastStatus === 'failed').length\n const running = jobs.filter((job) => job.running || job.lastStatus === 'running').length\n const dueSoon = jobs.filter((job) => job.nextRunAt && job.nextRunAt <= now + 5 * 60 * 1000).length\n return { failed, running, dueSoon }\n }, [jobs, now])\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <Wrench className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold\">Maintenance</h2>\n <Badge variant=\"secondary\">{jobs.length}</Badge>\n {summary.running > 0 && <Badge className=\"border border-blue-500/30 bg-blue-500/10 text-blue-400\">{summary.running} running</Badge>}\n {summary.failed > 0 && <Badge variant=\"destructive\">{summary.failed} failing</Badge>}\n {summary.dueSoon > 0 && <Badge className=\"border border-yellow-500/30 bg-yellow-500/10 text-yellow-400\">{summary.dueSoon} due soon</Badge>}\n </div>\n <Button size=\"sm\" variant=\"outline\" onClick={() => void fetchMaintenanceJobs()}>\n <RefreshCw className=\"h-3.5 w-3.5\" /> Refresh\n </Button>\n </div>\n\n <ScrollArea className=\"h-[calc(100dvh-10rem)]\">\n {jobs.length === 0 ? (\n <div className=\"rounded-md border border-border px-3 py-12 text-center text-sm text-muted-foreground\">No maintenance jobs registered</div>\n ) : (\n <>\n {/* Desktop / wide: full table */}\n <div className=\"hidden overflow-x-auto rounded-md border border-border md:block\">\n <table className=\"w-full min-w-[980px] text-sm\">\n <thead className=\"bg-muted/40 text-xs text-muted-foreground\">\n <tr>\n <th className=\"px-3 py-2 text-left font-medium\">Job</th>\n <th className=\"px-3 py-2 text-left font-medium\">Status</th>\n <th className=\"px-3 py-2 text-left font-medium\">Last run</th>\n <th className=\"px-3 py-2 text-left font-medium\">Next run</th>\n <th className=\"px-3 py-2 text-left font-medium\">Duration</th>\n <th className=\"px-3 py-2 text-left font-medium\">Result</th>\n <th className=\"px-3 py-2 text-right font-medium\">Action</th>\n </tr>\n </thead>\n <tbody>\n {jobs.map((job) => (\n <MaintenanceRow\n key={job.id}\n job={job}\n now={now}\n onRun={() => void runMaintenanceJob(job.id)}\n />\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Mobile / narrow: stacked cards so every field is visible without horizontal scroll */}\n <div className=\"space-y-3 md:hidden\">\n {jobs.map((job) => (\n <MaintenanceCard\n key={job.id}\n job={job}\n now={now}\n onRun={() => void runMaintenanceJob(job.id)}\n />\n ))}\n </div>\n </>\n )}\n </ScrollArea>\n </div>\n )\n}\n\nfunction jobStatus(job: MaintenanceJob): string {\n return job.running ? 'running' : job.enabled ? job.lastStatus : 'disabled'\n}\n\nfunction StatusBadge({ status }: { status: string }) {\n return (\n <Badge variant=\"outline\" className={cn('border', STATUS_CLASS[status] || STATUS_CLASS.idle)}>\n {statusIcon(status)}\n {status}\n </Badge>\n )\n}\n\nfunction MaintenanceCard({ job, now, onRun }: { job: MaintenanceJob; now: number; onRun: () => void }) {\n const status = jobStatus(job)\n return (\n <div className=\"rounded-md border border-border p-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"font-medium\">{job.title}</div>\n <div className=\"mt-0.5 text-xs text-muted-foreground\">{job.description}</div>\n <div className=\"mt-1 font-mono text-[11px] text-muted-foreground/80\">{job.id}</div>\n </div>\n <StatusBadge status={status} />\n </div>\n\n {job.consecutiveFailures > 0 && (\n <div className=\"mt-2 text-xs text-red-400\">{job.consecutiveFailures} failure{job.consecutiveFailures === 1 ? '' : 's'}</div>\n )}\n\n <dl className=\"mt-3 grid grid-cols-3 gap-2 text-xs\">\n <div>\n <dt className=\"text-muted-foreground\">Last run</dt>\n <dd>{job.lastRunAt ? <span title={fmtTime(job.lastRunAt)}>{timeAgo(now, job.lastRunAt)}</span> : 'never'}</dd>\n </div>\n <div>\n <dt className=\"text-muted-foreground\">Next run</dt>\n <dd>{job.nextRunAt ? <span title={fmtTime(job.nextRunAt)}>{nextRunText(now, job.nextRunAt)}</span> : '-'}</dd>\n </div>\n <div>\n <dt className=\"text-muted-foreground\">Duration</dt>\n <dd>{job.lastDurationMs !== undefined ? `${job.lastDurationMs}ms` : '-'}</dd>\n </div>\n </dl>\n\n <div className=\"mt-3\">\n <div className=\"text-xs text-muted-foreground\">Result</div>\n {job.lastError ? (\n <div className=\"mt-0.5 text-xs text-red-400 line-clamp-3\">{job.lastError}</div>\n ) : (\n <div className=\"mt-0.5 font-mono text-[11px] text-muted-foreground line-clamp-3\">{resultSummary(job)}</div>\n )}\n </div>\n\n <div className=\"mt-3 flex justify-end\">\n <Button size=\"sm\" variant=\"outline\" disabled={!job.enabled || job.running} onClick={onRun}>\n <Play className=\"h-3.5 w-3.5\" /> Run\n </Button>\n </div>\n </div>\n )\n}\n\nfunction MaintenanceRow({ job, now, onRun }: { job: MaintenanceJob; now: number; onRun: () => void }) {\n const status = jobStatus(job)\n return (\n <tr className=\"border-t border-border align-top\">\n <td className=\"px-3 py-3\">\n <div className=\"font-medium\">{job.title}</div>\n <div className=\"mt-0.5 max-w-md text-xs text-muted-foreground\">{job.description}</div>\n <div className=\"mt-1 font-mono text-[11px] text-muted-foreground/80\">{job.id}</div>\n </td>\n <td className=\"px-3 py-3\">\n <StatusBadge status={status} />\n {job.consecutiveFailures > 0 && (\n <div className=\"mt-1 text-xs text-red-400\">{job.consecutiveFailures} failure{job.consecutiveFailures === 1 ? '' : 's'}</div>\n )}\n </td>\n <td className=\"px-3 py-3 text-xs text-muted-foreground\">\n {job.lastRunAt ? (\n <span title={fmtTime(job.lastRunAt)}>{timeAgo(now, job.lastRunAt)}</span>\n ) : 'never'}\n </td>\n <td className=\"px-3 py-3 text-xs text-muted-foreground\">\n {job.nextRunAt ? (\n <span title={fmtTime(job.nextRunAt)}>{nextRunText(now, job.nextRunAt)}</span>\n ) : '-'}\n </td>\n <td className=\"px-3 py-3 text-xs text-muted-foreground\">\n {job.lastDurationMs !== undefined ? `${job.lastDurationMs}ms` : '-'}\n </td>\n <td className=\"px-3 py-3\">\n {job.lastError ? (\n <div className=\"max-w-sm text-xs text-red-400 line-clamp-3\">{job.lastError}</div>\n ) : (\n <div className=\"max-w-sm font-mono text-[11px] text-muted-foreground line-clamp-3\">{resultSummary(job)}</div>\n )}\n </td>\n <td className=\"px-3 py-3 text-right\">\n <Button size=\"sm\" variant=\"outline\" disabled={!job.enabled || job.running} onClick={onRun}>\n <Play className=\"h-3.5 w-3.5\" /> Run\n </Button>\n </td>\n </tr>\n )\n}\n\nfunction statusIcon(status: string) {\n if (status === 'succeeded') return <CheckCircle2 className=\"mr-1 h-3 w-3\" />\n if (status === 'running') return <Activity className=\"mr-1 h-3 w-3\" />\n if (status === 'failed') return <AlertTriangle className=\"mr-1 h-3 w-3\" />\n return <Clock3 className=\"mr-1 h-3 w-3\" />\n}\n\nfunction resultSummary(job: MaintenanceJob): string {\n if (!job.lastResult) return '-'\n const entries = Object.entries(job.lastResult)\n .filter(([, value]) => Array.isArray(value) ? value.length > 0 : value !== undefined && value !== null && value !== 0)\n .map(([key, value]) => `${key}: ${Array.isArray(value) ? value.length : String(value)}`)\n return entries.length ? entries.join(', ') : 'no changes'\n}\n\nfunction nextRunText(now: number, nextRunAt: number): string {\n if (nextRunAt <= now) return 'due now'\n const diff = Math.max(0, (nextRunAt - now) / 1000)\n if (diff < 60) return `in ${Math.ceil(diff)}s`\n if (diff < 3600) return `in ${Math.ceil(diff / 60)}m`\n if (diff < 86400) return `in ${Math.ceil(diff / 3600)}h`\n return `in ${Math.ceil(diff / 86400)}d`\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"maintenance-B4gOLu3O.js","names":[],"sources":["../../dashboard/src/components/views/maintenance.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { Activity, AlertTriangle, CheckCircle2, Clock3, Play, RefreshCw, Wrench } from 'lucide-react'\nimport { useRelayStore, useNow } from '@/store'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { ScrollArea } from '@/components/ui/scroll-area'\nimport { cn } from '@/lib/utils'\nimport { fmtTime, timeAgo } from '@/lib/display'\nimport type { MaintenanceJob } from '@/types'\n\nconst STATUS_CLASS: Record<string, string> = {\n succeeded: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/30',\n running: 'bg-blue-500/10 text-blue-400 border-blue-500/30',\n failed: 'bg-red-500/10 text-red-400 border-red-500/30',\n idle: 'bg-zinc-500/10 text-zinc-400 border-zinc-500/30',\n disabled: 'bg-zinc-500/10 text-zinc-500 border-zinc-500/20',\n}\n\nexport function MaintenanceView() {\n const now = useNow()\n const jobs = useRelayStore((s) => s.maintenanceJobs)\n const fetchMaintenanceJobs = useRelayStore((s) => s.fetchMaintenanceJobs)\n const runMaintenanceJob = useRelayStore((s) => s.runMaintenanceJob)\n\n const summary = useMemo(() => {\n const failed = jobs.filter((job) => job.lastStatus === 'failed').length\n const running = jobs.filter((job) => job.running || job.lastStatus === 'running').length\n const dueSoon = jobs.filter((job) => job.nextRunAt && job.nextRunAt <= now + 5 * 60 * 1000).length\n return { failed, running, dueSoon }\n }, [jobs, now])\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between flex-wrap gap-2\">\n <div className=\"flex items-center gap-2 min-w-0\">\n <Wrench className=\"h-5 w-5 text-muted-foreground\" />\n <h2 className=\"text-lg font-semibold\">Maintenance</h2>\n <Badge variant=\"secondary\">{jobs.length}</Badge>\n {summary.running > 0 && <Badge className=\"border border-blue-500/30 bg-blue-500/10 text-blue-400\">{summary.running} running</Badge>}\n {summary.failed > 0 && <Badge variant=\"destructive\">{summary.failed} failing</Badge>}\n {summary.dueSoon > 0 && <Badge className=\"border border-yellow-500/30 bg-yellow-500/10 text-yellow-400\">{summary.dueSoon} due soon</Badge>}\n </div>\n <Button size=\"sm\" variant=\"outline\" onClick={() => void fetchMaintenanceJobs()}>\n <RefreshCw className=\"h-3.5 w-3.5\" /> Refresh\n </Button>\n </div>\n\n <ScrollArea className=\"h-[calc(100dvh-10rem)]\">\n {jobs.length === 0 ? (\n <div className=\"rounded-md border border-border px-3 py-12 text-center text-sm text-muted-foreground\">No maintenance jobs registered</div>\n ) : (\n <>\n {/* Desktop / wide: full table */}\n <div className=\"hidden overflow-x-auto rounded-md border border-border md:block\">\n <table className=\"w-full min-w-[980px] text-sm\">\n <thead className=\"bg-muted/40 text-xs text-muted-foreground\">\n <tr>\n <th className=\"px-3 py-2 text-left font-medium\">Job</th>\n <th className=\"px-3 py-2 text-left font-medium\">Status</th>\n <th className=\"px-3 py-2 text-left font-medium\">Last run</th>\n <th className=\"px-3 py-2 text-left font-medium\">Next run</th>\n <th className=\"px-3 py-2 text-left font-medium\">Duration</th>\n <th className=\"px-3 py-2 text-left font-medium\">Result</th>\n <th className=\"px-3 py-2 text-right font-medium\">Action</th>\n </tr>\n </thead>\n <tbody>\n {jobs.map((job) => (\n <MaintenanceRow\n key={job.id}\n job={job}\n now={now}\n onRun={() => void runMaintenanceJob(job.id)}\n />\n ))}\n </tbody>\n </table>\n </div>\n\n {/* Mobile / narrow: stacked cards so every field is visible without horizontal scroll */}\n <div className=\"space-y-3 md:hidden\">\n {jobs.map((job) => (\n <MaintenanceCard\n key={job.id}\n job={job}\n now={now}\n onRun={() => void runMaintenanceJob(job.id)}\n />\n ))}\n </div>\n </>\n )}\n </ScrollArea>\n </div>\n )\n}\n\nfunction jobStatus(job: MaintenanceJob): string {\n return job.running ? 'running' : job.enabled ? job.lastStatus : 'disabled'\n}\n\nfunction StatusBadge({ status }: { status: string }) {\n return (\n <Badge variant=\"outline\" className={cn('border', STATUS_CLASS[status] || STATUS_CLASS.idle)}>\n {statusIcon(status)}\n {status}\n </Badge>\n )\n}\n\nfunction MaintenanceCard({ job, now, onRun }: { job: MaintenanceJob; now: number; onRun: () => void }) {\n const status = jobStatus(job)\n return (\n <div className=\"rounded-md border border-border p-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"font-medium\">{job.title}</div>\n <div className=\"mt-0.5 text-xs text-muted-foreground\">{job.description}</div>\n <div className=\"mt-1 font-mono text-[11px] text-muted-foreground/80\">{job.id}</div>\n </div>\n <StatusBadge status={status} />\n </div>\n\n {job.consecutiveFailures > 0 && (\n <div className=\"mt-2 text-xs text-red-400\">{job.consecutiveFailures} failure{job.consecutiveFailures === 1 ? '' : 's'}</div>\n )}\n\n <dl className=\"mt-3 grid grid-cols-3 gap-2 text-xs\">\n <div>\n <dt className=\"text-muted-foreground\">Last run</dt>\n <dd>{job.lastRunAt ? <span title={fmtTime(job.lastRunAt)}>{timeAgo(now, job.lastRunAt)}</span> : 'never'}</dd>\n </div>\n <div>\n <dt className=\"text-muted-foreground\">Next run</dt>\n <dd>{job.nextRunAt ? <span title={fmtTime(job.nextRunAt)}>{nextRunText(now, job.nextRunAt)}</span> : '-'}</dd>\n </div>\n <div>\n <dt className=\"text-muted-foreground\">Duration</dt>\n <dd>{job.lastDurationMs !== undefined ? `${job.lastDurationMs}ms` : '-'}</dd>\n </div>\n </dl>\n\n <div className=\"mt-3\">\n <div className=\"text-xs text-muted-foreground\">Result</div>\n {job.lastError ? (\n <div className=\"mt-0.5 text-xs text-red-400 line-clamp-3\">{job.lastError}</div>\n ) : (\n <div className=\"mt-0.5 font-mono text-[11px] text-muted-foreground line-clamp-3\">{resultSummary(job)}</div>\n )}\n </div>\n\n <div className=\"mt-3 flex justify-end\">\n <Button size=\"sm\" variant=\"outline\" disabled={!job.enabled || job.running} onClick={onRun}>\n <Play className=\"h-3.5 w-3.5\" /> Run\n </Button>\n </div>\n </div>\n )\n}\n\nfunction MaintenanceRow({ job, now, onRun }: { job: MaintenanceJob; now: number; onRun: () => void }) {\n const status = jobStatus(job)\n return (\n <tr className=\"border-t border-border align-top\">\n <td className=\"px-3 py-3\">\n <div className=\"font-medium\">{job.title}</div>\n <div className=\"mt-0.5 max-w-md text-xs text-muted-foreground\">{job.description}</div>\n <div className=\"mt-1 font-mono text-[11px] text-muted-foreground/80\">{job.id}</div>\n </td>\n <td className=\"px-3 py-3\">\n <StatusBadge status={status} />\n {job.consecutiveFailures > 0 && (\n <div className=\"mt-1 text-xs text-red-400\">{job.consecutiveFailures} failure{job.consecutiveFailures === 1 ? '' : 's'}</div>\n )}\n </td>\n <td className=\"px-3 py-3 text-xs text-muted-foreground\">\n {job.lastRunAt ? (\n <span title={fmtTime(job.lastRunAt)}>{timeAgo(now, job.lastRunAt)}</span>\n ) : 'never'}\n </td>\n <td className=\"px-3 py-3 text-xs text-muted-foreground\">\n {job.nextRunAt ? (\n <span title={fmtTime(job.nextRunAt)}>{nextRunText(now, job.nextRunAt)}</span>\n ) : '-'}\n </td>\n <td className=\"px-3 py-3 text-xs text-muted-foreground\">\n {job.lastDurationMs !== undefined ? `${job.lastDurationMs}ms` : '-'}\n </td>\n <td className=\"px-3 py-3\">\n {job.lastError ? (\n <div className=\"max-w-sm text-xs text-red-400 line-clamp-3\">{job.lastError}</div>\n ) : (\n <div className=\"max-w-sm font-mono text-[11px] text-muted-foreground line-clamp-3\">{resultSummary(job)}</div>\n )}\n </td>\n <td className=\"px-3 py-3 text-right\">\n <Button size=\"sm\" variant=\"outline\" disabled={!job.enabled || job.running} onClick={onRun}>\n <Play className=\"h-3.5 w-3.5\" /> Run\n </Button>\n </td>\n </tr>\n )\n}\n\nfunction statusIcon(status: string) {\n if (status === 'succeeded') return <CheckCircle2 className=\"mr-1 h-3 w-3\" />\n if (status === 'running') return <Activity className=\"mr-1 h-3 w-3\" />\n if (status === 'failed') return <AlertTriangle className=\"mr-1 h-3 w-3\" />\n return <Clock3 className=\"mr-1 h-3 w-3\" />\n}\n\nfunction resultSummary(job: MaintenanceJob): string {\n if (!job.lastResult) return '-'\n const entries = Object.entries(job.lastResult)\n .filter(([, value]) => Array.isArray(value) ? value.length > 0 : value !== undefined && value !== null && value !== 0)\n .map(([key, value]) => `${key}: ${Array.isArray(value) ? value.length : String(value)}`)\n return entries.length ? entries.join(', ') : 'no changes'\n}\n\nfunction nextRunText(now: number, nextRunAt: number): string {\n if (nextRunAt <= now) return 'due now'\n const diff = Math.max(0, (nextRunAt - now) / 1000)\n if (diff < 60) return `in ${Math.ceil(diff)}s`\n if (diff < 3600) return `in ${Math.ceil(diff / 60)}m`\n if (diff < 86400) return `in ${Math.ceil(diff / 3600)}h`\n return `in ${Math.ceil(diff / 86400)}d`\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./chunk-CilyBKbf.js";import{I as t,R as n,Un as r,g as i,jn as a,k as o,kn as s,kt as c,m as l,y as u,z as d}from"./lucide-react-ChOGD4vc.js";import{t as f}from"./store-
|
|
2
|
-
//# sourceMappingURL=managed-agents-
|
|
1
|
+
import{r as e}from"./chunk-CilyBKbf.js";import{I as t,R as n,Un as r,g as i,jn as a,k as o,kn as s,kt as c,m as l,y as u,z as d}from"./lucide-react-ChOGD4vc.js";import{t as f}from"./store-qcA2XXVy.js";import{h as p}from"./display-CXhnBwGf.js";import{t as m}from"./button-BwqJZS4O.js";import{f as h,p as g}from"./index-DtubrNEq.js";var _=e(r(),1),v=a(),y={running:`bg-emerald-500/15 text-emerald-400 border-emerald-500/30`,starting:`bg-blue-500/15 text-blue-400 border-blue-500/30`,stopping:`bg-yellow-500/15 text-yellow-400 border-yellow-500/30`,backoff:`bg-red-500/15 text-red-400 border-red-500/30`,failed:`bg-red-500/15 text-red-400 border-red-500/30`,stopped:`bg-muted text-muted-foreground border-border`};function b({status:e}){return(0,v.jsx)(`span`,{className:s(`inline-flex items-center rounded border px-2 py-0.5 text-xs font-medium`,y[e]),children:e})}function x(e,t){let n=t?.meta?.tmuxSession;return typeof n==`string`&&n.trim()?n:e.state.tmuxSession}function S(e,t){return x(e,t)?t?!!t.providerCapabilities?.terminal?.live?.read:e.policy.provider===`claude`:!1}function C(e,t){return S(e,t)?t?!!(t.providerCapabilities?.terminal?.live?.write||e.policy.provider===`claude`):e.policy.provider===`claude`:!1}function w(){let e=f(e=>e.managedPolicies),r=f(e=>e.agentsById),a=f(e=>e.fetchManagedPolicies),s=f(e=>e.apiCall),y=f(e=>e.openPolicyCreate),w=f(e=>e.openPolicyEdit),T=f(e=>e.deletePolicy),[E,D]=(0,_.useState)(null),[O,k]=(0,_.useState)(null);(0,_.useEffect)(()=>{a()},[]);async function A(e,t){await s(`POST`,`/spawn-policy/${encodeURIComponent(e)}/${t}`,{surface:{component:`managed-agents`}}),await a()}return(0,v.jsxs)(`div`,{className:`space-y-4`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsxs)(`div`,{children:[(0,v.jsx)(`h1`,{className:`text-2xl font-semibold`,children:`Managed Agents`}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Spawn policies, lifecycle state, and headless session logs.`})]}),(0,v.jsxs)(m,{onClick:y,size:`sm`,children:[(0,v.jsx)(t,{className:`h-4 w-4 mr-1`}),`Create Policy`]})]}),e.length===0&&(0,v.jsx)(`div`,{className:`rounded-md border border-border px-3 py-8 text-center text-sm text-muted-foreground`,children:`No managed agents configured`}),(0,v.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:e.map(e=>{let t=e.state.agentId?r[e.state.agentId]:void 0,a=x(e,t);return(0,v.jsxs)(`div`,{className:`rounded-md border border-border bg-card p-3 space-y-2`,children:[(0,v.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsx)(`div`,{className:`font-medium text-sm truncate`,children:e.policy.label||e.policy.name}),(0,v.jsxs)(`div`,{className:`text-xs text-muted-foreground truncate`,children:[e.policy.mode,` · `,e.policy.cwd]})]}),(0,v.jsx)(b,{status:e.state.status})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-1 text-xs`,children:[(0,v.jsx)(`div`,{className:`text-muted-foreground`,children:`Provider`}),(0,v.jsx)(`div`,{children:e.policy.provider}),(0,v.jsx)(`div`,{className:`text-muted-foreground`,children:`Agent`}),(0,v.jsx)(`div`,{className:`font-mono truncate`,children:e.state.agentId||`-`}),(0,v.jsx)(`div`,{className:`text-muted-foreground`,children:`Restarts`}),(0,v.jsx)(`div`,{children:e.state.restartCount}),(e.state.backoffUntil||e.state.lastError)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`text-muted-foreground`,children:e.state.backoffUntil?`Backoff`:`Error`}),(0,v.jsx)(`div`,{className:`truncate`,children:e.state.backoffUntil?p(e.state.backoffUntil):e.state.lastError})]})]}),(0,v.jsxs)(`div`,{className:`flex flex-wrap gap-1 pt-1 border-t border-border`,children:[(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>A(e.policy.name,`start`),title:`Start`,children:(0,v.jsx)(n,{className:`h-3.5 w-3.5`})}),(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>A(e.policy.name,`stop`),title:`Stop`,children:(0,v.jsx)(u,{className:`h-3.5 w-3.5`})}),(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>A(e.policy.name,`restart`),title:`Restart`,children:(0,v.jsx)(o,{className:`h-3.5 w-3.5`})}),(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>D(e),disabled:!e.state.tmuxSession,title:`Logs`,children:(0,v.jsx)(c,{className:`h-3.5 w-3.5`})}),(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>a&&k({item:e,session:a}),disabled:!S(e,t),title:`Terminal`,children:(0,v.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>w(e.policy),title:`Edit`,children:(0,v.jsx)(d,{className:`h-3.5 w-3.5`})}),(0,v.jsx)(m,{size:`icon`,variant:`outline`,className:`h-7 w-7`,onClick:()=>T(e.policy.name),title:`Delete`,children:(0,v.jsx)(l,{className:`h-3.5 w-3.5`})})]})]},e.policy.name)})}),E?.state.tmuxSession&&(0,v.jsxs)(`div`,{className:`space-y-2`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,v.jsxs)(`h2`,{className:`text-lg font-semibold`,children:[E.policy.name,` Logs`]}),(0,v.jsx)(m,{variant:`outline`,size:`sm`,onClick:()=>D(null),children:`Close`})]}),(0,v.jsx)(h,{orchestratorId:E.policy.orchestratorId,session:E.state.tmuxSession})]}),(0,v.jsx)(g,{open:!!O,onOpenChange:e=>{e||k(null)},orchestratorId:O?.item.policy.orchestratorId??``,session:O?.session??``,interactive:O?C(O.item,O.item.state.agentId?r[O.item.state.agentId]:void 0):!1})]})}export{w as ManagedAgentsView};
|
|
2
|
+
//# sourceMappingURL=managed-agents-BiuAnZXF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-agents-BxhRiBVn.js","names":[],"sources":["../../dashboard/src/components/shared/health-badge.tsx","../../dashboard/src/components/views/managed-agents.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ManagedAgentLifecycleStatus } from '@/types'\n\nconst styles: Record<ManagedAgentLifecycleStatus, string> = {\n running: 'bg-emerald-500/15 text-emerald-400 border-emerald-500/30',\n starting: 'bg-blue-500/15 text-blue-400 border-blue-500/30',\n stopping: 'bg-yellow-500/15 text-yellow-400 border-yellow-500/30',\n backoff: 'bg-red-500/15 text-red-400 border-red-500/30',\n failed: 'bg-red-500/15 text-red-400 border-red-500/30',\n stopped: 'bg-muted text-muted-foreground border-border',\n}\n\nexport function HealthBadge({ status }: { status: ManagedAgentLifecycleStatus }) {\n return (\n <span className={cn('inline-flex items-center rounded border px-2 py-0.5 text-xs font-medium', styles[status])}>\n {status}\n </span>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { FileText, Pencil, Play, Plus, RotateCw, Square, Terminal, Trash2 } from 'lucide-react'\nimport { useRelayStore } from '@/store'\nimport { Button } from '@/components/ui/button'\nimport { HealthBadge } from '@/components/shared/health-badge'\nimport { LogViewer } from '@/components/shared/log-viewer'\nimport { TerminalDialog } from '@/components/shared/terminal-viewer'\nimport { fmtTime } from '@/lib/display'\nimport type { Agent, ManagedPolicyHealth } from '@/types'\n\nfunction terminalSessionFor(item: ManagedPolicyHealth, agent?: Agent): string | undefined {\n const agentSession = agent?.meta?.tmuxSession\n if (typeof agentSession === 'string' && agentSession.trim()) return agentSession\n return item.state.tmuxSession\n}\n\nfunction canReadTerminal(item: ManagedPolicyHealth, agent?: Agent): boolean {\n if (!terminalSessionFor(item, agent)) return false\n if (agent) return Boolean(agent.providerCapabilities?.terminal?.live?.read)\n return item.policy.provider === 'claude'\n}\n\nfunction canWriteTerminal(item: ManagedPolicyHealth, agent?: Agent): boolean {\n if (!canReadTerminal(item, agent)) return false\n if (agent) return Boolean(agent.providerCapabilities?.terminal?.live?.write || item.policy.provider === 'claude')\n return item.policy.provider === 'claude'\n}\n\nexport function ManagedAgentsView() {\n const policies = useRelayStore((s) => s.managedPolicies)\n const agentsById = useRelayStore((s) => s.agentsById)\n const fetchManagedPolicies = useRelayStore((s) => s.fetchManagedPolicies)\n const apiCall = useRelayStore((s) => s.apiCall)\n const openPolicyCreate = useRelayStore((s) => s.openPolicyCreate)\n const openPolicyEdit = useRelayStore((s) => s.openPolicyEdit)\n const deletePolicy = useRelayStore((s) => s.deletePolicy)\n const [logsFor, setLogsFor] = useState<ManagedPolicyHealth | null>(null)\n const [terminalFor, setTerminalFor] = useState<{ item: ManagedPolicyHealth; session: string } | null>(null)\n\n useEffect(() => {\n void fetchManagedPolicies()\n }, [])\n\n async function lifecycle(name: string, action: 'start' | 'stop' | 'restart') {\n await apiCall('POST', `/spawn-policy/${encodeURIComponent(name)}/${action}`, { surface: { component: 'managed-agents' } })\n await fetchManagedPolicies()\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Managed Agents</h1>\n <p className=\"text-sm text-muted-foreground\">Spawn policies, lifecycle state, and headless session logs.</p>\n </div>\n <Button onClick={openPolicyCreate} size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n Create Policy\n </Button>\n </div>\n\n {policies.length === 0 && (\n <div className=\"rounded-md border border-border px-3 py-8 text-center text-sm text-muted-foreground\">\n No managed agents configured\n </div>\n )}\n\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {policies.map((item) => {\n const agent = item.state.agentId ? agentsById[item.state.agentId] : undefined\n const terminalSession = terminalSessionFor(item, agent)\n return (\n <div key={item.policy.name} className=\"rounded-md border border-border bg-card p-3 space-y-2\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"font-medium text-sm truncate\">{item.policy.label || item.policy.name}</div>\n <div className=\"text-xs text-muted-foreground truncate\">{item.policy.mode} · {item.policy.cwd}</div>\n </div>\n <HealthBadge status={item.state.status} />\n </div>\n\n <div className=\"grid grid-cols-2 gap-x-4 gap-y-1 text-xs\">\n <div className=\"text-muted-foreground\">Provider</div>\n <div>{item.policy.provider}</div>\n <div className=\"text-muted-foreground\">Agent</div>\n <div className=\"font-mono truncate\">{item.state.agentId || '-'}</div>\n <div className=\"text-muted-foreground\">Restarts</div>\n <div>{item.state.restartCount}</div>\n {(item.state.backoffUntil || item.state.lastError) && (\n <>\n <div className=\"text-muted-foreground\">{item.state.backoffUntil ? 'Backoff' : 'Error'}</div>\n <div className=\"truncate\">{item.state.backoffUntil ? fmtTime(item.state.backoffUntil) : item.state.lastError}</div>\n </>\n )}\n </div>\n\n <div className=\"flex flex-wrap gap-1 pt-1 border-t border-border\">\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => lifecycle(item.policy.name, 'start')} title=\"Start\"><Play className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => lifecycle(item.policy.name, 'stop')} title=\"Stop\"><Square className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => lifecycle(item.policy.name, 'restart')} title=\"Restart\"><RotateCw className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => setLogsFor(item)} disabled={!item.state.tmuxSession} title=\"Logs\"><FileText className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => terminalSession && setTerminalFor({ item, session: terminalSession })} disabled={!canReadTerminal(item, agent)} title=\"Terminal\"><Terminal className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => openPolicyEdit(item.policy)} title=\"Edit\"><Pencil className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => deletePolicy(item.policy.name)} title=\"Delete\"><Trash2 className=\"h-3.5 w-3.5\" /></Button>\n </div>\n </div>\n )\n })}\n </div>\n\n {logsFor?.state.tmuxSession && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold\">{logsFor.policy.name} Logs</h2>\n <Button variant=\"outline\" size=\"sm\" onClick={() => setLogsFor(null)}>Close</Button>\n </div>\n <LogViewer orchestratorId={logsFor.policy.orchestratorId} session={logsFor.state.tmuxSession} />\n </div>\n )}\n\n <TerminalDialog\n open={!!terminalFor}\n onOpenChange={(open) => { if (!open) setTerminalFor(null) }}\n orchestratorId={terminalFor?.item.policy.orchestratorId ?? ''}\n session={terminalFor?.session ?? ''}\n interactive={terminalFor ? canWriteTerminal(terminalFor.item, terminalFor.item.state.agentId ? agentsById[terminalFor.item.state.agentId] : undefined) : false}\n />\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"managed-agents-BiuAnZXF.js","names":[],"sources":["../../dashboard/src/components/shared/health-badge.tsx","../../dashboard/src/components/views/managed-agents.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ManagedAgentLifecycleStatus } from '@/types'\n\nconst styles: Record<ManagedAgentLifecycleStatus, string> = {\n running: 'bg-emerald-500/15 text-emerald-400 border-emerald-500/30',\n starting: 'bg-blue-500/15 text-blue-400 border-blue-500/30',\n stopping: 'bg-yellow-500/15 text-yellow-400 border-yellow-500/30',\n backoff: 'bg-red-500/15 text-red-400 border-red-500/30',\n failed: 'bg-red-500/15 text-red-400 border-red-500/30',\n stopped: 'bg-muted text-muted-foreground border-border',\n}\n\nexport function HealthBadge({ status }: { status: ManagedAgentLifecycleStatus }) {\n return (\n <span className={cn('inline-flex items-center rounded border px-2 py-0.5 text-xs font-medium', styles[status])}>\n {status}\n </span>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { FileText, Pencil, Play, Plus, RotateCw, Square, Terminal, Trash2 } from 'lucide-react'\nimport { useRelayStore } from '@/store'\nimport { Button } from '@/components/ui/button'\nimport { HealthBadge } from '@/components/shared/health-badge'\nimport { LogViewer } from '@/components/shared/log-viewer'\nimport { TerminalDialog } from '@/components/shared/terminal-viewer'\nimport { fmtTime } from '@/lib/display'\nimport type { Agent, ManagedPolicyHealth } from '@/types'\n\nfunction terminalSessionFor(item: ManagedPolicyHealth, agent?: Agent): string | undefined {\n const agentSession = agent?.meta?.tmuxSession\n if (typeof agentSession === 'string' && agentSession.trim()) return agentSession\n return item.state.tmuxSession\n}\n\nfunction canReadTerminal(item: ManagedPolicyHealth, agent?: Agent): boolean {\n if (!terminalSessionFor(item, agent)) return false\n if (agent) return Boolean(agent.providerCapabilities?.terminal?.live?.read)\n return item.policy.provider === 'claude'\n}\n\nfunction canWriteTerminal(item: ManagedPolicyHealth, agent?: Agent): boolean {\n if (!canReadTerminal(item, agent)) return false\n if (agent) return Boolean(agent.providerCapabilities?.terminal?.live?.write || item.policy.provider === 'claude')\n return item.policy.provider === 'claude'\n}\n\nexport function ManagedAgentsView() {\n const policies = useRelayStore((s) => s.managedPolicies)\n const agentsById = useRelayStore((s) => s.agentsById)\n const fetchManagedPolicies = useRelayStore((s) => s.fetchManagedPolicies)\n const apiCall = useRelayStore((s) => s.apiCall)\n const openPolicyCreate = useRelayStore((s) => s.openPolicyCreate)\n const openPolicyEdit = useRelayStore((s) => s.openPolicyEdit)\n const deletePolicy = useRelayStore((s) => s.deletePolicy)\n const [logsFor, setLogsFor] = useState<ManagedPolicyHealth | null>(null)\n const [terminalFor, setTerminalFor] = useState<{ item: ManagedPolicyHealth; session: string } | null>(null)\n\n useEffect(() => {\n void fetchManagedPolicies()\n }, [])\n\n async function lifecycle(name: string, action: 'start' | 'stop' | 'restart') {\n await apiCall('POST', `/spawn-policy/${encodeURIComponent(name)}/${action}`, { surface: { component: 'managed-agents' } })\n await fetchManagedPolicies()\n }\n\n return (\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold\">Managed Agents</h1>\n <p className=\"text-sm text-muted-foreground\">Spawn policies, lifecycle state, and headless session logs.</p>\n </div>\n <Button onClick={openPolicyCreate} size=\"sm\">\n <Plus className=\"h-4 w-4 mr-1\" />\n Create Policy\n </Button>\n </div>\n\n {policies.length === 0 && (\n <div className=\"rounded-md border border-border px-3 py-8 text-center text-sm text-muted-foreground\">\n No managed agents configured\n </div>\n )}\n\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {policies.map((item) => {\n const agent = item.state.agentId ? agentsById[item.state.agentId] : undefined\n const terminalSession = terminalSessionFor(item, agent)\n return (\n <div key={item.policy.name} className=\"rounded-md border border-border bg-card p-3 space-y-2\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"font-medium text-sm truncate\">{item.policy.label || item.policy.name}</div>\n <div className=\"text-xs text-muted-foreground truncate\">{item.policy.mode} · {item.policy.cwd}</div>\n </div>\n <HealthBadge status={item.state.status} />\n </div>\n\n <div className=\"grid grid-cols-2 gap-x-4 gap-y-1 text-xs\">\n <div className=\"text-muted-foreground\">Provider</div>\n <div>{item.policy.provider}</div>\n <div className=\"text-muted-foreground\">Agent</div>\n <div className=\"font-mono truncate\">{item.state.agentId || '-'}</div>\n <div className=\"text-muted-foreground\">Restarts</div>\n <div>{item.state.restartCount}</div>\n {(item.state.backoffUntil || item.state.lastError) && (\n <>\n <div className=\"text-muted-foreground\">{item.state.backoffUntil ? 'Backoff' : 'Error'}</div>\n <div className=\"truncate\">{item.state.backoffUntil ? fmtTime(item.state.backoffUntil) : item.state.lastError}</div>\n </>\n )}\n </div>\n\n <div className=\"flex flex-wrap gap-1 pt-1 border-t border-border\">\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => lifecycle(item.policy.name, 'start')} title=\"Start\"><Play className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => lifecycle(item.policy.name, 'stop')} title=\"Stop\"><Square className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => lifecycle(item.policy.name, 'restart')} title=\"Restart\"><RotateCw className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => setLogsFor(item)} disabled={!item.state.tmuxSession} title=\"Logs\"><FileText className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => terminalSession && setTerminalFor({ item, session: terminalSession })} disabled={!canReadTerminal(item, agent)} title=\"Terminal\"><Terminal className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => openPolicyEdit(item.policy)} title=\"Edit\"><Pencil className=\"h-3.5 w-3.5\" /></Button>\n <Button size=\"icon\" variant=\"outline\" className=\"h-7 w-7\" onClick={() => deletePolicy(item.policy.name)} title=\"Delete\"><Trash2 className=\"h-3.5 w-3.5\" /></Button>\n </div>\n </div>\n )\n })}\n </div>\n\n {logsFor?.state.tmuxSession && (\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold\">{logsFor.policy.name} Logs</h2>\n <Button variant=\"outline\" size=\"sm\" onClick={() => setLogsFor(null)}>Close</Button>\n </div>\n <LogViewer orchestratorId={logsFor.policy.orchestratorId} session={logsFor.state.tmuxSession} />\n </div>\n )}\n\n <TerminalDialog\n open={!!terminalFor}\n onOpenChange={(open) => { if (!open) setTerminalFor(null) }}\n orchestratorId={terminalFor?.item.policy.orchestratorId ?? ''}\n session={terminalFor?.session ?? ''}\n interactive={terminalFor ? canWriteTerminal(terminalFor.item, terminalFor.item.state.agentId ? agentsById[terminalFor.item.state.agentId] : undefined) : false}\n />\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var e=[Object.freeze(JSON.parse('{"displayName":"Markdown","name":"markdown","patterns":[{"include":"#frontMatter"},{"include":"#block"}],"repository":{"ampersand":{"match":"&(?!([0-9A-Za-z]+|#[0-9]+|#x\\\\h+);)","name":"meta.other.valid-ampersand.markdown"},"block":{"patterns":[{"include":"#separator"},{"include":"#heading"},{"include":"#blockquote"},{"include":"#lists"},{"include":"#fenced_code_block"},{"include":"#raw_block"},{"include":"#link-def"},{"include":"#html"},{"include":"#table"},{"include":"#paragraph"}]},"blockquote":{"begin":"(^|\\\\G) {0,3}(>) ?","captures":{"2":{"name":"punctuation.definition.quote.begin.markdown"}},"name":"markup.quote.markdown","patterns":[{"include":"#block"}],"while":"(^|\\\\G)\\\\s*(>) ?"},"bold":{"begin":"(?<open>(\\\\*\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*\\\\*|(?<!\\\\w)\\\\b__))(?=\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>|\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]?+|\\\\[((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+](( ?\\\\[[^]]*+])|(\\\\([\\\\t ]*+<?(.*?)>?[\\\\t ]*+((?<title>[\\"\'])(.*?)\\\\k<title>)?\\\\))))|(?!(?<=\\\\S)\\\\k<open>).)++(?<=\\\\S)(?=__\\\\b|\\\\*\\\\*)\\\\k<open>)","captures":{"1":{"name":"punctuation.definition.bold.markdown"}},"end":"(?<=\\\\S)(\\\\1)","name":"markup.bold.markdown","patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"},{"include":"#strikethrough"}]},"bracket":{"match":"<(?![!$/?A-Za-z])","name":"meta.other.valid-bracket.markdown"},"escape":{"match":"\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]","name":"constant.character.escape.markdown"},"fenced_code_block":{"patterns":[{"include":"#fenced_code_block_css"},{"include":"#fenced_code_block_basic"},{"include":"#fenced_code_block_ini"},{"include":"#fenced_code_block_java"},{"include":"#fenced_code_block_lua"},{"include":"#fenced_code_block_makefile"},{"include":"#fenced_code_block_perl"},{"include":"#fenced_code_block_r"},{"include":"#fenced_code_block_ruby"},{"include":"#fenced_code_block_php"},{"include":"#fenced_code_block_sql"},{"include":"#fenced_code_block_vs_net"},{"include":"#fenced_code_block_xml"},{"include":"#fenced_code_block_xsl"},{"include":"#fenced_code_block_yaml"},{"include":"#fenced_code_block_dosbatch"},{"include":"#fenced_code_block_clojure"},{"include":"#fenced_code_block_coffee"},{"include":"#fenced_code_block_c"},{"include":"#fenced_code_block_cpp"},{"include":"#fenced_code_block_diff"},{"include":"#fenced_code_block_dockerfile"},{"include":"#fenced_code_block_git_commit"},{"include":"#fenced_code_block_git_rebase"},{"include":"#fenced_code_block_go"},{"include":"#fenced_code_block_groovy"},{"include":"#fenced_code_block_pug"},{"include":"#fenced_code_block_ignore"},{"include":"#fenced_code_block_js"},{"include":"#fenced_code_block_js_regexp"},{"include":"#fenced_code_block_json"},{"include":"#fenced_code_block_jsonc"},{"include":"#fenced_code_block_jsonl"},{"include":"#fenced_code_block_less"},{"include":"#fenced_code_block_objc"},{"include":"#fenced_code_block_swift"},{"include":"#fenced_code_block_scss"},{"include":"#fenced_code_block_perl6"},{"include":"#fenced_code_block_powershell"},{"include":"#fenced_code_block_python"},{"include":"#fenced_code_block_julia"},{"include":"#fenced_code_block_regexp_python"},{"include":"#fenced_code_block_rust"},{"include":"#fenced_code_block_scala"},{"include":"#fenced_code_block_shell"},{"include":"#fenced_code_block_ts"},{"include":"#fenced_code_block_tsx"},{"include":"#fenced_code_block_csharp"},{"include":"#fenced_code_block_fsharp"},{"include":"#fenced_code_block_dart"},{"include":"#fenced_code_block_handlebars"},{"include":"#fenced_code_block_markdown"},{"include":"#fenced_code_block_log"},{"include":"#fenced_code_block_erlang"},{"include":"#fenced_code_block_elixir"},{"include":"#fenced_code_block_latex"},{"include":"#fenced_code_block_bibtex"},{"include":"#fenced_code_block_twig"},{"include":"#fenced_code_block_yang"},{"include":"#fenced_code_block_abap"},{"include":"#fenced_code_block_restructuredtext"},{"include":"#fenced_code_block_unknown"}]},"fenced_code_block_abap":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(abap)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.abap","patterns":[{"include":"source.abap"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_basic":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(html?|shtml|xhtml|inc|tmpl|tpl)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.html","patterns":[{"include":"text.html.basic"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_bibtex":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bibtex)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.bibtex","patterns":[{"include":"text.bibtex"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_c":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([ch])((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.c","patterns":[{"include":"source.c"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_clojure":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cl(?:js??|ojure))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.clojure","patterns":[{"include":"source.clojure"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_coffee":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.coffee","patterns":[{"include":"source.coffee"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_cpp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c(?:pp|\\\\+\\\\+|xx))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.cpp source.cpp","patterns":[{"include":"source.cpp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_csharp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c(?:s|sharp|#))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.csharp","patterns":[{"include":"source.cs"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_css":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(css(?:|.erb))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.css","patterns":[{"include":"source.css"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dart":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dart)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dart","patterns":[{"include":"source.dart"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_diff":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(patch|diff|rej)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.diff","patterns":[{"include":"source.diff"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dockerfile":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([Dd]ockerfile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dockerfile","patterns":[{"include":"source.dockerfile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dosbatch":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bat(?:|ch))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dosbatch","patterns":[{"include":"source.batchfile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_elixir":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(elixir)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.elixir","patterns":[{"include":"source.elixir"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_erlang":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(erlang)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.erlang","patterns":[{"include":"source.erlang"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_fsharp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(f(?:s|sharp|#))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.fsharp","patterns":[{"include":"source.fsharp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_git_commit":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:COMMIT_EDIT|MERGE_)MSG)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.git_commit","patterns":[{"include":"text.git-commit"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_git_rebase":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(git-rebase-todo)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.git_rebase","patterns":[{"include":"text.git-rebase"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_go":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(go(?:|lang))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.go","patterns":[{"include":"source.go"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_groovy":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(g(?:roovy|vy))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.groovy","patterns":[{"include":"source.groovy"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_handlebars":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(h(?:andlebars|bs))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.handlebars","patterns":[{"include":"text.html.handlebars"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ignore":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:git|)ignore)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ignore","patterns":[{"include":"source.ignore"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ini":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ini|conf)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ini","patterns":[{"include":"source.ini"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_java":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(java|bsh)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.java","patterns":[{"include":"source.java"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_js":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsx??|javascript|es6|mjs|cjs|dataviewjs|\\\\{\\\\.js.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.javascript","patterns":[{"include":"source.js"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_js_regexp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(regexp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.js_regexp","patterns":[{"include":"source.js.regexp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_json":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(json5??|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.json","patterns":[{"include":"source.json"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_jsonc":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonc)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.jsonc","patterns":[{"include":"source.json.comments"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_jsonl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonl(?:|ines))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.jsonl","patterns":[{"include":"source.json.lines"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_julia":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(julia|\\\\{\\\\.julia.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.julia","patterns":[{"include":"source.julia"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_latex":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:la|)tex)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.latex","patterns":[{"include":"text.tex.latex"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_less":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(less)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.less","patterns":[{"include":"source.css.less"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_log":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(log)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.log","patterns":[{"include":"text.log"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_lua":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(lua)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.lua","patterns":[{"include":"source.lua"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_makefile":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:[Mm]|GNUm|OCamlM)akefile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.makefile","patterns":[{"include":"source.makefile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_markdown":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(m(?:arkdown|d))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.markdown","patterns":[{"include":"text.html.markdown"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_objc":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|[hm])((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.objc","patterns":[{"include":"source.objc"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_perl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.perl","patterns":[{"include":"source.perl"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_perl6":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.perl6","patterns":[{"include":"source.perl.6"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_php":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(php3??|php4|php5|phpt|phtml|aw|ctp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.php","patterns":[{"include":"text.html.basic"},{"include":"source.php"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_powershell":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(p(?:owershell|s1|sm1|sd1|wsh))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.powershell","patterns":[{"include":"source.powershell"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_pug":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jade|pug)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.pug","patterns":[{"include":"text.pug"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_python":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(python|py3??|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gypi??|\\\\{\\\\.python.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.python","patterns":[{"include":"source.python"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_r":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([RSrs]|Rprofile|\\\\{\\\\.r.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.r","patterns":[{"include":"source.r"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_regexp_python":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(re)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.regexp_python","patterns":[{"include":"source.regexp.python"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_restructuredtext":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(r(?:estructuredtext|st))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.restructuredtext","patterns":[{"include":"source.rst"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ruby":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ruby|rbx??|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ruby","patterns":[{"include":"source.ruby"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_rust":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(rust|rs|\\\\{\\\\.rust.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.rust","patterns":[{"include":"source.rust"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_scala":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(s(?:cala|bt))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.scala","patterns":[{"include":"source.scala"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_scss":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scss)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.scss","patterns":[{"include":"source.css.scss"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_shell":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\{\\\\.bash.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.shellscript","patterns":[{"include":"source.shell"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_sql":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(sql|ddl|dml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.sql","patterns":[{"include":"source.sql"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_swift":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(swift)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.swift","patterns":[{"include":"source.swift"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ts":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(t(?:ypescript|s))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.typescript","patterns":[{"include":"source.ts"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_tsx":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(tsx)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.typescriptreact","patterns":[{"include":"source.tsx"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_twig":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(twig)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.twig","patterns":[{"include":"source.twig"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_unknown":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?=([^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown"},"fenced_code_block_vs_net":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vb)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.vs_net","patterns":[{"include":"source.asp.vb.net"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_xml":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.xml","patterns":[{"include":"text.xml"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_xsl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xslt??)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.xsl","patterns":[{"include":"text.xml.xsl"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_yaml":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ya?ml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.yaml","patterns":[{"include":"source.yaml"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_yang":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(yang)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.yang","patterns":[{"include":"source.yang"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"frontMatter":{"applyEndPatternLast":1,"begin":"\\\\A(?=(-{3,}))","end":"^(?: {0,3}\\\\1-*[\\\\t ]*|[\\\\t ]*\\\\.{3})$","endCaptures":{"0":{"name":"punctuation.definition.end.frontmatter"}},"patterns":[{"begin":"\\\\A(-{3,})(.*)$","beginCaptures":{"1":{"name":"punctuation.definition.begin.frontmatter"},"2":{"name":"comment.frontmatter"}},"contentName":"meta.embedded.block.frontmatter","patterns":[{"include":"source.yaml"}],"while":"^(?!(?: {0,3}\\\\1-*[\\\\t ]*|[\\\\t ]*\\\\.{3})$)"}]},"heading":{"captures":{"1":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{6})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.6.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{5})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.5.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{4})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.4.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{3})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.3.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{2})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.2.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{1})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.1.markdown"}]}},"match":"(?:^|\\\\G) {0,3}(#{1,6}\\\\s+(.*?)(\\\\s+#{1,6})?\\\\s*)$","name":"markup.heading.markdown"},"heading-setext":{"patterns":[{"match":"^(={3,})(?=[\\\\t ]*$\\\\n?)","name":"markup.heading.setext.1.markdown"},{"match":"^(-{3,})(?=[\\\\t ]*$\\\\n?)","name":"markup.heading.setext.2.markdown"}]},"html":{"patterns":[{"begin":"(^|\\\\G)\\\\s*(<!--)","captures":{"1":{"name":"punctuation.definition.comment.html"},"2":{"name":"punctuation.definition.comment.html"}},"end":"(-->)","name":"comment.block.html"},{"begin":"(?i)(^|\\\\G)\\\\s*(?=<(script|style|pre)(\\\\s|$|>)(?!.*?</(script|style|pre)>))","end":"(?i)(.*)((</)(script|style|pre)(>))","endCaptures":{"1":{"patterns":[{"include":"text.html.derivative"}]},"2":{"name":"meta.tag.structure.$4.end.html"},"3":{"name":"punctuation.definition.tag.begin.html"},"4":{"name":"entity.name.tag.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"patterns":[{"begin":"(\\\\s*|$)","patterns":[{"include":"text.html.derivative"}],"while":"(?i)^(?!.*</(script|style|pre)>)"}]},{"begin":"(?i)(^|\\\\G)\\\\s*(?=</?[A-Za-z]+[^\\\\&/;gt\\\\s]*(\\\\s|$|/?>))","patterns":[{"include":"text.html.derivative"}],"while":"^(?!\\\\s*$)"},{"begin":"(^|\\\\G)\\\\s*(?=(<(?:[-0-9A-Za-z](/?>|\\\\s.*?>)|/[-0-9A-Za-z]>))\\\\s*$)","patterns":[{"include":"text.html.derivative"}],"while":"^(?!\\\\s*$)"}]},"image-inline":{"captures":{"1":{"name":"punctuation.definition.link.description.begin.markdown"},"2":{"name":"string.other.link.description.markdown"},"4":{"name":"punctuation.definition.link.description.end.markdown"},"5":{"name":"punctuation.definition.metadata.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.image.markdown"},"9":{"name":"punctuation.definition.link.markdown"},"10":{"name":"markup.underline.link.image.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"},"18":{"name":"string.other.link.description.title.markdown"},"19":{"name":"punctuation.definition.string.begin.markdown"},"20":{"name":"punctuation.definition.string.end.markdown"},"21":{"name":"punctuation.definition.metadata.markdown"}},"match":"(!\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\()[\\\\t ]*((<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|((?<url>(?>[^()\\\\s]+)|\\\\(\\\\g<url>*\\\\))*))[\\\\t ]*(?:((\\\\().+?(\\\\)))|((\\").+?(\\"))|((\').+?(\')))?\\\\s*(\\\\))","name":"meta.image.inline.markdown"},"image-ref":{"captures":{"1":{"name":"punctuation.definition.link.description.begin.markdown"},"2":{"name":"string.other.link.description.markdown"},"4":{"name":"punctuation.definition.link.description.end.markdown"},"5":{"name":"punctuation.definition.constant.markdown"},"6":{"name":"constant.other.reference.link.markdown"},"7":{"name":"punctuation.definition.constant.markdown"}},"match":"(!\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(]) ?(\\\\[)(.*?)(])","name":"meta.image.reference.markdown"},"inline":{"patterns":[{"include":"#ampersand"},{"include":"#bracket"},{"include":"#bold"},{"include":"#italic"},{"include":"#raw"},{"include":"#strikethrough"},{"include":"#escape"},{"include":"#image-inline"},{"include":"#image-ref"},{"include":"#link-email"},{"include":"#link-inet"},{"include":"#link-inline"},{"include":"#link-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref-shortcut"}]},"italic":{"begin":"(?<open>(\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*|(?<!\\\\w)\\\\b_))(?=\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>|\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]?+|\\\\[((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+](( ?\\\\[[^]]*+])|(\\\\([\\\\t ]*+<?(.*?)>?[\\\\t ]*+((?<title>[\\"\'])(.*?)\\\\k<title>)?\\\\))))|\\\\k<open>\\\\k<open>|(?!(?<=\\\\S)\\\\k<open>).)++(?<=\\\\S)(?=_\\\\b|\\\\*)\\\\k<open>)","captures":{"1":{"name":"punctuation.definition.italic.markdown"}},"end":"(?<=\\\\S)(\\\\1)((?!\\\\1)|(?=\\\\1\\\\1))","name":"markup.italic.markdown","patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"},{"include":"#strikethrough"}]},"link-def":{"captures":{"1":{"name":"punctuation.definition.constant.markdown"},"2":{"name":"constant.other.reference.link.markdown"},"3":{"name":"punctuation.definition.constant.markdown"},"4":{"name":"punctuation.separator.key-value.markdown"},"5":{"name":"punctuation.definition.link.markdown"},"6":{"name":"markup.underline.link.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.markdown"},"9":{"name":"string.other.link.description.title.markdown"},"10":{"name":"punctuation.definition.string.begin.markdown"},"11":{"name":"punctuation.definition.string.end.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"}},"match":"\\\\s*(\\\\[)([^]]+?)(])(:)[\\\\t ]*(?:(<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|(\\\\S+?))[\\\\t ]*(?:((\\\\().+?(\\\\)))|((\\").+?(\\"))|((\').+?(\')))?\\\\s*$","name":"meta.link.reference.def.markdown"},"link-email":{"captures":{"1":{"name":"punctuation.definition.link.markdown"},"2":{"name":"markup.underline.link.markdown"},"4":{"name":"punctuation.definition.link.markdown"}},"match":"(<)((?:mailto:)?[!#-\'*+\\\\--9=?A-Z^-~]+@[-0-9A-Za-z]+(?:\\\\.[-0-9A-Za-z]+)*)(>)","name":"meta.link.email.lt-gt.markdown"},"link-inet":{"captures":{"1":{"name":"punctuation.definition.link.markdown"},"2":{"name":"markup.underline.link.markdown"},"3":{"name":"punctuation.definition.link.markdown"}},"match":"(<)((?:https?|ftp)://.*?)(>)","name":"meta.link.inet.markdown"},"link-inline":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown","patterns":[{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#strikethrough"},{"include":"#image-inline"}]},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.metadata.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.markdown"},"9":{"name":"punctuation.definition.link.markdown"},"10":{"name":"markup.underline.link.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"},"18":{"name":"string.other.link.description.title.markdown"},"19":{"name":"punctuation.definition.string.begin.markdown"},"20":{"name":"punctuation.definition.string.end.markdown"},"21":{"name":"punctuation.definition.metadata.markdown"}},"match":"(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\()[\\\\t ]*((<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|((?<url>(?>[^()\\\\s]+)|\\\\(\\\\g<url>*\\\\))*))[\\\\t ]*(?:((\\\\()[^()]*(\\\\)))|((\\")[^\\"]*(\\"))|((\')[^\']*(\')))?\\\\s*(\\\\))","name":"meta.link.inline.markdown"},"link-ref":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown","patterns":[{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#strikethrough"},{"include":"#image-inline"}]},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.constant.begin.markdown"},"6":{"name":"constant.other.reference.link.markdown"},"7":{"name":"punctuation.definition.constant.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\[)([^]]*+)(])","name":"meta.link.reference.markdown"},"link-ref-literal":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown"},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.constant.begin.markdown"},"6":{"name":"punctuation.definition.constant.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(]) ?(\\\\[)(])","name":"meta.link.reference.literal.markdown"},"link-ref-shortcut":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown"},"3":{"name":"punctuation.definition.link.title.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?:[^]\\\\[\\\\\\\\\\\\s]|\\\\\\\\[]\\\\[])+?)((?<!\\\\\\\\)])","name":"meta.link.reference.markdown"},"list_paragraph":{"begin":"(^|\\\\G)(?=\\\\S)(?![*->]\\\\s|[0-9]+\\\\.\\\\s)","name":"meta.paragraph.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"},{"include":"#heading-setext"}],"while":"(^|\\\\G)(?!\\\\s*$|#| {0,3}([-*>_] {2,}){3,}[\\\\t ]*$\\\\n?| {0,3}[*->]| {0,3}[0-9]+\\\\.)"},"lists":{"patterns":[{"begin":"(^|\\\\G)( {0,3})([-*+])([\\\\t ])","beginCaptures":{"3":{"name":"punctuation.definition.list.begin.markdown"}},"name":"markup.list.unnumbered.markdown","patterns":[{"include":"#block"},{"include":"#list_paragraph"}],"while":"((^|\\\\G)( {2,4}|\\\\t))|^([\\\\t ]*)$"},{"begin":"(^|\\\\G)( {0,3})([0-9]+[).])([\\\\t ])","beginCaptures":{"3":{"name":"punctuation.definition.list.begin.markdown"}},"name":"markup.list.numbered.markdown","patterns":[{"include":"#block"},{"include":"#list_paragraph"}],"while":"((^|\\\\G)( {2,4}|\\\\t))|^([\\\\t ]*)$"}]},"paragraph":{"begin":"(^|\\\\G) {0,3}(?=[^\\\\t\\\\n ])","name":"meta.paragraph.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"},{"include":"#heading-setext"}],"while":"(^|\\\\G)((?=\\\\s*[-=]{3,}\\\\s*$)| {4,}(?=[^\\\\t\\\\n ]))"},"raw":{"captures":{"1":{"name":"punctuation.definition.raw.markdown"},"3":{"name":"punctuation.definition.raw.markdown"}},"match":"(`+)((?:[^`]|(?!(?<!`)\\\\1(?!`))`)*+)(\\\\1)","name":"markup.inline.raw.string.markdown"},"raw_block":{"begin":"(^|\\\\G)( {4}|\\\\t)","name":"markup.raw.block.markdown","while":"(^|\\\\G)( {4}|\\\\t)"},"separator":{"match":"(^|\\\\G) {0,3}([-*_])( {0,2}\\\\2){2,}[\\\\t ]*$\\\\n?","name":"meta.separator.markdown"},"strikethrough":{"captures":{"1":{"name":"punctuation.definition.strikethrough.markdown"},"2":{"patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"}]},"3":{"name":"punctuation.definition.strikethrough.markdown"}},"match":"(?<!\\\\\\\\)(~{2,})(?!(?<=\\\\w~~)_)((?:[^~]|(?!(?<![\\\\\\\\~])\\\\1(?!~))~)*+)(\\\\1)(?!(?<=_\\\\1)\\\\w)","name":"markup.strikethrough.markdown"},"table":{"begin":"(^|\\\\G)(\\\\|)(?=[^|].+\\\\|\\\\s*$)","beginCaptures":{"2":{"name":"punctuation.definition.table.markdown"}},"name":"markup.table.markdown","patterns":[{"match":"\\\\|","name":"punctuation.definition.table.markdown"},{"captures":{"1":{"name":"punctuation.separator.table.markdown"}},"match":"(?<=\\\\|)\\\\s*(:?-+:?)\\\\s*(?=\\\\|)"},{"captures":{"1":{"patterns":[{"include":"#inline"}]}},"match":"(?<=\\\\|)\\\\s*(?=\\\\S)((\\\\\\\\\\\\||[^|])+)(?<=\\\\S)\\\\s*(?=\\\\|)"}],"while":"(^|\\\\G)(?=\\\\|)"}},"scopeName":"text.html.markdown","embeddedLangs":[],"aliases":["md"],"embeddedLangsLazy":["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","jsonl","less","objective-c","swift","scss","raku","powershell","python","julia","regexp","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","log","erlang","elixir","latex","bibtex","abap","rst","html-derivative"]}'))];export{e as default};
|
|
2
|
-
//# sourceMappingURL=markdown-
|
|
2
|
+
//# sourceMappingURL=markdown-DcNETIgQ.js.map
|