af360 0.1.15 → 0.1.16

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 (275) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +141 -130
  3. package/dist/.next/app-path-routes-manifest.json +18 -18
  4. package/dist/.next/build-manifest.json +5 -5
  5. package/dist/.next/prerender-manifest.json +49 -49
  6. package/dist/.next/server/app/_not-found/page.js +2 -2
  7. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/_not-found.html +1 -1
  10. package/dist/.next/server/app/_not-found.meta +8 -0
  11. package/dist/.next/server/app/_not-found.rsc +3 -3
  12. package/dist/.next/server/app/ahead/page.js +2 -2
  13. package/dist/.next/server/app/ahead/page.js.nft.json +1 -1
  14. package/dist/.next/server/app/ahead/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/ahead.html +1 -1
  16. package/dist/.next/server/app/ahead.meta +8 -0
  17. package/dist/.next/server/app/ahead.rsc +4 -4
  18. package/dist/.next/server/app/api/browse/route.js +1 -1
  19. package/dist/.next/server/app/api/browse/route.js.nft.json +1 -1
  20. package/dist/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/dist/.next/server/app/api/card/route.js +1 -1
  22. package/dist/.next/server/app/api/card/route.js.nft.json +1 -1
  23. package/dist/.next/server/app/api/card/route_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/api/check/route.js +1 -1
  25. package/dist/.next/server/app/api/check/route.js.nft.json +1 -1
  26. package/dist/.next/server/app/api/check/route_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/api/config/route.js +1 -1
  28. package/dist/.next/server/app/api/config/route.js.nft.json +1 -1
  29. package/dist/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/api/connections/route.js +3 -3
  31. package/dist/.next/server/app/api/connections/route.js.nft.json +1 -1
  32. package/dist/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/api/connectors/github/route.js +1 -1
  34. package/dist/.next/server/app/api/connectors/github/route.js.nft.json +1 -1
  35. package/dist/.next/server/app/api/connectors/github/route_client-reference-manifest.js +1 -1
  36. package/dist/.next/server/app/api/consent/route.js +1 -1
  37. package/dist/.next/server/app/api/consent/route.js.nft.json +1 -1
  38. package/dist/.next/server/app/api/consent/route_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/api/context/route.js +3 -3
  40. package/dist/.next/server/app/api/context/route.js.nft.json +1 -1
  41. package/dist/.next/server/app/api/context/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/api/discover/route.js +1 -1
  43. package/dist/.next/server/app/api/discover/route.js.nft.json +1 -1
  44. package/dist/.next/server/app/api/discover/route_client-reference-manifest.js +1 -1
  45. package/dist/.next/server/app/api/expiry/route.js +1 -1
  46. package/dist/.next/server/app/api/expiry/route.js.nft.json +1 -1
  47. package/dist/.next/server/app/api/expiry/route_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/api/first-light/route.js +1 -1
  49. package/dist/.next/server/app/api/first-light/route.js.nft.json +1 -1
  50. package/dist/.next/server/app/api/first-light/route_client-reference-manifest.js +1 -1
  51. package/dist/.next/server/app/api/handoff/route.js +1 -1
  52. package/dist/.next/server/app/api/handoff/route.js.nft.json +1 -1
  53. package/dist/.next/server/app/api/handoff/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/api/health/route.js +1 -1
  55. package/dist/.next/server/app/api/health/route.js.nft.json +1 -1
  56. package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  57. package/dist/.next/server/app/api/incidents/route.js +1 -1
  58. package/dist/.next/server/app/api/incidents/route.js.nft.json +1 -1
  59. package/dist/.next/server/app/api/incidents/route_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/api/insights/route.js +1 -1
  61. package/dist/.next/server/app/api/insights/route.js.nft.json +1 -1
  62. package/dist/.next/server/app/api/insights/route_client-reference-manifest.js +1 -1
  63. package/dist/.next/server/app/api/log/route.js +1 -1
  64. package/dist/.next/server/app/api/log/route.js.nft.json +1 -1
  65. package/dist/.next/server/app/api/log/route_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/api/pulse/route.js +1 -1
  67. package/dist/.next/server/app/api/pulse/route.js.nft.json +1 -1
  68. package/dist/.next/server/app/api/pulse/route_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/api/radar/route.js +1 -1
  70. package/dist/.next/server/app/api/radar/route.js.nft.json +1 -1
  71. package/dist/.next/server/app/api/radar/route_client-reference-manifest.js +1 -1
  72. package/dist/.next/server/app/api/report/route.js +1 -1
  73. package/dist/.next/server/app/api/report/route.js.nft.json +1 -1
  74. package/dist/.next/server/app/api/report/route_client-reference-manifest.js +1 -1
  75. package/dist/.next/server/app/api/services/route.js +1 -1
  76. package/dist/.next/server/app/api/services/route.js.nft.json +1 -1
  77. package/dist/.next/server/app/api/services/route_client-reference-manifest.js +1 -1
  78. package/dist/.next/server/app/api/status/route.js +1 -1
  79. package/dist/.next/server/app/api/status/route.js.nft.json +1 -1
  80. package/dist/.next/server/app/api/status/route_client-reference-manifest.js +1 -1
  81. package/dist/.next/server/app/connections/page.js +2 -2
  82. package/dist/.next/server/app/connections/page.js.nft.json +1 -1
  83. package/dist/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/connections.html +1 -1
  85. package/dist/.next/server/app/connections.meta +8 -0
  86. package/dist/.next/server/app/connections.rsc +4 -4
  87. package/dist/.next/server/app/dashboard/page.js +2 -2
  88. package/dist/.next/server/app/dashboard/page.js.nft.json +1 -1
  89. package/dist/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  90. package/dist/.next/server/app/dashboard.html +1 -1
  91. package/dist/.next/server/app/dashboard.meta +8 -0
  92. package/dist/.next/server/app/dashboard.rsc +3 -3
  93. package/dist/.next/server/app/discoveries/page.js +2 -2
  94. package/dist/.next/server/app/discoveries/page.js.nft.json +1 -1
  95. package/dist/.next/server/app/discoveries/page_client-reference-manifest.js +1 -1
  96. package/dist/.next/server/app/discoveries.html +1 -1
  97. package/dist/.next/server/app/discoveries.meta +8 -0
  98. package/dist/.next/server/app/discoveries.rsc +4 -4
  99. package/dist/.next/server/app/expiry/page.js +2 -2
  100. package/dist/.next/server/app/expiry/page.js.nft.json +1 -1
  101. package/dist/.next/server/app/expiry/page_client-reference-manifest.js +1 -1
  102. package/dist/.next/server/app/expiry.html +1 -1
  103. package/dist/.next/server/app/expiry.meta +8 -0
  104. package/dist/.next/server/app/expiry.rsc +3 -3
  105. package/dist/.next/server/app/fleet/page.js +2 -2
  106. package/dist/.next/server/app/fleet/page.js.nft.json +1 -1
  107. package/dist/.next/server/app/fleet/page_client-reference-manifest.js +1 -1
  108. package/dist/.next/server/app/fleet.html +1 -1
  109. package/dist/.next/server/app/fleet.meta +8 -0
  110. package/dist/.next/server/app/fleet.rsc +3 -3
  111. package/dist/.next/server/app/home/page.js +2 -2
  112. package/dist/.next/server/app/home/page.js.nft.json +1 -1
  113. package/dist/.next/server/app/home/page_client-reference-manifest.js +1 -1
  114. package/dist/.next/server/app/home.html +1 -1
  115. package/dist/.next/server/app/home.meta +8 -0
  116. package/dist/.next/server/app/home.rsc +3 -3
  117. package/dist/.next/server/app/legal/privacy/page.js +2 -2
  118. package/dist/.next/server/app/legal/privacy/page.js.nft.json +1 -1
  119. package/dist/.next/server/app/legal/privacy/page_client-reference-manifest.js +1 -1
  120. package/dist/.next/server/app/legal/terms/page.js +2 -2
  121. package/dist/.next/server/app/legal/terms/page.js.nft.json +1 -1
  122. package/dist/.next/server/app/legal/terms/page_client-reference-manifest.js +1 -1
  123. package/dist/.next/server/app/log/page.js +2 -2
  124. package/dist/.next/server/app/log/page.js.nft.json +1 -1
  125. package/dist/.next/server/app/log/page_client-reference-manifest.js +1 -1
  126. package/dist/.next/server/app/log.html +1 -1
  127. package/dist/.next/server/app/log.meta +8 -0
  128. package/dist/.next/server/app/log.rsc +4 -4
  129. package/dist/.next/server/app/page.js +2 -2
  130. package/dist/.next/server/app/page.js.nft.json +1 -1
  131. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  132. package/dist/.next/server/app/projects/page.js +2 -2
  133. package/dist/.next/server/app/projects/page.js.nft.json +1 -1
  134. package/dist/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  135. package/dist/.next/server/app/projects.html +1 -1
  136. package/dist/.next/server/app/projects.meta +8 -0
  137. package/dist/.next/server/app/projects.rsc +4 -4
  138. package/dist/.next/server/app/radar/page.js +2 -2
  139. package/dist/.next/server/app/radar/page.js.nft.json +1 -1
  140. package/dist/.next/server/app/radar/page_client-reference-manifest.js +1 -1
  141. package/dist/.next/server/app/radar.html +1 -1
  142. package/dist/.next/server/app/radar.meta +8 -0
  143. package/dist/.next/server/app/radar.rsc +4 -4
  144. package/dist/.next/server/app/report/page.js +2 -2
  145. package/dist/.next/server/app/report/page.js.nft.json +1 -1
  146. package/dist/.next/server/app/report/page_client-reference-manifest.js +1 -1
  147. package/dist/.next/server/app/report.html +1 -1
  148. package/dist/.next/server/app/report.meta +8 -0
  149. package/dist/.next/server/app/report.rsc +4 -4
  150. package/dist/.next/server/app/settings/page.js +2 -2
  151. package/dist/.next/server/app/settings/page.js.nft.json +1 -1
  152. package/dist/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  153. package/dist/.next/server/app/settings.html +1 -1
  154. package/dist/.next/server/app/settings.meta +8 -0
  155. package/dist/.next/server/app/settings.rsc +4 -4
  156. package/dist/.next/server/app/sites/page.js +2 -2
  157. package/dist/.next/server/app/sites/page.js.nft.json +1 -1
  158. package/dist/.next/server/app/sites/page_client-reference-manifest.js +1 -1
  159. package/dist/.next/server/app/sites.html +1 -1
  160. package/dist/.next/server/app/sites.meta +8 -0
  161. package/dist/.next/server/app/sites.rsc +4 -4
  162. package/dist/.next/server/app/welcome/page.js +2 -2
  163. package/dist/.next/server/app/welcome/page.js.nft.json +1 -1
  164. package/dist/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  165. package/dist/.next/server/app/welcome.html +1 -1
  166. package/dist/.next/server/app/welcome.meta +8 -0
  167. package/dist/.next/server/app/welcome.rsc +4 -4
  168. package/dist/.next/server/app-paths-manifest.json +18 -18
  169. package/dist/.next/server/chunks/1155.js +1 -0
  170. package/dist/.next/server/chunks/1232.js +1 -0
  171. package/dist/.next/server/chunks/2346.js +1 -1
  172. package/dist/.next/server/chunks/2465.js +20 -20
  173. package/dist/.next/server/chunks/2817.js +1 -1
  174. package/dist/.next/server/chunks/3897.js +22 -0
  175. package/dist/.next/server/chunks/4134.js +1 -1
  176. package/dist/.next/server/chunks/5277.js +1 -0
  177. package/dist/.next/server/chunks/5611.js +1 -1
  178. package/dist/.next/server/chunks/572.js +1 -1
  179. package/dist/.next/server/chunks/6992.js +1 -1
  180. package/dist/.next/server/chunks/7511.js +1 -1
  181. package/dist/.next/server/chunks/7719.js +1 -1
  182. package/dist/.next/server/chunks/8150.js +1 -1
  183. package/dist/.next/server/chunks/8549.js +1 -1
  184. package/dist/.next/server/chunks/9655.js +11 -0
  185. package/dist/.next/server/middleware-build-manifest.js +1 -1
  186. package/dist/.next/server/middleware-manifest.json +5 -5
  187. package/dist/.next/server/pages/404.html +1 -1
  188. package/dist/.next/server/pages/500.html +1 -1
  189. package/dist/.next/server/pages/_document.js.nft.json +1 -1
  190. package/dist/.next/server/pages/_error.js +3 -3
  191. package/dist/.next/server/pages/_error.js.nft.json +1 -1
  192. package/dist/.next/server/pages-manifest.json +1 -1
  193. package/dist/.next/server/server-reference-manifest.json +1 -1
  194. package/dist/.next/static/chunks/1255-5cd2fe06309409a0.js +1 -0
  195. package/dist/.next/static/chunks/2619-3c9e02e22d10480a.js +1 -0
  196. package/dist/.next/static/chunks/3192-7e153722ff079fc6.js +1 -0
  197. package/dist/.next/static/chunks/{7897-b9c15e8805df61ef.js → 7897-52f8a153c1970ef0.js} +1 -1
  198. package/dist/.next/static/chunks/8050-6c17ccfd85ac3208.js +1 -0
  199. package/dist/.next/static/chunks/app/ahead/{page-75602559f92be6c4.js → page-f5789a03967af6e1.js} +1 -1
  200. package/dist/.next/static/chunks/app/connections/{page-ff9d0b4e4fcf5ebe.js → page-5b833f9485623b92.js} +1 -1
  201. package/dist/.next/static/chunks/app/discoveries/{page-6b06c0c2a94f3b94.js → page-337bb60e4cbdcebb.js} +1 -1
  202. package/dist/.next/static/chunks/app/{error-c67c297ef2dd70de.js → error-b32d8c6d4bfa070e.js} +1 -1
  203. package/dist/.next/static/chunks/app/{layout-d14e087b541b48b1.js → layout-0f3f0098b5d1e6be.js} +1 -1
  204. package/dist/.next/static/chunks/app/log/{page-842048c36f071dd6.js → page-1711fe02581c58e8.js} +1 -1
  205. package/dist/.next/static/chunks/app/projects/page-b05c7b0c3284db79.js +1 -0
  206. package/dist/.next/static/chunks/app/radar/page-2c972e78ae153706.js +1 -0
  207. package/dist/.next/static/chunks/app/report/page-6bd98ca320f3730c.js +1 -0
  208. package/dist/.next/static/chunks/app/settings/{page-582279bf3fe509d4.js → page-d50e8193d000c9be.js} +1 -1
  209. package/dist/.next/static/chunks/app/sites/page-80cc0a08ae2339a8.js +1 -0
  210. package/dist/.next/static/chunks/app/welcome/{page-d26225bed7e1ad39.js → page-f2cd15c4b50942bc.js} +1 -1
  211. package/dist/.next/static/chunks/main-8e42304858de4a63.js +1 -0
  212. package/dist/.next/static/css/5ddef273a3ac3217.css +1 -0
  213. package/dist/build-id.json +225 -223
  214. package/dist/node_modules/@next/env/package.json +1 -1
  215. package/dist/node_modules/next/dist/build/swc/index.js +1 -1
  216. package/dist/node_modules/next/dist/build/webpack-config.js +2 -2
  217. package/dist/node_modules/next/dist/compiled/hash.js/sha256/256.js +1 -0
  218. package/dist/node_modules/next/dist/compiled/hash.js/sha256/package.json +1 -0
  219. package/dist/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +13 -13
  220. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +13 -13
  221. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +10 -10
  222. package/dist/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +11 -11
  223. package/dist/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +2 -2
  224. package/dist/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +9 -9
  225. package/dist/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +8 -8
  226. package/dist/node_modules/next/dist/server/base-server.js +2 -5
  227. package/dist/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1 -1
  228. package/dist/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  229. package/dist/node_modules/next/dist/server/image-optimizer.js +46 -3
  230. package/dist/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  231. package/dist/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +180 -19
  232. package/dist/node_modules/next/dist/server/lib/incremental-cache/index.js +36 -17
  233. package/dist/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +3 -3
  234. package/dist/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +14 -6
  235. package/dist/node_modules/next/dist/server/lib/match-next-data-pathname.js +3 -1
  236. package/dist/node_modules/next/dist/server/lib/node-fs-methods.js +14 -0
  237. package/dist/node_modules/next/dist/server/lib/route-cache-key.js +77 -0
  238. package/dist/node_modules/next/dist/server/lib/start-server.js +1 -1
  239. package/dist/node_modules/next/dist/server/next-server.js +8 -6
  240. package/dist/node_modules/next/dist/server/response-cache/index.js +31 -15
  241. package/dist/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +2 -2
  242. package/dist/node_modules/next/dist/server/route-modules/pages/pages-handler.js +6 -1
  243. package/dist/node_modules/next/dist/server/route-modules/route-module.js +9 -2
  244. package/dist/node_modules/next/dist/shared/lib/canary-only.js +1 -1
  245. package/dist/node_modules/next/dist/shared/lib/router/utils/app-paths.js +17 -1
  246. package/dist/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  247. package/dist/node_modules/next/dist/telemetry/events/version.js +2 -2
  248. package/dist/node_modules/next/package.json +11 -11
  249. package/dist/node_modules/source-map-js/lib/quick-sort.js +10 -1
  250. package/dist/node_modules/source-map-js/lib/source-map-consumer.js +51 -3
  251. package/dist/node_modules/source-map-js/lib/source-map-generator.js +6 -4
  252. package/dist/node_modules/source-map-js/lib/source-node.js +7 -0
  253. package/dist/node_modules/source-map-js/package.json +1 -1
  254. package/dist/package.json +3 -3
  255. package/dist/shell/bin/af360-bridge.exe +0 -0
  256. package/docs/legal/PRIVACY.md +1 -1
  257. package/lib/mask.mjs +21 -1
  258. package/package.json +3 -3
  259. package/scripts/mcp-server.mjs +19 -9
  260. package/shell/bin/af360-bridge.exe +0 -0
  261. package/dist/.next/server/chunks/1331.js +0 -22
  262. package/dist/.next/server/chunks/4825.js +0 -1
  263. package/dist/.next/server/chunks/8134.js +0 -11
  264. package/dist/.next/server/chunks/9946.js +0 -1
  265. package/dist/.next/static/chunks/1255-fc6c00ab2f765339.js +0 -1
  266. package/dist/.next/static/chunks/3192-40ade9877c89ec45.js +0 -1
  267. package/dist/.next/static/chunks/8050-a75457e83cd8be0f.js +0 -1
  268. package/dist/.next/static/chunks/app/projects/page-1d6b330842a2ff80.js +0 -1
  269. package/dist/.next/static/chunks/app/radar/page-584b42327baac21b.js +0 -1
  270. package/dist/.next/static/chunks/app/report/page-9dc52d7f76569e42.js +0 -1
  271. package/dist/.next/static/chunks/app/sites/page-3dcc5a0990fae677.js +0 -1
  272. package/dist/.next/static/chunks/main-574ae5bf2f2165c4.js +0 -1
  273. package/dist/.next/static/css/9b639a814d15c5ff.css +0 -1
  274. /package/dist/.next/static/{4602553707d90d0fadeba → be31a391928486d5659f1}/_buildManifest.js +0 -0
  275. /package/dist/.next/static/{4602553707d90d0fadeba → be31a391928486d5659f1}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7572],{148:(n,e,c)=>{"use strict";c.r(e),c.d(e,{default:()=>g});var s=c(5155),t=c(7406),o=c(2115),i=c(8713),a=c(436),l=c(5310),r=c(3034),d=c(8706),u=c(2613);function p(n){let{lang:e,t:c,clients:t,supported:p,remembered:m,reload:x}=n,[j,f]=(0,o.useState)(null),[v,g]=(0,o.useState)(null),[b,N]=(0,o.useState)(null),k=async(n,e)=>{g(n),N(null),f(null);let c=await fetch("/api/connections",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"connect"===e?"preview":"previewDisconnect",clientId:n})}).then(n=>n.json()).catch(()=>null);g(null),c&&(c.ok&&c.receipt?f({receipt:c.receipt}):c.refusal&&f({refusal:c.refusal}))},I=async n=>{g(n.clientId);let e=await fetch("/api/connections",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:n.action,clientId:n.clientId,digest:n.digest})}).then(n=>n.json()).catch(()=>null);if(g(null),e)if(e.ok){var c;f(null),N({label:n.label,action:n.action,backup:null!=(c=e.backupPath)?c:null}),x()}else e.refusal&&f({refusal:e.refusal})};if(null===t)return(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsx)("div",{className:"lbl",children:(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"conn.looking",en:a.UI.settings.connLooking})})})});let U=(0,i.iw)(t),w=p.filter(n=>!U.some(e=>e.id===n.id)),y=(0,d.nn)(w.map(n=>n.label),d.v1.and,d.v1.comma);return(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsxs)("div",{className:"lbl",children:[0===U.length?(0,s.jsx)("span",{children:c("conn.none",a.UI.settings.connNone)}):(0,s.jsxs)("div",{className:"rule-list",children:[U.map(n=>{let e="malformed"===n.state||"unreadable"===n.state,t=!n.connected&&!e&&!1!==n.verified&&!!n.elsewhere,o=!n.connected&&!e&&!1===n.verified,i=!n.connected&&!e&&!1!==n.verified&&!!n.oldShape,d=!n.connected&&!e&&!t&&!o&&!i&&m.includes(n.id);return(0,s.jsxs)("div",{className:"rule-row conn-row",children:[(0,s.jsxs)("span",{className:"conn-name",children:[n.label,n.connected?(0,s.jsx)("em",{className:"conn-on",children:c("conn.connected",a.UI.settings.connConnected)}):e?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.unreadable",a.UI.settings.connUnreadable)}):t?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.elsewhere",a.UI.settings.connElsewhere)}):i?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.oldShape",a.UI.settings.connOldShape)}):o?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.unverified",a.UI.settings.connUnverified)}):(0,s.jsx)("em",{className:"conn-off",children:c("conn.notConnected",a.UI.settings.connNotConnected)})]}),(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:n.configPath})}),n.connected?(0,s.jsx)(u.ob,{actions:[{label:c("conn.disconnect",a.UI.settings.connDisconnect),onClick:()=>k(n.id,"disconnect"),danger:!0}]}):(0,s.jsx)("button",{className:"b2 q",disabled:v===n.id,onClick:()=>k(n.id,"connect"),children:d||i?c("conn.reconnect",a.UI.settings.connReconnect):"".concat(c("conn.connect",a.UI.settings.connConnect)," ").concat(n.label)}),d&&(0,s.jsx)("span",{className:"conn-dropped",children:c("conn.dropped",a.UI.settings.connDropped).replace("{0}",n.label)}),t&&(0,s.jsx)("span",{className:"conn-dropped",children:(0,s.jsx)(r.B,{children:n.elsewhere})}),i&&n.entryCommand&&(0,s.jsx)("span",{className:"conn-dropped",children:(0,s.jsx)(r.B,{children:n.entryCommand})}),o&&n.reason&&(0,s.jsx)("span",{className:"conn-dropped",children:n.reason}),j&&"receipt"in j&&j.receipt.clientId===n.id&&(0,s.jsx)(h,{r:j.receipt,t:c,busy:v===j.receipt.clientId,onConfirm:()=>I(j.receipt),onCancel:()=>f(null)}),j&&"refusal"in j&&j.refusal.clientId===n.id&&(0,s.jsxs)("div",{className:"conn-diff conn-refused",children:[(0,s.jsx)("b",{children:c("conn.refused",a.UI.settings.connRefused)}),(0,s.jsx)("span",{className:"error-line",children:j.refusal.reason}),j.refusal.configPath&&(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:j.refusal.configPath})}),(0,s.jsx)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:8},children:(0,s.jsx)("button",{className:"b2 q",onClick:()=>f(null),children:(0,s.jsx)(l.T,{k:"btn.done",en:a.UI.common.done})})})]})]},n.id)}),w.length>0&&(0,s.jsx)("span",{className:"conn-also",children:c("conn.alsoWorks",a.UI.settings.connAlsoWorks).replace("{0}",y)})]}),j&&"refusal"in j&&!U.some(n=>n.id===j.refusal.clientId)&&(0,s.jsxs)("div",{className:"conn-diff conn-refused",children:[(0,s.jsx)("b",{children:c("conn.refused",a.UI.settings.connRefused)}),(0,s.jsx)("span",{className:"error-line",children:j.refusal.reason}),j.refusal.configPath&&(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:j.refusal.configPath})}),(0,s.jsx)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:8},children:(0,s.jsx)("button",{className:"b2 q",onClick:()=>f(null),children:(0,s.jsx)(l.T,{k:"btn.done",en:a.UI.common.done})})})]}),b&&(0,s.jsxs)("span",{className:"conn-done",children:[("connect"===b.action?c("conn.wrote",a.UI.settings.connWrote):c("conn.removed",a.UI.settings.connRemoved)).replace("{0}",b.label),b.backup?" ".concat(c("conn.backupAt",a.UI.settings.connBackupAt).replace("{0}",b.backup)):"","connect"===b.action&&(0,s.jsx)("b",{className:"conn-step",children:c("conn.restart",a.UI.settings.connRestart).replace("{0}",b.label)})]})]})})}function h(n){let{r:e,t:c,busy:t,onConfirm:o,onCancel:i}=n;return(0,s.jsxs)("div",{className:"conn-diff",children:[(0,s.jsx)("b",{children:("connect"!==e.action?c("conn.willRemove",a.UI.settings.connWillRemove):"repoint"===e.kind?c("conn.willRepoint",a.UI.settings.connWillRepoint):c("conn.willWrite",a.UI.settings.connWillWrite)).replace("{0}",e.label)}),(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:e.configPath})}),(0,s.jsx)("span",{className:"conn-count",children:c("conn.lineCount",a.UI.settings.connLineCount).replace("{0}",String(e.added)).replace("{1}",String(e.removed)).replace("{2}",String(e.startLine))}),(0,s.jsx)("pre",{className:"conn-lines",dir:"ltr",children:e.lines.map((n,e)=>(0,s.jsxs)("span",{className:"+"===n.sign?"dl-add":"-"===n.sign?"dl-del":"dl-ctx",children:[n.sign,n.text,"\n"]},e))}),e.willBackupTo&&(0,s.jsx)("span",{className:"conn-backup",children:c("conn.willBackup",a.UI.settings.connWillBackup).replace("{0}",e.willBackupTo)}),e.running&&(0,s.jsx)("span",{className:"conn-warn",children:c("conn.running",a.UI.settings.connRunning).replace("{0}",e.label)}),(0,s.jsxs)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:8},children:[(0,s.jsx)("button",{className:"b".concat("connect"===e.action?"":" danger"),disabled:t,onClick:o,children:"connect"===e.action?c("conn.confirmWrite",a.UI.settings.connConfirmWrite):c("conn.confirmRemove",a.UI.settings.connConfirmRemove)}),(0,s.jsx)("button",{className:"b2 q",disabled:t,onClick:i,children:(0,s.jsx)(l.T,{k:"btn.cancel",en:a.UI.common.cancel})})]})]})}function m(n){var e,c,i,d,u,p,h,m,f;let{t:v,state:g,appReady:b,reload:N,onCount:k}=n,[I,U]=(0,o.useState)(!1),[w,y]=(0,o.useState)(null),[C,T]=(0,o.useState)(null),[S,E]=(0,o.useState)(null),[A,L]=(0,o.useState)(!1),[R,O]=(0,o.useState)(()=>Date.now()),[B,W]=(0,o.useState)(null),[H,P]=(0,o.useState)(!1),[M,F]=(0,o.useState)(!1),[q,D]=(0,o.useState)(null),[G,_]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!H)return;let n=!1,e=async()=>{var e,c;let s=await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"status",flowId:B})}).then(n=>n.json()).catch(()=>null);if(!n&&(null==s?void 0:s.ok)){if("idle"===s.phase){V(),U(!1),D({kind:"unreached",reason:"af360 is no longer waiting for GitHub's answer, and nothing was stored - press Connect GitHub to start again."});return}"done"===s.phase&&(V(),U(!1),N(),"ok"===s.outcome?D({kind:"ok",login:s.login,repoNames:Array.isArray(s.repoNames)?s.repoNames:[],reposUnread:Number(s.reposUnread)||0,installationCount:"number"==typeof s.installationCount?s.installationCount:void 0}):"refused-write"===s.outcome?D({kind:"refused-write",detail:String(null!=(e=s.detail)?e:"")}):D({kind:"unreached",reason:String(null!=(c=s.reason)?c:"The authorization did not complete.")}))}},c=setInterval(()=>{e()},1500);return()=>{n=!0,clearInterval(c)}},[H,B]);let J=async()=>{if(M)return;F(!0),D(null);let n=await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"begin"})}).then(n=>n.json()).catch(()=>null);if(F(!1),!(null==n?void 0:n.ok)){var e;D({kind:"error",message:String(null!=(e=null==n?void 0:n.message)?e:"af360 could not start the authorization.")});return}y("string"==typeof n.userCode?n.userCode:null),T("string"==typeof n.verificationUri?n.verificationUri:null),E("number"==typeof n.expiresAt?n.expiresAt:null),L(!1),O(Date.now()),W("string"==typeof n.flowId?n.flowId:null),P(!0)},V=(0,o.useCallback)(()=>{P(!1),W(null),y(null),T(null),E(null),L(!1)},[]),z=()=>{if(I){U(!1),K();return}U(!0),D(null),w||J()},K=async()=>{V(),await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"cancel"})}).catch(()=>{})};(0,o.useEffect)(()=>{if(!S)return;let n=setInterval(()=>O(Date.now()),1e3);return()=>clearInterval(n)},[S]);let $=async()=>{if(w)try{await navigator.clipboard.writeText(w),L(!0),setTimeout(()=>L(!1),2e3)}catch(n){}},Q=async()=>{F(!0),D(null);let n=await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"disconnect"})}).then(n=>n.json()).catch(()=>null);F(!1),(null==n?void 0:n.ok)&&(N(),D({kind:"disconnected"}))};return((0,o.useEffect)(()=>{null!==g&&(null==k||k(1))},[g,k]),null===g)?(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsx)("div",{className:"lbl",children:(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"conn.looking",en:a.UI.settings.connLooking})})})}):(0,s.jsx)("div",{className:"kit-card".concat(g.connected?"":" needs-row"),children:(0,s.jsxs)("div",{className:"lbl",children:[(0,s.jsx)("div",{className:"rule-list",children:(0,s.jsxs)("div",{className:"rule-row conn-row",children:[(0,s.jsxs)("span",{className:"conn-name",children:[(0,s.jsx)(l.T,{k:"connections.githubName",en:a.UI.connections.githubName}),g.connected&&g.unreadable?(0,s.jsx)("em",{className:"conn-fault",children:v("connections.githubUnreadable",a.UI.connections.githubUnreadable)}):g.connected&&g.refusal&&!b?(0,s.jsx)("em",{className:"conn-fault",children:v("conn.githubStale",a.UI.settings.connGitHubStale)}):g.connected&&g.refusal?(0,s.jsx)("em",{className:"conn-fault",children:v("conn.githubRefused",a.UI.settings.connGitHubRefused)}):g.connected&&g.verified?(0,s.jsx)("em",{className:"conn-on",children:v("conn.connected",a.UI.settings.connConnected)}):g.connected?(0,s.jsx)("em",{className:"conn-idle",children:v("connections.ghCardNever",a.UI.connections.ghCardNever)}):(0,s.jsx)("em",{className:"conn-off",children:v("conn.notConnected",a.UI.settings.connNotConnected)})]}),g.connected&&g.refusal?(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.En,{children:b?v("connections.refusedLine",a.UI.connections.refusedLine).replace("{0}",null!=(d=g.login)?d:""):v("connections.staleNoAppLine",a.UI.connections.staleNoAppLine).replace("{0}",null!=(i=g.login)?i:"")})}):g.connected&&g.unreadable?null:g.connected?(0,s.jsxs)("span",{className:"conn-path",children:[(0,s.jsx)(r.En,{children:v("connections.verifiedAs",a.UI.connections.verifiedAs).replace("{0}",null!=(u=g.login)?u:"")})," \xb7 ",(0,s.jsx)(r.En,{children:v("connections.connectedMeta",a.UI.connections.connectedMeta).replace("{0}",function(n,e,c){let s=1===e?n("connections.repoCountOne",a.UI.connections.repoCountOne):n("connections.repoCountMany",a.UI.connections.repoCountMany).replace("{0}",String(e));return!0===c?s:n("connections.repoCountFloor",a.UI.connections.repoCountFloor).replace("{0}",s)}(v,null!=(p=g.repoCount)?p:0,g.reposKnown))})," ",g.connectedAt?(0,s.jsx)(r.En,{children:(0,s.jsx)(t.fV,{ts:g.connectedAt})}):null,(null!=(h=null==(e=g.repoNames)?void 0:e.length)?h:0)>0&&(0,s.jsxs)(s.Fragment,{children:[" \xb7 ",(0,s.jsx)("button",{className:"conn-reveal","aria-expanded":G,onClick:()=>_(n=>!n),children:G?v("connections.grantedHide",a.UI.connections.grantedHide):v("connections.grantedShow",a.UI.connections.grantedShow)})]})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(l.T,{k:"connections.githubOffer",en:a.UI.connections.githubOffer})}),(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(l.T,{k:"connections.githubBlind",en:a.UI.connections.githubBlind})})]}),g.connected&&G&&(null!=(m=null==(c=g.repoNames)?void 0:c.length)?m:0)>0&&(0,s.jsxs)("div",{className:"conn-granted",children:[(0,s.jsx)(r.En,{children:(function(n){let e=new Map;for(let s of n){var c;let n=s.indexOf("/"),t=n>0?s.slice(0,n):"",o=n>0?s.slice(n+1):s;(null!=(c=e.get(t))?c:e.set(t,[]).get(t)).push(o)}return[...e.entries()]})(null!=(f=g.repoNames)?f:[]).map(n=>{let[e,c]=n;return(0,s.jsxs)("div",{className:"conn-acct",children:[(0,s.jsx)("span",{className:"conn-acct-name",children:e?v("connections.grantedAccount",a.UI.connections.grantedAccount).replace("{0}",e):null}),(0,s.jsx)("ul",{children:c.map(n=>(0,s.jsx)("li",{children:n},n))})]},e)})}),!0!==g.reposKnown&&(0,s.jsx)("span",{className:"conn-count",children:(0,s.jsx)(l.T,{k:"connections.grantedFloor",en:a.UI.connections.grantedFloor})})]}),g.connected&&g.refusal&&b?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{className:"b2",disabled:M,onClick:()=>z(),children:v("connections.githubReconnect",a.UI.connections.githubReconnect)}),(0,s.jsx)("button",{className:"b2 q danger",disabled:M,onClick:()=>void Q(),children:v("connections.disconnect",a.UI.connections.disconnect)})]}):(0,s.jsx)("button",{className:"b2 q",disabled:M,onClick:()=>g.connected?void Q():z(),children:g.connected?v("connections.disconnect",a.UI.connections.disconnect):v("connections.githubConnect",a.UI.connections.githubConnect)})]})}),I&&(!g.connected||g.refusal)&&(0,s.jsx)(x,{t:v,appReady:b,userCode:w,verificationUri:C,expiresAt:S,now:R,copied:A,waiting:H,busy:M,onCopy:$,onCancel:K}),q&&(0,s.jsx)(j,{t:v,outcome:q})]})})}function x(n){let{t:e,appReady:c,userCode:t,verificationUri:o,expiresAt:i,now:d,copied:u,waiting:p,busy:h,onCopy:m,onCancel:x}=n,j=i?function(n,e){let c=n-e;if(c<=0)return{text:"",gone:!0};let s=Math.ceil(c/1e3);if(s<60)return{text:"".concat(s," second").concat(1===s?"":"s"),gone:!1};let t=Math.ceil(s/60);return{text:"".concat(t," minute").concat(1===t?"":"s"),gone:!1}}(i,d):null;return(0,s.jsxs)("div",{className:"conn-diff conn-setup",children:[(0,s.jsx)("b",{children:(0,s.jsx)(l.T,{k:"connections.setupTitle",en:a.UI.connections.setupTitle})}),(0,s.jsx)("span",{className:"conn-lede",children:(0,s.jsx)(l.T,{k:"connections.setupLede",en:a.UI.connections.setupLede})}),c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"conn-touches",children:(0,s.jsx)(l.T,{k:"connections.setupTouches",en:a.UI.connections.setupTouches})}),t?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"conn-device",children:[(0,s.jsx)("span",{className:"conn-device-label",children:(0,s.jsx)(l.T,{k:"connections.deviceCodeLabel",en:a.UI.connections.deviceCodeLabel})}),(0,s.jsxs)("div",{className:"conn-device-row",children:[(0,s.jsx)("code",{className:"conn-device-code",children:t}),(0,s.jsx)("button",{className:"b2 q",onClick:m,"aria-live":"polite",children:u?e("connections.deviceCopied",a.UI.connections.deviceCopied):e("connections.deviceCopy",a.UI.connections.deviceCopy)})]}),o&&(0,s.jsxs)("div",{className:"conn-device-row",children:[(0,s.jsx)("span",{className:"conn-device-label",children:(0,s.jsx)(l.T,{k:"connections.deviceGoLabel",en:a.UI.connections.deviceGoLabel})}),(0,s.jsx)("a",{className:"b accent",href:o,target:"_blank",rel:"noreferrer noopener",children:(0,s.jsx)(r.B,{children:o})})]}),j&&(j.gone?(0,s.jsx)("span",{className:"error-line",children:e("connections.deviceExpired",a.UI.connections.deviceExpired)}):(0,s.jsx)("span",{className:"conn-device-clock",children:e("connections.deviceExpires",a.UI.connections.deviceExpires).replace("{0}",j.text)}))]}),(0,s.jsx)("div",{className:"conn-go",children:(0,s.jsx)("button",{className:"b2 q",onClick:x,children:(0,s.jsx)(l.T,{k:"connections.setupCancel",en:a.UI.connections.setupCancel})})})]}):(0,s.jsx)("div",{className:"conn-go",children:(0,s.jsx)("span",{className:"conn-waiting","aria-busy":h,children:(0,s.jsx)(l.T,{k:"connections.setupStarting",en:a.UI.connections.setupStarting})})}),p&&t&&(0,s.jsx)("span",{className:"conn-waiting",children:(0,s.jsx)(l.T,{k:"connections.setupWaiting",en:a.UI.connections.setupWaiting})})]}):(0,s.jsx)("span",{className:"error-line",children:(0,s.jsx)(l.T,{k:"connections.setupNoApp",en:a.UI.connections.setupNoApp})}),(0,s.jsxs)("div",{className:"conn-receipt",children:[(0,s.jsx)("b",{children:(0,s.jsx)(l.T,{k:"connections.receiptHead",en:a.UI.connections.receiptHead})}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptStored",en:a.UI.connections.receiptStored})]}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptCalls",en:a.UI.connections.receiptCalls})]}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptRefuse",en:a.UI.connections.receiptRefuse})]}),(0,s.jsxs)("span",{className:"conn-leak",children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptLeak",en:a.UI.connections.receiptLeak})]}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptBehalf",en:a.UI.connections.receiptBehalf})]})]})]})}function j(n){let{t:e,outcome:c}=n;if("ok"===c.kind){var t,o;let n=(0,d.nn)((t=e,o=c.repoNames,(0,d.DR)(o,t("connections.repoOnAccount",a.UI.connections.repoOnAccount))),d.v1.and,d.v1.comma);return(0,s.jsxs)("div",{className:"conn-diff conn-ok",children:[(0,s.jsxs)("b",{className:"conn-on",children:["✓ ",(0,s.jsx)(r.En,{children:e("connections.verifiedAs",a.UI.connections.verifiedAs).replace("{0}",c.login)})]}),c.repoNames.length>0?(0,s.jsx)("span",{children:(0,s.jsx)(r.En,{children:e("connections.verifiedSees",a.UI.connections.verifiedSees).replace("{0}",n)})}):0===c.installationCount?(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.verifiedNoInstall",en:a.UI.connections.verifiedNoInstall})}):void 0!==c.installationCount&&0===c.reposUnread?(0,s.jsx)("span",{children:(0,s.jsx)(r.En,{children:e("connections.verifiedEmptyAccount",a.UI.connections.verifiedEmptyAccount).replace("{0}",c.login)})}):(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.verifiedNone",en:a.UI.connections.verifiedNone})}),c.reposUnread>0&&(0,s.jsx)("span",{className:"conn-count",children:(0,s.jsx)(r.En,{children:e("connections.verifiedPartial",a.UI.connections.verifiedPartial).replace("{0}",String(c.reposUnread))})})]})}return"refused-write"===c.kind?(0,s.jsxs)("div",{className:"conn-diff conn-refused",children:[(0,s.jsxs)("b",{className:"conn-bad",children:["✗ ",(0,s.jsx)(l.T,{k:"connections.refusedWrite",en:a.UI.connections.refusedWrite})]}),(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.refusedWriteBody",en:a.UI.connections.refusedWriteBody})}),c.detail&&(0,s.jsx)("span",{className:"conn-count",children:(0,s.jsx)(r.B,{children:c.detail})})]}):"disconnected"===c.kind?(0,s.jsx)("div",{className:"conn-diff",children:(0,s.jsx)("span",{className:"conn-done",children:(0,s.jsx)(l.T,{k:"connections.disconnected",en:a.UI.connections.disconnected})})}):(0,s.jsx)("div",{className:"conn-diff conn-refused",children:(0,s.jsx)("span",{className:"error-line",children:(0,s.jsx)(r.En,{children:"unreached"===c.kind?c.reason:c.message})})})}var f=c(639),v=c(1551);function g(){var n,e,c,d,h;let x=(0,f.x)(),j=(0,v.$c)(null==(n=x.cfg)?void 0:n.lang),g=(n,e)=>(0,v.tr)(j,n,e),b=(null!=(c=x.events)?c:[]).filter(n=>"mcp"===n.kind),N=null===x.events?void 0:b.length,k=function(n){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e5,c=[];for(let d of n){var s,t,o,i,a,l,r;let n=null!=(s=d.caller)?s:null,u=null!=(t=d.callerState)?t:n?"named":"unrecorded",p=c[c.length-1];p&&p.caller===n&&p.state===u&&Math.abs(p.edge-d.ts)<=e?(p.rows.push(d),p.edge=d.ts,p.from=Math.min(p.from,d.ts),p.to=Math.max(p.to,d.ts),p.asks+=null!=(o=d.count)?o:1,d.tool&&p.tools.set(d.tool,(null!=(i=p.tools.get(d.tool))?i:0)+(null!=(a=d.count)?a:1))):c.push({caller:n,state:u,rows:[d],edge:d.ts,from:d.ts,to:d.ts,asks:null!=(l=d.count)?l:1,tools:new Map(d.tool?[[d.tool,null!=(r=d.count)?r:1]]:[])})}return c}(b),[I,U]=(0,o.useState)("in"),[w,y]=(0,o.useState)(!1),C=null!=(d=(0,i.DT)(x.clients))?d:void 0,[T,S]=(0,o.useState)(void 0),E=(0,i.RI)(x.clients,x.connectors);return(0,s.jsxs)(t.Ay,{active:"/connections",cockpit:x,children:[(0,s.jsxs)("div",{className:"pagebar",children:[(0,s.jsx)("h1",{children:(0,s.jsx)(l.T,{k:"connections.title",en:a.UI.connections.title})}),null!==E&&(0,s.jsx)("span",{className:"hcount",children:(0,s.jsx)(r.V,{n:E})}),(0,s.jsx)("span",{className:"purpose",children:(0,s.jsx)(l.T,{k:"connections.purpose",en:a.UI.connections.purpose})})]}),(0,s.jsx)(u.tU,{label:g("connections.title",a.UI.connections.title),active:I,onChange:U,tabs:[{id:"in",label:(0,s.jsx)(l.T,{k:"connections.secIn",en:a.UI.connections.secIn}),count:C},{id:"out",label:(0,s.jsx)(l.T,{k:"connections.secOut",en:a.UI.connections.secOut}),count:T},{id:"act",label:(0,s.jsx)(l.T,{k:"connections.secActivity",en:a.UI.connections.secActivity}),count:N}]}),(0,s.jsxs)("div",{role:"tabpanel",id:"panel-in","aria-labelledby":"tab-in",hidden:"in"!==I,children:[(0,s.jsxs)("p",{className:"promise",children:[(0,s.jsx)(l.T,{k:"connections.promise",en:a.UI.connections.promise})," ",(0,s.jsx)("button",{className:"conn-reveal","aria-expanded":w,onClick:()=>y(n=>!n),children:w?g("connections.rulesHide",a.UI.connections.rulesHide):g("connections.rulesShow",a.UI.connections.rulesShow)})]}),w&&(0,s.jsxs)("div",{className:"promise-rules",children:[(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"connections.inHelp",en:a.UI.connections.inHelp})}),(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"conn.help",en:a.UI.settings.connHelp})})]}),(0,s.jsx)(p,{lang:j,t:g,clients:x.clients,supported:x.clientsSupported,remembered:x.clientsRemembered,reload:x.readConnections})]}),(0,s.jsxs)("div",{role:"tabpanel",id:"panel-out","aria-labelledby":"tab-out",hidden:"out"!==I,children:[(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"connections.outHelp",en:a.UI.connections.outHelp})}),(0,s.jsx)(m,{t:g,state:null!=(h=null==(e=x.connectors)?void 0:e[0])?h:null,appReady:x.connectorsAppReady,reload:x.readConnectors,onCount:S})]}),"act"===I&&(0,s.jsxs)("div",{role:"tabpanel",id:"panel-act","aria-labelledby":"tab-act",children:[(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"connections.activitySub",en:a.UI.connections.activitySub})}),0===b.length?(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsx)("div",{className:"lbl",children:(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.activityNone",en:a.UI.connections.activityNone})})})}):(0,s.jsxs)("div",{className:"rule-list",children:[(0,s.jsx)("p",{className:"conn-act-law",children:(0,s.jsx)(l.T,{k:"connections.activityLaw",en:a.UI.connections.activityLaw})}),k.map(n=>{var e;return(0,s.jsxs)("div",{className:"rule-group",children:[(0,s.jsxs)("div",{className:"conn-act-head",children:["unrecorded"!==n.state&&(0,s.jsx)("span",{className:"conn-act-cat",children:"named"===n.state&&n.caller?(0,s.jsx)(r.En,{children:n.caller}):(0,s.jsx)(l.T,{k:"connections.activityUnnamed",en:a.UI.connections.activityUnnamed})}),(0,s.jsx)("span",{className:"conn-act-asks",children:g("connections.activityAsks",a.UI.connections.activityAsks(n.asks))}),[...n.tools.entries()].map(n=>{let[e,c]=n;return(0,s.jsx)("span",{className:"conn-act-tool",children:(0,s.jsx)(r.En,{children:c>1?"".concat(e," x").concat(c):e})},e)})]}),"unidentified"===n.state&&(0,s.jsx)("p",{className:"conn-act-note",children:(0,s.jsx)(l.T,{k:"connections.activityUnidentifiedNote",en:a.UI.connections.activityUnidentifiedNote})}),n.rows.map((n,e)=>{var c;return(0,s.jsxs)("div",{className:"rule-row conn-act",children:[(0,s.jsx)("span",{className:"conn-act-when",children:(0,s.jsx)(r.En,{children:(0,s.jsx)(t.fV,{ts:n.ts})})}),(0,s.jsx)("span",{className:"conn-act-what",children:(0,s.jsx)(r.En,{children:null!=(c=n.activityText)?c:n.text})})]},"".concat(n.ts,"-").concat(e))})]},"".concat(n.state,"|").concat(null!=(e=n.caller)?e:"","|").concat(n.to))})]})]})]})}},2613:(n,e,c)=>{"use strict";c.d(e,{fn:()=>p,hf:()=>u,ob:()=>d,tU:()=>h});var s=c(5155),t=c(2115),o=c(7650),i=c(436),a=c(5310),l=c(3034),r=c(797);function d(n){let{actions:e,label:c}=n,[l,d]=(0,t.useState)(!1),[u,p]=(0,t.useState)(null),h=(0,t.useRef)(null),m=(0,t.useRef)(null),x=(0,t.useId)(),j=(0,a.kj)(),f=(0,a.cO)(),v=(0,t.useCallback)(()=>{var n,e,c;let s=null==(n=h.current)?void 0:n.firstElementChild;if(!s)return;let t=s.getBoundingClientRect(),o=null!=(c=null==(e=m.current)?void 0:e.offsetHeight)?c:0,i=window.innerHeight-t.bottom,a=o>0&&i<o+8&&t.top>i;p({top:a?t.top-o-4:t.bottom+4,end:Math.max(4,window.innerWidth-t.right),flip:a})},[]);return((0,t.useLayoutEffect)(()=>{l&&v()},[l,v]),(0,t.useEffect)(()=>{if(!l)return;let n=n=>{var e,c;let s=n.target;(null==(e=h.current)?void 0:e.contains(s))||(null==(c=m.current)?void 0:c.contains(s))||d(!1)},e=n=>{"Escape"===n.key&&d(!1)},c=()=>v();return document.addEventListener("mousedown",n),document.addEventListener("keydown",e),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c),()=>{document.removeEventListener("mousedown",n),document.removeEventListener("keydown",e),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}},[l,v]),0===e.length)?null:(0,s.jsxs)("div",{className:"ovf",ref:h,children:[(0,s.jsxs)("button",{className:"ovf-btn",type:"button","aria-haspopup":"menu","aria-expanded":l,"aria-controls":x,...(0,r.uN)(f.moreActions),onClick:()=>d(n=>!n),children:[(0,s.jsx)(a.T,{k:"btn.more",en:null!=c?c:i.UI.radar.moreActions})," ",(0,s.jsx)("span",{"aria-hidden":!0,children:"▾"})]}),l&&"undefined"!=typeof document&&(0,o.createPortal)((0,s.jsx)("div",{className:"ovf-menu",id:x,role:"menu",ref:m,"aria-label":j("act.moreAria",i.UI.radar.moreActionsAria),style:u?{insetBlockStart:u.top,insetInlineEnd:u.end}:{visibility:"hidden"},children:e.map(n=>(0,s.jsxs)("button",{role:"menuitem",type:"button",...(0,r.uN)(n.title),className:n.danger?"danger":void 0,onClick:()=>{d(!1),n.onClick()},children:[n.label,n.effect&&(0,s.jsx)("span",{children:n.effect})]},n.label))}),document.body)]})}function u(n){let{done:e,total:c,working:t}=n,o=(0,a.kj)();(0,a.cO)();let r="ar"===(0,a.uU)();return c>0&&e<c?(0,s.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,s.jsx)("i",{"aria-hidden":!0}),r?(0,s.jsxs)(s.Fragment,{children:[o("stream.countingLead","")," ",(0,s.jsx)(l.V,{n:e})," ",o("stream.countingMid","")," ",(0,s.jsx)(l.V,{n:c})," ",o("stream.countingTail","")]}):i.UI.stream.counting(e,c)]}):t?(0,s.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,s.jsx)("i",{"aria-hidden":!0}),o("stream.starting",i.UI.stream.starting)]}):null}function p(n){let{view:e,onChange:c}=n,t=(0,a.kj)();return(0,a.cO)(),(0,s.jsxs)("div",{className:"viewseg",role:"group","aria-label":t("radar.viewAria",i.UI.radar.viewAria),children:[(0,s.jsx)("button",{type:"button",className:"cards"===e?"on":"","aria-pressed":"cards"===e,onClick:()=>c("cards"),children:(0,s.jsx)(a.T,{k:"btn.grid",en:i.UI.radar.viewGrid})}),(0,s.jsx)("button",{type:"button",className:"rows"===e?"on":"","aria-pressed":"rows"===e,onClick:()=>c("rows"),children:(0,s.jsx)(a.T,{k:"btn.rows",en:i.UI.radar.viewRows})})]})}function h(n){let{tabs:e,active:c,onChange:t,label:o,vertical:i}=n;return(0,s.jsx)("div",{className:"tabs".concat(i?" tabs-v":""),role:"tablist","aria-orientation":i?"vertical":void 0,"aria-label":o,children:e.map(n=>(0,s.jsxs)("button",{type:"button",role:"tab",id:"tab-".concat(n.id),className:n.id===c?"on":"","aria-selected":n.id===c,"aria-controls":"panel-".concat(n.id),onClick:()=>t(n.id),children:[n.label,void 0!==n.count&&(0,s.jsx)("span",{className:"tabn",children:n.count})]},n.id))})}},8049:(n,e,c)=>{Promise.resolve().then(c.bind(c,148))}},n=>{n.O(0,[3192,8050,8441,1255,7358],()=>n(n.s=8049)),_N_E=n.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7572],{148:(n,e,c)=>{"use strict";c.r(e),c.d(e,{default:()=>g});var s=c(5155),t=c(7406),o=c(2115),i=c(8713),a=c(436),l=c(5310),r=c(3034),d=c(8706),u=c(2613);function p(n){let{lang:e,t:c,clients:t,supported:p,remembered:m,reload:x}=n,[j,f]=(0,o.useState)(null),[v,g]=(0,o.useState)(null),[b,N]=(0,o.useState)(null),k=async(n,e)=>{g(n),N(null),f(null);let c=await fetch("/api/connections",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"connect"===e?"preview":"previewDisconnect",clientId:n})}).then(n=>n.json()).catch(()=>null);g(null),c&&(c.ok&&c.receipt?f({receipt:c.receipt}):c.refusal&&f({refusal:c.refusal}))},I=async n=>{g(n.clientId);let e=await fetch("/api/connections",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:n.action,clientId:n.clientId,digest:n.digest})}).then(n=>n.json()).catch(()=>null);if(g(null),e)if(e.ok){var c;f(null),N({label:n.label,action:n.action,backup:null!=(c=e.backupPath)?c:null}),x()}else e.refusal&&f({refusal:e.refusal})};if(null===t)return(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsx)("div",{className:"lbl",children:(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"conn.looking",en:a.UI.settings.connLooking})})})});let U=(0,i.iw)(t),w=p.filter(n=>!U.some(e=>e.id===n.id)),y=(0,d.nn)(w.map(n=>n.label),d.v1.and,d.v1.comma);return(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsxs)("div",{className:"lbl",children:[0===U.length?(0,s.jsx)("span",{children:c("conn.none",a.UI.settings.connNone)}):(0,s.jsxs)("div",{className:"rule-list",children:[U.map(n=>{let e="malformed"===n.state||"unreadable"===n.state,t=!n.connected&&!e&&!1!==n.verified&&!!n.elsewhere,o=!n.connected&&!e&&!1===n.verified,i=!n.connected&&!e&&!1!==n.verified&&!!n.oldShape,d=!n.connected&&!e&&!t&&!o&&!i&&m.includes(n.id);return(0,s.jsxs)("div",{className:"rule-row conn-row",children:[(0,s.jsxs)("span",{className:"conn-name",children:[n.label,n.connected?(0,s.jsx)("em",{className:"conn-on",children:c("conn.connected",a.UI.settings.connConnected)}):e?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.unreadable",a.UI.settings.connUnreadable)}):t?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.elsewhere",a.UI.settings.connElsewhere)}):i?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.oldShape",a.UI.settings.connOldShape)}):o?(0,s.jsx)("em",{className:"conn-fault",children:c("conn.unverified",a.UI.settings.connUnverified)}):(0,s.jsx)("em",{className:"conn-off",children:c("conn.notConnected",a.UI.settings.connNotConnected)})]}),(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:n.configPath})}),n.connected?(0,s.jsx)(u.ob,{actions:[{label:c("conn.disconnect",a.UI.settings.connDisconnect),onClick:()=>k(n.id,"disconnect"),danger:!0}]}):(0,s.jsx)("button",{className:"b2 q",disabled:v===n.id,onClick:()=>k(n.id,"connect"),children:d||i?c("conn.reconnect",a.UI.settings.connReconnect):"".concat(c("conn.connect",a.UI.settings.connConnect)," ").concat(n.label)}),d&&(0,s.jsx)("span",{className:"conn-dropped",children:c("conn.dropped",a.UI.settings.connDropped).replace("{0}",n.label)}),t&&(0,s.jsx)("span",{className:"conn-dropped",children:(0,s.jsx)(r.B,{children:n.elsewhere})}),i&&n.entryCommand&&(0,s.jsx)("span",{className:"conn-dropped",children:(0,s.jsx)(r.B,{children:n.entryCommand})}),o&&n.reason&&(0,s.jsx)("span",{className:"conn-dropped",children:n.reason}),j&&"receipt"in j&&j.receipt.clientId===n.id&&(0,s.jsx)(h,{r:j.receipt,t:c,busy:v===j.receipt.clientId,onConfirm:()=>I(j.receipt),onCancel:()=>f(null)}),j&&"refusal"in j&&j.refusal.clientId===n.id&&(0,s.jsxs)("div",{className:"conn-diff conn-refused",children:[(0,s.jsx)("b",{children:c("conn.refused",a.UI.settings.connRefused)}),(0,s.jsx)("span",{className:"error-line",children:j.refusal.reason}),j.refusal.configPath&&(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:j.refusal.configPath})}),(0,s.jsx)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:8},children:(0,s.jsx)("button",{className:"b2 q",onClick:()=>f(null),children:(0,s.jsx)(l.T,{k:"btn.done",en:a.UI.common.done})})})]})]},n.id)}),w.length>0&&(0,s.jsx)("span",{className:"conn-also",children:c("conn.alsoWorks",a.UI.settings.connAlsoWorks).replace("{0}",y)})]}),j&&"refusal"in j&&!U.some(n=>n.id===j.refusal.clientId)&&(0,s.jsxs)("div",{className:"conn-diff conn-refused",children:[(0,s.jsx)("b",{children:c("conn.refused",a.UI.settings.connRefused)}),(0,s.jsx)("span",{className:"error-line",children:j.refusal.reason}),j.refusal.configPath&&(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:j.refusal.configPath})}),(0,s.jsx)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:8},children:(0,s.jsx)("button",{className:"b2 q",onClick:()=>f(null),children:(0,s.jsx)(l.T,{k:"btn.done",en:a.UI.common.done})})})]}),b&&(0,s.jsxs)("span",{className:"conn-done",children:[("connect"===b.action?c("conn.wrote",a.UI.settings.connWrote):c("conn.removed",a.UI.settings.connRemoved)).replace("{0}",b.label),b.backup?" ".concat(c("conn.backupAt",a.UI.settings.connBackupAt).replace("{0}",b.backup)):"","connect"===b.action&&(0,s.jsx)("b",{className:"conn-step",children:c("conn.restart",a.UI.settings.connRestart).replace("{0}",b.label)})]})]})})}function h(n){let{r:e,t:c,busy:t,onConfirm:o,onCancel:i}=n;return(0,s.jsxs)("div",{className:"conn-diff",children:[(0,s.jsx)("b",{children:("connect"!==e.action?c("conn.willRemove",a.UI.settings.connWillRemove):"repoint"===e.kind?c("conn.willRepoint",a.UI.settings.connWillRepoint):c("conn.willWrite",a.UI.settings.connWillWrite)).replace("{0}",e.label)}),(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.B,{children:e.configPath})}),(0,s.jsx)("span",{className:"conn-count",children:c("conn.lineCount",a.UI.settings.connLineCount).replace("{0}",String(e.added)).replace("{1}",String(e.removed)).replace("{2}",String(e.startLine))}),(0,s.jsx)("pre",{className:"conn-lines",dir:"ltr",children:e.lines.map((n,e)=>(0,s.jsxs)("span",{className:"+"===n.sign?"dl-add":"-"===n.sign?"dl-del":"dl-ctx",children:[n.sign,n.text,"\n"]},e))}),e.willBackupTo&&(0,s.jsx)("span",{className:"conn-backup",children:c("conn.willBackup",a.UI.settings.connWillBackup).replace("{0}",e.willBackupTo)}),e.running&&(0,s.jsx)("span",{className:"conn-warn",children:c("conn.running",a.UI.settings.connRunning).replace("{0}",e.label)}),(0,s.jsxs)("div",{className:"setup-actions",style:{justifyContent:"flex-start",marginBlockStart:8},children:[(0,s.jsx)("button",{className:"b".concat("connect"===e.action?"":" danger"),disabled:t,onClick:o,children:"connect"===e.action?c("conn.confirmWrite",a.UI.settings.connConfirmWrite):c("conn.confirmRemove",a.UI.settings.connConfirmRemove)}),(0,s.jsx)("button",{className:"b2 q",disabled:t,onClick:i,children:(0,s.jsx)(l.T,{k:"btn.cancel",en:a.UI.common.cancel})})]})]})}function m(n){var e,c,i,d,u,p,h,m,f;let{t:v,state:g,appReady:b,reload:N,onCount:k}=n,[I,U]=(0,o.useState)(!1),[w,y]=(0,o.useState)(null),[C,T]=(0,o.useState)(null),[S,E]=(0,o.useState)(null),[A,L]=(0,o.useState)(!1),[R,O]=(0,o.useState)(()=>Date.now()),[B,W]=(0,o.useState)(null),[H,P]=(0,o.useState)(!1),[M,F]=(0,o.useState)(!1),[q,D]=(0,o.useState)(null),[G,_]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!H)return;let n=!1,e=async()=>{var e,c;let s=await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"status",flowId:B})}).then(n=>n.json()).catch(()=>null);if(!n&&(null==s?void 0:s.ok)){if("idle"===s.phase){V(),U(!1),D({kind:"unreached",reason:"af360 is no longer waiting for GitHub's answer, and nothing was stored - press Connect GitHub to start again."});return}"done"===s.phase&&(V(),U(!1),N(),"ok"===s.outcome?D({kind:"ok",login:s.login,repoNames:Array.isArray(s.repoNames)?s.repoNames:[],reposUnread:Number(s.reposUnread)||0,installationCount:"number"==typeof s.installationCount?s.installationCount:void 0}):"refused-write"===s.outcome?D({kind:"refused-write",detail:String(null!=(e=s.detail)?e:"")}):D({kind:"unreached",reason:String(null!=(c=s.reason)?c:"The authorization did not complete.")}))}},c=setInterval(()=>{e()},1500);return()=>{n=!0,clearInterval(c)}},[H,B]);let J=async()=>{if(M)return;F(!0),D(null);let n=await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"begin"})}).then(n=>n.json()).catch(()=>null);if(F(!1),!(null==n?void 0:n.ok)){var e;D({kind:"error",message:String(null!=(e=null==n?void 0:n.message)?e:"af360 could not start the authorization.")});return}y("string"==typeof n.userCode?n.userCode:null),T("string"==typeof n.verificationUri?n.verificationUri:null),E("number"==typeof n.expiresAt?n.expiresAt:null),L(!1),O(Date.now()),W("string"==typeof n.flowId?n.flowId:null),P(!0)},V=(0,o.useCallback)(()=>{P(!1),W(null),y(null),T(null),E(null),L(!1)},[]),z=()=>{if(I){U(!1),K();return}U(!0),D(null),w||J()},K=async()=>{V(),await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"cancel"})}).catch(()=>{})};(0,o.useEffect)(()=>{if(!S)return;let n=setInterval(()=>O(Date.now()),1e3);return()=>clearInterval(n)},[S]);let $=async()=>{if(w)try{await navigator.clipboard.writeText(w),L(!0),setTimeout(()=>L(!1),2e3)}catch(n){}},Q=async()=>{F(!0),D(null);let n=await fetch("/api/connectors/github",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"disconnect"})}).then(n=>n.json()).catch(()=>null);F(!1),(null==n?void 0:n.ok)&&(N(),D({kind:"disconnected"}))};return((0,o.useEffect)(()=>{null!==g&&(null==k||k(1))},[g,k]),null===g)?(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsx)("div",{className:"lbl",children:(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"conn.looking",en:a.UI.settings.connLooking})})})}):(0,s.jsx)("div",{className:"kit-card".concat(g.connected?"":" needs-row"),children:(0,s.jsxs)("div",{className:"lbl",children:[(0,s.jsx)("div",{className:"rule-list",children:(0,s.jsxs)("div",{className:"rule-row conn-row",children:[(0,s.jsxs)("span",{className:"conn-name",children:[(0,s.jsx)(l.T,{k:"connections.githubName",en:a.UI.connections.githubName}),g.connected&&g.unreadable?(0,s.jsx)("em",{className:"conn-fault",children:v("connections.githubUnreadable",a.UI.connections.githubUnreadable)}):g.connected&&g.refusal&&!b?(0,s.jsx)("em",{className:"conn-fault",children:v("conn.githubStale",a.UI.settings.connGitHubStale)}):g.connected&&g.refusal?(0,s.jsx)("em",{className:"conn-fault",children:v("conn.githubRefused",a.UI.settings.connGitHubRefused)}):g.connected&&g.verified?(0,s.jsx)("em",{className:"conn-on",children:v("conn.connected",a.UI.settings.connConnected)}):g.connected?(0,s.jsx)("em",{className:"conn-idle",children:v("connections.ghCardNever",a.UI.connections.ghCardNever)}):(0,s.jsx)("em",{className:"conn-off",children:v("conn.notConnected",a.UI.settings.connNotConnected)})]}),g.connected&&g.refusal?(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(r.En,{children:b?v("connections.refusedLine",a.UI.connections.refusedLine).replace("{0}",null!=(d=g.login)?d:""):v("connections.staleNoAppLine",a.UI.connections.staleNoAppLine).replace("{0}",null!=(i=g.login)?i:"")})}):g.connected&&g.unreadable?null:g.connected?(0,s.jsxs)("span",{className:"conn-path",children:[(0,s.jsx)(r.En,{children:v("connections.verifiedAs",a.UI.connections.verifiedAs).replace("{0}",null!=(u=g.login)?u:"")})," \xb7 ",(0,s.jsx)(r.En,{children:v("connections.connectedMeta",a.UI.connections.connectedMeta).replace("{0}",function(n,e,c){let s=1===e?n("connections.repoCountOne",a.UI.connections.repoCountOne):n("connections.repoCountMany",a.UI.connections.repoCountMany).replace("{0}",String(e));return!0===c?s:n("connections.repoCountFloor",a.UI.connections.repoCountFloor).replace("{0}",s)}(v,null!=(p=g.repoCount)?p:0,g.reposKnown))})," ",g.connectedAt?(0,s.jsx)(r.En,{children:(0,s.jsx)(t.fV,{ts:g.connectedAt})}):null,(null!=(h=null==(e=g.repoNames)?void 0:e.length)?h:0)>0&&(0,s.jsxs)(s.Fragment,{children:[" \xb7 ",(0,s.jsx)("button",{className:"conn-reveal","aria-expanded":G,onClick:()=>_(n=>!n),children:G?v("connections.grantedHide",a.UI.connections.grantedHide):v("connections.grantedShow",a.UI.connections.grantedShow)})]})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(l.T,{k:"connections.githubOffer",en:a.UI.connections.githubOffer})}),(0,s.jsx)("span",{className:"conn-path",children:(0,s.jsx)(l.T,{k:"connections.githubBlind",en:a.UI.connections.githubBlind})})]}),g.connected&&G&&(null!=(m=null==(c=g.repoNames)?void 0:c.length)?m:0)>0&&(0,s.jsxs)("div",{className:"conn-granted",children:[(0,s.jsx)(r.En,{children:(function(n){let e=new Map;for(let s of n){var c;let n=s.indexOf("/"),t=n>0?s.slice(0,n):"",o=n>0?s.slice(n+1):s;(null!=(c=e.get(t))?c:e.set(t,[]).get(t)).push(o)}return[...e.entries()]})(null!=(f=g.repoNames)?f:[]).map(n=>{let[e,c]=n;return(0,s.jsxs)("div",{className:"conn-acct",children:[(0,s.jsx)("span",{className:"conn-acct-name",children:e?v("connections.grantedAccount",a.UI.connections.grantedAccount).replace("{0}",e):null}),(0,s.jsx)("ul",{children:c.map(n=>(0,s.jsx)("li",{children:n},n))})]},e)})}),!0!==g.reposKnown&&(0,s.jsx)("span",{className:"conn-count",children:(0,s.jsx)(l.T,{k:"connections.grantedFloor",en:a.UI.connections.grantedFloor})})]}),g.connected&&g.refusal&&b?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{className:"b2",disabled:M,onClick:()=>z(),children:v("connections.githubReconnect",a.UI.connections.githubReconnect)}),(0,s.jsx)("button",{className:"b2 q danger",disabled:M,onClick:()=>void Q(),children:v("connections.disconnect",a.UI.connections.disconnect)})]}):(0,s.jsx)("button",{className:"b2 q",disabled:M,onClick:()=>g.connected?void Q():z(),children:g.connected?v("connections.disconnect",a.UI.connections.disconnect):v("connections.githubConnect",a.UI.connections.githubConnect)})]})}),I&&(!g.connected||g.refusal)&&(0,s.jsx)(x,{t:v,appReady:b,userCode:w,verificationUri:C,expiresAt:S,now:R,copied:A,waiting:H,busy:M,onCopy:$,onCancel:K}),q&&(0,s.jsx)(j,{t:v,outcome:q})]})})}function x(n){let{t:e,appReady:c,userCode:t,verificationUri:o,expiresAt:i,now:d,copied:u,waiting:p,busy:h,onCopy:m,onCancel:x}=n,j=i?function(n,e){let c=n-e;if(c<=0)return{text:"",gone:!0};let s=Math.ceil(c/1e3);if(s<60)return{text:"".concat(s," second").concat(1===s?"":"s"),gone:!1};let t=Math.ceil(s/60);return{text:"".concat(t," minute").concat(1===t?"":"s"),gone:!1}}(i,d):null;return(0,s.jsxs)("div",{className:"conn-diff conn-setup",children:[(0,s.jsx)("b",{children:(0,s.jsx)(l.T,{k:"connections.setupTitle",en:a.UI.connections.setupTitle})}),(0,s.jsx)("span",{className:"conn-lede",children:(0,s.jsx)(l.T,{k:"connections.setupLede",en:a.UI.connections.setupLede})}),c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"conn-touches",children:(0,s.jsx)(l.T,{k:"connections.setupTouches",en:a.UI.connections.setupTouches})}),t?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"conn-device",children:[(0,s.jsx)("span",{className:"conn-device-label",children:(0,s.jsx)(l.T,{k:"connections.deviceCodeLabel",en:a.UI.connections.deviceCodeLabel})}),(0,s.jsxs)("div",{className:"conn-device-row",children:[(0,s.jsx)("code",{className:"conn-device-code",children:t}),(0,s.jsx)("button",{className:"b2 q",onClick:m,"aria-live":"polite",children:u?e("connections.deviceCopied",a.UI.connections.deviceCopied):e("connections.deviceCopy",a.UI.connections.deviceCopy)})]}),o&&(0,s.jsxs)("div",{className:"conn-device-row",children:[(0,s.jsx)("span",{className:"conn-device-label",children:(0,s.jsx)(l.T,{k:"connections.deviceGoLabel",en:a.UI.connections.deviceGoLabel})}),(0,s.jsx)("a",{className:"b accent",href:o,target:"_blank",rel:"noreferrer noopener",children:(0,s.jsx)(r.B,{children:o})})]}),j&&(j.gone?(0,s.jsx)("span",{className:"error-line",children:e("connections.deviceExpired",a.UI.connections.deviceExpired)}):(0,s.jsx)("span",{className:"conn-device-clock",children:e("connections.deviceExpires",a.UI.connections.deviceExpires).replace("{0}",j.text)}))]}),(0,s.jsx)("div",{className:"conn-go",children:(0,s.jsx)("button",{className:"b2 q",onClick:x,children:(0,s.jsx)(l.T,{k:"connections.setupCancel",en:a.UI.connections.setupCancel})})})]}):(0,s.jsx)("div",{className:"conn-go",children:(0,s.jsx)("span",{className:"conn-waiting","aria-busy":h,children:(0,s.jsx)(l.T,{k:"connections.setupStarting",en:a.UI.connections.setupStarting})})}),p&&t&&(0,s.jsx)("span",{className:"conn-waiting",children:(0,s.jsx)(l.T,{k:"connections.setupWaiting",en:a.UI.connections.setupWaiting})})]}):(0,s.jsx)("span",{className:"error-line",children:(0,s.jsx)(l.T,{k:"connections.setupNoApp",en:a.UI.connections.setupNoApp})}),(0,s.jsxs)("div",{className:"conn-receipt",children:[(0,s.jsx)("b",{children:(0,s.jsx)(l.T,{k:"connections.receiptHead",en:a.UI.connections.receiptHead})}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptStored",en:a.UI.connections.receiptStored})]}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptCalls",en:a.UI.connections.receiptCalls})]}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptRefuse",en:a.UI.connections.receiptRefuse})]}),(0,s.jsxs)("span",{className:"conn-leak",children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptLeak",en:a.UI.connections.receiptLeak})]}),(0,s.jsxs)("span",{children:["\xb7 ",(0,s.jsx)(l.T,{k:"connections.receiptBehalf",en:a.UI.connections.receiptBehalf})]})]})]})}function j(n){let{t:e,outcome:c}=n;if("ok"===c.kind){var t,o;let n=(0,d.nn)((t=e,o=c.repoNames,(0,d.DR)(o,t("connections.repoOnAccount",a.UI.connections.repoOnAccount))),d.v1.and,d.v1.comma);return(0,s.jsxs)("div",{className:"conn-diff conn-ok",children:[(0,s.jsxs)("b",{className:"conn-on",children:["✓ ",(0,s.jsx)(r.En,{children:e("connections.verifiedAs",a.UI.connections.verifiedAs).replace("{0}",c.login)})]}),c.repoNames.length>0?(0,s.jsx)("span",{children:(0,s.jsx)(r.En,{children:e("connections.verifiedSees",a.UI.connections.verifiedSees).replace("{0}",n)})}):0===c.installationCount?(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.verifiedNoInstall",en:a.UI.connections.verifiedNoInstall})}):void 0!==c.installationCount&&0===c.reposUnread?(0,s.jsx)("span",{children:(0,s.jsx)(r.En,{children:e("connections.verifiedEmptyAccount",a.UI.connections.verifiedEmptyAccount).replace("{0}",c.login)})}):(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.verifiedNone",en:a.UI.connections.verifiedNone})}),c.reposUnread>0&&(0,s.jsx)("span",{className:"conn-count",children:(0,s.jsx)(r.En,{children:e("connections.verifiedPartial",a.UI.connections.verifiedPartial).replace("{0}",String(c.reposUnread))})})]})}return"refused-write"===c.kind?(0,s.jsxs)("div",{className:"conn-diff conn-refused",children:[(0,s.jsxs)("b",{className:"conn-bad",children:["✗ ",(0,s.jsx)(l.T,{k:"connections.refusedWrite",en:a.UI.connections.refusedWrite})]}),(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.refusedWriteBody",en:a.UI.connections.refusedWriteBody})}),c.detail&&(0,s.jsx)("span",{className:"conn-count",children:(0,s.jsx)(r.B,{children:c.detail})})]}):"disconnected"===c.kind?(0,s.jsx)("div",{className:"conn-diff",children:(0,s.jsx)("span",{className:"conn-done",children:(0,s.jsx)(l.T,{k:"connections.disconnected",en:a.UI.connections.disconnected})})}):(0,s.jsx)("div",{className:"conn-diff conn-refused",children:(0,s.jsx)("span",{className:"error-line",children:(0,s.jsx)(r.En,{children:"unreached"===c.kind?c.reason:c.message})})})}var f=c(639),v=c(1551);function g(){var n,e,c,d,h;let x=(0,f.x)(),j=(0,v.$c)(null==(n=x.cfg)?void 0:n.lang),g=(n,e)=>(0,v.tr)(j,n,e),b=(null!=(c=x.events)?c:[]).filter(n=>"mcp"===n.kind),N=null===x.events?void 0:b.length,k=function(n){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e5,c=[];for(let d of n){var s,t,o,i,a,l,r;let n=null!=(s=d.caller)?s:null,u=null!=(t=d.callerState)?t:n?"named":"unrecorded",p=c[c.length-1];p&&p.caller===n&&p.state===u&&Math.abs(p.edge-d.ts)<=e?(p.rows.push(d),p.edge=d.ts,p.from=Math.min(p.from,d.ts),p.to=Math.max(p.to,d.ts),p.asks+=null!=(o=d.count)?o:1,d.tool&&p.tools.set(d.tool,(null!=(i=p.tools.get(d.tool))?i:0)+(null!=(a=d.count)?a:1))):c.push({caller:n,state:u,rows:[d],edge:d.ts,from:d.ts,to:d.ts,asks:null!=(l=d.count)?l:1,tools:new Map(d.tool?[[d.tool,null!=(r=d.count)?r:1]]:[])})}return c}(b),[I,U]=(0,o.useState)("in"),[w,y]=(0,o.useState)(!1),C=null!=(d=(0,i.DT)(x.clients))?d:void 0,[T,S]=(0,o.useState)(void 0),E=(0,i.RI)(x.clients,x.connectors);return(0,s.jsxs)(t.Ay,{active:"/connections",cockpit:x,children:[(0,s.jsxs)("div",{className:"pagebar",children:[(0,s.jsx)("h1",{children:(0,s.jsx)(l.T,{k:"connections.title",en:a.UI.connections.title})}),null!==E&&(0,s.jsx)("span",{className:"hcount",children:(0,s.jsx)(r.V,{n:E})}),(0,s.jsx)("span",{className:"purpose",children:(0,s.jsx)(l.T,{k:"connections.purpose",en:a.UI.connections.purpose})})]}),(0,s.jsx)(u.tU,{label:g("connections.title",a.UI.connections.title),active:I,onChange:U,tabs:[{id:"in",label:(0,s.jsx)(l.T,{k:"connections.secIn",en:a.UI.connections.secIn}),count:C},{id:"out",label:(0,s.jsx)(l.T,{k:"connections.secOut",en:a.UI.connections.secOut}),count:T},{id:"act",label:(0,s.jsx)(l.T,{k:"connections.secActivity",en:a.UI.connections.secActivity}),count:N}]}),(0,s.jsxs)("div",{role:"tabpanel",id:"panel-in","aria-labelledby":"tab-in",hidden:"in"!==I,children:[(0,s.jsxs)("p",{className:"promise",children:[(0,s.jsx)(l.T,{k:"connections.promise",en:a.UI.connections.promise})," ",(0,s.jsx)("button",{className:"conn-reveal","aria-expanded":w,onClick:()=>y(n=>!n),children:w?g("connections.rulesHide",a.UI.connections.rulesHide):g("connections.rulesShow",a.UI.connections.rulesShow)})]}),w&&(0,s.jsxs)("div",{className:"promise-rules",children:[(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"connections.inHelp",en:a.UI.connections.inHelp})}),(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"conn.help",en:a.UI.settings.connHelp})})]}),(0,s.jsx)(p,{lang:j,t:g,clients:x.clients,supported:x.clientsSupported,remembered:x.clientsRemembered,reload:x.readConnections})]}),(0,s.jsxs)("div",{role:"tabpanel",id:"panel-out","aria-labelledby":"tab-out",hidden:"out"!==I,children:[(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"connections.outHelp",en:a.UI.connections.outHelp})}),(0,s.jsx)(m,{t:g,state:null!=(h=null==(e=x.connectors)?void 0:e[0])?h:null,appReady:x.connectorsAppReady,reload:x.readConnectors,onCount:S})]}),"act"===I&&(0,s.jsxs)("div",{role:"tabpanel",id:"panel-act","aria-labelledby":"tab-act",children:[(0,s.jsx)("p",{className:"meta",children:(0,s.jsx)(l.T,{k:"connections.activitySub",en:a.UI.connections.activitySub})}),0===b.length?(0,s.jsx)("div",{className:"kit-card",children:(0,s.jsx)("div",{className:"lbl",children:(0,s.jsx)("span",{children:(0,s.jsx)(l.T,{k:"connections.activityNone",en:a.UI.connections.activityNone})})})}):(0,s.jsxs)("div",{className:"rule-list",children:[(0,s.jsx)("p",{className:"conn-act-law",children:(0,s.jsx)(l.T,{k:"connections.activityLaw",en:a.UI.connections.activityLaw})}),k.map(n=>{var e;return(0,s.jsxs)("div",{className:"rule-group",children:[(0,s.jsxs)("div",{className:"conn-act-head",children:["unrecorded"!==n.state&&(0,s.jsx)("span",{className:"conn-act-cat",children:"named"===n.state&&n.caller?(0,s.jsx)(r.En,{children:n.caller}):(0,s.jsx)(l.T,{k:"connections.activityUnnamed",en:a.UI.connections.activityUnnamed})}),(0,s.jsx)("span",{className:"conn-act-asks",children:g("connections.activityAsks",a.UI.connections.activityAsks(n.asks))}),[...n.tools.entries()].map(n=>{let[e,c]=n;return(0,s.jsx)("span",{className:"conn-act-tool",children:(0,s.jsx)(r.En,{children:c>1?"".concat(e," x").concat(c):e})},e)})]}),"unidentified"===n.state&&(0,s.jsx)("p",{className:"conn-act-note",children:(0,s.jsx)(l.T,{k:"connections.activityUnidentifiedNote",en:a.UI.connections.activityUnidentifiedNote})}),n.rows.map((n,e)=>{var c;return(0,s.jsxs)("div",{className:"rule-row conn-act",children:[(0,s.jsx)("span",{className:"conn-act-when",children:(0,s.jsx)(r.En,{children:(0,s.jsx)(t.fV,{ts:n.ts})})}),(0,s.jsx)("span",{className:"conn-act-what",children:(0,s.jsx)(r.En,{children:null!=(c=n.activityText)?c:n.text})})]},"".concat(n.ts,"-").concat(e))})]},"".concat(n.state,"|").concat(null!=(e=n.caller)?e:"","|").concat(n.to))})]})]})]})}},2613:(n,e,c)=>{"use strict";c.d(e,{fn:()=>p,hf:()=>u,ob:()=>d,tU:()=>h});var s=c(5155),t=c(2115),o=c(7650),i=c(436),a=c(5310),l=c(3034),r=c(797);function d(n){let{actions:e,label:c}=n,[l,d]=(0,t.useState)(!1),[u,p]=(0,t.useState)(null),h=(0,t.useRef)(null),m=(0,t.useRef)(null),x=(0,t.useId)(),j=(0,a.kj)(),f=(0,a.cO)(),v=(0,t.useCallback)(()=>{var n,e,c;let s=null==(n=h.current)?void 0:n.firstElementChild;if(!s)return;let t=s.getBoundingClientRect(),o=null!=(c=null==(e=m.current)?void 0:e.offsetHeight)?c:0,i=window.innerHeight-t.bottom,a=o>0&&i<o+8&&t.top>i;p({top:a?t.top-o-4:t.bottom+4,end:Math.max(4,window.innerWidth-t.right),flip:a})},[]);return((0,t.useLayoutEffect)(()=>{l&&v()},[l,v]),(0,t.useEffect)(()=>{if(!l)return;let n=n=>{var e,c;let s=n.target;(null==(e=h.current)?void 0:e.contains(s))||(null==(c=m.current)?void 0:c.contains(s))||d(!1)},e=n=>{"Escape"===n.key&&d(!1)},c=()=>v();return document.addEventListener("mousedown",n),document.addEventListener("keydown",e),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c),()=>{document.removeEventListener("mousedown",n),document.removeEventListener("keydown",e),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}},[l,v]),0===e.length)?null:(0,s.jsxs)("div",{className:"ovf",ref:h,children:[(0,s.jsxs)("button",{className:"ovf-btn",type:"button","aria-haspopup":"menu","aria-expanded":l,"aria-controls":x,...(0,r.uN)(f.moreActions),onClick:()=>d(n=>!n),children:[(0,s.jsx)(a.T,{k:"btn.more",en:null!=c?c:i.UI.radar.moreActions})," ",(0,s.jsx)("span",{"aria-hidden":!0,children:"▾"})]}),l&&"undefined"!=typeof document&&(0,o.createPortal)((0,s.jsx)("div",{className:"ovf-menu",id:x,role:"menu",ref:m,"aria-label":j("act.moreAria",i.UI.radar.moreActionsAria),style:u?{insetBlockStart:u.top,insetInlineEnd:u.end}:{visibility:"hidden"},children:e.map(n=>(0,s.jsxs)("button",{role:"menuitem",type:"button",...(0,r.uN)(n.title),className:n.danger?"danger":void 0,onClick:()=>{d(!1),n.onClick()},children:[n.label,n.effect&&(0,s.jsx)("span",{children:n.effect})]},n.label))}),document.body)]})}function u(n){let{done:e,total:c,working:t}=n,o=(0,a.kj)();(0,a.cO)();let r="ar"===(0,a.uU)();return c>0&&e<c?(0,s.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,s.jsx)("i",{"aria-hidden":!0}),r?(0,s.jsxs)(s.Fragment,{children:[o("stream.countingLead","")," ",(0,s.jsx)(l.V,{n:e})," ",o("stream.countingMid","")," ",(0,s.jsx)(l.V,{n:c})," ",o("stream.countingTail","")]}):i.UI.stream.counting(e,c)]}):t?(0,s.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,s.jsx)("i",{"aria-hidden":!0}),o("stream.starting",i.UI.stream.starting)]}):null}function p(n){let{view:e,onChange:c}=n,t=(0,a.kj)();return(0,a.cO)(),(0,s.jsxs)("div",{className:"viewseg",role:"group","aria-label":t("radar.viewAria",i.UI.radar.viewAria),children:[(0,s.jsx)("button",{type:"button",className:"cards"===e?"on":"","aria-pressed":"cards"===e,onClick:()=>c("cards"),children:(0,s.jsx)(a.T,{k:"btn.grid",en:i.UI.radar.viewGrid})}),(0,s.jsx)("button",{type:"button",className:"rows"===e?"on":"","aria-pressed":"rows"===e,onClick:()=>c("rows"),children:(0,s.jsx)(a.T,{k:"btn.rows",en:i.UI.radar.viewRows})})]})}function h(n){let{tabs:e,active:c,onChange:t,label:o,vertical:i}=n;return(0,s.jsx)("div",{className:"tabs".concat(i?" tabs-v":""),role:"tablist","aria-orientation":i?"vertical":void 0,"aria-label":o,children:e.map(n=>(0,s.jsxs)("button",{type:"button",role:"tab",id:"tab-".concat(n.id),className:n.id===c?"on":"","aria-selected":n.id===c,"aria-controls":"panel-".concat(n.id),onClick:()=>t(n.id),children:[n.label,void 0!==n.count&&(0,s.jsx)("span",{className:"tabn",children:n.count})]},n.id))})}},8049:(n,e,c)=>{Promise.resolve().then(c.bind(c,148))}},n=>{n.O(0,[2619,3192,8050,8441,1255,7358],()=>n(n.s=8049)),_N_E=n.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6839],{1163:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>y});var t=a(5155),i=a(7406),n=a(5623),r=a(639),d=a(2613),o=a(7897),c=a(1551),l=a(9712),h=a(436),m=a(5310),u=a(3034),p=a(6400),b=a(797);let g=["time-capsule","safety","money","identity","health","site"];function y(){var e,s;let a=(0,r.x)(),{insights:y,insightsMuted:v,insightsPending:f,insightsDeepTotal:w,insightsFailed:j,demo:x}=a,k=(0,c.$c)(null==(e=a.cfg)?void 0:e.lang),N=(e,s)=>(0,c.tr)(k,e,s),D=(0,m.qN)(k),T=null!=(s=a.views.discoveries)?s:"cards",I=(0,p.yr)(y),S=g.map(e=>({cat:e,items:I.filter(s=>s.cat===e)})).filter(e=>e.items.length>0),U=I.length,R=(0,p.ZT)(y).length;return(0,t.jsxs)(i.Ay,{active:"/discoveries",cockpit:a,children:[(0,t.jsxs)("div",{className:"pagebar",children:[(0,t.jsx)("h1",{children:(0,t.jsx)(m.T,{k:"room.discoveries",en:h.UI.discoveries.title})}),(0,t.jsx)("span",{className:"purpose",...(0,b.uN)(D.estate),children:(0,t.jsx)(m.T,{k:"disc.purpose",en:h.UI.discoveries.purpose})}),(0,t.jsxs)("div",{className:"tools",style:{marginInlineStart:"auto"},children:[(0,t.jsx)(o.aA,{view:T,onChange:e=>a.setView("discoveries",e)}),(0,t.jsx)("a",{className:"scan",style:{textDecoration:"none"},href:"/radar",children:(0,t.jsx)(m.T,{k:"btn.backToRadar",en:h.UI.discoveries.backToRadar})})]})]}),x&&(0,t.jsxs)("p",{className:"banner",children:[N("banner.discLead",h.UI.discoveries.bannerLead)," ",(0,t.jsx)("a",{className:"link",href:"/radar",children:N("banner.radarLink",h.UI.discoveries.bannerLink)})," ",N("banner.discTail",h.UI.discoveries.bannerTail)]}),y?0===U&&0===R&&0===v.length&&0===f&&0===j.length?(0,t.jsxs)("div",{className:"empty",children:[(0,t.jsx)("p",{className:"invite",children:N("disc.emptyInvite",h.UI.discoveries.emptyInvite)}),(0,t.jsx)("p",{children:N("disc.emptyLine",h.UI.discoveries.emptyLine)}),(0,t.jsx)("a",{className:"btn primary",href:"/radar",children:N("btn.goRadar",h.UI.discoveries.goRadar)})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(d.hf,{done:w-f,total:w}),(0,t.jsx)(p.LZ,{cockpit:a}),(0,t.jsx)("div",{className:"disc-groups",children:S.map(e=>(0,t.jsxs)("section",{className:"disc-group",children:[(0,t.jsxs)("div",{className:"sec",children:[(0,t.jsx)("h2",{children:(0,t.jsx)(m.T,{k:"cat.".concat(e.cat),en:h.UI.discoveries.cat[e.cat]})}),(0,t.jsx)("span",{className:"meta",children:(0,t.jsx)(u.V,{n:e.items.length})})]}),"cards"===T?(0,t.jsx)("div",{className:"grid three",children:e.items.map(e=>(0,t.jsx)(n.JF,{d:e,cockpit:a},e.id))}):(0,t.jsx)("div",{className:"wk",children:e.items.map(e=>(0,t.jsx)(n.rO,{d:e,cockpit:a},e.id))})]},e.cat))}),j.length>0&&(0,t.jsxs)("div",{className:"disc-muted-panel",style:{marginBlockStart:18},children:[(0,t.jsx)("div",{className:"k",...(0,b.uN)(D.detectors),children:N("disc.failedTitle",h.UI.discoveries.failedTitle)}),(0,t.jsxs)("p",{children:[j.map((e,s)=>(0,t.jsxs)("span",{children:[s>0&&" \xb7 ",(0,t.jsx)("span",{...(0,b.uN)((0,l.Sc)(e.id)),children:e.name})]},e.id)),"."," ",(0,t.jsx)(m.T,{k:"disc.failedTail",en:h.UI.discoveries.failedTail})]})]}),v.length>0&&(0,t.jsxs)("div",{className:"disc-muted-panel",style:{marginBlockStart:18},children:[(0,t.jsx)("div",{className:"k",...(0,b.uN)(D.detectors),children:N("disc.mutedTitle",h.UI.discoveries.mutedTitle)}),(0,t.jsxs)("p",{children:[v.map((e,s)=>(0,t.jsxs)("span",{children:[s>0&&" \xb7 ",(0,t.jsx)("span",{...(0,b.uN)((0,l.Sc)(e.id)),children:e.name})]},e.id)),"."," ",(0,t.jsx)("a",{href:"/settings",children:N("disc.unmute",h.UI.discoveries.unmute)})]})]})]}):(0,t.jsx)(d.hf,{done:0,total:0,working:!0})]})}},9198:(e,s,a)=>{Promise.resolve().then(a.bind(a,1163))},9712:(e,s,a)=>{"use strict";a.d(s,{Sc:()=>i,ZI:()=>t});let t=[{id:"paid-sdk",cat:"money",name:"Paid services in dormant projects",blurb:"Projects you haven't opened in a month or more that still reference paid services"},{id:"cloud-config-stale",cat:"money",name:"Deploy configs with no recent work",blurb:"Deploy files (Vercel, Railway, Docker) in projects that stopped moving"},{id:"identity",cat:"identity",name:"Commit identity mismatches",blurb:"Projects committing as a different email than your global identity"},{id:"ssh-keys",cat:"identity",name:"SSH key inventory",blurb:"The keys living in your .ssh folder and how old they are"},{id:"unpushed",cat:"time-capsule",name:"Unpushed commits",blurb:"Commits that exist only on this machine"},{id:"no-remote",cat:"time-capsule",name:"Projects with no remote",blurb:"Projects whose only home is this disk"},{id:"no-upstream",cat:"time-capsule",name:"Branches that push nowhere",blurb:"Local branches with no upstream, so their commits stay on this machine"},{id:"no-git-folder",cat:"time-capsule",name:"Folders with no git at all",blurb:"Watched folders holding work that has no history and no copy elsewhere"},{id:"readme-stub",cat:"time-capsule",name:"README still a placeholder",blurb:"READMEs that still say TODO, with age"},{id:"todo-census",cat:"time-capsule",name:"TODO census",blurb:"TODOs across the estate, eldest quoted"},{id:"abandoned-branches",cat:"time-capsule",name:"Abandoned branches",blurb:"Branches untouched for six months or more"},{id:"anniversary",cat:"time-capsule",name:"Project anniversaries",blurb:"First-commit birthdays coming up"},{id:"inventory-burst",cat:"time-capsule",name:"Large deletions and change bursts",blurb:"Watched folders that lost a lot of files, or had a lot of them change, since the last look"},{id:"file-gone",cat:"time-capsule",name:"Files that disappeared",blurb:"Files that were there last time and are not now, with the command to bring back the ones git still holds"},{id:"agent-effects",cat:"time-capsule",name:"Changes while an agent was connected",blurb:"Files that changed or went missing in a window that overlapped an agent's questions - af360 cannot tell whose edits they were"},{id:"sync-folder",cat:"safety",name:"Repos inside sync folders",blurb:"Git repos living inside OneDrive, Dropbox or Google Drive"},{id:"history-secrets",cat:"safety",name:"Key-shaped strings in git history",blurb:"Access-key-shaped strings in the history of publicly-remoted repos"},{id:"gitignore-gaps",cat:"safety",name:".gitignore gaps",blurb:"Repos tracking node_modules, .env or build output"},{id:"dev-server-exposed",cat:"safety",name:"Dev server open to the network",blurb:"Dev scripts binding 0.0.0.0 instead of localhost"},{id:"install-scripts",cat:"safety",name:"Dependencies with install scripts",blurb:"Dependencies that run their own code at install time, named"},{id:"dep-uncommitted",cat:"safety",name:"Installs git has not recorded",blurb:"Dependency lists that changed on disk and have not been committed"},{id:"unbacked-ignored",cat:"safety",name:"Ignored files in a project with no remote",blurb:"Environment files, databases and upload folders git ignores, in projects with nowhere to push"},{id:"node-modules",cat:"health",name:"node_modules weight",blurb:"What your node_modules folders weigh and what dormancy would give back"},{id:"build-artifacts",cat:"health",name:"Build-artifact graveyards",blurb:"Old .next, dist and build folders with sizes"},{id:"runtime-eol",cat:"health",name:"Runtime end of life",blurb:"Your Node.js version against its published support dates"},{id:"disk-weight",cat:"health",name:"Tool caches",blurb:"What the caches other tools leave behind are weighing, not counting node_modules or build folders"},{id:"runtime-census",cat:"health",name:"Runtime census",blurb:"Projects asking for a Node version this machine is not running"},{id:"repo-front-door",cat:"health",name:"README and licence",blurb:"Repositories with a remote that carry neither"},{id:"dep-versions",cat:"health",name:"Same dependency, many versions",blurb:"One dependency installed at several versions across the estate, with sizes"},{id:"dep-arrivals",cat:"health",name:"Dependency arrivals",blurb:"What joined your dependency lists, and the date the project recorded it"},{id:"estate-stats",cat:"health",name:"Estate line count",blurb:"Lines of code and language map - the pride stat"},{id:"duplicate-downloads",cat:"health",name:"Downloads sharing a project's name",blurb:"Downloaded folders whose name matches a project you already have, with sizes"},{id:"deploy-sites",cat:"site",name:"Addresses your projects deploy to",blurb:"Hostnames named by deploy configs in your own repos, offered for watching"},{id:"og-preview",cat:"site",name:"Social share preview",blurb:"The card WhatsApp and LinkedIn render when your link is shared"},{id:"security-headers",cat:"site",name:"Security headers",blurb:"Protective headers your site does or doesn't send"},{id:"mixed-content",cat:"site",name:"Mixed content",blurb:"Secure pages loading pieces over plain http"},{id:"redirect-chain",cat:"site",name:"Redirect chain and www",blurb:"How many hops a visit takes, and whether www agrees with the bare domain"},{id:"robots-blocking",cat:"site",name:"robots.txt blocking all",blurb:"A robots.txt turning every search engine away"},{id:"sitemap-missing",cat:"site",name:"Sitemap missing",blurb:"No sitemap for search engines to read"},{id:"dns-watch",cat:"site",name:"DNS snapshot and changes",blurb:"Your domain's DNS records, and any change since last look"}],i=e=>{var s;return null==(s=t.find(s=>s.id===e))?void 0:s.blurb}}},e=>{e.O(0,[3192,8050,7897,5623,8441,1255,7358],()=>e(e.s=9198)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6839],{1163:(e,s,a)=>{"use strict";a.r(s),a.d(s,{default:()=>y});var t=a(5155),i=a(7406),n=a(5623),r=a(639),d=a(2613),o=a(7897),c=a(1551),l=a(9712),h=a(436),m=a(5310),u=a(3034),p=a(6400),b=a(797);let g=["time-capsule","safety","money","identity","health","site"];function y(){var e,s;let a=(0,r.x)(),{insights:y,insightsMuted:v,insightsPending:f,insightsDeepTotal:w,insightsFailed:j,demo:x}=a,k=(0,c.$c)(null==(e=a.cfg)?void 0:e.lang),N=(e,s)=>(0,c.tr)(k,e,s),D=(0,m.qN)(k),T=null!=(s=a.views.discoveries)?s:"cards",I=(0,p.yr)(y),S=g.map(e=>({cat:e,items:I.filter(s=>s.cat===e)})).filter(e=>e.items.length>0),U=I.length,R=(0,p.ZT)(y).length;return(0,t.jsxs)(i.Ay,{active:"/discoveries",cockpit:a,children:[(0,t.jsxs)("div",{className:"pagebar",children:[(0,t.jsx)("h1",{children:(0,t.jsx)(m.T,{k:"room.discoveries",en:h.UI.discoveries.title})}),(0,t.jsx)("span",{className:"purpose",...(0,b.uN)(D.estate),children:(0,t.jsx)(m.T,{k:"disc.purpose",en:h.UI.discoveries.purpose})}),(0,t.jsxs)("div",{className:"tools",style:{marginInlineStart:"auto"},children:[(0,t.jsx)(o.aA,{view:T,onChange:e=>a.setView("discoveries",e)}),(0,t.jsx)("a",{className:"scan",style:{textDecoration:"none"},href:"/radar",children:(0,t.jsx)(m.T,{k:"btn.backToRadar",en:h.UI.discoveries.backToRadar})})]})]}),x&&(0,t.jsxs)("p",{className:"banner",children:[N("banner.discLead",h.UI.discoveries.bannerLead)," ",(0,t.jsx)("a",{className:"link",href:"/radar",children:N("banner.radarLink",h.UI.discoveries.bannerLink)})," ",N("banner.discTail",h.UI.discoveries.bannerTail)]}),y?0===U&&0===R&&0===v.length&&0===f&&0===j.length?(0,t.jsxs)("div",{className:"empty",children:[(0,t.jsx)("p",{className:"invite",children:N("disc.emptyInvite",h.UI.discoveries.emptyInvite)}),(0,t.jsx)("p",{children:N("disc.emptyLine",h.UI.discoveries.emptyLine)}),(0,t.jsx)("a",{className:"btn primary",href:"/radar",children:N("btn.goRadar",h.UI.discoveries.goRadar)})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(d.hf,{done:w-f,total:w}),(0,t.jsx)(p.LZ,{cockpit:a}),(0,t.jsx)("div",{className:"disc-groups",children:S.map(e=>(0,t.jsxs)("section",{className:"disc-group",children:[(0,t.jsxs)("div",{className:"sec",children:[(0,t.jsx)("h2",{children:(0,t.jsx)(m.T,{k:"cat.".concat(e.cat),en:h.UI.discoveries.cat[e.cat]})}),(0,t.jsx)("span",{className:"meta",children:(0,t.jsx)(u.V,{n:e.items.length})})]}),"cards"===T?(0,t.jsx)("div",{className:"grid three",children:e.items.map(e=>(0,t.jsx)(n.JF,{d:e,cockpit:a},e.id))}):(0,t.jsx)("div",{className:"wk",children:e.items.map(e=>(0,t.jsx)(n.rO,{d:e,cockpit:a},e.id))})]},e.cat))}),j.length>0&&(0,t.jsxs)("div",{className:"disc-muted-panel",style:{marginBlockStart:18},children:[(0,t.jsx)("div",{className:"k",...(0,b.uN)(D.detectors),children:N("disc.failedTitle",h.UI.discoveries.failedTitle)}),(0,t.jsxs)("p",{children:[j.map((e,s)=>(0,t.jsxs)("span",{children:[s>0&&" \xb7 ",(0,t.jsx)("span",{...(0,b.uN)((0,l.Sc)(e.id)),children:e.name})]},e.id)),"."," ",(0,t.jsx)(m.T,{k:"disc.failedTail",en:h.UI.discoveries.failedTail})]})]}),v.length>0&&(0,t.jsxs)("div",{className:"disc-muted-panel",style:{marginBlockStart:18},children:[(0,t.jsx)("div",{className:"k",...(0,b.uN)(D.detectors),children:N("disc.mutedTitle",h.UI.discoveries.mutedTitle)}),(0,t.jsxs)("p",{children:[v.map((e,s)=>(0,t.jsxs)("span",{children:[s>0&&" \xb7 ",(0,t.jsx)("span",{...(0,b.uN)((0,l.Sc)(e.id)),children:e.name})]},e.id)),"."," ",(0,t.jsx)("a",{href:"/settings",children:N("disc.unmute",h.UI.discoveries.unmute)})]})]})]}):(0,t.jsx)(d.hf,{done:0,total:0,working:!0})]})}},9198:(e,s,a)=>{Promise.resolve().then(a.bind(a,1163))},9712:(e,s,a)=>{"use strict";a.d(s,{Sc:()=>i,ZI:()=>t});let t=[{id:"paid-sdk",cat:"money",name:"Paid services in dormant projects",blurb:"Projects you haven't opened in a month or more that still reference paid services"},{id:"cloud-config-stale",cat:"money",name:"Deploy configs with no recent work",blurb:"Deploy files (Vercel, Railway, Docker) in projects that stopped moving"},{id:"identity",cat:"identity",name:"Commit identity mismatches",blurb:"Projects committing as a different email than your global identity"},{id:"ssh-keys",cat:"identity",name:"SSH key inventory",blurb:"The keys living in your .ssh folder and how old they are"},{id:"unpushed",cat:"time-capsule",name:"Unpushed commits",blurb:"Commits that exist only on this machine"},{id:"no-remote",cat:"time-capsule",name:"Projects with no remote",blurb:"Projects whose only home is this disk"},{id:"no-upstream",cat:"time-capsule",name:"Branches that push nowhere",blurb:"Local branches with no upstream, so their commits stay on this machine"},{id:"no-git-folder",cat:"time-capsule",name:"Folders with no git at all",blurb:"Watched folders holding work that has no history and no copy elsewhere"},{id:"readme-stub",cat:"time-capsule",name:"README still a placeholder",blurb:"READMEs that still say TODO, with age"},{id:"todo-census",cat:"time-capsule",name:"TODO census",blurb:"TODOs across the estate, eldest quoted"},{id:"abandoned-branches",cat:"time-capsule",name:"Abandoned branches",blurb:"Branches untouched for six months or more"},{id:"anniversary",cat:"time-capsule",name:"Project anniversaries",blurb:"First-commit birthdays coming up"},{id:"inventory-burst",cat:"time-capsule",name:"Large deletions and change bursts",blurb:"Watched folders that lost a lot of files, or had a lot of them change, since the last look"},{id:"file-gone",cat:"time-capsule",name:"Files that disappeared",blurb:"Files that were there last time and are not now, with the command to bring back the ones git still holds"},{id:"agent-effects",cat:"time-capsule",name:"Changes while an agent was connected",blurb:"Files that changed or went missing in a window that overlapped an agent's questions - af360 cannot tell whose edits they were"},{id:"sync-folder",cat:"safety",name:"Repos inside sync folders",blurb:"Git repos living inside OneDrive, Dropbox or Google Drive"},{id:"history-secrets",cat:"safety",name:"Key-shaped strings in git history",blurb:"Access-key-shaped strings in the history of publicly-remoted repos"},{id:"gitignore-gaps",cat:"safety",name:".gitignore gaps",blurb:"Repos tracking node_modules, .env or build output"},{id:"dev-server-exposed",cat:"safety",name:"Dev server open to the network",blurb:"Dev scripts binding 0.0.0.0 instead of localhost"},{id:"install-scripts",cat:"safety",name:"Dependencies with install scripts",blurb:"Dependencies that run their own code at install time, named"},{id:"dep-uncommitted",cat:"safety",name:"Installs git has not recorded",blurb:"Dependency lists that changed on disk and have not been committed"},{id:"unbacked-ignored",cat:"safety",name:"Ignored files in a project with no remote",blurb:"Environment files, databases and upload folders git ignores, in projects with nowhere to push"},{id:"node-modules",cat:"health",name:"node_modules weight",blurb:"What your node_modules folders weigh and what dormancy would give back"},{id:"build-artifacts",cat:"health",name:"Build-artifact graveyards",blurb:"Old .next, dist and build folders with sizes"},{id:"runtime-eol",cat:"health",name:"Runtime end of life",blurb:"Your Node.js version against its published support dates"},{id:"disk-weight",cat:"health",name:"Tool caches",blurb:"What the caches other tools leave behind are weighing, not counting node_modules or build folders"},{id:"runtime-census",cat:"health",name:"Runtime census",blurb:"Projects asking for a Node version this machine is not running"},{id:"repo-front-door",cat:"health",name:"README and licence",blurb:"Repositories with a remote that carry neither"},{id:"dep-versions",cat:"health",name:"Same dependency, many versions",blurb:"One dependency installed at several versions across the estate, with sizes"},{id:"dep-arrivals",cat:"health",name:"Dependency arrivals",blurb:"What joined your dependency lists, and the date the project recorded it"},{id:"estate-stats",cat:"health",name:"Estate line count",blurb:"Lines of code and language map - the pride stat"},{id:"duplicate-downloads",cat:"health",name:"Downloads sharing a project's name",blurb:"Downloaded folders whose name matches a project you already have, with sizes"},{id:"deploy-sites",cat:"site",name:"Addresses your projects deploy to",blurb:"Hostnames named by deploy configs in your own repos, offered for watching"},{id:"og-preview",cat:"site",name:"Social share preview",blurb:"The card WhatsApp and LinkedIn render when your link is shared"},{id:"security-headers",cat:"site",name:"Security headers",blurb:"Protective headers your site does or doesn't send"},{id:"mixed-content",cat:"site",name:"Mixed content",blurb:"Secure pages loading pieces over plain http"},{id:"redirect-chain",cat:"site",name:"Redirect chain and www",blurb:"How many hops a visit takes, and whether www agrees with the bare domain"},{id:"robots-blocking",cat:"site",name:"robots.txt blocking all",blurb:"A robots.txt turning every search engine away"},{id:"sitemap-missing",cat:"site",name:"Sitemap missing",blurb:"No sitemap for search engines to read"},{id:"dns-watch",cat:"site",name:"DNS snapshot and changes",blurb:"Your domain's DNS records, and any change since last look"}],i=e=>{var s;return null==(s=t.find(s=>s.id===e))?void 0:s.blurb}}},e=>{e.O(0,[2619,3192,8050,7897,5623,8441,1255,7358],()=>e(e.s=9198)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8039],{63:(r,e,t)=>{"use strict";var o=t(7260);t.o(o,"usePathname")&&t.d(e,{usePathname:function(){return o.usePathname}}),t.o(o,"useRouter")&&t.d(e,{useRouter:function(){return o.useRouter}})},2979:(r,e,t)=>{Promise.resolve().then(t.bind(t,9567))},9567:(r,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>c});var o=t(5155),n=t(63),i=t(7406),a=t(639),s=t(436),u=t(1551);function c(r){let{reset:e}=r,t=(0,a.x)(),c=(0,n.usePathname)()||"/radar",l=t.attention&&Array.isArray(t.attention.items)?t.attention:null,m=(r,e)=>{var o;return(0,u.tr)((0,u.$c)(null==(o=t.cfg)?void 0:o.lang),r,e)};return(0,o.jsx)(i.Ay,{active:c,cockpit:{...t,attention:l},children:(0,o.jsxs)("div",{className:"empty",children:[(0,o.jsx)("p",{className:"invite",children:m("roomError.invite",s.UI.roomError.invite)}),(0,o.jsx)("p",{children:m("roomError.line",s.UI.roomError.line)}),(0,o.jsx)("p",{className:"meta",children:m("roomError.fixLead",s.UI.roomError.fixLead)}),(0,o.jsx)("p",{children:m("roomError.fixRetry",s.UI.roomError.fixRetry)}),(0,o.jsx)("button",{className:"btn primary",onClick:e,children:m("btn.retry",s.UI.roomError.retry)})]})})}}},r=>{r.O(0,[3192,8050,8441,1255,7358],()=>r(r.s=2979)),_N_E=r.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8039],{63:(r,e,t)=>{"use strict";var o=t(7260);t.o(o,"usePathname")&&t.d(e,{usePathname:function(){return o.usePathname}}),t.o(o,"useRouter")&&t.d(e,{useRouter:function(){return o.useRouter}})},2979:(r,e,t)=>{Promise.resolve().then(t.bind(t,9567))},9567:(r,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>c});var o=t(5155),n=t(63),i=t(7406),a=t(639),s=t(436),u=t(1551);function c(r){let{reset:e}=r,t=(0,a.x)(),c=(0,n.usePathname)()||"/radar",l=t.attention&&Array.isArray(t.attention.items)?t.attention:null,m=(r,e)=>{var o;return(0,u.tr)((0,u.$c)(null==(o=t.cfg)?void 0:o.lang),r,e)};return(0,o.jsx)(i.Ay,{active:c,cockpit:{...t,attention:l},children:(0,o.jsxs)("div",{className:"empty",children:[(0,o.jsx)("p",{className:"invite",children:m("roomError.invite",s.UI.roomError.invite)}),(0,o.jsx)("p",{children:m("roomError.line",s.UI.roomError.line)}),(0,o.jsx)("p",{className:"meta",children:m("roomError.fixLead",s.UI.roomError.fixLead)}),(0,o.jsx)("p",{children:m("roomError.fixRetry",s.UI.roomError.fixRetry)}),(0,o.jsx)("button",{className:"btn primary",onClick:e,children:m("btn.retry",s.UI.roomError.retry)})]})})}}},r=>{r.O(0,[2619,3192,8050,8441,1255,7358],()=>r(r.s=2979)),_N_E=r.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{974:e=>{e.exports={style:{fontFamily:"'Noto Sans Arabic', 'Noto Sans Arabic Fallback'",fontStyle:"normal"},className:"__className_c5564f",variable:"__variable_c5564f"}},1219:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}},1290:()=>{},2744:e=>{e.exports={style:{fontFamily:"'Bricolage Grotesque', 'Bricolage Grotesque Fallback'",fontStyle:"normal"},className:"__className_01ae00",variable:"__variable_01ae00"}},6181:(e,a,l)=>{Promise.resolve().then(l.t.bind(l,1290,23)),Promise.resolve().then(l.t.bind(l,2744,23)),Promise.resolve().then(l.t.bind(l,1219,23)),Promise.resolve().then(l.t.bind(l,8036,23)),Promise.resolve().then(l.t.bind(l,974,23))},8036:e=>{e.exports={style:{fontFamily:"'IBM Plex Mono', 'IBM Plex Mono Fallback'",fontStyle:"normal"},className:"__className_46fe82",variable:"__variable_46fe82"}}},e=>{e.O(0,[1741,8716,8441,1255,7358],()=>e(e.s=6181)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{974:e=>{e.exports={style:{fontFamily:"'Noto Sans Arabic', 'Noto Sans Arabic Fallback'",fontStyle:"normal"},className:"__className_a3d91f",variable:"__variable_a3d91f"}},1219:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_d8ebd1",variable:"__variable_d8ebd1"}},1290:()=>{},2744:e=>{e.exports={style:{fontFamily:"'Bricolage Grotesque', 'Bricolage Grotesque Fallback'",fontStyle:"normal"},className:"__className_bd2806",variable:"__variable_bd2806"}},6181:(e,a,l)=>{Promise.resolve().then(l.t.bind(l,1290,23)),Promise.resolve().then(l.t.bind(l,2744,23)),Promise.resolve().then(l.t.bind(l,1219,23)),Promise.resolve().then(l.t.bind(l,8036,23)),Promise.resolve().then(l.t.bind(l,974,23))},8036:e=>{e.exports={style:{fontFamily:"'IBM Plex Mono', 'IBM Plex Mono Fallback'",fontStyle:"normal"},className:"__className_9f0762",variable:"__variable_9f0762"}}},e=>{e.O(0,[1741,8716,8441,1255,7358],()=>e(e.s=6181)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2655],{694:(e,l,s)=>{Promise.resolve().then(s.bind(s,7843))},7843:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>p});var n=s(5155),t=s(2115),o=s(7406),a=s(639),r=s(7470),i=s(436),c=s(5310),d=s(3034),g=s(5834),h=s(1551);function p(){var e;let l=(0,a.x)(),[s,p]=(0,t.useState)("all"),x=(0,h.$c)(null==(e=l.cfg)?void 0:e.lang),m=(e,l)=>(0,h.tr)(x,e,l),j=l.events,u=Date.now(),f=(0,r.l)(u),N=(0,r.l)(u-864e5),k=null!=j?j:[],v=function(e,l){let s=[];for(let l of e){let e=(0,r.l)(l.ts),n=s[s.length-1];n&&n.key===e?n.events.push(l):s.push({key:e,events:[l]})}return s}("all"===s?k:k.filter(e=>e.kind===s),0),y=[["all","log.filterAll",i.UI.log.filterAll],["mcp","log.filterAgents",i.UI.log.filterAgents],["connection","log.filterConnections",i.UI.log.filterConnections],["closed","log.filterClosed",i.UI.log.filterClosed]];return(0,n.jsxs)(o.Ay,{active:"/log",cockpit:l,children:[(0,n.jsxs)("div",{className:"pagebar",children:[(0,n.jsx)("h1",{children:(0,n.jsx)(c.T,{k:"room.log",en:i.UI.log.title})}),(0,n.jsx)("span",{className:"purpose",children:(0,n.jsx)(c.T,{k:"log.purpose",en:i.UI.log.purpose})})]}),null===j?(0,n.jsxs)("div",{className:"sweep-wrap",children:[(0,n.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,n.jsx)("span",{children:(0,n.jsx)(g.hI,{children:m("log.purpose",i.UI.log.purpose)})})]}):0===k.length?(0,n.jsx)("div",{className:"empty",children:(0,n.jsx)("p",{children:m("log.empty",i.UI.log.empty)})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"logbar",children:[(0,n.jsx)("div",{className:"logchips",role:"group","aria-label":m("log.filterAll",i.UI.log.filterAll),children:y.map(e=>{let[l,t,o]=e;return(0,n.jsxs)("button",{type:"button",className:"logchip".concat(s===l?" on":""),"aria-pressed":s===l,onClick:()=>p(l),children:[(0,n.jsx)(c.T,{k:t,en:o}),(0,n.jsx)("span",{className:"cnt",children:(0,n.jsx)(d.V,{n:"all"===l?k.length:k.filter(e=>e.kind===l).length})})]},l)})}),(0,n.jsx)("p",{className:"logremainder",children:m("log.untaggedNote",i.UI.log.untaggedNote)})]}),v.map(e=>(0,n.jsxs)("section",{className:"logday",children:[(0,n.jsxs)("h2",{className:"logday-h",children:[(e=>{if(e===f)return(0,n.jsx)(c.T,{k:"log.dayToday",en:i.UI.log.dayToday});if(e===N)return(0,n.jsx)(c.T,{k:"log.dayYesterday",en:i.UI.log.dayYesterday});let[l,s,t]=e.split("-").map(Number);return(0,n.jsx)(d.En,{children:new Date(l,(s||1)-1,t||1).toLocaleDateString("en-US",{weekday:"long"})})})(e.key),(0,n.jsx)("span",{className:"cnt",children:(0,n.jsx)(d.V,{n:e.events.length})})]}),(0,n.jsx)("div",{className:"loglist",children:e.events.map(e=>{var l;return(0,n.jsxs)("div",{className:"logrow",children:[(0,n.jsx)("span",{className:"logtime",children:(0,n.jsx)(d.En,{children:new Date(e.ts).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})})}),e.kind?(0,n.jsx)("span",{className:"logkind k-".concat(e.kind),children:"mcp"===(l=e.kind)?m("log.filterAgents",i.UI.log.filterAgents):"closed"===l?m("log.filterClosed",i.UI.log.filterClosed):m("log.filterConnections",i.UI.log.filterConnections)}):null,(0,n.jsx)("span",{className:"logtext",children:(0,n.jsx)(d.En,{children:e.text})})]},"".concat(e.ts," ").concat(e.text))})})]},e.key)),(0,n.jsx)("p",{className:"logfloor",children:m("log.floor",i.UI.log.floor)})]})]})}}},e=>{e.O(0,[3192,8050,8441,1255,7358],()=>e(e.s=694)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2655],{694:(e,l,s)=>{Promise.resolve().then(s.bind(s,7843))},7843:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>p});var n=s(5155),t=s(2115),o=s(7406),a=s(639),r=s(7470),i=s(436),c=s(5310),d=s(3034),g=s(5834),h=s(1551);function p(){var e;let l=(0,a.x)(),[s,p]=(0,t.useState)("all"),x=(0,h.$c)(null==(e=l.cfg)?void 0:e.lang),m=(e,l)=>(0,h.tr)(x,e,l),j=l.events,u=Date.now(),f=(0,r.l)(u),N=(0,r.l)(u-864e5),k=null!=j?j:[],v=function(e,l){let s=[];for(let l of e){let e=(0,r.l)(l.ts),n=s[s.length-1];n&&n.key===e?n.events.push(l):s.push({key:e,events:[l]})}return s}("all"===s?k:k.filter(e=>e.kind===s),0),y=[["all","log.filterAll",i.UI.log.filterAll],["mcp","log.filterAgents",i.UI.log.filterAgents],["connection","log.filterConnections",i.UI.log.filterConnections],["closed","log.filterClosed",i.UI.log.filterClosed]];return(0,n.jsxs)(o.Ay,{active:"/log",cockpit:l,children:[(0,n.jsxs)("div",{className:"pagebar",children:[(0,n.jsx)("h1",{children:(0,n.jsx)(c.T,{k:"room.log",en:i.UI.log.title})}),(0,n.jsx)("span",{className:"purpose",children:(0,n.jsx)(c.T,{k:"log.purpose",en:i.UI.log.purpose})})]}),null===j?(0,n.jsxs)("div",{className:"sweep-wrap",children:[(0,n.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,n.jsx)("span",{children:(0,n.jsx)(g.hI,{children:m("log.purpose",i.UI.log.purpose)})})]}):0===k.length?(0,n.jsx)("div",{className:"empty",children:(0,n.jsx)("p",{children:m("log.empty",i.UI.log.empty)})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"logbar",children:[(0,n.jsx)("div",{className:"logchips",role:"group","aria-label":m("log.filterAll",i.UI.log.filterAll),children:y.map(e=>{let[l,t,o]=e;return(0,n.jsxs)("button",{type:"button",className:"logchip".concat(s===l?" on":""),"aria-pressed":s===l,onClick:()=>p(l),children:[(0,n.jsx)(c.T,{k:t,en:o}),(0,n.jsx)("span",{className:"cnt",children:(0,n.jsx)(d.V,{n:"all"===l?k.length:k.filter(e=>e.kind===l).length})})]},l)})}),(0,n.jsx)("p",{className:"logremainder",children:m("log.untaggedNote",i.UI.log.untaggedNote)})]}),v.map(e=>(0,n.jsxs)("section",{className:"logday",children:[(0,n.jsxs)("h2",{className:"logday-h",children:[(e=>{if(e===f)return(0,n.jsx)(c.T,{k:"log.dayToday",en:i.UI.log.dayToday});if(e===N)return(0,n.jsx)(c.T,{k:"log.dayYesterday",en:i.UI.log.dayYesterday});let[l,s,t]=e.split("-").map(Number);return(0,n.jsx)(d.En,{children:new Date(l,(s||1)-1,t||1).toLocaleDateString("en-US",{weekday:"long"})})})(e.key),(0,n.jsx)("span",{className:"cnt",children:(0,n.jsx)(d.V,{n:e.events.length})})]}),(0,n.jsx)("div",{className:"loglist",children:e.events.map(e=>{var l;return(0,n.jsxs)("div",{className:"logrow",children:[(0,n.jsx)("span",{className:"logtime",children:(0,n.jsx)(d.En,{children:new Date(e.ts).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})})}),e.kind?(0,n.jsx)("span",{className:"logkind k-".concat(e.kind),children:"mcp"===(l=e.kind)?m("log.filterAgents",i.UI.log.filterAgents):"closed"===l?m("log.filterClosed",i.UI.log.filterClosed):m("log.filterConnections",i.UI.log.filterConnections)}):null,(0,n.jsx)("span",{className:"logtext",children:(0,n.jsx)(d.En,{children:e.text})})]},"".concat(e.ts," ").concat(e.text))})})]},e.key)),(0,n.jsx)("p",{className:"logfloor",children:m("log.floor",i.UI.log.floor)})]})]})}}},e=>{e.O(0,[2619,3192,8050,8441,1255,7358],()=>e(e.s=694)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{5657:(e,s,n)=>{"use strict";n.r(s),n.d(s,{default:()=>u});var r=n(5155),c=n(2115),a=n(7406),l=n(639),t=n(7897),o=n(5163),i=n(436),d=n(5310),p=n(3034),j=n(2696),h=n(5834),m=n(1551),x=n(4097);function u(){var e,s,n,u,g,v;let N=(0,l.x)(),[y,I]=(0,c.useState)(null),[k,f]=(0,c.useState)(!1),{projects:b,radar:w,changes:U,attention:T}=N,{requestIgnore:C,showToast:_,overlays:E}=(0,t.Wj)(N),R=null!=(u=N.views.projects)?u:"cards",A=(0,c.useRef)(null),V=(0,m.$c)(null==(e=N.cfg)?void 0:e.lang),P=(e,s)=>(0,m.tr)(V,e,s),q="ar"===V,F=e=>(0,o.YV)(T,e),L=e=>"red"===e?2:+("amber"===e),M=[...b].sort((e,s)=>{let n=Number(N.isPinned((0,t.yn)(s)))-Number(N.isPinned((0,t.yn)(e)));return 0!==n?n:L(F((0,t.yn)(s)))-L(F((0,t.yn)(e)))}),O=M.some(e=>null===F((0,t.yn)(e))),S=M.filter(e=>{let s=F((0,t.yn)(e));return null!==s&&"clean"!==s}).length,B=e=>I(s=>s===e?null:e);return(0,r.jsxs)(a.Ay,{active:"/projects",cockpit:N,children:[(0,r.jsxs)("div",{className:"pagebar",children:[(0,r.jsx)("h1",{children:(0,r.jsx)(d.T,{k:"room.projects",en:i.UI.projects.title})}),(0,r.jsx)("span",{className:"purpose",children:(0,r.jsx)(d.T,{k:"projects.purpose",en:i.UI.projects.purpose})})]}),(0,r.jsx)("div",{className:"radar-verdict",children:(0,r.jsx)(j.HE,{cockpit:N})}),w?0===b.length?(0,r.jsxs)("div",{className:"empty",children:[(0,r.jsx)("p",{className:"invite",children:P("projects.emptyInvite",i.UI.projects.emptyInvite)}),(0,r.jsx)("p",{children:P("projects.emptyLine",i.UI.projects.emptyLine)}),(0,r.jsx)(x.A,{watched:null!=(g=null==(s=N.cfg)?void 0:s.roots)?g:[],onChanged:()=>N.refresh(!0)}),(0,r.jsx)("a",{className:"btn primary",href:"/radar",children:P("btn.goRadar",i.UI.projects.goRadar)})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"sec",children:[(0,r.jsx)("h2",{children:(0,r.jsx)(d.T,{k:"sec.projects",en:i.UI.radar.projects})}),(0,r.jsxs)("span",{className:"meta",children:[(0,r.jsx)(p.V,{n:b.length})," \xb7"," ",O?(0,r.jsx)(h.hI,{children:P("common.checking",i.UI.common.checking)}):S>0?q?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.V,{n:S})," ",P("projects.needingTail","")]}):i.UI.projects.needing(S):P("projects.allClean",i.UI.projects.allClean)]}),(0,r.jsxs)("div",{className:"tools",children:[(0,r.jsx)("button",{className:"b",onClick:()=>f(!k),children:k?(0,r.jsx)(d.T,{k:"btn.close",en:i.UI.common.close}):(0,r.jsx)(d.T,{k:"btn.watchMore",en:i.UI.radar.watchMore})}),(0,r.jsx)(t.aA,{view:R,onChange:e=>N.setView("projects",e)})]})]}),k&&(0,r.jsx)("div",{className:"card plain",style:{marginBlockEnd:10},children:(0,r.jsx)(x.A,{watched:null!=(v=null==(n=N.cfg)?void 0:n.roots)?v:[],onChanged:()=>N.refresh(!0)})}),"cards"===R?(0,r.jsx)("div",{className:"grid",ref:A,children:M.map(e=>(0,r.jsx)(t.Uj,{p:e,tone:F((0,t.yn)(e)),cockpit:N,change:U[(0,t.yn)(e)],open:y===e.path,onToggle:()=>B(e.path),onIgnoreRequest:C,onToast:_},e.path))}):(0,r.jsx)("div",{className:"irows",ref:A,children:M.map(e=>(0,r.jsx)(t.ou,{p:e,tone:F((0,t.yn)(e)),cockpit:N,change:U[(0,t.yn)(e)],open:y===e.path,onToggle:()=>B(e.path),onIgnoreRequest:C},e.path))})]}):(0,r.jsxs)("div",{className:"sweep-wrap",children:[(0,r.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,r.jsx)("span",{children:(0,r.jsx)(h.hI,{children:P("common.scanning",i.UI.common.scanning)})})]}),E]})}},6068:(e,s,n)=>{Promise.resolve().then(n.bind(n,5657))}},e=>{e.O(0,[2619,3192,8050,7897,4097,8441,1255,7358],()=>e(e.s=6068)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2305],{8106:(e,a,s)=>{"use strict";s.d(a,{T:()=>i});var n=s(5155),r=s(2115),t=s(436),l=s(5310);function i(e){let{cockpit:a,onAdded:s}=e,[i,d]=(0,r.useState)(""),[c,o]=(0,r.useState)(""),[h,m]=(0,r.useState)(!1),[j,x]=(0,r.useState)(null),p=(0,l.kj)(),g=async e=>{var n;if(e.preventDefault(),!i.trim())return;m(!0),x(null);let r=await a.post({action:"addUrl",url:i.trim(),label:c.trim()||void 0});m(!1),r.ok?(d(""),o(""),x({ok:!0,text:p("site.added",t.UI.radar.siteAdded)}),a.readHealth(),null==s||s()):x({ok:!1,text:null!=(n=r.message)?n:p("common.somethingWrong",t.UI.common.somethingWrong)})};return(0,n.jsxs)("form",{className:"setup",onSubmit:g,children:[(0,n.jsxs)("div",{className:"addrow",children:[(0,n.jsx)("input",{className:"in",type:"text",inputMode:"url",dir:"ltr",value:i,"aria-label":p("site.addrAria",t.UI.radar.siteAddrAria),placeholder:t.UI.radar.sitePlaceholder,onChange:e=>d(e.target.value)}),(0,n.jsx)("input",{className:"in",type:"text",value:c,"aria-label":p("site.nameAria",t.UI.radar.siteNameAria),placeholder:p("site.namePlaceholder",t.UI.radar.siteNamePlaceholder),onChange:e=>o(e.target.value)}),(0,n.jsx)("button",{className:"btn primary",type:"submit",disabled:h||!i.trim(),children:h?p("site.adding",t.UI.radar.siteAdding):p("site.add",t.UI.radar.siteAdd)})]}),j&&(0,n.jsx)("p",{className:j.ok?"ok-line":"error-line",children:j.text})]})}},8216:(e,a,s)=>{Promise.resolve().then(s.bind(s,9151))},9151:(e,a,s)=>{"use strict";s.r(a),s.d(a,{default:()=>S});var n=s(5155),r=s(2115),t=s(7406),l=s(4097),i=s(5623),d=s(639),c=s(7897),o=s(7470),h=s(5163),m=s(2696),j=s(23),x=s(2613),p=s(436),g=s(5310),u=s(8706),k=s(3034),N=s(8106),v=s(6400),I=s(5834),f=s(9178);let U={look:74,change:22,closed:22,mcp:56,connection:56},y=new Set(["change","closed"]);function b(e){let{events:a,coverage:s,readAt:r,ar:t,empty:l}=e;if(null===a||null===r)return null;let i=r-864e5,d=a.filter(e=>e.ts>=i&&e.ts<=r&&void 0!==e.kind).sort((e,a)=>e.ts-a.ts),c=0===d.length?i:Math.min(d[0].ts,r-36e5),o=r-Math.min(864e5,Math.max(36e5,36e5*Math.ceil((r-Math.max(i,c))/36e5))),h=a.filter(e=>e.ts>=o&&e.ts<=r&&void 0!==e.kind).sort((e,a)=>e.ts-a.ts),m=r-o,j=m>=864e5,x=h.filter(e=>"look"===e.kind).length,u=a.some(e=>e.ts>=o&&e.ts<=r&&void 0===e.kind),k=(null==s?void 0:s.oldestTs)!=null&&s.oldestTs>o,N=e=>(e-o)/m*1e3,v=k?N(s.oldestTs):0,I=[],b=(e,a)=>{let s=I[I.length-1],n=s?Math.max(e,s[0]):e;s&&n===s[0]&&a===s[1]||I.push([n,a])};for(let e of(b(v,88),h)){let a=N(e.ts);b(a-4,88),b(a,U[e.kind]),b(a+4,88)}return(b(1e3,88),0===h.length&&l)?(0,n.jsx)("div",{className:"tape",children:(0,n.jsx)("div",{className:"tape-paper tape-invite",children:(0,n.jsx)("p",{children:(0,n.jsx)(g.T,{k:"radar.tapeInvite",en:p.UI.radar.tapeInvite})})})}):(0,n.jsxs)("div",{className:"tape",children:[(0,n.jsxs)("div",{className:"tape-paper",children:[(0,n.jsxs)("svg",{viewBox:"0 0 1000 100",preserveAspectRatio:"none","aria-hidden":"true",children:[(0,n.jsx)("line",{className:"tape-base",x1:"0",y1:"88",x2:"1000",y2:"88",vectorEffect:"non-scaling-stroke"}),(0,n.jsx)("polyline",{className:"tape-trace",points:I.map(e=>{let[a,s]=e;return"".concat(a,",").concat(s)}).join(" "),vectorEffect:"non-scaling-stroke"}),h.map((e,a)=>(0,n.jsx)("line",{className:"tape-mark tape-".concat(y.has(e.kind)?"moved":"look"===e.kind?"look":"door"),"data-kind":e.kind,x1:N(e.ts),x2:N(e.ts),y1:88,y2:U[e.kind],vectorEffect:"non-scaling-stroke"},"".concat(e.ts,"-").concat(a)))]}),(0,n.jsx)("span",{className:"tape-now","aria-hidden":"true"})]}),(0,n.jsxs)("div",{className:"tape-foot",children:[(0,n.jsx)("span",{className:"meta",children:j?(0,n.jsx)(g.T,{k:"radar.tapeWindow",en:p.UI.radar.tapeWindow}):(0,n.jsx)(g.T,{k:"radar.tapeSpan",en:p.UI.radar.tapeSpan((0,f.p0)(m))})}),(0,n.jsxs)("span",{className:"tape-key",children:[(0,n.jsx)("i",{className:"k-look","aria-hidden":"true"}),(0,n.jsx)(g.T,{k:"radar.tapeKeyLook",en:p.UI.radar.tapeKeyLook})]}),(0,n.jsxs)("span",{className:"tape-key",children:[(0,n.jsx)("i",{className:"k-door","aria-hidden":"true"}),(0,n.jsx)(g.T,{k:"radar.tapeKeyDoor",en:p.UI.radar.tapeKeyDoor})]}),(0,n.jsxs)("span",{className:"tape-key",children:[(0,n.jsx)("i",{className:"k-change","aria-hidden":"true"}),(0,n.jsx)(g.T,{k:"radar.tapeKeyChange",en:p.UI.radar.tapeKeyChange})]}),(0,n.jsxs)("a",{className:"tape-goto",href:"/log",children:[(0,n.jsx)(g.T,{k:"radar.tapeGoto",en:p.UI.radar.tapeGoto})," ",t?"←":"→"]})]}),0===h.length&&(0,n.jsx)("div",{className:"tape-partial",children:(0,n.jsx)(g.T,{k:"radar.tapeNoMarks",en:p.UI.radar.tapeNoMarks})}),u&&(0,n.jsx)("div",{className:"tape-partial",children:(0,n.jsx)(g.T,{k:"radar.tapeUntyped",en:p.UI.radar.tapeUntyped})}),k&&(0,n.jsx)("div",{className:"tape-partial",children:(0,n.jsx)(g.T,{k:"radar.tapeShort",en:p.UI.radar.tapeShort})}),!u&&!k&&x>0&&!h.some(e=>y.has(e.kind))&&(0,n.jsx)("div",{className:"tape-quiet",children:(0,n.jsx)(g.T,{k:"radar.tapeQuiet",en:p.UI.radar.tapeQuiet(x)})})]})}var w=s(1551),T=s(797);function S(){var e,a,s,o,N,f,U,y,S;let D=(0,d.x)(),[E,L]=(0,r.useState)(null),[R,V]=(0,r.useState)(null),[B,H]=(0,r.useState)(!1),{radar:q,incidents:G,insights:O,insightsLookAt:W,insightsLooking:Y,insightsMuted:K,insightsPending:_,demo:Q,projects:J,urls:Z,views:z,collapsed:$,changes:X,attention:ee,events:ea,logCoverage:es}=D,{requestIgnore:en,showToast:er,overlays:et}=(0,c.Wj)(D),el=(0,w.$c)(null==(e=D.cfg)?void 0:e.lang),ei=(e,a)=>(0,w.tr)(el,e,a),ed="ar"===el,ec=(0,g.qN)(el);(0,r.useEffect)(()=>{let e=Object.keys(X);if(0===e.length)return;let a=setTimeout(()=>D.markSeen(e),12e3);return()=>clearTimeout(a)},[Object.keys(X).join("|")]);let eo=e=>L(a=>a===e?null:e),eh=(0,v.yr)(O),em=e=>(0,h.YV)(ee,e),ej=null!=(o=z.projects)?o:"cards",ex=null!=(N=z.urls)?N:"cards",ep=e=>"red"===e?2:+("amber"===e),eg=[...J].sort((e,a)=>{let s=Number(D.isPinned((0,c.yn)(a)))-Number(D.isPinned((0,c.yn)(e)));return 0!==s?s:ep(em((0,c.yn)(a)))-ep(em((0,c.yn)(e)))}),eu=[...Z].sort((e,a)=>ep(em(a.entry.id))-ep(em(e.entry.id))),ek=e=>{var a;return null!=(a=$[e])?a:"ignored"===e||"drawer"===e},eN=(0,r.useRef)(null),ev=(0,r.useRef)(null),eI=(0,c.j4)(eN,eg.length,260,[ej,ek("projects"),null!=(f=null==ee?void 0:ee.items.length)?f:0,B,Q]),ef=(0,c.j4)(ev,eu.length,40,[ex,ek("sites"),eI,null!=(U=null==ee?void 0:ee.items.length)?U:0,B,Q]),eU=eg.slice(0,eI),ey=eg.slice(eI),eb=eu.slice(0,ef),ew=eu.slice(ef),eT=ee?(0,h.Pl)(ee):null,eS=Y&&null!==W,eP=!!ee&&(0,h.yy)(ee)&&!!q,eC=!ee||(0,h.yy)(ee)?"idle":"INCIDENT"===ee.state?"bad":"NEEDS_YOU"===ee.state||"SAFETY"===ee.state?"":"ok",eF=!ee||(0,h.yy)(ee)?"acc-none":"INCIDENT"===ee.state?"acc-bad":"NEEDS_YOU"===ee.state?"acc-warn":"SAFETY"===ee.state?"acc-safety":"acc-ok";return(0,n.jsxs)(t.Ay,{active:"/radar",cockpit:D,children:[(0,n.jsx)("div",{className:"radar-head ".concat(eC),children:(0,n.jsx)("div",{className:"rh-left",children:(0,n.jsx)("div",{className:"greet",children:function(e){let a=new Date().getHours();return a<5?e("greet.evening","Good evening"):a<12?e("greet.morning","Good morning"):a<17?e("greet.afternoon","Good afternoon"):e("greet.evening","Good evening")}(ei)})})}),D.launchGap&&(!q||q.held)&&(0,n.jsx)("p",{className:"meta launch-gap",children:(0,n.jsx)(g.P,{p:(0,u.ph)("radar.launchGap",p.UI.radar.launchGap,new Date(D.launchGap.from).toLocaleDateString(void 0,{dateStyle:"medium"}))})}),!eP&&(0,n.jsxs)("div",{className:"glance-wrap",children:[eS&&(0,n.jsx)("div",{className:"glance-held",children:(0,n.jsx)("span",{className:"meta",children:(0,n.jsx)(g.T,{k:"radar.heldLook",en:p.UI.radar.heldLook})})}),(0,n.jsxs)("div",{className:"glance ".concat(eF).concat(eS?" held":""),children:[(0,n.jsx)(m.HE,{cockpit:D}),null===O?(0,n.jsxs)("a",{className:"meter meter-go",href:"/discoveries",children:[(0,n.jsx)("span",{className:"meter-label",children:(0,n.jsx)(g.T,{k:"radar.meterDisc",en:p.UI.radar.meterDisc})}),(0,n.jsx)("span",{className:"meter-read",children:(0,n.jsx)(I.uF,{children:ei("common.loading",p.UI.common.loading)})})]}):(0,n.jsxs)("a",{className:"meter meter-go",href:"/discoveries",children:[(0,n.jsx)("span",{className:"meter-label",children:(0,n.jsx)(g.T,{k:"radar.meterDisc",en:p.UI.radar.meterDisc})}),(0,n.jsx)("span",{className:"meter-read",children:(0,n.jsx)(k.V,{n:eh.length})}),(0,n.jsx)("span",{className:"meter-under",children:ei("radar.meterDiscUnit",p.UI.radar.meterDiscUnit(eh.length))})]}),ee&&ee.items.length>0?(0,n.jsxs)("button",{type:"button",className:"radar-verdict meter meter-jump ".concat(eC),onClick:()=>(0,m.I4)(ee.items.map(e=>e.id)),children:[(0,n.jsx)("span",{className:"meter-label",children:(0,n.jsx)(g.T,{k:"radar.meterState",en:p.UI.radar.meterState})}),(0,n.jsx)("div",{className:"state",children:eT?(0,n.jsx)(g.P,{p:eT.lineP}):(0,n.jsx)(I.uF,{children:ei("common.loading",p.UI.common.loading)})}),eT&&(0,n.jsx)("div",{className:"reason",children:(0,n.jsx)(g.P,{p:eT.underP})})]}):(0,n.jsxs)("div",{className:"radar-verdict meter ".concat(eC),children:[(0,n.jsx)("span",{className:"meter-label",children:(0,n.jsx)(g.T,{k:"radar.meterState",en:p.UI.radar.meterState})}),(0,n.jsx)("div",{className:"state",children:eT?(0,n.jsx)(g.P,{p:eT.lineP}):(0,n.jsx)(I.uF,{children:ei("common.loading",p.UI.common.loading)})}),eT&&(0,n.jsx)("div",{className:"reason",children:(0,n.jsx)(g.P,{p:eT.underP})})]})]})]}),!Q&&(0,n.jsx)(b,{events:ea,coverage:es,readAt:D.logReadAt,ar:ed,empty:eP}),!eP&&!Q&&(0,n.jsxs)("div",{className:"glance-acts",children:[(0,n.jsx)(m.KF,{onToast:er}),(0,n.jsx)("span",{className:"meta",children:(0,n.jsx)(g.T,{k:"radar.handoffHint",en:p.UI.radar.handoffHint})})]}),!eP&&!Q&&(null==ee?void 0:ee.state)==="QUIET"&&C(D)&&(0,n.jsx)(F,{}),(0,n.jsxs)("div",{className:"pagebar",style:{marginBlockStart:4},children:[(0,n.jsx)("h1",{children:(0,n.jsx)(g.T,{k:"room.radar",en:p.UI.radar.title})}),(0,n.jsx)("span",{className:"purpose",children:(0,n.jsx)(g.T,{k:"radar.purpose",en:p.UI.radar.purpose})})]}),Q&&(0,n.jsxs)("p",{className:"banner",children:[ei("banner.radarLead",p.UI.radar.bannerLead)," ",(0,n.jsx)("strong",{children:ei("banner.radarStrong",p.UI.radar.bannerStrong)})," ",ei("banner.radarRest",p.UI.radar.bannerRest)," ",(0,n.jsx)("button",{className:"link",onClick:()=>H(!0),children:ei("banner.radarLink",p.UI.radar.bannerLink)})," ",ei("banner.radarTail",p.UI.radar.bannerTail)]}),ee&&ee.items.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"sec",children:[(0,n.jsx)("h2",{children:(0,n.jsx)(g.T,{k:"sec.needsYou",en:p.UI.radar.needsYou})}),(0,n.jsxs)("span",{className:"meta",children:[(0,n.jsx)(k.V,{n:ee.items.length})," \xb7 ",(0,n.jsx)(g.T,{k:"radar.needsYouOrdered",en:p.UI.radar.needsYouOrdered}),ee.safety>0&&(0,n.jsxs)(n.Fragment,{children:[" \xb7 ",(0,n.jsxs)("a",{href:"/discoveries",children:[(0,n.jsx)(g.P,{p:(0,u.ph)("radar.needsYouSafety",p.UI.radar.needsYouSafety,String(ee.safety))})," ",ed?"←":"→"]})]})]})]}),(0,j.bI)(ee).map(e=>(0,n.jsx)(M,{it:e,cockpit:D,demo:Q,onIgnoreRequest:en,onFind:e=>V(e)},e.id))]}),(0,n.jsx)(A,{cockpit:D,collapsed:ek("ignored")}),q?0===J.length&&0===Z.length?(0,n.jsx)(P,{cockpit:D}):(0,n.jsxs)(n.Fragment,{children:[J.length>0&&(0,n.jsxs)(n.Fragment,{children:[ee&&ee.items.length>0&&(0,n.jsx)("div",{className:"secline","aria-hidden":!0}),(0,n.jsxs)("div",{className:"sec",children:[(0,n.jsx)("h2",{children:(0,n.jsx)(g.T,{k:"sec.projects",en:p.UI.radar.projects})}),(0,n.jsxs)("span",{className:"meta",children:[(0,n.jsx)(k.V,{n:J.length})," \xb7 ",(0,n.jsx)(g.T,{k:"radar.projectsMeta",en:p.UI.radar.projectsMeta})]}),(0,n.jsxs)("div",{className:"tools",children:[(0,n.jsx)("button",{className:"b",...(0,T.uN)(ec.watch),onClick:()=>H(!B),children:B?(0,n.jsx)(g.T,{k:"btn.close",en:p.UI.common.close}):(0,n.jsx)(g.T,{k:"btn.watchMore",en:p.UI.radar.watchMore})}),(0,n.jsx)(c.aA,{view:ej,onChange:e=>D.setView("projects",e)}),(0,n.jsx)(c.cc,{value:ek("projects"),onChange:e=>D.setCollapsed("projects",e)}),(0,n.jsx)("a",{className:"seeall",href:"/projects",children:ed?(0,n.jsxs)(n.Fragment,{children:[ei("more.seeAllProjects","")," (",(0,n.jsx)(k.V,{n:J.length}),") ","←"]}):p.UI.radar.seeAllProjects(J.length)})]})]}),B&&(0,n.jsx)("div",{className:"card plain",style:{marginBlockEnd:10},children:(0,n.jsx)(l.A,{watched:null!=(y=null==(a=D.cfg)?void 0:a.roots)?y:[],onChanged:()=>D.refresh(!0)})}),!ek("projects")&&(0,n.jsxs)(n.Fragment,{children:["cards"===ej?(0,n.jsx)("div",{className:"grid",ref:eN,children:eU.map(e=>(0,n.jsx)(c.Uj,{p:e,tone:em((0,c.yn)(e)),cockpit:D,change:X[(0,c.yn)(e)],open:E===e.path,onToggle:()=>eo(e.path),onIgnoreRequest:en,onToast:er},e.path))}):(0,n.jsx)("div",{className:"irows",ref:eN,children:eU.map(e=>(0,n.jsx)(c.ou,{p:e,tone:em((0,c.yn)(e)),cockpit:D,change:X[(0,c.yn)(e)],open:E===e.path,onToggle:()=>eo(e.path),onIgnoreRequest:en},e.path))}),ey.length>0&&(0,n.jsx)(n.Fragment,{children:(0,n.jsx)("div",{className:"cleanline",children:ey.every(e=>"clean"===em((0,c.yn)(e)))?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"okw",children:"✓"})," ",ey.every(e=>e.hasRemote||e.looksDownloaded)?ed?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.V,{n:ey.length})," ",ei("more.cleanBacked","")]}):p.UI.radar.moreCleanBacked(ey.length):ed?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.V,{n:ey.length})," ",ei("more.clean","")]}):p.UI.radar.moreClean(ey.length)]}):ed?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.V,{n:ey.length})," ",ei("more.projects","")]}):(0,n.jsx)(n.Fragment,{children:p.UI.radar.moreProjects(ey.length)})})})]})]}),Z.length>0&&(0,n.jsxs)(n.Fragment,{children:[J.length>0&&(0,n.jsx)("div",{className:"secline","aria-hidden":!0}),(0,n.jsxs)("div",{className:"sec",children:[(0,n.jsx)("h2",{children:(0,n.jsx)(g.T,{k:"sec.sites",en:p.UI.radar.sites})}),(0,n.jsxs)("span",{className:"meta",children:[(0,n.jsx)(k.V,{n:Z.length})," \xb7 ",(0,n.jsx)(g.T,{k:"radar.sitesMeta",en:p.UI.radar.sitesMeta})]}),(0,n.jsxs)("div",{className:"tools",children:[(0,n.jsx)(c.aA,{view:ex,onChange:e=>D.setView("urls",e)}),(0,n.jsx)(c.cc,{value:ek("sites"),onChange:e=>D.setCollapsed("sites",e)}),(0,n.jsx)("a",{className:"seeall",href:"/sites",children:ed?(0,n.jsxs)(n.Fragment,{children:[ei("more.seeAllSites","")," (",(0,n.jsx)(k.V,{n:Z.length}),") ","←"]}):p.UI.radar.seeAllSites(Z.length)})]})]}),!ek("sites")&&(0,n.jsxs)(n.Fragment,{children:["cards"===ex?(0,n.jsx)("div",{className:"grid",ref:ev,children:eb.map(e=>(0,n.jsx)(c.ct,{u:e,tone:em(e.entry.id),cockpit:D,incident:(0,c.G2)(G,e.entry.id),open:E===e.entry.id,onToggle:()=>eo(e.entry.id),onIgnoreRequest:en},e.entry.id))}):(0,n.jsx)("div",{className:"irows",ref:ev,children:eb.map(e=>(0,n.jsx)(c.kc,{u:e,tone:em(e.entry.id),cockpit:D,incident:(0,c.G2)(G,e.entry.id),open:E===e.entry.id,onToggle:()=>eo(e.entry.id),onIgnoreRequest:en},e.entry.id))}),ew.length>0&&(0,n.jsx)(n.Fragment,{children:(0,n.jsx)("div",{className:"cleanline",children:ew.every(e=>"clean"===em(e.entry.id))?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"okw",children:"✓"})," ",ed?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.V,{n:ew.length})," ",ei("more.sitesUp","")]}):p.UI.radar.moreSitesUp(ew.length)]}):ed?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.V,{n:ew.length})," ",ei("more.sites","")]}):(0,n.jsx)(n.Fragment,{children:p.UI.radar.moreSites(ew.length)})})})]})]}),(0,v.ZT)(O).length>0&&(0,n.jsx)(v.LZ,{cockpit:D})]}):(0,n.jsxs)("div",{className:"sweep-wrap",children:[(0,n.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,n.jsx)("span",{children:(0,n.jsx)(I.hI,{children:ei("common.scanning",p.UI.common.scanning)})})]}),(null===O||eh.length>0||_>0||K.length>0)&&(0,n.jsxs)(n.Fragment,{children:[(J.length>0||Z.length>0||ee&&ee.items.length>0)&&(0,n.jsx)("div",{className:"secline","aria-hidden":!0}),(0,n.jsxs)("div",{className:"sec",children:[(0,n.jsx)("h2",{children:(0,n.jsx)(g.T,{k:"sec.discoveries",en:p.UI.radar.discoveries})}),(0,n.jsx)("span",{className:"meta",children:null===O?(0,n.jsx)(I.hI,{children:ei("common.loading",p.UI.common.loading)}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.V,{n:eh.length})," \xb7 ",(0,n.jsx)(g.T,{k:"radar.discoveriesMeta",en:p.UI.radar.discoveriesMeta}),eh.length>3?(0,n.jsxs)(n.Fragment,{children:[" \xb7 ",(0,n.jsx)(g.T,{k:"radar.discoveriesTop3",en:p.UI.radar.discoveriesTop3})]}):null]})}),(0,n.jsxs)("div",{className:"tools",children:[(0,n.jsx)(c.cc,{value:ek("discoveries"),onChange:e=>D.setCollapsed("discoveries",e),showLabel:p.UI.common.show,hideLabel:p.UI.common.hide,hideKey:"btn.hide"}),null!==O&&(0,n.jsx)("a",{className:"seeall",href:"/discoveries",children:ed?(0,n.jsxs)(n.Fragment,{children:[ei("more.seeAllDiscoveries","")," (",(0,n.jsx)(k.V,{n:eh.length}),") ","←"]}):p.UI.radar.seeAll(eh.length)})]})]}),!ek("discoveries")&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(x.hf,{done:D.insightsDeepTotal-_,total:D.insightsDeepTotal,working:null===O}),(0,n.jsx)("div",{className:"grid three",children:eh.slice(0,3).map(e=>(0,n.jsx)(i.JF,{d:e,cockpit:D},e.id))}),K.length>0&&(0,n.jsx)("div",{className:"disc-more",children:(0,n.jsxs)("span",{className:"m",children:[K.length," muted, named on the Discoveries page"]})})]})]}),R&&(0,n.jsx)("div",{className:"confirm-overlay",role:"dialog","aria-modal":"true",children:(0,n.jsxs)("div",{className:"confirm",style:{maxInlineSize:560},children:[(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:(0,n.jsx)(k.B,{children:function(e){var a;let s=e.split(/[\\/]/).filter(Boolean);return null!=(a=s[s.length-1])?a:e}(R)})})," ",(0,n.jsx)(g.T,{k:"radar.movedTail",en:p.UI.radar.movedTail})]}),(0,n.jsx)(l.A,{watched:null!=(S=null==(s=D.cfg)?void 0:s.roots)?S:[],autoBrowsePath:function(e){let a=e.split(/[\\/]/).filter(Boolean);return a.length>1?a.slice(0,-1).join("\\"):e}(R),replaceRoot:R,onChanged:()=>{V(null),D.refresh(!0)}}),(0,n.jsx)("div",{className:"setup-actions",children:(0,n.jsx)("button",{className:"b q",onClick:()=>V(null),children:(0,n.jsx)(g.T,{k:"btn.cancel",en:p.UI.common.cancel})})})]})}),et]})}function P(e){var a,s;let{cockpit:t}=e,[i,d]=(0,r.useState)(null),c=(0,g.kj)();return(0,g.cO)(),(0,n.jsxs)("div",{className:"empty welcome",children:[(0,n.jsx)("p",{className:"invite",children:c("empty.invite",p.UI.radar.emptyInvite)}),(0,n.jsx)("p",{className:"wl",children:c("empty.line",p.UI.radar.emptyLine)}),(0,n.jsxs)("div",{className:"setup-actions",children:[(0,n.jsx)("button",{className:"btn ".concat("folder"===i?"":"primary"),"aria-pressed":"folder"===i,onClick:()=>d("folder"===i?null:"folder"),children:"folder"===i?c("btn.back",p.UI.radar.emptyBack):c("empty.pickFolder",p.UI.radar.emptyPickFolder)}),(0,n.jsx)("button",{className:"btn ".concat("site"===i?"":"primary"),"aria-pressed":"site"===i,onClick:()=>d("site"===i?null:"site"),children:"site"===i?c("btn.back",p.UI.radar.emptyBack):c("empty.pickSite",p.UI.radar.emptyPickSite)})]}),"folder"===i&&(0,n.jsx)(l.A,{watched:null!=(s=null==(a=t.cfg)?void 0:a.roots)?s:[],onChanged:()=>t.refresh(!0)}),"site"===i&&(0,n.jsx)(N.T,{cockpit:t}),(0,n.jsx)("p",{className:"someday",children:c("empty.someday",p.UI.radar.emptySomeday)}),C(t)&&(0,n.jsx)(F,{})]})}function C(e){let a=e.clients;return!!a&&0!==a.length&&a.every(e=>"present"===e.state||"missing"===e.state)&&!a.some(e=>e.connected)}function F(){let e=(0,g.kj)();return(0,n.jsx)("p",{className:"meta mcp-hint",children:(0,n.jsx)("a",{href:"/connections",children:e("radar.mcpHint",p.UI.radar.mcpHint)})})}function A(e){let{cockpit:a,collapsed:s}=e,r=(0,g.kj)(),t=(0,g.cO)();return 0===a.ignored.length?null:(0,n.jsxs)("div",{className:"ign2",children:[(0,n.jsxs)("div",{className:"ign2-row",children:[(0,n.jsxs)("span",{className:"n",...(0,T.uN)(t.ignore),children:[(0,n.jsx)(g.T,{k:"radar.ignoredLabel",en:p.UI.radar.ignoredLabel}),": ",(0,n.jsx)(k.V,{n:a.ignored.length})]}),s&&(0,n.jsx)("span",{className:"why",children:r("radar.ignoredStill",p.UI.radar.ignoredStill)}),(0,n.jsx)("button",{className:"b2 q ign2-toggle","aria-expanded":!s,onClick:()=>a.setCollapsed("ignored",!s),children:s?(0,n.jsx)(g.T,{k:"btn.show",en:p.UI.radar.ignoredShow}):(0,n.jsx)(g.T,{k:"btn.hide",en:p.UI.radar.ignoredHide})})]}),!s&&a.ignored.map(e=>(0,n.jsxs)("div",{className:"ign2-row item",children:[(0,n.jsxs)("span",{className:"item",children:[(0,n.jsx)(k.B,{children:e.label})," ",(0,n.jsx)("span",{className:"mono",children:"project"===e.kind?"project":"site"})]}),(0,n.jsx)("span",{className:"why",children:r("radar.ignoredStill",p.UI.radar.ignoredStill)}),(0,n.jsx)("button",{className:"b2 q",...(0,T.uN)(t.watch),onClick:()=>a.unignore(e.id),children:(0,n.jsx)(g.T,{k:"btn.watchAgain",en:p.UI.radar.watchAgain})})]},e.id))]})}function M(e){var a,s,l,i,d;let{it:c,cockpit:h,demo:u,onIgnoreRequest:N,onFind:v}=e,I=(0,r.useContext)(t.vC),f=(0,t.cB)(),[U,y]=(0,r.useState)(!1),[b,w]=(0,r.useState)(!1),S=(0,r.useRef)(null);(0,r.useEffect)(()=>{var e,a;U&&b&&(null==(e=S.current)||e.scrollIntoView({block:"nearest"}),null==(a=S.current)||a.focus(),w(!1))},[U,b]);let P=(0,g.kj)(),C=(0,g.cO)(),F=(0,j.pd)(c),A="losable"===F?P("tag.losable",p.UI.radar.tagLosable):"money"===F?P("tag.money",p.UI.radar.tagMoney):P("tag.hygiene",p.UI.radar.tagHygiene),M="losable"===F?C.tagLosable:"money"===F?C.tagMoney:C.tagHygiene,D=[];return!c.handled&&(c.resurfaceId&&D.push({label:P("act.stillIgnore",p.UI.radar.stillIgnore),title:C.ignore,effect:P("eff.stillIgnore",p.UI.radar.effStillIgnore),onClick:()=>h.stillIgnore(c.resurfaceId)}),c.ignore&&!c.resurfaceId&&D.push({label:P("act.ignore",p.UI.radar.ignore),title:C.ignore,effect:P("eff.ignore",p.UI.radar.effIgnore),onClick:()=>N(c.ignore.id,c.ignore.kind,c.ignore.label,c.ignore.atRisk,"project"===c.ignore.kind?P("confirm.project",p.UI.radar.confirmProject):P("confirm.site",p.UI.radar.confirmSite),"site"===c.kind?{down:!0}:void 0)}),c.laterId&&D.push({label:P("act.later",p.UI.radar.later),title:C.later,effect:P("eff.later",p.UI.radar.effLater),onClick:()=>h.later(c.laterId)}),c.findPath&&D.push({label:P("act.stopWatching",p.UI.radar.stopWatching),title:C.unwatch,effect:P("eff.stopWatching",p.UI.radar.effStopWatching),danger:!0,onClick:()=>{h.post({action:"removeRoot",path:c.findPath}).then(e=>{e.ok&&h.resolveRow(c.findPath)})}})),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{[m.J6]:c.id,className:"need".concat(U?" open":"").concat("red"===c.tone&&!c.handled?" bad":"").concat(c.handled?" handled":""),children:[(0,n.jsx)("span",{className:"tag ".concat(F),...(0,T.uN)(M),children:A}),(0,n.jsxs)("div",{className:"txt",children:[(0,n.jsx)("b",{children:c.whatP?(0,n.jsx)(g.P,{p:c.whatP}):c.what}),(0,n.jsx)("span",{children:c.whyP?(0,n.jsx)(g.P,{p:c.whyP}):c.why})]}),c.since&&!(0,o.nW)(c.since,f)&&(0,n.jsx)("span",{className:"age",...(0,T.uN)(C.age),children:function(e){let a=Math.floor(e/6e4);return a<60?"".concat(Math.max(1,a),"m"):a<1440?"".concat(Math.floor(a/60),"h"):"".concat(Math.floor(a/1440),"d")}(f-c.since)}),(0,n.jsxs)("div",{className:"acts",children:[!c.handled&&(c.steps.length>0||(null!=(s=null==(a=c.devSteps)?void 0:a.length)?s:0)>0)&&(0,n.jsx)("button",{className:"b2",...(0,T.uN)(C.fix),onClick:()=>{y(!0),w(!0)},children:(0,n.jsx)(g.T,{k:"btn.fix",en:p.UI.session.fix})}),!c.handled&&c.checkId&&(0,n.jsx)("button",{className:"b2",...(0,T.uN)(C.check),onClick:()=>h.ack(c.checkId),children:P("act.check",p.UI.radar.check)}),!c.handled&&c.resurfaceId&&(0,n.jsx)("button",{className:"b2",...(0,T.uN)(C.watch),onClick:()=>h.unignore(c.resurfaceId),children:(0,n.jsx)(g.T,{k:"btn.watchAgain",en:p.UI.radar.watchAgain})}),!c.handled&&c.findPath&&(0,n.jsx)("button",{className:"b2",onClick:()=>v(c.findPath),children:P("act.findIt",p.UI.radar.findIt)}),!c.handled&&c.watchPath&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{className:"b2",onClick:()=>{h.post({action:"addRoot",path:c.watchPath}).then(e=>{e.ok&&h.refresh(!0)})},children:P("site.add",p.UI.radar.siteAdd)}),(0,n.jsx)("button",{className:"b2 q",onClick:()=>{h.post({action:"addExclude",path:c.watchPath})},children:(0,n.jsx)(g.T,{k:"site.notThisOne",en:p.UI.radar.proposalNotThis})})]}),(0,n.jsx)("button",{className:"b2 q",...(0,T.uN)(C.details),onClick:()=>y(!U),"aria-expanded":U,children:U?(0,n.jsx)(g.T,{k:"btn.hide",en:p.UI.common.hide}):(0,n.jsx)(g.T,{k:"btn.details",en:p.UI.common.details})}),(0,n.jsx)(x.ob,{actions:D})]}),c.handled&&(0,n.jsx)("span",{className:"ok-line handled-note",children:c.handledNoteP?(0,n.jsx)(g.P,{p:c.handledNoteP}):null!=(l=c.handledNote)?l:P("act.handled",p.UI.radar.handled)})]}),U&&(0,n.jsxs)("div",{className:"need-draw",children:[(0,n.jsxs)("div",{className:"need-detail rec",ref:S,tabIndex:-1,children:[(0,n.jsx)("span",{className:"k",children:P("fix.what",p.UI.session.fixHeadingWhat)}),(0,n.jsx)("span",{children:c.whyP?(0,n.jsx)(g.P,{p:c.whyP}):c.why}),(0,n.jsx)("span",{className:"k",children:P("fix.steps",p.UI.session.fixHeadingSteps)}),(null!=(i=c.stepsP)?i:c.steps.map(e=>({k:"",en:e}))).map((e,a)=>(0,n.jsx)("span",{children:(0,n.jsx)(g.P,{p:e})},a))]}),I&&c.devSteps&&c.devSteps.length>0&&(0,n.jsxs)("div",{className:"need-detail cmds",children:[(0,n.jsx)("span",{className:"k",children:P("fix.commands",p.UI.session.fixHeadingCommands)}),c.devSteps.map(e=>(0,n.jsx)(k.B,{mono:!0,children:e},e)),(0,n.jsx)(m.M0,{it:c})]}),c.openPath&&!u&&(0,n.jsxs)("div",{className:"draw-line",children:[(0,n.jsx)("span",{className:"k",children:P("radar.folder",p.UI.radar.folder)}),(0,n.jsx)(k.B,{mono:!0,children:c.openPath}),(0,n.jsx)(m.r8,{path:c.openPath})]}),(0,n.jsxs)("div",{className:"need-detail",children:[(0,n.jsx)("span",{className:"k",children:P("radar.whatISaw",p.UI.radar.whatISaw)}),(null!=(d=c.evidenceP)?d:c.evidence.map(e=>({k:"",en:e}))).map((e,a)=>(0,n.jsx)("span",{className:"mono",children:(0,n.jsx)(g.P,{p:e})},a))]})]})]})}}},e=>{e.O(0,[2619,3192,8050,7897,4097,5623,8441,1255,7358],()=>e(e.s=8216)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7081],{3123:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>T});var a=r(5155),s=r(2115),n=r(7406),l=r(639),o=r(5163),i=r(8261),c=r(436),d=r(8706);function p(e,t,r){return{fact:e.en,factP:e,why:t.en,whyP:t,detail:r.en,detailP:r}}function u(e){var t;let r=[];if(e.oldestTodo&&r.push({cat:c.UI.report.catTimeCapsule,catKey:"report.catTimeCapsule",...p((0,d.ph)("wk.todoFact",'Your oldest note to yourself is still open, from {0}: "{1}"',e.oldestTodo.from,e.oldestTodo.quote),(0,d.pl)("wk.todoWhy",c.UI.report.wTodoWhy),(0,d.pl)("tip.todosTip",c.UI.report.todosTip))}),e.reclaimableBytes>5e7&&r.push({cat:c.UI.report.catHousekeeping,catKey:"report.catHousekeeping",...p((0,d.ph)("wk.spaceFact","{0} of downloaded code libraries sit in projects you have not touched in months",(t=e.reclaimableBytes)>=1e9?"".concat((t/1e9).toFixed(1)," GB"):"".concat(Math.round(t/1e6)," MB")),(0,d.pl)("wk.spaceWhy",c.UI.report.wSpaceWhy),(0,d.pl)("tip.reclaimableTip",c.UI.report.reclaimableTip))}),e.busiest&&r.push({cat:c.UI.report.catHistory,catKey:"report.catHistory",...p((0,d.ph)("wk.busiestFact","{0} is your busiest project, {1} commits",e.busiest.name,e.busiest.commits.toLocaleString()),(0,d.pl)("wk.busiestWhy",c.UI.report.wBusiestWhy),(0,d.pl)("tip.busiestTip",c.UI.report.busiestTip))}),e.anniversaries.length>0){let t=e.anniversaries[0];r.push({cat:c.UI.report.catMilestone,catKey:"report.catMilestone",...p((0,d.ph)("wk.birthdayFact","{0} turns {1} on {2}",t.name,t.years,t.when),(0,d.pl)("wk.birthdayWhy",c.UI.report.wBirthdayWhy),(0,d.pl)("tip.birthdayTip",c.UI.report.birthdayTip))})}return r}var h=r(7470),f=r(9178),m=r(4576),x=r(5310),U=r(3034),g=r(1551),j=r(9378),v=r(5964);function I(e,t){return"".concat(e," - ").concat(t===e?c.UI.radar.depAnswered.replace(/^a dependency - /,""):"".concat(e-t," ").concat(c.UI.radar.depNoAnswer.replace(/^a dependency - /,"")))}function y(e){return"SAFETY"===e.state?{big:e.safety,label:c.UI.report.vSafety(e.safety),labelKey:"report.vSafety",tone:"warn"}:{big:e.needing,label:c.UI.report.vNeeding(e.needing),labelKey:"report.vNeeding",tone:null===e.state?"none":e.needing>0?"warn":"ok"}}var b=r(7e3),k=r(9129),w=r(5834),N=r(797);function T(){var e,t;let r=(0,l.x)(),{delta:d}=(0,k.K)(r),[p,j]=(0,s.useState)(null),[T,D]=(0,s.useState)(!1),[E,F]=(0,s.useState)(!1);(0,s.useEffect)(()=>{fetch("/api/report",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>e&&"object"==typeof e&&"number"==typeof e.projects&&e.languages&&"object"==typeof e.languages?j(e):D(!0)).catch(()=>D(!0))},[]);let M=(0,g.$c)(null==(e=r.cfg)?void 0:e.lang),R=(e,t)=>(0,g.tr)(M,e,t),K="ar"===M,O=(0,x.qN)(M),W=function(e){var t,r,a,s,n,l,i,d,p,u;let h=e.projects.filter(e=>!e.looksDownloaded),f=h.filter(e=>e.uncommitted>0),m=h.filter(e=>{var t;return(null!=(t=e.ahead)?t:0)>0}),x=e.incidents.filter(e=>!e.endedTs).length,U=(null!=(n=null==(t=e.expiry)?void 0:t.items)?n:[]).filter(e=>"number"==typeof e.daysLeft).sort((e,t)=>{var r,a;return(null!=(r=e.daysLeft)?r:0)-(null!=(a=t.daysLeft)?a:0)})[0];return{needing:null!=(l=null==(r=e.attention)?void 0:r.needs)?l:0,safety:null!=(i=null==(a=e.attention)?void 0:a.safety)?i:0,state:null!=(d=null==(s=e.attention)?void 0:s.state)?d:null,cleanBacked:h.filter(t=>{let r;return"clean"===(r=t.path.toLowerCase(),(0,o.YV)(e.attention,r))&&t.hasRemote}).length,...function(e){let t={sitesUp:0,sitesTotal:0,depsTotal:0,depsAnswered:0};for(let s of Array.isArray(e)?e:[]){var r,a;let e=(null==s||null==(r=s.current)?void 0:r.ok)===!0;(a=null==s?void 0:s.entry)&&"dependency"===a.role?(t.depsTotal++,e&&t.depsAnswered++):(t.sitesTotal++,e&&t.sitesUp++)}return t}(e.urls),unsavedProjects:f.length,unsavedChanges:f.reduce((e,t)=>e+t.uncommitted,0),unpushedCommits:m.reduce((e,t)=>{var r;return e+(null!=(r=t.ahead)?r:0)},0),unpushedProjects:m.length,notBackedUp:h.filter(e=>e.isGit&&e.remoteKnown&&!e.hasRemote).length,sitesQuiet:0===x,nextDate:U?{name:U.name,text:c.UI.report.dateIn(null!=(p=c.UI.ahead.kind[U.kind])?p:U.kind,U.daysLeft),judgment:null!=(u=U.judgment)?u:null}:null}}(r),V=(0,i.X2)(r.attention,r.projects),q=(null==p?void 0:p.languages)?Object.entries(p.languages).sort((e,t)=>t[1]-e[1]):[],H=q.reduce((e,t)=>{let[,r]=t;return e+r},0);return(0,a.jsxs)(n.Ay,{active:"/report",cockpit:r,children:[(0,a.jsxs)("div",{className:"pagebar",children:[(0,a.jsx)("h1",{children:(0,a.jsx)(x.T,{k:"room.report",en:c.UI.report.title})}),(0,a.jsx)("span",{className:"purpose",...(0,N.uN)(O.estate),children:(0,a.jsx)(x.T,{k:"report.purpose",en:c.UI.report.purpose})}),p&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{className:"scan",style:{marginInlineStart:"auto"},onClick:()=>{!function(e,t,r,a){let s=document.createElement("canvas");s.width=2400,s.height=1260;let n=s.getContext("2d");if(!n)return;n.scale(2,2),n.fillStyle=P.void,n.fillRect(0,0,1200,630);let l=n.createRadialGradient(983.9999999999999,-80,60,983.9999999999999,-80,700);l.addColorStop(0,"rgba(110,168,255,.10)"),l.addColorStop(1,"rgba(110,168,255,0)"),n.fillStyle=l,n.fillRect(0,0,1200,630);let o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400;return"".concat(t," ").concat(e,"px Inter, system-ui, sans-serif")},d=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400;return"".concat(t," ").concat(e,'px "IBM Plex Mono", Consolas, monospace')};n.strokeStyle="rgba(148,163,214,.25)",n.lineWidth=4,n.beginPath(),n.arc(80,74,15,0,2*Math.PI),n.stroke(),n.strokeStyle=P.accent,n.lineCap="round",n.beginPath(),n.arc(80,74,15,-Math.PI/2,5*Math.PI/6),n.stroke(),n.fillStyle=P.accent,n.beginPath(),n.arc(80,74,4.5,0,2*Math.PI),n.fill(),n.fillStyle=P.text,n.font=o(28,800),n.textBaseline="middle",n.textAlign="left",n.fillText(c.UI.report.heading,108,75),n.textAlign="right",n.font=d(15),n.fillStyle=P.faint,n.fillText((0,h.OL)(e.generatedAt),1136,75),n.textBaseline="alphabetic",r&&(n.fillStyle=P.dim,n.font=o(15),n.textAlign="left",n.fillText(L(n,r,1072),64,108));let p=1048/3,u=y(t);if([[String(u.big),u.label,"warn"===u.tone?P.warn:"ok"===u.tone?P.ok:P.dim],[String(t.cleanBacked),c.UI.report.vClean,P.ok],[0===t.sitesTotal?"-":"".concat(t.sitesUp,"/").concat(t.sitesTotal),c.UI.report.vSites,0===t.sitesTotal?P.dim:t.sitesUp===t.sitesTotal?P.ok:P.warn]].forEach((e,t)=>{let[r,a,s]=e,l=64+t*(p+12);n.fillStyle=P.panel,A(n,l,126,p,96,14),n.fill(),n.strokeStyle=P.line,n.lineWidth=1,A(n,l,126,p,96,14),n.stroke(),n.fillStyle=s,n.font=o(40,700),n.textAlign="left",n.fillText(r,l+20,184),n.fillStyle=P.dim,n.font=o(15),n.fillText(a,l+20,208)}),a){let e=(0,i.sx)(a);n.fillStyle="clean"===e.tone?P.ok:P.warn,n.font=o(17,700),n.textAlign="left",n.fillText(L(n,e.headline.en,1072),64,243)}n.fillStyle=P.faint,n.font=d(13,500),n.fillText(c.UI.report.rightNow.toUpperCase(),64,260);let f=[];f.push([c.UI.report.rUnsaved,t.unsavedProjects>0?c.UI.report.rUnsavedVal(t.unsavedProjects,t.unsavedChanges):c.UI.report.rNone,t.unsavedProjects>0?P.warn:P.ok]),t.unpushedCommits>0&&f.push([c.UI.report.rUnpushed,c.UI.report.rUnpushedVal(t.unpushedCommits,t.unpushedProjects),P.warn]),f.push([t.notBackedUp>0?c.UI.report.rNoBackup:c.UI.report.rEverythingElse,t.notBackedUp>0?c.UI.report.rNoBackupVal(t.notBackedUp):c.UI.report.rBackedUp,t.notBackedUp>0?P.warn:P.ok]),t.sitesTotal>0&&f.push([c.UI.report.rSites,t.sitesUp===t.sitesTotal?t.sitesQuiet?c.UI.report.rSitesAllUp:c.UI.report.rSitesUpNow:c.UI.report.rSitesDown(t.sitesTotal-t.sitesUp),t.sitesUp===t.sitesTotal?P.ok:P.warn]),t.nextDate&&f.push([c.UI.report.rNext,"".concat(t.nextDate.name," - ").concat(t.nextDate.text),P.dim]);let x=292;for(let[e,t,r]of f.slice(0,5)){n.fillStyle=P.dim,n.font=o(17),n.textAlign="left",n.fillText(e,64,x);let a=n.measureText(e).width;n.fillStyle=r,n.font=o(17,600),n.textAlign="right",n.fillText((0,b.Ng)(t,470-a-24,e=>n.measureText(e).width),534,x),n.strokeStyle=P.line,n.lineWidth=1,n.beginPath(),n.moveTo(64,x+12),n.lineTo(534,x+12),n.stroke(),x+=36}n.textAlign="left",n.fillStyle=P.faint,n.font=d(13,500),n.fillText(c.UI.report.inNumbers.toUpperCase(),640,260);let U=Object.entries(e.languages).sort((e,t)=>t[1]-e[1]),g=U.reduce((e,t)=>{let[,r]=t;return e+r},0);if(g>0){let e=640,t=[P.accent,"#8FB8FF","#4A7ACB","#3B5A8A"];U.slice(0,4).forEach((r,a)=>{let[,s]=r,l=s/g*496;n.fillStyle=t[a],n.fillRect(e,276,l,10),e+=l}),n.fillStyle=P.faint,n.fillRect(e,276,Math.max(0,1136-e),10)}let j=[[e.lines.toLocaleString(),c.UI.report.fLines],[String(e.projects),c.UI.report.fProjects]];U.length>0&&j.push([String(U.length),c.UI.report.fLanguages(U[0][0])]),null!=e.commits&&j.push([e.commits.toLocaleString(),c.UI.report.fCommits]),j.slice(0,4).forEach((e,t)=>{var r,a;let[s,l]=e,i=640+t%2*248,c=312+84*Math.floor(t/2);n.fillStyle=P.inset,A(n,i,c,236,68,12),n.fill(),n.strokeStyle=P.line,n.lineWidth=1,A(n,i,c,236,68,12),n.stroke(),n.fillStyle=P.text,n.font=o(24,700),n.textAlign="left",n.fillText(s,i+16,c+32),n.fillStyle=P.faint,n.font=o(14),n.fillText((a=30,(r=l).length>30?r.slice(0,a-1)+"…":r),i+16,c+54)}),e.oldestTodo&&(n.fillStyle=P.dim,n.font="italic 400 17px Inter, system-ui, sans-serif",n.textAlign="left",n.fillText(L(n,'"'.concat(e.oldestTodo.quote,'" - ').concat(c.UI.report.wTodoFrom(e.oldestTodo.from)),1072),64,512)),n.font=d(13),n.textAlign="left";let v=(0,m.dv)(n,64,604,P.text,P.accent);n.fillStyle=P.faint,n.fillText(" ".concat(c.UI.shell.footBy," ").concat(m.rM," \xb7 ").concat(c.UI.report.imageFoot),v,604);let I=document.createElement("a");I.download="your-estate-".concat((0,h.rq)(e.generatedAt),".png"),I.href=s.toDataURL("image/png"),I.click()}(p,W,C(d,M),V)},children:R("report.download",c.UI.report.download)}),(0,a.jsx)("button",{className:"btn",onClick:()=>{!function(e,t,r,a){var s;let n=function(e){var t,r,a;let{data:s,now:n,seal:l,date:o,since:i,radius:d}=e,p=[];p.push("# ".concat(c.UI.report.heading)),p.push("".concat(c.UI.report.asOf," ").concat(o)),p.push(""),i&&(p.push(i),p.push("")),d&&(p.push(d),p.push(""));let u=y(n);p.push("- ".concat(u.big," ").concat(u.label)),p.push("- ".concat(n.cleanBacked," ").concat(c.UI.report.vClean)),p.push("- ".concat(0===n.sitesTotal?"-":"".concat(n.sitesUp,"/").concat(n.sitesTotal)," ").concat(c.UI.report.vSites)),p.push(""),p.push("## ".concat(c.UI.report.rightNow)),p.push(""),p.push("- ".concat(c.UI.report.rUnsaved,": ").concat(n.unsavedProjects>0?c.UI.report.rUnsavedVal(n.unsavedProjects,n.unsavedChanges):c.UI.report.rNone)),n.unpushedCommits>0&&p.push("- ".concat(c.UI.report.rUnpushed,": ").concat(c.UI.report.rUnpushedVal(n.unpushedCommits,n.unpushedProjects))),p.push("- ".concat(n.notBackedUp>0?c.UI.report.rNoBackup:c.UI.report.rEverythingElse,": ").concat(n.notBackedUp>0?c.UI.report.rNoBackupVal(n.notBackedUp):c.UI.report.rBackedUp)),n.sitesTotal>0&&p.push("- ".concat(c.UI.report.rSites,": ").concat(n.sitesUp===n.sitesTotal?n.sitesQuiet?c.UI.report.rSitesAllUp:c.UI.report.rSitesUpNow:c.UI.report.rSitesDown(n.sitesTotal-n.sitesUp))),(null!=(t=n.depsTotal)?t:0)>0&&p.push("- ".concat(c.UI.report.rDeps,": ").concat(I(n.depsTotal,null!=(r=n.depsAnswered)?r:0))),n.nextDate&&p.push("- ".concat(c.UI.report.rNext,": ").concat(n.nextDate.name," - ").concat(n.nextDate.text)),p.push(""),p.push("## ".concat(c.UI.report.inNumbers)),p.push(""),p.push("- ".concat(s.lines.toLocaleString()," ").concat(c.UI.report.fLines));let h=null!=(a=s.excludedCopies)?a:0;p.push("- ".concat(s.projects," ").concat(c.UI.report.fProjects).concat(h>0?" (".concat(c.UI.report.fProjectsExcluded(h),")"):""));let f=Object.entries(s.languages).sort((e,t)=>t[1]-e[1]);f.length>0&&p.push("- ".concat(f.length," ").concat(c.UI.report.fLanguages(f[0][0]))),null!=s.commits&&p.push("- ".concat(s.commits.toLocaleString()," ").concat(c.UI.report.fCommits)),p.push("");let x=[];if(s.oldestTodo&&x.push('- "'.concat(s.oldestTodo.quote,'" - ').concat(c.UI.report.wTodoFrom(s.oldestTodo.from))),s.busiest&&x.push("- ".concat(c.UI.report.wBusiestFact(s.busiest.name,s.busiest.commits))),x.length>0){for(let e of(p.push("## ".concat(c.UI.report.worthKnowing)),p.push(""),x))p.push(e);p.push("")}return p.push("---"),p.push(""),l.known?(p.push("".concat(m.qt," ").concat(l.id).concat(l.version?" (".concat(l.version,")"):"")),l.proves&&p.push(l.proves)):l.note&&p.push(l.note),p.push(""),p.push("".concat(m.qt," ").concat(c.UI.shell.footBy," ").concat(m.rM," \xb7 ").concat(c.UI.report.imageFoot)),(0,v.dK)(p.join("\n"))}({data:e,now:{needing:t.needing,safety:t.safety,state:t.state,cleanBacked:t.cleanBacked,sitesUp:t.sitesUp,sitesTotal:t.sitesTotal,depsTotal:t.depsTotal,depsAnswered:t.depsAnswered,unsavedProjects:t.unsavedProjects,unsavedChanges:t.unsavedChanges,unpushedCommits:t.unpushedCommits,unpushedProjects:t.unpushedProjects,notBackedUp:t.notBackedUp,sitesQuiet:t.sitesQuiet,nextDate:t.nextDate?{name:t.nextDate.name,text:t.nextDate.text}:null},seal:e.build,date:(0,h.OL)(e.generatedAt),since:r,radius:a?(0,i.sx)(a).headline.en:null}),l=new Blob([n],{type:"text/markdown"}),o=URL.createObjectURL(l),d=document.createElement("a");s=(0,h.rq)(e.generatedAt),d.download="your-estate-".concat(s,".md"),d.href=o,d.click(),setTimeout(()=>URL.revokeObjectURL(o),2e3)}(p,W,C(d,M),V)},children:R("report.downloadText",c.UI.report.downloadText)}),(0,a.jsx)("button",{className:"btn",disabled:E,onClick:()=>{F(!0),fetch("/api/card",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{(null==e?void 0:e.card)&&function(e,t){let r=document.createElement("canvas");r.width=2160,r.height=2700;let a=r.getContext("2d");if(!a)return;a.scale(2,2);let s=(e,r)=>(0,g.tr)(t,e,r);a.fillStyle=P.void,a.fillRect(0,0,1080,1350);let n=a.createRadialGradient(540,120,80,540,120,900);n.addColorStop(0,"rgba(77,127,255,.14)"),n.addColorStop(1,"rgba(77,127,255,0)"),a.fillStyle=n,a.fillRect(0,0,1080,1350);let l=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"".concat(t?700:400," ").concat(e,"px Inter, system-ui, sans-serif")},o=e=>"400 ".concat(e,'px "IBM Plex Mono", Consolas, monospace');a.textBaseline="middle";let i=(0,h.OL)(e.generatedAt);a.font=o(20);let d=a.measureText(i).width;a.fillStyle=P.faint,a.textAlign="right",a.fillText(i,1e3,88),a.font=l(30,!0),a.fillStyle=P.text,a.textAlign="left",a.fillText(L(a,s("sec.reportHeading",c.UI.report.heading),920-d-24),80,88),a.textAlign="center",a.fillStyle=P.text,a.font=l(200,!0),a.fillText(e.lines.toLocaleString(),540,232),a.fillStyle=P.dim,a.font=l(30),a.fillText(s("card.heroLabel",c.UI.card.heroLabel).replace("{0}",String(e.projects)),540,366),a.fillStyle=P.faint,a.font=l(21),a.fillText(s("card.heroSub",c.UI.card.heroSub),540,412);let p=[[s("card.statLanguages",c.UI.card.statLanguages),String(e.languages)],...null===e.ageDays?[]:[[s("card.statAge",c.UI.card.statAge),(0,f.LS)(e.ageDays,"day")]],[s("card.statBranches",c.UI.card.statBranches),String(e.branches)],[s("card.statCommits",c.UI.card.statCommits),String(e.total)],[s("card.statReadProjects",c.UI.card.statReadProjects),String(e.readProjects)],...0!==e.busiestProject&&e.busiestProjectName?[[s("card.statBusiestProject",c.UI.card.statBusiestProject).replace("{0}",(0,f.LS)(e.busiestProject,"commit")),e.busiestProjectName]]:[]],u=e.projects>0;u||(a.fillStyle=P.dim,a.font=l(30),a.fillText(s("card.emptyEstate",c.UI.card.emptyEstate),540,512));let x=920/3;u&&p.forEach((e,t)=>{let[r,s]=e,n=Math.floor(t/3),o=80+920/3*(t%3+.5),i=512+156*n,c=(e=>{for(let t=58;t>=26;t-=4)if(a.font=l(t,!0),a.measureText(e).width<=x-16)return{font:l(t,!0),text:e};a.font=l(26,!0);let t=e;for(;t.length>1&&a.measureText(t+"…").width>x-16;)t=t.slice(0,-1);return{font:l(26,!0),text:t+"…"}})(s);a.fillStyle=P.text,a.font=c.font,a.fillText(c.text,o,i),a.fillStyle=P.faint,a.font=l(20),a.fillText(r,o,i+54)});if(u){a.fillStyle=P.faint,a.font=l(20),a.fillText(s("card.gridHead",c.UI.card.gridHead),540,784);let t=Math.round(309.5),r=824,n=Math.max(1,e.busiestDay);for(let s=0;s<12;s++)for(let l=0;l<7;l++){let o=7*s+l,i=e.days[o],c=t+39*s,d=r+39*l,p=i?i.commits:0;if(0===p)a.fillStyle="rgba(148,163,214,.10)";else{let e=Math.min(1,p/n);a.fillStyle="rgba(77,127,255,".concat((.28+.72*e).toFixed(3),")")}A(a,c,d,32,32,6),a.fill()}}u&&e.capped&&(a.fillStyle=P.faint,a.font=l(18),a.fillText(s("card.capped",c.UI.card.capped).replace("{0}",String(e.readProjects)),540,1174)),a.fillStyle=P.dim,a.font=o(18),a.fillText(e.seal.known&&e.seal.id?s("card.seal",c.UI.card.seal).replace("{0}",e.seal.id):s("card.sealNoBuild",c.UI.card.sealNoBuild),540,1218),a.font=l(20,!0);let U=s("card.foot",c.UI.card.foot),j=a.measureText(U).width;a.textAlign="left";let v=Math.round((1080-j)/2),I=(0,m.dv)(a,v,1280,P.text,P.accent);a.fillStyle=P.faint,a.font=l(20),a.fillText(" ".concat(c.UI.shell.footBy," ").concat(m.rM),I,1280);let y=document.createElement("a");y.download="af360-card-".concat((0,h.rq)(Date.now()),".png"),y.href=r.toDataURL("image/png"),y.click()}(e.card,M)}).catch(()=>{}).finally(()=>F(!1))},children:R("card.button",c.UI.card.button)})]})]}),(null==p?void 0:p.demo)&&(0,a.jsxs)("p",{className:"banner",children:[R("banner.reportLead",c.UI.report.bannerLead)," ",(0,a.jsx)("a",{className:"link",href:"/radar",children:R("banner.radarLink",c.UI.report.bannerLink)})," ",R("banner.reportTail",c.UI.report.bannerTail)]}),T?(0,a.jsx)("p",{className:"error-line",children:R("report.failed",c.UI.report.failed)}):p?0===p.projects?(0,a.jsxs)("div",{className:"empty",children:[(0,a.jsx)("p",{className:"invite",children:R("report.emptyInvite",c.UI.report.emptyInvite)}),(0,a.jsx)("p",{children:R("report.emptyLine",c.UI.report.emptyLine)}),(0,a.jsx)("a",{className:"btn primary",href:"/radar",children:R("btn.goRadar",c.UI.report.goRadar)})]}):(0,a.jsxs)("div",{className:"er",children:[(0,a.jsxs)("div",{className:"er-head",children:[(0,a.jsx)("h1",{children:(0,a.jsx)(x.T,{k:"sec.reportHeading",en:c.UI.report.heading})}),(0,a.jsxs)("span",{className:"when",children:[R("report.asOf",c.UI.report.asOf)," ",(0,a.jsx)(U.En,{children:(0,a.jsx)(n.fV,{ts:p.generatedAt,skewForm:"core"})})," - ",(0,a.jsx)(U.En,{children:new Date(p.generatedAt).toLocaleDateString([],{month:"long",day:"numeric"})})]})]}),(0,a.jsx)("div",{className:"er-sub",children:R("report.sub",c.UI.report.sub)}),(0,a.jsxs)("div",{className:"verdict",children:[(0,a.jsxs)("div",{className:"vcard ".concat(y(W).tone),children:[(0,a.jsx)("div",{className:"big",children:y(W).big}),(0,a.jsx)("div",{className:"lbl",children:R(y(W).labelKey,y(W).label)})]}),(0,a.jsxs)("div",{className:"vcard ok",children:[(0,a.jsx)("div",{className:"big",children:W.cleanBacked}),(0,a.jsx)("div",{className:"lbl",children:R("report.vClean",c.UI.report.vClean)})]}),(0,a.jsxs)("div",{className:"vcard ".concat(0===W.sitesTotal?"info":W.sitesUp===W.sitesTotal?"ok":"warn"),children:[(0,a.jsx)("div",{className:"big",children:0===W.sitesTotal?"-":"".concat(W.sitesUp,"/").concat(W.sitesTotal)}),(0,a.jsx)("div",{className:"lbl",children:R("report.vSites",c.UI.report.vSites)})]})]}),(0,a.jsxs)("div",{className:"er-block",children:[(0,a.jsx)("h4",{children:(0,a.jsx)(x.T,{k:"sec.rightNow",en:c.UI.report.rightNow})}),(0,a.jsxs)("div",{className:"er-row",children:[(0,a.jsx)("span",{className:"k",children:R("report.rUnsaved",c.UI.report.rUnsaved)}),(0,a.jsx)("span",{className:"v",style:{color:W.unsavedProjects>0?"var(--warn)":"var(--ok)"},children:W.unsavedProjects>0?c.UI.report.rUnsavedVal(W.unsavedProjects,W.unsavedChanges):R("report.rNone",c.UI.report.rNone)})]}),W.unpushedCommits>0&&(0,a.jsxs)("div",{className:"er-row",children:[(0,a.jsx)("span",{className:"k",children:R("report.rUnpushed",c.UI.report.rUnpushed)}),(0,a.jsx)("span",{className:"v",style:{color:"var(--warn)"},children:c.UI.report.rUnpushedVal(W.unpushedCommits,W.unpushedProjects)})]}),(0,a.jsxs)("div",{className:"er-row",children:[(0,a.jsx)("span",{className:"k",children:W.notBackedUp>0?R("report.rNoBackup",c.UI.report.rNoBackup):R("report.rEverythingElse",c.UI.report.rEverythingElse)}),(0,a.jsx)("span",{className:"v",style:{color:W.notBackedUp>0?"var(--warn)":"var(--ok)"},children:W.notBackedUp>0?c.UI.report.rNoBackupVal(W.notBackedUp):R("report.rBackedUp",c.UI.report.rBackedUp)})]}),W.sitesTotal>0&&(0,a.jsxs)("div",{className:"er-row",children:[(0,a.jsx)("span",{className:"k",children:R("report.rSites",c.UI.report.rSites)}),(0,a.jsx)("span",{className:"v",style:{color:W.sitesUp===W.sitesTotal?"var(--ok)":"var(--warn)"},children:W.sitesUp===W.sitesTotal?W.sitesQuiet?R("report.rSitesAllUp",c.UI.report.rSitesAllUp):R("report.rSitesUpNow",c.UI.report.rSitesUpNow):K?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(U.V,{n:W.sitesTotal-W.sitesUp})," ",R("report.rSitesDownTail","")]}):c.UI.report.rSitesDown(W.sitesTotal-W.sitesUp)})]}),W.depsTotal>0&&(0,a.jsxs)("div",{className:"er-row",children:[(0,a.jsx)("span",{className:"k",children:R("report.rDeps",c.UI.report.rDeps)}),(0,a.jsx)("span",{className:"v",children:I(W.depsTotal,W.depsAnswered)})]}),W.nextDate&&(0,a.jsxs)("div",{className:"er-row wrap",children:[(0,a.jsx)("span",{className:"k",children:R("report.rNext",c.UI.report.rNext)}),(0,a.jsxs)("span",{className:"v mono",children:[W.nextDate.name," - ",W.nextDate.text]}),W.nextDate.judgment&&(0,a.jsx)("span",{className:"er-why",children:W.nextDate.judgment})]})]}),(0,a.jsxs)("div",{className:"er-block",children:[(0,a.jsx)("h4",{children:(0,a.jsx)(x.T,{k:"sec.inNumbers",en:c.UI.report.inNumbers})}),q.length>0&&H>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"langbar",role:"img","aria-label":R("report.langAria",c.UI.report.langAria),children:[q.slice(0,4).map((e,t)=>{let[r,s]=e;return(0,a.jsx)("span",{...(0,N.uN)("".concat(r," \xb7 ").concat(s.toLocaleString()," ").concat(R("report.linesWord",c.UI.report.linesWord))),style:{inlineSize:"".concat(s/H*100,"%"),background:B[t]}},r)}),q.length>4&&(0,a.jsx)("span",{...(0,N.uN)(R("report.langRest",c.UI.report.langRest)),style:{inlineSize:"".concat(q.slice(4).reduce((e,t)=>{let[,r]=t;return e+r},0)/H*100,"%"),background:"var(--faint)"}})]}),(0,a.jsx)("div",{className:"langkey",children:q.slice(0,4).map((e,t)=>{let[r]=e;return(0,a.jsxs)("span",{children:[(0,a.jsx)("i",{style:{background:B[t]}}),r]},r)})})]}),(0,a.jsxs)("div",{className:"facts",children:[(0,a.jsxs)("div",{className:"fact",children:[(0,a.jsx)("div",{className:"n",children:p.lines.toLocaleString()}),(0,a.jsx)("div",{className:"l",children:R("report.fLines",c.UI.report.fLines)})]}),(0,a.jsxs)("div",{className:"fact",children:[(0,a.jsx)("div",{className:"n",children:p.projects}),(0,a.jsx)("div",{className:"l",children:R("report.fProjects",c.UI.report.fProjects)}),(null!=(t=p.excludedCopies)?t:0)>0&&(0,a.jsx)("div",{className:"l excl",children:K?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(U.V,{n:p.excludedCopies})," ",R("report.fProjectsExcluded","")]}):c.UI.report.fProjectsExcluded(p.excludedCopies)})]}),q.length>0&&(0,a.jsxs)("div",{className:"fact",children:[(0,a.jsx)("div",{className:"n",children:q.length}),(0,a.jsx)("div",{className:"l",children:K?(0,a.jsxs)(a.Fragment,{children:[R("report.fLanguagesTail","")," ",(0,a.jsx)(U.B,{children:q[0][0]})]}):c.UI.report.fLanguages(q[0][0])})]}),null!=p.commits&&(0,a.jsxs)("div",{className:"fact",children:[(0,a.jsx)("div",{className:"n",children:p.commits.toLocaleString()}),(0,a.jsx)("div",{className:"l",children:R("report.fCommits",c.UI.report.fCommits)})]})]})]}),u(p).length>0&&(0,a.jsxs)("div",{className:"er-block",children:[(0,a.jsx)("h4",{children:(0,a.jsx)(x.T,{k:"sec.worthKnowing",en:c.UI.report.worthKnowing})}),(0,a.jsx)("p",{className:"er-subline",children:R("report.worthKnowingSub",c.UI.report.worthKnowingSub)}),(0,a.jsx)("div",{className:"wk",children:u(p).map(e=>(0,a.jsx)(S,{row:e},e.cat+e.fact))})]})]}):(0,a.jsxs)("div",{className:"sweep-wrap",children:[(0,a.jsx)("div",{className:"sweep","aria-hidden":!0}),(0,a.jsx)("span",{children:(0,a.jsx)(w.hI,{children:R("report.counting",c.UI.report.counting)})})]})]})}function S(e){let{row:t}=e,[r,n]=(0,s.useState)(!1),l=(0,x.kj)();return(0,x.cO)(),(0,a.jsxs)("div",{className:"wkrow".concat(r?" open":""),children:[(0,a.jsx)("span",{className:"cat mono",children:l(t.catKey,t.cat)}),(0,a.jsxs)("div",{className:"fact",children:[t.factP?(0,a.jsx)(x.P,{p:t.factP}):t.fact,t.why&&(0,a.jsxs)("span",{className:"why",children:[" - ",t.whyP?(0,a.jsx)(x.P,{p:t.whyP}):t.why]})]}),(0,a.jsx)("button",{className:"b2 q wk-details","aria-expanded":r,onClick:()=>n(!r),children:r?l("btn.hide",c.UI.common.hide):l("report.detailsLabel",c.UI.report.detailsLabel)}),r&&(0,a.jsx)("div",{className:"wkdepth",children:t.detailP?(0,a.jsx)(x.P,{p:t.detailP}):t.detail})]})}let B=["var(--accent)","var(--info)","color-mix(in srgb, var(--accent) 55%, var(--panel))","color-mix(in srgb, var(--info) 40%, var(--panel))"],P={void:"#0A0D14",panel:"#0F1420",inset:"#0E1526",line:"rgba(148,163,214,.18)",text:"#E7ECF4",dim:"#9AA6BC",faint:"#5C6880",accent:"#4D7FFF",ok:"#3ECF8E",warn:"#E8B23D"};function C(e,t){if(!e)return null;let r=null===e.since?"":(0,h.OL)(e.since);return(0,j.lz)(e,(e,r)=>(0,g.tr)(t,e,r),r)}function A(e,t,r,a,s,n){e.beginPath(),e.moveTo(t+n,r),e.arcTo(t+a,r,t+a,r+s,n),e.arcTo(t+a,r+s,t,r+s,n),e.arcTo(t,r+s,t,r,n),e.arcTo(t,r,t+a,r,n),e.closePath()}function L(e,t,r){if(e.measureText(t).width<=r)return t;let a=t.split(" "),s="";for(let t of a){if(e.measureText("".concat(s).concat(s?" ":"").concat(t,"…")).width>r)break;s+=(s?" ":"")+t}return(s||t.slice(0,8))+"…"}},9576:(e,t,r)=>{Promise.resolve().then(r.bind(r,3123))}},e=>{e.O(0,[2619,3192,8050,8441,1255,7358],()=>e(e.s=9576)),_N_E=e.O()}]);