@hienlh/ppm 0.18.15 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/CLAUDE.md +4 -0
  3. package/assets/skills/ppm/SKILL.md +1 -1
  4. package/assets/skills/ppm/references/cli-reference.md +4 -4
  5. package/assets/skills/ppm/references/http-api.md +2 -1
  6. package/dist/web/assets/{adaptive-context-menu-ChBZWLLq.js → adaptive-context-menu-JfuUSqbe.js} +1 -1
  7. package/dist/web/assets/{ai-resource-editor-C8aAY8Po.js → ai-resource-editor-MfdJKVM5.js} +1 -1
  8. package/dist/web/assets/ai-settings-section-CJE7jFsj.js +1 -0
  9. package/dist/web/assets/{angular-html-CXgHIQ2U.js → angular-html-VzxSzTCy.js} +1 -1
  10. package/dist/web/assets/{angular-ts-C8renMV9.js → angular-ts-CmJ4bmzM.js} +1 -1
  11. package/dist/web/assets/api-client-DLWwuUkJ.js +1 -0
  12. package/dist/web/assets/{api-client-BkGKTjsq.js → api-client-qRWu6_s5.js} +1 -1
  13. package/dist/web/assets/api-settings-BFuaZrNC.js +1 -0
  14. package/dist/web/assets/{api-settings-R59c66DE.js → api-settings-CPg4yGvS.js} +1 -1
  15. package/dist/web/assets/{api-themes-DKxrwJda.js → api-themes-DsAp8m7m.js} +1 -1
  16. package/dist/web/assets/{apl-DkGH8laI.js → apl-do17bnVx.js} +1 -1
  17. package/dist/web/assets/architecture-PBZL5I3N-6konx-J1.js +1 -0
  18. package/dist/web/assets/{astro-tHUd8Zlg.js → astro-ClY0e0OA.js} +1 -1
  19. package/dist/web/assets/{audio-preview-B_C6Dpvz.js → audio-preview-Fw935Mok.js} +1 -1
  20. package/dist/web/assets/{blade-BbKpjIYK.js → blade-BXSdXDGq.js} +1 -1
  21. package/dist/web/assets/{bot-D6sx11y0.js → bot-CWZAuloY.js} +1 -1
  22. package/dist/web/assets/{bsl-DA0UYto0.js → bsl-MxsMKDUZ.js} +1 -1
  23. package/dist/web/assets/{button-DBSpDPS0.js → button-CrwgGd1y.js} +1 -1
  24. package/dist/web/assets/{cairo-79ayucbB.js → cairo-4CIrzX_p.js} +1 -1
  25. package/dist/web/assets/chat-tab-bSOVoC5N.js +15 -0
  26. package/dist/web/assets/{chevron-down-Dp0rpHb8.js → chevron-down-D7CbB5f6.js} +1 -1
  27. package/dist/web/assets/chevron-right-D7Pn5agw.js +1 -0
  28. package/dist/web/assets/circle-4g2coECH.js +1 -0
  29. package/dist/web/assets/{circle-question-mark-CzR7YRc-.js → circle-question-mark-BBzFZrNh.js} +1 -1
  30. package/dist/web/assets/clock-DbiNiwCG.js +1 -0
  31. package/dist/web/assets/{cobol-DSS2EOYo.js → cobol-phPOE89d.js} +1 -1
  32. package/dist/web/assets/code-DdKXqtf_.js +1 -0
  33. package/dist/web/assets/code-editor-COTa37oe.js +10 -0
  34. package/dist/web/assets/{coffee-DvSxq2iD.js → coffee-Cjuukfz3.js} +1 -1
  35. package/dist/web/assets/{conflict-editor-C4VCv51R.js → conflict-editor-Ni0PPsKu.js} +1 -1
  36. package/dist/web/assets/{context-menu-BpwUny-o.js → context-menu-BEAa1qhd.js} +1 -1
  37. package/dist/web/assets/{copy-BewHj66E.js → copy-CbPdNp7E.js} +1 -1
  38. package/dist/web/assets/{cpp-BhWZ-FSn.js → cpp-CT7tGBC3.js} +1 -1
  39. package/dist/web/assets/{createLucideIcon-D8pyde1A.js → createLucideIcon-ConhwJnb.js} +1 -1
  40. package/dist/web/assets/{crystal-yP2OeF-f.js → crystal-D8U1Qnqh.js} +1 -1
  41. package/dist/web/assets/{csv-preview-D46W_icb.js → csv-preview-Coc2oed1.js} +1 -1
  42. package/dist/web/assets/{data-grid-overlay-editor-DeGkPYtA.js → data-grid-overlay-editor-B8WQkZDB.js} +1 -1
  43. package/dist/web/assets/{data-grid-types-DkEQ-Na9.js → data-grid-types-KpjaKAci.js} +1 -1
  44. package/dist/web/assets/{database-Y3ESDK4-.js → database-BqyeGogo.js} +1 -1
  45. package/dist/web/assets/{database-viewer-DFI4YtrH.js → database-viewer-Dta7lSSk.js} +1 -1
  46. package/dist/web/assets/{dialog-RIpeb87v.js → dialog-DrL3WEXd.js} +1 -1
  47. package/dist/web/assets/{diff-viewer-eaNOLcBL.js → diff-viewer-CT0lmDc9.js} +1 -1
  48. package/dist/web/assets/{dist-Do3fljss.js → dist-C2_dKAa_.js} +1 -1
  49. package/dist/web/assets/{docx-preview-Cbj-pOK3.js → docx-preview-76KDw1eE.js} +1 -1
  50. package/dist/web/assets/{download-DG3_9xXy.js → download-DAF7SXcf.js} +1 -1
  51. package/dist/web/assets/{edge-D3K9cd-p.js → edge-Db4ze6bw.js} +1 -1
  52. package/dist/web/assets/{edit-diff-preview-DDqy3KLA.js → edit-diff-preview-DyC_-4My.js} +1 -1
  53. package/dist/web/assets/{elixir-D4PBmsLp.js → elixir-RZPZ0472.js} +1 -1
  54. package/dist/web/assets/{elm-DSpXjuaH.js → elm-DNZcQt_7.js} +1 -1
  55. package/dist/web/assets/{erb-CaYZMTJW.js → erb-DRONsZXs.js} +1 -1
  56. package/dist/web/assets/{erlang-DX5BFqJj.js → erlang-DeG0-QwJ.js} +1 -1
  57. package/dist/web/assets/{esm-Cv7HsFnk.js → esm-CZy-sSoK.js} +1 -1
  58. package/dist/web/assets/explorer-body-BGjR2Gbt.js +2 -0
  59. package/dist/web/assets/explorer-window-content-DAhHh5EQ.js +1 -0
  60. package/dist/web/assets/{extension-store-B1EClUAr.js → extension-store-ClQpnxQr.js} +1 -1
  61. package/dist/web/assets/{extension-webview-BaGvDk8v.js → extension-webview-BW5GuBnH.js} +1 -1
  62. package/dist/web/assets/{external-link-B6Hl0U4X.js → external-link-ojDHcQxQ.js} +1 -1
  63. package/dist/web/assets/{eye-off-CUdzgmX8.js → eye-off-Rq1n2-oe.js} +1 -1
  64. package/dist/web/assets/{file-exclamation-point-JzhTU2TX.js → file-exclamation-point-Bpg-zDPP.js} +1 -1
  65. package/dist/web/assets/{file-store-m9crh6uq.js → file-store-28e44KP3.js} +1 -1
  66. package/dist/web/assets/{folder-symlink-Dx1hOk8X.js → folder-symlink-LD-mr54V.js} +1 -1
  67. package/dist/web/assets/{fortran-fixed-form-B0bAufUe.js → fortran-fixed-form-CK5VRJNd.js} +1 -1
  68. package/dist/web/assets/{fsharp-C2AL2b1M.js → fsharp-TVVgzHWp.js} +1 -1
  69. package/dist/web/assets/{gdresource-DRQsDMNI.js → gdresource-DiUcyewI.js} +1 -1
  70. package/dist/web/assets/{git-commit-GtBdnrzk.js → git-commit-CfOruFrg.js} +1 -1
  71. package/dist/web/assets/{git-log-panel-hwV1flSO.js → git-log-panel-D1-YXZ0O.js} +1 -1
  72. package/dist/web/assets/{git-rebase-h_0CGA6F.js → git-rebase-Bxyr24oc.js} +1 -1
  73. package/dist/web/assets/gitGraph-HDMCJU4V-ikUwsekd.js +1 -0
  74. package/dist/web/assets/{glide-data-grid-YsN-xm6x.js → glide-data-grid-BSsqxe2v.js} +6 -6
  75. package/dist/web/assets/{glimmer-js-Bxwu93bS.js → glimmer-js-CT5aJxz_.js} +1 -1
  76. package/dist/web/assets/{glimmer-ts-CIUYdR4E.js → glimmer-ts-CRjP9Yey.js} +1 -1
  77. package/dist/web/assets/{glsl-CfxLI5jn.js → glsl-BX2--oI_.js} +1 -1
  78. package/dist/web/assets/{graphql-CstqDPde.js → graphql-BIQsvBxQ.js} +1 -1
  79. package/dist/web/assets/{group-chat-tab-B7mJO1gG.js → group-chat-tab-CMtzoaFc.js} +1 -1
  80. package/dist/web/assets/{hack-Bjqnssb5.js → hack-CTWk0k1m.js} +1 -1
  81. package/dist/web/assets/{haml-lVc-DfbM.js → haml-DGh27hXc.js} +1 -1
  82. package/dist/web/assets/{hand-x0ejq3fS.js → hand-DKSxDa5c.js} +1 -1
  83. package/dist/web/assets/{handlebars-Yy6fPQI_.js → handlebars-BJL1jNrG.js} +1 -1
  84. package/dist/web/assets/{html-lqtcy6-2.js → html-DALyDNqU.js} +1 -1
  85. package/dist/web/assets/{html-derivative-CchzCY1z.js → html-derivative-B4XcU57e.js} +1 -1
  86. package/dist/web/assets/{http-ChclRrko.js → http-DfMo7nNu.js} +1 -1
  87. package/dist/web/assets/{hurl-CoOK7sXa.js → hurl-CGc_n2Qf.js} +1 -1
  88. package/dist/web/assets/{hxml-fZSZ7Iyt.js → hxml-40zZ1t4x.js} +1 -1
  89. package/dist/web/assets/{image-preview-ClAcqDlL.js → image-preview-Cp3XB8UO.js} +1 -1
  90. package/dist/web/assets/index-BkHlMfPD.js +52 -0
  91. package/dist/web/assets/index-SFFv2-VM.css +2 -0
  92. package/dist/web/assets/info-3K5VOQVL-BAgmboBp.js +1 -0
  93. package/dist/web/assets/{input-DXPgUtxi.js → input-DTmI80l2.js} +1 -1
  94. package/dist/web/assets/{jinja-Y0w_KBdE.js → jinja-D5zuIn9u.js} +1 -1
  95. package/dist/web/assets/{jison-BILj3F2e.js → jison-Dxut9QwA.js} +1 -1
  96. package/dist/web/assets/{julia-DRfOPDts.js → julia-Cu85tTPo.js} +1 -1
  97. package/dist/web/assets/{just-n3U_oODO.js → just-CctM4uLa.js} +1 -1
  98. package/dist/web/assets/{keybindings-store-D-CHdq-G.js → keybindings-store-Bi0q9x4Q.js} +1 -1
  99. package/dist/web/assets/keybindings-store-_KfovSz7.js +1 -0
  100. package/dist/web/assets/{keyboard-DBBaoQSu.js → keyboard-AdwmYDSu.js} +1 -1
  101. package/dist/web/assets/{latex-D6gztEOL.js → latex-kpwS_CC7.js} +1 -1
  102. package/dist/web/assets/{lib-CXUwxw1M.js → lib-Ca7ai8xa.js} +1 -1
  103. package/dist/web/assets/{liquid-DPqCEVb9.js → liquid-B8Rr0xue.js} +1 -1
  104. package/dist/web/assets/loader-circle-DD65e9-7.js +1 -0
  105. package/dist/web/assets/{lock-CNxUGpTk.js → lock-BEtt_eTO.js} +1 -1
  106. package/dist/web/assets/{lua-I40KPUm-.js → lua-C_3gixwM.js} +1 -1
  107. package/dist/web/assets/markdown-renderer-DroTmKbJ.js +1 -0
  108. package/dist/web/assets/markdown-renderer-ntDi3Tx-.js +3 -0
  109. package/dist/web/assets/{marko-DMjsThSW.js → marko-B28rvNL-.js} +1 -1
  110. package/dist/web/assets/{mdc-CN2alsbo.js → mdc-DQ6-STFO.js} +1 -1
  111. package/dist/web/assets/{media-url-COUvasjn.js → media-url-BjvbfTTl.js} +1 -1
  112. package/dist/web/assets/{mobile-bottom-sheet-Cj1YBq-c.js → mobile-bottom-sheet-DXn5g2LB.js} +1 -1
  113. package/dist/web/assets/mobile-explorer-sheet-BP6iU4ma.js +1 -0
  114. package/dist/web/assets/{monitor-C835ucWH.js → monitor-CXI_XpWJ.js} +1 -1
  115. package/dist/web/assets/monitor-smartphone-C1wUPOSg.js +1 -0
  116. package/dist/web/assets/{nextflow-CGa4JeZ6.js → nextflow-B1xq2O8L.js} +1 -1
  117. package/dist/web/assets/{nginx-CmqrIj84.js → nginx-xsLxRGxO.js} +1 -1
  118. package/dist/web/assets/{nim-CqhmTeMa.js → nim-wqcek3WO.js} +1 -1
  119. package/dist/web/assets/notification-store-II5Kw9rD.js +1 -0
  120. package/dist/web/assets/{number-overlay-editor-BEzJ1YeD.js → number-overlay-editor-1c4sgZJt.js} +1 -1
  121. package/dist/web/assets/{overview-panel-Bf9Gn8qV.js → overview-panel-Cr2xsHc6.js} +1 -1
  122. package/dist/web/assets/packet-RMMSAZCW-RVlbbDRS.js +1 -0
  123. package/dist/web/assets/{panel-store-UWCH6B-_.js → panel-store-Dv28vz3L.js} +1 -1
  124. package/dist/web/assets/{pdf-preview-BMHM5cR2.js → pdf-preview-DKeIIJTv.js} +1 -1
  125. package/dist/web/assets/{pencil-BlIIg6RH.js → pencil-CHKLOgLs.js} +1 -1
  126. package/dist/web/assets/{perl-BOwpb6Tb.js → perl-BH54gN9q.js} +1 -1
  127. package/dist/web/assets/{php-wT9fVxxu.js → php-Br5ZrEZm.js} +1 -1
  128. package/dist/web/assets/pie-UPGHQEXC-ZWb4izpk.js +1 -0
  129. package/dist/web/assets/play-CPbVzGgq.js +1 -0
  130. package/dist/web/assets/{plus-BR0qewJI.js → plus-BxqD2FIZ.js} +1 -1
  131. package/dist/web/assets/portal-container-context-BmG4--I-.js +1 -0
  132. package/dist/web/assets/{postgres-viewer-D8rfEY5b.js → postgres-viewer-BJPr_FYL.js} +3 -3
  133. package/dist/web/assets/{process-table-CsQ-hDJr.js → process-table-BqTcAJ-h.js} +1 -1
  134. package/dist/web/assets/{project-store-CKAOr23O.js → project-store-KHjFTCxf.js} +1 -1
  135. package/dist/web/assets/{pug-DdlNnj-p.js → pug-8VCubZ3H.js} +1 -1
  136. package/dist/web/assets/{qml-C5zBdydf.js → qml-D8AF1RZ6.js} +1 -1
  137. package/dist/web/assets/radar-KQ55EAFF-bsP5x1Bx.js +1 -0
  138. package/dist/web/assets/{razor-DqcJX4iq.js → razor-6v042IJW.js} +1 -1
  139. package/dist/web/assets/{react-Dfio3PfK.js → react-DHs6efqI.js} +1 -1
  140. package/dist/web/assets/{refresh-cw-84mz8aOE.js → refresh-cw-BALzw7L3.js} +1 -1
  141. package/dist/web/assets/remote-desktop-mobile-sheet-CYZUjYTO.js +2 -0
  142. package/dist/web/assets/remote-desktop-mobile-view-DaoB49k4.js +1 -0
  143. package/dist/web/assets/remote-desktop-readiness-gate--LJgsuoj.js +1 -0
  144. package/dist/web/assets/remote-desktop-window-content-Cihx4PNZ.js +1 -0
  145. package/dist/web/assets/{rotate-ccw-CNTk2J7l.js → rotate-ccw-CuvNBM80.js} +1 -1
  146. package/dist/web/assets/{rst-DiMiMYUO.js → rst-mTGFo4AQ.js} +1 -1
  147. package/dist/web/assets/{ruby-DK62iflA.js → ruby-BBaOP636.js} +1 -1
  148. package/dist/web/assets/{run-in-terminal-DJSL6nwZ.js → run-in-terminal-Zl5iIx-B.js} +1 -1
  149. package/dist/web/assets/{sas-6QPGJRa5.js → sas-D5QEkIH2.js} +1 -1
  150. package/dist/web/assets/{save-CtW9ojKk.js → save-Dxq-Zepc.js} +1 -1
  151. package/dist/web/assets/{scroll-area-DXGXeiRz.js → scroll-area-B5yhPpZo.js} +1 -1
  152. package/dist/web/assets/{scss-DmUqh48_.js → scss-C5Mu6y2u.js} +1 -1
  153. package/dist/web/assets/{send-C_sLFt56.js → send-Cits8q0l.js} +1 -1
  154. package/dist/web/assets/{send-to-chat-BOony0sO.js → send-to-chat-Cv7ikFUC.js} +1 -1
  155. package/dist/web/assets/settings-store-Dp4i8zeA.js +2 -0
  156. package/dist/web/assets/settings-tab-BtMvvKAF.js +3 -0
  157. package/dist/web/assets/settings-tab-UPPycGRF.js +1 -0
  158. package/dist/web/assets/{shaderlab-DopFR1mi.js → shaderlab-mLnpMpN3.js} +1 -1
  159. package/dist/web/assets/{shallow-C1YoJQA-.js → shallow-BBJ_qoEF.js} +1 -1
  160. package/dist/web/assets/{shellsession-Bp_TGuXb.js → shellsession-qdcDfUuk.js} +1 -1
  161. package/dist/web/assets/{shield-check-Du6HKYn9.js → shield-check-CH7F1P7m.js} +1 -1
  162. package/dist/web/assets/{shield-off-CWKb1MQL.js → shield-off-C9HiF0-6.js} +1 -1
  163. package/dist/web/assets/{soy-DEB9KEFb.js → soy-CGGf1G43.js} +1 -1
  164. package/dist/web/assets/{sparkles-Dh-_J2Rd.js → sparkles-BnuLH6Ck.js} +1 -1
  165. package/dist/web/assets/{sparql-C8lEwO1p.js → sparql-tQHB50VD.js} +1 -1
  166. package/dist/web/assets/{sql-query-editor-MMfk0Kbz.js → sql-query-editor-DZqnYIB7.js} +1 -1
  167. package/dist/web/assets/{sqlite-viewer-vglzrgnZ.js → sqlite-viewer-DXutos0e.js} +1 -1
  168. package/dist/web/assets/{stata-DVep4apN.js → stata-DVQNLMcR.js} +1 -1
  169. package/dist/web/assets/{surrealql-fSlJApOA.js → surrealql-lu576tBi.js} +1 -1
  170. package/dist/web/assets/{svelte-DezWBEDi.js → svelte-CSCrOBjT.js} +1 -1
  171. package/dist/web/assets/{switch-DqL_ZjB_.js → switch-BPol3BFC.js} +1 -1
  172. package/dist/web/assets/system-monitor-body-Ct8_GX_f.js +2 -0
  173. package/dist/web/assets/system-monitor-tab-DC_EerdI.js +1 -0
  174. package/dist/web/assets/system-monitor-window-content-D25DMNpw.js +1 -0
  175. package/dist/web/assets/{tab-host-window-content-DYlXR0cg.js → tab-host-window-content-C5kYP0-z.js} +1 -1
  176. package/dist/web/assets/{tab-store-D2thn4Vv.js → tab-store-DS3YlUwR.js} +1 -1
  177. package/dist/web/assets/{table-GAR4upb6.js → table-BXDyImqk.js} +1 -1
  178. package/dist/web/assets/team-member-sheet-DvmioeQL.js +2 -0
  179. package/dist/web/assets/{team-member-window-content-qrgFTC96.js → team-member-window-content-BJ_XFw8-.js} +1 -1
  180. package/dist/web/assets/{templ-D0zB42a9.js → templ-CPt8AS4Q.js} +1 -1
  181. package/dist/web/assets/{terminal-tab-D_-R5rGm.js → terminal-tab-8bKQ3CWR.js} +3 -3
  182. package/dist/web/assets/{tex-BJiPijcH.js → tex-BrTByT7i.js} +1 -1
  183. package/dist/web/assets/{text-wrap-D71Jqz5U.js → text-wrap-CzMjB6GD.js} +1 -1
  184. package/dist/web/assets/{tool-cards-BW7Xc20J.js → tool-cards-pIu_cmEL.js} +4 -4
  185. package/dist/web/assets/{trash-2-C08fhIg1.js → trash-2-BjShZ7if.js} +1 -1
  186. package/dist/web/assets/treemap-KZPCXAKY-Dh1oxNdQ.js +1 -0
  187. package/dist/web/assets/{triangle-alert-85BQgs3T.js → triangle-alert-qQ6Plydp.js} +1 -1
  188. package/dist/web/assets/{ts-tags-Dcr4u6y5.js → ts-tags-DSqEZ7A8.js} +1 -1
  189. package/dist/web/assets/{twig-B-SQU0bg.js → twig-DW9qc1bf.js} +1 -1
  190. package/dist/web/assets/{upload-BNlX8D07.js → upload-7Zs6oaK5.js} +1 -1
  191. package/dist/web/assets/{use-blob-url-BtPlqwLr.js → use-blob-url-DKbV7PM_.js} +1 -1
  192. package/dist/web/assets/{use-coarse-long-press-BmI_GVW5.js → use-coarse-long-press-DGyC48NF.js} +1 -1
  193. package/dist/web/assets/{use-is-mobile-DUuki97q.js → use-is-mobile-ClE-UcPF.js} +1 -1
  194. package/dist/web/assets/use-monaco-theme-DaxAk3gB.js +1 -0
  195. package/dist/web/assets/use-open-team-member-CopUuDHG.js +1 -0
  196. package/dist/web/assets/use-remote-desktop-display-choice-BUA_1eaH.js +1 -0
  197. package/dist/web/assets/{use-visual-viewport-pVxLfE5B.js → use-visual-viewport-CCX21c9w.js} +1 -1
  198. package/dist/web/assets/{use-websocket-l39Odhlp.js → use-websocket-CWpG7PWN.js} +1 -1
  199. package/dist/web/assets/vendor-markdown-CKTlmXbz.js +291 -0
  200. package/dist/web/assets/{vendor-mermaid-CtDsSxbM.js → vendor-mermaid-0Nt-ew76.js} +1 -1
  201. package/dist/web/assets/{vendor-ui-CaeeFO0B.js → vendor-ui-CXJtBULr.js} +1 -1
  202. package/dist/web/assets/{video-preview-C5AhkIDl.js → video-preview-C2_fdunE.js} +1 -1
  203. package/dist/web/assets/{vue-Cw10Sfbh.js → vue-CJNDL1g-.js} +1 -1
  204. package/dist/web/assets/{vue-html-Cc5C_Z_w.js → vue-html-CG5BKtq1.js} +1 -1
  205. package/dist/web/assets/{vue-vine-BuNMlnvu.js → vue-vine-Dd5HZ7T5.js} +1 -1
  206. package/dist/web/assets/{window-pip-registry-C7oz3Dfy.js → window-pip-registry-9H6Y-HqR.js} +1 -1
  207. package/dist/web/assets/{window-store-B5ZswdYg.js → window-store-CNzkeUyO.js} +1 -1
  208. package/dist/web/assets/x-Dzu9ecti.js +1 -0
  209. package/dist/web/assets/{xml-DqT1wkky.js → xml-DTOm5niz.js} +1 -1
  210. package/dist/web/assets/{xsl-DLkge3A2.js → xsl-BD_kBC04.js} +1 -1
  211. package/dist/web/index.html +65 -64
  212. package/dist/web/monacoeditorwork/css.worker.bundle.js +122 -122
  213. package/dist/web/monacoeditorwork/editor.worker.bundle.js +78 -78
  214. package/dist/web/monacoeditorwork/html.worker.bundle.js +110 -110
  215. package/dist/web/monacoeditorwork/json.worker.bundle.js +108 -108
  216. package/dist/web/monacoeditorwork/ts.worker.bundle.js +81 -81
  217. package/dist/web/sw.js +1 -1
  218. package/docs/system-architecture.md +19 -0
  219. package/package.json +1 -1
  220. package/scripts/check-ppm-dir-usage.sh +0 -0
  221. package/scripts/install.sh +0 -0
  222. package/scripts/release.sh +0 -0
  223. package/src/server/index.ts +1 -1
  224. package/src/server/routes/remote-desktop.ts +24 -7
  225. package/src/server/routes/settings.ts +1 -0
  226. package/src/server/ws/remote-desktop.ts +4 -2
  227. package/src/services/edge-forwarder.ts +191 -191
  228. package/src/services/named-tunnel/cloudflare-dns-api.ts +20 -4
  229. package/src/services/named-tunnel/named-tunnel-args.ts +17 -3
  230. package/src/services/named-tunnel/named-tunnel-setup.service.ts +20 -2
  231. package/src/services/remote-desktop/remote-desktop-capture-input.ts +62 -0
  232. package/src/services/remote-desktop/remote-desktop-capture.ts +29 -12
  233. package/src/services/remote-desktop/remote-desktop-cg-key-map.ts +45 -0
  234. package/src/services/remote-desktop/remote-desktop-displays.ts +90 -0
  235. package/src/services/remote-desktop/remote-desktop-encoder-args.ts +7 -0
  236. package/src/services/remote-desktop/remote-desktop-flag.ts +8 -6
  237. package/src/services/remote-desktop/remote-desktop-input-backend.ts +36 -0
  238. package/src/services/remote-desktop/remote-desktop-input-darwin.ts +200 -0
  239. package/src/services/remote-desktop/remote-desktop-input-win32.ts +243 -0
  240. package/src/services/remote-desktop/remote-desktop-input.ts +43 -193
  241. package/src/services/remote-desktop/remote-desktop-macos-permissions.ts +62 -0
  242. package/src/services/remote-desktop/remote-desktop-requirements.ts +124 -0
  243. package/src/services/remote-desktop/remote-desktop-session.ts +16 -5
  244. package/src/services/windows-process-tree.ts +351 -351
  245. package/src/web/components/remote-desktop/remote-desktop-mobile-sheet.tsx +12 -4
  246. package/src/web/components/remote-desktop/remote-desktop-mobile-toolbar.tsx +12 -1
  247. package/src/web/components/remote-desktop/remote-desktop-mobile-view.tsx +5 -1
  248. package/src/web/components/remote-desktop/remote-desktop-readiness-gate.tsx +128 -0
  249. package/src/web/components/remote-desktop/remote-desktop-warning-gate.tsx +106 -0
  250. package/src/web/components/remote-desktop/remote-desktop-window-content.tsx +38 -4
  251. package/src/web/components/remote-desktop/use-remote-desktop-available.ts +7 -24
  252. package/src/web/components/remote-desktop/use-remote-desktop-connection.ts +10 -3
  253. package/src/web/components/remote-desktop/use-remote-desktop-display-choice.ts +30 -0
  254. package/src/web/components/remote-desktop/use-remote-desktop-readiness.ts +82 -0
  255. package/src/web/components/remote-desktop/use-remote-desktop-virtual-keyboard.ts +61 -10
  256. package/src/web/stores/settings-store.ts +12 -0
  257. package/.rdtest2-cf.out +0 -0
  258. package/dist/web/assets/ai-settings-section-ERu1WiZc.js +0 -1
  259. package/dist/web/assets/api-client-WpZ2FDHg.js +0 -1
  260. package/dist/web/assets/api-settings-BgSEE6et.js +0 -1
  261. package/dist/web/assets/architecture-PBZL5I3N-CCalSKAt.js +0 -1
  262. package/dist/web/assets/chat-tab-BraiJsYG.js +0 -15
  263. package/dist/web/assets/chevron-right-De-Wz5Lz.js +0 -1
  264. package/dist/web/assets/circle-BCy0AUCo.js +0 -1
  265. package/dist/web/assets/clock-C1CQUQPZ.js +0 -1
  266. package/dist/web/assets/code-DJgYrFzm.js +0 -1
  267. package/dist/web/assets/code-editor-lhmLNhXu.js +0 -10
  268. package/dist/web/assets/explorer-body-BxbSttfl.js +0 -2
  269. package/dist/web/assets/explorer-window-content-DUqQCC7A.js +0 -1
  270. package/dist/web/assets/gitGraph-HDMCJU4V-DAUrJCqi.js +0 -1
  271. package/dist/web/assets/index-CtJbMNNI.css +0 -2
  272. package/dist/web/assets/index-H_gScEOk.js +0 -52
  273. package/dist/web/assets/info-3K5VOQVL-Cx1ZfJbp.js +0 -1
  274. package/dist/web/assets/keybindings-store-BqctreaI.js +0 -1
  275. package/dist/web/assets/loader-circle-DouKgIXy.js +0 -1
  276. package/dist/web/assets/markdown-renderer-BwOkiZC1.js +0 -1
  277. package/dist/web/assets/markdown-renderer-oJ9jPdQ2.js +0 -3
  278. package/dist/web/assets/mobile-explorer-sheet-D1nM0Ik1.js +0 -1
  279. package/dist/web/assets/notification-store-n-XEQ5pH.js +0 -1
  280. package/dist/web/assets/packet-RMMSAZCW-Bqwiy7dz.js +0 -1
  281. package/dist/web/assets/pie-UPGHQEXC-BXSJ2God.js +0 -1
  282. package/dist/web/assets/play-CJlWpVMw.js +0 -1
  283. package/dist/web/assets/portal-container-context-DSGdlXrJ.js +0 -1
  284. package/dist/web/assets/radar-KQ55EAFF-D6XrM7HH.js +0 -1
  285. package/dist/web/assets/remote-desktop-mobile-sheet-CTiipn4k.js +0 -2
  286. package/dist/web/assets/remote-desktop-mobile-view-Cf5B0dKo.js +0 -1
  287. package/dist/web/assets/remote-desktop-stats-overlay-vhJBIW7s.js +0 -1
  288. package/dist/web/assets/remote-desktop-window-content-wCJUfI6G.js +0 -1
  289. package/dist/web/assets/settings-store-BpcY5aYE.js +0 -2
  290. package/dist/web/assets/settings-tab-BVqRO01j.js +0 -1
  291. package/dist/web/assets/settings-tab-FH581A_i.js +0 -3
  292. package/dist/web/assets/system-monitor-body-BYUfyF8f.js +0 -2
  293. package/dist/web/assets/system-monitor-tab-CKGXB8lH.js +0 -1
  294. package/dist/web/assets/system-monitor-window-content-CiJ2yIsr.js +0 -1
  295. package/dist/web/assets/team-member-sheet-Bnygu7Xw.js +0 -2
  296. package/dist/web/assets/treemap-KZPCXAKY-BobWhcHN.js +0 -1
  297. package/dist/web/assets/use-monaco-theme-DQY1ZSaf.js +0 -1
  298. package/dist/web/assets/use-open-team-member-C5LQ_TCM.js +0 -1
  299. package/dist/web/assets/vendor-markdown-Ls5AcU91.js +0 -291
  300. package/dist/web/assets/x-CeN0Qybc.js +0 -1
  301. package/packages/vscode-compat/node_modules/.bin/tsc.bunx +0 -0
  302. package/packages/vscode-compat/node_modules/.bin/tsc.exe +0 -0
  303. package/packages/vscode-compat/node_modules/.bin/tsserver.bunx +0 -0
  304. package/packages/vscode-compat/node_modules/.bin/tsserver.exe +0 -0
  305. /package/dist/web/assets/{abap-CKgBNk5K.js → abap-Cjj2olMr.js} +0 -0
  306. /package/dist/web/assets/{actionscript-3-oARhAY6c.js → actionscript-3-DCkW7kWC.js} +0 -0
  307. /package/dist/web/assets/{ada-2vi8ASy3.js → ada-AEWvZXuX.js} +0 -0
  308. /package/dist/web/assets/{andromeeda-B3vMjPKd.js → andromeeda-D7cSpME6.js} +0 -0
  309. /package/dist/web/assets/{apache-DnIEr338.js → apache-DjvX0RSe.js} +0 -0
  310. /package/dist/web/assets/{apex-B7Qs5AY5.js → apex-70xIZ0pH.js} +0 -0
  311. /package/dist/web/assets/{applescript-EbQNUCWb.js → applescript-C3qKqxmA.js} +0 -0
  312. /package/dist/web/assets/{apply-theme-Dd_cqGa-.js → apply-theme-DJ794zSQ.js} +0 -0
  313. /package/dist/web/assets/{ara-CtHdhFRw.js → ara-iGt2zixk.js} +0 -0
  314. /package/dist/web/assets/{asciidoc-BH6qin_O.js → asciidoc-Bs2t-06W.js} +0 -0
  315. /package/dist/web/assets/{asm-D1XU1ACk.js → asm-B-T0eqhE.js} +0 -0
  316. /package/dist/web/assets/{aurora-x-BkhcxkuS.js → aurora-x-D3h_9M3E.js} +0 -0
  317. /package/dist/web/assets/{awk-DijzB6o7.js → awk-CZwfwpPi.js} +0 -0
  318. /package/dist/web/assets/{ayu-dark-tysG77WC.js → ayu-dark-DulkglEA.js} +0 -0
  319. /package/dist/web/assets/{ayu-light-Dg0WMETC.js → ayu-light-DyNQiRpn.js} +0 -0
  320. /package/dist/web/assets/{ayu-mirage--RsJCjC4.js → ayu-mirage-CcEt4xkI.js} +0 -0
  321. /package/dist/web/assets/{ballerina-DT_5-l82.js → ballerina-OhQPjyHS.js} +0 -0
  322. /package/dist/web/assets/{bat-BRpDlkv0.js → bat-DqKcJTUn.js} +0 -0
  323. /package/dist/web/assets/{beancount--8Df-WGG.js → beancount-BdXlMi8T.js} +0 -0
  324. /package/dist/web/assets/{berry-Bc9fo35J.js → berry-DvgY6BkY.js} +0 -0
  325. /package/dist/web/assets/{bibtex-CwyBpp9X.js → bibtex-BSRJq0yM.js} +0 -0
  326. /package/dist/web/assets/{bicep-DiyH2Bs7.js → bicep-DpAdumKt.js} +0 -0
  327. /package/dist/web/assets/{bird2-CHgK4a2A.js → bird2-rlbtp8di.js} +0 -0
  328. /package/dist/web/assets/{c-BM1qL6-f.js → c-AjOLBXIs.js} +0 -0
  329. /package/dist/web/assets/{c3-D2oOjrP7.js → c3-DqIXz4Ia.js} +0 -0
  330. /package/dist/web/assets/{cadence-nS45wqF6.js → cadence-DAJtUpOE.js} +0 -0
  331. /package/dist/web/assets/{can-open-in-ppm-DwP9KU8o.js → can-open-in-ppm-CdCK2c2a.js} +0 -0
  332. /package/dist/web/assets/{catppuccin-frappe-BpnJHiCj.js → catppuccin-frappe-DUPoeZfb.js} +0 -0
  333. /package/dist/web/assets/{catppuccin-latte-Bb95Wj3h.js → catppuccin-latte-CK3U68Ql.js} +0 -0
  334. /package/dist/web/assets/{catppuccin-macchiato-Btx8c17W.js → catppuccin-macchiato-BzteLnIX.js} +0 -0
  335. /package/dist/web/assets/{catppuccin-mocha-B4DZOUGI.js → catppuccin-mocha-ozLd0aBR.js} +0 -0
  336. /package/dist/web/assets/{clarity-1ps69jU6.js → clarity-6KqEoBfz.js} +0 -0
  337. /package/dist/web/assets/{clipboard-CrHX8AYw.js → clipboard-B-gwJ8DF.js} +0 -0
  338. /package/dist/web/assets/{clojure-BklC0hKV.js → clojure-B_uBL5C7.js} +0 -0
  339. /package/dist/web/assets/{cmake-B573LYAQ.js → cmake-B3nxBNmj.js} +0 -0
  340. /package/dist/web/assets/{codeowners-BoYeX89M.js → codeowners-DkS-51at.js} +0 -0
  341. /package/dist/web/assets/{codeql-7Dhf5Udk.js → codeql-rpr1z_mR.js} +0 -0
  342. /package/dist/web/assets/{common-lisp-m1nxlthv.js → common-lisp-BfNbv_W6.js} +0 -0
  343. /package/dist/web/assets/{coq-DNhGmd4a.js → coq-EAW-1nw0.js} +0 -0
  344. /package/dist/web/assets/{csharp-P-nAurtS.js → csharp-BE3Gn5bq.js} +0 -0
  345. /package/dist/web/assets/{css-LYbSeh3-.js → css-Cr27CfPY.js} +0 -0
  346. /package/dist/web/assets/{csv-DHZZZm7X.js → csv-B5VtaPtH.js} +0 -0
  347. /package/dist/web/assets/{csv-parser-CY9Ggtg5.js → csv-parser-B2v8MoUy.js} +0 -0
  348. /package/dist/web/assets/{cue-D8yLUOle.js → cue-jm6lYNrx.js} +0 -0
  349. /package/dist/web/assets/{cypher-9cbW8RYA.js → cypher-DXkvK-pn.js} +0 -0
  350. /package/dist/web/assets/{d-ZihzhxqI.js → d-CgG1_yzd.js} +0 -0
  351. /package/dist/web/assets/{dark-plus-C8xIA1u3.js → dark-plus-CALzcIVB.js} +0 -0
  352. /package/dist/web/assets/{dart-CBm6jKc7.js → dart-BEVoLlWg.js} +0 -0
  353. /package/dist/web/assets/{dax-B3cx6YeV.js → dax-H0BW3Q_P.js} +0 -0
  354. /package/dist/web/assets/{desktop-C03SpXth.js → desktop-BtYq1l_0.js} +0 -0
  355. /package/dist/web/assets/{diff-D8LnnvFY.js → diff-CnBYdfTg.js} +0 -0
  356. /package/dist/web/assets/{dist-C4XoS_zo.js → dist-CJJKpgR7.js} +0 -0
  357. /package/dist/web/assets/{docker-DwFiOQWW.js → docker-COBitpld.js} +0 -0
  358. /package/dist/web/assets/{dotenv-CVJ_vFSQ.js → dotenv-CG0x1m7c.js} +0 -0
  359. /package/dist/web/assets/{dracula-DMw8UACY.js → dracula-CLCi47X-.js} +0 -0
  360. /package/dist/web/assets/{dracula-soft-BnB3nDrA.js → dracula-soft-BMv5cCAV.js} +0 -0
  361. /package/dist/web/assets/{dream-maker-2riXUQXo.js → dream-maker-1Bd4OSww.js} +0 -0
  362. /package/dist/web/assets/{emacs-lisp-BQdYaiB5.js → emacs-lisp-B-2zKLn-.js} +0 -0
  363. /package/dist/web/assets/{everforest-dark-C2FPIWdj.js → everforest-dark-BGVynCbV.js} +0 -0
  364. /package/dist/web/assets/{everforest-light-DMOWf9sD.js → everforest-light--rn3R7Cm.js} +0 -0
  365. /package/dist/web/assets/{fennel-JtSHp0vW.js → fennel-SWg9Us_u.js} +0 -0
  366. /package/dist/web/assets/{fish-CflDcRfe.js → fish-B04oqgKk.js} +0 -0
  367. /package/dist/web/assets/{fluent-D4eu6Vac.js → fluent-BefzAGMN.js} +0 -0
  368. /package/dist/web/assets/{format-bytes-DR3228bu.js → format-bytes-gQw5wzqa.js} +0 -0
  369. /package/dist/web/assets/{fortran-free-form-hO4RuC9Z.js → fortran-free-form-alw7jMxb.js} +0 -0
  370. /package/dist/web/assets/{gdscript-D7n3a8VM.js → gdscript-BAyhvjCx.js} +0 -0
  371. /package/dist/web/assets/{gdshader-BhUmrlzG.js → gdshader-Crl09X-B.js} +0 -0
  372. /package/dist/web/assets/{genie-VbyftqBp.js → genie-BSIGRHu7.js} +0 -0
  373. /package/dist/web/assets/{gherkin-BZzhvUUb.js → gherkin-DJhSnSWH.js} +0 -0
  374. /package/dist/web/assets/{github-dark-default-CMNi7dQX.js → github-dark-default-FVtXjcm8.js} +0 -0
  375. /package/dist/web/assets/{github-dark-dimmed-BRf_-LlY.js → github-dark-dimmed-CzrUPgSb.js} +0 -0
  376. /package/dist/web/assets/{github-dark-high-contrast-xanKBsRI.js → github-dark-high-contrast-1s9rF5EB.js} +0 -0
  377. /package/dist/web/assets/{github-dark-C4q41woW.js → github-dark-r8C6qwug.js} +0 -0
  378. /package/dist/web/assets/{github-light-BEQeNQCs.js → github-light-BvIWCkl7.js} +0 -0
  379. /package/dist/web/assets/{github-light-default-ceQrtdXg.js → github-light-default-CVdhzrxV.js} +0 -0
  380. /package/dist/web/assets/{github-light-high-contrast-doKbXzgW.js → github-light-high-contrast-CBAf6hjF.js} +0 -0
  381. /package/dist/web/assets/{gleam-Chzqf4fT.js → gleam-DvL1q7aa.js} +0 -0
  382. /package/dist/web/assets/{gn-CCN_-6fp.js → gn-BG5NvwAf.js} +0 -0
  383. /package/dist/web/assets/{gnuplot-CIplgwwP.js → gnuplot-BARnM-zG.js} +0 -0
  384. /package/dist/web/assets/{go-Cjj-9dRs.js → go-DXvjjq4q.js} +0 -0
  385. /package/dist/web/assets/{groovy-PqD4K7X1.js → groovy-CRylSKhr.js} +0 -0
  386. /package/dist/web/assets/{gruvbox-dark-hard-BAbpUSF-.js → gruvbox-dark-hard-BVPjnqm7.js} +0 -0
  387. /package/dist/web/assets/{gruvbox-dark-medium-BWcWXDBB.js → gruvbox-dark-medium-U_PDgq0a.js} +0 -0
  388. /package/dist/web/assets/{gruvbox-dark-soft-Dkx1okkk.js → gruvbox-dark-soft-CkzNtpbr.js} +0 -0
  389. /package/dist/web/assets/{gruvbox-light-hard-WVsDK0MM.js → gruvbox-light-hard-DfMmR2G8.js} +0 -0
  390. /package/dist/web/assets/{gruvbox-light-medium-tiR9t7gr.js → gruvbox-light-medium-BGCak-dd.js} +0 -0
  391. /package/dist/web/assets/{gruvbox-light-soft-HzHohaX6.js → gruvbox-light-soft-DnpM3fkN.js} +0 -0
  392. /package/dist/web/assets/{haskell-B1eIZfr6.js → haskell-DXgGIDD_.js} +0 -0
  393. /package/dist/web/assets/{haxe-BcDdi5xr.js → haxe-B7qlTpRz.js} +0 -0
  394. /package/dist/web/assets/{hcl-Dq-HKVni.js → hcl-ADWfVe_Q.js} +0 -0
  395. /package/dist/web/assets/{hjson-Dr9D9WVU.js → hjson-BaM9gLbq.js} +0 -0
  396. /package/dist/web/assets/{hlsl-Bo8t2FuZ.js → hlsl-iqaRA4MG.js} +0 -0
  397. /package/dist/web/assets/{horizon-DWG5IXc-.js → horizon-BPpTnhB9.js} +0 -0
  398. /package/dist/web/assets/{horizon-bright-DFr9wTTx.js → horizon-bright-yBLg3QbE.js} +0 -0
  399. /package/dist/web/assets/{houston-NAVNhkup.js → houston-eFOp0ySL.js} +0 -0
  400. /package/dist/web/assets/{hy-DnyvUk3B.js → hy-BALeMn3i.js} +0 -0
  401. /package/dist/web/assets/{image-gallery-DoFdNF9i.js → image-gallery-Bqb-wjNw.js} +0 -0
  402. /package/dist/web/assets/{imba-CPbR5W_A.js → imba-CdGUm_GD.js} +0 -0
  403. /package/dist/web/assets/{ini-lc8_Lt0y.js → ini-DG7imsqe.js} +0 -0
  404. /package/dist/web/assets/{java-B0KCo2vK.js → java-D5GTT474.js} +0 -0
  405. /package/dist/web/assets/{javascript-YqEbNRpd.js → javascript-V7WwJvRm.js} +0 -0
  406. /package/dist/web/assets/{json-Co0WtOlh.js → json-B9FhwAgR.js} +0 -0
  407. /package/dist/web/assets/{json5-2Jhb0QUN.js → json5--Abk7MUy.js} +0 -0
  408. /package/dist/web/assets/{jsonc-e72F11nU.js → jsonc-C8jb-Z6x.js} +0 -0
  409. /package/dist/web/assets/{jsonl-Bff8IPye.js → jsonl-CaJNxfkm.js} +0 -0
  410. /package/dist/web/assets/{jsonnet-DRCkb-_H.js → jsonnet-CPrKMSCU.js} +0 -0
  411. /package/dist/web/assets/{jssm-C6UiwVEm.js → jssm-DEu-9_uo.js} +0 -0
  412. /package/dist/web/assets/{jsx-u1aZlnfA.js → jsx-MfAsCWDW.js} +0 -0
  413. /package/dist/web/assets/{kanagawa-dragon-De-RQFV3.js → kanagawa-dragon-DnbcAduF.js} +0 -0
  414. /package/dist/web/assets/{kanagawa-lotus-K8elE4QU.js → kanagawa-lotus-yxsY3ew8.js} +0 -0
  415. /package/dist/web/assets/{kanagawa-wave-BrStl_zx.js → kanagawa-wave-C2RyvZaM.js} +0 -0
  416. /package/dist/web/assets/{kdl-CLCfMeZy.js → kdl-CvssmvcU.js} +0 -0
  417. /package/dist/web/assets/{kotlin-DEEC3pNh.js → kotlin-jufO49mU.js} +0 -0
  418. /package/dist/web/assets/{kusto-DTqRhCup.js → kusto-BAFnylR7.js} +0 -0
  419. /package/dist/web/assets/{laserwave-DsgpUSbA.js → laserwave-BgxFC4Ge.js} +0 -0
  420. /package/dist/web/assets/{lean-Dl9MI0Y3.js → lean-Bgt24V1D.js} +0 -0
  421. /package/dist/web/assets/{less-Bg21rao6.js → less-Bk_UaqsM.js} +0 -0
  422. /package/dist/web/assets/{libesm-CVkncAQz.js → libesm-dcbw4_18.js} +0 -0
  423. /package/dist/web/assets/{light-plus-DGNbbK1V.js → light-plus-nMxFfInN.js} +0 -0
  424. /package/dist/web/assets/{llvm-91_ZX3p-.js → llvm-3_PASDOO.js} +0 -0
  425. /package/dist/web/assets/{log-DSXzbq8u.js → log-CKm0CxB1.js} +0 -0
  426. /package/dist/web/assets/{logo-BQRNd4tc.js → logo-DFP1_5U6.js} +0 -0
  427. /package/dist/web/assets/{luau-BE-TMpiZ.js → luau-BcZnoyh3.js} +0 -0
  428. /package/dist/web/assets/{make-ePYGKTpc.js → make-CpNSwgwT.js} +0 -0
  429. /package/dist/web/assets/{markdown-Cst3wgMW.js → markdown-DhU3Djpv.js} +0 -0
  430. /package/dist/web/assets/{material-theme-9XyvnNLb.js → material-theme-DD5L3OqF.js} +0 -0
  431. /package/dist/web/assets/{material-theme-darker-H1VN4MTS.js → material-theme-darker-CG2_tD3R.js} +0 -0
  432. /package/dist/web/assets/{material-theme-lighter-DAreBbuF.js → material-theme-lighter-CzNkUc9Y.js} +0 -0
  433. /package/dist/web/assets/{material-theme-ocean-BpTR-3II.js → material-theme-ocean-BtLiAaF_.js} +0 -0
  434. /package/dist/web/assets/{material-theme-palenight-DUNzX711.js → material-theme-palenight-Brvjz035.js} +0 -0
  435. /package/dist/web/assets/{matlab-BpYNufBU.js → matlab-CCY0KtMD.js} +0 -0
  436. /package/dist/web/assets/{mdx-BYjfe1DK.js → mdx-CH6YY0aS.js} +0 -0
  437. /package/dist/web/assets/{mermaid-DPCcIW9B.js → mermaid-Bqh3gFI0.js} +0 -0
  438. /package/dist/web/assets/{min-dark-DnGOAGCo.js → min-dark-BUwfTzI6.js} +0 -0
  439. /package/dist/web/assets/{min-light-CwV-o31y.js → min-light-oLanXCOk.js} +0 -0
  440. /package/dist/web/assets/{mipsasm-DdeCPC97.js → mipsasm-CTh3hPWK.js} +0 -0
  441. /package/dist/web/assets/{mojo-BmxxZ3iM.js → mojo-DXdszZKa.js} +0 -0
  442. /package/dist/web/assets/{monokai-Cx6cQ-MA.js → monokai-TNE_tRxc.js} +0 -0
  443. /package/dist/web/assets/{moonbit-D2-Gj5vj.js → moonbit-jrk-Gx1X.js} +0 -0
  444. /package/dist/web/assets/{move-DSWGoQa8.js → move-DItn61bH.js} +0 -0
  445. /package/dist/web/assets/{narrat-D9TnZSSu.js → narrat-3kB4dkh0.js} +0 -0
  446. /package/dist/web/assets/{nextflow-groovy-BbL-8PwD.js → nextflow-groovy-CSKtwETr.js} +0 -0
  447. /package/dist/web/assets/{night-owl-CZitKm5d.js → night-owl-Dm91nSIq.js} +0 -0
  448. /package/dist/web/assets/{night-owl-light-DJVX1Pno.js → night-owl-light-riwrcPRg.js} +0 -0
  449. /package/dist/web/assets/{nix-R6hr3oln.js → nix-sLgl9zGF.js} +0 -0
  450. /package/dist/web/assets/{nord-ChGHya3l.js → nord-TWkJPI6M.js} +0 -0
  451. /package/dist/web/assets/{nushell-QQWB-GWx.js → nushell-CDZi4-Gf.js} +0 -0
  452. /package/dist/web/assets/{objective-c-C0pZ6y73.js → objective-c-DW9PboNp.js} +0 -0
  453. /package/dist/web/assets/{objective-cpp-BdzVM31a.js → objective-cpp-2XCCX6q1.js} +0 -0
  454. /package/dist/web/assets/{ocaml-D4KktNlS.js → ocaml-CxPdnjrh.js} +0 -0
  455. /package/dist/web/assets/{odin-Y-fypmGT.js → odin-BJjlKpkM.js} +0 -0
  456. /package/dist/web/assets/{one-dark-pro-BwecIxQL.js → one-dark-pro-K1KOmBZ7.js} +0 -0
  457. /package/dist/web/assets/{one-light-Cz7UVzLU.js → one-light-DQB-vUyZ.js} +0 -0
  458. /package/dist/web/assets/{openscad-DtRe3qYD.js → openscad-DCoLwn4j.js} +0 -0
  459. /package/dist/web/assets/{pascal-Ck6I1fGG.js → pascal-z2ktbbWp.js} +0 -0
  460. /package/dist/web/assets/{pkl-DdFK94VW.js → pkl-Dyq4-v6z.js} +0 -0
  461. /package/dist/web/assets/{plastic-BQSAzZwR.js → plastic-C4Rq5PnD.js} +0 -0
  462. /package/dist/web/assets/{plsql-DjXg_CP0.js → plsql-BCIjO63y.js} +0 -0
  463. /package/dist/web/assets/{po-Bw2SuM4r.js → po-_kXpd_0n.js} +0 -0
  464. /package/dist/web/assets/{poimandres-YMK6c5VN.js → poimandres-C9XggjB3.js} +0 -0
  465. /package/dist/web/assets/{polar-BMu17-O0.js → polar-DV_1L04z.js} +0 -0
  466. /package/dist/web/assets/{postcss-DWib10RZ.js → postcss-BuqS91mQ.js} +0 -0
  467. /package/dist/web/assets/{powerquery-Dht4CK0b.js → powerquery-DK13B2Dc.js} +0 -0
  468. /package/dist/web/assets/{powershell-DvrCg8ji.js → powershell-tkuhhtuP.js} +0 -0
  469. /package/dist/web/assets/{prisma-DbodYvCM.js → prisma-WNXfBtpr.js} +0 -0
  470. /package/dist/web/assets/{prolog-DZ-m6ysB.js → prolog-BzEdNKfO.js} +0 -0
  471. /package/dist/web/assets/{proto-HHpG3tGO.js → proto-B5meVsrA.js} +0 -0
  472. /package/dist/web/assets/{puppet-BljHe_75.js → puppet-C7h_p4r2.js} +0 -0
  473. /package/dist/web/assets/{purescript-DzCiFR0B.js → purescript-qH1KxAs6.js} +0 -0
  474. /package/dist/web/assets/{python-B5BQ27cC.js → python-DeTIYd5V.js} +0 -0
  475. /package/dist/web/assets/{qmldir-CYlcXrnn.js → qmldir-4Rm5AvD3.js} +0 -0
  476. /package/dist/web/assets/{qss-Ce7T_TEg.js → qss-YRbeNtr0.js} +0 -0
  477. /package/dist/web/assets/{r-Bku-2Jp_.js → r-DHwHK0Jh.js} +0 -0
  478. /package/dist/web/assets/{racket-DtfSL3WR.js → racket-gKn4SFLQ.js} +0 -0
  479. /package/dist/web/assets/{raku-CnDLsBJr.js → raku-DWTmAj3A.js} +0 -0
  480. /package/dist/web/assets/{red-vbqcE9b-.js → red-BFuHRZFS.js} +0 -0
  481. /package/dist/web/assets/{reg-DIDLT8-A.js → reg-DYoOF5tH.js} +0 -0
  482. /package/dist/web/assets/{regexp-CB4h-VPu.js → regexp-6rXQHD2-.js} +0 -0
  483. /package/dist/web/assets/{rel-CiQEnWXa.js → rel-Z_tTruCU.js} +0 -0
  484. /package/dist/web/assets/{resolve-theme-DPTQHAy1.js → resolve-theme-4fexHWl6.js} +0 -0
  485. /package/dist/web/assets/{riscv-R78iq5Rf.js → riscv-DfTfKuvU.js} +0 -0
  486. /package/dist/web/assets/{ron-DhYENxc4.js → ron-CsUtW8gQ.js} +0 -0
  487. /package/dist/web/assets/{rose-pine-5wBeyjfJ.js → rose-pine-Dng_vCo6.js} +0 -0
  488. /package/dist/web/assets/{rose-pine-dawn-FpKtPCuH.js → rose-pine-dawn-Ds88Nezf.js} +0 -0
  489. /package/dist/web/assets/{rose-pine-moon-BwcIYc7C.js → rose-pine-moon-DWpzrqNz.js} +0 -0
  490. /package/dist/web/assets/{rosmsg-DWIGAYMl.js → rosmsg-h2sO84oD.js} +0 -0
  491. /package/dist/web/assets/{rust-DU_ofKgt.js → rust-Dx86yfCi.js} +0 -0
  492. /package/dist/web/assets/{sass-U9SUuYEy.js → sass-BwwVhdT9.js} +0 -0
  493. /package/dist/web/assets/{scala-op4gjA6j.js → scala-WJqNEN-w.js} +0 -0
  494. /package/dist/web/assets/{scheme-tEjkR8rL.js → scheme-uwj-t1Rp.js} +0 -0
  495. /package/dist/web/assets/{sdbl-C6SSRmZg.js → sdbl-BYy5hgEz.js} +0 -0
  496. /package/dist/web/assets/{shellscript-Bf2KiwQj.js → shellscript-DWTW_w2K.js} +0 -0
  497. /package/dist/web/assets/{slack-dark-oGgCey8r.js → slack-dark-BvhGq5vQ.js} +0 -0
  498. /package/dist/web/assets/{slack-ochin-CemlB8cE.js → slack-ochin-C9g0ZRFr.js} +0 -0
  499. /package/dist/web/assets/{smalltalk-CTE-6jrZ.js → smalltalk-ZEiZ6i7U.js} +0 -0
  500. /package/dist/web/assets/{snazzy-light-DoEIGnmz.js → snazzy-light-29OA24q5.js} +0 -0
  501. /package/dist/web/assets/{solarized-dark-CStiJyBg.js → solarized-dark-Bnq9IOn_.js} +0 -0
  502. /package/dist/web/assets/{solarized-light-CfuNycS9.js → solarized-light-CYdI7T5g.js} +0 -0
  503. /package/dist/web/assets/{solidity-DL6sO5rd.js → solidity-DcuIDB-_.js} +0 -0
  504. /package/dist/web/assets/{splunk-yK4ZUFBB.js → splunk-D5ONE91g.js} +0 -0
  505. /package/dist/web/assets/{sql-Lw03eoN8.js → sql-DIwJJDU-.js} +0 -0
  506. /package/dist/web/assets/{ssh-config-DeRp25TR.js → ssh-config-D8717tLI.js} +0 -0
  507. /package/dist/web/assets/{stylus-D8OMsPh-.js → stylus-Cm1lO4Y6.js} +0 -0
  508. /package/dist/web/assets/{swift-nsl9stPV.js → swift-X8oWpSeU.js} +0 -0
  509. /package/dist/web/assets/{synthwave-84-exAgsgpf.js → synthwave-84-DF-t1UKY.js} +0 -0
  510. /package/dist/web/assets/{system-verilog-DBWf00T6.js → system-verilog-JYyHFpPf.js} +0 -0
  511. /package/dist/web/assets/{systemd-nhu27Dw5.js → systemd-Da-5Ma_c.js} +0 -0
  512. /package/dist/web/assets/{talonscript-CNOEcGDc.js → talonscript-CXraVPho.js} +0 -0
  513. /package/dist/web/assets/{tasl-CjYZenSH.js → tasl-BCmWezH9.js} +0 -0
  514. /package/dist/web/assets/{tcl-BVA09RDz.js → tcl-BTufzfbf.js} +0 -0
  515. /package/dist/web/assets/{terraform-C5EloH1q.js → terraform-CtUA9c8W.js} +0 -0
  516. /package/dist/web/assets/{tokyo-night-D764DdhO.js → tokyo-night-BCThYXmz.js} +0 -0
  517. /package/dist/web/assets/{toml-CCDYblSB.js → toml-D5YlDr6Y.js} +0 -0
  518. /package/dist/web/assets/{tsv-BZ4sA05e.js → tsv-CBB-P_Sl.js} +0 -0
  519. /package/dist/web/assets/{tsx-DPLBzAt5.js → tsx-D5B4juDp.js} +0 -0
  520. /package/dist/web/assets/{turtle-CwGHCq40.js → turtle-D8PCeJ-v.js} +0 -0
  521. /package/dist/web/assets/{typescript-CUH0vBAl.js → typescript-CMPnTawp.js} +0 -0
  522. /package/dist/web/assets/{typespec-Bq31Vq4u.js → typespec-CHxldxIW.js} +0 -0
  523. /package/dist/web/assets/{typst-MD9BR9W5.js → typst-Q8CqX5OR.js} +0 -0
  524. /package/dist/web/assets/{utils-u2fbYPrY.js → utils-QHe_Q6UF.js} +0 -0
  525. /package/dist/web/assets/{v-DZV7IxIT.js → v-Bf2hKAMu.js} +0 -0
  526. /package/dist/web/assets/{vala-urd1zi9S.js → vala-Cbete-UE.js} +0 -0
  527. /package/dist/web/assets/{vb-DIZU3zbJ.js → vb-CA-xWAcX.js} +0 -0
  528. /package/dist/web/assets/{vendor-xterm-DCj0zgSC.js → vendor-xterm-BHKF_Nsf.js} +0 -0
  529. /package/dist/web/assets/{verilog-Ndz_ciTA.js → verilog-B3wb8CfT.js} +0 -0
  530. /package/dist/web/assets/{vesper-C86M7LJp.js → vesper-D6r3VJq_.js} +0 -0
  531. /package/dist/web/assets/{vhdl-_klwDUjd.js → vhdl-C42S_797.js} +0 -0
  532. /package/dist/web/assets/{viml-DzRXWoQh.js → viml-BePrIAs8.js} +0 -0
  533. /package/dist/web/assets/{vitesse-black-TWZ20_3U.js → vitesse-black-DRqn61Ck.js} +0 -0
  534. /package/dist/web/assets/{vitesse-dark-Dl7R6fy9.js → vitesse-dark-39_8UE-w.js} +0 -0
  535. /package/dist/web/assets/{vitesse-light-Cs0Dt2_n.js → vitesse-light-B1jwrxDm.js} +0 -0
  536. /package/dist/web/assets/{vyper-qnCVj8ia.js → vyper-tDJv3imF.js} +0 -0
  537. /package/dist/web/assets/{wasm-Ckx9jBPe.js → wasm-ChtccNfv.js} +0 -0
  538. /package/dist/web/assets/{wasm-Dy-SJ3W9.js → wasm-DR7eskZH.js} +0 -0
  539. /package/dist/web/assets/{wenyan-DTEy2Lx-.js → wenyan-CezVfqN3.js} +0 -0
  540. /package/dist/web/assets/{wgsl-DC7n63Sy.js → wgsl-CwOcIiIG.js} +0 -0
  541. /package/dist/web/assets/{wikitext-1zFoZiW6.js → wikitext-C5coomYc.js} +0 -0
  542. /package/dist/web/assets/{wit-DtTfCRph.js → wit-C9yyX6-U.js} +0 -0
  543. /package/dist/web/assets/{wolfram-B2Bgu1KL.js → wolfram-BWi0rMAa.js} +0 -0
  544. /package/dist/web/assets/{yaml-B-Jxk0IQ.js → yaml-CGXhKUtT.js} +0 -0
  545. /package/dist/web/assets/{zenscript-BWRfvNER.js → zenscript-Do7WLoJh.js} +0 -0
  546. /package/dist/web/assets/{zig-CkwuvETm.js → zig-Cr80Qrru.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.19.0] - 2026-09-08
