@forgefabrik/ff-ztn 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/README.md +149 -0
  2. package/dist/discover.d.ts +3 -0
  3. package/dist/discover.d.ts.map +1 -0
  4. package/dist/discover.js +18 -0
  5. package/dist/discover.js.map +1 -0
  6. package/dist/genericagent.d.ts +3 -0
  7. package/dist/genericagent.d.ts.map +1 -0
  8. package/dist/genericagent.js +40 -0
  9. package/dist/genericagent.js.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +46 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/zero-token/accounts/account-repository.d.ts +7 -0
  15. package/dist/zero-token/accounts/account-repository.d.ts.map +1 -0
  16. package/dist/zero-token/accounts/account-repository.js +37 -0
  17. package/dist/zero-token/accounts/account-repository.js.map +1 -0
  18. package/dist/zero-token/accounts/account-service.d.ts +11 -0
  19. package/dist/zero-token/accounts/account-service.d.ts.map +1 -0
  20. package/dist/zero-token/accounts/account-service.js +66 -0
  21. package/dist/zero-token/accounts/account-service.js.map +1 -0
  22. package/dist/zero-token/accounts/account-types.d.ts +42 -0
  23. package/dist/zero-token/accounts/account-types.d.ts.map +1 -0
  24. package/dist/zero-token/accounts/account-types.js +2 -0
  25. package/dist/zero-token/accounts/account-types.js.map +1 -0
  26. package/dist/zero-token/accounts/account-validation.d.ts +14 -0
  27. package/dist/zero-token/accounts/account-validation.d.ts.map +1 -0
  28. package/dist/zero-token/accounts/account-validation.js +88 -0
  29. package/dist/zero-token/accounts/account-validation.js.map +1 -0
  30. package/dist/zero-token/agent/cli.d.ts +2 -0
  31. package/dist/zero-token/agent/cli.d.ts.map +1 -0
  32. package/dist/zero-token/agent/cli.js +116 -0
  33. package/dist/zero-token/agent/cli.js.map +1 -0
  34. package/dist/zero-token/agent/external-backend.d.ts +3 -0
  35. package/dist/zero-token/agent/external-backend.d.ts.map +1 -0
  36. package/dist/zero-token/agent/external-backend.js +3 -0
  37. package/dist/zero-token/agent/external-backend.js.map +1 -0
  38. package/dist/zero-token/agent/genericagent-config.d.ts +11 -0
  39. package/dist/zero-token/agent/genericagent-config.d.ts.map +1 -0
  40. package/dist/zero-token/agent/genericagent-config.js +44 -0
  41. package/dist/zero-token/agent/genericagent-config.js.map +1 -0
  42. package/dist/zero-token/agent/genericagent-runtime.d.ts +20 -0
  43. package/dist/zero-token/agent/genericagent-runtime.d.ts.map +1 -0
  44. package/dist/zero-token/agent/genericagent-runtime.js +71 -0
  45. package/dist/zero-token/agent/genericagent-runtime.js.map +1 -0
  46. package/dist/zero-token/agent/project-init.d.ts +11 -0
  47. package/dist/zero-token/agent/project-init.d.ts.map +1 -0
  48. package/dist/zero-token/agent/project-init.js +58 -0
  49. package/dist/zero-token/agent/project-init.js.map +1 -0
  50. package/dist/zero-token/agent/yoyo-adapter.d.ts +23 -0
  51. package/dist/zero-token/agent/yoyo-adapter.d.ts.map +1 -0
  52. package/dist/zero-token/agent/yoyo-adapter.js +88 -0
  53. package/dist/zero-token/agent/yoyo-adapter.js.map +1 -0
  54. package/dist/zero-token/app-meta.d.ts +7 -0
  55. package/dist/zero-token/app-meta.d.ts.map +1 -0
  56. package/dist/zero-token/app-meta.js +7 -0
  57. package/dist/zero-token/app-meta.js.map +1 -0
  58. package/dist/zero-token/cli/doctor-command.d.ts +18 -0
  59. package/dist/zero-token/cli/doctor-command.d.ts.map +1 -0
  60. package/dist/zero-token/cli/doctor-command.js +96 -0
  61. package/dist/zero-token/cli/doctor-command.js.map +1 -0
  62. package/dist/zero-token/config/config.d.ts +56 -0
  63. package/dist/zero-token/config/config.d.ts.map +1 -0
  64. package/dist/zero-token/config/config.js +98 -0
  65. package/dist/zero-token/config/config.js.map +1 -0
  66. package/dist/zero-token/config/paths.d.ts +12 -0
  67. package/dist/zero-token/config/paths.d.ts.map +1 -0
  68. package/dist/zero-token/config/paths.js +50 -0
  69. package/dist/zero-token/config/paths.js.map +1 -0
  70. package/dist/zero-token/discovery/builtin-catalog.d.ts +13 -0
  71. package/dist/zero-token/discovery/builtin-catalog.d.ts.map +1 -0
  72. package/dist/zero-token/discovery/builtin-catalog.js +25 -0
  73. package/dist/zero-token/discovery/builtin-catalog.js.map +1 -0
  74. package/dist/zero-token/discovery/candidate-evaluator.d.ts +4 -0
  75. package/dist/zero-token/discovery/candidate-evaluator.d.ts.map +1 -0
  76. package/dist/zero-token/discovery/candidate-evaluator.js +132 -0
  77. package/dist/zero-token/discovery/candidate-evaluator.js.map +1 -0
  78. package/dist/zero-token/discovery/candidate-probe-capability.d.ts +6 -0
  79. package/dist/zero-token/discovery/candidate-probe-capability.d.ts.map +1 -0
  80. package/dist/zero-token/discovery/candidate-probe-capability.js +10 -0
  81. package/dist/zero-token/discovery/candidate-probe-capability.js.map +1 -0
  82. package/dist/zero-token/discovery/candidate-probe-evidence.d.ts +13 -0
  83. package/dist/zero-token/discovery/candidate-probe-evidence.d.ts.map +1 -0
  84. package/dist/zero-token/discovery/candidate-probe-evidence.js +53 -0
  85. package/dist/zero-token/discovery/candidate-probe-evidence.js.map +1 -0
  86. package/dist/zero-token/discovery/candidate-probe-observer.d.ts +3 -0
  87. package/dist/zero-token/discovery/candidate-probe-observer.d.ts.map +1 -0
  88. package/dist/zero-token/discovery/candidate-probe-observer.js +36 -0
  89. package/dist/zero-token/discovery/candidate-probe-observer.js.map +1 -0
  90. package/dist/zero-token/discovery/candidate-probe-runtime.d.ts +6 -0
  91. package/dist/zero-token/discovery/candidate-probe-runtime.d.ts.map +1 -0
  92. package/dist/zero-token/discovery/candidate-probe-runtime.js +120 -0
  93. package/dist/zero-token/discovery/candidate-probe-runtime.js.map +1 -0
  94. package/dist/zero-token/discovery/candidate-probe-store.d.ts +9 -0
  95. package/dist/zero-token/discovery/candidate-probe-store.d.ts.map +1 -0
  96. package/dist/zero-token/discovery/candidate-probe-store.js +66 -0
  97. package/dist/zero-token/discovery/candidate-probe-store.js.map +1 -0
  98. package/dist/zero-token/discovery/candidate-probe-types.d.ts +30 -0
  99. package/dist/zero-token/discovery/candidate-probe-types.d.ts.map +1 -0
  100. package/dist/zero-token/discovery/candidate-probe-types.js +2 -0
  101. package/dist/zero-token/discovery/candidate-probe-types.js.map +1 -0
  102. package/dist/zero-token/discovery/control-service.d.ts +8 -0
  103. package/dist/zero-token/discovery/control-service.d.ts.map +1 -0
  104. package/dist/zero-token/discovery/control-service.js +107 -0
  105. package/dist/zero-token/discovery/control-service.js.map +1 -0
  106. package/dist/zero-token/discovery/control-store.d.ts +7 -0
  107. package/dist/zero-token/discovery/control-store.d.ts.map +1 -0
  108. package/dist/zero-token/discovery/control-store.js +70 -0
  109. package/dist/zero-token/discovery/control-store.js.map +1 -0
  110. package/dist/zero-token/discovery/control-types.d.ts +39 -0
  111. package/dist/zero-token/discovery/control-types.d.ts.map +1 -0
  112. package/dist/zero-token/discovery/control-types.js +2 -0
  113. package/dist/zero-token/discovery/control-types.js.map +1 -0
  114. package/dist/zero-token/discovery/discovery-routes.d.ts +3 -0
  115. package/dist/zero-token/discovery/discovery-routes.d.ts.map +1 -0
  116. package/dist/zero-token/discovery/discovery-routes.js +130 -0
  117. package/dist/zero-token/discovery/discovery-routes.js.map +1 -0
  118. package/dist/zero-token/discovery/discovery-service.d.ts +18 -0
  119. package/dist/zero-token/discovery/discovery-service.d.ts.map +1 -0
  120. package/dist/zero-token/discovery/discovery-service.js +81 -0
  121. package/dist/zero-token/discovery/discovery-service.js.map +1 -0
  122. package/dist/zero-token/discovery/manifest.d.ts +14 -0
  123. package/dist/zero-token/discovery/manifest.d.ts.map +1 -0
  124. package/dist/zero-token/discovery/manifest.js +43 -0
  125. package/dist/zero-token/discovery/manifest.js.map +1 -0
  126. package/dist/zero-token/discovery/public-site-inspector.d.ts +10 -0
  127. package/dist/zero-token/discovery/public-site-inspector.d.ts.map +1 -0
  128. package/dist/zero-token/discovery/public-site-inspector.js +111 -0
  129. package/dist/zero-token/discovery/public-site-inspector.js.map +1 -0
  130. package/dist/zero-token/gateway/api-key-auth.d.ts +3 -0
  131. package/dist/zero-token/gateway/api-key-auth.d.ts.map +1 -0
  132. package/dist/zero-token/gateway/api-key-auth.js +59 -0
  133. package/dist/zero-token/gateway/api-key-auth.js.map +1 -0
  134. package/dist/zero-token/gateway/api-request-logger-quiet.d.ts +3 -0
  135. package/dist/zero-token/gateway/api-request-logger-quiet.d.ts.map +1 -0
  136. package/dist/zero-token/gateway/api-request-logger-quiet.js +79 -0
  137. package/dist/zero-token/gateway/api-request-logger-quiet.js.map +1 -0
  138. package/dist/zero-token/gateway/api-request-logger.d.ts +3 -0
  139. package/dist/zero-token/gateway/api-request-logger.d.ts.map +1 -0
  140. package/dist/zero-token/gateway/api-request-logger.js +67 -0
  141. package/dist/zero-token/gateway/api-request-logger.js.map +1 -0
  142. package/dist/zero-token/gateway/complete-gateway.d.ts +16 -0
  143. package/dist/zero-token/gateway/complete-gateway.d.ts.map +1 -0
  144. package/dist/zero-token/gateway/complete-gateway.js +25 -0
  145. package/dist/zero-token/gateway/complete-gateway.js.map +1 -0
  146. package/dist/zero-token/gateway/dashboard-gateway.d.ts +16 -0
  147. package/dist/zero-token/gateway/dashboard-gateway.d.ts.map +1 -0
  148. package/dist/zero-token/gateway/dashboard-gateway.js +33 -0
  149. package/dist/zero-token/gateway/dashboard-gateway.js.map +1 -0
  150. package/dist/zero-token/gateway/gateway.d.ts +2 -0
  151. package/dist/zero-token/gateway/gateway.d.ts.map +1 -0
  152. package/dist/zero-token/gateway/gateway.js +2 -0
  153. package/dist/zero-token/gateway/gateway.js.map +1 -0
  154. package/dist/zero-token/gateway/inference-dispatch.d.ts +3 -0
  155. package/dist/zero-token/gateway/inference-dispatch.d.ts.map +1 -0
  156. package/dist/zero-token/gateway/inference-dispatch.js +97 -0
  157. package/dist/zero-token/gateway/inference-dispatch.js.map +1 -0
  158. package/dist/zero-token/gateway/playground-routes.d.ts +3 -0
  159. package/dist/zero-token/gateway/playground-routes.d.ts.map +1 -0
  160. package/dist/zero-token/gateway/playground-routes.js +33 -0
  161. package/dist/zero-token/gateway/playground-routes.js.map +1 -0
  162. package/dist/zero-token/gateway/provider-runtime-routes.d.ts +3 -0
  163. package/dist/zero-token/gateway/provider-runtime-routes.d.ts.map +1 -0
  164. package/dist/zero-token/gateway/provider-runtime-routes.js +38 -0
  165. package/dist/zero-token/gateway/provider-runtime-routes.js.map +1 -0
  166. package/dist/zero-token/gateway/runtime-gateway.d.ts +20 -0
  167. package/dist/zero-token/gateway/runtime-gateway.d.ts.map +1 -0
  168. package/dist/zero-token/gateway/runtime-gateway.js +234 -0
  169. package/dist/zero-token/gateway/runtime-gateway.js.map +1 -0
  170. package/dist/zero-token/identities/google-identity-service.d.ts +27 -0
  171. package/dist/zero-token/identities/google-identity-service.d.ts.map +1 -0
  172. package/dist/zero-token/identities/google-identity-service.js +162 -0
  173. package/dist/zero-token/identities/google-identity-service.js.map +1 -0
  174. package/dist/zero-token/index.d.ts +3 -0
  175. package/dist/zero-token/index.d.ts.map +1 -0
  176. package/dist/zero-token/index.js +380 -0
  177. package/dist/zero-token/index.js.map +1 -0
  178. package/dist/zero-token/inference/browser-stream-utils.d.ts +5 -0
  179. package/dist/zero-token/inference/browser-stream-utils.d.ts.map +1 -0
  180. package/dist/zero-token/inference/browser-stream-utils.js +118 -0
  181. package/dist/zero-token/inference/browser-stream-utils.js.map +1 -0
  182. package/dist/zero-token/inference/chatgpt-browser-provider.d.ts +17 -0
  183. package/dist/zero-token/inference/chatgpt-browser-provider.d.ts.map +1 -0
  184. package/dist/zero-token/inference/chatgpt-browser-provider.js +242 -0
  185. package/dist/zero-token/inference/chatgpt-browser-provider.js.map +1 -0
  186. package/dist/zero-token/inference/chatgpt-conversation-state.d.ts +8 -0
  187. package/dist/zero-token/inference/chatgpt-conversation-state.d.ts.map +1 -0
  188. package/dist/zero-token/inference/chatgpt-conversation-state.js +60 -0
  189. package/dist/zero-token/inference/chatgpt-conversation-state.js.map +1 -0
  190. package/dist/zero-token/inference/chatgpt-direct-provider.d.ts +15 -0
  191. package/dist/zero-token/inference/chatgpt-direct-provider.d.ts.map +1 -0
  192. package/dist/zero-token/inference/chatgpt-direct-provider.js +348 -0
  193. package/dist/zero-token/inference/chatgpt-direct-provider.js.map +1 -0
  194. package/dist/zero-token/inference/chatgpt-provider.d.ts +32 -0
  195. package/dist/zero-token/inference/chatgpt-provider.d.ts.map +1 -0
  196. package/dist/zero-token/inference/chatgpt-provider.js +312 -0
  197. package/dist/zero-token/inference/chatgpt-provider.js.map +1 -0
  198. package/dist/zero-token/inference/claude-browser-provider.d.ts +16 -0
  199. package/dist/zero-token/inference/claude-browser-provider.d.ts.map +1 -0
  200. package/dist/zero-token/inference/claude-browser-provider.js +193 -0
  201. package/dist/zero-token/inference/claude-browser-provider.js.map +1 -0
  202. package/dist/zero-token/inference/claude-openclaw-provider.d.ts +14 -0
  203. package/dist/zero-token/inference/claude-openclaw-provider.d.ts.map +1 -0
  204. package/dist/zero-token/inference/claude-openclaw-provider.js +187 -0
  205. package/dist/zero-token/inference/claude-openclaw-provider.js.map +1 -0
  206. package/dist/zero-token/inference/glm-browser-provider.d.ts +15 -0
  207. package/dist/zero-token/inference/glm-browser-provider.d.ts.map +1 -0
  208. package/dist/zero-token/inference/glm-browser-provider.js +166 -0
  209. package/dist/zero-token/inference/glm-browser-provider.js.map +1 -0
  210. package/dist/zero-token/inference/inference-provider.d.ts +44 -0
  211. package/dist/zero-token/inference/inference-provider.d.ts.map +1 -0
  212. package/dist/zero-token/inference/inference-provider.js +32 -0
  213. package/dist/zero-token/inference/inference-provider.js.map +1 -0
  214. package/dist/zero-token/inference/model-registry.d.ts +28 -0
  215. package/dist/zero-token/inference/model-registry.d.ts.map +1 -0
  216. package/dist/zero-token/inference/model-registry.js +48 -0
  217. package/dist/zero-token/inference/model-registry.js.map +1 -0
  218. package/dist/zero-token/inference/qwen-browser-provider.d.ts +14 -0
  219. package/dist/zero-token/inference/qwen-browser-provider.d.ts.map +1 -0
  220. package/dist/zero-token/inference/qwen-browser-provider.js +227 -0
  221. package/dist/zero-token/inference/qwen-browser-provider.js.map +1 -0
  222. package/dist/zero-token/inference/stream.d.ts +15 -0
  223. package/dist/zero-token/inference/stream.d.ts.map +1 -0
  224. package/dist/zero-token/inference/stream.js +94 -0
  225. package/dist/zero-token/inference/stream.js.map +1 -0
  226. package/dist/zero-token/inference/types.d.ts +94 -0
  227. package/dist/zero-token/inference/types.d.ts.map +1 -0
  228. package/dist/zero-token/inference/types.js +5 -0
  229. package/dist/zero-token/inference/types.js.map +1 -0
  230. package/dist/zero-token/logger.d.ts +4 -0
  231. package/dist/zero-token/logger.d.ts.map +1 -0
  232. package/dist/zero-token/logger.js +27 -0
  233. package/dist/zero-token/logger.js.map +1 -0
  234. package/dist/zero-token/logging/log-events.d.ts +17 -0
  235. package/dist/zero-token/logging/log-events.d.ts.map +1 -0
  236. package/dist/zero-token/logging/log-events.js +74 -0
  237. package/dist/zero-token/logging/log-events.js.map +1 -0
  238. package/dist/zero-token/logging/log-routes.d.ts +3 -0
  239. package/dist/zero-token/logging/log-routes.d.ts.map +1 -0
  240. package/dist/zero-token/logging/log-routes.js +68 -0
  241. package/dist/zero-token/logging/log-routes.js.map +1 -0
  242. package/dist/zero-token/models/model-cache.d.ts +7 -0
  243. package/dist/zero-token/models/model-cache.d.ts.map +1 -0
  244. package/dist/zero-token/models/model-cache.js +58 -0
  245. package/dist/zero-token/models/model-cache.js.map +1 -0
  246. package/dist/zero-token/models/model-normalization.d.ts +4 -0
  247. package/dist/zero-token/models/model-normalization.d.ts.map +1 -0
  248. package/dist/zero-token/models/model-normalization.js +33 -0
  249. package/dist/zero-token/models/model-normalization.js.map +1 -0
  250. package/dist/zero-token/models/model-service.d.ts +6 -0
  251. package/dist/zero-token/models/model-service.d.ts.map +1 -0
  252. package/dist/zero-token/models/model-service.js +110 -0
  253. package/dist/zero-token/models/model-service.js.map +1 -0
  254. package/dist/zero-token/models/model-types.d.ts +28 -0
  255. package/dist/zero-token/models/model-types.d.ts.map +1 -0
  256. package/dist/zero-token/models/model-types.js +2 -0
  257. package/dist/zero-token/models/model-types.js.map +1 -0
  258. package/dist/zero-token/multi-account/router.d.ts +43 -0
  259. package/dist/zero-token/multi-account/router.d.ts.map +1 -0
  260. package/dist/zero-token/multi-account/router.js +94 -0
  261. package/dist/zero-token/multi-account/router.js.map +1 -0
  262. package/dist/zero-token/providers/browser-bridge-jobs.d.ts +26 -0
  263. package/dist/zero-token/providers/browser-bridge-jobs.d.ts.map +1 -0
  264. package/dist/zero-token/providers/browser-bridge-jobs.js +119 -0
  265. package/dist/zero-token/providers/browser-bridge-jobs.js.map +1 -0
  266. package/dist/zero-token/providers/browser-bridge-routes.d.ts +3 -0
  267. package/dist/zero-token/providers/browser-bridge-routes.d.ts.map +1 -0
  268. package/dist/zero-token/providers/browser-bridge-routes.js +71 -0
  269. package/dist/zero-token/providers/browser-bridge-routes.js.map +1 -0
  270. package/dist/zero-token/providers/browser.d.ts +47 -0
  271. package/dist/zero-token/providers/browser.d.ts.map +1 -0
  272. package/dist/zero-token/providers/browser.js +330 -0
  273. package/dist/zero-token/providers/browser.js.map +1 -0
  274. package/dist/zero-token/providers/chatgpt/chatgpt-account-info.d.ts +12 -0
  275. package/dist/zero-token/providers/chatgpt/chatgpt-account-info.d.ts.map +1 -0
  276. package/dist/zero-token/providers/chatgpt/chatgpt-account-info.js +66 -0
  277. package/dist/zero-token/providers/chatgpt/chatgpt-account-info.js.map +1 -0
  278. package/dist/zero-token/providers/chatgpt/chatgpt-auth.d.ts +9 -0
  279. package/dist/zero-token/providers/chatgpt/chatgpt-auth.d.ts.map +1 -0
  280. package/dist/zero-token/providers/chatgpt/chatgpt-auth.js +81 -0
  281. package/dist/zero-token/providers/chatgpt/chatgpt-auth.js.map +1 -0
  282. package/dist/zero-token/providers/chatgpt/chatgpt-browser.d.ts +21 -0
  283. package/dist/zero-token/providers/chatgpt/chatgpt-browser.d.ts.map +1 -0
  284. package/dist/zero-token/providers/chatgpt/chatgpt-browser.js +64 -0
  285. package/dist/zero-token/providers/chatgpt/chatgpt-browser.js.map +1 -0
  286. package/dist/zero-token/providers/chatgpt/chatgpt-errors.d.ts +22 -0
  287. package/dist/zero-token/providers/chatgpt/chatgpt-errors.d.ts.map +1 -0
  288. package/dist/zero-token/providers/chatgpt/chatgpt-errors.js +44 -0
  289. package/dist/zero-token/providers/chatgpt/chatgpt-errors.js.map +1 -0
  290. package/dist/zero-token/providers/chatgpt/chatgpt-session.d.ts +10 -0
  291. package/dist/zero-token/providers/chatgpt/chatgpt-session.d.ts.map +1 -0
  292. package/dist/zero-token/providers/chatgpt/chatgpt-session.js +71 -0
  293. package/dist/zero-token/providers/chatgpt/chatgpt-session.js.map +1 -0
  294. package/dist/zero-token/providers/chatgpt/chatgpt-types.d.ts +36 -0
  295. package/dist/zero-token/providers/chatgpt/chatgpt-types.d.ts.map +1 -0
  296. package/dist/zero-token/providers/chatgpt/chatgpt-types.js +2 -0
  297. package/dist/zero-token/providers/chatgpt/chatgpt-types.js.map +1 -0
  298. package/dist/zero-token/providers/chatgpt-web-auth.d.ts +10 -0
  299. package/dist/zero-token/providers/chatgpt-web-auth.d.ts.map +1 -0
  300. package/dist/zero-token/providers/chatgpt-web-auth.js +143 -0
  301. package/dist/zero-token/providers/chatgpt-web-auth.js.map +1 -0
  302. package/dist/zero-token/providers/chatgpt-web-models.d.ts +8 -0
  303. package/dist/zero-token/providers/chatgpt-web-models.d.ts.map +1 -0
  304. package/dist/zero-token/providers/chatgpt-web-models.js +99 -0
  305. package/dist/zero-token/providers/chatgpt-web-models.js.map +1 -0
  306. package/dist/zero-token/providers/chatgpt-web-validator.d.ts +8 -0
  307. package/dist/zero-token/providers/chatgpt-web-validator.d.ts.map +1 -0
  308. package/dist/zero-token/providers/chatgpt-web-validator.js +79 -0
  309. package/dist/zero-token/providers/chatgpt-web-validator.js.map +1 -0
  310. package/dist/zero-token/providers/claude-web-auth.d.ts +3 -0
  311. package/dist/zero-token/providers/claude-web-auth.d.ts.map +1 -0
  312. package/dist/zero-token/providers/claude-web-auth.js +109 -0
  313. package/dist/zero-token/providers/claude-web-auth.js.map +1 -0
  314. package/dist/zero-token/providers/claude-web-models.d.ts +3 -0
  315. package/dist/zero-token/providers/claude-web-models.d.ts.map +1 -0
  316. package/dist/zero-token/providers/claude-web-models.js +71 -0
  317. package/dist/zero-token/providers/claude-web-models.js.map +1 -0
  318. package/dist/zero-token/providers/claude-web-validator.d.ts +3 -0
  319. package/dist/zero-token/providers/claude-web-validator.d.ts.map +1 -0
  320. package/dist/zero-token/providers/claude-web-validator.js +57 -0
  321. package/dist/zero-token/providers/claude-web-validator.js.map +1 -0
  322. package/dist/zero-token/providers/deepseek-web-auth.d.ts +7 -0
  323. package/dist/zero-token/providers/deepseek-web-auth.d.ts.map +1 -0
  324. package/dist/zero-token/providers/deepseek-web-auth.js +69 -0
  325. package/dist/zero-token/providers/deepseek-web-auth.js.map +1 -0
  326. package/dist/zero-token/providers/deepseek-web-validator.d.ts +3 -0
  327. package/dist/zero-token/providers/deepseek-web-validator.d.ts.map +1 -0
  328. package/dist/zero-token/providers/deepseek-web-validator.js +24 -0
  329. package/dist/zero-token/providers/deepseek-web-validator.js.map +1 -0
  330. package/dist/zero-token/providers/doubao-web-auth.d.ts +7 -0
  331. package/dist/zero-token/providers/doubao-web-auth.d.ts.map +1 -0
  332. package/dist/zero-token/providers/doubao-web-auth.js +44 -0
  333. package/dist/zero-token/providers/doubao-web-auth.js.map +1 -0
  334. package/dist/zero-token/providers/gemini-web-auth.d.ts +7 -0
  335. package/dist/zero-token/providers/gemini-web-auth.d.ts.map +1 -0
  336. package/dist/zero-token/providers/gemini-web-auth.js +47 -0
  337. package/dist/zero-token/providers/gemini-web-auth.js.map +1 -0
  338. package/dist/zero-token/providers/glm-intl-web-auth.d.ts +4 -0
  339. package/dist/zero-token/providers/glm-intl-web-auth.d.ts.map +1 -0
  340. package/dist/zero-token/providers/glm-intl-web-auth.js +53 -0
  341. package/dist/zero-token/providers/glm-intl-web-auth.js.map +1 -0
  342. package/dist/zero-token/providers/glm-web-auth.d.ts +3 -0
  343. package/dist/zero-token/providers/glm-web-auth.d.ts.map +1 -0
  344. package/dist/zero-token/providers/glm-web-auth.js +42 -0
  345. package/dist/zero-token/providers/glm-web-auth.js.map +1 -0
  346. package/dist/zero-token/providers/glm-web-models.d.ts +3 -0
  347. package/dist/zero-token/providers/glm-web-models.d.ts.map +1 -0
  348. package/dist/zero-token/providers/glm-web-models.js +52 -0
  349. package/dist/zero-token/providers/glm-web-models.js.map +1 -0
  350. package/dist/zero-token/providers/grok-web-auth.d.ts +7 -0
  351. package/dist/zero-token/providers/grok-web-auth.d.ts.map +1 -0
  352. package/dist/zero-token/providers/grok-web-auth.js +47 -0
  353. package/dist/zero-token/providers/grok-web-auth.js.map +1 -0
  354. package/dist/zero-token/providers/identity/chatgpt-identity.d.ts +15 -0
  355. package/dist/zero-token/providers/identity/chatgpt-identity.d.ts.map +1 -0
  356. package/dist/zero-token/providers/identity/chatgpt-identity.js +15 -0
  357. package/dist/zero-token/providers/identity/chatgpt-identity.js.map +1 -0
  358. package/dist/zero-token/providers/identity/identity-validation.d.ts +3 -0
  359. package/dist/zero-token/providers/identity/identity-validation.d.ts.map +1 -0
  360. package/dist/zero-token/providers/identity/identity-validation.js +74 -0
  361. package/dist/zero-token/providers/identity/identity-validation.js.map +1 -0
  362. package/dist/zero-token/providers/identity/provider-identity-readiness.d.ts +16 -0
  363. package/dist/zero-token/providers/identity/provider-identity-readiness.d.ts.map +1 -0
  364. package/dist/zero-token/providers/identity/provider-identity-readiness.js +56 -0
  365. package/dist/zero-token/providers/identity/provider-identity-readiness.js.map +1 -0
  366. package/dist/zero-token/providers/identity/provider-identity.d.ts +88 -0
  367. package/dist/zero-token/providers/identity/provider-identity.d.ts.map +1 -0
  368. package/dist/zero-token/providers/identity/provider-identity.js +17 -0
  369. package/dist/zero-token/providers/identity/provider-identity.js.map +1 -0
  370. package/dist/zero-token/providers/kimi-web-auth.d.ts +7 -0
  371. package/dist/zero-token/providers/kimi-web-auth.d.ts.map +1 -0
  372. package/dist/zero-token/providers/kimi-web-auth.js +50 -0
  373. package/dist/zero-token/providers/kimi-web-auth.js.map +1 -0
  374. package/dist/zero-token/providers/perplexity-web-auth.d.ts +7 -0
  375. package/dist/zero-token/providers/perplexity-web-auth.d.ts.map +1 -0
  376. package/dist/zero-token/providers/perplexity-web-auth.js +68 -0
  377. package/dist/zero-token/providers/perplexity-web-auth.js.map +1 -0
  378. package/dist/zero-token/providers/perplexity-web-validator.d.ts +3 -0
  379. package/dist/zero-token/providers/perplexity-web-validator.d.ts.map +1 -0
  380. package/dist/zero-token/providers/perplexity-web-validator.js +33 -0
  381. package/dist/zero-token/providers/perplexity-web-validator.js.map +1 -0
  382. package/dist/zero-token/providers/provider-account-resolver.d.ts +9 -0
  383. package/dist/zero-token/providers/provider-account-resolver.d.ts.map +1 -0
  384. package/dist/zero-token/providers/provider-account-resolver.js +28 -0
  385. package/dist/zero-token/providers/provider-account-resolver.js.map +1 -0
  386. package/dist/zero-token/providers/provider-browser-profiles.d.ts +14 -0
  387. package/dist/zero-token/providers/provider-browser-profiles.d.ts.map +1 -0
  388. package/dist/zero-token/providers/provider-browser-profiles.js +78 -0
  389. package/dist/zero-token/providers/provider-browser-profiles.js.map +1 -0
  390. package/dist/zero-token/providers/provider-catalog.d.ts +7 -0
  391. package/dist/zero-token/providers/provider-catalog.d.ts.map +1 -0
  392. package/dist/zero-token/providers/provider-catalog.js +27 -0
  393. package/dist/zero-token/providers/provider-catalog.js.map +1 -0
  394. package/dist/zero-token/providers/provider-login-jobs.d.ts +21 -0
  395. package/dist/zero-token/providers/provider-login-jobs.d.ts.map +1 -0
  396. package/dist/zero-token/providers/provider-login-jobs.js +185 -0
  397. package/dist/zero-token/providers/provider-login-jobs.js.map +1 -0
  398. package/dist/zero-token/providers/provider-runtime-registry.d.ts +16 -0
  399. package/dist/zero-token/providers/provider-runtime-registry.d.ts.map +1 -0
  400. package/dist/zero-token/providers/provider-runtime-registry.js +88 -0
  401. package/dist/zero-token/providers/provider-runtime-registry.js.map +1 -0
  402. package/dist/zero-token/providers/provider-runtime-registry.test.d.ts +2 -0
  403. package/dist/zero-token/providers/provider-runtime-registry.test.d.ts.map +1 -0
  404. package/dist/zero-token/providers/provider-runtime-registry.test.js +26 -0
  405. package/dist/zero-token/providers/provider-runtime-registry.test.js.map +1 -0
  406. package/dist/zero-token/providers/provider-types.d.ts +72 -0
  407. package/dist/zero-token/providers/provider-types.d.ts.map +1 -0
  408. package/dist/zero-token/providers/provider-types.js +2 -0
  409. package/dist/zero-token/providers/provider-types.js.map +1 -0
  410. package/dist/zero-token/providers/qwen-cn-web-auth.d.ts +4 -0
  411. package/dist/zero-token/providers/qwen-cn-web-auth.d.ts.map +1 -0
  412. package/dist/zero-token/providers/qwen-cn-web-auth.js +58 -0
  413. package/dist/zero-token/providers/qwen-cn-web-auth.js.map +1 -0
  414. package/dist/zero-token/providers/qwen-web-auth.d.ts +3 -0
  415. package/dist/zero-token/providers/qwen-web-auth.d.ts.map +1 -0
  416. package/dist/zero-token/providers/qwen-web-auth.js +67 -0
  417. package/dist/zero-token/providers/qwen-web-auth.js.map +1 -0
  418. package/dist/zero-token/providers/qwen-web-models.d.ts +3 -0
  419. package/dist/zero-token/providers/qwen-web-models.d.ts.map +1 -0
  420. package/dist/zero-token/providers/qwen-web-models.js +27 -0
  421. package/dist/zero-token/providers/qwen-web-models.js.map +1 -0
  422. package/dist/zero-token/providers/registry.d.ts +4 -0
  423. package/dist/zero-token/providers/registry.d.ts.map +1 -0
  424. package/dist/zero-token/providers/registry.js +39 -0
  425. package/dist/zero-token/providers/registry.js.map +1 -0
  426. package/dist/zero-token/providers/registry.next.d.ts +4 -0
  427. package/dist/zero-token/providers/registry.next.d.ts.map +1 -0
  428. package/dist/zero-token/providers/registry.next.js +30 -0
  429. package/dist/zero-token/providers/registry.next.js.map +1 -0
  430. package/dist/zero-token/providers/remote-browser-session.d.ts +7 -0
  431. package/dist/zero-token/providers/remote-browser-session.d.ts.map +1 -0
  432. package/dist/zero-token/providers/remote-browser-session.js +85 -0
  433. package/dist/zero-token/providers/remote-browser-session.js.map +1 -0
  434. package/dist/zero-token/providers/xiaomimo-web-auth.d.ts +7 -0
  435. package/dist/zero-token/providers/xiaomimo-web-auth.d.ts.map +1 -0
  436. package/dist/zero-token/providers/xiaomimo-web-auth.js +44 -0
  437. package/dist/zero-token/providers/xiaomimo-web-auth.js.map +1 -0
  438. package/dist/zero-token/quota/quota-manager.d.ts +2 -0
  439. package/dist/zero-token/quota/quota-manager.d.ts.map +1 -0
  440. package/dist/zero-token/quota/quota-manager.js +2 -0
  441. package/dist/zero-token/quota/quota-manager.js.map +1 -0
  442. package/dist/zero-token/quota/runtime-quota-manager.d.ts +19 -0
  443. package/dist/zero-token/quota/runtime-quota-manager.d.ts.map +1 -0
  444. package/dist/zero-token/quota/runtime-quota-manager.js +118 -0
  445. package/dist/zero-token/quota/runtime-quota-manager.js.map +1 -0
  446. package/dist/zero-token/session/session-service.d.ts +11 -0
  447. package/dist/zero-token/session/session-service.d.ts.map +1 -0
  448. package/dist/zero-token/session/session-service.js +169 -0
  449. package/dist/zero-token/session/session-service.js.map +1 -0
  450. package/dist/zero-token/session/session-types.d.ts +22 -0
  451. package/dist/zero-token/session/session-types.d.ts.map +1 -0
  452. package/dist/zero-token/session/session-types.js +2 -0
  453. package/dist/zero-token/session/session-types.js.map +1 -0
  454. package/dist/zero-token/storage/atomic-json-store.d.ts +10 -0
  455. package/dist/zero-token/storage/atomic-json-store.d.ts.map +1 -0
  456. package/dist/zero-token/storage/atomic-json-store.js +60 -0
  457. package/dist/zero-token/storage/atomic-json-store.js.map +1 -0
  458. package/package.json +59 -0
  459. package/web-console/dist/assets/index-B_4vEorW.css +1 -0
  460. package/web-console/dist/assets/index-DFs1Oo-1.js +27 -0
  461. package/web-console/dist/index.html +20 -0
  462. package/web-console/dist/nova-mark.svg +18 -0
  463. package/web-console/dist/nova-network.svg +36 -0
