agent-relay-server 0.47.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/docs/openapi.json +29 -1
  2. package/package.json +1 -1
  3. package/public/assets/{activity-Dkzmef0Z.js → activity--wk4dICK.js} +2 -2
  4. package/public/assets/{activity-Dkzmef0Z.js.map → activity--wk4dICK.js.map} +1 -1
  5. package/public/assets/{agent-profiles-DQYHMAyu.js → agent-profiles-D_GQ78i3.js} +2 -2
  6. package/public/assets/{agent-profiles-DQYHMAyu.js.map → agent-profiles-D_GQ78i3.js.map} +1 -1
  7. package/public/assets/{agents-atr6HZ1e.js → agents-CrGzl-aX.js} +2 -2
  8. package/public/assets/{agents-atr6HZ1e.js.map → agents-CrGzl-aX.js.map} +1 -1
  9. package/public/assets/{analytics-azFfAy4R.js → analytics-CvZ_3LoL.js} +2 -2
  10. package/public/assets/{analytics-azFfAy4R.js.map → analytics-CvZ_3LoL.js.map} +1 -1
  11. package/public/assets/{andromeeda-TOIXRHPH.js → andromeeda-DedNvx3u.js} +1 -1
  12. package/public/assets/{andromeeda-TOIXRHPH.js.map → andromeeda-DedNvx3u.js.map} +1 -1
  13. package/public/assets/{angular-html-BayrRwsh.js → angular-html-BDsKlrFR.js} +2 -2
  14. package/public/assets/{angular-html-BayrRwsh.js.map → angular-html-BDsKlrFR.js.map} +1 -1
  15. package/public/assets/{angular-ts-BSsl-wTg.js → angular-ts-Dj0DuNAz.js} +2 -2
  16. package/public/assets/{angular-ts-BSsl-wTg.js.map → angular-ts-Dj0DuNAz.js.map} +1 -1
  17. package/public/assets/{astro-CMeXtmOY.js → astro-CWT8VbA8.js} +2 -2
  18. package/public/assets/{astro-CMeXtmOY.js.map → astro-CWT8VbA8.js.map} +1 -1
  19. package/public/assets/{aurora-x-COD2iFEK.js → aurora-x-BaB_RRL_.js} +1 -1
  20. package/public/assets/{aurora-x-COD2iFEK.js.map → aurora-x-BaB_RRL_.js.map} +1 -1
  21. package/public/assets/automation-D-p56w9w.js +2 -0
  22. package/public/assets/{automation-Bk4umHIm.js.map → automation-D-p56w9w.js.map} +1 -1
  23. package/public/assets/{ayu-dark-C26og0gq.js → ayu-dark-DNAy_9St.js} +1 -1
  24. package/public/assets/{ayu-dark-C26og0gq.js.map → ayu-dark-DNAy_9St.js.map} +1 -1
  25. package/public/assets/{ayu-light-CjU_OF-J.js → ayu-light-CPmuGcAc.js} +1 -1
  26. package/public/assets/{ayu-light-CjU_OF-J.js.map → ayu-light-CPmuGcAc.js.map} +1 -1
  27. package/public/assets/{ayu-mirage-mioaBxYY.js → ayu-mirage-Bl6FPCHF.js} +1 -1
  28. package/public/assets/{ayu-mirage-mioaBxYY.js.map → ayu-mirage-Bl6FPCHF.js.map} +1 -1
  29. package/public/assets/{badge-CFVr4fG9.js → badge-BR4bvEsy.js} +1 -1
  30. package/public/assets/{badge-CFVr4fG9.js.map → badge-BR4bvEsy.js.map} +1 -1
  31. package/public/assets/{blade-B4XscQpM.js → blade-Ba6j-i-7.js} +2 -2
  32. package/public/assets/{blade-B4XscQpM.js.map → blade-Ba6j-i-7.js.map} +1 -1
  33. package/public/assets/{branch-state-badge-DymObp8d.js → branch-state-badge-B8h3vcwK.js} +2 -2
  34. package/public/assets/{branch-state-badge-DymObp8d.js.map → branch-state-badge-B8h3vcwK.js.map} +1 -1
  35. package/public/assets/{bundle-web-C85e9Tgc.js → bundle-web-CXNb85wK.js} +4 -4
  36. package/public/assets/{bundle-web-C85e9Tgc.js.map → bundle-web-CXNb85wK.js.map} +1 -1
  37. package/public/assets/{button-BuTu0MHx.js → button-BwqJZS4O.js} +1 -1
  38. package/public/assets/{button-BuTu0MHx.js.map → button-BwqJZS4O.js.map} +1 -1
  39. package/public/assets/{c-ByxfEyyT.js → c-DMcYlaVJ.js} +1 -1
  40. package/public/assets/{c-ByxfEyyT.js.map → c-DMcYlaVJ.js.map} +1 -1
  41. package/public/assets/{card-C3ErQ372.js → card-C7JtSyuM.js} +1 -1
  42. package/public/assets/{card-C3ErQ372.js.map → card-C7JtSyuM.js.map} +1 -1
  43. package/public/assets/{catppuccin-frappe-Kqc2IrH6.js → catppuccin-frappe-CED1OCCz.js} +1 -1
  44. package/public/assets/{catppuccin-frappe-Kqc2IrH6.js.map → catppuccin-frappe-CED1OCCz.js.map} +1 -1
  45. package/public/assets/{catppuccin-latte-BE2tZ0v0.js → catppuccin-latte-C5iwPIMF.js} +1 -1
  46. package/public/assets/{catppuccin-latte-BE2tZ0v0.js.map → catppuccin-latte-C5iwPIMF.js.map} +1 -1
  47. package/public/assets/{catppuccin-macchiato-Crk2wQFW.js → catppuccin-macchiato-ZH42ATbn.js} +1 -1
  48. package/public/assets/{catppuccin-macchiato-Crk2wQFW.js.map → catppuccin-macchiato-ZH42ATbn.js.map} +1 -1
  49. package/public/assets/{catppuccin-mocha-E6G_9ebZ.js → catppuccin-mocha-BHvtuFhF.js} +1 -1
  50. package/public/assets/{catppuccin-mocha-E6G_9ebZ.js.map → catppuccin-mocha-BHvtuFhF.js.map} +1 -1
  51. package/public/assets/{channels-B_0wDy0s.js → channels-K5yks-NP.js} +2 -2
  52. package/public/assets/{channels-B_0wDy0s.js.map → channels-K5yks-NP.js.map} +1 -1
  53. package/public/assets/{chat-DxV4MyYF.js → chat-AcrAMzhN.js} +2 -2
  54. package/public/assets/{chat-DxV4MyYF.js.map → chat-AcrAMzhN.js.map} +1 -1
  55. package/public/assets/{coffee-ATZfkmsf.js → coffee-ahz2W4ez.js} +2 -2
  56. package/public/assets/{coffee-ATZfkmsf.js.map → coffee-ahz2W4ez.js.map} +1 -1
  57. package/public/assets/{connectors-DLqYF2_3.js → connectors-fy5L_B2T.js} +2 -2
  58. package/public/assets/{connectors-DLqYF2_3.js.map → connectors-fy5L_B2T.js.map} +1 -1
  59. package/public/assets/{copy-button-BOj6uOlU.js → copy-button-nbDhTE0M.js} +2 -2
  60. package/public/assets/{copy-button-BOj6uOlU.js.map → copy-button-nbDhTE0M.js.map} +1 -1
  61. package/public/assets/{cpp-BMZiIqTo.js → cpp-D6codUeh.js} +2 -2
  62. package/public/assets/{cpp-BMZiIqTo.js.map → cpp-D6codUeh.js.map} +1 -1
  63. package/public/assets/{css-pVoA-V-6.js → css-DqWVA79r.js} +1 -1
  64. package/public/assets/{css-pVoA-V-6.js.map → css-DqWVA79r.js.map} +1 -1
  65. package/public/assets/{csv-BSXvLGS5.js → csv-Dkqn3OZd.js} +1 -1
  66. package/public/assets/{csv-BSXvLGS5.js.map → csv-Dkqn3OZd.js.map} +1 -1
  67. package/public/assets/{dark-plus-D92FcoIb.js → dark-plus-Bhbx-RUU.js} +1 -1
  68. package/public/assets/{dark-plus-D92FcoIb.js.map → dark-plus-Bhbx-RUU.js.map} +1 -1
  69. package/public/assets/{display-ConJ9cJB.js → display-CXhnBwGf.js} +2 -2
  70. package/public/assets/display-CXhnBwGf.js.map +1 -0
  71. package/public/assets/dist-tX4uIBFU.js +2 -0
  72. package/public/assets/dist-tX4uIBFU.js.map +1 -0
  73. package/public/assets/{dracula-CLm43lMW.js → dracula-CFWRbQev.js} +1 -1
  74. package/public/assets/{dracula-CLm43lMW.js.map → dracula-CFWRbQev.js.map} +1 -1
  75. package/public/assets/{dracula-soft-BWF1hppd.js → dracula-soft-DgjJVcsb.js} +1 -1
  76. package/public/assets/{dracula-soft-BWF1hppd.js.map → dracula-soft-DgjJVcsb.js.map} +1 -1
  77. package/public/assets/{everforest-dark-T3FmZXFC.js → everforest-dark-BCF48HzC.js} +1 -1
  78. package/public/assets/{everforest-dark-T3FmZXFC.js.map → everforest-dark-BCF48HzC.js.map} +1 -1
  79. package/public/assets/{everforest-light-sVfJGMcT.js → everforest-light-QmYaRFne.js} +1 -1
  80. package/public/assets/{everforest-light-sVfJGMcT.js.map → everforest-light-QmYaRFne.js.map} +1 -1
  81. package/public/assets/{formatted-body-impl-LK0QcFLC.js → formatted-body-impl-BRKtV_Ec.js} +2 -2
  82. package/public/assets/{formatted-body-impl-LK0QcFLC.js.map → formatted-body-impl-BRKtV_Ec.js.map} +1 -1
  83. package/public/assets/{github-dark-DsObA6K_.js → github-dark-CUoBUDXH.js} +1 -1
  84. package/public/assets/{github-dark-DsObA6K_.js.map → github-dark-CUoBUDXH.js.map} +1 -1
  85. package/public/assets/{github-dark-default-BFXKIBjn.js → github-dark-default-xm9OU1Or.js} +1 -1
  86. package/public/assets/{github-dark-default-BFXKIBjn.js.map → github-dark-default-xm9OU1Or.js.map} +1 -1
  87. package/public/assets/{github-dark-dimmed-CA0i637b.js → github-dark-dimmed-DWnz-mHy.js} +1 -1
  88. package/public/assets/{github-dark-dimmed-CA0i637b.js.map → github-dark-dimmed-DWnz-mHy.js.map} +1 -1
  89. package/public/assets/{github-dark-high-contrast-Ca5xjJfx.js → github-dark-high-contrast-vOK_ibgU.js} +1 -1
  90. package/public/assets/{github-dark-high-contrast-Ca5xjJfx.js.map → github-dark-high-contrast-vOK_ibgU.js.map} +1 -1
  91. package/public/assets/{github-light-fLfNb4d8.js → github-light-CSF3E5Ti.js} +1 -1
  92. package/public/assets/{github-light-fLfNb4d8.js.map → github-light-CSF3E5Ti.js.map} +1 -1
  93. package/public/assets/{github-light-default-Dsv_97Kr.js → github-light-default-C01wYcDQ.js} +1 -1
  94. package/public/assets/{github-light-default-Dsv_97Kr.js.map → github-light-default-C01wYcDQ.js.map} +1 -1
  95. package/public/assets/{github-light-high-contrast-DTv2awN9.js → github-light-high-contrast-CKMMnFZg.js} +1 -1
  96. package/public/assets/{github-light-high-contrast-DTv2awN9.js.map → github-light-high-contrast-CKMMnFZg.js.map} +1 -1
  97. package/public/assets/{glsl-Bn23UELY.js → glsl-1QPrVesi.js} +2 -2
  98. package/public/assets/{glsl-Bn23UELY.js.map → glsl-1QPrVesi.js.map} +1 -1
  99. package/public/assets/{graphql-aueZA_Ef.js → graphql-CeRwileo.js} +2 -2
  100. package/public/assets/{graphql-aueZA_Ef.js.map → graphql-CeRwileo.js.map} +1 -1
  101. package/public/assets/{gruvbox-dark-hard-CD8QV-rj.js → gruvbox-dark-hard-DfDjG47E.js} +1 -1
  102. package/public/assets/{gruvbox-dark-hard-CD8QV-rj.js.map → gruvbox-dark-hard-DfDjG47E.js.map} +1 -1
  103. package/public/assets/{gruvbox-dark-medium-DWjrnm0G.js → gruvbox-dark-medium-BaAW7CWr.js} +1 -1
  104. package/public/assets/{gruvbox-dark-medium-DWjrnm0G.js.map → gruvbox-dark-medium-BaAW7CWr.js.map} +1 -1
  105. package/public/assets/{gruvbox-dark-soft-Dutnyk8h.js → gruvbox-dark-soft-BbwgAlEC.js} +1 -1
  106. package/public/assets/{gruvbox-dark-soft-Dutnyk8h.js.map → gruvbox-dark-soft-BbwgAlEC.js.map} +1 -1
  107. package/public/assets/{gruvbox-light-hard-DxOkDhYo.js → gruvbox-light-hard-GnBGwkrS.js} +1 -1
  108. package/public/assets/{gruvbox-light-hard-DxOkDhYo.js.map → gruvbox-light-hard-GnBGwkrS.js.map} +1 -1
  109. package/public/assets/{gruvbox-light-medium-TPSmjstG.js → gruvbox-light-medium-tlbreNy6.js} +1 -1
  110. package/public/assets/{gruvbox-light-medium-TPSmjstG.js.map → gruvbox-light-medium-tlbreNy6.js.map} +1 -1
  111. package/public/assets/{gruvbox-light-soft-Ds4EoYMY.js → gruvbox-light-soft-D2K4d_jB.js} +1 -1
  112. package/public/assets/{gruvbox-light-soft-Ds4EoYMY.js.map → gruvbox-light-soft-D2K4d_jB.js.map} +1 -1
  113. package/public/assets/{haml-I560b6sm.js → haml-CAFaQgkc.js} +2 -2
  114. package/public/assets/{haml-I560b6sm.js.map → haml-CAFaQgkc.js.map} +1 -1
  115. package/public/assets/{handlebars-DDaqkztc.js → handlebars-PzQcjzkd.js} +2 -2
  116. package/public/assets/{handlebars-DDaqkztc.js.map → handlebars-PzQcjzkd.js.map} +1 -1
  117. package/public/assets/{horizon-Btssz0LS.js → horizon-DIDc_X2h.js} +1 -1
  118. package/public/assets/{horizon-Btssz0LS.js.map → horizon-DIDc_X2h.js.map} +1 -1
  119. package/public/assets/{horizon-bright-Wt7Dv8FR.js → horizon-bright-BJPNCJjc.js} +1 -1
  120. package/public/assets/{horizon-bright-Wt7Dv8FR.js.map → horizon-bright-BJPNCJjc.js.map} +1 -1
  121. package/public/assets/{houston-BAzN2-5D.js → houston-OF5sQVBP.js} +1 -1
  122. package/public/assets/{houston-BAzN2-5D.js.map → houston-OF5sQVBP.js.map} +1 -1
  123. package/public/assets/{html-CWUNxVmc.js → html-CO8fGX9G.js} +2 -2
  124. package/public/assets/{html-CWUNxVmc.js.map → html-CO8fGX9G.js.map} +1 -1
  125. package/public/assets/{html-derivative-CZZaFvoZ.js → html-derivative-jkdQXb1I.js} +2 -2
  126. package/public/assets/{html-derivative-CZZaFvoZ.js.map → html-derivative-jkdQXb1I.js.map} +1 -1
  127. package/public/assets/{http-oB_MYwkH.js → http-awp31Uam.js} +2 -2
  128. package/public/assets/{http-oB_MYwkH.js.map → http-awp31Uam.js.map} +1 -1
  129. package/public/assets/{hurl-Dh_Bacst.js → hurl-CYLzH5tU.js} +2 -2
  130. package/public/assets/{hurl-Dh_Bacst.js.map → hurl-CYLzH5tU.js.map} +1 -1
  131. package/public/assets/{imba-CYU3KKfp.js → imba-DSmsmqxt.js} +1 -1
  132. package/public/assets/{imba-CYU3KKfp.js.map → imba-DSmsmqxt.js.map} +1 -1
  133. package/public/assets/index-B8ND8v33.css +2 -0
  134. package/public/assets/index-C6HByEQl.js +21 -0
  135. package/public/assets/index-C6HByEQl.js.map +1 -0
  136. package/public/assets/{input-CawU8wfc.js → input-YoPXrp72.js} +1 -1
  137. package/public/assets/{input-CawU8wfc.js.map → input-YoPXrp72.js.map} +1 -1
  138. package/public/assets/insights-DFs8q-45.js +2 -0
  139. package/public/assets/{insights-DZKCKL71.js.map → insights-DFs8q-45.js.map} +1 -1
  140. package/public/assets/{integrations-CdeQuRSQ.js → integrations-Bg_JSXvm.js} +2 -2
  141. package/public/assets/{integrations-CdeQuRSQ.js.map → integrations-Bg_JSXvm.js.map} +1 -1
  142. package/public/assets/{java-W2nUDe85.js → java-DgkDOVUq.js} +1 -1
  143. package/public/assets/{java-W2nUDe85.js.map → java-DgkDOVUq.js.map} +1 -1
  144. package/public/assets/{javascript-DhhMt2AW.js → javascript-B_u1HgsA.js} +1 -1
  145. package/public/assets/{javascript-DhhMt2AW.js.map → javascript-B_u1HgsA.js.map} +1 -1
  146. package/public/assets/{jinja-BAB89wEM.js → jinja-2vqfsTaa.js} +2 -2
  147. package/public/assets/{jinja-BAB89wEM.js.map → jinja-2vqfsTaa.js.map} +1 -1
  148. package/public/assets/{jison-Be2VyOc7.js → jison-R_8Xl2fT.js} +2 -2
  149. package/public/assets/{jison-Be2VyOc7.js.map → jison-R_8Xl2fT.js.map} +1 -1
  150. package/public/assets/{json-BE_Kg3UN.js → json-gsp9Jz-Q.js} +1 -1
  151. package/public/assets/{json-BE_Kg3UN.js.map → json-gsp9Jz-Q.js.map} +1 -1
  152. package/public/assets/{json5-B1_eJGWL.js → json5-CyawKEQV.js} +1 -1
  153. package/public/assets/{json5-B1_eJGWL.js.map → json5-CyawKEQV.js.map} +1 -1
  154. package/public/assets/{jsonc-c9fYzzNa.js → jsonc-C5zIYKcF.js} +1 -1
  155. package/public/assets/{jsonc-c9fYzzNa.js.map → jsonc-C5zIYKcF.js.map} +1 -1
  156. package/public/assets/{jsonl-DxKnIZRN.js → jsonl-7Iqw6Ajc.js} +1 -1
  157. package/public/assets/{jsonl-DxKnIZRN.js.map → jsonl-7Iqw6Ajc.js.map} +1 -1
  158. package/public/assets/{jsx-DP4JsN7e.js → jsx-6UC0zwzb.js} +1 -1
  159. package/public/assets/{jsx-DP4JsN7e.js.map → jsx-6UC0zwzb.js.map} +1 -1
  160. package/public/assets/{julia-DIA2-AWD.js → julia-B68-s46l.js} +2 -2
  161. package/public/assets/{julia-DIA2-AWD.js.map → julia-B68-s46l.js.map} +1 -1
  162. package/public/assets/{kanagawa-dragon-D7ScO9qT.js → kanagawa-dragon-CXS-g1Gx.js} +1 -1
  163. package/public/assets/{kanagawa-dragon-D7ScO9qT.js.map → kanagawa-dragon-CXS-g1Gx.js.map} +1 -1
  164. package/public/assets/{kanagawa-lotus-BHmtJ61Q.js → kanagawa-lotus-8h3vn-GZ.js} +1 -1
  165. package/public/assets/{kanagawa-lotus-BHmtJ61Q.js.map → kanagawa-lotus-8h3vn-GZ.js.map} +1 -1
  166. package/public/assets/{kanagawa-wave-C8Lga2zE.js → kanagawa-wave-C0HtbWGq.js} +1 -1
  167. package/public/assets/{kanagawa-wave-C8Lga2zE.js.map → kanagawa-wave-C0HtbWGq.js.map} +1 -1
  168. package/public/assets/{laserwave-D4LCoVki.js → laserwave-CbYdyo81.js} +1 -1
  169. package/public/assets/{laserwave-D4LCoVki.js.map → laserwave-CbYdyo81.js.map} +1 -1
  170. package/public/assets/{less-C4-yvJVc.js → less-CfNrES-C.js} +1 -1
  171. package/public/assets/{less-C4-yvJVc.js.map → less-CfNrES-C.js.map} +1 -1
  172. package/public/assets/{lib-BmYG-YKF.js → lib-D8ccisdr.js} +2 -2
  173. package/public/assets/{lib-BmYG-YKF.js.map → lib-D8ccisdr.js.map} +1 -1
  174. package/public/assets/{lib-D3a84zdu.js → lib-VSpj1Yz-.js} +1 -1
  175. package/public/assets/{lib-D3a84zdu.js.map → lib-VSpj1Yz-.js.map} +1 -1
  176. package/public/assets/{light-plus-CKgUzHbZ.js → light-plus-D5ngymkI.js} +1 -1
  177. package/public/assets/{light-plus-CKgUzHbZ.js.map → light-plus-D5ngymkI.js.map} +1 -1
  178. package/public/assets/{maintenance-DbqSE_ps.js → maintenance-DHZOmgPn.js} +2 -2
  179. package/public/assets/{maintenance-DbqSE_ps.js.map → maintenance-DHZOmgPn.js.map} +1 -1
  180. package/public/assets/{managed-agents-BxhRiBVn.js → managed-agents-DmSyKkG1.js} +2 -2
  181. package/public/assets/{managed-agents-BxhRiBVn.js.map → managed-agents-DmSyKkG1.js.map} +1 -1
  182. package/public/assets/{markdown-BJXgi76t.js → markdown-DcNETIgQ.js} +1 -1
  183. package/public/assets/{markdown-BJXgi76t.js.map → markdown-DcNETIgQ.js.map} +1 -1
  184. package/public/assets/{markdown-preview-impl-Dz2Spmat.js → markdown-preview-impl-C1D7h9Rg.js} +2 -2
  185. package/public/assets/{markdown-preview-impl-Dz2Spmat.js.map → markdown-preview-impl-C1D7h9Rg.js.map} +1 -1
  186. package/public/assets/{marko-s78cde-R.js → marko-BknKj3Pf.js} +2 -2
  187. package/public/assets/{marko-s78cde-R.js.map → marko-BknKj3Pf.js.map} +1 -1
  188. package/public/assets/{material-theme-ZMpZUDuj.js → material-theme-Gg3xfPe0.js} +1 -1
  189. package/public/assets/{material-theme-ZMpZUDuj.js.map → material-theme-Gg3xfPe0.js.map} +1 -1
  190. package/public/assets/{material-theme-darker-BAQbewVz.js → material-theme-darker-BZuy5-S0.js} +1 -1
  191. package/public/assets/{material-theme-darker-BAQbewVz.js.map → material-theme-darker-BZuy5-S0.js.map} +1 -1
  192. package/public/assets/{material-theme-lighter-FyN5xGWf.js → material-theme-lighter-C5V_iqXU.js} +1 -1
  193. package/public/assets/{material-theme-lighter-FyN5xGWf.js.map → material-theme-lighter-C5V_iqXU.js.map} +1 -1
  194. package/public/assets/{material-theme-ocean-C-7FJG01.js → material-theme-ocean-Bm7qyAET.js} +1 -1
  195. package/public/assets/{material-theme-ocean-C-7FJG01.js.map → material-theme-ocean-Bm7qyAET.js.map} +1 -1
  196. package/public/assets/{material-theme-palenight-CTAI-sIL.js → material-theme-palenight--HkFOey5.js} +1 -1
  197. package/public/assets/{material-theme-palenight-CTAI-sIL.js.map → material-theme-palenight--HkFOey5.js.map} +1 -1
  198. package/public/assets/{mdc-D1B7fLQ0.js → mdc-DZz2DrXs.js} +2 -2
  199. package/public/assets/{mdc-D1B7fLQ0.js.map → mdc-DZz2DrXs.js.map} +1 -1
  200. package/public/assets/{mdx-DZlYR5iE.js → mdx-8jaRik-D.js} +1 -1
  201. package/public/assets/{mdx-DZlYR5iE.js.map → mdx-8jaRik-D.js.map} +1 -1
  202. package/public/assets/{memory-BTjUKTyA.js → memory-p2-2Ondq.js} +2 -2
  203. package/public/assets/{memory-BTjUKTyA.js.map → memory-p2-2Ondq.js.map} +1 -1
  204. package/public/assets/{messages-C8z05Y3O.js → messages-vytFTjcd.js} +2 -2
  205. package/public/assets/{messages-C8z05Y3O.js.map → messages-vytFTjcd.js.map} +1 -1
  206. package/public/assets/{min-dark-BZ3g8z3r.js → min-dark-BwzrQQKV.js} +1 -1
  207. package/public/assets/{min-dark-BZ3g8z3r.js.map → min-dark-BwzrQQKV.js.map} +1 -1
  208. package/public/assets/{min-light-BVOwCf2X.js → min-light-CuZnzJu2.js} +1 -1
  209. package/public/assets/{min-light-BVOwCf2X.js.map → min-light-CuZnzJu2.js.map} +1 -1
  210. package/public/assets/{monokai-BD0UwGu2.js → monokai-DQ6Z_SqG.js} +1 -1
  211. package/public/assets/{monokai-BD0UwGu2.js.map → monokai-DQ6Z_SqG.js.map} +1 -1
  212. package/public/assets/{night-owl-E_m7-w50.js → night-owl-CJ5iV153.js} +1 -1
  213. package/public/assets/{night-owl-E_m7-w50.js.map → night-owl-CJ5iV153.js.map} +1 -1
  214. package/public/assets/{night-owl-light-C4iZ6jhb.js → night-owl-light-C46RDt8C.js} +1 -1
  215. package/public/assets/{night-owl-light-C4iZ6jhb.js.map → night-owl-light-C46RDt8C.js.map} +1 -1
  216. package/public/assets/{nord-DjtS30mp.js → nord-DB8NWghW.js} +1 -1
  217. package/public/assets/{nord-DjtS30mp.js.map → nord-DB8NWghW.js.map} +1 -1
  218. package/public/assets/{one-dark-pro-XzudhQYY.js → one-dark-pro-Dkf7ad3J.js} +1 -1
  219. package/public/assets/{one-dark-pro-XzudhQYY.js.map → one-dark-pro-Dkf7ad3J.js.map} +1 -1
  220. package/public/assets/{one-light-D7oIost9.js → one-light-kl_9JE41.js} +1 -1
  221. package/public/assets/{one-light-D7oIost9.js.map → one-light-kl_9JE41.js.map} +1 -1
  222. package/public/assets/{orchestrators-DQqtYryc.js → orchestrators-CQNQYFnL.js} +2 -2
  223. package/public/assets/{orchestrators-DQqtYryc.js.map → orchestrators-CQNQYFnL.js.map} +1 -1
  224. package/public/assets/{overview-CGYu6qQr.js → overview-CurMUxSA.js} +2 -2
  225. package/public/assets/{overview-CGYu6qQr.js.map → overview-CurMUxSA.js.map} +1 -1
  226. package/public/assets/{pairs-BgqXzCto.js → pairs-CSga0gZ4.js} +2 -2
  227. package/public/assets/{pairs-BgqXzCto.js.map → pairs-CSga0gZ4.js.map} +1 -1
  228. package/public/assets/{php-jzPvT2nT.js → php-BzbyfbR-.js} +2 -2
  229. package/public/assets/{php-jzPvT2nT.js.map → php-BzbyfbR-.js.map} +1 -1
  230. package/public/assets/{plastic-CbbYdTlt.js → plastic-zJz-m3Rm.js} +1 -1
  231. package/public/assets/{plastic-CbbYdTlt.js.map → plastic-zJz-m3Rm.js.map} +1 -1
  232. package/public/assets/{poimandres-D_GVW1nv.js → poimandres-tJBwotov.js} +1 -1
  233. package/public/assets/{poimandres-D_GVW1nv.js.map → poimandres-tJBwotov.js.map} +1 -1
  234. package/public/assets/{postcss-C9pEROMA.js → postcss-BIneP_cF.js} +1 -1
  235. package/public/assets/{postcss-C9pEROMA.js.map → postcss-BIneP_cF.js.map} +1 -1
  236. package/public/assets/{pug-By7fl28s.js → pug-DA_d_Siw.js} +2 -2
  237. package/public/assets/{pug-By7fl28s.js.map → pug-DA_d_Siw.js.map} +1 -1
  238. package/public/assets/{python-B3yVAntA.js → python-BVsgiBse.js} +1 -1
  239. package/public/assets/{python-B3yVAntA.js.map → python-BVsgiBse.js.map} +1 -1
  240. package/public/assets/{r-Cj0FbcZN.js → r-Eveq-XaR.js} +1 -1
  241. package/public/assets/{r-Cj0FbcZN.js.map → r-Eveq-XaR.js.map} +1 -1
  242. package/public/assets/{red-mpYhQQnN.js → red-BibI5kCP.js} +1 -1
  243. package/public/assets/{red-mpYhQQnN.js.map → red-BibI5kCP.js.map} +1 -1
  244. package/public/assets/{regexp-CZO5qNCb.js → regexp-BfvBV9FB.js} +1 -1
  245. package/public/assets/{regexp-CZO5qNCb.js.map → regexp-BfvBV9FB.js.map} +1 -1
  246. package/public/assets/{rose-pine-BFFt2t6B.js → rose-pine-DvIcl7lT.js} +1 -1
  247. package/public/assets/{rose-pine-BFFt2t6B.js.map → rose-pine-DvIcl7lT.js.map} +1 -1
  248. package/public/assets/{rose-pine-dawn-D85FBDtp.js → rose-pine-dawn-BqS6xqEj.js} +1 -1
  249. package/public/assets/{rose-pine-dawn-D85FBDtp.js.map → rose-pine-dawn-BqS6xqEj.js.map} +1 -1
  250. package/public/assets/{rose-pine-moon-xbAMILS6.js → rose-pine-moon-BGbVQH-B.js} +1 -1
  251. package/public/assets/{rose-pine-moon-xbAMILS6.js.map → rose-pine-moon-BGbVQH-B.js.map} +1 -1
  252. package/public/assets/{sass-Cgtxkbc_.js → sass-BdjHl3zg.js} +1 -1
  253. package/public/assets/{sass-Cgtxkbc_.js.map → sass-BdjHl3zg.js.map} +1 -1
  254. package/public/assets/{scss-BmqDcfJ5.js → scss-BULQDDIU.js} +2 -2
  255. package/public/assets/{scss-BmqDcfJ5.js.map → scss-BULQDDIU.js.map} +1 -1
  256. package/public/assets/{security-BqfRVw-p.js → security-BFmvd8TS.js} +2 -2
  257. package/public/assets/{security-BqfRVw-p.js.map → security-BFmvd8TS.js.map} +1 -1
  258. package/public/assets/select-U0nqw_nv.js +2 -0
  259. package/public/assets/select-U0nqw_nv.js.map +1 -0
  260. package/public/assets/settings-D_1nlrGB.js +10 -0
  261. package/public/assets/settings-D_1nlrGB.js.map +1 -0
  262. package/public/assets/{shellscript-CCotFWp7.js → shellscript-C1qfRdhy.js} +1 -1
  263. package/public/assets/{shellscript-CCotFWp7.js.map → shellscript-C1qfRdhy.js.map} +1 -1
  264. package/public/assets/{slack-dark-DC1pzHlk.js → slack-dark-BLmwQRBe.js} +1 -1
  265. package/public/assets/{slack-dark-DC1pzHlk.js.map → slack-dark-BLmwQRBe.js.map} +1 -1
  266. package/public/assets/{slack-ochin-DzuCpDdy.js → slack-ochin-CRvGVzm3.js} +1 -1
  267. package/public/assets/{slack-ochin-DzuCpDdy.js.map → slack-ochin-CRvGVzm3.js.map} +1 -1
  268. package/public/assets/{snazzy-light-a1eNYevY.js → snazzy-light-SlUvEGGf.js} +1 -1
  269. package/public/assets/{snazzy-light-a1eNYevY.js.map → snazzy-light-SlUvEGGf.js.map} +1 -1
  270. package/public/assets/{solarized-dark-BOM_aOHg.js → solarized-dark-DbIwHRsR.js} +1 -1
  271. package/public/assets/{solarized-dark-BOM_aOHg.js.map → solarized-dark-DbIwHRsR.js.map} +1 -1
  272. package/public/assets/{solarized-light-pc9woDHa.js → solarized-light-CYdGXtLL.js} +1 -1
  273. package/public/assets/{solarized-light-pc9woDHa.js.map → solarized-light-CYdGXtLL.js.map} +1 -1
  274. package/public/assets/{sql-BRVJ7Db3.js → sql-CA1RHzsH.js} +1 -1
  275. package/public/assets/{sql-BRVJ7Db3.js.map → sql-CA1RHzsH.js.map} +1 -1
  276. package/public/assets/{store-B6qT5_de.js → store-qcA2XXVy.js} +2 -2
  277. package/public/assets/{store-B6qT5_de.js.map → store-qcA2XXVy.js.map} +1 -1
  278. package/public/assets/{stylus-D0f0is5z.js → stylus-BbeofjW2.js} +1 -1
  279. package/public/assets/{stylus-D0f0is5z.js.map → stylus-BbeofjW2.js.map} +1 -1
  280. package/public/assets/{svelte-BNHEoLRc.js → svelte-bnIQdxmO.js} +2 -2
  281. package/public/assets/{svelte-BNHEoLRc.js.map → svelte-bnIQdxmO.js.map} +1 -1
  282. package/public/assets/{synthwave-84-B6wFOt-G.js → synthwave-84-DGP9WYc0.js} +1 -1
  283. package/public/assets/{synthwave-84-B6wFOt-G.js.map → synthwave-84-DGP9WYc0.js.map} +1 -1
  284. package/public/assets/{tasks-DiZ_4TYW.js → tasks-TnEbfohb.js} +2 -2
  285. package/public/assets/{tasks-DiZ_4TYW.js.map → tasks-TnEbfohb.js.map} +1 -1
  286. package/public/assets/teams-D5GY1lKs.js +2 -0
  287. package/public/assets/teams-D5GY1lKs.js.map +1 -0
  288. package/public/assets/{terminal-viewer-impl-D3T1F77z.js → terminal-viewer-impl-DwuhfM71.js} +2 -2
  289. package/public/assets/{terminal-viewer-impl-D3T1F77z.js.map → terminal-viewer-impl-DwuhfM71.js.map} +1 -1
  290. package/public/assets/{tokyo-night-CdlRv-Oa.js → tokyo-night-B7UMNIj1.js} +1 -1
  291. package/public/assets/{tokyo-night-CdlRv-Oa.js.map → tokyo-night-B7UMNIj1.js.map} +1 -1
  292. package/public/assets/{ts-tags-i7eO9SLg.js → ts-tags-BRtdAecP.js} +2 -2
  293. package/public/assets/{ts-tags-i7eO9SLg.js.map → ts-tags-BRtdAecP.js.map} +1 -1
  294. package/public/assets/{tsx-BTTibUSH.js → tsx-BUodVN6v.js} +1 -1
  295. package/public/assets/{tsx-BTTibUSH.js.map → tsx-BUodVN6v.js.map} +1 -1
  296. package/public/assets/{typescript-DpFaB1ya.js → typescript-DqNmJejE.js} +1 -1
  297. package/public/assets/{typescript-DpFaB1ya.js.map → typescript-DqNmJejE.js.map} +1 -1
  298. package/public/assets/{use-keyboard-viewport-ihP7KLb9.js → use-keyboard-viewport-BY99X7eI.js} +1 -1
  299. package/public/assets/{use-keyboard-viewport-ihP7KLb9.js.map → use-keyboard-viewport-BY99X7eI.js.map} +1 -1
  300. package/public/assets/{vesper-DKdu8Hyo.js → vesper-DaqCNT42.js} +1 -1
  301. package/public/assets/{vesper-DKdu8Hyo.js.map → vesper-DaqCNT42.js.map} +1 -1
  302. package/public/assets/{vitesse-black-Be8WuqKU.js → vitesse-black-ClNY6UCb.js} +1 -1
  303. package/public/assets/{vitesse-black-Be8WuqKU.js.map → vitesse-black-ClNY6UCb.js.map} +1 -1
  304. package/public/assets/{vitesse-dark-ClMFyn4F.js → vitesse-dark-C8_hSmOi.js} +1 -1
  305. package/public/assets/{vitesse-dark-ClMFyn4F.js.map → vitesse-dark-C8_hSmOi.js.map} +1 -1
  306. package/public/assets/{vitesse-light-7vho7arZ.js → vitesse-light-BXxp78a7.js} +1 -1
  307. package/public/assets/{vitesse-light-7vho7arZ.js.map → vitesse-light-BXxp78a7.js.map} +1 -1
  308. package/public/assets/{vue-v9GvV0kN.js → vue-Dj6AvMUo.js} +2 -2
  309. package/public/assets/{vue-v9GvV0kN.js.map → vue-Dj6AvMUo.js.map} +1 -1
  310. package/public/assets/{vue-html-CdsVcCQg.js → vue-html-Bbzrp6BF.js} +2 -2
  311. package/public/assets/{vue-html-CdsVcCQg.js.map → vue-html-Bbzrp6BF.js.map} +1 -1
  312. package/public/assets/{vue-vine-N4EjXMTf.js → vue-vine-CzAmGrih.js} +2 -2
  313. package/public/assets/{vue-vine-N4EjXMTf.js.map → vue-vine-CzAmGrih.js.map} +1 -1
  314. package/public/assets/{wasm-LHfX4W14.js → wasm-jf5ULvTY.js} +1 -1
  315. package/public/assets/{wasm-LHfX4W14.js.map → wasm-jf5ULvTY.js.map} +1 -1
  316. package/public/assets/{wasm-DU4DF4l4.js → wasm-tO7wdIO0.js} +1 -1
  317. package/public/assets/{wasm-DU4DF4l4.js.map → wasm-tO7wdIO0.js.map} +1 -1
  318. package/public/assets/{wgsl-C5uU9e4j.js → wgsl-m1TdqKPy.js} +1 -1
  319. package/public/assets/{wgsl-C5uU9e4j.js.map → wgsl-m1TdqKPy.js.map} +1 -1
  320. package/public/assets/{wit-DzVUU5dg.js → wit-Cgq8vEAf.js} +1 -1
  321. package/public/assets/{wit-DzVUU5dg.js.map → wit-Cgq8vEAf.js.map} +1 -1
  322. package/public/assets/{work-queue-C1p2Hybt.js → work-queue-D1iqCla1.js} +2 -2
  323. package/public/assets/{work-queue-C1p2Hybt.js.map → work-queue-D1iqCla1.js.map} +1 -1
  324. package/public/assets/{workspaces-DqVr0uN7.js → workspaces-BRVqBWat.js} +2 -2
  325. package/public/assets/{workspaces-DqVr0uN7.js.map → workspaces-BRVqBWat.js.map} +1 -1
  326. package/public/assets/{xml-CqN01Zdp.js → xml-Ct93EBnJ.js} +2 -2
  327. package/public/assets/{xml-CqN01Zdp.js.map → xml-Ct93EBnJ.js.map} +1 -1
  328. package/public/assets/{yaml-DV9wFwNg.js → yaml-Bs2vd4Y_.js} +1 -1
  329. package/public/assets/{yaml-DV9wFwNg.js.map → yaml-Bs2vd4Y_.js.map} +1 -1
  330. package/public/index.html +10 -10
  331. package/src/db/teams.ts +7 -0
  332. package/src/routes/index.ts +2 -1
  333. package/src/routes/teams.ts +14 -1
  334. package/public/assets/automation-Bk4umHIm.js +0 -2
  335. package/public/assets/display-ConJ9cJB.js.map +0 -1
  336. package/public/assets/index-CT10XH5Y.js +0 -21
  337. package/public/assets/index-CT10XH5Y.js.map +0 -1
  338. package/public/assets/index-Ryvn1efN.css +0 -2
  339. package/public/assets/insights-DZKCKL71.js +0 -2
  340. package/public/assets/settings-63whklIq.js +0 -10
  341. package/public/assets/settings-63whklIq.js.map +0 -1
  342. package/public/assets/switch-Bp64beKV.js +0 -2
  343. package/public/assets/switch-Bp64beKV.js.map +0 -1
  344. /package/public/assets/{preload-helper-CDM1EFcn.js → preload-helper-CP_edrrL.js} +0 -0