6
+
7
+ ### Added
8
+ - **Remote Desktop works on macOS hosts** — the screen is captured with avfoundation and encoded by VideoToolbox, mouse and keyboard are injected through CoreGraphics (no helper binary to install or sign). Typing from a phone's soft keyboard now goes through as text — Android keyboards send no key codes, so until now nothing arrived — and accented or CJK characters land intact on both macOS (CoreGraphics Unicode events) and Windows (`KEYEVENTF_UNICODE`).
9
+ - **Remote Desktop can switch between the host's displays** — a dropdown in the window (top-right, next to the stats toggle) and a Monitor button in the mobile toolbar cycle through them; mouse and touch land on the chosen screen even when it sits at negative coordinates. macOS only for now; Windows keeps streaming the whole virtual desktop.
10
+ - **Remote Desktop tells you what the host is missing** instead of hiding the entry or showing a black screen: a checklist before connecting covers ffmpeg (one tap types `brew install ffmpeg` / `winget install …` into a PPM terminal) and, on macOS, the Screen Recording and Accessibility permissions (buttons open the right System Settings pane on the host). Missing input permission still lets you watch in view-only mode.
11
+
12
+ ### Fixed
13
+ - **A screen-capture ffmpeg no longer outlives its session on macOS** — the process ignores SIGTERM there and would have leaked one per connection.
14
+
15
+ ## [0.18.16] - 2026-09-08
16
+
17
+ ### Changed
18
+ - **Remote Desktop is on by default** — the nav entry now shows on any host with ffmpeg, and opening it first shows a warning (whole screen + input, anyone signed in can use it, beta limits) with a "don't show again" option. Set `REMOTE_DESKTOP_ENABLED=0` to remove the feature from a host entirely.
19
+
20
+ ### Fixed
21
+ - **A second PPM on the same machine can no longer hijack your domain** — a dev instance under its own `PPM_HOME` derived the same tunnel name, joined the production tunnel, and the hostname then answered from whichever instance Cloudflare picked. Names now include the PPM_HOME, and setup refuses a tunnel another instance is already serving.
22
+
5
23
  ## [0.18.15] - 2026-09-08