@@ -0,0 +1,27 @@
1
+ (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);var e={},t=Symbol(`uninitialized`),n=`http://www.w3.org/1999/xhtml`,r=Array.isArray,i=Array.prototype.indexOf,a=Array.prototype.includes,o=Array.from,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyDescriptors,u=Object.prototype,d=Array.prototype,f=Object.getPrototypeOf,p=Object.isExtensible,m=()=>{};function h(e){for(var t=0;t<e.length;t++)e[t]()}function g(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,T=65536,E=1<<19,D=1<<20,O=1<<25,k=65536,A=1<<21,j=1<<22,M=1<<23,N=Symbol(`$state`),ee=Symbol(`legacy props`),P=Symbol(``),te=Symbol(`attributes`),ne=Symbol(`class`),re=Symbol(`style`),ie=Symbol(`text`),ae=Symbol(`form reset`),oe=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},se=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ce(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function le(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ue(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function de(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function fe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function pe(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function me(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function he(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function ge(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function _e(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function ve(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function ye(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}function be(){console.warn(`https://svelte.dev/e/derived_inert`)}function xe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Se(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ce(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var F=!1;function we(e){F=e}var I;function Te(t){if(t===null)throw xe(),e;return I=t}function Ee(){return Te(dn(I))}function L(t){if(F){if(dn(I)!==null)throw xe(),e;I=t}}function De(e=1){if(F){for(var t=e,n=I;t--;)n=dn(n);I=n}}function Oe(e=!0){for(var t=0,n=I;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=dn(n);e&&n.remove(),n=i}}function ke(t){if(!t||t.nodeType!==8)throw xe(),e;return t.data}function Ae(e){return e===this.v}function je(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Me(e){return!je(e,this.v)}var Ne=!1,Pe=!1;function Fe(){Pe=!0}var Ie=null;function Le(e){Ie=e}function Re(e,t=!1,n){Ie={p:Ie,i:!1,c:null,e:null,s:e,x:null,r:K,l:Pe&&!t?{s:null,u:null,$:[]}:null}}function ze(e){var t=Ie,n=t.e;if(n!==null){t.e=null;for(var r of n)On(r)}return e!==void 0&&(t.x=e),t.i=!0,Ie=t.p,e??{}}function Be(){return!Pe||Ie!==null&&Ie.l===null}var Ve=[];function He(){var e=Ve;Ve=[],h(e)}function Ue(e){if(Ve.length===0&&!Ot){var t=Ve;queueMicrotask(()=>{t===Ve&&He()})}Ve.push(e)}function We(){for(;Ve.length>0;)He()}function Ge(e){var t=K;if(t===null)return G.f|=M,e;if(!(t.f&32768)&&!(t.f&4))throw e;Ke(e,t)}function Ke(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var qe=~(y|b|v);function Je(e,t){e.f=e.f&qe|t}function Ye(e){e.f&512||e.deps===null?Je(e,v):Je(e,b)}function Xe(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=k,Xe(t.deps))}function Ze(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),Xe(e.deps),Je(e,v)}function Qe(e,t,n){if(e==null)return t(void 0),n&&n(void 0),m;let r=yr(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}function $e(e){let t;return Qe(e,e=>t=e)(),t}var et=!1,tt=!1,nt=Symbol(`unmounted`);function rt(e,t,n){let r=n[t]??={store:null,source:Jt(void 0),unsubscribe:m};if(r.store!==e&&!(nt in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=m;else{var i=!0;r.unsubscribe=Qe(e,e=>{i?r.source.v=e:V(r.source,e)}),i=!1}return e&&nt in n?$e(e):q(r.source)}function it(){let e={};function t(){En(()=>{for(var t in e)e[t].unsubscribe();s(e,nt,{enumerable:!1,value:!0})})}return[e,t]}function at(e){var t=tt;try{return tt=!1,[e(),tt]}finally{tt=t}}function ot(e){let t=0,n=qt(0),r;return()=>{Tn()&&(q(n),Mn(()=>(t===0&&(r=yr(()=>e(()=>Qt(n)))),t+=1,()=>{Ue(()=>{--t,t===0&&(r?.(),r=void 0,Qt(n))})})))}}var st=T|E;function ct(e,t,n,r){new lt(e,t,n,r)}var lt=class{parent;is_pending=!1;transform_error;#e;#t=F?I:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=ot(()=>(this.#m=qt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=K;t.b=this,t.f|=128,n(e)},this.parent=K.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Nn(()=>{if(F){let e=this.#t;Ee();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},st),F&&(this.#e=I)}#g(){try{this.#a=Pn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Pn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Pn(()=>e(this.#e)),Ue(()=>{var e=this.#c=document.createDocumentFragment(),t=ln();e.append(t),this.#a=this.#x(()=>Pn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Vn(this.#o,()=>{this.#o=null}),this.#b(z))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Pn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Gn(this.#a,e);let t=this.#n.pending;this.#o=Pn(()=>t(this.#e))}else this.#b(z)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){Ze(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=K,n=G,r=Ie;Qn(this.#i),Zn(this.#i),Le(this.#i.ctx);try{return Pt.ensure(),e()}catch(e){return Ge(e),null}finally{Qn(t),Zn(n),Le(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Vn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Ue(()=>{this.#d=!1,this.#m&&Yt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),q(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;z?.is_fork?(this.#a&&z.skip_effect(this.#a),this.#o&&z.skip_effect(this.#o),this.#s&&z.skip_effect(this.#s),z.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Rn(this.#a),null),this.#o&&=(Rn(this.#o),null),this.#s&&=(Rn(this.#s),null),F&&(Te(this.#t),De(),Te(Oe()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ce();return}r=!0,i&&ye(),this.#s!==null&&Vn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Ke(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Pn(()=>{var t=K;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Ke(e,this.#i.parent),null}}))};Ue(()=>{var t;try{t=this.transform_error(e)}catch(e){Ke(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Ke(e,this.#i&&this.#i.parent)):o(t)})}};function ut(e,t,n,r){let i=Be()?mt:_t;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=K,c=dt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){Ke(e,s)}ft()}}var d=pt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>gt(e))).then(u).catch(e=>Ke(e,s)).finally(d)}l?l.then(()=>{c(),f(),ft()}):f()}function dt(){var e=K,t=G,n=Ie,r=z;return function(i=!0){Qn(e),Zn(t),Le(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function ft(e=!0){Qn(null),Zn(null),Le(null),e&&z?.deactivate()}function pt(){var e=K,t=e.b,n=z,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function mt(e){var n=2|y;return K!==null&&(K.f|=E),{ctx:Ie,deps:null,effects:null,equals:Ae,f:n,fn:e,reactions:null,rv:0,v:t,wv:0,parent:K,ac:null}}var ht=Symbol(`obsolete`);function gt(e,n,r){let i=K;i===null&&le();var a=void 0,o=qt(t),s=!G,c=new Set;return jn(()=>{var t=K,n=g();a=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==oe&&n.reject(e)}).finally(ft)}catch(e){n.reject(e),ft()}var r=z;if(s){if(t.f&32768)var l=pt();if(i.b?.is_rendered())r.async_deriveds.get(t)?.reject(ht);else for(let e of c.values())e.reject(ht);c.add(n),r.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),c.delete(n),t!==ht&&(r.activate(),t?(o.f|=M,Yt(o,t)):(o.f&8388608&&(o.f^=M),Yt(o,e)),r.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),En(()=>{for(let e of c)e.reject(ht)}),new Promise(e=>{function t(n){function r(){n===a?e(o):t(a)}n.then(r,r)}t(a)})}function R(e){let t=mt(e);return Ne||er(t),t}function _t(e){let t=mt(e);return t.equals=Me,t}function vt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Rn(t[n])}}function yt(e){var n,r=K,i=e.parent;if(!Jn&&i!==null&&e.v!==t&&i.f&24576)return be(),e.v;Qn(i);try{e.f&=~k,vt(e),n=fr(e)}finally{Qn(r)}return n}function bt(e){var t=yt(e);if(!e.equals(t)&&(e.wv=lr(),(!z?.is_fork||e.deps===null)&&(z===null?e.v=t:(z.capture(e,t,!0),Tt?.capture(e,t,!0)),e.deps===null))){Je(e,v);return}Jn||(Et===null?Ye(e):(Tn()||z?.is_fork)&&Et.set(e,t))}function xt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(oe),t.fn!==null&&(t.teardown=m),t.ac=null,mr(t,0),In(t))}function St(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&hr(t)}var Ct=null,wt=null,z=null,Tt=null,Et=null,Dt=null,Ot=!1,kt=!1,At=null,jt=null,Mt=0,Nt=1,Pt=class e{id=Nt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){wt===null?Ct=wt=this:(wt.#n=this,this.#t=wt),wt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)Je(r,y),t(r);for(r of n.m)Je(r,b),t(r)}this.#p.add(e)}#g(){this.#e=!0,Mt++>1e3&&(this.#S(),It());for(let e of this.#u)this.#d.delete(e),Je(e,y),this.schedule(e);for(let e of this.#d)Je(e,b),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=At=[],r=[],i=jt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Ut(e),this.#h()||this.discard(),t}if(z=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(At=null,jt=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Ht(e,t);i.length>0&&z.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Tt=this,Rt(r),Rt(n),Tt=null,this.#s?.resolve();var s=z;if(this.#a===0&&(this.#c.length===0||s!==null)&&(this.#S(),Ne&&(this.#x(),z=s)),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):Ne&&i&16777224?n.push(r):ur(r)&&(i&16&&this.#d.add(r),hr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),Je(i,y),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),z=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)Ze(e[t],this.#u,this.#d)}capture(e,n,r=!1){e.v!==t&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[n,r]),Et?.set(e,n)),this.is_fork||(e.v=n)}activate(){z=this}deactivate(){z=null,Et=null}flush(){try{kt=!0,z=this,this.#g()}finally{Mt=0,Dt=null,At=null,jt=null,kt=!1,z=null,Et=null,Gt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(ht);this.#S(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}#x(){for(let u=Ct;u!==null;u=u.#n){var e=u.id<this.id,t=[];for(let[r,[i,a]]of this.current){if(u.current.has(r)){var n=u.current.get(r)[0];if(e&&i!==n)u.current.set(r,[i,a]);else continue}t.push(r)}if(e)for(let[e,t]of this.async_deriveds){let n=u.async_deriveds.get(e);n&&t.promise.then(n.resolve).catch(n.reject)}var r=[...u.current.keys()].filter(e=>!u.current.get(e)[1]);if(!(!u.#e||r.length===0)){var i=r.filter(e=>!this.current.has(e));if(i.length===0)e&&u.discard();else if(t.length>0){if(e)for(let e of this.#p)u.unskip_effect(e,e=>{e.f&4194320?u.schedule(e):u.#b([e])});u.activate();var a=new Set,o=new Map;for(var s of t)zt(s,i,a,o);o=new Map;var c=[...u.current].filter(([e,t])=>{let n=this.current.get(e);return n?n[0]!==t[0]||n[1]!==t[1]:!0}).map(([e])=>e);if(c.length>0)for(let e of this.#l)!(e.f&155648)&&Bt(e,c,o)&&(e.f&4194320?(Je(e,y),u.schedule(e)):u.#u.add(e));if(u.#c.length>0&&!u.#m){u.apply();for(var l of u.#c)u.#_(l,[],[]);u.#c=[]}u.deactivate()}}}}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,Ue(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(z===null){let t=z=new e;!kt&&!Ot&&Ue(()=>{t.#e||t.flush()})}return z}apply(){if(!Ne||!this.is_fork&&this.#t===null&&this.#n===null){Et=null;return}Et=new Map;for(let[e,[t]]of this.current)Et.set(e,t);for(let t=Ct;t!==null;t=t.#n)if(!(t===this||t.is_fork)){var e=!1;if(t.id<this.id){for(let[n,[,r]]of t.current)if(!r&&this.current.has(n)){e=!0;break}}if(!e)for(let[e,n]of t.previous)Et.has(e)||Et.set(e,n)}}schedule(e){if(Dt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(At!==null&&t===K&&(Ne||(G===null||!(G.f&2))&&!et))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#c.push(t)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null?Ct=t:e.#n=t,t===null?wt=e:t.#t=e,this.linked=!1}}};function Ft(e){var t=Ot;Ot=!0;try{var n;for(e&&(z!==null&&!z.is_fork&&z.flush(),n=e());;){if(We(),z===null)return n;z.flush()}}finally{Ot=t}}function It(){try{me()}catch(e){Ke(e,Dt)}}var Lt=null;function Rt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&ur(r)&&(Lt=new Set,hr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&Bn(r),Lt?.size>0)){Gt.clear();for(let e of Lt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Lt.has(n)&&(Lt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||hr(n)}}Lt.clear()}}Lt=null}}function zt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?zt(i,t,n,r):e&4194320&&!(e&2048)&&Bt(i,t,r)&&(Je(i,y),Vt(i))}}function Bt(e,t,n){let r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(let r of e.deps){if(a.call(t,r))return!0;if(r.f&2&&Bt(r,t,n))return n.set(r,!0),!0}return n.set(e,!1),!1}function Vt(e){z.schedule(e)}function Ht(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),Je(e,v);for(var n=e.first;n!==null;)Ht(n,t),n=n.next}}function Ut(e){Je(e,v);for(var t=e.first;t!==null;)Ut(t),t=t.next}var Wt=new Set,Gt=new Map,Kt=!1;function qt(e,t){return{f:0,v:e,reactions:null,equals:Ae,rv:0,wv:0}}function B(e,t){let n=qt(e,t);return er(n),n}function Jt(e,t=!1,n=!0){let r=qt(e);return t||(r.equals=Me),Pe&&n&&Ie!==null&&Ie.l!==null&&(Ie.l.s??=[]).push(r),r}function V(e,t,n=!1){return G!==null&&(!Xn||G.f&131072)&&Be()&&G.f&4325394&&($n===null||!$n.has(e))&&ve(),Yt(e,n?en(t):t,jt)}function Yt(e,t,n=null){if(!e.equals(t)){Gt.set(e,Jn?t:e.v);var r=Pt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&yt(t),Et===null&&Ye(t)}e.wv=lr(),$t(e,y,n),Be()&&K!==null&&K.f&1024&&!(K.f&96)&&(rr===null?ir([e]):rr.push(e)),!r.is_fork&&Wt.size>0&&!Kt&&Xt()}return t}function Xt(){Kt=!1;for(let e of Wt){e.f&1024&&Je(e,b);let t;try{t=ur(e)}catch{t=!0}t&&hr(e)}Wt.clear()}function Zt(e,t=1){var n=q(e),r=t===1?n++:n--;return V(e,n),r}function Qt(e){V(e,e.v+1)}function $t(e,t,n){var r=e.reactions;if(r!==null)for(var i=Be(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===K)){var l=(c&y)===0;if(l&&Je(s,t),c&131072)Wt.add(s);else if(c&2){var u=s;Et?.delete(u),c&65536||(c&512&&(K===null||!(K.f&2097152))&&(s.f|=k),$t(u,b,n))}else if(l){var d=s;c&16&&Lt!==null&&Lt.add(d),n===null?Vt(d):n.push(d)}}}}function en(e){if(typeof e!=`object`||!e||N in e)return e;let n=f(e);if(n!==u&&n!==d)return e;var i=new Map,a=r(e),o=B(0),s=null,l=sr,p=e=>{if(sr===l)return e();var t=G,n=sr;Zn(null),cr(l);var r=e();return Zn(t),cr(n),r};return a&&i.set(`length`,B(e.length,s)),new Proxy(e,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&ge();var r=i.get(t);return r===void 0?p(()=>{var e=B(n.value,s);return i.set(t,e),e}):V(r,n.value,!0),!0},deleteProperty(e,n){var r=i.get(n);if(r===void 0){if(n in e){let e=p(()=>B(t,s));i.set(n,e),Qt(o)}}else V(r,t),Qt(o);return!0},get(n,r,a){if(r===N)return e;var o=i.get(r),l=r in n;if(o===void 0&&(!l||c(n,r)?.writable)&&(o=p(()=>B(en(l?n[r]:t),s)),i.set(r,o)),o!==void 0){var u=q(o);return u===t?void 0:u}return Reflect.get(n,r,a)},getOwnPropertyDescriptor(e,n){var r=Reflect.getOwnPropertyDescriptor(e,n);if(r&&`value`in r){var a=i.get(n);a&&(r.value=q(a))}else if(r===void 0){var o=i.get(n),s=o?.v;if(o!==void 0&&s!==t)return{enumerable:!0,configurable:!0,value:s,writable:!0}}return r},has(e,n){if(n===N)return!0;var r=i.get(n),a=r!==void 0&&r.v!==t||Reflect.has(e,n);return(r!==void 0||K!==null&&(!a||c(e,n)?.writable))&&(r===void 0&&(r=p(()=>B(a?en(e[n]):t,s)),i.set(n,r)),q(r)===t)?!1:a},set(e,n,r,l){var u=i.get(n),d=n in e;if(a&&n===`length`)for(var f=r;f<u.v;f+=1){var m=i.get(f+``);m===void 0?f in e&&(m=p(()=>B(t,s)),i.set(f+``,m)):V(m,t)}if(u===void 0)(!d||c(e,n)?.writable)&&(u=p(()=>B(void 0,s)),V(u,en(r)),i.set(n,u));else{d=u.v!==t;var h=p(()=>en(r));V(u,h)}var g=Reflect.getOwnPropertyDescriptor(e,n);if(g?.set&&g.set.call(l,r),!d){if(a&&typeof n==`string`){var _=i.get(`length`),v=Number(n);Number.isInteger(v)&&v>=_.v&&V(_,v+1)}Qt(o)}return!0},ownKeys(e){q(o);var n=Reflect.ownKeys(e).filter(e=>{var n=i.get(e);return n===void 0||n.v!==t});for(var[r,a]of i)a.v!==t&&!(r in e)&&n.push(r);return n},setPrototypeOf(){_e()}})}function tn(e){try{if(typeof e==`object`&&e&&N in e)return e[N]}catch{}return e}function nn(e,t){return Object.is(tn(e),tn(t))}var rn,an,on,sn;function cn(){if(rn===void 0){rn=window,an=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;on=c(t,`firstChild`).get,sn=c(t,`nextSibling`).get,p(e)&&(e[ne]=void 0,e[te]=null,e[re]=void 0,e.__e=void 0),p(n)&&(n[ie]=void 0)}}function ln(e=``){return document.createTextNode(e)}function un(e){return on.call(e)}function dn(e){return sn.call(e)}function H(e,t){if(!F)return un(e);var n=un(I);if(n===null)n=I.appendChild(ln());else if(t&&n.nodeType!==3){var r=ln();return n?.before(r),Te(r),r}return t&&gn(n),Te(n),n}function fn(e,t=!1){if(!F){var n=un(e);return n instanceof Comment&&n.data===``?dn(n):n}if(t){if(I?.nodeType!==3){var r=ln();return I?.before(r),Te(r),r}gn(I)}return I}function U(e,t=1,n=!1){let r=F?I:e;for(var i;t--;)i=r,r=dn(r);if(!F)return r;if(n){if(r?.nodeType!==3){var a=ln();return r===null?i?.after(a):r.before(a),Te(a),a}gn(r)}return Te(r),r}function pn(e){e.textContent=``}function mn(){return!Ne||Lt!==null?!1:(K.f&C)!==0}function hn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function gn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function _n(e){F&&un(e)!==null&&pn(e)}var vn=!1;function yn(){vn||(vn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ae]?.()})},{capture:!0}))}function bn(e){var t=G,n=K;Zn(null),Qn(null);try{return e()}finally{Zn(t),Qn(n)}}function xn(e,t,n,r=n){e.addEventListener(t,()=>bn(n));let i=e[ae];i?e[ae]=()=>{i(),r(!0)}:e[ae]=()=>r(!0),yn()}function Sn(e){K===null&&(G===null&&pe(e),fe()),Jn&&de(e)}function Cn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function wn(e,t){var n=K;n!==null&&n.f&8192&&(e|=x);var r={ctx:Ie,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};z?.register_created_effect(r);var i=r;if(e&4)At===null?Pt.ensure().schedule(r):At.push(r);else if(t!==null){try{hr(r)}catch(e){throw Rn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=T))}if(i!==null&&(i.parent=n,n!==null&&Cn(i,n),G!==null&&G.f&2&&!(e&64))){var a=G;(a.effects??=[]).push(i)}return r}function Tn(){return G!==null&&!Xn}function En(e){let t=wn(8,null);return Je(t,v),t.teardown=e,t}function Dn(e){Sn(`$effect`);var t=K.f;if(!G&&t&32&&Ie!==null&&!Ie.i){var n=Ie;(n.e??=[]).push(e)}else return On(e)}function On(e){return wn(4|D,e)}function kn(e){Pt.ensure();let t=wn(64|E,e);return(e={})=>new Promise(n=>{e.outro?Vn(t,()=>{Rn(t),n(void 0)}):(Rn(t),n(void 0))})}function An(e){return wn(4,e)}function jn(e){return wn(j|E,e)}function Mn(e,t=0){return wn(8|t,e)}function W(e,t=[],n=[],r=[]){ut(r,t,n,t=>{wn(8,()=>{e(...t.map(q))})})}function Nn(e,t=0){return wn(16|t,e)}function Pn(e){return wn(32|E,e)}function Fn(e){var t=e.teardown;if(t!==null){let e=Jn,n=G;Yn(!0),Zn(null);try{t.call(null)}finally{Yn(e),Zn(n)}}}function In(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&bn(()=>{e.abort(oe)});var r=n.next;n.f&64?n.parent=null:Rn(n,t),n=r}}function Ln(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Rn(t),t=n}}function Rn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(zn(e.nodes.start,e.nodes.end),n=!0),e.f|=w,In(e,t&&!n),mr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Fn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&Bn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function zn(e,t){for(;e!==null;){var n=e===t?null:dn(e);e.remove(),e=n}}function Bn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Vn(e,t,n=!0){var r=[];Hn(e,r,!0);var i=()=>{n&&Rn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Hn(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Hn(i,t,o?n:!1)}i=a}}}function Un(e){Wn(e,!0)}function Wn(e,t){if(e.f&8192){e.f^=x,e.f&1024||(Je(e,y),Pt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Wn(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Gn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:dn(n);t.append(n),n=i}}var Kn=null,qn=!1,Jn=!1;function Yn(e){Jn=e}var G=null,Xn=!1;function Zn(e){G=e}var K=null;function Qn(e){K=e}var $n=null;function er(e){G!==null&&(!Ne||G.f&2)&&($n??=new Set).add(e)}var tr=null,nr=0,rr=null;function ir(e){rr=e}var ar=1,or=0,sr=or;function cr(e){sr=e}function lr(){return++ar}function ur(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~k),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(ur(a)&&bt(a),a.wv>e.wv)return!0}t&512&&Et===null&&Je(e,v)}return!1}function dr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(!Ne&&$n!==null&&$n.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?dr(a,t,!1):t===a&&(n?Je(a,y):a.f&1024&&Je(a,b),Vt(a))}}function fr(e){var t=tr,n=nr,r=rr,i=G,a=$n,o=Ie,s=Xn,c=sr,l=e.f;tr=null,nr=0,rr=null,G=l&96?null:e,$n=null,Le(e.ctx),Xn=!1,sr=++or,e.ac!==null&&(bn(()=>{e.ac.abort(oe)}),e.ac=null);try{e.f|=A;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=z?.is_fork;if(tr!==null){var m;if(p||mr(e,nr),f!==null&&nr>0)for(f.length=nr+tr.length,m=0;m<tr.length;m++)f[nr+m]=tr[m];else e.deps=f=tr;if(Tn()&&e.f&512)for(m=nr;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&nr<f.length&&(mr(e,nr),f.length=nr);if(Be()&&rr!==null&&!Xn&&f!==null&&!(e.f&6146))for(m=0;m<rr.length;m++)dr(rr[m],e);if(i!==null&&i!==e){if(or++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=or;if(t!==null)for(let e of t)e.rv=or;rr!==null&&(r===null?r=rr:r.push(...rr))}return e.f&8388608&&(e.f^=M),d}catch(e){return Ge(e)}finally{e.f^=A,tr=t,nr=n,rr=r,G=i,$n=a,Le(o),Xn=s,sr=c}}function pr(e,n){let r=n.reactions;if(r!==null){var o=i.call(r,e);if(o!==-1){var s=r.length-1;s===0?r=n.reactions=null:(r[o]=r[s],r.pop())}}if(r===null&&n.f&2&&(tr===null||!a.call(tr,n))){var c=n;c.f&512&&(c.f^=512,c.f&=~k),c.v!==t&&Ye(c),xt(c),mr(c,0)}}function mr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)pr(e,n[r])}function hr(e){var t=e.f;if(!(t&16384)){Je(e,v);var n=K,r=qn;K=e,qn=!0;try{t&16777232?Ln(e):In(e),Fn(e);var i=fr(e);e.teardown=typeof i==`function`?i:null,e.wv=ar}finally{qn=r,K=n}}}async function gr(){if(Ne)return new Promise(e=>{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Ft()}function q(e){var t=(e.f&2)!=0;if(Kn?.add(e),G!==null&&!Xn&&!(K!==null&&K.f&16384)&&($n===null||!$n.has(e))){var n=G.deps;if(G.f&2097152)e.rv<or&&(e.rv=or,tr===null&&n!==null&&n[nr]===e?nr++:tr===null?tr=[e]:tr.push(e));else{G.deps??=[],a.call(G.deps,e)||G.deps.push(e);var r=e.reactions;r===null?e.reactions=[G]:a.call(r,G)||r.push(G)}}if(Jn&&Gt.has(e))return Gt.get(e);if(t){var i=e;if(Jn){var o=i.v;return(!(i.f&1024)&&i.reactions!==null||vr(i))&&(o=yt(i)),Gt.set(i,o),o}var s=(i.f&512)==0&&!Xn&&G!==null&&(qn||(G.f&512)!=0),c=(i.f&C)===0;ur(i)&&(s&&(i.f|=512),bt(i)),s&&!c&&(St(i),_r(i))}if(Et?.has(e))return Et.get(e);if(e.f&8388608)throw e.v;return e.v}function _r(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(St(t),_r(t))}function vr(e){if(e.v===t)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Gt.has(t)||t.f&2&&vr(t))return!0;return!1}function yr(e){var t=Xn;try{return Xn=!0,e()}finally{Xn=t}}var br=Symbol(`events`),xr=new Set,Sr=new Set;function J(e,t,n){(t[br]??={})[e]=n}function Cr(e){for(var t=0;t<e.length;t++)xr.add(e[t]);for(var n of Sr)n(e)}var wr=null;function Tr(e){var t=this,n=t.ownerDocument,r=e.type,i=e.composedPath?.()||[],a=i[0]||e.target;wr=e;var o=0,c=wr===e&&e[br];if(c){var l=i.indexOf(c);if(l!==-1&&(t===document||t===window)){e[br]=t;return}var u=i.indexOf(t);if(u===-1)return;l<=u&&(o=l)}if(a=i[o]||e.target,a!==t){s(e,`currentTarget`,{configurable:!0,get(){return a||n}});var d=G,f=K;Zn(null),Qn(null);try{for(var p,m=[];a!==null&&a!==t;){try{var h=a[br]?.[r];h!=null&&(!a.disabled||e.target===a)&&h.call(a,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;o++,a=o<i.length?i[o]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[br]=t,delete e.currentTarget,Zn(d),Qn(f)}}}var Er=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Dr(e){return Er?.createHTML(e)??e}function Or(e){var t=hn(`template`);return t.innerHTML=Dr(e.replaceAll(`<!>`,`<!---->`)),t.content}function kr(e,t){var n=K;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function Y(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(F)return kr(I,null),I;i===void 0&&(i=Or(a?e:`<!>`+e),n||(i=un(i)));var t=r||an?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=un(t),s=t.lastChild;kr(o,s)}else kr(t,t);return t}}function Ar(){if(F)return kr(I,null),I;var e=document.createDocumentFragment(),t=document.createComment(``),n=ln();return e.append(t,n),kr(t,n),e}function X(e,t){if(F){var n=K;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=I),Ee();return}e!==null&&e.before(t)}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var jr=[`touchstart`,`touchmove`];function Mr(e){return jr.includes(e)}function Z(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ie]??=e.nodeValue)&&(e[ie]=n,e.nodeValue=`${n}`)}function Nr(e,t){return Fr(e,t)}var Pr=new Map;function Fr(t,{target:n,anchor:r,props:i={},events:a,context:s,intro:c=!0,transformError:l}){cn();var u=void 0,d=kn(()=>{var c=r??n.appendChild(ln());ct(c,{pending:()=>{}},n=>{Re({});var r=Ie;if(s&&(r.c=s),a&&(i.$$events=a),F&&kr(n,null),u=t(n,i)||{},F&&(K.nodes.end=I,I===null||I.nodeType!==8||I.data!==`]`))throw xe(),e;ze()},l);var d=new Set,f=e=>{for(var t=0;t<e.length;t++){var r=e[t];if(!d.has(r)){d.add(r);var i=Mr(r);for(let e of[n,document]){var a=Pr.get(e);a===void 0&&(a=new Map,Pr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,Tr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return f(o(xr)),Sr.add(f),()=>{for(var e of d)for(let r of[n,document]){var t=Pr.get(r),i=t.get(e);--i==0?(r.removeEventListener(e,Tr),t.delete(e),t.size===0&&Pr.delete(r)):t.set(e,i)}Sr.delete(f),c!==r&&c.parentNode?.removeChild(c)}});return Ir.set(u,d),u}var Ir=new WeakMap,Lr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Un(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Un(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Rn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Gn(r,t),t.append(ln()),this.#n.set(e,{effect:r,fragment:t})}else Rn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Vn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Rn(n.effect),this.#n.delete(e))};ensure(e,t){var n=z,r=mn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=ln();i.append(a),this.#n.set(e,{effect:Pn(()=>t(a)),fragment:i})}else this.#t.set(e,Pn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else F&&(this.anchor=I),this.#a(n)}};function Rr(e){Ie===null&&ce(`onMount`),Pe&&Ie.l!==null?zr(Ie).m.push(e):Dn(()=>{let t=yr(e);if(typeof t==`function`)return t})}function zr(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}function Q(e,t,n=!1){var r;F&&(r=I,Ee());var i=new Lr(e),a=n?T:0;function o(e,t){if(F){var n=ke(r);if(e!==parseInt(n.substring(1))){var a=Oe();Te(a),i.anchor=a,we(!1),i.ensure(e,t),we(!0);return}}i.ensure(e,t)}Nn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Br(e,t){return t}function Vr(e,t,n){for(var r=[],i=t.length,a,s=t.length,c=0;c<i;c++){let n=t[c];Vn(n,()=>{if(a){if(a.pending.delete(n),a.done.add(n),a.pending.size===0){var t=e.outrogroups;Hr(e,o(a.done)),t.delete(a),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=r.length===0&&n!==null;if(l){var u=n,d=u.parentNode;pn(d),d.append(u),e.items.clear()}Hr(e,t,!l)}else a={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(a)}function Hr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=O,Gn(a,document.createDocumentFragment())):Rn(t[i],n)}}var Ur;function Wr(e,t,n,i,a,s=null){var c=e,l=new Map;if(t&4){var u=e;c=F?Te(un(u)):u.appendChild(ln())}F&&Ee();var d=null,f=_t(()=>{var e=n();return r(e)?e:e==null?[]:o(e)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Kr(v,p,c,t,i),d!==null&&(p.length===0?d.f&33554432?(d.f^=O,Jr(d,null,c)):Un(d):Vn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Nn(()=>{p=q(f);var e=p.length;let r=!1;F&&ke(c)===`[!`!=(e===0)&&(c=Oe(),Te(c),we(!1),r=!0);for(var o=new Set,u=z,v=mn(),y=0;y<e;y+=1){F&&I.nodeType===8&&I.data===`]`&&(c=I,r=!0,we(!1));var b=p[y],x=i(b,y),S=h?null:l.get(x);S?(S.v&&Yt(S.v,b),S.i&&Yt(S.i,y),v&&u.unskip_effect(S.e)):(S=qr(l,h?c:Ur??=ln(),b,x,y,a,t,n),h||(S.e.f|=O),l.set(x,S)),o.add(x)}if(e===0&&s&&!d&&(h?d=Pn(()=>s(c)):(d=Pn(()=>s(Ur??=ln())),d.f|=O)),e>o.size&&ue(``,``,``),F&&e>0&&Te(Oe()),!h)if(m.set(u,o),v){for(let[e,t]of l)o.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);r&&we(!0),q(f)}),flags:t,items:l,pending:m,outrogroups:null,fallback:d};h=!1,F&&(c=I)}function Gr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Kr(e,t,n,r,i){var a=(r&8)!=0,s=t.length,c=e.items,l=Gr(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(a)for(v=0;v<s;v+=1)h=t[v],g=i(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=i(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Un(_),a&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=O,_===l)Jr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Yr(e,d,_),Yr(e,_,y),Jr(_,y,n),d=_,p=[],m=[],l=Gr(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Jr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Yr(e,S.prev,C.next),Yr(e,d,S),Yr(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Jr(_,l,n),Yr(e,_.prev,_.next),Yr(e,_,d===null?e.effect.first:d.next),Yr(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Gr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Gr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Hr(e,o(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Gr(l.next);var T=w.length;if(T>0){var E=r&4&&s===0?n:null;if(a){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}Vr(e,w,E)}}a&&Ue(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function qr(e,t,n,r,i,a,o,s){var c=o&1?o&16?qt(n):Jt(n,!1,!1):null,l=o&2?qt(i):null;return{v:c,i:l,e:Pn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Jr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=dn(r);if(a.before(r),r===i)return;r=o}}function Yr(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Xr(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Xr(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Zr(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Xr(e))&&(r&&(r+=` `),r+=t);return r}function Qr(e){return typeof e==`object`?Zr(e):e??``}var $r=[...`
2
+ \r\f\xA0\v`];function ei(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||$r.includes(r[o-1]))&&(s===r.length||$r.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function ti(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function ni(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function ri(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(ni)),i&&c.push(...Object.keys(i).map(ni));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=ni(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=ti(r)),i&&(n+=ti(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function $(e,t,n,r,i,a){var o=e[ne];if(F||o!==n||o===void 0){var s=ei(n,r,a);(!F||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ne]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function ii(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function ai(e,t,n,r){var i=e[re];if(F||i!==t){var a=ri(t,r);(!F||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[re]=t}else r&&(Array.isArray(r)?(ii(e,n?.[0],r[0]),ii(e,n?.[1],r[1],`important`)):ii(e,n,r));return r}function oi(e,t,n=!1){if(e.multiple){if(t==null)return;if(!r(t))return Se();for(var i of e.options)i.selected=t.includes(li(i));return}for(i of e.options)if(nn(li(i),t)){i.selected=!0;return}(!n||t!==void 0)&&(e.selectedIndex=-1)}function si(e){var t=new MutationObserver(()=>{oi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),En(()=>{t.disconnect()})}function ci(e,t,n=t){var r=new WeakSet,i=!0;xn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),li);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&li(o)}n(a),e.__value=a,z!==null&&r.add(z)}),An(()=>{var a=t();if(e===document.activeElement){var o=Ne?Tt:z;if(r.has(o))return}if(oi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=li(s),n(a))}e.__value=a,i=!1}),si(e)}function li(e){return`__value`in e?e.__value:e.value}var ui=Symbol(`is custom element`),di=Symbol(`is html`),fi=se?`link`:`LINK`,pi=se?`progress`:`PROGRESS`;function mi(e){if(F){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;_i(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;_i(e,`checked`,null),e.checked=r}}};e[ae]=n,Ue(n),yn()}}function hi(e,t){var n=vi(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==pi)||(e.value=t??``)}function gi(e,t){var n=vi(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function _i(e,t,n,r){var i=vi(e);F&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===fi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[P]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&bi(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function vi(e){return e[te]??={[ui]:e.nodeName.includes(`-`),[di]:e.namespaceURI===n}}var yi=new Map;function bi(e){var t=e.getAttribute(`is`)||e.nodeName,n=yi.get(t);if(n)return n;yi.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var o in r=l(i),r)r[o].set&&o!==`innerHTML`&&o!==`textContent`&&o!==`innerText`&&n.push(o);i=f(i)}return n}function xi(e,t,n=t){var r=new WeakSet;xn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Ci(e)?wi(a):a,n(a),z!==null&&r.add(z),await gr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(F&&e.defaultValue!==e.value||yr(t)==null&&e.value)&&(n(Ci(e)?wi(e.value):e.value),z!==null&&r.add(z)),Mn(()=>{var n=t();if(e===document.activeElement){var i=Ne?Tt:z;if(r.has(i))return}Ci(e)&&n===wi(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Si(e,t,n=t){xn(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(F&&e.defaultChecked!==e.checked||yr(t)==null)&&n(e.checked),Mn(()=>{e.checked=!!t()})}function Ci(e){var t=e.type;return t===`number`||t===`range`}function wi(e){return e===``?null:+e}function Ti(e,t){return e===t||e?.[N]===t}function Ei(e={},t,n,r){var i=Ie.r,a=K;return An(()=>{var o,s;return Mn(()=>{o=s,s=r?.()||[],yr(()=>{Ti(n(...s),e)||(t(e,...s),o&&Ti(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&Ti(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Di(e,t,n,r){var i=!Pe||(n&2)!=0,a=(n&8)!=0,o=(n&16)!=0,s=r,l=!0,u=void 0,d=()=>o&&i?(u??=mt(r),q(u)):(l&&(l=!1,s=o?yr(r):r),s);let f;if(a){var p=N in e||ee in e;f=c(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;a?[m,h]=at(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&he(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(s=void 0),n===void 0?s:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?mt:_t)(()=>(v=!1,g()));a&&q(y);var b=K;return(function(e,t){if(arguments.length>0){let n=t?q(y):i&&a?en(e):e;return V(y,n),v=!0,s!==void 0&&(s=n),e}return Jn&&v||b.f&16384?y.v:q(y)})}var Oi=`/api`;async function ki(e,t){let n=await fetch(`${Oi}${e}`,{headers:{"Content-Type":`application/json`},...t});if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error??`HTTP ${n.status}`)}return n.json()}function Ai(){return ki(`/status`)}function ji(){return ki(`/accounts`)}function Mi(e){return ki(`/accounts/${e}`,{method:`DELETE`})}function Ni(e){return ki(`/accounts/${e}/validate`,{method:`POST`})}function Pi(){return ki(`/models`)}function Fi(){return ki(`/models/refresh`,{method:`POST`})}function Ii(){return ki(`/config`)}function Li(e,t,n,r,i){let a=new AbortController;return(async()=>{try{let i=await fetch(`/api/playground/chat`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:e,messages:t,stream:!0}),signal:a.signal});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error?.message??`HTTP ${i.status}`)}let o=i.body.getReader(),s=new TextDecoder,c=``,l=null;for(;;){let{done:e,value:t}=await o.read();if(e)break;c+=s.decode(t,{stream:!0});let i=c.split(`
3
+ `);c=i.pop()??``;for(let e of i){let t=e.trim();if(!t||!t.startsWith(`data: `))continue;let i=t.slice(6);if(i===`[DONE]`){r(l);return}try{let e=JSON.parse(i),t=e.choices?.[0]?.delta?.content??``;l=e.choices?.[0]?.finish_reason??l,t&&n(t)}catch{}}}r(l)}catch(e){if(a.signal.aborted)return;i(e instanceof Error?e:Error(String(e)))}})(),a}function Ri(){return fetch(`/health`).then(e=>{if(!e.ok)throw Error(`Health-Check fehlgeschlagen (HTTP ${e.status})`);return e.json()})}var zi=Y(`<div class="skeleton svelte-118ro6e"></div>`),Bi=Y(`<div class="stats svelte-118ro6e"></div>`),Vi=Y(`<div class="offline-card svelte-118ro6e"><div class="offline-icon svelte-118ro6e">!</div> <div class="svelte-118ro6e"><strong class="svelte-118ro6e">Gateway nicht erreichbar</strong><span class="svelte-118ro6e"> </span></div> <button class="btn">Erneut versuchen</button></div>`),Hi=Y(`<button class="endpoint svelte-118ro6e"><span class="method svelte-118ro6e"> </span> <span class="endpoint-copy svelte-118ro6e"><strong class="svelte-118ro6e"> </strong><code class="svelte-118ro6e"> </code></span> <span class="svelte-118ro6e"> </span></button>`),Ui=Y(`<div class="stats svelte-118ro6e"><article class="svelte-118ro6e"><span class="svelte-118ro6e">Accounts</span><strong class="svelte-118ro6e"> </strong><small class="svelte-118ro6e"> </small></article> <article class="svelte-118ro6e"><span class="svelte-118ro6e">Session Health</span><strong class="svelte-118ro6e"> </strong><small class="svelte-118ro6e"> </small></article> <article class="svelte-118ro6e"><span class="svelte-118ro6e">Modelle</span><strong class="svelte-118ro6e"> </strong><small class="svelte-118ro6e">im verifizierten Cache</small></article> <article class="svelte-118ro6e"><span class="svelte-118ro6e">Gateway</span><strong> </strong><small class="svelte-118ro6e"></small></article></div> <div class="dashboard-grid svelte-118ro6e"><section class="panel endpoints svelte-118ro6e"><div class="panel-head svelte-118ro6e"><div><span class="eyebrow svelte-118ro6e">API</span><h3 class="svelte-118ro6e">OpenAI-kompatible Endpunkte</h3></div><span class="live svelte-118ro6e"><i class="svelte-118ro6e"></i> öffentlich</span></div> <!></section> <section class="panel setup svelte-118ro6e"><div><span class="eyebrow svelte-118ro6e">Schnellstart</span><h3 class="svelte-118ro6e">Provider verbinden</h3></div> <ol class="svelte-118ro6e"><li class="svelte-118ro6e"><span class="svelte-118ro6e">1</span><div><strong class="svelte-118ro6e">Provider wählen</strong><small class="svelte-118ro6e">Öffne die Provider-Seite und starte den sichtbaren Browser-Login.</small></div></li> <li class="svelte-118ro6e"><span class="svelte-118ro6e">2</span><div><strong class="svelte-118ro6e">Browser-Login abschließen</strong><small class="svelte-118ro6e">Die Session wird im persistenten Remote-Browserprofil gespeichert.</small></div></li> <li class="svelte-118ro6e"><span class="svelte-118ro6e">3</span><div><strong class="svelte-118ro6e">Modelle aktualisieren</strong><small class="svelte-118ro6e">Danach stehen die öffentlichen Gateway-Endpunkte bereit.</small></div></li></ol> <button class="command svelte-118ro6e"><code class="svelte-118ro6e">nova providers list</code><span> </span></button></section></div> <div class="footer-line svelte-118ro6e"><span>Letzte Statusprüfung</span> <strong class="svelte-118ro6e"> </strong></div>`,1),Wi=Y(`<div class="page svelte-118ro6e"><section class="hero svelte-118ro6e"><div><span class="eyebrow svelte-118ro6e">Public AI Gateway</span> <h2 class="svelte-118ro6e">Alles bereit für öffentliche Inference.</h2> <p class="svelte-118ro6e">Accounts, Modelle und Gateway-Zustand auf einen Blick – ohne sensible Sessiondaten im Browser offenzulegen.</p></div> <button class="btn svelte-118ro6e"> </button></section> <!></div>`);function Gi(e,t){Re(t,!0);let n=B(null),r=B(null),i=B(null),a=B(!0),o=B(null),s=B(null),c=`https://bkg.eysho.info`,l=R(()=>q(n)?.accounts?Math.round(q(n).validSessions/q(n).accounts*100):0);Dn(()=>{u()});async function u(){V(a,!0),V(o,null);try{let[e,t,a]=await Promise.all([Ai(),Ri(),Ii()]);V(n,e,!0),V(r,t,!0),V(i,a,!0)}catch(e){V(o,e instanceof Error?e.message:`Fehler beim Laden`,!0)}finally{V(a,!1)}}async function d(e,t){await navigator.clipboard.writeText(e),V(s,t,!0),window.setTimeout(()=>{q(s)===t&&V(s,null)},1500)}var f=Wi(),p=H(f),m=U(H(p),2),h=H(m,!0);L(m),L(p);var g=U(p,2),_=e=>{var t=Bi();Wr(t,20,()=>[,,,,],Br,(e,t)=>{X(e,zi())}),L(t),X(e,t)},v=e=>{var t=Vi(),n=U(H(t),2),r=U(H(n)),i=H(r,!0);L(r),L(n);var a=U(n,2);L(t),W(()=>Z(i,q(o))),J(`click`,a,u),X(e,t)},y=e=>{var t=Ui(),i=fn(t),a=H(i),o=U(H(a)),u=H(o,!0);L(o);var f=U(o),p=H(f);L(f),L(a);var m=U(a,2),h=U(H(m)),g=H(h);L(h);var _=U(h),v=H(_,!0);L(_),L(m);var y=U(m,2),b=U(H(y)),x=H(b,!0);L(b),De(),L(y);var S=U(y,2),C=U(H(S));let w;var T=H(C,!0);L(C);var E=U(C);E.textContent=`https://bkg.eysho.info`,L(S),L(i);var D=U(i,2),O=H(D);Wr(U(H(O),2),17,()=>[[`Models`,`${c}/v1/models`,`GET`],[`Chat Completions`,`${c}/v1/chat/completions`,`POST`],[`Responses`,`${c}/v1/responses`,`POST`]],Br,(e,t)=>{var n=Hi(),r=H(n),i=H(r,!0);L(r);var a=U(r,2),o=H(a),c=H(o,!0);L(o);var l=U(o),u=H(l,!0);L(l),L(a);var f=U(a,2),p=H(f,!0);L(f),L(n),W(()=>{Z(i,q(t)[2]),Z(c,q(t)[0]),Z(u,q(t)[1]),Z(p,q(s)===q(t)[0]?`Kopiert`:`Kopieren`)}),J(`click`,n,()=>d(q(t)[1],q(t)[0])),X(e,n)}),L(O);var k=U(O,2),A=U(H(k),4),j=U(H(A)),M=H(j,!0);L(j),L(A),L(k),L(D);var N=U(D,2),ee=U(H(N),2),P=H(ee,!0);L(ee),L(N),W(e=>{Z(u,q(n)?.accounts??0),Z(p,`${q(n)?.validSessions??0??``} aktive Sessions`),Z(g,`${q(l)??``}%`),Z(v,q(l)===100?`Alle Sessions gültig`:`Prüfung empfohlen`),Z(x,q(n)?.models??0),w=$(C,1,`svelte-118ro6e`,null,w,{healthy:q(r)?.status===`ok`}),Z(T,q(r)?.status===`ok`?`Online`:`Offline`),Z(M,q(s)===`providers`?`Kopiert`:`Kopieren`),Z(P,e)},[()=>q(n)?.timestamp?new Intl.DateTimeFormat(`de-DE`,{dateStyle:`medium`,timeStyle:`medium`}).format(new Date(q(n).timestamp)):`–`]),J(`click`,A,()=>d(`nova providers list`,`providers`)),X(e,t)};Q(g,e=>{q(a)?e(_):q(o)?e(v,1):e(y,-1)}),L(f),W(()=>{m.disabled=q(a),Z(h,q(a)?`Prüfe …`:`Status aktualisieren`)}),J(`click`,m,u),X(e,f),ze()}Cr([`click`]);var Ki=Y(`<option> </option>`),qi=Y(`<select class="svelte-13r8rp8"></select>`),Ji=Y(`<label><input type="checkbox"/> <span><b class="svelte-13r8rp8"> </b><small class="svelte-13r8rp8"> </small></span></label>`),Yi=Y(`<div class="checks svelte-13r8rp8"></div>`),Xi=Y(`<span class="svelte-13r8rp8"><b class="svelte-13r8rp8"> </b> </span>`),Zi=Y(`<div class="chips svelte-13r8rp8"></div>`),Qi=Y(`<button class="stop svelte-13r8rp8">Stoppen</button>`),$i=Y(`<button class="run svelte-13r8rp8"> </button>`),ea=Y(`<p class="error svelte-13r8rp8"> </p>`),ta=Y(`<div class="empty svelte-13r8rp8"><b>Modelle vergleichen</b> <span>Ein Modell, freie Auswahl oder automatisch ein Modell je Provider.</span></div>`),na=Y(`<footer class="svelte-13r8rp8"> </footer>`),ra=Y(`<article class="svelte-13r8rp8"><header class="svelte-13r8rp8"><div><b> </b> <small class="svelte-13r8rp8"> </small></div> <i> </i></header> <pre> </pre> <!></article>`),ia=Y(`<section class="batch svelte-13r8rp8"><div class="batchhead svelte-13r8rp8"><b class="svelte-13r8rp8"> </b> <time class="svelte-13r8rp8"> </time></div> <div class="results svelte-13r8rp8"></div></section>`),aa=Y(`<div class="pg svelte-13r8rp8"><header class="svelte-13r8rp8"><div class="modes svelte-13r8rp8"><button>Ein Modell</button> <button>Auswahl</button> <button>Je Provider 1×</button></div> <div class="svelte-13r8rp8"><span class="svelte-13r8rp8"> </span> <button class="svelte-13r8rp8">Aktualisieren</button> <button class="svelte-13r8rp8">Leeren</button></div></header> <section class="pick svelte-13r8rp8"><!></section> <section class="compose svelte-13r8rp8"><textarea rows="3" placeholder="Dieselbe Aufgabe an alle ausgewählten Modelle senden …" class="svelte-13r8rp8"></textarea> <!></section> <!> <main class="svelte-13r8rp8"><!> <!></main></div>`);function oa(e,t){Re(t,!0);let n=B(en([])),r=B(`single`),i=B(``),a=B(en([])),o=B(``),s=B(en([])),c=B(!1),l=B(``),u=R(()=>q(n).filter(e=>e.enabled)),d=new Map,f=new Map,p=new Map,m=new Map;Dn(()=>{h()});async function h(){try{V(n,await Pi(),!0),q(n).some(e=>e.id===q(i))||V(i,q(n)[0]?.id??``,!0),V(a,q(a).filter(e=>q(n).some(t=>t.id===e)),!0),!q(a).length&&q(n)[0]&&V(a,[q(n)[0].id],!0),V(l,``)}catch(e){V(l,e instanceof Error?e.message:String(e),!0)}}function g(e){V(a,q(a).includes(e)?q(a).filter(t=>t!==e):[...q(a),e],!0)}function _(){if(q(r)===`single`)return q(u).filter(e=>e.id===q(i));if(q(r)===`selected`)return q(u).filter(e=>q(a).includes(e.id));let e=new Map;for(let t of q(u))e.has(t.provider)||e.set(t.provider,t);return[...e.values()]}function v(e,t,n){V(s,q(s).map(r=>r.id===e?{...r,results:r.results.map(e=>e.id===t?{...e,...n}:e)}:r),!0)}function y(e,t){return t?!e||t.startsWith(e)?t:e.endsWith(t)?e:e+t:e}function b(e,t,n){V(s,q(s).map(r=>r.id===e?{...r,results:r.results.map(e=>e.id===t?{...e,text:y(e.text,n)}:e)}:r),!0)}function x(e,t,n){let r=m.get(e);r!==void 0&&window.clearTimeout(r),m.delete(e);let i=p.get(e)??``;p.delete(e),i&&b(t,n,i)}function S(e,t,n){let r=`${e}:${t}`,i=p.get(r)??``;p.set(r,y(i,n)),!m.has(r)&&m.set(r,window.setTimeout(()=>x(r,e,t),80))}function C(e){d.delete(e);let t=f.get(e);f.delete(e),t?.()}function w(e,t,n){return new Promise(r=>{f.set(t.id,r);let i=performance.now();v(e,t.id,{state:`running`});let a=Li(t.modelId,[{role:`user`,content:n}],n=>S(e,t.id,n),()=>{x(`${e}:${t.id}`,e,t.id),v(e,t.id,{state:`done`,ms:Math.round(performance.now()-i)}),C(t.id)},n=>{x(`${e}:${t.id}`,e,t.id),v(e,t.id,{state:`error`,error:n.message,ms:Math.round(performance.now()-i)}),C(t.id)});d.set(t.id,a)})}async function T(){let e=q(o).trim(),t=_();if(!e||!t.length||q(c))return;let n=crypto.randomUUID(),r=t.map(e=>({id:crypto.randomUUID(),modelId:e.id,modelName:e.name,provider:e.provider,state:`waiting`,text:``}));V(s,[{id:n,prompt:e,created:new Date().toISOString(),results:r},...q(s)].slice(0,5),!0),V(o,``),V(c,!0),await Promise.allSettled(r.map(t=>w(n,t,e))),V(c,!1)}function E(){for(let[e,t]of d){t.abort();let n=q(s).find(t=>t.results.some(t=>t.id===e));n&&(x(`${n.id}:${e}`,n.id,e),v(n.id,e,{state:`cancelled`,error:`Abgebrochen`})),C(e)}d.clear(),V(c,!1)}function D(){E(),V(s,[],!0),V(l,``)}function O(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),T())}function k(e){return{waiting:`wartet`,running:`läuft`,done:`fertig`,error:`Fehler`,cancelled:`abgebrochen`}[e]}var A=aa(),j=H(A),M=H(j),N=H(M);let ee;var P=U(N,2);let te;var ne=U(P,2);let re;L(M);var ie=U(M,2),ae=H(ie),oe=H(ae);L(ae);var se=U(ae,2),ce=U(se,2);L(ie),L(j);var le=U(j,2),ue=H(le),de=e=>{var t=qi();Wr(t,21,()=>q(u),Br,(e,t)=>{var n=Ki(),r=H(n);L(n);var i={};W(()=>{Z(r,`${q(t).name??``} · ${q(t).provider??``}`),i!==(i=q(t).id)&&(n.value=(n.__value=q(t).id)??``)}),X(e,n)}),L(t),ci(t,()=>q(i),e=>V(i,e)),X(e,t)},fe=e=>{var t=Yi();Wr(t,21,()=>q(u),Br,(e,t)=>{var n=Ji();let r;var i=H(n);mi(i);var o=U(i,2),s=H(o),c=H(s,!0);L(s);var l=U(s),u=H(l,!0);L(l),L(o),L(n),W((e,a)=>{r=$(n,1,`svelte-13r8rp8`,null,r,e),gi(i,a),Z(c,q(t).name),Z(u,q(t).provider)},[()=>({on:q(a).includes(q(t).id)}),()=>q(a).includes(q(t).id)]),J(`change`,i,()=>g(q(t).id)),X(e,n)}),L(t),X(e,t)},pe=e=>{var t=Zi();Wr(t,21,_,Br,(e,t)=>{var n=Xi(),r=H(n),i=H(r,!0);L(r);var a=U(r,1,!0);L(n),W(()=>{Z(i,q(t).provider),Z(a,q(t).name)}),X(e,n)}),L(t),X(e,t)};Q(ue,e=>{q(r)===`single`?e(de):q(r)===`selected`?e(fe,1):e(pe,-1)}),L(le);var me=U(le,2),he=H(me);_n(he);var ge=U(he,2),_e=e=>{var t=Qi();J(`click`,t,E),X(e,t)},ve=e=>{var t=$i(),n=H(t);L(t),W((e,r)=>{t.disabled=e,Z(n,`${r??``} testen`)},[()=>!q(o).trim()||!_().length,()=>_().length]),J(`click`,t,T),X(e,t)};Q(ge,e=>{q(c)?e(_e):e(ve,-1)}),L(me);var ye=U(me,2),be=e=>{var t=ea(),n=H(t,!0);L(t),W(()=>Z(n,q(l))),X(e,t)};Q(ye,e=>{q(l)&&e(be)});var xe=U(ye,2),Se=H(xe),Ce=e=>{X(e,ta())};Q(Se,e=>{q(s).length||e(Ce)}),Wr(U(Se,2),17,()=>q(s),e=>e.id,(e,t)=>{var n=ia(),r=H(n),i=H(r),a=H(i,!0);L(i);var o=U(i,2),s=H(o,!0);L(o),L(r);var c=U(r,2);Wr(c,21,()=>q(t).results,e=>e.id,(e,t)=>{var n=ra(),r=H(n),i=H(r),a=H(i),o=H(a,!0);L(a);var s=U(a,2),c=H(s);L(s),L(i);var l=U(i,2);let u;var d=H(l,!0);L(l),L(r);var f=U(r,2);let p;var m=H(f,!0);L(f);var h=U(f,2),g=e=>{var n=na(),r=H(n);L(n),W(e=>Z(r,`${e??``} s`),[()=>(q(t).ms/1e3).toFixed(1)]),X(e,n)};Q(h,e=>{q(t).ms!==void 0&&e(g)}),L(n),W(e=>{Z(o,q(t).modelName),Z(c,`${q(t).provider??``} · ${q(t).modelId??``}`),u=$(l,1,`svelte-13r8rp8`,null,u,{live:q(t).state===`running`}),Z(d,e),p=$(f,1,`svelte-13r8rp8`,null,p,{error:q(t).state===`error`}),Z(m,q(t).text||q(t).error||(q(t).state===`waiting`?`Wartet …`:`Antwort wird erzeugt …`))},[()=>k(q(t).state)]),X(e,n)}),L(c),L(n),W(e=>{Z(a,q(t).prompt),Z(s,e)},[()=>new Date(q(t).created).toLocaleTimeString(`de-DE`)]),X(e,n)}),L(xe),L(A),W(e=>{ee=$(N,1,`svelte-13r8rp8`,null,ee,{on:q(r)===`single`}),te=$(P,1,`svelte-13r8rp8`,null,te,{on:q(r)===`selected`}),re=$(ne,1,`svelte-13r8rp8`,null,re,{on:q(r)===`providers`}),Z(oe,`${e??``} Provider · ${q(u).length??``} Modelle`)},[()=>new Set(q(u).map(e=>e.provider)).size]),J(`click`,N,()=>V(r,`single`)),J(`click`,P,()=>V(r,`selected`)),J(`click`,ne,()=>V(r,`providers`)),J(`click`,se,h),J(`click`,ce,D),J(`keydown`,he,O),xi(he,()=>q(o),e=>V(o,e)),X(e,A),ze()}Cr([`click`,`change`,`keydown`]),Fe();var sa=[{id:`chatgpt-web`,label:`ChatGPT Web`,shortLabel:`ChatGPT`,description:`OpenAI ChatGPT über die lokale Browser-Session.`,authType:`web-login`,region:`global`,color:`#10a37f`,aliases:[`chatgpt`],plan:`Plus`},{id:`claude-web`,label:`Claude Web`,shortLabel:`Claude`,description:`Anthropic Claude über die lokale Browser-Session.`,authType:`web-login`,region:`global`,color:`#d97757`,aliases:[`claude`],plan:`Pro`},{id:`gemini-web`,label:`Gemini Web`,shortLabel:`Gemini`,description:`Google Gemini über die lokale Browser-Session.`,authType:`web-login`,region:`global`,color:`#4285f4`,aliases:[`gemini`]},{id:`deepseek-web`,label:`DeepSeek Web`,shortLabel:`DeepSeek`,description:`DeepSeek Chat und Reasoning über die Web-Oberfläche.`,authType:`web-login`,region:`global`,color:`#4f6ef7`,aliases:[`deepseek`]},{id:`grok-web`,label:`Grok Web`,shortLabel:`Grok`,description:`Grok über eine lokale Browser-Session.`,authType:`web-login`,region:`global`,color:`#d7d7dc`,aliases:[`grok`]},{id:`perplexity-web`,label:`Perplexity Web`,shortLabel:`Perplexity`,description:`Perplexity über eine lokale Browser-Session.`,authType:`web-login`,region:`global`,color:`#22b8b0`,aliases:[`perplexity`]},{id:`qwen-web`,label:`Qwen Web`,shortLabel:`Qwen`,description:`Internationale Qwen-Weboberfläche.`,authType:`web-login`,region:`global`,color:`#635bff`,aliases:[`qwen`]},{id:`qwen-cn-web`,label:`Qwen Web China`,shortLabel:`Qwen CN`,description:`Qianwen-Weboberfläche für China.`,authType:`web-login`,region:`china`,color:`#7c6cf2`,aliases:[`qwen-cn`]},{id:`kimi-web`,label:`Kimi Web`,shortLabel:`Kimi`,description:`Kimi über die lokale Browser-Session.`,authType:`web-login`,region:`china`,color:`#ff7a45`,aliases:[`kimi`]},{id:`doubao-web`,label:`Doubao Web`,shortLabel:`Doubao`,description:`Doubao über die lokale Browser-Session.`,authType:`web-login`,region:`china`,color:`#00a8ff`,aliases:[`doubao`]},{id:`glm-web`,label:`GLM Web China`,shortLabel:`GLM CN`,description:`ChatGLM über chatglm.cn.`,authType:`web-login`,region:`china`,color:`#2a7de1`,aliases:[`glm`]},{id:`glm-intl-web`,label:`GLM Web International`,shortLabel:`GLM Intl`,description:`GLM über die internationale Oberfläche chat.z.ai.`,authType:`web-login`,region:`global`,color:`#246bfd`,aliases:[`glm-intl`]},{id:`xiaomimo-web`,label:`XiaoMiMo Web`,shortLabel:`XiaoMiMo`,description:`XiaoMiMo über die lokale Browser-Session.`,authType:`web-login`,region:`china`,color:`#ff6900`,aliases:[`xiaomimo`]},{id:`manus-api`,label:`Manus API`,shortLabel:`Manus`,description:`Manus über einen lokal gespeicherten API-Schlüssel.`,authType:`api-key`,region:`global`,color:`#8b93a7`,aliases:[`manus`]}],ca=Y(`<span> </span>`),la=Y(`<div class="error-banner svelte-3h3ge3" role="alert"><span class="svelte-3h3ge3">!</span> <div><strong class="svelte-3h3ge3">Runtime nicht erreichbar</strong><small class="svelte-3h3ge3"> </small></div></div>`),ua=Y(`<small class="svelte-3h3ge3"> </small>`),da=Y(`<button class="login-button svelte-3h3ge3"> </button>`),fa=Y(`<span class="api-key-badge svelte-3h3ge3">API-Key</span>`),pa=Y(`<tr class="detail-row svelte-3h3ge3"><td class="svelte-3h3ge3"></td><td colspan="7" class="svelte-3h3ge3"><strong class="svelte-3h3ge3">Runtime-Fehler</strong><span> </span></td></tr>`),ma=Y(`<tr><td class="index-cell svelte-3h3ge3"> </td><td class="svelte-3h3ge3"><div class="provider-cell svelte-3h3ge3"><span class="provider-dot svelte-3h3ge3"></span> <div class="svelte-3h3ge3"><strong class="svelte-3h3ge3"> </strong> <small class="svelte-3h3ge3"> </small></div></div></td><td class="svelte-3h3ge3"><span> </span></td><td class="svelte-3h3ge3"><div class="number-cell svelte-3h3ge3"><strong class="svelte-3h3ge3"> </strong><small class="svelte-3h3ge3"> </small></div></td><td class="svelte-3h3ge3"><span class="model-count svelte-3h3ge3"> </span></td><td class="svelte-3h3ge3"><span><i class="svelte-3h3ge3"></i> </span></td><td class="svelte-3h3ge3"><div class="activity-cell svelte-3h3ge3"><span class="svelte-3h3ge3"> </span> <!></div></td><td class="svelte-3h3ge3"><!></td></tr> <!>`,1),ha=Y(`<div class="empty-state svelte-3h3ge3"><strong class="svelte-3h3ge3">Keine Provider gefunden</strong><span class="svelte-3h3ge3">Suche oder Region zurücksetzen.</span></div>`),ga=Y(`<div class="provider-page svelte-3h3ge3"><section class="hero-panel svelte-3h3ge3"><div class="hero-copy svelte-3h3ge3"><span class="eyebrow svelte-3h3ge3">PROVIDER OPERATIONS</span> <h2 class="svelte-3h3ge3">Runtime Control Matrix</h2> <p class="svelte-3h3ge3"> <!></p></div> <button class="refresh-button svelte-3h3ge3"><span>↻</span> </button></section> <section class="summary-grid svelte-3h3ge3" aria-label="Provider-Zusammenfassung"><article class="metric magenta svelte-3h3ge3"><span class="svelte-3h3ge3">Ausführbar</span> <strong class="svelte-3h3ge3"> </strong> <small class="svelte-3h3ge3">registrierte Adapter</small></article> <article class="metric blue svelte-3h3ge3"><span class="svelte-3h3ge3">Bereit</span> <strong class="svelte-3h3ge3"> </strong> <small class="svelte-3h3ge3">gesunde Runtimes</small></article> <article><span class="svelte-3h3ge3">Prüfen</span> <strong class="svelte-3h3ge3"> </strong> <small class="svelte-3h3ge3">benötigen Aufmerksamkeit</small></article> <article class="metric blue svelte-3h3ge3"><span class="svelte-3h3ge3">Accounts</span> <strong class="svelte-3h3ge3"> </strong> <small class="svelte-3h3ge3">aktive Sitzungen</small></article> <article class="metric magenta svelte-3h3ge3"><span class="svelte-3h3ge3">Modelle</span> <strong class="svelte-3h3ge3"> </strong> <small class="svelte-3h3ge3">aktuell verfügbar</small></article></section> <section class="control-strip svelte-3h3ge3"><label class="search-field svelte-3h3ge3"><span class="svelte-3h3ge3">⌕</span> <input placeholder="Provider, Alias oder Implementierung suchen" aria-label="Provider suchen" class="svelte-3h3ge3"/></label> <label class="region-field svelte-3h3ge3"><span class="svelte-3h3ge3">Region</span> <select aria-label="Region filtern" class="svelte-3h3ge3"><option>Alle</option><option>Global</option><option>China</option></select></label> <div class="result-count svelte-3h3ge3"><strong class="svelte-3h3ge3"> </strong><span class="svelte-3h3ge3">Datensätze</span></div></section> <!> <section class="data-grid svelte-3h3ge3" aria-label="Provider Runtime Tabelle"><table class="svelte-3h3ge3"><thead><tr><th class="svelte-3h3ge3">#</th><th class="svelte-3h3ge3">Provider / Implementierung</th><th class="svelte-3h3ge3">Region</th><th class="svelte-3h3ge3">Accounts</th><th class="svelte-3h3ge3">Modelle</th><th class="svelte-3h3ge3">Runtime</th><th class="svelte-3h3ge3">Letzte Aktivität</th><th class="svelte-3h3ge3">Aktion</th></tr></thead><tbody class="svelte-3h3ge3"></tbody></table> <!></section></div>`);function _a(e,t){Re(t,!0);let n=`nova.providers.filters`,r=B(en([])),i=B(en([])),a=B(``),o=B(`all`),s=B(``),c=B(``),l=B(!1),u=B(null),d=R(()=>sa.filter(e=>{let t=q(a).trim().toLowerCase();return(!t||[e.id,e.label,e.shortLabel,e.description,...e.aliases].some(e=>e.toLowerCase().includes(t)))&&(q(o)===`all`||e.region===q(o))})),f=R(()=>({runnable:q(i).filter(e=>e.runnable).length,healthy:q(i).filter(e=>e.status===`healthy`).length,attention:q(i).filter(e=>[`degraded`,`login-required`,`disconnected`].includes(e.status)).length,validAccounts:q(i).reduce((e,t)=>e+t.validAccounts,0),models:q(i).reduce((e,t)=>e+t.models,0)}));Rr(()=>{p(),_();let e=window.setInterval(_,3e3);return()=>window.clearInterval(e)});function p(){try{let e=JSON.parse(window.localStorage.getItem(n)??`{}`);V(a,e.query??``,!0),V(o,[`all`,`global`,`china`].includes(e.region??``)?e.region:`all`,!0)}catch{window.localStorage.removeItem(n)}}function m(){window.localStorage.setItem(n,JSON.stringify({query:q(a),region:q(o)}))}function h(e){V(a,e.currentTarget.value,!0),m()}function g(e){V(o,e.currentTarget.value,!0),m()}async function _(){if(!q(l)){V(l,!0);try{let[e,t]=await Promise.all([fetch(`/api/discovery/logins`,{cache:`no-store`}),fetch(`/api/provider-runtime`,{cache:`no-store`})]);if(!e.ok||!t.ok)throw Error(`HTTP ${e.status}/${t.status}`);V(r,(await e.json()).jobs??[],!0),V(i,await t.json(),!0),V(u,new Date,!0),V(c,``)}catch(e){V(c,e instanceof Error?e.message:String(e),!0)}finally{V(l,!1)}}}function v(e){return q(r).find(t=>t.providerId===e)}function y(e){return q(i).find(t=>t.id===e)}function b(e){switch(e){case`healthy`:return`Bereit`;case`degraded`:return`Eingeschränkt`;case`login-required`:return`Login nötig`;case`disconnected`:return`Getrennt`;case`not-implemented`:return`Nicht bereit`;default:return`Unbekannt`}}function x(e){return e?e.message??e.failureReason??e.status:`Keine Aktivität`}async function S(e){V(s,e,!0);try{let t=await fetch(`/api/discovery/logins`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e})}),n=await t.json();if(!t.ok)throw Error(n.error??`HTTP ${t.status}`);await _()}catch(e){V(c,e instanceof Error?e.message:String(e),!0)}finally{V(s,``)}}var C=ga(),w=H(C),T=H(w),E=U(H(T),4),D=H(E),O=U(D),k=e=>{var t=ca(),n=H(t);L(t),W(e=>Z(n,`· ${e??``}`),[()=>q(u).toLocaleTimeString(`de-DE`)]),X(e,t)};Q(O,e=>{q(u)&&e(k)}),L(E),L(T);var A=U(T,2),j=H(A);let M;var N=U(j);L(A),L(w);var ee=U(w,2),P=H(ee),te=U(H(P),2),ne=H(te,!0);L(te),De(2),L(P);var re=U(P,2),ie=U(H(re),2),ae=H(ie,!0);L(ie),De(2),L(re);var oe=U(re,2);let se;var ce=U(H(oe),2),le=H(ce,!0);L(ce),De(2),L(oe);var ue=U(oe,2),de=U(H(ue),2),fe=H(de,!0);L(de),De(2),L(ue);var pe=U(ue,2),me=U(H(pe),2),he=H(me,!0);L(me),De(2),L(pe),L(ee);var ge=U(ee,2),_e=H(ge),ve=U(H(_e),2);mi(ve),L(_e);var ye=U(_e,2),be=U(H(ye),2),xe=H(be);xe.value=xe.__value=`all`;var Se=U(xe);Se.value=Se.__value=`global`;var Ce=U(Se);Ce.value=Ce.__value=`china`,L(be);var F;si(be),L(ye);var we=U(ye,2),I=H(we),Te=H(I,!0);L(I),De(),L(we),L(ge);var Ee=U(ge,2),Oe=e=>{var t=la(),n=U(H(t),2),r=U(H(n)),i=H(r,!0);L(r),L(n),L(t),W(()=>Z(i,q(c))),X(e,t)};Q(Ee,e=>{q(c)&&e(Oe)});var ke=U(Ee,2),Ae=H(ke),je=U(H(Ae));Wr(je,23,()=>q(d),e=>e.id,(e,t,n)=>{let r=R(()=>v(q(t).id)),i=R(()=>y(q(t).id)),a=R(()=>x(q(r)));var o=ma(),c=fn(o);let l;var u=H(c),d=H(u,!0);L(u);var f=U(u),p=H(f),m=U(H(p),2),h=H(m),g=H(h,!0);L(h);var _=U(h,2),C=H(_,!0);L(_),L(m),L(p),L(f);var w=U(f),T=H(w),E=H(T,!0);L(T),L(w);var D=U(w),O=H(D),k=H(O),A=H(k,!0);L(k);var j=U(k),M=H(j);L(j),L(O),L(D);var N=U(D),ee=H(N),P=H(ee,!0);L(ee),L(N);var te=U(N),ne=H(te),re=U(H(ne),1,!0);L(ne),L(te);var ie=U(te),ae=H(ie),oe=H(ae),se=H(oe,!0);L(oe);var ce=U(oe,2),le=e=>{var t=ua(),n=H(t,!0);L(t),W(()=>Z(n,q(r).accountLabel)),X(e,t)};Q(ce,e=>{q(r)?.accountLabel&&e(le)}),L(ae),L(ie);var ue=U(ie),de=H(ue),fe=e=>{var n=da(),i=H(n,!0);L(n),W(e=>{n.disabled=e,Z(i,q(s)===q(t).id?`Öffne`:q(r)?.status===`succeeded`?`Erneuern`:`Login`)},[()=>q(s)===q(t).id||[`starting`,`waiting-for-user`,`saving`].includes(q(r)?.status??``)]),J(`click`,n,()=>S(q(t).id)),X(e,n)},pe=e=>{X(e,fa())};Q(de,e=>{q(t).authType===`web-login`?e(fe):e(pe,-1)}),L(ue),L(c);var me=U(c,2),he=e=>{var t=pa(),n=U(H(t)),r=U(H(n)),a=H(r,!0);L(r),L(n),L(t),W(()=>Z(a,q(i).lastError)),X(e,t)};Q(me,e=>{q(i)?.lastError&&e(he)}),W((e,n,r)=>{ai(c,`--provider-color:${q(t).color}`),l=$(c,1,`svelte-3h3ge3`,null,l,e),Z(d,n),_i(p,`title`,q(t).id),Z(g,q(t).label),Z(C,q(i)?.implementation??q(t).description),$(T,1,`region-tag ${q(t).region}`,`svelte-3h3ge3`),Z(E,q(t).region===`china`?`China`:`Global`),Z(A,q(i)?.validAccounts??0),Z(M,`/ ${q(i)?.accounts??0??``}`),Z(P,q(i)?.models??0),$(ne,1,`runtime-status ${q(i)?.status??`unknown`}`,`svelte-3h3ge3`),Z(re,r),_i(ie,`title`,q(a)),Z(se,q(a))},[()=>({needsAttention:!!(q(i)&&q(i).status!==`healthy`)}),()=>String(q(n)+1).padStart(2,`0`),()=>b(q(i)?.status)]),X(e,o)}),L(je),L(Ae);var Me=U(Ae,2),Ne=e=>{X(e,ha())};Q(Me,e=>{q(d).length===0&&e(Ne)}),L(ke),L(C),W(()=>{Z(D,`${q(d).length??``} von ${sa.length??``} Providern sichtbar · Live-Zustand aus dem Gateway `),A.disabled=q(l),M=$(j,1,`svelte-3h3ge3`,null,M,{spinning:q(l)}),Z(N,` ${q(l)?`Synchronisiere`:`Synchronisieren`}`),Z(ne,q(f).runnable),Z(ae,q(f).healthy),se=$(oe,1,`metric orange svelte-3h3ge3`,null,se,{warning:q(f).attention>0}),Z(le,q(f).attention),Z(fe,q(f).validAccounts),Z(he,q(f).models),hi(ve,q(a)),F!==(F=q(o))&&(be.value=(be.__value=q(o))??``,oi(be,q(o))),Z(Te,q(d).length)}),J(`click`,A,_),J(`input`,ve,h),J(`change`,be,g),X(e,C),ze()}Cr([`click`,`input`,`change`]);function va(e){_a(e,{})}var ya=Y(`<section class="panel svelte-t3f30z"><div class="head svelte-t3f30z"><div><span class="eyebrow svelte-t3f30z">Autonomous Discovery</span> <h3 class="svelte-t3f30z">Steuerung</h3></div> <span><i class="svelte-t3f30z"></i> </span></div> <div class="toggles svelte-t3f30z"><label class="svelte-t3f30z"><input type="checkbox" class="svelte-t3f30z"/> <span><strong class="svelte-t3f30z">Automatisch suchen</strong><small class="svelte-t3f30z">Scheduler aktivieren</small></span></label> <label class="svelte-t3f30z"><input type="checkbox" class="svelte-t3f30z"/> <span><strong class="svelte-t3f30z">Beim Start suchen</strong><small class="svelte-t3f30z">Direkt nach Gateway-Start</small></span></label> <label class="svelte-t3f30z"><input type="checkbox" class="svelte-t3f30z"/> <span><strong class="svelte-t3f30z">Webseiten prüfen</strong><small class="svelte-t3f30z">Nur öffentliche HTTPS-Ziele</small></span></label> <label class="svelte-t3f30z"><input type="checkbox" class="svelte-t3f30z"/> <span><strong class="svelte-t3f30z">Account-Hinweise</strong><small class="svelte-t3f30z">Lohnenswerte Logins markieren</small></span></label></div> <div class="fields svelte-t3f30z"><label class="svelte-t3f30z"><span>Intervall</span> <select class="svelte-t3f30z"><option>30 Minuten</option><option>1 Stunde</option><option>3 Stunden</option><option>6 Stunden</option><option>12 Stunden</option><option>24 Stunden</option><option>7 Tage</option></select></label> <label class="svelte-t3f30z"><span> </span> <input type="range" min="0" max="100" step="5" class="svelte-t3f30z"/></label></div> <label class="sources svelte-t3f30z"><span>Manifest-Quellen</span> <textarea rows="4" placeholder="https://raw.githubusercontent.com/OWNER/REPO/main/providers.json" class="svelte-t3f30z"></textarea> <small class="svelte-t3f30z">Eine URL pro Zeile. Nur HTTPS über raw.githubusercontent.com.</small></label> <div class="schedule svelte-t3f30z"><div class="svelte-t3f30z"><span class="svelte-t3f30z">Letzter Lauf</span><strong class="svelte-t3f30z"> </strong></div> <div class="svelte-t3f30z"><span class="svelte-t3f30z">Nächster Lauf</span><strong class="svelte-t3f30z"> </strong></div></div> <div class="actions svelte-t3f30z"><button class="secondary svelte-t3f30z"> </button> <button class="primary svelte-t3f30z"> </button></div></section>`);function ba(e,t){Re(t,!0);let n=()=>rt(t.state,`$state`,r),[r,i]=it(),a=Di(t,`busy`,3,!1),o=n()({...t.state.config,sources:[...t.state.config.sources]}),s=n()(t.state.config.sources.join(`
4
+ `)),c=n()(!1);Dn(()=>{o={...t.state.config,sources:[...t.state.config.sources]},s=t.state.config.sources.join(`
5
+ `)});async function l(){c=!0;try{await t.onSave({...o,sources:s.split(/[\n,]/).map(e=>e.trim()).filter(Boolean)})}finally{c=!1}}function u(e){return e?new Intl.DateTimeFormat(`de-DE`,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)):`–`}var d=ya(),f=H(d),p=U(H(f),2);let m;var h=U(H(p),1,!0);L(p),L(f);var g=U(f,2),_=H(g),v=H(_);mi(v),De(2),L(_);var y=U(_,2),b=H(y);mi(b),De(2),L(y);var x=U(y,2),S=H(x);mi(S),De(2),L(x);var C=U(x,2),w=H(C);mi(w),De(2),L(C),L(g);var T=U(g,2),E=H(T),D=U(H(E),2),O=H(D);O.value=O.__value=30;var k=U(O);k.value=k.__value=60;var A=U(k);A.value=A.__value=180;var j=U(A);j.value=j.__value=360;var M=U(j);M.value=M.__value=720;var N=U(M);N.value=N.__value=1440;var ee=U(N);ee.value=ee.__value=10080,L(D),L(E);var P=U(E,2),te=H(P),ne=H(te);L(te);var re=U(te,2);mi(re),L(P),L(T);var ie=U(T,2),ae=U(H(ie),2);_n(ae),De(2),L(ie);var oe=U(ie,2),se=H(oe),ce=U(H(se)),le=H(ce,!0);L(ce),L(se);var ue=U(se,2),de=U(H(ue)),fe=H(de,!0);L(de),L(ue),L(oe);var pe=U(oe,2),me=H(pe),he=H(me,!0);L(me);var ge=U(me,2),_e=H(ge,!0);L(ge),L(pe),L(d),W((e,n)=>{m=$(p,1,`state svelte-t3f30z`,null,m,{online:t.state.config.enabled}),Z(h,t.state.config.enabled?`Aktiv`:`Pausiert`),Z(ne,`Mindestscore: ${o.minScore??``}`),Z(le,e),Z(fe,n),me.disabled=c,Z(he,c?`Speichert …`:`Speichern`),ge.disabled=a()||t.state.running,Z(_e,a()||t.state.running?`Discovery läuft …`:`Jetzt suchen`)},[()=>u(t.state.lastRunAt),()=>u(t.state.nextRunAt)]),Si(v,()=>o.enabled,e=>o.enabled=e),Si(b,()=>o.runOnStart,e=>o.runOnStart=e),Si(S,()=>o.inspectHomepages,e=>o.inspectHomepages=e),Si(w,()=>o.notifyOnAccountRequired,e=>o.notifyOnAccountRequired=e),ci(D,()=>o.intervalMinutes,e=>o.intervalMinutes=e),xi(re,()=>o.minScore,e=>o.minScore=e),xi(ae,()=>s,e=>s=e),J(`click`,me,l),J(`click`,ge,function(...e){t.onRun?.apply(this,e)}),X(e,d),ze(),i()}Cr([`click`]);var xa=Y(`<span class="svelte-11147bh"> </span>`),Sa=Y(`<p class="svelte-11147bh"> </p>`),Ca=Y(`<small class="svelte-11147bh"> </small>`),wa=Y(`<div class="svelte-11147bh"><span class="svelte-11147bh"> </span> <code class="svelte-11147bh"> </code> <!></div>`),Ta=Y(`<div class="evidence svelte-11147bh"></div>`),Ea=Y(`<div class="signals svelte-11147bh"><span>API beobachtet</span> <span>Stream beobachtet</span></div> <!> <!>`,1),Da=Y(`<button class="stop svelte-11147bh">Probe stoppen</button>`),Oa=Y(`<button class="svelte-11147bh">Sichtbaren Stream-Test starten</button>`),ka=Y(`<section><div class="head svelte-11147bh"><div><strong class="svelte-11147bh"> </strong> <small class="svelte-11147bh"> </small></div> <!></div> <!> <div class="actions svelte-11147bh"><!></div></section>`);function Aa(e,t){Re(t,!0);let n=Di(t,`busy`,3,!1),r=Di(t,`enabled`,3,!0),i=R(()=>t.probe?.status===`starting`||t.probe?.status===`waiting-for-user`);function a(){switch(t.probe?.status){case`starting`:return`Browser startet`;case`waiting-for-user`:return`Testnachricht senden`;case`completed`:return`Probe abgeschlossen`;case`cancelled`:return`Probe beendet`;case`failed`:return`Probe fehlgeschlagen`;default:return`Noch nicht getestet`}}var o=ka();let s;var c=H(o),l=H(c),u=H(l),d=H(u,!0);L(u);var f=U(u,2),p=H(f,!0);L(f),L(l);var m=U(l,2),h=e=>{var n=xa(),r=H(n);L(n),W(()=>Z(r,`${t.probe.requestCount??``} Ereignisse`)),X(e,n)};Q(m,e=>{t.probe&&e(h)}),L(c);var g=U(c,2),_=e=>{var n=Ea(),r=fn(n),i=H(r);let a;var o=U(i,2);let s;L(r);var c=U(r,2),l=e=>{var n=Sa(),r=H(n,!0);L(n),W(()=>Z(r,t.probe.error)),X(e,n)};Q(c,e=>{t.probe.error&&e(l)});var u=U(c,2),d=e=>{var n=Ta();Wr(n,21,()=>t.probe.evidence.filter(e=>e.apiSignal||e.streamSignal).slice(0,4),Br,(e,t)=>{var n=wa(),r=H(n),i=H(r);L(r);var a=U(r,2),o=H(a,!0);L(a);var s=U(a,2),c=e=>{var n=Ca(),r=H(n,!0);L(n),W(()=>Z(r,q(t).contentType)),X(e,n)};Q(s,e=>{q(t).contentType&&e(c)}),L(n),W(()=>{Z(i,`${q(t).method??``} · ${q(t).resourceType??``}${q(t).status?` · ${q(t).status}`:``}`),Z(o,q(t).url)}),X(e,n)}),L(n),X(e,n)};Q(u,e=>{t.probe.evidence.length&&e(d)}),W(()=>{a=$(i,1,`svelte-11147bh`,null,a,{yes:t.probe.apiObserved}),s=$(o,1,`svelte-11147bh`,null,s,{yes:t.probe.streamObserved})}),X(e,n)};Q(g,e=>{t.probe&&e(_)});var v=U(g,2),y=H(v),b=e=>{var r=Da();W(()=>r.disabled=n()),J(`click`,r,()=>t.onStop(t.probe.id)),X(e,r)},x=e=>{var i=Oa();W(()=>i.disabled=n()||!r()),J(`click`,i,()=>t.onStart(t.providerId)),X(e,i)};Q(y,e=>{q(i)&&t.probe?e(b):e(x,-1)}),L(v),L(o),W(e=>{s=$(o,1,`probe svelte-11147bh`,null,s,{active:q(i),verified:t.probe?.streamObserved}),Z(d,e),Z(p,t.probe?.message??`Sichtbarer Browser-Test mit ausschließlich technischen Metadaten.`)},[()=>a()]),X(e,o),ze()}Cr([`click`]);var ja=Y(`<code class="svelte-ee4v1j"> </code>`),Ma=Y(`<span class="svelte-ee4v1j"> </span>`),Na=Y(`<div class="models svelte-ee4v1j"><!> <!></div>`),Pa=Y(`<li> </li>`),Fa=Y(`<a target="_blank" rel="noreferrer" class="svelte-ee4v1j">Website öffnen ↗</a>`),Ia=Y(`<button class="approve svelte-ee4v1j">Lohnt sich</button>`),La=Y(`<button class="account svelte-ee4v1j">Account erstellt</button>`),Ra=Y(`<button class="reject svelte-ee4v1j">Ablehnen</button>`),za=Y(`<article><div class="head svelte-ee4v1j"><div class="score svelte-ee4v1j"><strong class="svelte-ee4v1j"> </strong></div> <div class="title svelte-ee4v1j"><h4 class="svelte-ee4v1j"> </h4> <code class="svelte-ee4v1j"> </code></div> <span> </span></div> <div class="signals svelte-ee4v1j"><span>Webseite</span> <span>HTML-Stream-Signal</span> <span>HTML-API-Signal</span> <span> </span></div> <!> <ul class="svelte-ee4v1j"></ul> <!> <div class="meta svelte-ee4v1j"> </div> <div class="actions svelte-ee4v1j"><!> <!> <!> <!></div></article>`);function Ba(e,t){Re(t,!0);let n=Di(t,`busy`,3,!1);function r(e){switch(e){case`account-required`:return`Account nötig`;case`approved`:return`Freigegeben`;case`account-ready`:return`Account bereit`;case`rejected`:return`Abgelehnt`;default:return`Neu`}}function i(e){return new Intl.DateTimeFormat(`de-DE`,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e))}var a=za();let o;var s=H(a),c=H(s),l=H(c),u=H(l,!0);L(l),L(c);var d=U(c,2),f=H(d),p=H(f,!0);L(f);var m=U(f,2),h=H(m,!0);L(m),L(d);var g=U(d,2),_=H(g,!0);L(g),L(s);var v=U(s,2),y=H(v);let b;var x=U(y,2);let S;var C=U(x,2);let w;var T=U(C,2);let E;var D=H(T);L(T),L(v);var O=U(v,2),k=e=>{var n=Na(),r=H(n);Wr(r,17,()=>t.review.models.slice(0,8),Br,(e,t)=>{var n=ja(),r=H(n,!0);L(n),W(()=>Z(r,q(t))),X(e,n)});var i=U(r,2),a=e=>{var n=Ma(),r=H(n);L(n),W(()=>Z(r,`+${t.review.models.length-8}`)),X(e,n)};Q(i,e=>{t.review.models.length>8&&e(a)}),L(n),X(e,n)};Q(O,e=>{t.review.models.length&&e(k)});var A=U(O,2);Wr(A,21,()=>t.review.reasons.slice(0,5),Br,(e,t)=>{var n=Pa(),r=H(n,!0);L(n),W(()=>Z(r,q(t))),X(e,n)}),L(A);var j=U(A,2);{let e=R(()=>!!t.review.homepage);Aa(j,{get providerId(){return t.review.providerId},get probe(){return t.probe},get busy(){return n()},get enabled(){return q(e)},get onStart(){return t.onProbeStart},get onStop(){return t.onProbeStop}})}var M=U(j,2),N=H(M);L(M);var ee=U(M,2),P=H(ee),te=e=>{var n=Fa();W(()=>_i(n,`href`,t.review.homepage)),X(e,n)};Q(P,e=>{t.review.homepage&&e(te)});var ne=U(P,2),re=e=>{var r=Ia();W(()=>r.disabled=n()),J(`click`,r,()=>t.onDecision(t.review.providerId,`approved`)),X(e,r)};Q(ne,e=>{t.review.decision!==`approved`&&e(re)});var ie=U(ne,2),ae=e=>{var r=La();W(()=>r.disabled=n()),J(`click`,r,()=>t.onDecision(t.review.providerId,`account-ready`)),X(e,r)};Q(ie,e=>{t.review.accountRequired&&t.review.decision!==`account-ready`&&e(ae)});var oe=U(ie,2),se=e=>{var r=Ra();W(()=>r.disabled=n()),J(`click`,r,()=>t.onDecision(t.review.providerId,`rejected`)),X(e,r)};Q(oe,e=>{t.review.decision!==`rejected`&&e(se)}),L(ee),L(a),W((e,n)=>{o=$(a,1,`svelte-ee4v1j`,null,o,{valuable:t.review.valuable,rejected:t.review.decision===`rejected`}),ai(c,`--score:${t.review.score*3.6}deg`),Z(u,t.review.score),Z(p,t.review.label),Z(h,t.review.providerId),$(g,1,`decision decision-${t.review.decision??``}`,`svelte-ee4v1j`),Z(_,e),b=$(y,1,`svelte-ee4v1j`,null,b,{yes:t.review.homepageReachable}),S=$(x,1,`svelte-ee4v1j`,null,S,{yes:t.review.streamPotential}),w=$(C,1,`svelte-ee4v1j`,null,w,{yes:t.review.apiPotential}),E=$(T,1,`svelte-ee4v1j`,null,E,{alert:t.review.accountRequired}),Z(D,`Account ${t.review.accountRequired?`nötig`:`offen`}`),Z(N,`Geprüft: ${n??``}`)},[()=>r(t.review.decision),()=>i(t.review.lastCheckedAt)]),X(e,a),ze()}Cr([`click`]);async function Va(e,t){let n=await fetch(e,{cache:`no-store`,...t}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);return r}function Ha(){return Va(`/api/discovery/control`)}function Ua(){return Va(`/api/discovery/control/run`,{method:`POST`})}function Wa(e){return Va(`/api/discovery/control/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}function Ga(e,t){return Va(`/api/discovery/control/candidates/${encodeURIComponent(e)}/decision`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({decision:t})})}async function Ka(){return(await Va(`/api/discovery/probes`)).jobs}function qa(e){return Va(`/api/discovery/probes`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e})})}function Ja(e){return Va(`/api/discovery/probes/${encodeURIComponent(e)}/stop`,{method:`POST`})}var Ya=Y(`<b class="svelte-1kdbvr3"> </b>`),Xa=Y(`<div class="error svelte-1kdbvr3"> </div>`),Za=Y(`<div class="empty svelte-1kdbvr3">Keine passenden Kandidaten. Starte einen Discovery-Lauf.</div>`),Qa=Y(`<div class="cards svelte-1kdbvr3"></div>`),$a=Y(`<section class="queue-head svelte-1kdbvr3"><div><span class="svelte-1kdbvr3">Review Queue</span><h3 class="svelte-1kdbvr3">Gefundene Quellen</h3></div> <div class="tools svelte-1kdbvr3"><!> <input placeholder="Kandidat oder Modell suchen" class="svelte-1kdbvr3"/></div></section> <!> <!>`,1);function eo(e,t){Re(t,!0);let n=B(en([])),r=B(``),i=B(null),a=B(null),o=R(()=>t.reviews.filter(e=>{let t=q(r).trim().toLowerCase();return!t||e.label.toLowerCase().includes(t)||e.providerId.toLowerCase().includes(t)||e.models.some(e=>e.toLowerCase().includes(t))})),s=R(()=>q(n).filter(e=>e.status===`starting`||e.status===`waiting-for-user`).length);Rr(()=>{l();let e=window.setInterval(()=>{q(s)>0&&l()},2e3);return()=>window.clearInterval(e)});function c(e){return q(n).find(t=>t.providerId===e)}async function l(){try{V(n,await Ka(),!0),V(a,null)}catch(e){V(a,e instanceof Error?e.message:`Probe-Status nicht erreichbar`,!0)}}async function u(e,n){V(i,e,!0);try{await Ga(e,n),await t.onChanged()}catch(e){V(a,e instanceof Error?e.message:`Entscheidung fehlgeschlagen`,!0)}finally{V(i,null)}}async function d(e){V(i,e,!0);try{let t=await qa(e);V(n,[t,...q(n).filter(e=>e.id!==t.id)],!0),V(a,null)}catch(e){V(a,e instanceof Error?e.message:`Probe konnte nicht gestartet werden`,!0)}finally{V(i,null)}}async function f(e){V(i,q(n).find(t=>t.id===e)?.providerId??null,!0);try{let t=await Ja(e);V(n,[t,...q(n).filter(e=>e.id!==t.id)],!0)}catch(e){V(a,e instanceof Error?e.message:`Probe konnte nicht beendet werden`,!0)}finally{V(i,null)}}var p=$a(),m=fn(p),h=U(H(m),2),g=H(h),_=e=>{var t=Ya(),n=H(t);L(t),W(()=>Z(n,`${q(s)??``} Probe(n) aktiv`)),X(e,t)};Q(g,e=>{q(s)>0&&e(_)});var v=U(g,2);mi(v),L(h),L(m);var y=U(m,2),b=e=>{var t=Xa(),n=H(t,!0);L(t),W(()=>Z(n,q(a))),X(e,t)};Q(y,e=>{q(a)&&e(b)});var x=U(y,2),S=e=>{X(e,Za())},C=e=>{var t=Qa();Wr(t,21,()=>q(o),e=>e.providerId,(e,t)=>{{let n=R(()=>c(q(t).providerId)),r=R(()=>q(i)===q(t).providerId);Ba(e,{get review(){return q(t)},get probe(){return q(n)},get busy(){return q(r)},onDecision:u,onProbeStart:d,onProbeStop:f})}}),L(t),X(e,t)};Q(x,e=>{q(o).length===0?e(S):e(C,-1)}),xi(v,()=>q(r),e=>V(r,e)),X(e,p),ze()}var to=Y(`<div class="notice svelte-1pjdoh4"><strong>Fehler</strong><span> </span><button class="svelte-1pjdoh4">Neu laden</button></div>`),no=Y(`<div class="notice warning svelte-1pjdoh4"><strong>Letzter Lauf</strong><span> </span></div>`),ro=Y(`<div class="loading svelte-1pjdoh4">Control Center wird geladen …</div>`),io=Y(`<div class="control svelte-1pjdoh4"><!> <section class="pipeline svelte-1pjdoh4"><span class="svelte-1pjdoh4">Freigabepipeline</span> <h3 class="svelte-1pjdoh4">Von der Website zur API</h3> <ol class="svelte-1pjdoh4"><li class="svelte-1pjdoh4"><i class="svelte-1pjdoh4">1</i><div><strong class="svelte-1pjdoh4">Quelle finden</strong><small class="svelte-1pjdoh4">Katalog oder öffentlicher Kandidat</small></div></li> <li class="svelte-1pjdoh4"><i class="svelte-1pjdoh4">2</i><div><strong class="svelte-1pjdoh4">Webseite prüfen</strong><small class="svelte-1pjdoh4">Login-, API- und HTML-Signale</small></div></li> <li class="svelte-1pjdoh4"><i class="svelte-1pjdoh4">3</i><div><strong class="svelte-1pjdoh4">Sichtbar testen</strong><small class="svelte-1pjdoh4">Du sendest selbst eine Testnachricht</small></div></li> <li class="svelte-1pjdoh4"><i class="svelte-1pjdoh4">4</i><div><strong class="svelte-1pjdoh4">Adapter bauen</strong><small class="svelte-1pjdoh4">Echte Endpunkte und Streamingformat</small></div></li> <li class="svelte-1pjdoh4"><i class="svelte-1pjdoh4">5</i><div><strong class="svelte-1pjdoh4">API aktivieren</strong><small class="svelte-1pjdoh4">Erst nach drei erfolgreichen Läufen</small></div></li></ol> <p class="svelte-1pjdoh4"><strong>Datensparsam.</strong> Die Probe speichert nur Methode, bereinigten URL-Pfad,
6
+ Ressourcentyp, Status und Content-Type.</p></section></div> <!>`,1),ao=Y(`<div class="page svelte-1pjdoh4"><section class="hero svelte-1pjdoh4"><div><span class="svelte-1pjdoh4">Autonomous Discovery</span> <h2 class="svelte-1pjdoh4">Nova Control Center</h2> <p class="svelte-1pjdoh4">Öffentliche LLM-Webquellen finden, bewerten und mit einem sichtbaren Browser auf echte
7
+ API- und Streamsignale prüfen.</p></div> <b> </b></section> <!> <!> <section class="stats svelte-1pjdoh4"><article class="svelte-1pjdoh4"><span class="svelte-1pjdoh4">Kandidaten</span><strong class="svelte-1pjdoh4"> </strong></article> <article class="svelte-1pjdoh4"><span class="svelte-1pjdoh4">Lohnenswert</span><strong class="svelte-1pjdoh4"> </strong></article> <article class="svelte-1pjdoh4"><span class="svelte-1pjdoh4">Account nötig</span><strong class="svelte-1pjdoh4"> </strong></article> <article class="svelte-1pjdoh4"><span class="svelte-1pjdoh4">HTML-Stream-Signale</span><strong class="svelte-1pjdoh4"> </strong></article></section> <!> <footer class="svelte-1pjdoh4">Ein beobachtetes Streamsignal ist noch kein aktiver Provider. Die Freigabe erfolgt erst nach
8
+ einem reproduzierbaren Adaptertest.</footer></div>`);function oo(e,t){Re(t,!0);let n=B(null),r=B(!0),i=B(!1),a=B(null),o=R(()=>q(n)?.reviews.filter(e=>e.valuable).length??0),s=R(()=>q(n)?.reviews.filter(e=>e.valuable&&e.accountRequired).length??0),c=R(()=>q(n)?.reviews.filter(e=>e.streamPotential).length??0);Rr(()=>{l();let e=window.setInterval(()=>{(q(n)?.running||q(i))&&u(!1)},3e3);return()=>window.clearInterval(e)});async function l(){V(r,!0),await u(!0),V(r,!1)}async function u(e=!0){try{V(n,await Ha(),!0),V(a,null)}catch(t){e&&V(a,t instanceof Error?t.message:`Control Center nicht erreichbar`,!0)}}async function d(){V(i,!0);try{V(n,await Ua(),!0),V(a,null)}catch(e){V(a,e instanceof Error?e.message:`Discovery fehlgeschlagen`,!0)}finally{V(i,!1)}}async function f(e){V(n,await Wa(e),!0)}var p=ao(),m=H(p),h=U(H(m),2);let g;var _=H(h,!0);L(h),L(m);var v=U(m,2),y=e=>{var t=to(),n=U(H(t)),r=H(n,!0);L(n);var i=U(n);L(t),W(()=>Z(r,q(a))),J(`click`,i,l),X(e,t)};Q(v,e=>{q(a)&&e(y)});var b=U(v,2),x=e=>{var t=no(),r=U(H(t)),i=H(r,!0);L(r),L(t),W(()=>Z(i,q(n).lastError)),X(e,t)};Q(b,e=>{q(n)?.lastError&&e(x)});var S=U(b,2),C=H(S),w=U(H(C)),T=H(w,!0);L(w),L(C);var E=U(C,2),D=U(H(E)),O=H(D,!0);L(D),L(E);var k=U(E,2),A=U(H(k)),j=H(A,!0);L(A),L(k);var M=U(k,2),N=U(H(M)),ee=H(N,!0);L(N),L(M),L(S);var P=U(S,2),te=e=>{X(e,ro())},ne=e=>{var t=io(),r=fn(t);ba(H(r),{get state(){return q(n)},get busy(){return q(i)},onRun:d,onSave:f}),De(2),L(r),eo(U(r,2),{get reviews(){return q(n).reviews},onChanged:u}),X(e,t)};Q(P,e=>{q(r)||!q(n)?e(te):e(ne,-1)}),De(2),L(p),W(()=>{g=$(h,1,`svelte-1pjdoh4`,null,g,{online:q(n)?.config.enabled}),Z(_,q(n)?.config.enabled?`Automatik aktiv`:`Automatik pausiert`),Z(T,q(n)?.reviews.length??0),Z(O,q(o)),Z(j,q(s)),Z(ee,q(c))}),X(e,p),ze()}Cr([`click`]);function so(e){oo(e,{})}var co=`FF-ZTN`,lo=`yoyo-evolve`,uo=`https://github.com/yologdev/yoyo-evolve`,fo=Y(`<article class="svelte-u0sly9"><div class="step-number svelte-u0sly9"></div> <div class="step-copy svelte-u0sly9"><h3 class="svelte-u0sly9"> </h3> <p class="svelte-u0sly9"> </p></div> <button class="command svelte-u0sly9"><code class="svelte-u0sly9"> </code> <span class="svelte-u0sly9"> </span></button></article>`),po=Y(`<div class="page svelte-u0sly9"><section class="hero svelte-u0sly9"><div class="hero-copy svelte-u0sly9"><span class="eyebrow svelte-u0sly9">Coding Agent</span> <h2 class="svelte-u0sly9"> </h2> <p class="svelte-u0sly9">Nutzt <strong class="svelte-u0sly9"> </strong> als optionales Terminal-Backend und routet
9
+ Modellzugriffe über das lokale Nova-Gateway.</p> <div class="status-line svelte-u0sly9"><span></span> <span> </span> <button class="svelte-u0sly9">Neu prüfen</button></div></div> <div class="agent-mark svelte-u0sly9">N</div></section> <section class="architecture svelte-u0sly9"><div class="svelte-u0sly9"><span class="svelte-u0sly9">Terminal</span><strong class="svelte-u0sly9">nova agent</strong></div> <i class="svelte-u0sly9">→</i> <div class="svelte-u0sly9"><span class="svelte-u0sly9">Agent-Backend</span><strong class="svelte-u0sly9"> </strong></div> <i class="svelte-u0sly9">→</i> <div class="svelte-u0sly9"><span class="svelte-u0sly9">Model API</span><strong class="svelte-u0sly9">Nova /v1</strong></div></section> <div class="steps svelte-u0sly9"></div> <section class="details-grid svelte-u0sly9"><div class="detail-card svelte-u0sly9"><span class="eyebrow svelte-u0sly9">Konfiguration</span> <h3 class="svelte-u0sly9">Lokaler Custom Provider</h3> <p class="svelte-u0sly9">Nova startet das Backend mit <code class="svelte-u0sly9">--provider custom</code> und setzt die lokale
10
+ Gateway-URL automatisch auf <code class="svelte-u0sly9">http://127.0.0.1:3000/v1</code>.</p></div> <div class="detail-card svelte-u0sly9"><span class="eyebrow svelte-u0sly9">Sicherheit</span> <h3 class="svelte-u0sly9">Keine Browser-Secrets im Agent</h3> <p class="svelte-u0sly9">Der Agent spricht ausschließlich mit Nova. Cookies, Sessiontokens und Account-Dateien
11
+ werden nicht an das Agent-Backend übergeben.</p></div> <div class="detail-card svelte-u0sly9"><span class="eyebrow svelte-u0sly9">Kompatibilität</span> <h3 class="svelte-u0sly9">Eigenständiges Backend</h3> <p class="svelte-u0sly9"> </p></div></section> <section class="source-note svelte-u0sly9"><div><strong class="svelte-u0sly9">Open-Source-Attribution</strong> <span class="svelte-u0sly9"> </span></div> <a target="_blank" rel="noreferrer" class="svelte-u0sly9">Quellprojekt öffnen ↗</a></section></div>`);function mo(e,t){Re(t,!0);let n=B(null),r=B(null),i=[{id:`install`,title:`Agent installieren`,description:`Installiert das MIT-lizenzierte yoyo-agent Binary über Cargo.`,command:`nova agent install`},{id:`init`,title:`Projekt vorbereiten`,description:`Erzeugt eine lokale .yoyo.toml und sichere Nova-Anweisungen.`,command:`nova agent init`},{id:`doctor`,title:`Integration prüfen`,description:`Prüft Binary, Version und Erreichbarkeit des lokalen Gateways.`,command:`nova agent doctor`},{id:`run`,title:`Agent starten`,description:`Startet den Coding-Agent gegen Novas OpenAI-kompatibles Gateway.`,command:`nova agent --model gpt-4o`}];Dn(()=>{a()});async function a(){V(n,null);try{V(n,(await fetch(`/health`,{cache:`no-store`})).ok,!0)}catch{V(n,!1)}}async function o(e,t){await navigator.clipboard.writeText(t),V(r,e,!0),window.setTimeout(()=>{q(r)===e&&V(r,null)},1600)}var s=po(),c=H(s),l=H(c),u=U(H(l),2),d=H(u);L(u);var f=U(u,2),p=U(H(f)),m=H(p,!0);L(p),De(),L(f);var h=U(f,2),g=H(h);let _;var v=U(g,2),y=H(v,!0);L(v);var b=U(v,2);L(h),L(l),De(2),L(c);var x=U(c,2),S=U(H(x),4),C=U(H(S)),w=H(C,!0);L(C),L(S),De(4),L(x);var T=U(x,2);Wr(T,21,()=>i,Br,(e,t,n)=>{var i=fo(),a=H(i);a.textContent=n+1;var s=U(a,2),c=H(s),l=H(c,!0);L(c);var u=U(c,2),d=H(u,!0);L(u),L(s);var f=U(s,2),p=H(f),m=H(p,!0);L(p);var h=U(p,2),g=H(h,!0);L(h),L(f),L(i),W(()=>{Z(l,q(t).title),Z(d,q(t).description),Z(m,q(t).command),Z(g,q(r)===q(t).id?`Kopiert`:`Kopieren`)}),J(`click`,f,()=>o(q(t).id,q(t).command)),X(e,i)}),L(T);var E=U(T,2),D=U(H(E),4),O=U(H(D),4),k=H(O);L(O),L(D),L(E);var A=U(E,2),j=H(A),M=U(H(j),2),N=H(M);L(M),L(j);var ee=U(j,2);L(A),L(s),W(()=>{Z(d,`FF-ZTN Agent`),Z(m,lo),_=$(g,1,`dot svelte-u0sly9`,null,_,{online:q(n)===!0,offline:q(n)===!1}),Z(y,q(n)===null?`Gateway wird geprüft`:q(n)?`Gateway ist bereit`:`Gateway ist nicht erreichbar`),Z(w,lo),Z(k,`yoyo-evolve bleibt ein separates Open-Source-Projekt. Nova integriert das
12
+ installierte Binary, statt dessen Quellbaum zu duplizieren.`),Z(N,`yoyo-evolve · MIT License · Copyright © 2026 yologdev`),_i(ee,`href`,uo)}),J(`click`,b,a),X(e,s),ze()}Cr([`click`]);var ho=Y(`<article class="svelte-1ld53t8"><div class="svelte-1ld53t8"><h3 class="svelte-1ld53t8"> </h3> <code class="svelte-1ld53t8"> </code></div> <button class="svelte-1ld53t8"> </button></article>`),go=Y(`<div class="page svelte-1ld53t8"><section class="hero svelte-1ld53t8"><div><span class="eyebrow svelte-1ld53t8">Optionales Backend</span> <h2 class="svelte-1ld53t8">Nova + GenericAgent</h2> <p class="svelte-1ld53t8">Nova konfiguriert eine separat installierte GenericAgent-Kopie für den lokalen
13
+ OpenAI-kompatiblen Gateway-Endpunkt. Das Quellprojekt bleibt eigenständig.</p></div> <div class="status svelte-1ld53t8"><span></span> </div></section> <section class="flow svelte-1ld53t8"><div class="svelte-1ld53t8"><small class="svelte-1ld53t8">1</small><strong class="svelte-1ld53t8">GenericAgent separat installieren</strong></div> <i class="svelte-1ld53t8">→</i> <div class="svelte-1ld53t8"><small class="svelte-1ld53t8">2</small><strong class="svelte-1ld53t8">Nova-Konfiguration erzeugen</strong></div> <i class="svelte-1ld53t8">→</i> <div class="svelte-1ld53t8"><small class="svelte-1ld53t8">3</small><strong class="svelte-1ld53t8">Frontend explizit starten</strong></div></section> <div class="commands svelte-1ld53t8"></div> <section class="features svelte-1ld53t8"><div class="svelte-1ld53t8"><strong class="svelte-1ld53t8">Konfiguration</strong><span class="svelte-1ld53t8">mykey.py zeigt auf Novas lokalen /v1-Endpunkt.</span></div> <div class="svelte-1ld53t8"><strong class="svelte-1ld53t8">Frontends</strong><span class="svelte-1ld53t8">CLI, TUI, TUI2, GUI, Launch und Hub sind auswählbar.</span></div> <div class="svelte-1ld53t8"><strong class="svelte-1ld53t8">Isolation</strong><span class="svelte-1ld53t8">Nova übergibt keine Cookies oder Browser-Sitzungen an das Backend.</span></div></section> <section class="notice svelte-1ld53t8"><div><strong class="svelte-1ld53t8">Open-Source-Attribution</strong> <span class="svelte-1ld53t8">GenericAgent · MIT License · Copyright © 2025 lsdefine</span></div> <a href="https://github.com/lsdefine/genericagent" target="_blank" rel="noreferrer" class="svelte-1ld53t8">Repository öffnen ↗</a></section></div>`);function _o(e,t){Re(t,!0);let n=B(null),r=B(null),i=[{id:`home`,label:`Repository-Pfad setzen`,value:`export NOVA_GENERIC_AGENT_HOME=/pfad/zu/genericagent`},{id:`init`,label:`Nova-Konfiguration erstellen`,value:`nova-ga init --model gpt-4o`},{id:`doctor`,label:`Integration prüfen`,value:`nova-ga doctor`},{id:`run`,label:`CLI starten`,value:`nova-ga run --frontend=cli`},{id:`tui`,label:`TUI starten`,value:`nova-ga run --frontend=tui`}];Dn(()=>{a()});async function a(){V(r,null);try{V(r,(await fetch(`/health`,{cache:`no-store`})).ok,!0)}catch{V(r,!1)}}async function o(e,t){await navigator.clipboard.writeText(t),V(n,e,!0),window.setTimeout(()=>{q(n)===e&&V(n,null)},1500)}var s=go(),c=H(s),l=U(H(c),2),u=H(l);let d;var f=U(u);L(l),L(c);var p=U(c,4);Wr(p,21,()=>i,Br,(e,t)=>{var r=ho(),i=H(r),a=H(i),s=H(a,!0);L(a);var c=U(a,2),l=H(c,!0);L(c),L(i);var u=U(i,2),d=H(u,!0);L(u),L(r),W(()=>{Z(s,q(t).label),Z(l,q(t).value),Z(d,q(n)===q(t).id?`Kopiert`:`Kopieren`)}),J(`click`,u,()=>o(q(t).id,q(t).value)),X(e,r)}),L(p),De(4),L(s),W(()=>{d=$(u,1,`svelte-1ld53t8`,null,d,{online:q(r)===!0,offline:q(r)===!1}),Z(f,` ${q(r)===null?`Prüfe Gateway`:q(r)?`Gateway bereit`:`Gateway offline`}`)}),X(e,s),ze()}Cr([`click`]);var vo=Y(`<option> </option>`),yo=Y(`<p class="error svelte-srnpib"> </p>`),bo=Y(`<tr class="svelte-srnpib"><td class="svelte-srnpib"> </td><td class="svelte-srnpib"> </td><td class="svelte-srnpib"><b> </b><small class="svelte-srnpib"> </small></td><td class="svelte-srnpib"> </td><td class="svelte-srnpib"> </td><td class="svelte-srnpib"><span> </span></td><td class="svelte-srnpib"> </td><td class="svelte-srnpib"> </td><td class="svelte-srnpib"> </td><td class="svelte-srnpib"><button class="svelte-srnpib">Prüfen</button><button class="danger svelte-srnpib">Löschen</button></td></tr>`),xo=Y(`<div class="page svelte-srnpib"><header class="svelte-srnpib"><div><small class="svelte-srnpib">ACCOUNT REGISTER</small><h2 class="svelte-srnpib">Accounts</h2><p class="svelte-srnpib"> </p></div> <button class="svelte-srnpib">Aktualisieren</button></header> <section class="filters svelte-srnpib"><input placeholder="Suchen …" class="svelte-srnpib"/> <select class="svelte-srnpib"><option>Alle Provider</option><!></select> <select class="svelte-srnpib"><option>Alle Status</option><option>Gültig</option><option>Abgelaufen</option><option>Login nötig</option><option>Fehler</option></select></section> <!> <div class="grid svelte-srnpib"><table class="svelte-srnpib"><thead><tr><th class="svelte-srnpib">#</th><th class="svelte-srnpib">Provider</th><th class="svelte-srnpib">Account</th><th class="svelte-srnpib">E-Mail</th><th class="svelte-srnpib">Plan</th><th class="svelte-srnpib">Status</th><th class="svelte-srnpib">Prio</th><th class="svelte-srnpib">Validiert</th><th class="svelte-srnpib">Zuletzt genutzt</th><th class="svelte-srnpib">Aktionen</th></tr></thead><tbody class="svelte-srnpib"></tbody></table></div> <div class="pager"><span> </span><button class="svelte-srnpib">‹</button><button class="svelte-srnpib">›</button></div></div>`);function So(e,t){Re(t,!0);let n=B(en([])),r=B(``),i=B(`all`),a=B(`all`),o=B(``),s=B(``),c=B(1),l=R(()=>[...new Set(q(n).map(e=>e.provider))].sort()),u=R(()=>q(n).filter(e=>{let t=q(r).trim().toLowerCase();return(!t||[e.label,e.email??``,e.provider].some(e=>e.toLowerCase().includes(t)))&&(q(i)===`all`||e.provider===q(i))&&(q(a)===`all`||e.sessionStatus===q(a))})),d=R(()=>Math.max(1,Math.ceil(q(u).length/50))),f=R(()=>q(u).slice((q(c)-1)*50,q(c)*50));Dn(()=>{p()}),Dn(()=>{q(r),q(i),q(a),V(c,1)}),Dn(()=>{q(c)>q(d)&&V(c,q(d),!0)});async function p(){try{V(n,await ji(),!0),V(s,``)}catch(e){V(s,e instanceof Error?e.message:String(e),!0)}}async function m(e){V(o,e,!0);try{await Ni(e),await p()}finally{V(o,``)}}async function h(e){if(confirm(`Account „${e.label}“ löschen?`)){V(o,e.id,!0);try{await Mi(e.id),await p()}finally{V(o,``)}}}let g=e=>e?new Intl.DateTimeFormat(`de-DE`,{dateStyle:`short`,timeStyle:`short`}).format(new Date(e)):`–`;var _=xo(),v=H(_),y=H(v),b=U(H(y),2),x=H(b);L(b),L(y);var S=U(y,2);L(v);var C=U(v,2),w=H(C);mi(w);var T=U(w,2),E=H(T);E.value=E.__value=`all`,Wr(U(E),17,()=>q(l),Br,(e,t)=>{var n=vo(),r=H(n,!0);L(n);var i={};W(()=>{Z(r,q(t)),i!==(i=q(t))&&(n.value=(n.__value=q(t))??``)}),X(e,n)}),L(T);var D=U(T,2),O=H(D);O.value=O.__value=`all`;var k=U(O);k.value=k.__value=`valid`;var A=U(k);A.value=A.__value=`expired`;var j=U(A);j.value=j.__value=`login-required`;var M=U(j);M.value=M.__value=`error`,L(D),L(C);var N=U(C,2),ee=e=>{var t=yo(),n=H(t,!0);L(t),W(()=>Z(n,q(s))),X(e,t)};Q(N,e=>{q(s)&&e(ee)});var P=U(N,2),te=H(P),ne=U(H(te));Wr(ne,23,()=>q(f),e=>e.id,(e,t,n)=>{var r=bo(),i=H(r),a=H(i,!0);L(i);var s=U(i),l=H(s,!0);L(s);var u=U(s),d=H(u),f=H(d,!0);L(d);var p=U(d),_=H(p,!0);L(p),L(u);var v=U(u),y=H(v,!0);L(v);var b=U(v),x=H(b,!0);L(b);var S=U(b),C=H(S),w=H(C,!0);L(C),L(S);var T=U(S),E=H(T,!0);L(T);var D=U(T),O=H(D,!0);L(D);var k=U(D),A=H(k,!0);L(k);var j=U(k),M=H(j),N=U(M);L(j),L(r),W((e,r)=>{Z(a,(q(c)-1)*50+q(n)+1),_i(s,`title`,q(t).provider),Z(l,q(t).provider),_i(u,`title`,`${q(t).label} · ${q(t).id}`),Z(f,q(t).label),Z(_,q(t).id),_i(v,`title`,q(t).email??``),Z(y,q(t).email??`–`),_i(b,`title`,q(t).plan??`unknown`),Z(x,q(t).plan??`unknown`),$(C,1,`status ${q(t).sessionStatus}`,`svelte-srnpib`),Z(w,q(t).sessionStatus),Z(E,q(t).priority),Z(O,e),Z(A,r),M.disabled=q(o)===q(t).id,N.disabled=q(o)===q(t).id},[()=>g(q(t).lastValidatedAt),()=>g(q(t).lastUsedAt)]),J(`click`,M,()=>m(q(t).id)),J(`click`,N,()=>h(q(t))),X(e,r)}),L(ne),L(te),L(P);var re=U(P,2),ie=H(re),ae=H(ie);L(ie);var oe=U(ie),se=U(oe);L(re),L(_),W(()=>{Z(x,`${q(u).length??``} von ${q(n).length??``} Konten`),Z(ae,`Seite ${q(c)??``} von ${q(d)??``} · maximal 50 Zeilen`),oe.disabled=q(c)<=1,se.disabled=q(c)>=q(d)}),J(`click`,S,p),xi(w,()=>q(r),e=>V(r,e)),ci(T,()=>q(i),e=>V(i,e)),ci(D,()=>q(a),e=>V(a,e)),J(`click`,oe,()=>Zt(c,-1)),J(`click`,se,()=>Zt(c)),X(e,_),ze()}Cr([`click`]);function Co(e){So(e,{})}var wo=Y(`<option> </option>`),To=Y(`<p class="error svelte-9l45r5"> </p>`),Eo=Y(`<tr class="svelte-9l45r5"><td class="svelte-9l45r5"> </td><td class="svelte-9l45r5"> </td><td class="svelte-9l45r5"><b> </b></td><td class="svelte-9l45r5"><code class="svelte-9l45r5"> </code></td><td class="svelte-9l45r5"> </td><td class="svelte-9l45r5"> </td><td class="svelte-9l45r5"> </td><td class="svelte-9l45r5"> </td><td class="svelte-9l45r5"><span> </span></td><td class="svelte-9l45r5"><button class="svelte-9l45r5"> </button></td></tr>`),Do=Y(`<div class="page svelte-9l45r5"><header class="svelte-9l45r5"><div><small class="svelte-9l45r5">MODEL REGISTER</small><h2 class="svelte-9l45r5">Modelle</h2><p class="svelte-9l45r5"> </p></div> <button class="svelte-9l45r5"> </button></header> <section class="filters svelte-9l45r5"><input placeholder="Modell oder ID suchen …" class="svelte-9l45r5"/> <select class="svelte-9l45r5"><option>Alle Provider</option><!></select></section> <!> <div class="grid svelte-9l45r5"><table class="svelte-9l45r5"><thead><tr><th class="svelte-9l45r5">#</th><th class="svelte-9l45r5">Provider</th><th class="svelte-9l45r5">Modell</th><th class="svelte-9l45r5">Modell-ID</th><th class="svelte-9l45r5">Text</th><th class="svelte-9l45r5">Vision</th><th class="svelte-9l45r5">Voice</th><th class="svelte-9l45r5">Plugins</th><th class="svelte-9l45r5">Status</th><th class="svelte-9l45r5">Aktion</th></tr></thead><tbody class="svelte-9l45r5"></tbody></table></div> <div class="pager"><span> </span><button class="svelte-9l45r5">‹</button><button class="svelte-9l45r5">›</button></div></div>`);function Oo(e,t){Re(t,!0);let n=B(en([])),r=B(``),i=B(`all`),a=B(!1),o=B(``),s=B(``),c=B(1),l=R(()=>[...new Set(q(n).map(e=>e.provider))].sort()),u=R(()=>q(n).filter(e=>{let t=q(r).trim().toLowerCase();return(!t||[e.name,e.id,e.provider].some(e=>e.toLowerCase().includes(t)))&&(q(i)===`all`||e.provider===q(i))})),d=R(()=>Math.max(1,Math.ceil(q(u).length/50))),f=R(()=>q(u).slice((q(c)-1)*50,q(c)*50));Dn(()=>{p()}),Dn(()=>{q(r),q(i),V(c,1)}),Dn(()=>{q(c)>q(d)&&V(c,q(d),!0)});async function p(){try{V(n,await Pi(),!0),V(o,``)}catch(e){V(o,e instanceof Error?e.message:String(e),!0)}}async function m(){V(a,!0);try{V(n,(await Fi()).models,!0),V(o,``)}catch(e){V(o,e instanceof Error?e.message:String(e),!0)}finally{V(a,!1)}}async function h(e){await navigator.clipboard.writeText(e),V(s,e,!0),window.setTimeout(()=>V(s,``),1200)}var g=Do(),_=H(g),v=H(_),y=U(H(v),2),b=H(y);L(y),L(v);var x=U(v,2),S=H(x,!0);L(x),L(_);var C=U(_,2),w=H(C);mi(w);var T=U(w,2),E=H(T);E.value=E.__value=`all`,Wr(U(E),17,()=>q(l),Br,(e,t)=>{var n=wo(),r=H(n,!0);L(n);var i={};W(()=>{Z(r,q(t)),i!==(i=q(t))&&(n.value=(n.__value=q(t))??``)}),X(e,n)}),L(T),L(C);var D=U(C,2),O=e=>{var t=To(),n=H(t,!0);L(t),W(()=>Z(n,q(o))),X(e,t)};Q(D,e=>{q(o)&&e(O)});var k=U(D,2),A=H(k),j=U(H(A));Wr(j,23,()=>q(f),e=>e.id,(e,t,n)=>{var r=Eo(),i=H(r),a=H(i,!0);L(i);var o=U(i),l=H(o,!0);L(o);var u=U(o),d=H(u),f=H(d,!0);L(d),L(u);var p=U(u),m=H(p),g=H(m,!0);L(m),L(p);var _=U(p),v=H(_,!0);L(_);var y=U(_),b=H(y,!0);L(y);var x=U(y),S=H(x,!0);L(x);var C=U(x),w=H(C,!0);L(C);var T=U(C),E=H(T);let D;var O=H(E,!0);L(E),L(T);var k=U(T),A=H(k),j=H(A,!0);L(A),L(k),L(r),W(()=>{Z(a,(q(c)-1)*50+q(n)+1),_i(o,`title`,q(t).provider),Z(l,q(t).provider),_i(u,`title`,q(t).name),Z(f,q(t).name),_i(p,`title`,q(t).id),Z(g,q(t).id),Z(v,q(t).capabilities.text?`Ja`:`–`),Z(b,q(t).capabilities.vision?`Ja`:`–`),Z(S,q(t).capabilities.voice?`Ja`:`–`),Z(w,q(t).capabilities.plugins?`Ja`:`–`),D=$(E,1,`svelte-9l45r5`,null,D,{active:q(t).enabled}),Z(O,q(t).enabled?`Aktiv`:`Inaktiv`),Z(j,q(s)===q(t).id?`Kopiert`:`ID kopieren`)}),J(`click`,A,()=>h(q(t).id)),X(e,r)}),L(j),L(A),L(k);var M=U(k,2),N=H(M),ee=H(N);L(N);var P=U(N),te=U(P);L(M),L(g),W(()=>{Z(b,`${q(u).length??``} von ${q(n).length??``} Modellen`),x.disabled=q(a),Z(S,q(a)?`Aktualisiere …`:`Cache aktualisieren`),Z(ee,`Seite ${q(c)??``} von ${q(d)??``} · maximal 50 Zeilen`),P.disabled=q(c)<=1,te.disabled=q(c)>=q(d)}),J(`click`,x,m),xi(w,()=>q(r),e=>V(r,e)),ci(T,()=>q(i),e=>V(i,e)),J(`click`,P,()=>Zt(c,-1)),J(`click`,te,()=>Zt(c)),X(e,g),ze()}Cr([`click`]);function ko(e){Oo(e,{})}function Ao(e,t,n=100){t(`connecting`);let r=new EventSource(`/api/logs/stream?tail=${encodeURIComponent(n)}`);return r.onopen=()=>t(`open`),r.onerror=()=>t(`error`),r.addEventListener(`log`,t=>{try{e(JSON.parse(t.data))}catch{}}),()=>r.close()}var jo=Y(`<tr><td class="svelte-13lrjwo"> </td><td class="svelte-13lrjwo"> </td><td class="svelte-13lrjwo"><b> </b></td><td class="svelte-13lrjwo"> </td><td class="svelte-13lrjwo"> </td><td class="svelte-13lrjwo"><code class="svelte-13lrjwo"> </code></td></tr>`),Mo=Y(`<section class="detail svelte-13lrjwo"><header class="svelte-13lrjwo"><b> </b><button class="svelte-13lrjwo">Schließen</button></header> <p class="svelte-13lrjwo"> </p> <pre class="svelte-13lrjwo"> </pre></section>`),No=Y(`<div class="page svelte-13lrjwo"><header class="svelte-13lrjwo"><div class="svelte-13lrjwo"><small class="svelte-13lrjwo">EVENT REGISTER</small><h2 class="svelte-13lrjwo">Live-Logs</h2><p class="svelte-13lrjwo"> </p></div> <div class="svelte-13lrjwo"><button class="svelte-13lrjwo"> </button><button class="svelte-13lrjwo">Leeren</button></div></header> <section class="filters svelte-13lrjwo"><input placeholder="Logs durchsuchen …" class="svelte-13lrjwo"/> <select class="svelte-13lrjwo"><option>Trace+</option><option>Debug+</option><option>Info+</option><option>Warn+</option><option>Error+</option><option>Fatal</option></select></section> <div class="grid svelte-13lrjwo"><table class="svelte-13lrjwo"><thead><tr><th class="svelte-13lrjwo">#</th><th class="svelte-13lrjwo">Zeit</th><th class="svelte-13lrjwo">Level</th><th class="svelte-13lrjwo">Quelle</th><th class="svelte-13lrjwo">Nachricht</th><th class="svelte-13lrjwo">Kontext</th></tr></thead><tbody class="svelte-13lrjwo"></tbody></table></div> <div class="pager"><span> </span></div> <!></div>`);function Po(e,t){Re(t,!0);let n={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},r=B(en([])),i=B(en([])),a=B(!1),o=B(``),s=B(`trace`),c=B(`connecting`),l=B(``),u=R(()=>q(r).filter(e=>n[e.level]>=n[q(s)]&&(!q(o)||[e.level,e.name??``,e.message,e.context?JSON.stringify(e.context):``].some(e=>e.toLowerCase().includes(q(o).toLowerCase()))))),d=R(()=>q(u).slice(-100).reverse()),f=R(()=>q(r).find(e=>e.id===q(l)));Rr(()=>Ao(e=>{q(a)?V(i,[...q(i).slice(-499),e],!0):V(r,[...q(r).slice(-499),e],!0)},e=>V(c,e,!0),150));function p(){V(a,!q(a)),!q(a)&&q(i).length&&(V(r,[...q(r),...q(i)].slice(-500),!0),V(i,[],!0))}function m(){V(r,[],!0),V(i,[],!0),V(l,``)}let h=e=>new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,fractionalSecondDigits:3}).format(new Date(e));var g=No(),_=H(g),v=H(_),y=U(H(v),2),b=H(y);L(y),L(v);var x=U(v,2),S=H(x),C=H(S,!0);L(S);var w=U(S);L(x),L(_);var T=U(_,2),E=H(T);mi(E);var D=U(E,2),O=H(D);O.value=O.__value=`trace`;var k=U(O);k.value=k.__value=`debug`;var A=U(k);A.value=A.__value=`info`;var j=U(A);j.value=j.__value=`warn`;var M=U(j);M.value=M.__value=`error`;var N=U(M);N.value=N.__value=`fatal`,L(D),L(T);var ee=U(T,2),P=H(ee),te=U(H(P));Wr(te,23,()=>q(d),e=>e.id,(e,t,n)=>{let r=R(()=>q(t).context?JSON.stringify(q(t).context):`–`);var i=jo();let a;var o=H(i),s=H(o,!0);L(o);var c=U(o),u=H(c,!0);L(c);var d=U(c),f=H(d),p=H(f,!0);L(f),L(d);var m=U(d),g=H(m,!0);L(m);var _=U(m),v=H(_,!0);L(_);var y=U(_),b=H(y),x=H(b,!0);L(b),L(y),L(i),W(e=>{a=$(i,1,`level-${q(t).level}`,`svelte-13lrjwo`,a,{selected:q(l)===q(t).id}),Z(s,q(n)+1),Z(u,e),Z(p,q(t).level),_i(m,`title`,q(t).name??`nova`),Z(g,q(t).name??`nova`),_i(_,`title`,q(t).message||`(ohne Nachricht)`),Z(v,q(t).message||`(ohne Nachricht)`),_i(y,`title`,q(r)),Z(x,q(r))},[()=>h(q(t).time)]),J(`click`,i,()=>V(l,q(t).id,!0)),X(e,i)}),L(te),L(P),L(ee);var ne=U(ee,2),re=H(ne),ie=H(re);L(re),L(ne);var ae=U(ne,2),oe=e=>{var t=Mo(),n=H(t),r=H(n),i=H(r);L(r);var a=U(r);L(n);var o=U(n,2),s=H(o,!0);L(o);var c=U(o,2),u=H(c,!0);L(c),L(t),W((e,t)=>{Z(i,`${e??``} · ${q(f).name??`nova`??``}`),Z(s,q(f).message||`(ohne Nachricht)`),Z(u,t)},[()=>q(f).level.toUpperCase(),()=>q(f).context?JSON.stringify(q(f).context,null,2):`Kein Kontext`]),J(`click`,a,()=>V(l,``)),X(e,t)};Q(ae,e=>{q(f)&&e(oe)}),L(g),W(e=>{Z(b,`${q(d).length??``} von ${q(u).length??``} sichtbar · Verbindung ${q(c)??``}`),Z(C,q(a)?`Fortsetzen (${q(i).length})`:`Pausieren`),Z(ie,`Neueste ${e??``} Einträge · Zeile anklicken für Details`)},[()=>Math.min(100,q(u).length)]),J(`click`,S,p),J(`click`,w,m),xi(E,()=>q(o),e=>V(o,e)),ci(D,()=>q(s),e=>V(s,e)),X(e,g),ze()}Cr([`click`]);function Fo(e){Po(e,{})}var Io=Y(`<div class="skeleton svelte-1ozf5k3"></div>`),Lo=Y(`<div class="settings-grid svelte-1ozf5k3"></div>`),Ro=Y(`<div class="state-card svelte-1ozf5k3"><strong class="svelte-1ozf5k3">Konfiguration nicht erreichbar</strong><span> </span><button class="btn">Erneut versuchen</button></div>`),zo=Y(`<div class="svelte-1ozf5k3"><span class="svelte-1ozf5k3"> </span><code class="svelte-1ozf5k3"> </code></div>`),Bo=Y(`<div class="proxy-list svelte-1ozf5k3"></div>`),Vo=Y(`<p class="muted">Direkte Verbindungen ohne Proxy.</p>`),Ho=Y(`<div class="settings-grid svelte-1ozf5k3"><section class="setting-card featured svelte-1ozf5k3"><div class="card-icon svelte-1ozf5k3">↗</div> <div class="card-head svelte-1ozf5k3"><div><span class="svelte-1ozf5k3">Gateway</span><h3 class="svelte-1ozf5k3"> </h3></div><span class="status svelte-1ozf5k3">Lokal</span></div> <dl class="svelte-1ozf5k3"><div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Host</dt><dd class="svelte-1ozf5k3"><code> </code></dd></div> <div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Port</dt><dd class="svelte-1ozf5k3"> </dd></div> <div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Log-Level</dt><dd class="svelte-1ozf5k3"> </dd></div> <div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">CORS</dt><dd class="svelte-1ozf5k3"> </dd></div></dl></section> <section class="setting-card svelte-1ozf5k3"><div class="card-icon svelte-1ozf5k3">⇄</div> <div class="card-head svelte-1ozf5k3"><div><span class="svelte-1ozf5k3">Account-Auswahl</span><h3 class="svelte-1ozf5k3">Routing</h3></div></div> <dl class="svelte-1ozf5k3"><div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Strategie</dt><dd class="svelte-1ozf5k3"> </dd></div> <div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Standard-Priorität</dt><dd class="svelte-1ozf5k3"> </dd></div> <div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Modellcache</dt><dd class="svelte-1ozf5k3"> </dd></div></dl></section> <section class="setting-card svelte-1ozf5k3"><div class="card-icon svelte-1ozf5k3">▣</div> <div class="card-head svelte-1ozf5k3"><div><span class="svelte-1ozf5k3">Web-Konsole</span><h3 class="svelte-1ozf5k3"> </h3></div><span> </span></div> <dl class="svelte-1ozf5k3"><div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Status</dt><dd class="svelte-1ozf5k3"> </dd></div> <div class="svelte-1ozf5k3"><dt class="svelte-1ozf5k3">Port</dt><dd class="svelte-1ozf5k3"> </dd></div></dl></section> <section class="setting-card svelte-1ozf5k3"><div class="card-icon svelte-1ozf5k3">◎</div> <div class="card-head svelte-1ozf5k3"><div><span class="svelte-1ozf5k3">Proxy</span><h3 class="svelte-1ozf5k3"> </h3></div></div> <!></section></div> <section class="config-file svelte-1ozf5k3"><div><span class="eyebrow svelte-1ozf5k3">Konfigurationsdatei</span> <h3 class="svelte-1ozf5k3">Änderungen lokal vornehmen</h3> <p class="svelte-1ozf5k3">Neue Installationen verwenden Nova. Ein vorhandener Zero-Token-Datenordner wird automatisch weiterverwendet.</p></div> <button class="svelte-1ozf5k3"><code class="svelte-1ozf5k3">~/.config/nova/config.json</code><span class="svelte-1ozf5k3"> </span></button></section> <div class="security-note svelte-1ozf5k3"><strong class="svelte-1ozf5k3">Sensible Werte geschützt</strong><span>Proxy-Passwörter, Cookies und Tokens werden von der Admin-API redigiert oder vollständig ausgelassen.</span></div>`,1),Uo=Y(`<div class="page svelte-1ozf5k3"><section class="header svelte-1ozf5k3"><div><span class="eyebrow svelte-1ozf5k3">Lokale Konfiguration</span> <h2 class="svelte-1ozf5k3">Einstellungen</h2> <p class="svelte-1ozf5k3">Eine sichere, schreibgeschützte Übersicht der aktuell geladenen Gateway-Konfiguration.</p></div> <button class="btn"> </button></section> <!></div>`);function Wo(e,t){Re(t,!0);let n=B(null),r=B(!0),i=B(null),a=B(!1);Dn(()=>{o()});async function o(){V(r,!0),V(i,null);try{V(n,await Ii(),!0)}catch(e){V(i,e instanceof Error?e.message:`Fehler beim Laden`,!0)}finally{V(r,!1)}}async function s(){await navigator.clipboard.writeText(`~/.config/nova/config.json`),V(a,!0),window.setTimeout(()=>V(a,!1),1500)}var c=Uo(),l=H(c),u=U(H(l),2),d=H(u,!0);L(u),L(l);var f=U(l,2),p=e=>{var t=Lo();Wr(t,20,()=>[,,,,],Br,(e,t)=>{X(e,Io())}),L(t),X(e,t)},m=e=>{var t=Ro(),n=U(H(t)),r=H(n,!0);L(n);var a=U(n);L(t),W(()=>Z(r,q(i))),J(`click`,a,o),X(e,t)},h=e=>{var t=Ho(),r=fn(t),i=H(r),o=U(H(i),2),c=H(o),l=U(H(c)),u=H(l);L(l),L(c),De(),L(o);var d=U(o,2),f=H(d),p=U(H(f)),m=H(p),h=H(m,!0);L(m),L(p),L(f);var g=U(f,2),v=U(H(g)),y=H(v,!0);L(v),L(g);var b=U(g,2),x=U(H(b)),S=H(x,!0);L(x),L(b);var C=U(b,2),w=U(H(C)),T=H(w,!0);L(w),L(C),L(d),L(i);var E=U(i,2),D=U(H(E),4),O=H(D),k=U(H(O)),A=H(k,!0);L(k),L(O);var j=U(O,2),M=U(H(j)),N=H(M,!0);L(M),L(j);var ee=U(j,2),P=U(H(ee)),te=H(P);L(P),L(ee),L(D),L(E);var ne=U(E,2),re=U(H(ne),2),ie=H(re),ae=U(H(ie)),oe=H(ae,!0);L(ae),L(ie);var se=U(ie);let ce;var le=H(se,!0);L(se),L(re);var ue=U(re,2),de=H(ue),fe=U(H(de)),pe=H(fe,!0);L(fe),L(de);var me=U(de,2),he=U(H(me)),ge=H(he,!0);L(he),L(me),L(ue),L(ne);var _e=U(ne,2),ve=U(H(_e),2),ye=H(ve),be=U(H(ye)),xe=H(be,!0);L(be),L(ye),L(ve);var Se=U(ve,2),Ce=e=>{var t=Bo();Wr(t,21,()=>Object.entries(q(n).proxy),Br,(e,t)=>{var n=R(()=>_(q(t),2));let r=()=>q(n)[0],i=()=>q(n)[1];var a=Ar(),o=fn(a),s=e=>{var t=zo(),n=H(t),a=H(n,!0);L(n);var o=U(n),s=H(o);L(o),L(t),W(()=>{Z(a,r()),Z(s,`${i().protocol??``}://${i().host??``}:${i().port??``}`)}),X(e,t)};Q(o,e=>{i()&&e(s)}),X(e,a)}),L(t),X(e,t)},F=R(()=>q(n).proxy&&Object.values(q(n).proxy).some(Boolean)),we=e=>{X(e,Vo())};Q(Se,e=>{q(F)?e(Ce):e(we,-1)}),L(_e),L(r);var I=U(r,2),Te=U(H(I),2),Ee=U(H(Te)),Oe=H(Ee,!0);L(Ee),L(Te),L(I),De(2),W(e=>{Z(u,`${q(n).gateway.host??``}:${q(n).gateway.port??``}`),Z(h,q(n).gateway.host),Z(y,q(n).gateway.port),Z(S,q(n).gateway.logLevel),Z(T,q(n).gateway.cors?`Aktiviert`:`Deaktiviert`),Z(A,q(n).selectionStrategy),Z(N,q(n).defaultPriority),Z(te,`${q(n).modelsCacheTTL??``}s TTL`),Z(oe,q(n).ui.enabled?`Aktiviert`:`Deaktiviert`),ce=$(se,1,`status svelte-1ozf5k3`,null,ce,{enabled:q(n).ui.enabled}),Z(le,q(n).ui.enabled?`Online`:`Aus`),Z(pe,q(n).ui.enabled?`Aktiviert`:`Deaktiviert`),Z(ge,q(n).ui.enabled?q(n).ui.port:`–`),Z(xe,e),Z(Oe,q(a)?`Kopiert`:`Pfad kopieren`)},[()=>q(n).proxy&&Object.values(q(n).proxy).some(Boolean)?`Konfiguriert`:`Nicht gesetzt`]),J(`click`,Te,s),X(e,t)};Q(f,e=>{q(r)?e(p):q(i)?e(m,1):q(n)&&e(h,2)}),L(c),W(()=>{u.disabled=q(r),Z(d,q(r)?`Lädt …`:`Neu laden`)}),J(`click`,u,o),X(e,c),ze()}Cr([`click`]);var Go=Y(`<button><span class="nav-icon svelte-1n46o8q"> </span> <span class="nav-copy svelte-1n46o8q"><strong class="svelte-1n46o8q"> </strong> <small class="svelte-1n46o8q"> </small></span> <span class="nav-marker svelte-1n46o8q" aria-hidden="true"></span></button>`),Ko=Y(`<button class="backdrop svelte-1n46o8q" aria-label="Navigation schließen"></button>`),qo=Y(`<div class="app-shell svelte-1n46o8q"><aside><div class="brand svelte-1n46o8q"><div class="logo svelte-1n46o8q" aria-hidden="true">N</div> <div class="brand-copy svelte-1n46o8q"><strong class="svelte-1n46o8q"> </strong> <span class="svelte-1n46o8q"> </span></div> <button class="close-nav svelte-1n46o8q" aria-label="Navigation schließen">×</button></div> <nav aria-label="Hauptnavigation" class="svelte-1n46o8q"></nav> <div class="sidebar-bottom svelte-1n46o8q"><div class="gateway-state svelte-1n46o8q"><span></span> <div><strong class="svelte-1n46o8q"> </strong> <span class="svelte-1n46o8q">bkg.eysho.info · öffentliche API</span></div></div> <p class="svelte-1n46o8q">SELF-HOSTED CONTROL PLANE</p></div></aside> <!> <main class="svelte-1n46o8q"><header class="topbar svelte-1n46o8q"><button class="menu-button svelte-1n46o8q" aria-label="Navigation öffnen">☰</button> <div class="title-block svelte-1n46o8q"><span class="breadcrumb svelte-1n46o8q"> </span> <h1 class="svelte-1n46o8q"> </h1></div> <div class="topbar-status svelte-1n46o8q"><span class="environment svelte-1n46o8q">PRODUCTION CONTROL</span> <button class="health-pill svelte-1n46o8q" title="Gateway-Status neu prüfen"><span></span> </button></div></header> <section><!></section></main></div>`);function Jo(e,t){Re(t,!0);let n=`nova.active-page`,r=[{key:`playground`,label:`Playground`,icon:`▶`,description:`Modelle direkt testen`},{key:`dashboard`,label:`Übersicht`,icon:`◫`,description:`Status und Schnellzugriff`},{key:`providers`,label:`Provider`,icon:`✦`,description:`Anbieter verbinden`},{key:`discovery`,label:`Discovery`,icon:`⌕`,description:`Neue Provider finden`},{key:`agent`,label:`yoyo Agent`,icon:`⌁`,description:`Coding-Agent starten`},{key:`genericagent`,label:`GenericAgent`,icon:`GA`,description:`Externes Agent-Backend`},{key:`accounts`,label:`Accounts`,icon:`◎`,description:`Sessions verwalten`},{key:`models`,label:`Modelle`,icon:`◇`,description:`Modelle durchsuchen`},{key:`logs`,label:`Live-Logs`,icon:`≋`,description:`Ereignisse beobachten`},{key:`settings`,label:`Einstellungen`,icon:`⚙`,description:`Gateway und Konfiguration`}],i=B(`playground`),a=B(!1),o=B(null),s=R(()=>r.find(e=>e.key===q(i))??r[0]);function c(e){return r.some(t=>t.key===e)}function l(e){V(i,e,!0),V(a,!1),window.localStorage.setItem(n,e),history.replaceState(null,``,`#${e}`)}function u(){let e=location.hash.slice(1);c(e)&&(V(i,e,!0),window.localStorage.setItem(n,e))}async function d(){try{V(o,(await fetch(`/health`,{cache:`no-store`})).ok,!0)}catch{V(o,!1)}}Rr(()=>{let e=location.hash.slice(1),t=window.localStorage.getItem(n)??``;c(e)?V(i,e,!0):c(t)&&V(i,t,!0),history.replaceState(null,``,`#${q(i)}`),d();let r=window.setInterval(d,15e3);return window.addEventListener(`hashchange`,u),()=>{window.clearInterval(r),window.removeEventListener(`hashchange`,u)}});var f=qo(),p=H(f);let m;var h=H(p),g=U(H(h),2),_=H(g),v=H(_,!0);L(_);var y=U(_,2),b=H(y);L(y),L(g);var x=U(g,2);L(h);var S=U(h,2);Wr(S,21,()=>r,Br,(e,t)=>{var n=Go();let r;var a=H(n),o=H(a,!0);L(a);var s=U(a,2),c=H(s),u=H(c,!0);L(c);var d=U(c,2),f=H(d,!0);L(d),L(s),De(2),L(n),W(()=>{_i(n,`aria-current`,q(i)===q(t).key?`page`:void 0),r=$(n,1,`svelte-1n46o8q`,null,r,{active:q(i)===q(t).key}),Z(o,q(t).icon),Z(u,q(t).label),Z(f,q(t).description)}),J(`click`,n,()=>l(q(t).key)),X(e,n)}),L(S);var C=U(S,2),w=H(C),T=H(w);let E;var D=U(T,2),O=H(D),k=H(O,!0);L(O),De(2),L(D),L(w),De(2),L(C),L(p);var A=U(p,2),j=e=>{var t=Ko();J(`click`,t,()=>V(a,!1)),X(e,t)};Q(A,e=>{q(a)&&e(j)});var M=U(A,2),N=H(M),ee=H(N),P=U(ee,2),te=H(P),ne=H(te);L(te);var re=U(te,2),ie=H(re,!0);L(re),L(P);var ae=U(P,2),oe=U(H(ae),2),se=H(oe);let ce;var le=U(se);L(oe),L(ae),L(N);var ue=U(N,2);let de;var fe=H(ue),pe=e=>{oa(e,{})},me=e=>{Gi(e,{})},he=e=>{va(e,{})},ge=e=>{so(e,{})},_e=e=>{mo(e,{})},ve=e=>{_o(e,{})},ye=e=>{Co(e,{})},be=e=>{ko(e,{})},xe=e=>{Fo(e,{})},Se=e=>{Wo(e,{})};Q(fe,e=>{q(i)===`playground`?e(pe):q(i)===`dashboard`?e(me,1):q(i)===`providers`?e(he,2):q(i)===`discovery`?e(ge,3):q(i)===`agent`?e(_e,4):q(i)===`genericagent`?e(ve,5):q(i)===`accounts`?e(ye,6):q(i)===`models`?e(be,7):q(i)===`logs`?e(xe,8):q(i)===`settings`&&e(Se,9)}),L(ue),L(M),L(f),W(()=>{m=$(p,1,`sidebar svelte-1n46o8q`,null,m,{open:q(a)}),Z(v,co),Z(b,`Enterprise Multi-Provider AI Control Plane · v0.3.0`),E=$(T,1,`state-dot svelte-1n46o8q`,null,E,{online:q(o)===!0,offline:q(o)===!1}),Z(k,q(o)===null?`Gateway wird geprüft`:q(o)?`Gateway online`:`Gateway offline`),Z(ne,`FF-ZTN / ${q(s).label??``}`),Z(ie,q(s).label),ce=$(se,1,`state-dot svelte-1n46o8q`,null,ce,{online:q(o)===!0,offline:q(o)===!1}),Z(le,` ${q(o)===null?`Prüfen`:q(o)?`Online`:`Offline`}`),de=$(ue,1,`content svelte-1n46o8q`,null,de,{playground:q(i)===`playground`})}),J(`click`,x,()=>V(a,!1)),J(`click`,ee,()=>V(a,!0)),J(`click`,oe,d),X(e,f),ze()}Cr([`click`]);var Yo=Y(`<button class="resize svelte-1j3lig5" aria-label="Terminalhöhe ändern"><span class="svelte-1j3lig5"></span></button>`),Xo=Y(`<span class="svelte-1j3lig5"> </span>`),Zo=Y(`<pre> </pre>`),Qo=Y(`<div class="output svelte-1j3lig5" aria-live="polite"></div> <label class="prompt svelte-1j3lig5"><span class="svelte-1j3lig5">ztn@control:~$</span><input autocomplete="off" spellcheck="false" aria-label="ztn CLI-Befehl" class="svelte-1j3lig5"/></label>`,1),$o=Y(`<div><time class="svelte-1j3lig5"> </time><b class="svelte-1j3lig5"> </b><span class="svelte-1j3lig5"> </span><p class="svelte-1j3lig5"> </p></div>`),es=Y(`<p class="empty svelte-1j3lig5">Noch keine Log-Ereignisse.</p>`),ts=Y(`<div class="output logs svelte-1j3lig5" aria-live="polite"></div>`),ns=Y(`<div class="job svelte-1j3lig5"><strong> </strong><span> </span><span> </span><span> </span></div>`),rs=Y(`<p class="empty svelte-1j3lig5">Keine Login-Jobs.</p>`),is=Y(`<div class="output jobs svelte-1j3lig5"><div class="job head svelte-1j3lig5"><span>PROVIDER</span><span>STATUS</span><span>ACCOUNT</span><span>MELDUNG</span></div> <!></div>`),as=Y(`<div class="body svelte-1j3lig5"><!></div>`),os=Y(`<section aria-label="FF-ZTN Terminal"><!> <header class="svelte-1j3lig5"><button class="toggle svelte-1j3lig5"><b class="svelte-1j3lig5">›_</b><strong class="svelte-1j3lig5">FF-ZTN TERMINAL</strong><span class="svelte-1j3lig5"> </span></button> <nav aria-label="Terminalbereiche" class="svelte-1j3lig5"><button>CLI</button> <button>LOGS <i class="svelte-1j3lig5"> </i></button> <button>JOBS <i class="svelte-1j3lig5"> </i></button></nav> <div class="health svelte-1j3lig5"><!><em class="svelte-1j3lig5"></em>LIVE</div></header> <!></section>`);function ss(e,t){Re(t,!0);let n=`ff-ztn.terminal`,r=B(!1),i=B(`cli`),a=B(300),o=B(``),s=B(en([])),c=B(-1),l=B(en([])),u=B(en([])),d=B(en([{id:1,kind:`system`,text:`FF-ZTN Control Terminal bereit. 'help' zeigt verfügbare Befehle.`}])),f=2,p=null,m=null,h,g=R(()=>q(u).filter(e=>[`starting`,`waiting-for-user`,`saving`].includes(e.status)).length),_=R(()=>q(l).filter(e=>e.level===`error`||e.level===`fatal`).length);Rr(()=>(v(),w(),T(),h=window.setInterval(T,3e3),()=>{m?.close(),h!==void 0&&window.clearInterval(h)}));function v(){try{let e=JSON.parse(localStorage.getItem(n)??`{}`);V(r,e.open===!0),V(i,e.tab===`logs`||e.tab===`jobs`?e.tab:`cli`,!0),V(a,b(Number(e.height)||300),!0)}catch{localStorage.removeItem(n)}}function y(){localStorage.setItem(n,JSON.stringify({open:q(r),tab:q(i),height:q(a)}))}function b(e){return Math.max(180,Math.min(560,window.innerHeight-140,Math.round(e)))}function x(){V(r,!q(r)),y(),q(r)&&E()}function S(e){V(i,e,!0),V(r,!0),y(),E()}function C(e){e.preventDefault();let t=e.clientY,n=q(a),r=e=>{V(a,b(n+t-e.clientY),!0)};window.addEventListener(`pointermove`,r),window.addEventListener(`pointerup`,()=>{window.removeEventListener(`pointermove`,r),y()},{once:!0})}function w(){m?.close(),m=new EventSource(`/api/logs/stream?tail=120`),m.addEventListener(`log`,e=>{try{let t=JSON.parse(e.data);q(l).some(e=>e.id===t.id)||V(l,[...q(l).slice(-249),t],!0),q(r)&&q(i)===`logs`&&E()}catch{}})}async function T(){try{let e=await fetch(`/api/discovery/logins`,{cache:`no-store`});if(!e.ok)return;V(u,(await e.json()).jobs??[],!0)}catch{}}async function E(){await gr(),p&&(p.scrollTop=p.scrollHeight)}function D(e,t){V(d,[...q(d).slice(-149),{id:f++,kind:e,text:t}],!0),E()}async function O(e,t){let n=await fetch(e,{cache:`no-store`,...t}),r=await n.json().catch(()=>({error:`HTTP ${n.status}`}));if(!n.ok){let e=typeof r==`object`&&r&&`error`in r?String(r.error):`HTTP ${n.status}`;throw Error(e)}return r}async function k(e){let t=e.trim();if(!t)return;D(`command`,`ztn> ${t}`),V(s,[...q(s).filter(e=>e!==t),t].slice(-50),!0),V(c,-1),V(o,``);let[n,...r]=t.split(/\s+/);try{switch(n.toLowerCase()){case`help`:D(`output`,[`help Befehle anzeigen`,`status Gateway-Status`,`providers Provider-Runtime`,`models Modellkatalog`,`accounts gespeicherte Accounts`,`jobs Login-Jobs`,`logs letzte Logs`,`logs clear Logs leeren`,`refresh Daten neu laden`,`clear Terminal leeren`].join(`
14
+ `));break;case`status`:D(`output`,JSON.stringify(await O(`/api/status`),null,2));break;case`providers`:D(`output`,JSON.stringify(await O(`/api/provider-runtime`),null,2));break;case`models`:D(`output`,JSON.stringify(await O(`/api/models`),null,2));break;case`accounts`:D(`output`,JSON.stringify(await O(`/api/accounts`),null,2));break;case`jobs`:await T(),D(`output`,JSON.stringify(q(u),null,2));break;case`logs`:r.join(` `).toLowerCase()===`clear`?(await O(`/api/logs`,{method:`DELETE`}),V(l,[],!0),D(`system`,`Live-Logs wurden geleert.`)):D(`output`,JSON.stringify(await O(`/api/logs?limit=50`),null,2));break;case`refresh`:w(),await T(),D(`system`,`FF-ZTN-Daten wurden synchronisiert.`);break;case`clear`:V(d,[],!0);break;default:D(`error`,`Unbekannter Befehl: ${n}. Nutze 'help'.`)}}catch(e){D(`error`,e instanceof Error?e.message:String(e))}}function A(e){e.key===`Enter`?(e.preventDefault(),k(q(o))):e.key===`ArrowUp`&&q(s).length>0?(e.preventDefault(),V(c,Math.min(q(s).length-1,q(c)+1),!0),V(o,q(s)[q(s).length-1-q(c)]??q(o),!0)):e.key===`ArrowDown`&&q(c)>=0&&(e.preventDefault(),V(c,q(c)-1),V(o,q(c)<0?``:q(s)[q(s).length-1-q(c)]??``,!0))}var j=os();let M;var N=H(j),ee=e=>{var t=Yo();J(`pointerdown`,t,C),X(e,t)};Q(N,e=>{q(r)&&e(ee)});var P=U(N,2),te=H(P),ne=U(H(te),2),re=H(ne,!0);L(ne),L(te);var ie=U(te,2),ae=H(ie);let oe;var se=U(ae,2);let ce;var le=U(H(se)),ue=H(le,!0);L(le),L(se);var de=U(se,2);let fe;var pe=U(H(de)),me=H(pe,!0);L(pe),L(de),L(ie);var he=U(ie,2),ge=H(he),_e=e=>{var t=Xo(),n=H(t);L(t),W(()=>Z(n,`${q(_)??``} ERR`)),X(e,t)};Q(ge,e=>{q(_)&&e(_e)}),De(2),L(he),L(P);var ve=U(P,2),ye=e=>{var t=as(),n=H(t),r=e=>{var t=Qo(),n=fn(t);Wr(n,21,()=>q(d),e=>e.id,(e,t)=>{var n=Zo(),r=H(n,!0);L(n),W(()=>{$(n,1,Qr(q(t).kind),`svelte-1j3lig5`),Z(r,q(t).text)}),X(e,n)}),L(n),Ei(n,e=>p=e,()=>p);var r=U(n,2),i=U(H(r));mi(i),L(r),J(`keydown`,i,A),xi(i,()=>q(o),e=>V(o,e)),X(e,t)},a=e=>{var t=ts();Wr(t,21,()=>q(l),e=>e.id,(e,t)=>{var n=$o(),r=H(n),i=H(r,!0);L(r);var a=U(r),o=H(a,!0);L(a);var s=U(a),c=H(s,!0);L(s);var l=U(s),u=H(l,!0);L(l),L(n),W((e,r)=>{$(n,1,`log ${q(t).level}`,`svelte-1j3lig5`),Z(i,e),Z(o,r),Z(c,q(t).name??`ff-ztn`),Z(u,q(t).message)},[()=>new Date(q(t).time).toLocaleTimeString(`de-DE`),()=>q(t).level.toUpperCase()]),X(e,n)},e=>{X(e,es())}),L(t),Ei(t,e=>p=e,()=>p),X(e,t)},s=e=>{var t=is();Wr(U(H(t),2),17,()=>q(u),e=>e.id,(e,t)=>{var n=ns(),r=H(n),i=H(r,!0);L(r);var a=U(r),o=H(a,!0);L(a);var s=U(a),c=H(s,!0);L(s);var l=U(s),u=H(l,!0);L(l),L(n),W(()=>{Z(i,q(t).providerId),$(a,1,Qr(q(t).status),`svelte-1j3lig5`),Z(o,q(t).status),Z(c,q(t).accountLabel??`—`),Z(u,q(t).message??q(t).failureReason??`—`)}),X(e,n)},e=>{X(e,rs())}),L(t),Ei(t,e=>p=e,()=>p),X(e,t)};Q(n,e=>{q(i)===`cli`?e(r):q(i)===`logs`?e(a,1):e(s,-1)}),L(t),X(e,t)};Q(ve,e=>{q(r)&&e(ye)}),L(j),W(()=>{M=$(j,1,`terminal-dock svelte-1j3lig5`,null,M,{open:q(r)}),ai(j,`--dock-height:${q(a)}px`),_i(te,`aria-expanded`,q(r)),Z(re,q(r)?`⌄`:`⌃`),oe=$(ae,1,`svelte-1j3lig5`,null,oe,{active:q(i)===`cli`}),ce=$(se,1,`svelte-1j3lig5`,null,ce,{active:q(i)===`logs`}),Z(ue,q(l).length),fe=$(de,1,`svelte-1j3lig5`,null,fe,{active:q(i)===`jobs`}),Z(me,q(g)||q(u).length)}),J(`click`,te,x),J(`click`,ae,()=>S(`cli`)),J(`click`,se,()=>S(`logs`)),J(`click`,de,()=>S(`jobs`)),X(e,j),ze()}Cr([`pointerdown`,`click`,`keydown`]);function cs(e,t=!1){document.getElementById(`nova-remote-login-toast`)?.remove();let n=document.createElement(`div`);n.id=`nova-remote-login-toast`,n.textContent=e,Object.assign(n.style,{position:`fixed`,right:`18px`,bottom:`18px`,zIndex:`9999`,maxWidth:`420px`,padding:`12px 14px`,borderRadius:`10px`,border:`1px solid ${t?`rgba(255,111,133,.55)`:`rgba(67,217,163,.45)`}`,background:`rgba(9,14,25,.96)`,color:t?`#ff8ca0`:`#dffaf0`,boxShadow:`0 18px 50px rgba(0,0,0,.35)`,font:`13px/1.45 system-ui, sans-serif`}),document.body.appendChild(n),window.setTimeout(()=>n.remove(),6500)}function ls(e,t,n){e.document.open(),e.document.write(`<!doctype html><html lang="de"><meta charset="utf-8"><title>${t}</title><body style="margin:0;display:grid;place-items:center;min-height:100vh;background:#080d18;color:#edf1f8;font:16px system-ui"><main style="max-width:560px;padding:32px"><h1 style="font-size:24px">${t}</h1><p style="color:#91a0b8;line-height:1.6">${n}</p></main></body></html>`),e.document.close()}async function us(e,t){ls(t,`Nova Remote Login`,`Der Remote-Browser auf dem Server wird vorbereitet …`);let n=await fetch(`/api/discovery/logins`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e})}),r=await n.json().catch(()=>({}));if(!n.ok||!r.viewUrl){let e=r.error??`Remote-Login konnte nicht gestartet werden (HTTP ${n.status}).`;ls(t,`Remote-Login nicht verfügbar`,e),cs(e,!0);return}t.opener=null,t.location.replace(r.viewUrl),cs(`Remote-Login wurde in einem neuen Tab geöffnet.`)}function ds(){document.addEventListener(`click`,e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`button.primary-action`);if(!(n instanceof HTMLButtonElement)||n.disabled)return;let r=n.closest(`article.provider-card`)?.querySelector(`.provider-title code`)?.textContent?.trim();if(!r)return;e.preventDefault(),e.stopImmediatePropagation();let i=window.open(`about:blank`,`_blank`);if(!i){cs(`Der neue Login-Tab wurde blockiert. Erlaube Pop-ups für Nova.`,!0);return}us(r,i).catch(e=>{let t=e instanceof Error?e.message:`Remote-Login ist fehlgeschlagen.`;ls(i,`Remote-Login fehlgeschlagen`,t),cs(t,!0)})},!0)}ds(),Nr(Jo,{target:document.getElementById(`app`)});var fs=document.createElement(`style`);fs.textContent=`
15
+ #terminal-dock-root {
16
+ position: fixed;
17
+ left: 248px;
18
+ right: 0;
19
+ bottom: 0;
20
+ z-index: 75;
21
+ pointer-events: none;
22
+ }
23
+ #terminal-dock-root > * { pointer-events: auto; }
24
+ @media (max-width: 900px) {
25
+ #terminal-dock-root { left: 0; }
26
+ }
27
+ `,document.head.appendChild(fs);var ps=document.createElement(`div`);ps.id=`terminal-dock-root`,document.body.appendChild(ps),Nr(ss,{target:ps});
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html lang="de">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>FF-ZTN – ForgeFabrik Zero Token Nova</title>
7
+ <meta name="description" content="ForgeFabrik Zero Token Nova – Enterprise Multi-Provider AI Control Plane." />
8
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Outfit:wght@500;600;700&display=swap" rel="stylesheet" />
11
+ <style>
12
+ body { margin: 0; background: #080d18; }
13
+ </style>
14
+ <script type="module" crossorigin src="/assets/index-DFs1Oo-1.js"></script>
15
+ <link rel="stylesheet" crossorigin href="/assets/index-B_4vEorW.css">
16
+ </head>
17
+ <body>
18
+ <div id="app"></div>
19
+ </body>
20
+ </html>
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
+ <defs>
3
+ <linearGradient id="g" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
4
+ <stop stop-color="#FF3BA7"/>
5
+ <stop offset="0.52" stop-color="#FF944D"/>
6
+ <stop offset="1" stop-color="#69D9FF"/>
7
+ </linearGradient>
8
+ <filter id="glow" x="-40%" y="-40%" width="180%" height="180%">
9
+ <feGaussianBlur stdDeviation="2.4" result="b"/>
10
+ <feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
11
+ </filter>
12
+ </defs>
13
+ <path d="M12 48V16h8.5L43 43V16h9v32h-8.5L21 21v27H12Z" stroke="url(#g)" stroke-width="4.2" stroke-linejoin="round" filter="url(#glow)"/>
14
+ <circle cx="12" cy="16" r="2.7" fill="#FF3BA7"/>
15
+ <circle cx="52" cy="16" r="2.7" fill="#69D9FF"/>
16
+ <circle cx="52" cy="48" r="2.7" fill="#FF944D"/>
17
+ <path d="M7 32h6M51 32h6M32 7v6M32 51v6" stroke="#8EA2BE" stroke-width="1.4" stroke-linecap="round" opacity="0.55"/>
18
+ </svg>
@@ -0,0 +1,36 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 240" fill="none">
2
+ <defs>
3
+ <linearGradient id="line" x1="80" y1="40" x2="880" y2="210" gradientUnits="userSpaceOnUse">
4
+ <stop stop-color="#FF3BA7" stop-opacity=".55"/>
5
+ <stop offset=".48" stop-color="#FF944D" stop-opacity=".28"/>
6
+ <stop offset="1" stop-color="#69D9FF" stop-opacity=".5"/>
7
+ </linearGradient>
8
+ <radialGradient id="node" cx="0" cy="0" r="1" gradientTransform="translate(0 0) rotate(90) scale(8)">
9
+ <stop stop-color="#F7FCFF"/>
10
+ <stop offset=".3" stop-color="#69D9FF"/>
11
+ <stop offset="1" stop-color="#69D9FF" stop-opacity="0"/>
12
+ </radialGradient>
13
+ </defs>
14
+ <g opacity=".56" stroke="url(#line)" stroke-width="1.1">
15
+ <path d="M46 186 162 118 270 156 386 76 514 134 642 58 784 104 914 34"/>
16
+ <path d="M82 42 202 84 330 36 452 94 590 24 714 72 846 40"/>
17
+ <path d="M162 118 202 84M270 156 330 36M386 76 452 94M514 134 590 24M642 58 714 72M784 104 846 40"/>
18
+ <path d="M46 186H914" opacity=".2" stroke-dasharray="3 7"/>
19
+ <path d="M82 42H846" opacity=".15" stroke-dasharray="2 9"/>
20
+ </g>
21
+ <g>
22
+ <circle cx="46" cy="186" r="8" fill="url(#node)"/>
23
+ <circle cx="162" cy="118" r="8" fill="url(#node)"/>
24
+ <circle cx="270" cy="156" r="8" fill="url(#node)"/>
25
+ <circle cx="386" cy="76" r="8" fill="url(#node)"/>
26
+ <circle cx="514" cy="134" r="8" fill="url(#node)"/>
27
+ <circle cx="642" cy="58" r="8" fill="url(#node)"/>
28
+ <circle cx="784" cy="104" r="8" fill="url(#node)"/>
29
+ <circle cx="914" cy="34" r="8" fill="url(#node)"/>
30
+ </g>
31
+ <g fill="#8EA2BE" opacity=".18">
32
+ <rect x="18" y="214" width="220" height="1"/>
33
+ <rect x="370" y="214" width="220" height="1"/>
34
+ <rect x="722" y="214" width="220" height="1"/>
35
+ </g>
36
+ </svg>