@@ -1,2 +1,2 @@
1
1
  import"./chunk-CilyBKbf.js";import{Un as e,jn as t,kn as n}from"./lucide-react-ChOGD4vc.js";e();var r=t();function i({className:e,type:t,...i}){return(0,r.jsx)(`input`,{type:t,"data-slot":`input`,className:n(`h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,e),...i})}export{i as t};
2
- //# sourceMappingURL=input-CawU8wfc.js.map
2
+ //# sourceMappingURL=input-YoPXrp72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-CawU8wfc.js","names":[],"sources":["../../dashboard/src/components/ui/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n"],"mappings":"0GAIA,SAAS,EAAM,CAAE,YAAW,OAAM,GAAG,GAAwC,CAC3E,OACE,EAAA,EAAA,KAAC,QAAD,CACQ,OACN,YAAU,QACV,UAAW,EACT,8oBACA,EACD,CACD,GAAI,EACJ,CAAA"}
1
+ {"version":3,"file":"input-YoPXrp72.js","names":[],"sources":["../../dashboard/src/components/ui/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n"],"mappings":"0GAIA,SAAS,EAAM,CAAE,YAAW,OAAM,GAAG,GAAwC,CAC3E,OACE,EAAA,EAAA,KAAC,QAAD,CACQ,OACN,YAAU,QACV,UAAW,EACT,8oBACA,EACD,CACD,GAAI,EACJ,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./chunk-CilyBKbf.js";import{M as t,Mn as n,Un as r,jn as i,lt as a}from"./lucide-react-ChOGD4vc.js";import{H as o,J as s}from"./display-CXhnBwGf.js";import{t as c}from"./badge-BR4bvEsy.js";import{t as l}from"./button-BwqJZS4O.js";import{t as u}from"./input-YoPXrp72.js";import{N as d}from"./index-C6HByEQl.js";import{i as f,n as p,r as m,t as h}from"./card-C7JtSyuM.js";var g=e(r(),1),_=i(),v={enabled:!0,contextRatio:{enabled:!0},introspection:{enabled:!0,minTurns:4,minContextRemaining:.15}};function y(e){return!e||Object.keys(e).length===0?`—`:Object.entries(e).map(([e,t])=>`${e}: ${typeof t==`number`?Math.round(t*1e3)/1e3:String(t)}`).join(` `)}function b(){let[e,r]=(0,g.useState)(v),[i,b]=(0,g.useState)(0),[x,S]=(0,g.useState)([]),[C,w]=(0,g.useState)([]),[T,E]=(0,g.useState)([]),[D,O]=(0,g.useState)(``),[k,A]=(0,g.useState)(``),[j,M]=(0,g.useState)(!1),[N,P]=(0,g.useState)(null),[F,I]=(0,g.useState)(()=>Date.now());async function L(){P(null);try{let e=new URLSearchParams;D&&e.set(`project`,D),k&&e.set(`signal`,k);let t=e.toString(),[i,a]=await Promise.all([n(`GET`,`/insights/config`),n(`GET`,`/insights/observations${t?`?${t}`:``}`)]);r(i.value),b(i.version),S(a.observations),w(a.stats),E(a.projects),I(Date.now())}catch(e){P(s(e))}}(0,g.useEffect)(()=>{L()},[D,k]);async function R(t){M(!0),P(null);let i=e;r(t);try{let e=await n(`PUT`,`/insights/config`,{value:t,updatedBy:`dashboard`});r(e.value),b(e.version)}catch(e){r(i),P(s(e))}finally{M(!1)}}let z=(0,g.useMemo)(()=>[...new Set(C.map(e=>e.signal))].sort(),[C]),B=(0,g.useMemo)(()=>C.filter(e=>e.project===null),[C]),V=(0,g.useMemo)(()=>C.filter(e=>e.project!==null),[C]);return(0,_.jsxs)(`div`,{className:`space-y-4 p-4`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,_.jsx)(a,{className:`size-5 text-primary`}),(0,_.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Insights`}),(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`continuous self-improvement · epic #183`})]}),(0,_.jsxs)(l,{variant:`outline`,size:`sm`,onClick:()=>void L(),children:[(0,_.jsx)(t,{className:`size-4`}),` Refresh`]})]}),N&&(0,_.jsx)(`div`,{className:`rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive`,children:N}),(0,_.jsxs)(h,{children:[(0,_.jsx)(m,{children:(0,_.jsxs)(f,{className:`flex items-center justify-between`,children:[(0,_.jsx)(`span`,{children:`Features`}),(0,_.jsxs)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:[`config v`,i,` · saved by `,e&&`dashboard`]})]})}),(0,_.jsxs)(p,{className:`space-y-4`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`div`,{className:`text-sm font-medium`,children:`Insights enabled`}),(0,_.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Master switch. When off, no signals are recorded regardless of the toggles below.`})]}),(0,_.jsx)(d,{checked:e.enabled,disabled:j,onCheckedChange:t=>void R({...e,enabled:t})})]}),(0,_.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border pt-3`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`text-sm font-medium`,children:[`Context-gathering ratio `,(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`(#184)`})]}),(0,_.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Server-side: read/search vs. action before first substantive move, per session.`})]}),(0,_.jsx)(d,{checked:e.contextRatio.enabled,disabled:j||!e.enabled,onCheckedChange:t=>void R({...e,contextRatio:{enabled:t}})})]}),(0,_.jsxs)(`div`,{className:`border-t border-border pt-3`,children:[(0,_.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`text-sm font-medium`,children:[`End-of-session introspection `,(0,_.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`(#185)`})]}),(0,_.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:`Agent-authored 3-field artifact at session end. Gated below.`})]}),(0,_.jsx)(d,{checked:e.introspection.enabled,disabled:j||!e.enabled,onCheckedChange:t=>void R({...e,introspection:{...e.introspection,enabled:t}})})]}),(0,_.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-4`,children:[(0,_.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[`min turns`,(0,_.jsx)(u,{type:`number`,className:`h-7 w-20`,value:e.introspection.minTurns,disabled:j||!e.enabled||!e.introspection.enabled,onChange:t=>r({...e,introspection:{...e.introspection,minTurns:Number(t.target.value)}}),onBlur:()=>void R(e)})]}),(0,_.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[`min context remaining (0–1)`,(0,_.jsx)(u,{type:`number`,step:`0.05`,min:`0`,max:`1`,className:`h-7 w-24`,value:e.introspection.minContextRemaining,disabled:j||!e.enabled||!e.introspection.enabled,onChange:t=>r({...e,introspection:{...e.introspection,minContextRemaining:Number(t.target.value)}}),onBlur:()=>void R(e)})]})]})]})]})]}),(0,_.jsxs)(h,{children:[(0,_.jsx)(m,{children:(0,_.jsx)(f,{children:`Signals`})}),(0,_.jsx)(p,{children:B.length===0?(0,_.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`No observations yet — they appear after sessions end with Insights enabled.`}):(0,_.jsx)(`div`,{className:`space-y-4`,children:B.map(e=>(0,_.jsxs)(`div`,{children:[(0,_.jsxs)(`div`,{className:`mb-1 flex items-center gap-2`,children:[(0,_.jsx)(c,{variant:`secondary`,children:e.signal}),(0,_.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.count,` obs · `,e.avgRatio===null?`no ratio`:`avg ratio ${e.avgRatio.toFixed(2)}`,` · `,o(F,e.lastAt)]})]}),(0,_.jsx)(`div`,{className:`flex flex-wrap gap-2 pl-2`,children:V.filter(t=>t.signal===e.signal).map(t=>(0,_.jsxs)(`span`,{className:`rounded border border-border px-2 py-0.5 text-xs text-muted-foreground`,children:[t.project,`: `,t.count,t.avgRatio===null?``:` · ${t.avgRatio.toFixed(2)}`]},`${e.signal}-${t.project}`))})]},e.signal))})})]}),(0,_.jsxs)(h,{children:[(0,_.jsx)(m,{children:(0,_.jsxs)(f,{className:`flex flex-wrap items-center gap-3`,children:[(0,_.jsx)(`span`,{children:`Observations`}),(0,_.jsxs)(`select`,{className:`h-7 rounded border border-border bg-background px-2 text-xs`,value:D,onChange:e=>O(e.target.value),children:[(0,_.jsx)(`option`,{value:``,children:`all projects`}),T.map(e=>(0,_.jsx)(`option`,{value:e,children:e},e))]}),(0,_.jsxs)(`select`,{className:`h-7 rounded border border-border bg-background px-2 text-xs`,value:k,onChange:e=>A(e.target.value),children:[(0,_.jsx)(`option`,{value:``,children:`all signals`}),z.map(e=>(0,_.jsx)(`option`,{value:e,children:e},e))]})]})}),(0,_.jsx)(p,{children:x.length===0?(0,_.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`No observations match.`}):(0,_.jsx)(`div`,{className:`overflow-x-auto`,children:(0,_.jsxs)(`table`,{className:`w-full min-w-[680px] text-left text-xs`,children:[(0,_.jsx)(`thead`,{className:`text-muted-foreground`,children:(0,_.jsxs)(`tr`,{className:`border-b border-border`,children:[(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`when`}),(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`project`}),(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`signal`}),(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`src`}),(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`value`}),(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`outcome`}),(0,_.jsx)(`th`,{className:`py-1 pr-3 font-medium`,children:`session`})]})}),(0,_.jsx)(`tbody`,{children:x.map(e=>(0,_.jsxs)(`tr`,{className:`border-b border-border/50`,children:[(0,_.jsx)(`td`,{className:`py-1 pr-3 whitespace-nowrap text-muted-foreground`,children:o(F,e.createdAt)}),(0,_.jsx)(`td`,{className:`py-1 pr-3 whitespace-nowrap`,children:e.project}),(0,_.jsx)(`td`,{className:`py-1 pr-3 whitespace-nowrap`,children:(0,_.jsx)(c,{variant:`outline`,children:e.signal})}),(0,_.jsx)(`td`,{className:`py-1 pr-3 whitespace-nowrap text-muted-foreground`,children:e.source}),(0,_.jsx)(`td`,{className:`py-1 pr-3 font-mono`,children:y(e.value)}),(0,_.jsx)(`td`,{className:`py-1 pr-3 font-mono text-muted-foreground`,children:y(e.outcome)}),(0,_.jsx)(`td`,{className:`py-1 pr-3 whitespace-nowrap text-muted-foreground`,children:e.agentId??e.sessionId.slice(0,12)})]},e.id))})]})})})]})]})}export{b as InsightsView};
2
+ //# sourceMappingURL=insights-DFs8q-45.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insights-DZKCKL71.js","names":[],"sources":["../../dashboard/src/components/views/insights.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { errMessage } from 'agent-relay-sdk/types'\nimport { api } from '@/lib/api'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Input } from '@/components/ui/input'\nimport { Switch } from '@/components/ui/switch'\nimport { timeAgo } from '@/lib/display'\nimport { Lightbulb, RefreshCw } from 'lucide-react'\n\n// Insights — continuous self-improvement module (epic #183, docs/self-improvement.md).\n// v0: feature toggles + a raw per-project/global view of the observations the relay\n// collects. No charts, no alerting — the data earns those once a week proves it's real.\n\ninterface InsightsConfig {\n enabled: boolean\n contextRatio: { enabled: boolean }\n introspection: { enabled: boolean; minTurns: number; minContextRemaining: number }\n}\n\ninterface ConfigEntry {\n value: InsightsConfig\n version: number\n updatedAt: string\n updatedBy?: string\n}\n\ninterface Observation {\n id: number\n sessionId: string\n agentId?: string\n project: string\n signal: string\n value: Record<string, unknown>\n outcome?: Record<string, unknown>\n source: 'server' | 'agent'\n createdAt: number\n}\n\ninterface Stat {\n signal: string\n project: string | null\n count: number\n avgRatio: number | null\n lastAt: number | null\n}\n\ninterface ObservationsResponse {\n observations: Observation[]\n stats: Stat[]\n projects: string[]\n}\n\nconst DEFAULT_CONFIG: InsightsConfig = {\n enabled: true,\n contextRatio: { enabled: true },\n introspection: { enabled: true, minTurns: 4, minContextRemaining: 0.15 },\n}\n\nfunction compactJson(value: Record<string, unknown> | undefined): string {\n if (!value || Object.keys(value).length === 0) return '—'\n return Object.entries(value)\n .map(([k, v]) => `${k}: ${typeof v === 'number' ? Math.round(v * 1000) / 1000 : String(v)}`)\n .join(' ')\n}\n\nexport function InsightsView() {\n const [config, setConfig] = useState<InsightsConfig>(DEFAULT_CONFIG)\n const [version, setVersion] = useState(0)\n const [observations, setObservations] = useState<Observation[]>([])\n const [stats, setStats] = useState<Stat[]>([])\n const [projects, setProjects] = useState<string[]>([])\n const [projectFilter, setProjectFilter] = useState<string>('')\n const [signalFilter, setSignalFilter] = useState<string>('')\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [now, setNow] = useState(() => Date.now())\n\n async function refresh() {\n setError(null)\n try {\n const params = new URLSearchParams()\n if (projectFilter) params.set('project', projectFilter)\n if (signalFilter) params.set('signal', signalFilter)\n const query = params.toString()\n const [cfg, obs] = await Promise.all([\n api<ConfigEntry>('GET', '/insights/config'),\n api<ObservationsResponse>('GET', `/insights/observations${query ? `?${query}` : ''}`),\n ])\n setConfig(cfg.value)\n setVersion(cfg.version)\n setObservations(obs.observations)\n setStats(obs.stats)\n setProjects(obs.projects)\n setNow(Date.now())\n } catch (e) {\n setError(errMessage(e))\n }\n }\n\n // Mount + filter-change: synchronize the view with the relay's stored data.\n useEffect(() => {\n void refresh()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [projectFilter, signalFilter])\n\n async function saveConfig(next: InsightsConfig) {\n setSaving(true)\n setError(null)\n const previous = config\n setConfig(next) // optimistic\n try {\n const entry = await api<ConfigEntry>('PUT', '/insights/config', { value: next, updatedBy: 'dashboard' })\n setConfig(entry.value)\n setVersion(entry.version)\n } catch (e) {\n setConfig(previous) // revert on failure\n setError(errMessage(e))\n } finally {\n setSaving(false)\n }\n }\n\n const signals = useMemo(() => {\n const set = new Set<string>(stats.map((s) => s.signal))\n return [...set].sort()\n }, [stats])\n\n const globalStats = useMemo(() => stats.filter((s) => s.project === null), [stats])\n const projectStats = useMemo(() => stats.filter((s) => s.project !== null), [stats])\n\n return (\n <div className=\"space-y-4 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Lightbulb className=\"size-5 text-primary\" />\n <h1 className=\"text-lg font-semibold\">Insights</h1>\n <span className=\"text-xs text-muted-foreground\">continuous self-improvement · epic #183</span>\n </div>\n <Button variant=\"outline\" size=\"sm\" onClick={() => void refresh()}>\n <RefreshCw className=\"size-4\" /> Refresh\n </Button>\n </div>\n\n {error && (\n <div className=\"rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive\">{error}</div>\n )}\n\n {/* Feature toggles */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>Features</span>\n <span className=\"text-xs font-normal text-muted-foreground\">config v{version} · saved by {config && 'dashboard'}</span>\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"text-sm font-medium\">Insights enabled</div>\n <div className=\"text-xs text-muted-foreground\">Master switch. When off, no signals are recorded regardless of the toggles below.</div>\n </div>\n <Switch checked={config.enabled} disabled={saving} onCheckedChange={(v) => void saveConfig({ ...config, enabled: v })} />\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border pt-3\">\n <div>\n <div className=\"text-sm font-medium\">Context-gathering ratio <span className=\"text-xs text-muted-foreground\">(#184)</span></div>\n <div className=\"text-xs text-muted-foreground\">Server-side: read/search vs. action before first substantive move, per session.</div>\n </div>\n <Switch checked={config.contextRatio.enabled} disabled={saving || !config.enabled}\n onCheckedChange={(v) => void saveConfig({ ...config, contextRatio: { enabled: v } })} />\n </div>\n\n <div className=\"border-t border-border pt-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"text-sm font-medium\">End-of-session introspection <span className=\"text-xs text-muted-foreground\">(#185)</span></div>\n <div className=\"text-xs text-muted-foreground\">Agent-authored 3-field artifact at session end. Gated below.</div>\n </div>\n <Switch checked={config.introspection.enabled} disabled={saving || !config.enabled}\n onCheckedChange={(v) => void saveConfig({ ...config, introspection: { ...config.introspection, enabled: v } })} />\n </div>\n <div className=\"mt-3 flex flex-wrap gap-4\">\n <label className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n min turns\n <Input type=\"number\" className=\"h-7 w-20\" value={config.introspection.minTurns}\n disabled={saving || !config.enabled || !config.introspection.enabled}\n onChange={(e) => setConfig({ ...config, introspection: { ...config.introspection, minTurns: Number(e.target.value) } })}\n onBlur={() => void saveConfig(config)} />\n </label>\n <label className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n min context remaining (0–1)\n <Input type=\"number\" step=\"0.05\" min=\"0\" max=\"1\" className=\"h-7 w-24\" value={config.introspection.minContextRemaining}\n disabled={saving || !config.enabled || !config.introspection.enabled}\n onChange={(e) => setConfig({ ...config, introspection: { ...config.introspection, minContextRemaining: Number(e.target.value) } })}\n onBlur={() => void saveConfig(config)} />\n </label>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Stats rollup */}\n <Card>\n <CardHeader>\n <CardTitle>Signals</CardTitle>\n </CardHeader>\n <CardContent>\n {globalStats.length === 0 ? (\n <div className=\"text-sm text-muted-foreground\">No observations yet — they appear after sessions end with Insights enabled.</div>\n ) : (\n <div className=\"space-y-4\">\n {globalStats.map((g) => (\n <div key={g.signal}>\n <div className=\"mb-1 flex items-center gap-2\">\n <Badge variant=\"secondary\">{g.signal}</Badge>\n <span className=\"text-xs text-muted-foreground\">\n {g.count} obs · {g.avgRatio !== null ? `avg ratio ${g.avgRatio.toFixed(2)}` : 'no ratio'} · {timeAgo(now, g.lastAt)}\n </span>\n </div>\n <div className=\"flex flex-wrap gap-2 pl-2\">\n {projectStats.filter((p) => p.signal === g.signal).map((p) => (\n <span key={`${g.signal}-${p.project}`} className=\"rounded border border-border px-2 py-0.5 text-xs text-muted-foreground\">\n {p.project}: {p.count}{p.avgRatio !== null ? ` · ${p.avgRatio.toFixed(2)}` : ''}\n </span>\n ))}\n </div>\n </div>\n ))}\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Raw observations */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex flex-wrap items-center gap-3\">\n <span>Observations</span>\n <select className=\"h-7 rounded border border-border bg-background px-2 text-xs\"\n value={projectFilter} onChange={(e) => setProjectFilter(e.target.value)}>\n <option value=\"\">all projects</option>\n {projects.map((p) => <option key={p} value={p}>{p}</option>)}\n </select>\n <select className=\"h-7 rounded border border-border bg-background px-2 text-xs\"\n value={signalFilter} onChange={(e) => setSignalFilter(e.target.value)}>\n <option value=\"\">all signals</option>\n {signals.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n </CardTitle>\n </CardHeader>\n <CardContent>\n {observations.length === 0 ? (\n <div className=\"text-sm text-muted-foreground\">No observations match.</div>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full min-w-[680px] text-left text-xs\">\n <thead className=\"text-muted-foreground\">\n <tr className=\"border-b border-border\">\n <th className=\"py-1 pr-3 font-medium\">when</th>\n <th className=\"py-1 pr-3 font-medium\">project</th>\n <th className=\"py-1 pr-3 font-medium\">signal</th>\n <th className=\"py-1 pr-3 font-medium\">src</th>\n <th className=\"py-1 pr-3 font-medium\">value</th>\n <th className=\"py-1 pr-3 font-medium\">outcome</th>\n <th className=\"py-1 pr-3 font-medium\">session</th>\n </tr>\n </thead>\n <tbody>\n {observations.map((o) => (\n <tr key={o.id} className=\"border-b border-border/50\">\n <td className=\"py-1 pr-3 whitespace-nowrap text-muted-foreground\">{timeAgo(now, o.createdAt)}</td>\n <td className=\"py-1 pr-3 whitespace-nowrap\">{o.project}</td>\n <td className=\"py-1 pr-3 whitespace-nowrap\"><Badge variant=\"outline\">{o.signal}</Badge></td>\n <td className=\"py-1 pr-3 whitespace-nowrap text-muted-foreground\">{o.source}</td>\n <td className=\"py-1 pr-3 font-mono\">{compactJson(o.value)}</td>\n <td className=\"py-1 pr-3 font-mono text-muted-foreground\">{compactJson(o.outcome)}</td>\n <td className=\"py-1 pr-3 whitespace-nowrap text-muted-foreground\">{o.agentId ?? o.sessionId.slice(0, 12)}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"insights-DFs8q-45.js","names":[],"sources":["../../dashboard/src/components/views/insights.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { errMessage } from 'agent-relay-sdk/types'\nimport { api } from '@/lib/api'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Input } from '@/components/ui/input'\nimport { Switch } from '@/components/ui/switch'\nimport { timeAgo } from '@/lib/display'\nimport { Lightbulb, RefreshCw } from 'lucide-react'\n\n// Insights — continuous self-improvement module (epic #183, docs/self-improvement.md).\n// v0: feature toggles + a raw per-project/global view of the observations the relay\n// collects. No charts, no alerting — the data earns those once a week proves it's real.\n\ninterface InsightsConfig {\n enabled: boolean\n contextRatio: { enabled: boolean }\n introspection: { enabled: boolean; minTurns: number; minContextRemaining: number }\n}\n\ninterface ConfigEntry {\n value: InsightsConfig\n version: number\n updatedAt: string\n updatedBy?: string\n}\n\ninterface Observation {\n id: number\n sessionId: string\n agentId?: string\n project: string\n signal: string\n value: Record<string, unknown>\n outcome?: Record<string, unknown>\n source: 'server' | 'agent'\n createdAt: number\n}\n\ninterface Stat {\n signal: string\n project: string | null\n count: number\n avgRatio: number | null\n lastAt: number | null\n}\n\ninterface ObservationsResponse {\n observations: Observation[]\n stats: Stat[]\n projects: string[]\n}\n\nconst DEFAULT_CONFIG: InsightsConfig = {\n enabled: true,\n contextRatio: { enabled: true },\n introspection: { enabled: true, minTurns: 4, minContextRemaining: 0.15 },\n}\n\nfunction compactJson(value: Record<string, unknown> | undefined): string {\n if (!value || Object.keys(value).length === 0) return '—'\n return Object.entries(value)\n .map(([k, v]) => `${k}: ${typeof v === 'number' ? Math.round(v * 1000) / 1000 : String(v)}`)\n .join(' ')\n}\n\nexport function InsightsView() {\n const [config, setConfig] = useState<InsightsConfig>(DEFAULT_CONFIG)\n const [version, setVersion] = useState(0)\n const [observations, setObservations] = useState<Observation[]>([])\n const [stats, setStats] = useState<Stat[]>([])\n const [projects, setProjects] = useState<string[]>([])\n const [projectFilter, setProjectFilter] = useState<string>('')\n const [signalFilter, setSignalFilter] = useState<string>('')\n const [saving, setSaving] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [now, setNow] = useState(() => Date.now())\n\n async function refresh() {\n setError(null)\n try {\n const params = new URLSearchParams()\n if (projectFilter) params.set('project', projectFilter)\n if (signalFilter) params.set('signal', signalFilter)\n const query = params.toString()\n const [cfg, obs] = await Promise.all([\n api<ConfigEntry>('GET', '/insights/config'),\n api<ObservationsResponse>('GET', `/insights/observations${query ? `?${query}` : ''}`),\n ])\n setConfig(cfg.value)\n setVersion(cfg.version)\n setObservations(obs.observations)\n setStats(obs.stats)\n setProjects(obs.projects)\n setNow(Date.now())\n } catch (e) {\n setError(errMessage(e))\n }\n }\n\n // Mount + filter-change: synchronize the view with the relay's stored data.\n useEffect(() => {\n void refresh()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [projectFilter, signalFilter])\n\n async function saveConfig(next: InsightsConfig) {\n setSaving(true)\n setError(null)\n const previous = config\n setConfig(next) // optimistic\n try {\n const entry = await api<ConfigEntry>('PUT', '/insights/config', { value: next, updatedBy: 'dashboard' })\n setConfig(entry.value)\n setVersion(entry.version)\n } catch (e) {\n setConfig(previous) // revert on failure\n setError(errMessage(e))\n } finally {\n setSaving(false)\n }\n }\n\n const signals = useMemo(() => {\n const set = new Set<string>(stats.map((s) => s.signal))\n return [...set].sort()\n }, [stats])\n\n const globalStats = useMemo(() => stats.filter((s) => s.project === null), [stats])\n const projectStats = useMemo(() => stats.filter((s) => s.project !== null), [stats])\n\n return (\n <div className=\"space-y-4 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Lightbulb className=\"size-5 text-primary\" />\n <h1 className=\"text-lg font-semibold\">Insights</h1>\n <span className=\"text-xs text-muted-foreground\">continuous self-improvement · epic #183</span>\n </div>\n <Button variant=\"outline\" size=\"sm\" onClick={() => void refresh()}>\n <RefreshCw className=\"size-4\" /> Refresh\n </Button>\n </div>\n\n {error && (\n <div className=\"rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive\">{error}</div>\n )}\n\n {/* Feature toggles */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center justify-between\">\n <span>Features</span>\n <span className=\"text-xs font-normal text-muted-foreground\">config v{version} · saved by {config && 'dashboard'}</span>\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"text-sm font-medium\">Insights enabled</div>\n <div className=\"text-xs text-muted-foreground\">Master switch. When off, no signals are recorded regardless of the toggles below.</div>\n </div>\n <Switch checked={config.enabled} disabled={saving} onCheckedChange={(v) => void saveConfig({ ...config, enabled: v })} />\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border pt-3\">\n <div>\n <div className=\"text-sm font-medium\">Context-gathering ratio <span className=\"text-xs text-muted-foreground\">(#184)</span></div>\n <div className=\"text-xs text-muted-foreground\">Server-side: read/search vs. action before first substantive move, per session.</div>\n </div>\n <Switch checked={config.contextRatio.enabled} disabled={saving || !config.enabled}\n onCheckedChange={(v) => void saveConfig({ ...config, contextRatio: { enabled: v } })} />\n </div>\n\n <div className=\"border-t border-border pt-3\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"text-sm font-medium\">End-of-session introspection <span className=\"text-xs text-muted-foreground\">(#185)</span></div>\n <div className=\"text-xs text-muted-foreground\">Agent-authored 3-field artifact at session end. Gated below.</div>\n </div>\n <Switch checked={config.introspection.enabled} disabled={saving || !config.enabled}\n onCheckedChange={(v) => void saveConfig({ ...config, introspection: { ...config.introspection, enabled: v } })} />\n </div>\n <div className=\"mt-3 flex flex-wrap gap-4\">\n <label className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n min turns\n <Input type=\"number\" className=\"h-7 w-20\" value={config.introspection.minTurns}\n disabled={saving || !config.enabled || !config.introspection.enabled}\n onChange={(e) => setConfig({ ...config, introspection: { ...config.introspection, minTurns: Number(e.target.value) } })}\n onBlur={() => void saveConfig(config)} />\n </label>\n <label className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n min context remaining (0–1)\n <Input type=\"number\" step=\"0.05\" min=\"0\" max=\"1\" className=\"h-7 w-24\" value={config.introspection.minContextRemaining}\n disabled={saving || !config.enabled || !config.introspection.enabled}\n onChange={(e) => setConfig({ ...config, introspection: { ...config.introspection, minContextRemaining: Number(e.target.value) } })}\n onBlur={() => void saveConfig(config)} />\n </label>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Stats rollup */}\n <Card>\n <CardHeader>\n <CardTitle>Signals</CardTitle>\n </CardHeader>\n <CardContent>\n {globalStats.length === 0 ? (\n <div className=\"text-sm text-muted-foreground\">No observations yet — they appear after sessions end with Insights enabled.</div>\n ) : (\n <div className=\"space-y-4\">\n {globalStats.map((g) => (\n <div key={g.signal}>\n <div className=\"mb-1 flex items-center gap-2\">\n <Badge variant=\"secondary\">{g.signal}</Badge>\n <span className=\"text-xs text-muted-foreground\">\n {g.count} obs · {g.avgRatio !== null ? `avg ratio ${g.avgRatio.toFixed(2)}` : 'no ratio'} · {timeAgo(now, g.lastAt)}\n </span>\n </div>\n <div className=\"flex flex-wrap gap-2 pl-2\">\n {projectStats.filter((p) => p.signal === g.signal).map((p) => (\n <span key={`${g.signal}-${p.project}`} className=\"rounded border border-border px-2 py-0.5 text-xs text-muted-foreground\">\n {p.project}: {p.count}{p.avgRatio !== null ? ` · ${p.avgRatio.toFixed(2)}` : ''}\n </span>\n ))}\n </div>\n </div>\n ))}\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Raw observations */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex flex-wrap items-center gap-3\">\n <span>Observations</span>\n <select className=\"h-7 rounded border border-border bg-background px-2 text-xs\"\n value={projectFilter} onChange={(e) => setProjectFilter(e.target.value)}>\n <option value=\"\">all projects</option>\n {projects.map((p) => <option key={p} value={p}>{p}</option>)}\n </select>\n <select className=\"h-7 rounded border border-border bg-background px-2 text-xs\"\n value={signalFilter} onChange={(e) => setSignalFilter(e.target.value)}>\n <option value=\"\">all signals</option>\n {signals.map((s) => <option key={s} value={s}>{s}</option>)}\n </select>\n </CardTitle>\n </CardHeader>\n <CardContent>\n {observations.length === 0 ? (\n <div className=\"text-sm text-muted-foreground\">No observations match.</div>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full min-w-[680px] text-left text-xs\">\n <thead className=\"text-muted-foreground\">\n <tr className=\"border-b border-border\">\n <th className=\"py-1 pr-3 font-medium\">when</th>\n <th className=\"py-1 pr-3 font-medium\">project</th>\n <th className=\"py-1 pr-3 font-medium\">signal</th>\n <th className=\"py-1 pr-3 font-medium\">src</th>\n <th className=\"py-1 pr-3 font-medium\">value</th>\n <th className=\"py-1 pr-3 font-medium\">outcome</th>\n <th className=\"py-1 pr-3 font-medium\">session</th>\n </tr>\n </thead>\n <tbody>\n {observations.map((o) => (\n <tr key={o.id} className=\"border-b border-border/50\">\n <td className=\"py-1 pr-3 whitespace-nowrap text-muted-foreground\">{timeAgo(now, o.createdAt)}</td>\n <td className=\"py-1 pr-3 whitespace-nowrap\">{o.project}</td>\n <td className=\"py-1 pr-3 whitespace-nowrap\"><Badge variant=\"outline\">{o.signal}</Badge></td>\n <td className=\"py-1 pr-3 whitespace-nowrap text-muted-foreground\">{o.source}</td>\n <td className=\"py-1 pr-3 font-mono\">{compactJson(o.value)}</td>\n <td className=\"py-1 pr-3 font-mono text-muted-foreground\">{compactJson(o.outcome)}</td>\n <td className=\"py-1 pr-3 whitespace-nowrap text-muted-foreground\">{o.agentId ?? o.sessionId.slice(0, 12)}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{L as e,Nt as t,On as n,Qt as r,at as i,en as a,jn as o}from"./lucide-react-ChOGD4vc.js";import{t as s}from"./store-B6qT5_de.js";import{W as c,v as l}from"./display-ConJ9cJB.js";import{t as u}from"./badge-CFVr4fG9.js";import{t as d}from"./button-BuTu0MHx.js";import{i as f,n as p,r as m,t as h}from"./card-C3ErQ372.js";var g=o(),_={PlugZap:e,AlertCircle:a,Activity:n,Eye:t,CircleCheck:r};function v(){let t=s(e=>e.integrations),n=s(e=>e.set),r=s(e=>e.switchView),a=t.reduce((e,t)=>e+(t.taskStats?.waitingTasks||0),0);function o(e){n({taskSourceFilter:e}),r(`tasks`)}return(0,g.jsxs)(`div`,{className:`space-y-6`,children:[(0,g.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,g.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,g.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Integrations`}),(0,g.jsxs)(u,{variant:`outline`,className:`text-xs`,children:[t.length,` total`]}),a>0&&(0,g.jsxs)(u,{className:`bg-yellow-500/20 text-yellow-400 border-yellow-500/30 text-xs`,children:[a,` waiting`]})]})}),t.length===0?(0,g.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,g.jsx)(e,{className:`w-10 h-10 text-zinc-600 mb-3`}),(0,g.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`No integrations configured`})]}):(0,g.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`,children:t.map(t=>{let n=l(t),r=_[t.icon||n.icon]||_[n.icon]||e,a=t.taskStats||{};return(0,g.jsxs)(h,{className:`flex flex-col border-l-2`,style:{borderLeftColor:t.accentColor||void 0},children:[(0,g.jsxs)(m,{children:[(0,g.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(f,{className:`text-sm font-medium truncate`,children:t.displayName||t.name}),t.description&&(0,g.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground line-clamp-2`,children:t.description})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[(0,g.jsx)(r,{className:`w-3.5 h-3.5 ${c(n.tone)}`}),(0,g.jsx)(`span`,{className:`text-xs ${c(n.tone)}`,children:n.label})]})]}),(0,g.jsxs)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:[t.configured&&(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-emerald-400 border-emerald-500/30`,children:`configured`}),t.observed&&(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-blue-400 border-blue-500/30`,children:`observed`}),!t.enabled&&(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-red-400 border-red-500/30`,children:`disabled`}),t.type&&(0,g.jsx)(u,{variant:`secondary`,className:`text-xs`,children:t.type}),t.tags?.map(e=>(0,g.jsxs)(u,{variant:`outline`,className:`text-xs text-zinc-400`,children:[`#`,e]},e))]})]}),(0,g.jsxs)(p,{className:`flex-1 space-y-3`,children:[(0,g.jsxs)(`div`,{className:`grid grid-cols-4 gap-2 text-center`,children:[(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums`,children:a.tasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`tasks`})]}),(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums text-blue-400`,children:a.openTasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`open`})]}),(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums ${(a.waitingTasks??0)>0?`text-yellow-400`:``}`,children:a.waitingTasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`waiting`})]}),(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums ${(a.failedTasks??0)>0?`text-red-400`:``}`,children:a.failedTasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`failed`})]})]}),(t.scopes?.length>0||t.targets?.length>0||t.channels?.length>0)&&(0,g.jsxs)(`div`,{className:`space-y-1.5`,children:[t.scopes?.length>0&&(0,g.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.scopes.map(e=>(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-zinc-400`,children:e},e))}),t.targets?.length>0&&(0,g.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.targets.map(e=>(0,g.jsx)(u,{variant:`secondary`,className:`text-xs`,children:e},e))}),t.channels?.length>0&&(0,g.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.channels.map(e=>(0,g.jsxs)(u,{className:`text-xs bg-blue-500/10 text-blue-400 border-blue-500/20`,children:[`#`,e]},e))})]})]}),(a.tasks??0)>0&&(0,g.jsx)(`div`,{className:`px-4 pb-4`,children:(0,g.jsxs)(d,{variant:`outline`,size:`sm`,className:`w-full gap-1.5`,onClick:()=>o(a.source||t.name),children:[(0,g.jsx)(i,{className:`w-3.5 h-3.5`}),`Show tasks`]})})]},t.name)})})]})}export{v as IntegrationsView};
2
- //# sourceMappingURL=integrations-CdeQuRSQ.js.map
1
+ import{L as e,Nt as t,On as n,Qt as r,at as i,en as a,jn as o}from"./lucide-react-ChOGD4vc.js";import{t as s}from"./store-qcA2XXVy.js";import{W as c,v as l}from"./display-CXhnBwGf.js";import{t as u}from"./badge-BR4bvEsy.js";import{t as d}from"./button-BwqJZS4O.js";import{i as f,n as p,r as m,t as h}from"./card-C7JtSyuM.js";var g=o(),_={PlugZap:e,AlertCircle:a,Activity:n,Eye:t,CircleCheck:r};function v(){let t=s(e=>e.integrations),n=s(e=>e.set),r=s(e=>e.switchView),a=t.reduce((e,t)=>e+(t.taskStats?.waitingTasks||0),0);function o(e){n({taskSourceFilter:e}),r(`tasks`)}return(0,g.jsxs)(`div`,{className:`space-y-6`,children:[(0,g.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,g.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,g.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Integrations`}),(0,g.jsxs)(u,{variant:`outline`,className:`text-xs`,children:[t.length,` total`]}),a>0&&(0,g.jsxs)(u,{className:`bg-yellow-500/20 text-yellow-400 border-yellow-500/30 text-xs`,children:[a,` waiting`]})]})}),t.length===0?(0,g.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 text-center`,children:[(0,g.jsx)(e,{className:`w-10 h-10 text-zinc-600 mb-3`}),(0,g.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`No integrations configured`})]}):(0,g.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`,children:t.map(t=>{let n=l(t),r=_[t.icon||n.icon]||_[n.icon]||e,a=t.taskStats||{};return(0,g.jsxs)(h,{className:`flex flex-col border-l-2`,style:{borderLeftColor:t.accentColor||void 0},children:[(0,g.jsxs)(m,{children:[(0,g.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,g.jsxs)(`div`,{className:`min-w-0`,children:[(0,g.jsx)(f,{className:`text-sm font-medium truncate`,children:t.displayName||t.name}),t.description&&(0,g.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground line-clamp-2`,children:t.description})]}),(0,g.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[(0,g.jsx)(r,{className:`w-3.5 h-3.5 ${c(n.tone)}`}),(0,g.jsx)(`span`,{className:`text-xs ${c(n.tone)}`,children:n.label})]})]}),(0,g.jsxs)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:[t.configured&&(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-emerald-400 border-emerald-500/30`,children:`configured`}),t.observed&&(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-blue-400 border-blue-500/30`,children:`observed`}),!t.enabled&&(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-red-400 border-red-500/30`,children:`disabled`}),t.type&&(0,g.jsx)(u,{variant:`secondary`,className:`text-xs`,children:t.type}),t.tags?.map(e=>(0,g.jsxs)(u,{variant:`outline`,className:`text-xs text-zinc-400`,children:[`#`,e]},e))]})]}),(0,g.jsxs)(p,{className:`flex-1 space-y-3`,children:[(0,g.jsxs)(`div`,{className:`grid grid-cols-4 gap-2 text-center`,children:[(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums`,children:a.tasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`tasks`})]}),(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums text-blue-400`,children:a.openTasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`open`})]}),(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums ${(a.waitingTasks??0)>0?`text-yellow-400`:``}`,children:a.waitingTasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`waiting`})]}),(0,g.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,g.jsx)(`p`,{className:`text-base font-semibold tabular-nums ${(a.failedTasks??0)>0?`text-red-400`:``}`,children:a.failedTasks??0}),(0,g.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`failed`})]})]}),(t.scopes?.length>0||t.targets?.length>0||t.channels?.length>0)&&(0,g.jsxs)(`div`,{className:`space-y-1.5`,children:[t.scopes?.length>0&&(0,g.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.scopes.map(e=>(0,g.jsx)(u,{variant:`outline`,className:`text-xs text-zinc-400`,children:e},e))}),t.targets?.length>0&&(0,g.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.targets.map(e=>(0,g.jsx)(u,{variant:`secondary`,className:`text-xs`,children:e},e))}),t.channels?.length>0&&(0,g.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.channels.map(e=>(0,g.jsxs)(u,{className:`text-xs bg-blue-500/10 text-blue-400 border-blue-500/20`,children:[`#`,e]},e))})]})]}),(a.tasks??0)>0&&(0,g.jsx)(`div`,{className:`px-4 pb-4`,children:(0,g.jsxs)(d,{variant:`outline`,size:`sm`,className:`w-full gap-1.5`,onClick:()=>o(a.source||t.name),children:[(0,g.jsx)(i,{className:`w-3.5 h-3.5`}),`Show tasks`]})})]},t.name)})})]})}export{v as IntegrationsView};
2
+ //# sourceMappingURL=integrations-Bg_JSXvm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrations-CdeQuRSQ.js","names":[],"sources":["../../dashboard/src/components/views/integrations.tsx"],"sourcesContent":["import { useRelayStore } from '@/store'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { integrationPresence, toneToColor } from '@/lib/display'\nimport { PlugZap, AlertCircle, Activity, Eye, CircleCheck, ListChecks } from 'lucide-react'\n\nconst PRESENCE_ICONS: Record<string, typeof PlugZap> = {\n PlugZap, AlertCircle, Activity, Eye, CircleCheck,\n}\n\nexport function IntegrationsView() {\n const integrations = useRelayStore((s) => s.integrations)\n const set = useRelayStore((s) => s.set)\n const switchView = useRelayStore((s) => s.switchView)\n\n const waitingCount = integrations.reduce((sum, i) => sum + (i.taskStats?.waitingTasks || 0), 0)\n\n function showTasks(source: string) {\n set({ taskSourceFilter: source })\n switchView('tasks')\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-lg font-semibold\">Integrations</h1>\n <Badge variant=\"outline\" className=\"text-xs\">\n {integrations.length} total\n </Badge>\n {waitingCount > 0 && (\n <Badge className=\"bg-yellow-500/20 text-yellow-400 border-yellow-500/30 text-xs\">\n {waitingCount} waiting\n </Badge>\n )}\n </div>\n </div>\n\n {integrations.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <PlugZap className=\"w-10 h-10 text-zinc-600 mb-3\" />\n <p className=\"text-muted-foreground text-sm\">No integrations configured</p>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {integrations.map((integration) => {\n const presence = integrationPresence(integration)\n const PresenceIcon = PRESENCE_ICONS[integration.icon || presence.icon] || PRESENCE_ICONS[presence.icon] || PlugZap\n const stats = integration.taskStats || {}\n\n return (\n <Card key={integration.name} className=\"flex flex-col border-l-2\" style={{ borderLeftColor: integration.accentColor || undefined }}>\n <CardHeader>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <CardTitle className=\"text-sm font-medium truncate\">{integration.displayName || integration.name}</CardTitle>\n {integration.description && <p className=\"mt-1 text-xs text-muted-foreground line-clamp-2\">{integration.description}</p>}\n </div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <PresenceIcon className={`w-3.5 h-3.5 ${toneToColor(presence.tone)}`} />\n <span className={`text-xs ${toneToColor(presence.tone)}`}>{presence.label}</span>\n </div>\n </div>\n\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {integration.configured && (\n <Badge variant=\"outline\" className=\"text-xs text-emerald-400 border-emerald-500/30\">\n configured\n </Badge>\n )}\n {integration.observed && (\n <Badge variant=\"outline\" className=\"text-xs text-blue-400 border-blue-500/30\">\n observed\n </Badge>\n )}\n {!integration.enabled && (\n <Badge variant=\"outline\" className=\"text-xs text-red-400 border-red-500/30\">\n disabled\n </Badge>\n )}\n {integration.type && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {integration.type}\n </Badge>\n )}\n {integration.tags?.map((tag) => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs text-zinc-400\">\n #{tag}\n </Badge>\n ))}\n </div>\n </CardHeader>\n\n <CardContent className=\"flex-1 space-y-3\">\n {/* Mini stats */}\n <div className=\"grid grid-cols-4 gap-2 text-center\">\n <div className=\"space-y-0.5\">\n <p className=\"text-base font-semibold tabular-nums\">{stats.tasks ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">tasks</p>\n </div>\n <div className=\"space-y-0.5\">\n <p className=\"text-base font-semibold tabular-nums text-blue-400\">{stats.openTasks ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">open</p>\n </div>\n <div className=\"space-y-0.5\">\n <p className={`text-base font-semibold tabular-nums ${(stats.waitingTasks ?? 0) > 0 ? 'text-yellow-400' : ''}`}>\n {stats.waitingTasks ?? 0}\n </p>\n <p className=\"text-xs text-muted-foreground\">waiting</p>\n </div>\n <div className=\"space-y-0.5\">\n <p className={`text-base font-semibold tabular-nums ${(stats.failedTasks ?? 0) > 0 ? 'text-red-400' : ''}`}>\n {stats.failedTasks ?? 0}\n </p>\n <p className=\"text-xs text-muted-foreground\">failed</p>\n </div>\n </div>\n\n {/* Scopes / Targets / Channels */}\n {(integration.scopes?.length > 0 || integration.targets?.length > 0 || integration.channels?.length > 0) && (\n <div className=\"space-y-1.5\">\n {integration.scopes?.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {integration.scopes.map((s) => (\n <Badge key={s} variant=\"outline\" className=\"text-xs text-zinc-400\">\n {s}\n </Badge>\n ))}\n </div>\n )}\n {integration.targets?.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {integration.targets.map((t) => (\n <Badge key={t} variant=\"secondary\" className=\"text-xs\">\n {t}\n </Badge>\n ))}\n </div>\n )}\n {integration.channels?.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {integration.channels.map((c) => (\n <Badge key={c} className=\"text-xs bg-blue-500/10 text-blue-400 border-blue-500/20\">\n #{c}\n </Badge>\n ))}\n </div>\n )}\n </div>\n )}\n </CardContent>\n\n {(stats.tasks ?? 0) > 0 && (\n <div className=\"px-4 pb-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full gap-1.5\"\n onClick={() => showTasks(stats.source || integration.name)}\n >\n <ListChecks className=\"w-3.5 h-3.5\" />\n Show tasks\n </Button>\n </div>\n )}\n </Card>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"integrations-Bg_JSXvm.js","names":[],"sources":["../../dashboard/src/components/views/integrations.tsx"],"sourcesContent":["import { useRelayStore } from '@/store'\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { integrationPresence, toneToColor } from '@/lib/display'\nimport { PlugZap, AlertCircle, Activity, Eye, CircleCheck, ListChecks } from 'lucide-react'\n\nconst PRESENCE_ICONS: Record<string, typeof PlugZap> = {\n PlugZap, AlertCircle, Activity, Eye, CircleCheck,\n}\n\nexport function IntegrationsView() {\n const integrations = useRelayStore((s) => s.integrations)\n const set = useRelayStore((s) => s.set)\n const switchView = useRelayStore((s) => s.switchView)\n\n const waitingCount = integrations.reduce((sum, i) => sum + (i.taskStats?.waitingTasks || 0), 0)\n\n function showTasks(source: string) {\n set({ taskSourceFilter: source })\n switchView('tasks')\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-lg font-semibold\">Integrations</h1>\n <Badge variant=\"outline\" className=\"text-xs\">\n {integrations.length} total\n </Badge>\n {waitingCount > 0 && (\n <Badge className=\"bg-yellow-500/20 text-yellow-400 border-yellow-500/30 text-xs\">\n {waitingCount} waiting\n </Badge>\n )}\n </div>\n </div>\n\n {integrations.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-16 text-center\">\n <PlugZap className=\"w-10 h-10 text-zinc-600 mb-3\" />\n <p className=\"text-muted-foreground text-sm\">No integrations configured</p>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4\">\n {integrations.map((integration) => {\n const presence = integrationPresence(integration)\n const PresenceIcon = PRESENCE_ICONS[integration.icon || presence.icon] || PRESENCE_ICONS[presence.icon] || PlugZap\n const stats = integration.taskStats || {}\n\n return (\n <Card key={integration.name} className=\"flex flex-col border-l-2\" style={{ borderLeftColor: integration.accentColor || undefined }}>\n <CardHeader>\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <CardTitle className=\"text-sm font-medium truncate\">{integration.displayName || integration.name}</CardTitle>\n {integration.description && <p className=\"mt-1 text-xs text-muted-foreground line-clamp-2\">{integration.description}</p>}\n </div>\n <div className=\"flex items-center gap-1.5 shrink-0\">\n <PresenceIcon className={`w-3.5 h-3.5 ${toneToColor(presence.tone)}`} />\n <span className={`text-xs ${toneToColor(presence.tone)}`}>{presence.label}</span>\n </div>\n </div>\n\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {integration.configured && (\n <Badge variant=\"outline\" className=\"text-xs text-emerald-400 border-emerald-500/30\">\n configured\n </Badge>\n )}\n {integration.observed && (\n <Badge variant=\"outline\" className=\"text-xs text-blue-400 border-blue-500/30\">\n observed\n </Badge>\n )}\n {!integration.enabled && (\n <Badge variant=\"outline\" className=\"text-xs text-red-400 border-red-500/30\">\n disabled\n </Badge>\n )}\n {integration.type && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {integration.type}\n </Badge>\n )}\n {integration.tags?.map((tag) => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs text-zinc-400\">\n #{tag}\n </Badge>\n ))}\n </div>\n </CardHeader>\n\n <CardContent className=\"flex-1 space-y-3\">\n {/* Mini stats */}\n <div className=\"grid grid-cols-4 gap-2 text-center\">\n <div className=\"space-y-0.5\">\n <p className=\"text-base font-semibold tabular-nums\">{stats.tasks ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">tasks</p>\n </div>\n <div className=\"space-y-0.5\">\n <p className=\"text-base font-semibold tabular-nums text-blue-400\">{stats.openTasks ?? 0}</p>\n <p className=\"text-xs text-muted-foreground\">open</p>\n </div>\n <div className=\"space-y-0.5\">\n <p className={`text-base font-semibold tabular-nums ${(stats.waitingTasks ?? 0) > 0 ? 'text-yellow-400' : ''}`}>\n {stats.waitingTasks ?? 0}\n </p>\n <p className=\"text-xs text-muted-foreground\">waiting</p>\n </div>\n <div className=\"space-y-0.5\">\n <p className={`text-base font-semibold tabular-nums ${(stats.failedTasks ?? 0) > 0 ? 'text-red-400' : ''}`}>\n {stats.failedTasks ?? 0}\n </p>\n <p className=\"text-xs text-muted-foreground\">failed</p>\n </div>\n </div>\n\n {/* Scopes / Targets / Channels */}\n {(integration.scopes?.length > 0 || integration.targets?.length > 0 || integration.channels?.length > 0) && (\n <div className=\"space-y-1.5\">\n {integration.scopes?.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {integration.scopes.map((s) => (\n <Badge key={s} variant=\"outline\" className=\"text-xs text-zinc-400\">\n {s}\n </Badge>\n ))}\n </div>\n )}\n {integration.targets?.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {integration.targets.map((t) => (\n <Badge key={t} variant=\"secondary\" className=\"text-xs\">\n {t}\n </Badge>\n ))}\n </div>\n )}\n {integration.channels?.length > 0 && (\n <div className=\"flex flex-wrap gap-1\">\n {integration.channels.map((c) => (\n <Badge key={c} className=\"text-xs bg-blue-500/10 text-blue-400 border-blue-500/20\">\n #{c}\n </Badge>\n ))}\n </div>\n )}\n </div>\n )}\n </CardContent>\n\n {(stats.tasks ?? 0) > 0 && (\n <div className=\"px-4 pb-4\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full gap-1.5\"\n onClick={() => showTasks(stats.source || integration.name)}\n >\n <ListChecks className=\"w-3.5 h-3.5\" />\n Show tasks\n </Button>\n </div>\n )}\n </Card>\n )\n })}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import{n as e}from"./chunk-CilyBKbf.js";var t=e({default:()=>n}),n=[Object.freeze(JSON.parse(`{"displayName":"Java","name":"java","patterns":[{"begin":"\\\\b(package)\\\\b\\\\s*","beginCaptures":{"1":{"name":"keyword.other.package.java"}},"contentName":"storage.modifier.package.java","end":"\\\\s*(;)","endCaptures":{"1":{"name":"punctuation.terminator.java"}},"name":"meta.package.java","patterns":[{"include":"#comments"},{"match":"(?<=\\\\.)\\\\s*\\\\.|\\\\.(?=\\\\s*;)","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"(?<!_)_(?=\\\\s*([.;]))|\\\\b\\\\d+|-+","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"[A-Z]+","name":"invalid.deprecated.package_name_not_lowercase.java"},{"match":"\\\\b(?<!\\\\$)(abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|non-sealed|package|permits|private|protected|public|return|sealed|short|static|strictfp|super|switch|syncronized|this|throws??|transient|try|void|volatile|while|yield|true|false|null)\\\\b","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"\\\\.","name":"punctuation.separator.java"}]},{"begin":"\\\\b(import)\\\\b\\\\s*\\\\b(static)?\\\\b\\\\s","beginCaptures":{"1":{"name":"keyword.other.import.java"},"2":{"name":"storage.modifier.java"}},"contentName":"storage.modifier.import.java","end":"\\\\s*(;)","endCaptures":{"1":{"name":"punctuation.terminator.java"}},"name":"meta.import.java","patterns":[{"include":"#comments"},{"match":"(?<=\\\\.)\\\\s*\\\\.|\\\\.(?=\\\\s*;)","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"(?<!\\\\.)\\\\s*\\\\*","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"(?<!_)_(?=\\\\s*([.;]))|\\\\b\\\\d+|-+","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"\\\\b(?<!\\\\$)(abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|native|new|non-sealed|package|permits|private|protected|public|return|sealed|short|static|strictfp|super|switch|syncronized|this|throws??|transient|try|void|volatile|while|yield|true|false|null)\\\\b","name":"invalid.illegal.character_not_allowed_here.java"},{"match":"\\\\.","name":"punctuation.separator.java"},{"match":"\\\\*","name":"variable.language.wildcard.java"}]},{"include":"#comments-javadoc"},{"include":"#code"},{"include":"#module"}],"repository":{"all-types":{"patterns":[{"include":"#primitive-arrays"},{"include":"#primitive-types"},{"include":"#object-types"}]},"annotations":{"patterns":[{"begin":"((@)\\\\s*([^(\\\\s]+))(\\\\()","beginCaptures":{"2":{"name":"punctuation.definition.annotation.java"},"3":{"name":"storage.type.annotation.java"},"4":{"name":"punctuation.definition.annotation-arguments.begin.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.annotation-arguments.end.bracket.round.java"}},"name":"meta.declaration.annotation.java","patterns":[{"captures":{"1":{"name":"constant.other.key.java"},"2":{"name":"keyword.operator.assignment.java"}},"match":"(\\\\w*)\\\\s*(=)"},{"include":"#code"}]},{"captures":{"1":{"name":"punctuation.definition.annotation.java"},"2":{"name":"storage.modifier.java"},"3":{"name":"storage.type.annotation.java"},"5":{"name":"punctuation.definition.annotation.java"},"6":{"name":"storage.type.annotation.java"}},"match":"(@)(interface)\\\\s+(\\\\w*)|((@)\\\\s*(\\\\w+))","name":"meta.declaration.annotation.java"}]},"anonymous-block-and-instance-initializer":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.block.begin.bracket.curly.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.block.end.bracket.curly.java"}},"patterns":[{"include":"#code"}]},"anonymous-classes-and-new":{"begin":"\\\\bnew\\\\b","beginCaptures":{"0":{"name":"keyword.control.new.java"}},"end":"(?=[])-.:;?}]|/(?![*/])|[!%\\\\&=^|])","patterns":[{"include":"#comments"},{"include":"#function-call"},{"include":"#all-types"},{"begin":"(?<=\\\\))","end":"(?=[])-.:;?}]|/(?![*/])|[!%\\\\&=^|])","patterns":[{"include":"#comments"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.inner-class.begin.bracket.curly.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.inner-class.end.bracket.curly.java"}},"name":"meta.inner-class.java","patterns":[{"include":"#class-body"}]}]},{"begin":"(?<=])","end":"(?=[])-.:;?}]|/(?![*/])|[!%\\\\&=^|])","patterns":[{"include":"#comments"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.array-initializer.begin.bracket.curly.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.array-initializer.end.bracket.curly.java"}},"name":"meta.array-initializer.java","patterns":[{"include":"#code"}]}]},{"include":"#parens"}]},"assertions":{"patterns":[{"begin":"\\\\b(assert)\\\\s","beginCaptures":{"1":{"name":"keyword.control.assert.java"}},"end":"$","name":"meta.declaration.assertion.java","patterns":[{"match":":","name":"keyword.operator.assert.expression-separator.java"},{"include":"#code"}]}]},"class":{"begin":"(?=\\\\w?[-\\\\w\\\\s]*\\\\b(?:class|(?<!@)interface|enum)\\\\s+[$\\\\w]+)","end":"}","endCaptures":{"0":{"name":"punctuation.section.class.end.bracket.curly.java"}},"name":"meta.class.java","patterns":[{"include":"#storage-modifiers"},{"include":"#generics"},{"include":"#comments"},{"captures":{"1":{"name":"storage.modifier.java"},"2":{"name":"entity.name.type.class.java"}},"match":"(class|(?<!@)interface|enum)\\\\s+([$\\\\w]+)","name":"meta.class.identifier.java"},{"begin":"extends","beginCaptures":{"0":{"name":"storage.modifier.extends.java"}},"end":"(?=\\\\{|implements|permits)","name":"meta.definition.class.inherited.classes.java","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"(implements)\\\\s","beginCaptures":{"1":{"name":"storage.modifier.implements.java"}},"end":"(?=\\\\s*extends|permits|\\\\{)","name":"meta.definition.class.implemented.interfaces.java","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"(permits)\\\\s","beginCaptures":{"1":{"name":"storage.modifier.permits.java"}},"end":"(?=\\\\s*extends|implements|\\\\{)","name":"meta.definition.class.permits.classes.java","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.class.begin.bracket.curly.java"}},"contentName":"meta.class.body.java","end":"(?=})","patterns":[{"include":"#class-body"}]}]},"class-body":{"patterns":[{"include":"#comments-javadoc"},{"include":"#comments"},{"include":"#enums"},{"include":"#class"},{"include":"#generics"},{"include":"#static-initializer"},{"include":"#class-fields-and-methods"},{"include":"#annotations"},{"include":"#storage-modifiers"},{"include":"#member-variables"},{"include":"#code"}]},"class-fields-and-methods":{"patterns":[{"begin":"(?==)","end":"(?=;)","patterns":[{"include":"#code"}]},{"include":"#methods"}]},"code":{"patterns":[{"include":"#annotations"},{"include":"#comments"},{"include":"#enums"},{"include":"#class"},{"include":"#record"},{"include":"#anonymous-block-and-instance-initializer"},{"include":"#try-catch-finally"},{"include":"#assertions"},{"include":"#parens"},{"include":"#constants-and-special-vars"},{"include":"#numbers"},{"include":"#anonymous-classes-and-new"},{"include":"#lambda-expression"},{"include":"#keywords"},{"include":"#storage-modifiers"},{"include":"#method-call"},{"include":"#function-call"},{"include":"#variables"},{"include":"#variables-local"},{"include":"#objects"},{"include":"#properties"},{"include":"#strings"},{"include":"#all-types"},{"match":",","name":"punctuation.separator.delimiter.java"},{"match":"\\\\.","name":"punctuation.separator.period.java"},{"match":";","name":"punctuation.terminator.java"}]},"comments":{"patterns":[{"captures":{"0":{"name":"punctuation.definition.comment.java"}},"match":"/\\\\*\\\\*/","name":"comment.block.empty.java"},{"include":"#comments-inline"}]},"comments-inline":{"patterns":[{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.java"}},"end":"\\\\*/","name":"comment.block.java"},{"begin":"(^[\\\\t ]+)?(?=//)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.java"}},"end":"(?!\\\\G)","patterns":[{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.java"}},"end":"\\\\n","name":"comment.line.double-slash.java"}]}]},"comments-javadoc":{"patterns":[{"begin":"^\\\\s*(/\\\\*\\\\*)(?!/)","beginCaptures":{"1":{"name":"punctuation.definition.comment.java"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.java"}},"name":"comment.block.javadoc.java","patterns":[{"match":"@(author|deprecated|return|see|serial|since|version)\\\\b","name":"keyword.other.documentation.javadoc.java"},{"captures":{"1":{"name":"keyword.other.documentation.javadoc.java"},"2":{"name":"variable.parameter.java"}},"match":"(@param)\\\\s+(\\\\S+)"},{"captures":{"1":{"name":"keyword.other.documentation.javadoc.java"},"2":{"name":"entity.name.type.class.java"}},"match":"(@(?:exception|throws))\\\\s+(\\\\S+)"},{"captures":{"1":{"name":"keyword.other.documentation.javadoc.java"},"2":{"name":"entity.name.type.class.java"},"3":{"name":"variable.parameter.java"}},"match":"\\\\{(@link)\\\\s+(\\\\S+)?#([$\\\\w]+\\\\s*\\\\([^()]*\\\\)).*?}"}]}]},"constants-and-special-vars":{"patterns":[{"match":"\\\\b(true|false|null)\\\\b","name":"constant.language.java"},{"match":"\\\\bthis\\\\b","name":"variable.language.this.java"},{"match":"\\\\bsuper\\\\b","name":"variable.language.java"}]},"enums":{"begin":"^\\\\s*([\\\\w\\\\s]*)(enum)\\\\s+(\\\\w+)","beginCaptures":{"1":{"patterns":[{"include":"#storage-modifiers"}]},"2":{"name":"storage.modifier.java"},"3":{"name":"entity.name.type.enum.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.enum.end.bracket.curly.java"}},"name":"meta.enum.java","patterns":[{"begin":"\\\\b(extends)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.extends.java"}},"end":"(?=\\\\{|\\\\bimplements\\\\b)","name":"meta.definition.class.inherited.classes.java","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"\\\\b(implements)\\\\b","beginCaptures":{"1":{"name":"storage.modifier.implements.java"}},"end":"(?=\\\\{|\\\\bextends\\\\b)","name":"meta.definition.class.implemented.interfaces.java","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.enum.begin.bracket.curly.java"}},"end":"(?=})","patterns":[{"begin":"(?<=\\\\{)","end":"(?=[;}])","patterns":[{"include":"#comments-javadoc"},{"include":"#comments"},{"begin":"\\\\b(\\\\w+)\\\\b","beginCaptures":{"1":{"name":"constant.other.enum.java"}},"end":"(,)|(?=[;}])","endCaptures":{"1":{"name":"punctuation.separator.delimiter.java"}},"patterns":[{"include":"#comments-javadoc"},{"include":"#comments"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.bracket.round.java"}},"patterns":[{"include":"#code"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.bracket.curly.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.bracket.curly.java"}},"patterns":[{"include":"#class-body"}]}]}]},{"include":"#class-body"}]}]},"function-call":{"begin":"([$A-Z_a-z][$\\\\w]*)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"entity.name.function.java"},"2":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"name":"meta.function-call.java","patterns":[{"include":"#code"}]},"generics":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.bracket.angle.java"}},"end":">","endCaptures":{"0":{"name":"punctuation.bracket.angle.java"}},"patterns":[{"match":"\\\\b(extends|super)\\\\b","name":"storage.modifier.$1.java"},{"captures":{"1":{"name":"storage.type.java"}},"match":"(?<!\\\\.)([$A-Z_a-z][$0-9A-Z_a-z]*)(?=\\\\s*<)"},{"include":"#primitive-arrays"},{"match":"[$A-Z_a-z][$0-9A-Z_a-z]*","name":"storage.type.generic.java"},{"match":"\\\\?","name":"storage.type.generic.wildcard.java"},{"match":"&","name":"punctuation.separator.types.java"},{"match":",","name":"punctuation.separator.delimiter.java"},{"match":"\\\\.","name":"punctuation.separator.period.java"},{"include":"#parens"},{"include":"#generics"},{"include":"#comments"}]},"keywords":{"patterns":[{"match":"\\\\bthrow\\\\b","name":"keyword.control.throw.java"},{"match":"[:?]","name":"keyword.control.ternary.java"},{"match":"\\\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\\\b","name":"keyword.control.java"},{"match":"\\\\b(instanceof)\\\\b","name":"keyword.operator.instanceof.java"},{"match":"(<<|>>>?|[\\\\^~])","name":"keyword.operator.bitwise.java"},{"match":"(([\\\\&^|]|<<|>>>?)=)","name":"keyword.operator.assignment.bitwise.java"},{"match":"(===?|!=|<=|>=|<>|[<>])","name":"keyword.operator.comparison.java"},{"match":"([-%*+/]=)","name":"keyword.operator.assignment.arithmetic.java"},{"match":"(=)","name":"keyword.operator.assignment.java"},{"match":"(--|\\\\+\\\\+)","name":"keyword.operator.increment-decrement.java"},{"match":"([-%*+/])","name":"keyword.operator.arithmetic.java"},{"match":"(!|&&|\\\\|\\\\|)","name":"keyword.operator.logical.java"},{"match":"([\\\\&|])","name":"keyword.operator.bitwise.java"},{"match":"\\\\b(const|goto)\\\\b","name":"keyword.reserved.java"}]},"lambda-expression":{"patterns":[{"match":"->","name":"storage.type.function.arrow.java"}]},"member-variables":{"begin":"(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)","end":"(?=[;=])","patterns":[{"include":"#storage-modifiers"},{"include":"#variables"},{"include":"#primitive-arrays"},{"include":"#object-types"}]},"method-call":{"begin":"(\\\\.)\\\\s*([$A-Z_a-z][$\\\\w]*)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"punctuation.separator.period.java"},"2":{"name":"entity.name.function.java"},"3":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"name":"meta.method-call.java","patterns":[{"include":"#code"}]},"methods":{"begin":"(?!new)(?=[<\\\\w].*\\\\s+)(?=([^/=]|/(?!/))+\\\\()","end":"(})|(?=;)","endCaptures":{"1":{"name":"punctuation.section.method.end.bracket.curly.java"}},"name":"meta.method.java","patterns":[{"include":"#storage-modifiers"},{"begin":"(\\\\w+)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"entity.name.function.java"},"2":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"name":"meta.method.identifier.java","patterns":[{"include":"#parameters"},{"include":"#parens"},{"include":"#comments"}]},{"include":"#generics"},{"begin":"(?=\\\\w.*\\\\s+\\\\w+\\\\s*\\\\()","end":"(?=\\\\s+\\\\w+\\\\s*\\\\()","name":"meta.method.return-type.java","patterns":[{"include":"#all-types"},{"include":"#parens"},{"include":"#comments"}]},{"include":"#throws"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.method.begin.bracket.curly.java"}},"contentName":"meta.method.body.java","end":"(?=})","patterns":[{"include":"#code"}]},{"include":"#comments"}]},"module":{"begin":"((open)\\\\s)?(module)\\\\s+(\\\\w+)","beginCaptures":{"1":{"name":"storage.modifier.java"},"3":{"name":"storage.modifier.java"},"4":{"name":"entity.name.type.module.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.module.end.bracket.curly.java"}},"name":"meta.module.java","patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.module.begin.bracket.curly.java"}},"contentName":"meta.module.body.java","end":"(?=})","patterns":[{"include":"#comments"},{"include":"#comments-javadoc"},{"match":"\\\\b(requires|transitive|exports|opens|to|uses|provides|with)\\\\b","name":"keyword.module.java"}]}]},"numbers":{"patterns":[{"match":"\\\\b(?<!\\\\$)0([Xx])((?<!\\\\.)\\\\h([_\\\\h]*\\\\h)?[Ll]?(?!\\\\.)|(\\\\h([_\\\\h]*\\\\h)?\\\\.?|(\\\\h([_\\\\h]*\\\\h)?)?\\\\.\\\\h([_\\\\h]*\\\\h)?)[Pp][-+]?[0-9]([0-9_]*[0-9])?[DFdf]?)\\\\b(?!\\\\$)","name":"constant.numeric.hex.java"},{"match":"\\\\b(?<!\\\\$)0([Bb])[01]([01_]*[01])?[Ll]?\\\\b(?!\\\\$)","name":"constant.numeric.binary.java"},{"match":"\\\\b(?<!\\\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\\\b(?!\\\\$)","name":"constant.numeric.octal.java"},{"match":"(?<!\\\\$)(\\\\b[0-9]([0-9_]*[0-9])?\\\\.\\\\B(?!\\\\.)|\\\\b[0-9]([0-9_]*[0-9])?\\\\.([Ee][-+]?[0-9]([0-9_]*[0-9])?)[DFdf]?\\\\b|\\\\b[0-9]([0-9_]*[0-9])?\\\\.([Ee][-+]?[0-9]([0-9_]*[0-9])?)?[DFdf]\\\\b|\\\\b[0-9]([0-9_]*[0-9])?\\\\.([0-9]([0-9_]*[0-9])?)([Ee][-+]?[0-9]([0-9_]*[0-9])?)?[DFdf]?\\\\b|(?<!\\\\.)\\\\B\\\\.[0-9]([0-9_]*[0-9])?([Ee][-+]?[0-9]([0-9_]*[0-9])?)?[DFdf]?\\\\b|\\\\b[0-9]([0-9_]*[0-9])?([Ee][-+]?[0-9]([0-9_]*[0-9])?)[DFdf]?\\\\b|\\\\b[0-9]([0-9_]*[0-9])?([Ee][-+]?[0-9]([0-9_]*[0-9])?)?[DFdf]\\\\b|\\\\b(0|[1-9]([0-9_]*[0-9])?)(?!\\\\.)[Ll]?\\\\b)(?!\\\\$)","name":"constant.numeric.decimal.java"}]},"object-types":{"patterns":[{"include":"#generics"},{"begin":"\\\\b((?:[A-Z_a-z]\\\\w*\\\\s*\\\\.\\\\s*)*)([A-Z_]\\\\w*)\\\\s*(?=\\\\[)","beginCaptures":{"1":{"patterns":[{"match":"[A-Z_a-z]\\\\w*","name":"storage.type.java"},{"match":"\\\\.","name":"punctuation.separator.period.java"}]},"2":{"name":"storage.type.object.array.java"}},"end":"(?!\\\\s*\\\\[)","patterns":[{"include":"#comments"},{"include":"#parens"}]},{"captures":{"1":{"patterns":[{"match":"[A-Z_a-z]\\\\w*","name":"storage.type.java"},{"match":"\\\\.","name":"punctuation.separator.period.java"}]}},"match":"\\\\b((?:[A-Z_a-z]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z_]\\\\w*)\\\\s*(?=<)"},{"captures":{"1":{"patterns":[{"match":"[A-Z_a-z]\\\\w*","name":"storage.type.java"},{"match":"\\\\.","name":"punctuation.separator.period.java"}]}},"match":"\\\\b((?:[A-Z_a-z]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z_]\\\\w*)\\\\b((?=\\\\s*[\\\\n$A-Z_a-z])|(?=\\\\s*\\\\.\\\\.\\\\.))"}]},"object-types-inherited":{"patterns":[{"include":"#generics"},{"captures":{"1":{"name":"punctuation.separator.period.java"}},"match":"\\\\b(?:[A-Z]\\\\w*\\\\s*(\\\\.)\\\\s*)*[A-Z]\\\\w*\\\\b","name":"entity.other.inherited-class.java"},{"match":",","name":"punctuation.separator.delimiter.java"}]},"objects":{"match":"(?<![$\\\\w])[$A-Z_a-z][$\\\\w]*(?=\\\\s*\\\\.\\\\s*[$\\\\w]+)","name":"variable.other.object.java"},"parameters":{"patterns":[{"match":"\\\\bfinal\\\\b","name":"storage.modifier.java"},{"include":"#annotations"},{"include":"#all-types"},{"include":"#strings"},{"match":"\\\\w+","name":"variable.parameter.java"},{"match":",","name":"punctuation.separator.delimiter.java"},{"match":"\\\\.\\\\.\\\\.","name":"punctuation.definition.parameters.varargs.java"}]},"parens":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.bracket.round.java"}},"patterns":[{"include":"#code"}]},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.bracket.square.java"}},"end":"]","endCaptures":{"0":{"name":"punctuation.bracket.square.java"}},"patterns":[{"include":"#code"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.bracket.curly.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.bracket.curly.java"}},"patterns":[{"include":"#code"}]}]},"primitive-arrays":{"patterns":[{"begin":"\\\\b(void|boolean|byte|char|short|int|float|long|double)\\\\b\\\\s*(?=\\\\[)","beginCaptures":{"1":{"name":"storage.type.primitive.array.java"}},"end":"(?!\\\\s*\\\\[)","patterns":[{"include":"#comments"},{"include":"#parens"}]}]},"primitive-types":{"match":"\\\\b(void|boolean|byte|char|short|int|float|long|double)\\\\b","name":"storage.type.primitive.java"},"properties":{"patterns":[{"captures":{"1":{"name":"punctuation.separator.period.java"},"2":{"name":"keyword.control.new.java"}},"match":"(\\\\.)\\\\s*(new)"},{"captures":{"1":{"name":"punctuation.separator.period.java"},"2":{"name":"variable.other.object.property.java"}},"match":"(\\\\.)\\\\s*([$A-Z_a-z][$\\\\w]*)(?=\\\\s*\\\\.\\\\s*[$A-Z_a-z][$\\\\w]*)"},{"captures":{"1":{"name":"punctuation.separator.period.java"},"2":{"name":"variable.other.object.property.java"}},"match":"(\\\\.)\\\\s*([$A-Z_a-z][$\\\\w]*)"},{"captures":{"1":{"name":"punctuation.separator.period.java"},"2":{"name":"invalid.illegal.identifier.java"}},"match":"(\\\\.)\\\\s*([0-9][$\\\\w]*)"}]},"record":{"begin":"(?=\\\\w?[\\\\w\\\\s]*\\\\brecord\\\\s+[$\\\\w]+)","end":"}","endCaptures":{"0":{"name":"punctuation.section.class.end.bracket.curly.java"}},"name":"meta.record.java","patterns":[{"include":"#storage-modifiers"},{"include":"#generics"},{"include":"#comments"},{"begin":"(record)\\\\s+([$\\\\w]+)(<[$\\\\w]+>)?(\\\\()","beginCaptures":{"1":{"name":"storage.modifier.java"},"2":{"name":"entity.name.type.record.java"},"3":{"patterns":[{"include":"#generics"}]},"4":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"name":"meta.record.identifier.java","patterns":[{"include":"#code"}]},{"begin":"(implements)\\\\s","beginCaptures":{"1":{"name":"storage.modifier.implements.java"}},"end":"(?=\\\\s*\\\\{)","name":"meta.definition.class.implemented.interfaces.java","patterns":[{"include":"#object-types-inherited"},{"include":"#comments"}]},{"include":"#record-body"}]},"record-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.class.begin.bracket.curly.java"}},"end":"(?=})","name":"meta.record.body.java","patterns":[{"include":"#record-constructor"},{"include":"#class-body"}]},"record-constructor":{"begin":"(?!new)(?=[<\\\\w].*\\\\s+)(?=([^(/=]|/(?!/))+(?=\\\\{))","end":"(})|(?=;)","endCaptures":{"1":{"name":"punctuation.section.method.end.bracket.curly.java"}},"name":"meta.method.java","patterns":[{"include":"#storage-modifiers"},{"begin":"(\\\\w+)","beginCaptures":{"1":{"name":"entity.name.function.java"}},"end":"(?=\\\\s*\\\\{)","name":"meta.method.identifier.java","patterns":[{"include":"#comments"}]},{"include":"#comments"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.method.begin.bracket.curly.java"}},"contentName":"meta.method.body.java","end":"(?=})","patterns":[{"include":"#code"}]}]},"static-initializer":{"patterns":[{"include":"#anonymous-block-and-instance-initializer"},{"match":"static","name":"storage.modifier.java"}]},"storage-modifiers":{"match":"\\\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\\\b","name":"storage.modifier.java"},"strings":{"patterns":[{"begin":"\\"\\"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.java"}},"end":"\\"\\"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.java"}},"name":"string.quoted.triple.java","patterns":[{"match":"(\\\\\\\\\\"\\"\\")(?!\\")|(\\\\\\\\.)","name":"constant.character.escape.java"}]},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.java"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.java"}},"name":"string.quoted.double.java","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.java"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.java"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.java"}},"name":"string.quoted.single.java","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.java"}]}]},"throws":{"begin":"throws","beginCaptures":{"0":{"name":"storage.modifier.java"}},"end":"(?=[;{])","name":"meta.throwables.java","patterns":[{"match":",","name":"punctuation.separator.delimiter.java"},{"match":"[$A-Z_a-z][$.0-9A-Z_a-z]*","name":"storage.type.java"},{"include":"#comments"}]},"try-catch-finally":{"patterns":[{"begin":"\\\\btry\\\\b","beginCaptures":{"0":{"name":"keyword.control.try.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.try.end.bracket.curly.java"}},"name":"meta.try.java","patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.section.try.resources.begin.bracket.round.java"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.try.resources.end.bracket.round.java"}},"name":"meta.try.resources.java","patterns":[{"include":"#code"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.try.begin.bracket.curly.java"}},"contentName":"meta.try.body.java","end":"(?=})","patterns":[{"include":"#code"}]}]},{"begin":"\\\\b(catch)\\\\b","beginCaptures":{"1":{"name":"keyword.control.catch.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.catch.end.bracket.curly.java"}},"name":"meta.catch.java","patterns":[{"include":"#comments"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.bracket.round.java"}},"contentName":"meta.catch.parameters.java","end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.java"}},"patterns":[{"include":"#comments"},{"include":"#storage-modifiers"},{"begin":"[$A-Z_a-z][$.0-9A-Z_a-z]*","beginCaptures":{"0":{"name":"storage.type.java"}},"end":"(\\\\|)|(?=\\\\))","endCaptures":{"1":{"name":"punctuation.catch.separator.java"}},"patterns":[{"include":"#comments"},{"captures":{"0":{"name":"variable.parameter.java"}},"match":"\\\\w+"}]}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.catch.begin.bracket.curly.java"}},"contentName":"meta.catch.body.java","end":"(?=})","patterns":[{"include":"#code"}]}]},{"begin":"\\\\bfinally\\\\b","beginCaptures":{"0":{"name":"keyword.control.finally.java"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.finally.end.bracket.curly.java"}},"name":"meta.finally.java","patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.finally.begin.bracket.curly.java"}},"contentName":"meta.finally.body.java","end":"(?=})","patterns":[{"include":"#code"}]}]}]},"variables":{"begin":"(?=\\\\b((void|boolean|byte|char|short|int|float|long|double)|(?>(\\\\w+\\\\.)*[A-Z_]+\\\\w*))\\\\b\\\\s*(<[],.<>?\\\\[\\\\w\\\\s]*>)?\\\\s*((\\\\[])*)?\\\\s+[$A-Z_a-z][$\\\\w]*([]$,\\\\[\\\\w][],\\\\[\\\\w\\\\s]*)?\\\\s*([:;=]))","end":"(?=[:;=])","name":"meta.definition.variable.java","patterns":[{"captures":{"1":{"name":"variable.other.definition.java"}},"match":"([$A-Z_a-z][$\\\\w]*)(?=\\\\s*(\\\\[])*\\\\s*([,:;=]))"},{"include":"#all-types"},{"include":"#code"}]},"variables-local":{"begin":"(?=\\\\b(var)\\\\b\\\\s+[$A-Z_a-z][$\\\\w]*\\\\s*([:;=]))","end":"(?=[:;=])","name":"meta.definition.variable.local.java","patterns":[{"match":"\\\\bvar\\\\b","name":"storage.type.local.java"},{"captures":{"1":{"name":"variable.other.definition.java"}},"match":"([$A-Z_a-z][$\\\\w]*)(?=\\\\s*(\\\\[])*\\\\s*([:;=]))"},{"include":"#code"}]}},"scopeName":"source.java"}`))];export{t as n,n as t};
2
- //# sourceMappingURL=java-W2nUDe85.js.map
2
+ //# sourceMappingURL=java-DgkDOVUq.js.map