6
24
 
7
25
  ### Added
package/CLAUDE.md CHANGED
@@ -74,6 +74,9 @@ Exceptions (intentionally use real `homedir()`):
74
74
  - **Nested subagents are never streamed**: the SDK stamps `parent_tool_use_id` only on agents the session itself spawned. An agent that spawns another agent (a reviewer running `Skill code-review`, a planner calling researchers) produces **zero** stream events for that grandchild, so the Agent card would freeze on the forking step for minutes. Its transcript still lands in `<session>/subagents/agent-<id>.jsonl`, with a meta carrying only `parentAgentId` (raw id, no `agent-` prefix) and no `toolUseId`. `src/services/nested-subagent-spy.ts` tails those during the turn and `subagent-transcript-merger.ts` folds them in flat, time-ordered, on reload — both via `groupSubagentsByCard`, which walks the `parentAgentId` chain to the root card.
75
75
  - **Agent teams are implicit and mostly not in `~/.claude/teams/`**: there is no `TeamCreate` tool any more. A team appears as `~/.claude/teams/<sessionId>/inboxes/*.json` with **no `config.json`**, so anything that requires a config sees no team at all. The inboxes only hold what was sent *to* each handle — in practice just the lead's task assignments — so they can neither say who is working nor show a teammate's replies. Both live in the agent transcripts under `~/.claude/projects/<slug>/<sessionId>/subagents/`: `agent-<id>.meta.json` maps the teammate `name` to its transcript, a transcript being appended to means that teammate is running, and its replies are `SendMessage` tool calls inside it. See `src/services/team-member-activity/`.
76
76
 
77
+ - **Remote desktop on macOS (avfoundation)**: address the screen by **name** (`-i "Capture screen 0"`), never by index — the device list reorders at runtime when a Continuity Camera joins (index 3 became the iPhone). `-framerate` is ignored (the screen input delivers at display refresh, 120–165 fps, with a stuck pts) → `-use_wallclock_as_timestamps 1` + `-vf fps=30`. ffmpeg-avfoundation ignores SIGTERM/SIGINT → `proc.kill("SIGKILL")` or it leaks one process per session. No Screen Recording grant = **black frames, no error**; no Accessibility grant = silent no-op input — both are pre-flighted in `remote-desktop-requirements.ts`, never inferred from failures. TCC keys the grant to the `bun` executable.
78
+ - **Remote desktop text injection on macOS**: `CGEventKeyboardSetUnicodeString` still carries a keycode, and IMEs that hook by key (OpenKey/EVKey) re-read keycode 0 as a literal "a" (`"日本"` → `"â"`); function/unassigned keycodes produce no text at all. The carrier is Space (`TEXT_CARRIER_KEYCODE`). Text is still subject to the host's active IME (Telex rewrote "World" → "ửold") on every OS.
79
+
77
80
  ## UI Rules
78
81
 
79
82
  When creating or modifying any UI component, you MUST read and follow `docs/design-guidelines.md`, especially the **Mobile-First UI Rules** section. Key rules:
@@ -109,4 +112,5 @@ Before planning or implementing a new feature, read `docs/project-roadmap.md` to
109
112
  - `src/services/host-info/` — Per-OS drives/known-folders/pinned-folders providers (`/api/system/host`)
110
113
  - `src/services/system-metrics/` — Task Manager backend (`/api/system/resources*`): per-OS collectors, one long-lived PowerShell child on Windows (never spawn per tick — 32 MiB commit leak each), light/full SSE tiers with leases, guarded kill. UI in `src/web/components/system/` (floating window on desktop, tab on mobile)
111
114
  - `src/services/db-backup/` — verified `VACUUM INTO` snapshots of `ppm.db` (hourly + at start + before every migration), GFS retention, `ppm backup` / `ppm restore`
115
+ - `src/services/remote-desktop/` — Remote Desktop: one ffmpeg per WS session (`remote-desktop-capture.ts` + per-platform `remote-desktop-capture-input.ts` + `remote-desktop-encoder-args.ts`) → Annex-B H.264 access units → WebCodecs; input via `remote-desktop-input.ts` facade over `remote-desktop-input-{win32,darwin}.ts` (bun:ffi, no helper binary); host checklist in `remote-desktop-requirements.ts` (ffmpeg install command, macOS TCC pre-flight); display list in `remote-desktop-displays.ts` (`CGGetActiveDisplayList` order = avfoundation `Capture screen N`, names/bounds via one JXA call). Routes `src/server/routes/remote-desktop.ts`, WS `src/server/ws/remote-desktop.ts`, UI `src/web/components/remote-desktop/`, e2e `tests/e2e/remote-desktop-e2e.mjs`
112
116
  - `src/services/named-tunnel/` — Named tunnel (stable `https://<prefix>.<zone>` URL via Cloudflare login), orchestrated from `src/server/routes/named-tunnel.ts`, spawned/probed by the supervisor; UI in `src/web/components/tunnels/named-tunnel/`
@@ -71,4 +71,4 @@ This skill covers the `ppm` CLI, its HTTP API, and its config DB. It does **not*
71
71
  - Third-party extensions (inspect via `ppm ext list`).
72
72
  - The Claude Agent SDK internals (separate skill).
73
73
 
74
- <!-- Generated for PPM v0.18.15 at build time. Re-run `ppm export skill --install` to refresh. -->
74
+ <!-- Generated for PPM v0.19.0 at build time. Re-run `ppm export skill --install` to refresh. -->
@@ -781,7 +781,7 @@ Show recent runs for a schedule
781
781
  Manage and inspect discovered skills & commands
782
782
 
783
783
  **Options:**
784
- - `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
784
+ - `--project <path>` — Project path (default: `"/Users/hienlh/Projects/ppm"`)
785
785
 
786
786
  **Usage:** `ppm skills [options] [command]`
787
787
 
@@ -791,7 +791,7 @@ List all discovered skills and commands
791
791
 
792
792
  **Options:**
793
793
  - `--json` — JSON output
794
- - `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
794
+ - `--project <path>` — Project path (default: `"/Users/hienlh/Projects/ppm"`)
795
795
 
796
796
  ### `ppm skills search`
797
797
 
@@ -799,7 +799,7 @@ Fuzzy search skills and commands
799
799
 
800
800
  **Options:**
801
801
  - `--json` — JSON output
802
- - `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
802
+ - `--project <path>` — Project path (default: `"/Users/hienlh/Projects/ppm"`)
803
803
 
804
804
  **Usage:** `ppm skills search [options] <query>`
805
805
 
@@ -809,7 +809,7 @@ Show detailed info for a specific skill
809
809
 
810
810
  **Options:**
811
811
  - `--json` — JSON output
812
- - `--project <path>` — Project path (default: `"C:\\Users\\PC\\ppm"`)
812
+ - `--project <path>` — Project path (default: `"/Users/hienlh/Projects/ppm"`)
813
813
 
814
814
  **Usage:** `ppm skills info [options] <name>`
815
815
 
@@ -197,6 +197,7 @@ _Base URL: `http://localhost:8080` (default; override via `ppm config set port <
197
197
  - `GET /api/remote-desktop/auth`
198
198
  - `GET /api/remote-desktop/capabilities`
199
199
  - `GET /api/remote-desktop/auth`
200
+ - `POST /api/remote-desktop/requirements/:id/:action`
200
201
  - `POST /api/remote-desktop/session`
201
202
 
202
203
  ## /api/schedules
@@ -334,4 +335,4 @@ _Base URL: `http://localhost:8080` (default; override via `ppm config set port <
334
335
  - `ws://<host>/ws/terminal` — PTY terminal multiplexer
335
336
  - `ws://<host>/ws/extensions` — extension host channel
336
337
 
337
- <!-- Generated from src/server/routes/ for PPM v0.18.15 -->
338
+ <!-- Generated from src/server/routes/ for PPM v0.19.0 -->
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import{a as r,c as i,i as a,l as o,n as s,o as c,r as l,s as u,t as d,u as f}from"./context-menu-BpwUny-o.js";import{t as p}from"./circle-BCy0AUCo.js";import{n as m}from"./utils-u2fbYPrY.js";import{n as h}from"./use-is-mobile-DUuki97q.js";import{a as g,i as _,n as v,o as y,r as b,t as x}from"./mobile-bottom-sheet-Cj1YBq-c.js";var S=e(t(),1),C=n(),w=400,T=S.createContext(!1),E=S.createContext({});function D({children:e,...t}){let n=h(),[r,i]=(0,S.useState)(!1);return n?(0,C.jsx)(T.Provider,{value:!0,children:(0,C.jsx)(v.Provider,{value:{open:r,setOpen:i},children:e})}):(0,C.jsx)(d,{...t,children:e})}function O({children:e,asChild:t,...n}){let r=S.useContext(T),{setOpen:i}=S.useContext(v),a=(0,S.useRef)(void 0),o=(0,S.useRef)(!1);return r?(0,C.jsx)(`div`,{onTouchStart:(0,S.useCallback)(e=>{e.stopPropagation(),o.current=!1,a.current=setTimeout(()=>{i(!0),o.current=!0},w)},[i]),onTouchMove:(0,S.useCallback)(()=>{clearTimeout(a.current)},[]),onTouchEnd:(0,S.useCallback)(()=>{clearTimeout(a.current)},[]),onClickCapture:(0,S.useCallback)(e=>{o.current&&=(e.preventDefault(),e.stopPropagation(),!1)},[]),onContextMenu:(0,S.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),className:`contents`,children:e}):(0,C.jsx)(f,{asChild:t,...n,children:e})}function k({children:e,className:t,...n}){if(!S.useContext(T))return(0,C.jsx)(s,{className:t,...n,children:e});let{open:r,setOpen:i}=S.useContext(v);return(0,C.jsx)(x,{open:r,onClose:()=>i(!1),className:m(`p-2`,t),children:(0,C.jsx)(`div`,{className:`max-h-[60vh] overflow-y-auto`,children:e})})}function A({children:e,className:t,variant:n,onClick:r,disabled:i,...a}){return S.useContext(T)?(0,C.jsx)(b,{className:t,variant:n,disabled:i,onClick:r,children:e}):(0,C.jsx)(l,{className:t,variant:n,disabled:i,onClick:r,...a,children:e})}function j({className:e,...t}){return S.useContext(T)?(0,C.jsx)(_,{className:e}):(0,C.jsx)(c,{className:e,...t})}function M({value:e,onValueChange:t,children:n,...r}){return S.useContext(T)?(0,C.jsx)(E.Provider,{value:{value:e,onValueChange:t},children:n}):(0,C.jsx)(a,{value:e,onValueChange:t,...r,children:n})}function N({value:e,children:t,className:n,...i}){let a=S.useContext(T),{value:o,onValueChange:s}=S.useContext(E);return a?(0,C.jsxs)(b,{className:n,onClick:()=>s?.(e),children:[(0,C.jsx)(`span`,{className:`flex size-4 shrink-0 items-center justify-center`,children:o===e&&(0,C.jsx)(p,{className:`size-2 fill-current`})}),t]}):(0,C.jsx)(r,{value:e,className:n,...i,children:t})}function P({children:e,...t}){return S.useContext(T)?(0,C.jsx)(C.Fragment,{children:e}):(0,C.jsx)(u,{...t,children:e})}function F({children:e,className:t,...n}){return S.useContext(T)?(0,C.jsx)(y,{className:t,children:e}):(0,C.jsx)(o,{className:t,...n,children:e})}function I({children:e,className:t,...n}){return S.useContext(T)?(0,C.jsx)(g,{className:t,children:e}):(0,C.jsx)(i,{className:t,...n,children:e})}export{N as a,I as c,M as i,F as l,k as n,j as o,A as r,P as s,D as t,O as u};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,y as n}from"./vendor-markdown-CKTlmXbz.js";import{a as r,c as i,i as a,l as o,n as s,o as c,r as l,s as u,t as d,u as f}from"./context-menu-BEAa1qhd.js";import{t as p}from"./circle-4g2coECH.js";import{n as m}from"./utils-QHe_Q6UF.js";import{n as h}from"./use-is-mobile-ClE-UcPF.js";import{a as g,i as _,n as v,o as y,r as b,t as x}from"./mobile-bottom-sheet-DXn5g2LB.js";var S=e(t(),1),C=n(),w=400,T=S.createContext(!1),E=S.createContext({});function D({children:e,...t}){let n=h(),[r,i]=(0,S.useState)(!1);return n?(0,C.jsx)(T.Provider,{value:!0,children:(0,C.jsx)(v.Provider,{value:{open:r,setOpen:i},children:e})}):(0,C.jsx)(d,{...t,children:e})}function O({children:e,asChild:t,...n}){let r=S.useContext(T),{setOpen:i}=S.useContext(v),a=(0,S.useRef)(void 0),o=(0,S.useRef)(!1);return r?(0,C.jsx)(`div`,{onTouchStart:(0,S.useCallback)(e=>{e.stopPropagation(),o.current=!1,a.current=setTimeout(()=>{i(!0),o.current=!0},w)},[i]),onTouchMove:(0,S.useCallback)(()=>{clearTimeout(a.current)},[]),onTouchEnd:(0,S.useCallback)(()=>{clearTimeout(a.current)},[]),onClickCapture:(0,S.useCallback)(e=>{o.current&&=(e.preventDefault(),e.stopPropagation(),!1)},[]),onContextMenu:(0,S.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),className:`contents`,children:e}):(0,C.jsx)(f,{asChild:t,...n,children:e})}function k({children:e,className:t,...n}){if(!S.useContext(T))return(0,C.jsx)(s,{className:t,...n,children:e});let{open:r,setOpen:i}=S.useContext(v);return(0,C.jsx)(x,{open:r,onClose:()=>i(!1),className:m(`p-2`,t),children:(0,C.jsx)(`div`,{className:`max-h-[60vh] overflow-y-auto`,children:e})})}function A({children:e,className:t,variant:n,onClick:r,disabled:i,...a}){return S.useContext(T)?(0,C.jsx)(b,{className:t,variant:n,disabled:i,onClick:r,children:e}):(0,C.jsx)(l,{className:t,variant:n,disabled:i,onClick:r,...a,children:e})}function j({className:e,...t}){return S.useContext(T)?(0,C.jsx)(_,{className:e}):(0,C.jsx)(c,{className:e,...t})}function M({value:e,onValueChange:t,children:n,...r}){return S.useContext(T)?(0,C.jsx)(E.Provider,{value:{value:e,onValueChange:t},children:n}):(0,C.jsx)(a,{value:e,onValueChange:t,...r,children:n})}function N({value:e,children:t,className:n,...i}){let a=S.useContext(T),{value:o,onValueChange:s}=S.useContext(E);return a?(0,C.jsxs)(b,{className:n,onClick:()=>s?.(e),children:[(0,C.jsx)(`span`,{className:`flex size-4 shrink-0 items-center justify-center`,children:o===e&&(0,C.jsx)(p,{className:`size-2 fill-current`})}),t]}):(0,C.jsx)(r,{value:e,className:n,...i,children:t})}function P({children:e,...t}){return S.useContext(T)?(0,C.jsx)(C.Fragment,{children:e}):(0,C.jsx)(u,{...t,children:e})}function F({children:e,className:t,...n}){return S.useContext(T)?(0,C.jsx)(y,{className:t,children:e}):(0,C.jsx)(o,{className:t,...n,children:e})}function I({children:e,className:t,...n}){return S.useContext(T)?(0,C.jsx)(g,{className:t,children:e}):(0,C.jsx)(i,{className:t,...n,children:e})}export{N as a,I as c,M as i,F as l,k as n,j as o,A as r,P as s,D as t,O as u};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./loader-circle-DouKgIXy.js";import{t as i}from"./lock-CNxUGpTk.js";import{t as a}from"./save-CtW9ojKk.js";import{t as o}from"./triangle-alert-85BQgs3T.js";import{s}from"./api-client-BkGKTjsq.js";import"./vendor-mermaid-CtDsSxbM.js";import"./settings-store-BpcY5aYE.js";import{n as c}from"./utils-u2fbYPrY.js";import{A as l,M as u,N as d,P as f,Wt as p,j as m,s as h}from"./index-H_gScEOk.js";import{t as g}from"./use-monaco-theme-DQY1ZSaf.js";var _=e(t(),1),v=n();function y({metadata:e}){let t=e?.filePath,n=e?.name,c=e?.resourceType??`skill`,y=e?.scope??`user`,x=e?.readOnly===!0,S=e?.shadowed===!0,C=e?.shadowedBy,w=e?.project??``,[T,E]=(0,_.useState)(``),[D,O]=(0,_.useState)(``),[k,A]=(0,_.useState)(!0),[j,M]=(0,_.useState)(null),[N,P]=(0,_.useState)(!1),F=g(),I=(0,_.useRef)(``),L=T!==D;(0,_.useEffect)(()=>{let e=!1;return A(!0),M(null),d(t,w).then(t=>{e||(E(t.content),O(t.content),I.current=t.content)}).catch(t=>{e||M(t.message)}).finally(()=>{e||A(!1)}),()=>{e=!0}},[t,w]);let R=(0,_.useCallback)(async()=>{if(x||N)return;let e=I.current;if(e!==D){P(!0);try{await f(t,e,w),O(e),E(e),s.success(`Saved`),u.getState().reload()}catch(e){s.error(e.message)}finally{P(!1)}}},[t,w,D,x,N]);(0,_.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),R())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[R]);let z=m[c];return(0,v.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,v.jsx)(z,{className:`size-4 text-text-subtle`}),(0,v.jsx)(`span`,{className:`text-sm font-semibold`,children:n}),(0,v.jsx)(l,{scope:y}),L&&!x&&(0,v.jsx)(`span`,{className:`size-1.5 rounded-full bg-primary`,title:`Unsaved changes`}),(0,v.jsx)(`div`,{className:`flex-1`}),(0,v.jsxs)(`span`,{className:`hidden sm:block text-[11px] text-text-subtle`,children:[c,` · markdown`]}),!x&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`button`,{onClick:()=>E(D),disabled:!L||N,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-text-secondary hover:bg-surface-elevated disabled:opacity-40`,children:[(0,v.jsx)(p,{className:`size-3.5`}),` Revert`]}),(0,v.jsxs)(`button`,{onClick:()=>void R(),disabled:!L||N,className:`flex items-center gap-1 rounded bg-primary px-2.5 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-40`,children:[N?(0,v.jsx)(r,{className:`size-3.5 animate-spin`}):(0,v.jsx)(a,{className:`size-3.5`}),` Save`]})]})]}),x&&(0,v.jsx)(b,{icon:i,tone:`muted`,children:`Bundled resource — read-only. Duplicate it (from the AI Resources panel) to make an editable copy.`}),S&&C&&(0,v.jsxs)(b,{icon:o,tone:`warn`,children:[`This `,c,` is overridden by another “`,C.name,`” from a higher-priority source (`,C.source,`). It is currently inactive.`]}),(0,v.jsx)(`div`,{className:`min-h-0 flex-1`,children:k?(0,v.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,v.jsx)(r,{className:`size-5 animate-spin text-primary`})}):j?(0,v.jsx)(`div`,{className:`p-6 text-center text-sm text-destructive`,children:j}):(0,v.jsx)(h,{height:`100%`,language:`markdown`,theme:F,value:T,onChange:e=>{let t=e??``;I.current=t,E(t)},options:{readOnly:x,minimap:{enabled:!1},fontSize:13,wordWrap:`on`,scrollBeyondLastLine:!1,lineNumbers:`on`}})})]})}function b({icon:e,tone:t,children:n}){return(0,v.jsxs)(`div`,{className:c(`flex items-start gap-2 px-3 py-2 text-[12px] shrink-0 border-b border-border`,t===`warn`?`bg-amber-500/10 text-amber-300`:`bg-surface-elevated text-text-secondary`),children:[(0,v.jsx)(e,{className:`mt-0.5 size-3.5 shrink-0`}),(0,v.jsx)(`span`,{children:n})]})}export{y as AiResourceEditor};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,y as n}from"./vendor-markdown-CKTlmXbz.js";import"./vendor-ui-CXJtBULr.js";import{t as r}from"./loader-circle-DD65e9-7.js";import{t as i}from"./lock-BEtt_eTO.js";import{t as a}from"./save-Dxq-Zepc.js";import{t as o}from"./triangle-alert-qQ6Plydp.js";import{s}from"./api-client-qRWu6_s5.js";import"./vendor-mermaid-0Nt-ew76.js";import"./settings-store-Dp4i8zeA.js";import{n as c}from"./utils-QHe_Q6UF.js";import{A as l,M as u,N as d,Ut as f,j as p,k as m,s as h}from"./index-BkHlMfPD.js";import{t as g}from"./use-monaco-theme-DaxAk3gB.js";var _=e(t(),1),v=n();function y({metadata:e}){let t=e?.filePath,n=e?.name,c=e?.resourceType??`skill`,y=e?.scope??`user`,x=e?.readOnly===!0,S=e?.shadowed===!0,C=e?.shadowedBy,w=e?.project??``,[T,E]=(0,_.useState)(``),[D,O]=(0,_.useState)(``),[k,A]=(0,_.useState)(!0),[j,M]=(0,_.useState)(null),[N,P]=(0,_.useState)(!1),F=g(),I=(0,_.useRef)(``),L=T!==D;(0,_.useEffect)(()=>{let e=!1;return A(!0),M(null),u(t,w).then(t=>{e||(E(t.content),O(t.content),I.current=t.content)}).catch(t=>{e||M(t.message)}).finally(()=>{e||A(!1)}),()=>{e=!0}},[t,w]);let R=(0,_.useCallback)(async()=>{if(x||N)return;let e=I.current;if(e!==D){P(!0);try{await d(t,e,w),O(e),E(e),s.success(`Saved`),p.getState().reload()}catch(e){s.error(e.message)}finally{P(!1)}}},[t,w,D,x,N]);(0,_.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),R())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[R]);let z=l[c];return(0,v.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,v.jsx)(z,{className:`size-4 text-text-subtle`}),(0,v.jsx)(`span`,{className:`text-sm font-semibold`,children:n}),(0,v.jsx)(m,{scope:y}),L&&!x&&(0,v.jsx)(`span`,{className:`size-1.5 rounded-full bg-primary`,title:`Unsaved changes`}),(0,v.jsx)(`div`,{className:`flex-1`}),(0,v.jsxs)(`span`,{className:`hidden sm:block text-[11px] text-text-subtle`,children:[c,` · markdown`]}),!x&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`button`,{onClick:()=>E(D),disabled:!L||N,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-text-secondary hover:bg-surface-elevated disabled:opacity-40`,children:[(0,v.jsx)(f,{className:`size-3.5`}),` Revert`]}),(0,v.jsxs)(`button`,{onClick:()=>void R(),disabled:!L||N,className:`flex items-center gap-1 rounded bg-primary px-2.5 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-40`,children:[N?(0,v.jsx)(r,{className:`size-3.5 animate-spin`}):(0,v.jsx)(a,{className:`size-3.5`}),` Save`]})]})]}),x&&(0,v.jsx)(b,{icon:i,tone:`muted`,children:`Bundled resource — read-only. Duplicate it (from the AI Resources panel) to make an editable copy.`}),S&&C&&(0,v.jsxs)(b,{icon:o,tone:`warn`,children:[`This `,c,` is overridden by another “`,C.name,`” from a higher-priority source (`,C.source,`). It is currently inactive.`]}),(0,v.jsx)(`div`,{className:`min-h-0 flex-1`,children:k?(0,v.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,v.jsx)(r,{className:`size-5 animate-spin text-primary`})}):j?(0,v.jsx)(`div`,{className:`p-6 text-center text-sm text-destructive`,children:j}):(0,v.jsx)(h,{height:`100%`,language:`markdown`,theme:F,value:T,onChange:e=>{let t=e??``;I.current=t,E(t)},options:{readOnly:x,minimap:{enabled:!1},fontSize:13,wordWrap:`on`,scrollBeyondLastLine:!1,lineNumbers:`on`}})})]})}function b({icon:e,tone:t,children:n}){return(0,v.jsxs)(`div`,{className:c(`flex items-start gap-2 px-3 py-2 text-[12px] shrink-0 border-b border-border`,t===`warn`?`bg-amber-500/10 text-amber-300`:`bg-surface-elevated text-text-secondary`),children:[(0,v.jsx)(e,{className:`mt-0.5 size-3.5 shrink-0`}),(0,v.jsx)(`span`,{children:n})]})}export{y as AiResourceEditor};
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{b as t,y as n}from"./vendor-markdown-CKTlmXbz.js";import{C as r,S as i,T as a,_ as o,b as s,g as c,h as l,j as u,m as d,v as f,w as p,x as m,y as h}from"./vendor-ui-CXJtBULr.js";import{t as g}from"./createLucideIcon-ConhwJnb.js";import{d as _}from"./context-menu-BEAa1qhd.js";import{t as v}from"./chevron-down-D7CbB5f6.js";import{n as y,t as b}from"./upload-7Zs6oaK5.js";import{t as x}from"./download-DAF7SXcf.js";import{t as S}from"./external-link-ojDHcQxQ.js";import{t as C}from"./loader-circle-DD65e9-7.js";import{t as w}from"./monitor-smartphone-C1wUPOSg.js";import{t as T}from"./refresh-cw-BALzw7L3.js";import{t as E}from"./trash-2-BjShZ7if.js";import{i as D,n as O,r as k}from"./api-client-qRWu6_s5.js";import{n as A}from"./utils-QHe_Q6UF.js";import{n as j}from"./portal-container-context-BmG4--I-.js";import{t as M}from"./input-DTmI80l2.js";import{t as N}from"./switch-BPol3BFC.js";import{a as P,g as F}from"./api-settings-CPg4yGvS.js";var I=g(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),L=g(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),R=e(t(),1),z=n();function B({className:e,...t}){return(0,z.jsx)(u,{"data-slot":`label`,className:A(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function V({...e}){return(0,z.jsx)(s,{"data-slot":`select`,...e})}function H({...e}){return(0,z.jsx)(p,{"data-slot":`select-value`,...e})}function U({className:e,size:t=`default`,children:n,...i}){return(0,z.jsxs)(r,{"data-slot":`select-trigger`,"data-size":t,className:A(`flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...i,children:[n,(0,z.jsx)(l,{asChild:!0,children:(0,z.jsx)(v,{className:`size-4 opacity-50`})})]})}function W({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){let o=j();return(0,z.jsx)(h,{container:o,children:(0,z.jsxs)(d,{"data-slot":`select-content`,className:A(`relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,z.jsx)(K,{}),(0,z.jsx)(a,{className:A(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,z.jsx)(q,{})]})})}function G({className:e,children:t,...n}){return(0,z.jsxs)(c,{"data-slot":`select-item`,className:A(`relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,z.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,z.jsx)(o,{children:(0,z.jsx)(_,{className:`size-4`})})}),(0,z.jsx)(f,{children:t})]})}function K({className:e,...t}){return(0,z.jsx)(i,{"data-slot":`select-scroll-up-button`,className:A(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,z.jsx)(y,{className:`size-4`})})}function q({className:e,...t}){return(0,z.jsx)(m,{"data-slot":`select-scroll-down-button`,className:A(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,z.jsx)(v,{className:`size-4`})})}var J={claude:`C`,cursor:`▶`,codex:`◆`,gemini:`G`};function Y({value:e,onChange:t,projectName:n}){let[r,i]=(0,R.useState)([]),[a,o]=(0,R.useState)(!1),s=(0,R.useRef)(null),c=(0,R.useRef)(0);(0,R.useEffect)(()=>{n&&O.get(`${D(n)}/chat/providers`).then(i).catch(()=>{})},[n]),(0,R.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)},t=s.current?.ownerDocument??document;return t.addEventListener(`mousedown`,e),()=>t.removeEventListener(`mousedown`,e)},[a]),(0,R.useEffect)(()=>{a&&(c.current=Math.max(0,r.findIndex(t=>t.id===e)))},[a,e,r]);let l=(0,R.useCallback)(e=>{if(e.key===`Escape`){o(!1);return}if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;c.current=(c.current+t+r.length)%r.length,(s.current?.querySelector(`[data-idx="${c.current}"]`))?.focus()}if(e.key===`Enter`){e.preventDefault();let n=r[c.current];n&&(t(n.id),o(!1))}},[t,r]);if(r.length<=1)return null;let u=r.find(t=>t.id===e),d=J[e]||`?`;return(0,z.jsxs)(`div`,{className:`relative`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),o(e=>!e)},className:`inline-flex items-center gap-1.5 px-[9px] py-1 rounded-full text-[11.5px] text-text-2 bg-panel-2 border border-border-soft hover:text-text-primary hover:border-border transition-colors`,"aria-label":`AI Provider: ${u?.name??e}`,children:[(0,z.jsx)(`span`,{className:`inline-flex h-3.5 w-3.5 items-center justify-center rounded text-[9px] font-bold bg-surface-elevated shrink-0`,children:d}),(0,z.jsx)(`span`,{className:`max-w-[80px] truncate capitalize`,children:u?.name??e})]}),a&&(0,z.jsxs)(`div`,{ref:s,role:`listbox`,"aria-label":`AI Providers`,onKeyDown:l,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),className:`absolute bottom-full left-0 mb-1 z-50 w-56 rounded-lg border border-border popover-solid shadow-[var(--shadow-panel)]`,children:[(0,z.jsx)(`div`,{className:`px-3 py-2 border-b border-border`,children:(0,z.jsx)(`span`,{className:`text-xs font-medium text-text-secondary`,children:`Provider`})}),(0,z.jsx)(`div`,{className:`py-1`,children:r.map((n,r)=>{let i=J[n.id]||`?`,a=n.id===e;return(0,z.jsxs)(`button`,{"data-idx":r,role:`option`,"aria-selected":a,tabIndex:0,onClick:()=>{t(n.id),o(!1)},className:`w-full flex items-center gap-3 px-3 py-2 text-left transition-colors hover:bg-surface-elevated focus:bg-surface-elevated focus:outline-none ${a?`bg-surface-elevated`:``}`,children:[(0,z.jsx)(`span`,{className:`inline-flex h-5 w-5 items-center justify-center rounded text-[11px] font-bold bg-surface-elevated text-text-subtle shrink-0`,children:i}),(0,z.jsx)(`span`,{className:`flex-1 text-sm font-medium text-text-primary capitalize`,children:n.name}),a&&(0,z.jsx)(_,{className:`size-4 shrink-0 text-primary`})]},n.id)})})]})]})}function X({providerId:e}){return(0,z.jsx)(`span`,{className:`inline-flex h-4 w-4 items-center justify-center rounded text-[10px] font-bold bg-surface-elevated text-text-subtle shrink-0`,title:e,children:J[e]||`?`})}var Z=[{value:`round-robin`,label:`Round-robin`},{value:`fill-first`,label:`Fill-first`},{value:`lowest-usage`,label:`Lowest usage`}];function Q(e){return e==null?`—`:`${Math.round(e*100)}%`}function $(){let[e,t]=(0,R.useState)([]),[n,r]=(0,R.useState)(`round-robin`),[i,a]=(0,R.useState)({}),[o,s]=(0,R.useState)(!1),[c,l]=(0,R.useState)(``),[u,d]=(0,R.useState)(``),[f,p]=(0,R.useState)(!1),[m,h]=(0,R.useState)(null),[g,_]=(0,R.useState)(null),[v,y]=(0,R.useState)(!1),[T,D]=(0,R.useState)(``),[A,j]=(0,R.useState)(!1),[M,N]=(0,R.useState)(!1),[P,F]=(0,R.useState)(null),I=(0,R.useRef)(null),B=(0,R.useCallback)(async()=>{s(!0);try{let e=await O.get(`/api/codex-accounts`);t(e.accounts),r(e.strategy),O.get(`/api/codex-accounts/usage`).then(a).catch(()=>{})}finally{s(!1)}},[]);(0,R.useEffect)(()=>{B()},[B]);let V=async()=>{if(c.trim()){p(!0),h(null);try{await O.post(`/api/codex-accounts/api-key`,{apiKey:c.trim(),label:u.trim()||void 0}),l(``),d(``),await B()}catch(e){h(e.message)}finally{p(!1)}}},H=async()=>{h(null);try{let e=await O.post(`/api/codex-accounts/device-login`,{label:u.trim()||void 0});_(e),y(!0),O.post(`/api/codex-accounts/device-login/${e.id}/await`).then(async()=>{_(null),y(!1),d(``),await B()}).catch(e=>{h(e.message),_(null),y(!1)})}catch(e){h(e.message)}},U=async e=>{await O.del(`/api/codex-accounts/${e}`),await B()},W=async e=>{r(e);try{await O.put(`/api/codex-accounts/strategy`,{strategy:e})}catch{}},G=async()=>{if(!T.trim()){h(`Set a backup password first.`);return}j(!0),h(null),F(null);try{let e={"Content-Type":`application/json`},t=k();t&&(e.Authorization=`Bearer ${t}`);let n=await fetch(`/api/codex-accounts/export`,{method:`POST`,headers:e,body:JSON.stringify({password:T})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`Export failed: ${n.status}`)}let r=await n.text(),i=new Blob([r],{type:`application/json`}),a=document.createElement(`a`);a.href=URL.createObjectURL(i),a.download=`ppm-codex-accounts-backup.json`,a.click(),URL.revokeObjectURL(a.href),F(`Backup downloaded.`)}catch(e){h(e.message)}finally{j(!1)}},K=async e=>{if(!T.trim()){h(`Enter the backup password first.`);return}N(!0),h(null),F(null);try{let t=await e.text(),n=await O.post(`/api/codex-accounts/import`,{data:t,password:T});F(`Imported ${n.imported}${n.skipped?`, skipped ${n.skipped}`:``}.`),await B()}catch(e){h(e.message)}finally{N(!1),I.current&&(I.current.value=``)}};return(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`h3`,{className:`text-sm font-semibold text-text-primary`,children:`Codex Accounts`}),(0,z.jsx)(`p`,{className:`text-xs text-text-subtle mt-0.5`,children:`Each account uses its own login (CODEX_HOME). One is selected per chat by the strategy below.`})]}),m&&(0,z.jsx)(`div`,{className:`text-xs text-error bg-error/10 border border-error/30 rounded-md p-2`,children:m}),P&&(0,z.jsx)(`div`,{className:`text-xs text-success bg-success/10 border border-success/30 rounded-md p-2`,children:P}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,z.jsx)(`span`,{className:`text-xs text-text-secondary`,children:`Selection strategy:`}),Z.map(e=>(0,z.jsx)(`button`,{type:`button`,onClick:()=>W(e.value),className:`text-xs px-3 min-h-[36px] rounded-md border transition-colors ${n===e.value?`border-primary bg-primary/15 text-text-primary`:`border-border bg-surface/50 text-text-secondary hover:bg-surface`}`,children:e.label},e.value))]}),(0,z.jsxs)(`div`,{className:`space-y-2`,children:[o&&e.length===0&&(0,z.jsxs)(`div`,{className:`text-xs text-text-subtle flex items-center gap-2`,children:[(0,z.jsx)(C,{className:`size-3 animate-spin`}),` Loading…`]}),!o&&e.length===0&&(0,z.jsxs)(`div`,{className:`text-xs text-text-subtle`,children:[`No codex accounts yet — add one below. (With none, chats use your default `,(0,z.jsx)(`code`,{children:`~/.codex`}),` login.)`]}),e.map(e=>{let t=i[e.id]??{};return(0,z.jsxs)(`div`,{className:`flex items-center gap-3 border border-border rounded-md bg-surface/40 p-2.5`,children:[(0,z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`span`,{className:`text-sm text-text-primary truncate`,children:e.label}),(0,z.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-text-subtle border border-border rounded px-1`,children:e.type}),e.planType&&(0,z.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:e.planType})]}),(0,z.jsxs)(`div`,{className:`text-[11px] text-text-subtle mt-0.5`,children:[`5h `,Q(t.fiveHour),` · weekly `,Q(t.sevenDay)]})]}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>U(e.id),title:`Remove account`,className:`p-2 min-h-[44px] min-w-[44px] flex items-center justify-center text-text-subtle hover:text-error transition-colors`,children:(0,z.jsx)(E,{className:`size-4`})})]},e.id)})]}),(0,z.jsxs)(`div`,{className:`border border-border rounded-md p-3 space-y-2`,children:[(0,z.jsx)(`input`,{value:u,onChange:e=>d(e.target.value),placeholder:`Label (optional)`,className:`w-full text-sm bg-surface border border-border rounded-md px-3 min-h-[40px] text-text-primary placeholder:text-text-subtle`}),(0,z.jsxs)(`div`,{className:`flex gap-2 flex-col sm:flex-row`,children:[(0,z.jsx)(`input`,{value:c,onChange:e=>l(e.target.value),type:`password`,placeholder:`OpenAI API key (sk-…)`,className:`flex-1 text-sm bg-surface border border-border rounded-md px-3 min-h-[44px] text-text-primary placeholder:text-text-subtle font-mono`}),(0,z.jsxs)(`button`,{type:`button`,onClick:V,disabled:f||!c.trim(),className:`inline-flex items-center justify-center gap-2 text-sm px-4 min-h-[44px] rounded-md border border-border bg-surface/50 hover:bg-surface text-text-primary disabled:opacity-60`,children:[f?(0,z.jsx)(C,{className:`size-4 animate-spin`}):(0,z.jsx)(L,{className:`size-4`}),` Add key`]})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:H,disabled:v,className:`inline-flex items-center justify-center gap-2 text-sm px-4 min-h-[44px] w-full sm:w-auto rounded-md border border-border bg-surface/50 hover:bg-surface text-text-primary disabled:opacity-60`,children:[v?(0,z.jsx)(C,{className:`size-4 animate-spin`}):(0,z.jsx)(w,{className:`size-4`}),` Sign in with ChatGPT (device code)`]})]}),(0,z.jsxs)(`div`,{className:`border border-border rounded-md p-3 space-y-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-text-secondary`,children:`Backup & transfer — password-encrypted file with each account's login.`}),(0,z.jsx)(`input`,{value:T,onChange:e=>D(e.target.value),type:`password`,placeholder:`Backup password`,className:`w-full text-sm bg-surface border border-border rounded-md px-3 min-h-[44px] text-text-primary placeholder:text-text-subtle`}),(0,z.jsxs)(`div`,{className:`flex gap-2 flex-col sm:flex-row`,children:[(0,z.jsxs)(`button`,{type:`button`,onClick:G,disabled:A||!T.trim(),className:`flex-1 inline-flex items-center justify-center gap-2 text-sm px-4 min-h-[44px] rounded-md border border-border bg-surface/50 hover:bg-surface text-text-primary disabled:opacity-60`,children:[A?(0,z.jsx)(C,{className:`size-4 animate-spin`}):(0,z.jsx)(x,{className:`size-4`}),` Export`]}),(0,z.jsxs)(`button`,{type:`button`,onClick:()=>I.current?.click(),disabled:M||!T.trim(),className:`flex-1 inline-flex items-center justify-center gap-2 text-sm px-4 min-h-[44px] rounded-md border border-border bg-surface/50 hover:bg-surface text-text-primary disabled:opacity-60`,children:[M?(0,z.jsx)(C,{className:`size-4 animate-spin`}):(0,z.jsx)(b,{className:`size-4`}),` Import`]}),(0,z.jsx)(`input`,{ref:I,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&K(t)}})]})]}),g&&(0,z.jsxs)(`div`,{className:`border border-primary/40 bg-primary/10 rounded-md p-3 space-y-2 text-sm`,children:[(0,z.jsx)(`p`,{className:`text-text-primary`,children:`Enter this code to authorize:`}),(0,z.jsx)(`div`,{className:`font-mono text-lg tracking-widest text-text-primary`,children:g.userCode}),(0,z.jsxs)(`a`,{href:g.verificationUrl,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 text-primary hover:underline text-xs`,children:[(0,z.jsx)(S,{className:`size-3`}),` `,g.verificationUrl]}),(0,z.jsxs)(`p`,{className:`text-xs text-text-subtle flex items-center gap-2`,children:[(0,z.jsx)(C,{className:`size-3 animate-spin`}),` Waiting for authorization…`]})]})]})}var ee=[{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`},{value:`xhigh`,label:`Extra`},{value:`max`,label:`Max`}],te=[{value:`bypassPermissions`,label:`Bypass permissions (default)`},{value:`default`,label:`Ask before edits`},{value:`acceptEdits`,label:`Edit automatically`},{value:`plan`,label:`Plan mode`}],ne={claude:`Claude`,cursor:`Cursor`,codex:`Codex`,gemini:`Gemini`};function re({compact:e}={}){let[t,n]=(0,R.useState)(null),[r,i]=(0,R.useState)(``),[a,o]=(0,R.useState)([]),[s,c]=(0,R.useState)(!1),[l,u]=(0,R.useState)(!1),[d,f]=(0,R.useState)(null),[p,m]=(0,R.useState)(0);(0,R.useEffect)(()=>{P().then(e=>{n(e),i(e.default_provider??`claude`)}).catch(e=>f(e.message))},[]),(0,R.useEffect)(()=>{r&&(c(!0),O.get(`/api/settings/ai/providers/${r}/models`).then(o).catch(()=>o([])).finally(()=>c(!1)))},[r]);let h=t?Object.keys(t.providers).filter(e=>e!==`mock`).map(e=>({id:e,name:ne[e]??e})):[],g=t?.providers[r],_=g?.type===`agent-sdk`||!g?.type&&r===`claude`,v=async(e,i)=>{if(t){u(!0),f(null);try{n(await F({providers:{[r]:{[e]:i}}})),m(e=>e+1)}catch(e){f(e.message)}finally{u(!1)}}},y=e?`text-[11px]`:`text-sm`,b=e?`text-xs`:`text-sm`,x=e?`space-y-2`:`space-y-4`,S=e?`space-y-1.5`:`space-y-3`,C=e?`space-y-1`:`space-y-1.5`;if(!t)return(0,z.jsxs)(`div`,{className:S,children:[(0,z.jsx)(`h3`,{className:`${b} font-medium text-text-secondary`,children:`AI Settings`}),(0,z.jsx)(`p`,{className:`${y} text-text-subtle`,children:d?`Error: ${d}`:`Loading...`})]});let w=_?a:[{value:`__default__`,label:`Auto (default)`},...a];return(0,z.jsxs)(`div`,{className:x,children:[(0,z.jsx)(`h3`,{className:`${b} font-medium text-text-secondary`,children:`AI Settings`}),h.length>1&&(0,z.jsx)(`div`,{className:`flex gap-0.5 border-b border-border/50 -mx-1 px-1`,children:h.map(e=>(0,z.jsxs)(`button`,{onClick:()=>i(e.id),className:`flex items-center gap-1 px-2 py-1 text-[11px] rounded-t transition-colors ${r===e.id?`text-primary border-b-2 border-primary font-medium`:`text-text-subtle hover:text-text-secondary`}`,children:[(0,z.jsx)(X,{providerId:e.id}),(0,z.jsx)(`span`,{className:`capitalize`,children:e.name})]},e.id))}),(0,z.jsxs)(`div`,{className:S,children:[r===`codex`&&(0,z.jsx)($,{}),a.length>0&&(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-model`,className:e?y:void 0,children:`Model`}),(0,z.jsxs)(V,{value:_?g?.model??a[0]?.value:g?.model||`__default__`,onValueChange:e=>v(`model`,e===`__default__`?void 0:e),disabled:s,children:[(0,z.jsx)(U,{id:`ai-model`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,z.jsx)(H,{placeholder:s?`Loading models...`:`Select model`})}),(0,z.jsx)(W,{className:`max-h-[300px]`,children:w.map(e=>(0,z.jsx)(G,{value:e.value,children:e.label},e.value))})]})]}),_&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-base-url`,className:e?y:void 0,children:`Base URL`}),(0,z.jsx)(M,{id:`ai-base-url`,type:`url`,defaultValue:g?.base_url??``,placeholder:`https://api.anthropic.com (default)`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{v(`base_url`,e.target.value.trim()||void 0)}},`baseurl-${r}-${p}`)]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-api-key`,className:e?y:void 0,children:`API Key / Token`}),(0,z.jsx)(M,{id:`ai-api-key`,type:`password`,defaultValue:g?.api_key??``,placeholder:`sk-ant-... (optional, overrides accounts)`,className:e?`h-7 text-[11px] font-mono`:`font-mono`,onBlur:e=>{let t=e.target.value.trim();t.startsWith(`••••`)||v(`api_key`,t||void 0)}},`apikey-${r}-${p}`),(0,z.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Direct API key or OAuth token. Leave empty to use connected accounts.`})]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-effort`,className:e?y:void 0,children:`Effort`}),(0,z.jsxs)(V,{value:g?.effort??`high`,onValueChange:e=>v(`effort`,e),children:[(0,z.jsx)(U,{id:`ai-effort`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,z.jsx)(H,{})}),(0,z.jsx)(W,{children:ee.map(e=>(0,z.jsx)(G,{value:e.value,children:e.label},e.value))})]})]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-max-turns`,className:e?y:void 0,children:`Max Turns (1-500)`}),(0,z.jsx)(M,{id:`ai-max-turns`,type:`number`,min:1,max:500,defaultValue:g?.max_turns??100,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);isNaN(t)||v(`max_turns`,t)}},`turns-${r}-${p}`)]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-budget`,className:e?y:void 0,children:`Max Budget (USD)`}),(0,z.jsx)(M,{id:`ai-budget`,type:`number`,step:.1,min:.01,max:50,defaultValue:g?.max_budget_usd??``,placeholder:`No limit`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseFloat(e.target.value);v(`max_budget_usd`,isNaN(t)?void 0:t)}},`budget-${r}-${p}`)]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-thinking`,className:e?y:void 0,children:`Thinking Budget (tokens)`}),(0,z.jsx)(M,{id:`ai-thinking`,type:`number`,min:0,defaultValue:g?.thinking_budget_tokens??``,placeholder:`Adaptive (model decides)`,className:e?`h-7 text-[11px]`:void 0,onBlur:e=>{let t=parseInt(e.target.value);v(`thinking_budget_tokens`,isNaN(t)?void 0:t)}},`thinking-${r}-${p}`)]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(B,{htmlFor:`ai-agent-teams`,className:e?y:void 0,children:`Agent Teams`}),(0,z.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Experimental. Enables multi-agent collaboration with shared tasks and messaging. Uses ~7x more tokens.`})]}),(0,z.jsx)(N,{id:`ai-agent-teams`,checked:g?.agent_teams??!1,onCheckedChange:e=>v(`agent_teams`,e)})]}),g?.agent_teams&&(0,z.jsx)(ie,{compact:e}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(B,{htmlFor:`ai-context-1m`,className:e?y:void 0,children:`1M Context Window`}),(0,z.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Requires an entitled account (Max/Team/Enterprise) and an Opus 4 / Sonnet 4 model. Other accounts will error.`})]}),(0,z.jsx)(N,{id:`ai-context-1m`,checked:g?.context_1m??!1,onCheckedChange:e=>v(`context_1m`,e)})]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(B,{htmlFor:`ai-inherit-mcp`,className:e?y:void 0,children:`Inherit Claude Code MCP`}),(0,z.jsx)(`p`,{className:`${e?`text-[9px]`:`text-[11px]`} text-muted-foreground`,children:`Auto-load MCP servers from Claude Code's ~/.claude.json (global + per-project). Your own MCP servers override inherited ones.`})]}),(0,z.jsx)(N,{id:`ai-inherit-mcp`,checked:g?.inherit_claude_mcp??!0,onCheckedChange:e=>v(`inherit_claude_mcp`,e)})]})]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-permission-mode`,className:e?y:void 0,children:`Default Permission Mode`}),(0,z.jsxs)(V,{value:g?.permission_mode??`bypassPermissions`,onValueChange:e=>v(`permission_mode`,e),children:[(0,z.jsx)(U,{id:`ai-permission-mode`,className:`w-full ${e?`h-7 text-[11px]`:``}`,children:(0,z.jsx)(H,{})}),(0,z.jsx)(W,{children:te.map(e=>(0,z.jsx)(G,{value:e.value,children:e.label},e.value))})]})]}),(0,z.jsxs)(`div`,{className:C,children:[(0,z.jsx)(B,{htmlFor:`ai-system-prompt`,className:e?y:void 0,children:`Additional Instructions`}),(0,z.jsx)(`textarea`,{id:`ai-system-prompt`,rows:e?3:4,defaultValue:g?.system_prompt??``,placeholder:`Enter additional instructions for ${r}...`,className:`w-full rounded-md border border-input bg-background px-3 py-2 ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ${e?`text-[11px]`:`text-sm`}`,onBlur:e=>{v(`system_prompt`,e.target.value.trim()||void 0)}},`sysprompt-${r}-${p}`)]})]}),l&&(0,z.jsx)(`p`,{className:`text-xs text-text-subtle`,children:`Saving...`}),d&&(0,z.jsx)(`p`,{className:`text-xs text-error`,children:d})]})}function ie({compact:e}){let[t,n]=(0,R.useState)([]),[r,i]=(0,R.useState)(!1),[a,o]=(0,R.useState)(null),s=(0,R.useCallback)(async()=>{i(!0);try{n(await O.get(`/api/teams`)??[])}catch{}i(!1)},[]);(0,R.useEffect)(()=>{s()},[s]);let c=async e=>{try{await O.del(`/api/teams/${encodeURIComponent(e)}`),n(t=>t.filter(t=>t.name!==e)),o(null)}catch{}};return t.length===0&&!r?null:(0,z.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(B,{className:e?`text-[11px]`:void 0,children:[`Teams (`,t.length,`)`]}),(0,z.jsx)(`button`,{onClick:s,className:`text-text-subtle hover:text-foreground p-1`,"aria-label":`Refresh teams`,children:(0,z.jsx)(T,{className:`size-3 ${r?`animate-spin`:``}`})})]}),t.map(e=>(0,z.jsxs)(`div`,{className:`flex items-center justify-between p-2 rounded bg-surface-elevated text-xs`,children:[(0,z.jsxs)(`div`,{className:`min-w-0`,children:[(0,z.jsx)(`div`,{className:`font-medium truncate`,children:e.name}),e.description&&(0,z.jsx)(`div`,{className:`text-text-subtle truncate`,children:e.description}),(0,z.jsxs)(`div`,{className:`text-text-subtle`,children:[e.members?.length??e.memberCount??0,` members`,e.createdAt?` · ${new Date(e.createdAt).toLocaleDateString()}`:``]})]}),a===e.name?(0,z.jsxs)(`div`,{className:`flex gap-1 shrink-0 ml-2`,children:[(0,z.jsx)(`button`,{onClick:()=>c(e.name),className:`px-2 py-1 bg-error text-white rounded text-[10px]`,children:`Delete`}),(0,z.jsx)(`button`,{onClick:()=>o(null),className:`px-2 py-1 bg-panel-2 text-text rounded text-[10px]`,children:`Cancel`})]}):(0,z.jsx)(`button`,{onClick:()=>o(e.name),className:`shrink-0 text-text-subtle hover:text-error p-1 ml-2`,"aria-label":`Delete team ${e.name}`,children:(0,z.jsx)(E,{className:`size-3.5`})})]},e.name))]})}export{W as a,H as c,I as d,V as i,B as l,X as n,G as o,Y as r,U as s,re as t,L as u};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-FhOqtrmT.js";import{t}from"./html-lqtcy6-2.js";var n=[Object.freeze(JSON.parse('{"injectionSelector":"L:text.html -comment","name":"angular-expression","patterns":[{"include":"#ngExpression"}],"repository":{"arrayLiteral":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"booleanLiteral":{"patterns":[{"match":"(?<![$.])\\\\btrue\\\\b(?!\\\\$)","name":"constant.language.boolean.true.ts"},{"match":"(?<![$.])\\\\bfalse\\\\b(?!\\\\$)","name":"constant.language.boolean.false.ts"}]},"expressionOperator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"entity.name.function.pipe.ng"}},"match":"((?<!\\\\|)\\\\|(?!\\\\|))\\\\s?([-$0-9A-Z_a-z]*)"},{"match":"(?<![$.])\\\\b(let)\\\\b(?!\\\\$)","name":"storage.type.ts"},{"match":"(?<![$.])\\\\b(await)\\\\b(?!\\\\$)","name":"keyword.control.flow.ts"},{"match":"(?<![$.])\\\\bdelete\\\\b(?!\\\\$)","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$.])\\\\bin\\\\b(?!\\\\$)","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$.])\\\\bof\\\\b(?!\\\\$)","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$.])\\\\bif\\\\b(?!\\\\$)","name":"keyword.control.if.ts"},{"match":"(?<![$.])\\\\belse\\\\b(?!\\\\$)","name":"keyword.control.else.ts"},{"match":"(?<![$.])\\\\bthen\\\\b(?!\\\\$)","name":"keyword.control.then.ts"},{"match":"(?<![$.])\\\\binstanceof\\\\b(?!\\\\$)","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$.])\\\\bnew\\\\b(?!\\\\$)","name":"keyword.operator.new.ts"},{"match":"(?<![$.])\\\\bvoid\\\\b(?!\\\\$)","name":"keyword.operator.expression.void.ts"},{"begin":"(?<![$.])\\\\bas\\\\b(?!\\\\$)","beginCaptures":{"0":{"name":"storage.type.as.ts"}},"end":"(?=$|[]\\"\'),:;}])","patterns":[{"include":"#type"}]},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"match":"!|&&|\\\\?\\\\?|\\\\|\\\\|","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"captures":{"1":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])\\\\s*(/)(?![*/])"},{"include":"#typeofOperator"}]},"functionCall":{"begin":"(?=(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","end":"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","patterns":[{"match":"\\\\?","name":"punctuation.accessor.ts"},{"match":"\\\\.","name":"punctuation.accessor.ts"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"},{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},{"include":"#parenExpression"}]},"functionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#decorator"},{"include":"#parameterName"},{"include":"#variableInitializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.object.property.ts"},"3":{"name":"variable.other.object.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"entity.name.function.ts"}},"match":"(?:([!?]?\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"variable.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"constant.other.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"constant.character.other"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"literal":{"name":"literal.ts","patterns":[{"include":"#numericLiteral"},{"include":"#booleanLiteral"},{"include":"#nullLiteral"},{"include":"#undefinedLiteral"},{"include":"#numericConstantLiteral"},{"include":"#arrayLiteral"},{"include":"#thisLiteral"}]},"ngExpression":{"name":"meta.expression.ng","patterns":[{"include":"#string"},{"include":"#literal"},{"include":"#ternaryExpression"},{"include":"#expressionOperator"},{"include":"#functionCall"},{"include":"#identifiers"},{"include":"#parenExpression"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"},{"include":"#punctuationAccessor"}]},"nullLiteral":{"match":"(?<![$.])\\\\bnull\\\\b(?!\\\\$)","name":"constant.language.null.ts"},"numericConstantLiteral":{"patterns":[{"match":"(?<![$.])\\\\bNaN\\\\b(?!\\\\$)","name":"constant.language.nan.ts"},{"match":"(?<![$.])\\\\bInfinity\\\\b(?!\\\\$)","name":"constant.language.infinity.ts"}]},"numericLiteral":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])\\\\h+\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]+\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"match":"\\\\\\\\b(?<!\\\\$)0([Oo])?[0-7]+\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"meta.delimiter.decimal.period.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"meta.delimiter.decimal.period.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"meta.delimiter.decimal.period.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9]+(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)[Ee][-+]?[0-9]+\\\\b|\\\\B(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)\\\\B|\\\\B(\\\\.)[0-9]+\\\\b|\\\\b[0-9]+\\\\b(?!\\\\.))(?!\\\\$)"}]},"parameterName":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)"}]},"parenExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"punctuationAccessor":{"match":"(?:\\\\?|!?)\\\\.","name":"punctuation.accessor.ts"},"punctuationComma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuationSemicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstringDouble":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#stringCharacterEscape"}]},"qstringSingle":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#stringCharacterEscape"}]},"string":{"patterns":[{"include":"#qstringSingle"},{"include":"#qstringDouble"},{"include":"#templateLiteral"}]},"stringCharacterEscape":{"match":"\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.ts"},"templateLiteral":{"patterns":[{"include":"#templateLiteralCall"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#templateLiteralSubstitutionElement"},{"include":"#stringCharacterEscape"}]}]},"templateLiteralCall":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#typeArguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#typeArguments"}]}]},"templateLiteralSubstitutionElement":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#ngExpression"}]},"ternaryExpression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#ngExpression"}]},"thisLiteral":{"match":"(?<![$.])\\\\bthis\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"name":"meta.type.ts","patterns":[{"include":"#string"},{"include":"#numericLiteral"},{"include":"#typeBuiltinLiterals"},{"include":"#typeTuple"},{"include":"#typeObject"},{"include":"#typeOperators"},{"include":"#typeFnTypeParameters"},{"include":"#typeParenOrFunctionParameters"},{"include":"#typeName"}]},"typeAnnotation":{"begin":":","beginCaptures":{"0":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=$|[]),;}]|//|\\")|(?==[^>])|(?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},"typeArguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#typeArgumentsBody"}]},"typeArgumentsBody":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuationComma"}]},"typeBuiltinLiterals":{"match":"(?<![$.])\\\\b(this|true|false|undefined|null)\\\\b(?!\\\\$)","name":"support.type.builtin.ts"},"typeFnTypeParameters":{"patterns":[{"captures":{"1":{"name":"keyword.control.new.ts"}},"match":"(?<![$.])\\\\b(new)\\\\b(?=\\\\s*<)","name":"meta.type.constructor.ts"},{"begin":"(?<![$.])\\\\b(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"(?<=>)\\\\s*(?=\\\\()","end":"(?<=\\\\))","include":"#typeofOperator","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]}]},"typeName":{"patterns":[{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*([!?]?\\\\.)"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"typeObject":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#typeObjectMembers"}]},"typeObjectMembers":{"patterns":[{"include":"#typeAnnotation"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"}]},"typeOperators":{"patterns":[{"include":"#typeofOperator"},{"match":"[\\\\&|]","name":"keyword.operator.type.ts"},{"match":"(?<![$.])\\\\bkeyof\\\\b(?!\\\\$)","name":"keyword.operator.expression.keyof.ts"}]},"typeParenOrFunctionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"include":"#type"},{"include":"#functionParameters"}]},"typeTuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},"typeofOperator":{"match":"(?<![$.])\\\\btypeof\\\\b(?!\\\\$)","name":"keyword.operator.expression.typeof.ts"},"undefinedLiteral":{"match":"(?<![$.])\\\\bundefined\\\\b(?!\\\\$)","name":"constant.language.undefined.ts"},"variableInitializer":{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|[]),;}])","patterns":[{"include":"#ngExpression"}]}},"scopeName":"expression.ng"}'))],r=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-let-declaration","patterns":[{"include":"#letDeclaration"}],"repository":{"letDeclaration":{"begin":"(@let)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)?","beginCaptures":{"1":{"name":"storage.type.ng"},"2":{"name":"variable.other.constant.ng"},"3":{"name":"keyword.operator.assignment.ng"}},"end":"(?<=;)","name":"meta.definition.variable.ng","patterns":[{"include":"#letInitializer"}]},"letInitializer":{"begin":"\\\\s*","beginCaptures":{"0":{"name":"keyword.operator.assignment.ng"}},"contentName":"meta.definition.variable.initializer.ng","end":";","endCaptures":{"0":{"name":"punctuation.terminator.statement.ng"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.let.ng","embeddedLangs":["angular-expression"]}`)),i=[...n,r],a=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment","name":"angular-template","patterns":[{"include":"#interpolation"}],"repository":{"interpolation":{"begin":"\\\\{\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"expression.ng","end":"}}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.ng","embeddedLangs":["angular-expression"]}`)),o=[...n,a],s=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-template-blocks","patterns":[{"include":"#block"}],"repository":{"block":{"begin":"(@)(if|else if|else|defer|placeholder|loading|error|switch|case|default|for|empty)\\\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.block.kind.ng"}},"end":"(?<=})","name":"control.block.ng","patterns":[{"include":"#blockExpression"},{"include":"#blockBody"}]},"blockBody":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"control.block.body.ng","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"text.html.derivative.ng"},{"include":"template.ng"}]},"blockExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"contentName":"control.block.expression.ng","end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#blockExpressionOfClause"},{"include":"#blockExpressionLetBinding"},{"include":"#blockExpressionTrackClause"},{"include":"expression.ng"}]},"blockExpressionLetBinding":{"begin":"\\\\blet\\\\b","beginCaptures":{"0":{"name":"storage.type.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionOfClause":{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(of)\\\\b","beginCaptures":{"1":{"name":"variable.other.constant.ng"},"2":{"name":"keyword.operator.expression.of.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionTrackClause":{"begin":"\\\\btrack\\\\b","beginCaptures":{"0":{"name":"keyword.control.track.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"transition":{"match":"@","name":"keyword.control.block.transition.ng"}},"scopeName":"template.blocks.ng","embeddedLangs":["angular-expression","angular-template"]}`)),c=[...n,...o,s],l=e({default:()=>d}),u=Object.freeze(JSON.parse(`{"displayName":"Angular HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"angular-html","patterns":[{"include":"text.html.basic#core-minus-invalid"},{"begin":"(</?)(\\\\w[^>\\\\s]*)(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.unrecognized.html.derivative","patterns":[{"include":"text.html.basic#attribute"}]}],"scopeName":"text.html.derivative.ng","embeddedLangs":["html","angular-expression","angular-let-declaration","angular-template","angular-template-blocks"]}`)),d=[...t,...n,...i,...o,...c,u];export{i as a,o as i,l as n,n as o,c as r,d as t};
1
+ import{r as e}from"./rolldown-runtime-FhOqtrmT.js";import{t}from"./html-DALyDNqU.js";var n=[Object.freeze(JSON.parse('{"injectionSelector":"L:text.html -comment","name":"angular-expression","patterns":[{"include":"#ngExpression"}],"repository":{"arrayLiteral":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"booleanLiteral":{"patterns":[{"match":"(?<![$.])\\\\btrue\\\\b(?!\\\\$)","name":"constant.language.boolean.true.ts"},{"match":"(?<![$.])\\\\bfalse\\\\b(?!\\\\$)","name":"constant.language.boolean.false.ts"}]},"expressionOperator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"entity.name.function.pipe.ng"}},"match":"((?<!\\\\|)\\\\|(?!\\\\|))\\\\s?([-$0-9A-Z_a-z]*)"},{"match":"(?<![$.])\\\\b(let)\\\\b(?!\\\\$)","name":"storage.type.ts"},{"match":"(?<![$.])\\\\b(await)\\\\b(?!\\\\$)","name":"keyword.control.flow.ts"},{"match":"(?<![$.])\\\\bdelete\\\\b(?!\\\\$)","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$.])\\\\bin\\\\b(?!\\\\$)","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$.])\\\\bof\\\\b(?!\\\\$)","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$.])\\\\bif\\\\b(?!\\\\$)","name":"keyword.control.if.ts"},{"match":"(?<![$.])\\\\belse\\\\b(?!\\\\$)","name":"keyword.control.else.ts"},{"match":"(?<![$.])\\\\bthen\\\\b(?!\\\\$)","name":"keyword.control.then.ts"},{"match":"(?<![$.])\\\\binstanceof\\\\b(?!\\\\$)","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$.])\\\\bnew\\\\b(?!\\\\$)","name":"keyword.operator.new.ts"},{"match":"(?<![$.])\\\\bvoid\\\\b(?!\\\\$)","name":"keyword.operator.expression.void.ts"},{"begin":"(?<![$.])\\\\bas\\\\b(?!\\\\$)","beginCaptures":{"0":{"name":"storage.type.as.ts"}},"end":"(?=$|[]\\"\'),:;}])","patterns":[{"include":"#type"}]},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"match":"!|&&|\\\\?\\\\?|\\\\|\\\\|","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"captures":{"1":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])\\\\s*(/)(?![*/])"},{"include":"#typeofOperator"}]},"functionCall":{"begin":"(?=(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","end":"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()","patterns":[{"match":"\\\\?","name":"punctuation.accessor.ts"},{"match":"\\\\.","name":"punctuation.accessor.ts"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"},{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},{"include":"#parenExpression"}]},"functionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#decorator"},{"include":"#parameterName"},{"include":"#variableInitializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.object.property.ts"},"3":{"name":"variable.other.object.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"entity.name.function.ts"}},"match":"(?:([!?]?\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"constant.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"variable.other.property.ts"}},"match":"([!?]?\\\\.)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"constant.other.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"constant.character.other"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"literal":{"name":"literal.ts","patterns":[{"include":"#numericLiteral"},{"include":"#booleanLiteral"},{"include":"#nullLiteral"},{"include":"#undefinedLiteral"},{"include":"#numericConstantLiteral"},{"include":"#arrayLiteral"},{"include":"#thisLiteral"}]},"ngExpression":{"name":"meta.expression.ng","patterns":[{"include":"#string"},{"include":"#literal"},{"include":"#ternaryExpression"},{"include":"#expressionOperator"},{"include":"#functionCall"},{"include":"#identifiers"},{"include":"#parenExpression"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"},{"include":"#punctuationAccessor"}]},"nullLiteral":{"match":"(?<![$.])\\\\bnull\\\\b(?!\\\\$)","name":"constant.language.null.ts"},"numericConstantLiteral":{"patterns":[{"match":"(?<![$.])\\\\bNaN\\\\b(?!\\\\$)","name":"constant.language.nan.ts"},{"match":"(?<![$.])\\\\bInfinity\\\\b(?!\\\\$)","name":"constant.language.infinity.ts"}]},"numericLiteral":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])\\\\h+\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]+\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"match":"\\\\\\\\b(?<!\\\\$)0([Oo])?[0-7]+\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"meta.delimiter.decimal.period.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"meta.delimiter.decimal.period.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"meta.delimiter.decimal.period.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9]+(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)[Ee][-+]?[0-9]+\\\\b|\\\\B(\\\\.)[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+[Ee][-+]?[0-9]+\\\\b|\\\\b[0-9]+(\\\\.)\\\\B|\\\\B(\\\\.)[0-9]+\\\\b|\\\\b[0-9]+\\\\b(?!\\\\.))(?!\\\\$)"}]},"parameterName":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.operator.rest.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?<![:=])([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\??)"}]},"parenExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#ngExpression"},{"include":"#punctuationComma"}]},"punctuationAccessor":{"match":"(?:\\\\?|!?)\\\\.","name":"punctuation.accessor.ts"},"punctuationComma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuationSemicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstringDouble":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#stringCharacterEscape"}]},"qstringSingle":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#stringCharacterEscape"}]},"string":{"patterns":[{"include":"#qstringSingle"},{"include":"#qstringDouble"},{"include":"#templateLiteral"}]},"stringCharacterEscape":{"match":"\\\\\\\\(x\\\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.ts"},"templateLiteral":{"patterns":[{"include":"#templateLiteralCall"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#templateLiteralSubstitutionElement"},{"include":"#stringCharacterEscape"}]}]},"templateLiteralCall":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#typeArguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#typeArguments"}]}]},"templateLiteralSubstitutionElement":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#ngExpression"}]},"ternaryExpression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#ngExpression"}]},"thisLiteral":{"match":"(?<![$.])\\\\bthis\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"name":"meta.type.ts","patterns":[{"include":"#string"},{"include":"#numericLiteral"},{"include":"#typeBuiltinLiterals"},{"include":"#typeTuple"},{"include":"#typeObject"},{"include":"#typeOperators"},{"include":"#typeFnTypeParameters"},{"include":"#typeParenOrFunctionParameters"},{"include":"#typeName"}]},"typeAnnotation":{"begin":":","beginCaptures":{"0":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=$|[]),;}]|//|\\")|(?==[^>])|(?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},"typeArguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#typeArgumentsBody"}]},"typeArgumentsBody":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuationComma"}]},"typeBuiltinLiterals":{"match":"(?<![$.])\\\\b(this|true|false|undefined|null)\\\\b(?!\\\\$)","name":"support.type.builtin.ts"},"typeFnTypeParameters":{"patterns":[{"captures":{"1":{"name":"keyword.control.new.ts"}},"match":"(?<![$.])\\\\b(new)\\\\b(?=\\\\s*<)","name":"meta.type.constructor.ts"},{"begin":"(?<![$.])\\\\b(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"(?<=>)\\\\s*(?=\\\\()","end":"(?<=\\\\))","include":"#typeofOperator","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#functionParameters"}]}]},"typeName":{"patterns":[{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*([!?]?\\\\.)"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"typeObject":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#typeObjectMembers"}]},"typeObjectMembers":{"patterns":[{"include":"#typeAnnotation"},{"include":"#punctuationComma"},{"include":"#punctuationSemicolon"}]},"typeOperators":{"patterns":[{"include":"#typeofOperator"},{"match":"[\\\\&|]","name":"keyword.operator.type.ts"},{"match":"(?<![$.])\\\\bkeyof\\\\b(?!\\\\$)","name":"keyword.operator.expression.keyof.ts"}]},"typeParenOrFunctionParameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"include":"#type"},{"include":"#functionParameters"}]},"typeTuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"include":"#type"},{"include":"#punctuationComma"}]},"typeofOperator":{"match":"(?<![$.])\\\\btypeof\\\\b(?!\\\\$)","name":"keyword.operator.expression.typeof.ts"},"undefinedLiteral":{"match":"(?<![$.])\\\\bundefined\\\\b(?!\\\\$)","name":"constant.language.undefined.ts"},"variableInitializer":{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|[]),;}])","patterns":[{"include":"#ngExpression"}]}},"scopeName":"expression.ng"}'))],r=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-let-declaration","patterns":[{"include":"#letDeclaration"}],"repository":{"letDeclaration":{"begin":"(@let)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)?","beginCaptures":{"1":{"name":"storage.type.ng"},"2":{"name":"variable.other.constant.ng"},"3":{"name":"keyword.operator.assignment.ng"}},"end":"(?<=;)","name":"meta.definition.variable.ng","patterns":[{"include":"#letInitializer"}]},"letInitializer":{"begin":"\\\\s*","beginCaptures":{"0":{"name":"keyword.operator.assignment.ng"}},"contentName":"meta.definition.variable.initializer.ng","end":";","endCaptures":{"0":{"name":"punctuation.terminator.statement.ng"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.let.ng","embeddedLangs":["angular-expression"]}`)),i=[...n,r],a=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment","name":"angular-template","patterns":[{"include":"#interpolation"}],"repository":{"interpolation":{"begin":"\\\\{\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"expression.ng","end":"}}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"expression.ng"}]}},"scopeName":"template.ng","embeddedLangs":["angular-expression"]}`)),o=[...n,a],s=Object.freeze(JSON.parse(`{"injectTo":["text.html.derivative","text.html.derivative.ng","source.ts.ng"],"injectionSelector":"L:text.html -comment -expression.ng -meta.tag -source.css -source.js","name":"angular-template-blocks","patterns":[{"include":"#block"}],"repository":{"block":{"begin":"(@)(if|else if|else|defer|placeholder|loading|error|switch|case|default|for|empty)\\\\s*","beginCaptures":{"1":{"patterns":[{"include":"#transition"}]},"2":{"name":"keyword.control.block.kind.ng"}},"end":"(?<=})","name":"control.block.ng","patterns":[{"include":"#blockExpression"},{"include":"#blockBody"}]},"blockBody":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"contentName":"control.block.body.ng","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"text.html.derivative.ng"},{"include":"template.ng"}]},"blockExpression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"contentName":"control.block.expression.ng","end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#blockExpressionOfClause"},{"include":"#blockExpressionLetBinding"},{"include":"#blockExpressionTrackClause"},{"include":"expression.ng"}]},"blockExpressionLetBinding":{"begin":"\\\\blet\\\\b","beginCaptures":{"0":{"name":"storage.type.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionOfClause":{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(of)\\\\b","beginCaptures":{"1":{"name":"variable.other.constant.ng"},"2":{"name":"keyword.operator.expression.of.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"blockExpressionTrackClause":{"begin":"\\\\btrack\\\\b","beginCaptures":{"0":{"name":"keyword.control.track.ng"}},"end":"(?=[$)])|(?<=;)","patterns":[{"include":"expression.ng"}]},"transition":{"match":"@","name":"keyword.control.block.transition.ng"}},"scopeName":"template.blocks.ng","embeddedLangs":["angular-expression","angular-template"]}`)),c=[...n,...o,s],l=e({default:()=>d}),u=Object.freeze(JSON.parse(`{"displayName":"Angular HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"angular-html","patterns":[{"include":"text.html.basic#core-minus-invalid"},{"begin":"(</?)(\\\\w[^>\\\\s]*)(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.unrecognized.html.derivative","patterns":[{"include":"text.html.basic#attribute"}]}],"scopeName":"text.html.derivative.ng","embeddedLangs":["html","angular-expression","angular-let-declaration","angular-template","angular-template-blocks"]}`)),d=[...t,...n,...i,...o,...c,u];export{i as a,o as i,l as n,n as o,c as r,d as t};