jishushell 0.6.18 → 0.7.3

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 (343) hide show
  1. package/apps/anythingllm-container.yaml +1 -0
  2. package/apps/browserless-chromium-container.yaml +1 -0
  3. package/apps/filebrowser-container.yaml +1 -0
  4. package/apps/hermes-container.yaml +1 -7
  5. package/apps/immich-container-lite.yaml +337 -0
  6. package/apps/immich-container.yaml +371 -0
  7. package/apps/jishu-kb-container.yaml +26 -21
  8. package/apps/ollama-binary.yaml +1 -0
  9. package/apps/ollama-cpu-container.yaml +1 -0
  10. package/apps/ollama-with-hollama-binary.yaml +2 -0
  11. package/apps/openclaw-binary.yaml +4 -8
  12. package/apps/openclaw-container.yaml +1 -7
  13. package/apps/openclaw-with-ollama-container.yaml +1 -0
  14. package/apps/openclaw-with-searxng-container.yaml +20 -0
  15. package/apps/searxng-container.yaml +20 -0
  16. package/apps/weknora-container.yaml +5 -0
  17. package/dependencies/jishushell-panel-0.7.3.tgz +0 -0
  18. package/dist/cli/core.js +1 -1
  19. package/dist/cli/core.js.map +1 -1
  20. package/dist/cli/doctor.js +96 -0
  21. package/dist/cli/doctor.js.map +1 -1
  22. package/dist/config.d.ts +9 -1
  23. package/dist/config.js +72 -2
  24. package/dist/config.js.map +1 -1
  25. package/dist/install.js +60 -19
  26. package/dist/install.js.map +1 -1
  27. package/dist/routes/admin.d.ts +2 -0
  28. package/dist/routes/admin.js +72 -0
  29. package/dist/routes/admin.js.map +1 -0
  30. package/dist/routes/docker.d.ts +2 -0
  31. package/dist/routes/docker.js +58 -0
  32. package/dist/routes/docker.js.map +1 -0
  33. package/dist/routes/file-mounts.js +5 -8
  34. package/dist/routes/file-mounts.js.map +1 -1
  35. package/dist/routes/instances.d.ts +0 -14
  36. package/dist/routes/instances.js +44 -1184
  37. package/dist/routes/instances.js.map +1 -1
  38. package/dist/server.d.ts +6 -0
  39. package/dist/server.js +53 -20
  40. package/dist/server.js.map +1 -1
  41. package/dist/services/app-common/catalog-service.js +15 -5
  42. package/dist/services/app-common/catalog-service.js.map +1 -1
  43. package/dist/services/app-common/delete-service.js +5 -0
  44. package/dist/services/app-common/delete-service.js.map +1 -1
  45. package/dist/services/app-common/instance-store.js +3 -0
  46. package/dist/services/app-common/instance-store.js.map +1 -1
  47. package/dist/services/app-common/lifecycle-service.js +12 -4
  48. package/dist/services/app-common/lifecycle-service.js.map +1 -1
  49. package/dist/services/app-common/ownership.d.ts +3 -0
  50. package/dist/services/app-common/ownership.js +11 -0
  51. package/dist/services/app-common/ownership.js.map +1 -0
  52. package/dist/services/app-common/runtime-facts.js +2 -0
  53. package/dist/services/app-common/runtime-facts.js.map +1 -1
  54. package/dist/services/app-common/spec-materializer.d.ts +0 -1
  55. package/dist/services/app-common/spec-materializer.js +21 -87
  56. package/dist/services/app-common/spec-materializer.js.map +1 -1
  57. package/dist/services/app-common/status-refresh.js +25 -13
  58. package/dist/services/app-common/status-refresh.js.map +1 -1
  59. package/dist/services/app-modules/browserless/routes.js +5 -3
  60. package/dist/services/app-modules/browserless/routes.js.map +1 -1
  61. package/dist/services/capabilities/contract.d.ts +1 -2
  62. package/dist/services/capabilities/contract.js +0 -10
  63. package/dist/services/capabilities/contract.js.map +1 -1
  64. package/dist/services/capabilities/endpoint-validator.js +0 -1
  65. package/dist/services/capabilities/endpoint-validator.js.map +1 -1
  66. package/dist/services/capabilities/health.js +1 -1
  67. package/dist/services/capabilities/health.js.map +1 -1
  68. package/dist/services/capability-proxy/http.d.ts +7 -0
  69. package/dist/services/capability-proxy/http.js +555 -0
  70. package/dist/services/capability-proxy/http.js.map +1 -0
  71. package/dist/services/capability-proxy/terminal.d.ts +4 -0
  72. package/dist/services/capability-proxy/terminal.js +179 -0
  73. package/dist/services/capability-proxy/terminal.js.map +1 -0
  74. package/dist/services/connections/admin.js +19 -9
  75. package/dist/services/connections/admin.js.map +1 -1
  76. package/dist/services/connections/apply.d.ts +3 -9
  77. package/dist/services/connections/apply.js +0 -29
  78. package/dist/services/connections/apply.js.map +1 -1
  79. package/dist/services/connections/transactor.js +2 -2
  80. package/dist/services/connections/transactor.js.map +1 -1
  81. package/dist/services/files/bootstrap.d.ts +7 -0
  82. package/dist/services/files/bootstrap.js +16 -0
  83. package/dist/services/files/bootstrap.js.map +1 -0
  84. package/dist/services/files/photos/upload-page.d.ts +2 -0
  85. package/dist/services/files/photos/upload-page.js +248 -0
  86. package/dist/services/files/photos/upload-page.js.map +1 -0
  87. package/dist/services/files/photos/upload-store.d.ts +74 -0
  88. package/dist/services/files/photos/upload-store.js +432 -0
  89. package/dist/services/files/photos/upload-store.js.map +1 -0
  90. package/dist/services/http/proxy-utils.d.ts +7 -0
  91. package/dist/services/http/proxy-utils.js +29 -0
  92. package/dist/services/http/proxy-utils.js.map +1 -0
  93. package/dist/services/http/request-utils.d.ts +3 -0
  94. package/dist/services/http/request-utils.js +23 -0
  95. package/dist/services/http/request-utils.js.map +1 -0
  96. package/dist/services/instances/manager.d.ts +6 -5
  97. package/dist/services/instances/manager.js +45 -51
  98. package/dist/services/instances/manager.js.map +1 -1
  99. package/dist/services/instances/pairing.d.ts +17 -0
  100. package/dist/services/instances/pairing.js +53 -0
  101. package/dist/services/instances/pairing.js.map +1 -0
  102. package/dist/services/instances/status.d.ts +2 -0
  103. package/dist/services/instances/status.js +11 -0
  104. package/dist/services/instances/status.js.map +1 -0
  105. package/dist/services/integrations/hermes/integration.d.ts +1 -1
  106. package/dist/services/integrations/hermes/integration.js +7 -8
  107. package/dist/services/integrations/hermes/integration.js.map +1 -1
  108. package/dist/services/integrations/immich/client.d.ts +93 -0
  109. package/dist/services/integrations/immich/client.js +458 -0
  110. package/dist/services/integrations/immich/client.js.map +1 -0
  111. package/dist/services/integrations/immich/config.d.ts +15 -0
  112. package/dist/services/integrations/immich/config.js +178 -0
  113. package/dist/services/integrations/immich/config.js.map +1 -0
  114. package/dist/services/integrations/immich/discovery.d.ts +9 -0
  115. package/dist/services/integrations/immich/discovery.js +101 -0
  116. package/dist/services/integrations/immich/discovery.js.map +1 -0
  117. package/dist/services/integrations/immich/gallery-renderer.d.ts +5 -0
  118. package/dist/services/integrations/immich/gallery-renderer.js +150 -0
  119. package/dist/services/integrations/immich/gallery-renderer.js.map +1 -0
  120. package/dist/services/integrations/immich/immich-shim.d.ts +11 -0
  121. package/dist/services/integrations/immich/immich-shim.js +439 -0
  122. package/dist/services/integrations/immich/immich-shim.js.map +1 -0
  123. package/dist/services/integrations/immich/integration.d.ts +18 -0
  124. package/dist/services/integrations/immich/integration.js +64 -0
  125. package/dist/services/integrations/immich/integration.js.map +1 -0
  126. package/dist/services/integrations/immich/photo-library.d.ts +4 -0
  127. package/dist/services/integrations/immich/photo-library.js +63 -0
  128. package/dist/services/integrations/immich/photo-library.js.map +1 -0
  129. package/dist/services/integrations/immich/review-executor.d.ts +3 -0
  130. package/dist/services/integrations/immich/review-executor.js +41 -0
  131. package/dist/services/integrations/immich/review-executor.js.map +1 -0
  132. package/dist/services/integrations/immich/review-session-service.d.ts +27 -0
  133. package/dist/services/integrations/immich/review-session-service.js +206 -0
  134. package/dist/services/integrations/immich/review-session-service.js.map +1 -0
  135. package/dist/services/integrations/immich/review-store.d.ts +47 -0
  136. package/dist/services/integrations/immich/review-store.js +347 -0
  137. package/dist/services/integrations/immich/review-store.js.map +1 -0
  138. package/dist/services/integrations/immich/routes.d.ts +7 -0
  139. package/dist/services/integrations/immich/routes.js +363 -0
  140. package/dist/services/integrations/immich/routes.js.map +1 -0
  141. package/dist/services/integrations/immich/types.d.ts +186 -0
  142. package/dist/services/integrations/immich/types.js +2 -0
  143. package/dist/services/integrations/immich/types.js.map +1 -0
  144. package/dist/services/integrations/index.d.ts +1 -0
  145. package/dist/services/integrations/index.js +1 -0
  146. package/dist/services/integrations/index.js.map +1 -1
  147. package/dist/services/integrations/installable/installers/integration.js +113 -7
  148. package/dist/services/integrations/installable/installers/integration.js.map +1 -1
  149. package/dist/services/integrations/jishukb/integration.d.ts +3 -1
  150. package/dist/services/integrations/jishukb/integration.js +121 -10
  151. package/dist/services/integrations/jishukb/integration.js.map +1 -1
  152. package/dist/services/integrations/openclaw/integration.d.ts +21 -7
  153. package/dist/services/integrations/openclaw/integration.js +385 -158
  154. package/dist/services/integrations/openclaw/integration.js.map +1 -1
  155. package/dist/services/integrations/openclaw/jishukb-native-mcp.d.ts +58 -0
  156. package/dist/services/integrations/openclaw/jishukb-native-mcp.js +373 -0
  157. package/dist/services/integrations/openclaw/jishukb-native-mcp.js.map +1 -0
  158. package/dist/services/integrations/openclaw/jishukb-shim.d.ts +8 -4
  159. package/dist/services/integrations/openclaw/jishukb-shim.js +624 -17
  160. package/dist/services/integrations/openclaw/jishukb-shim.js.map +1 -1
  161. package/dist/services/integrations/openclaw/mcporter.d.ts +13 -0
  162. package/dist/services/integrations/openclaw/mcporter.js +31 -0
  163. package/dist/services/integrations/openclaw/mcporter.js.map +1 -1
  164. package/dist/services/integrations/openclaw/native-mcp.d.ts +48 -0
  165. package/dist/services/integrations/openclaw/native-mcp.js +125 -0
  166. package/dist/services/integrations/openclaw/native-mcp.js.map +1 -0
  167. package/dist/services/integrations/openclaw/routes.js +4 -1
  168. package/dist/services/integrations/openclaw/routes.js.map +1 -1
  169. package/dist/services/integrations/types.d.ts +5 -17
  170. package/dist/services/repair/runtime-repair.js +68 -1
  171. package/dist/services/repair/runtime-repair.js.map +1 -1
  172. package/dist/services/runtime/docker-network.d.ts +8 -0
  173. package/dist/services/runtime/docker-network.js +123 -0
  174. package/dist/services/runtime/docker-network.js.map +1 -0
  175. package/dist/services/runtime/driver-registry.d.ts +4 -0
  176. package/dist/services/runtime/driver-registry.js.map +1 -1
  177. package/dist/services/runtime/drivers/nomad.d.ts +1 -0
  178. package/dist/services/runtime/drivers/nomad.js +35 -5
  179. package/dist/services/runtime/drivers/nomad.js.map +1 -1
  180. package/dist/services/runtime/service-manager.d.ts +2 -0
  181. package/dist/services/runtime/service-manager.js +18 -0
  182. package/dist/services/runtime/service-manager.js.map +1 -0
  183. package/dist/services/runtime/types.d.ts +1 -0
  184. package/dist/services/runtime/workload-compiler.js +29 -4
  185. package/dist/services/runtime/workload-compiler.js.map +1 -1
  186. package/dist/services/setup/setup-manager.js +29 -73
  187. package/dist/services/setup/setup-manager.js.map +1 -1
  188. package/dist/services/system/runtime-ownership.d.ts +36 -0
  189. package/dist/services/system/runtime-ownership.js +250 -0
  190. package/dist/services/system/runtime-ownership.js.map +1 -0
  191. package/dist/services/system/system-reconciler.js +53 -0
  192. package/dist/services/system/system-reconciler.js.map +1 -1
  193. package/dist/types.d.ts +19 -3
  194. package/dist/utils/path-safety.js +1 -1
  195. package/dist/utils/service-user.d.ts +13 -0
  196. package/dist/utils/service-user.js +129 -0
  197. package/dist/utils/service-user.js.map +1 -0
  198. package/install/jishu-install.sh +0 -1
  199. package/node_modules/brace-expansion/dist/commonjs/index.js +24 -14
  200. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  201. package/node_modules/brace-expansion/dist/esm/index.js +24 -14
  202. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  203. package/node_modules/brace-expansion/package.json +2 -2
  204. package/node_modules/fast-uri/index.js +1 -1
  205. package/node_modules/fast-uri/package.json +1 -1
  206. package/node_modules/fast-uri/test/security.test.js +28 -0
  207. package/node_modules/fastify/SECURITY.md +1 -1
  208. package/node_modules/fastify/SPONSORS.md +6 -4
  209. package/node_modules/fastify/docs/Guides/Database.md +0 -28
  210. package/node_modules/fastify/docs/Guides/Ecosystem.md +13 -2
  211. package/node_modules/fastify/docs/Guides/Serverless.md +2 -2
  212. package/node_modules/fastify/docs/Guides/Write-Plugin.md +1 -1
  213. package/node_modules/fastify/docs/Reference/Encapsulation.md +27 -26
  214. package/node_modules/fastify/docs/Reference/Errors.md +10 -4
  215. package/node_modules/fastify/docs/Reference/HTTP2.md +10 -10
  216. package/node_modules/fastify/docs/Reference/Hooks.md +4 -4
  217. package/node_modules/fastify/docs/Reference/Index.md +14 -16
  218. package/node_modules/fastify/docs/Reference/LTS.md +12 -13
  219. package/node_modules/fastify/docs/Reference/Lifecycle.md +9 -8
  220. package/node_modules/fastify/docs/Reference/Logging.md +44 -39
  221. package/node_modules/fastify/docs/Reference/Middleware.md +21 -25
  222. package/node_modules/fastify/docs/Reference/Principles.md +2 -2
  223. package/node_modules/fastify/docs/Reference/Reply.md +6 -1
  224. package/node_modules/fastify/docs/Reference/Request.md +27 -16
  225. package/node_modules/fastify/docs/Reference/Routes.md +5 -2
  226. package/node_modules/fastify/docs/Reference/Server.md +31 -3
  227. package/node_modules/fastify/docs/Reference/Type-Providers.md +29 -5
  228. package/node_modules/fastify/docs/Reference/Validation-and-Serialization.md +15 -2
  229. package/node_modules/fastify/docs/Reference/Warnings.md +7 -6
  230. package/node_modules/fastify/eslint.config.js +7 -2
  231. package/node_modules/fastify/fastify.d.ts +8 -3
  232. package/node_modules/fastify/fastify.js +43 -14
  233. package/node_modules/fastify/lib/content-type-parser.js +13 -1
  234. package/node_modules/fastify/lib/decorate.js +11 -3
  235. package/node_modules/fastify/lib/error-handler.js +4 -3
  236. package/node_modules/fastify/lib/error-serializer.js +59 -59
  237. package/node_modules/fastify/lib/errors.js +16 -1
  238. package/node_modules/fastify/lib/four-oh-four.js +14 -9
  239. package/node_modules/fastify/lib/handle-request.js +11 -5
  240. package/node_modules/fastify/lib/plugin-override.js +2 -1
  241. package/node_modules/fastify/lib/plugin-utils.js +5 -5
  242. package/node_modules/fastify/lib/reply.js +63 -8
  243. package/node_modules/fastify/lib/request.js +14 -4
  244. package/node_modules/fastify/lib/route.js +20 -6
  245. package/node_modules/fastify/lib/schema-controller.js +1 -1
  246. package/node_modules/fastify/lib/schemas.js +37 -30
  247. package/node_modules/fastify/lib/symbols.js +3 -1
  248. package/node_modules/fastify/lib/validation.js +1 -13
  249. package/node_modules/fastify/lib/warnings.js +3 -3
  250. package/node_modules/fastify/package.json +13 -15
  251. package/node_modules/fastify/scripts/validate-ecosystem-links.js +1 -0
  252. package/node_modules/fastify/test/bundler/esbuild/package.json +1 -1
  253. package/node_modules/fastify/test/close-pipelining.test.js +1 -2
  254. package/node_modules/fastify/test/custom-http-server.test.js +38 -0
  255. package/node_modules/fastify/test/decorator-instance-properties.test.js +63 -0
  256. package/node_modules/fastify/test/diagnostics-channel/async-error-handler.test.js +74 -0
  257. package/node_modules/fastify/test/hooks.test.js +23 -0
  258. package/node_modules/fastify/test/http-methods/get.test.js +1 -1
  259. package/node_modules/fastify/test/http2/plain.test.js +135 -0
  260. package/node_modules/fastify/test/http2/secure-with-fallback.test.js +1 -1
  261. package/node_modules/fastify/test/https/https.test.js +1 -2
  262. package/node_modules/fastify/test/internals/errors.test.js +31 -1
  263. package/node_modules/fastify/test/internals/plugin.test.js +3 -1
  264. package/node_modules/fastify/test/internals/request.test.js +27 -3
  265. package/node_modules/fastify/test/internals/schema-controller-perf.test.js +33 -0
  266. package/node_modules/fastify/test/logger/logging.test.js +18 -1
  267. package/node_modules/fastify/test/logger/options.test.js +38 -1
  268. package/node_modules/fastify/test/reply-error.test.js +1 -1
  269. package/node_modules/fastify/test/reply-trailers.test.js +70 -0
  270. package/node_modules/fastify/test/request-media-type.test.js +105 -0
  271. package/node_modules/fastify/test/route-prefix.test.js +34 -0
  272. package/node_modules/fastify/test/router-options.test.js +222 -11
  273. package/node_modules/fastify/test/schema-serialization.test.js +108 -0
  274. package/node_modules/fastify/test/schema-validation.test.js +24 -0
  275. package/node_modules/fastify/test/scripts/validate-ecosystem-links.test.js +40 -57
  276. package/node_modules/fastify/test/throw.test.js +14 -0
  277. package/node_modules/fastify/test/trust-proxy.test.js +21 -0
  278. package/node_modules/fastify/test/types/content-type-parser.tst.ts +70 -0
  279. package/node_modules/fastify/test/types/{decorate-request-reply.test-d.ts → decorate-request-reply.tst.ts} +4 -4
  280. package/node_modules/fastify/test/types/{dummy-plugin.ts → dummy-plugin.mts} +1 -1
  281. package/node_modules/fastify/test/types/errors.tst.ts +91 -0
  282. package/node_modules/fastify/test/types/fastify.tst.ts +351 -0
  283. package/node_modules/fastify/test/types/hooks.tst.ts +578 -0
  284. package/node_modules/fastify/test/types/instance.tst.ts +597 -0
  285. package/node_modules/fastify/test/types/{logger.test-d.ts → logger.tst.ts} +61 -62
  286. package/node_modules/fastify/test/types/plugin.tst.ts +96 -0
  287. package/node_modules/fastify/test/types/register.tst.ts +245 -0
  288. package/node_modules/fastify/test/types/reply.tst.ts +297 -0
  289. package/node_modules/fastify/test/types/request.tst.ts +199 -0
  290. package/node_modules/fastify/test/types/route.tst.ts +576 -0
  291. package/node_modules/fastify/test/types/{schema.test-d.ts → schema.tst.ts} +22 -22
  292. package/node_modules/fastify/test/types/{serverFactory.test-d.ts → serverFactory.tst.ts} +4 -4
  293. package/node_modules/fastify/test/types/tsconfig.json +9 -0
  294. package/node_modules/fastify/test/types/{type-provider.test-d.ts → type-provider.tst.ts} +256 -250
  295. package/node_modules/fastify/test/types/using.tst.ts +14 -0
  296. package/node_modules/fastify/types/errors.d.ts +3 -0
  297. package/node_modules/fastify/types/request.d.ts +23 -2
  298. package/node_modules/jishushell-panel/output/public/assets/{ApiKeyField-NKcbHjNz.js → ApiKeyField-Ce5d1xna.js} +1 -1
  299. package/node_modules/jishushell-panel/output/public/assets/{Dashboard-Da1fL38t.js → Dashboard-BXame3yg.js} +1 -1
  300. package/node_modules/jishushell-panel/output/public/assets/{HermesChatPanel-DZvmYsoh.js → HermesChatPanel-BHZtPCJd.js} +1 -1
  301. package/node_modules/jishushell-panel/output/public/assets/{HermesConfigForm-BLUWlKwm.js → HermesConfigForm-CB3GbNX9.js} +1 -1
  302. package/node_modules/jishushell-panel/output/public/assets/{InitPassword-BAKsshzk.js → InitPassword-Boab9F6g.js} +1 -1
  303. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-DrIWCqo-.js +14 -0
  304. package/node_modules/jishushell-panel/output/public/assets/{Login-DHeOmwI8.js → Login-CzpOkNau.js} +1 -1
  305. package/node_modules/jishushell-panel/output/public/assets/NewInstance-CANXyCcL.js +1 -0
  306. package/node_modules/jishushell-panel/output/public/assets/{ProviderRecommendations-H0ByEYF0.js → ProviderRecommendations-BABo9VOC.js} +1 -1
  307. package/node_modules/jishushell-panel/output/public/assets/Settings-CKp5XxFh.js +1 -0
  308. package/node_modules/jishushell-panel/output/public/assets/Setup-C7xVDPow.js +1 -0
  309. package/node_modules/jishushell-panel/output/public/assets/{WeixinLoginPanel-D-T6BxkQ.js → WeixinLoginPanel-B765Xz4C.js} +1 -1
  310. package/node_modules/jishushell-panel/output/public/assets/{index-ERt6_ngA.js → index-Bs6DSbiR.js} +6 -6
  311. package/node_modules/jishushell-panel/output/public/assets/{registry-DF93EzIb.js → registry-sWIZsIEF.js} +2 -2
  312. package/node_modules/jishushell-panel/output/public/assets/{usePolling-DeoThIQn.js → usePolling-D4IDOQd_.js} +1 -1
  313. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-Df8aUdv8.js +1 -0
  314. package/node_modules/jishushell-panel/output/public/assets/{vendor-react-Cc84NArf.js → vendor-react-0L0rjmYG.js} +3 -3
  315. package/node_modules/jishushell-panel/output/public/index.html +3 -3
  316. package/node_modules/jishushell-panel/package.json +1 -1
  317. package/node_modules/semver/classes/range.js +6 -2
  318. package/node_modules/semver/package.json +1 -1
  319. package/package.json +4 -4
  320. package/scripts/check-app-spec.mjs +4 -12
  321. package/scripts/check-architecture-boundaries.mjs +178 -0
  322. package/scripts/pack-gui-and-send-pi.sh +5 -3
  323. package/dependencies/jishushell-panel-0.6.18.tgz +0 -0
  324. package/dist/services/connections/suggestions.d.ts +0 -27
  325. package/dist/services/connections/suggestions.js +0 -124
  326. package/dist/services/connections/suggestions.js.map +0 -1
  327. package/node_modules/fastify/test/types/content-type-parser.test-d.ts +0 -72
  328. package/node_modules/fastify/test/types/errors.test-d.ts +0 -90
  329. package/node_modules/fastify/test/types/fastify.test-d.ts +0 -352
  330. package/node_modules/fastify/test/types/hooks.test-d.ts +0 -550
  331. package/node_modules/fastify/test/types/import.ts +0 -2
  332. package/node_modules/fastify/test/types/instance.test-d.ts +0 -588
  333. package/node_modules/fastify/test/types/plugin.test-d.ts +0 -97
  334. package/node_modules/fastify/test/types/register.test-d.ts +0 -237
  335. package/node_modules/fastify/test/types/reply.test-d.ts +0 -254
  336. package/node_modules/fastify/test/types/request.test-d.ts +0 -188
  337. package/node_modules/fastify/test/types/route.test-d.ts +0 -553
  338. package/node_modules/fastify/test/types/using.test-d.ts +0 -17
  339. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-Dgyc_TX5.js +0 -14
  340. package/node_modules/jishushell-panel/output/public/assets/NewInstance-CIy0cYtp.js +0 -1
  341. package/node_modules/jishushell-panel/output/public/assets/Settings-DAT-UMfP.js +0 -1
  342. package/node_modules/jishushell-panel/output/public/assets/Setup-g3uckFYR.js +0 -1
  343. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-CS8DFbkQ.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./vendor-i18n-Df8aUdv8.js";import{t as r}from"./vendor-react-0L0rjmYG.js";import{$ as i,Ct as a,G as o,K as s,Nt as ee,X as c,lt as te,mt as ne,vt as l}from"./api-C70Gt678.js";import{a as re,i as ie}from"./index-Bs6DSbiR.js";import{t as ae,u}from"./ApiKeyField-Ce5d1xna.js";import{i as oe}from"./registry-sWIZsIEF.js";import{t as se}from"./ProviderRecommendations-BABo9VOC.js";var d=e(t(),1),f=r();function p(e,t){if(!e)return!1;let n=e.runtimes?.[t];return n?!!n.installed&&!!n.imageReady:t===`openclaw`?!!e.openclaw?.installed&&!!e.runtimeImageReady:!1}function m(e,t){let n=e?.runtimes?.[t];return n&&typeof n.required==`boolean`?n.required:t===`openclaw`}function h(e,t){if(!e)return!1;let n=t.filter(t=>m(e,t.kind));return n.length===0?!0:n.every(t=>p(e,t.kind))}var g=[{id:`check`,label:`环境检测`},{id:`node`,label:`Node.js`},{id:`docker`,label:`Docker`},{id:`nomad`,label:`Nomad`},{id:`openclaw`,label:`OpenClaw`},{id:`provider`,label:`模型配置`},{id:`done`,label:`完成`}];function _({ok:e}){return e?(0,f.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full bg-emerald-500 shadow-[0_0_6px_rgba(16,185,129,0.7)]`}):(0,f.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full bg-[var(--border)]`})}function v({dep:e,label:t,required:r,extra:i}){let{t:a}=n(`setup`),o=e.needsUpgrade;return(0,f.jsxs)(`div`,{className:`flex items-center justify-between py-2.5 border-b border-[var(--border)] last:border-0`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[o?(0,f.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full bg-amber-400 shadow-[0_0_6px_rgba(251,191,36,0.6)]`}):(0,f.jsx)(_,{ok:e.installed}),(0,f.jsx)(`span`,{className:`text-sm text-foreground`,children:t||e.name}),o&&(0,f.jsx)(`span`,{className:`text-xs text-amber-400`,children:a(`versionTooOld`)}),r&&!e.installed&&!o&&(0,f.jsx)(`span`,{className:`text-xs text-red-400`,children:a(`required`)})]}),(0,f.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i,(0,f.jsx)(`span`,{className:`text-xs text-muted font-mono`,children:e.installed?e.version||`installed`:`not installed`})]})]})}function y(){return(0,f.jsx)(`span`,{className:`w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin`})}function b(e){return/失败|error|denied|forbidden|unauthorized/i.test(e)?`error`:/完成|已就绪|已启动|已存在|成功|built|installed/i.test(e)?`success`:/正在|等待|下载|安装|构建|启动|升级|progress|exporting|transferring/i.test(e)?`progress`:`info`}function x(e){switch(e){case`progress`:return{dot:`bg-sky-400 shadow-[0_0_8px_rgba(56,189,248,0.55)]`,text:`text-sky-100`};case`success`:return{dot:`bg-emerald-400 shadow-[0_0_8px_rgba(52,211,153,0.55)]`,text:`text-emerald-100`};case`error`:return{dot:`bg-red-400 shadow-[0_0_8px_rgba(248,113,113,0.55)]`,text:`text-red-200`};default:return{dot:`bg-slate-500 shadow-[0_0_8px_rgba(148,163,184,0.35)]`,text:`text-slate-200/90`}}}function S({onDone:e}){let{runtimes:t}=oe(),{t:r}=n([`setup`,`common`,`instance`]),[m,_]=(0,d.useState)(null),[S,C]=(0,d.useState)(`check`),[w,T]=(0,d.useState)(null),[E,D]=(0,d.useState)([]),[O,k]=(0,d.useState)(``),[A,j]=(0,d.useState)(!1),[M,ce]=(0,d.useState)(``),[N,le]=(0,d.useState)(``),[P,F]=(0,d.useState)(``),[I,L]=(0,d.useState)(!1),[R,z]=(0,d.useState)([]),[B,V]=(0,d.useState)(!1),[H,U]=(0,d.useState)(``),[ue,de]=(0,d.useState)(`idle`),W=(0,d.useRef)(new Set),G=(0,d.useCallback)((e,t)=>{if(W.current.has(e))return;W.current.add(e);let n=t===`openclaw-docker`?r(`setup:dockerImageBuild`):t===`docker`?r(`setup:dockerInstall`):t===`openclaw`?r(`setup:openclawInstall`):t;T(t),q(r(`setup:resumeTask`,{label:n}),`progress`),J(e,n).then(()=>{K(!0)}).catch(e=>{k(e.message||r(`setup:taskFailed`))}).finally(()=>{T(null)})},[]),K=(0,d.useCallback)((e=!1)=>{o().then(t=>{if(_(t),t.runningTasks?.length)for(let e of t.runningTasks)G(e.id,e.name);if(!e&&t.ready){C(`provider`);return}}).catch(()=>{})},[e,G]);(0,d.useEffect)(()=>{K()},[K]),(0,d.useEffect)(()=>{if(S!==`nomad`||!m?.nomad?.installed||m?.nomad?.running)return;let e=setInterval(()=>{K(!0)},3e3);return()=>clearInterval(e)},[S,m?.nomad?.installed,m?.nomad?.running,K]);let q=(e,t=b(e))=>D(n=>[...n,{message:e,tone:t}].slice(-200)),fe=(e,t)=>t.type===`progress`&&typeof t.progress==`number`?`${e}: ${t.message} [${t.progress}%]`:t.type===`done`?`${e}: ${t.message}`:t.type===`error`?r(`setup:taskErrorPrefix`,{label:e,message:t.message}):t.message,J=async(e,t)=>{let n=0,i=0,a=r(`setup:taskCompleted`,{label:t}),o=Date.now()+1800*1e3;for(;Date.now()<o;){try{let r=await s(e);i=0;let o=r.events.slice(n);n=r.events.length;for(let e of o){let n=e.type===`done`?`success`:e.type===`error`?`error`:e.type===`progress`?`progress`:b(e.message);q(fe(t,e),n),e.message&&(a=e.message)}if(r.status===`done`)return a;if(r.status===`error`)throw Error(a)}catch(e){if(i+=1,i>=5)throw Error(e?.message||r(`setup:taskStatusFailed`,{label:t}))}let o=Math.min(1e3+n*200,3e3);await new Promise(e=>setTimeout(e,o))}throw Error(r(`setup:taskTimeout`,{label:t}))},Y=async(e,t,n)=>{T(e),k(``),q(r(`setup:installing`,{label:t}),`progress`);try{let e=await n(),i=e.message||r(`setup:taskStarted`,{label:t});return e?.taskId?i=await J(e.taskId,t):q(`${t}: ${i}`,`success`),K(!0),!0}catch(e){let n=e.message||r(`setup:defaultInstallFailed`);return q(r(`setup:installFailed`,{label:t,error:n}),`error`),k(n),!1}finally{T(null)}},X=async()=>{await Y(`node`,`Node.js`,()=>ee())},pe=async()=>{await Y(`docker`,`Docker`,()=>c(`docker`))},[me,he]=(0,d.useState)(!1),ge=async e=>{let n=t.find(t=>t.kind===e);if(!n)return;n.installHint&&q(r(n.installHint),`info`);let a=await Y(`runtime-${e}`,r(n.installLabel),()=>i(e));e===`openclaw`&&a&&he(!0),K(!0)},_e=async()=>{if(await Y(`nomad`,`Nomad`,()=>c(`nomad`))){q(r(`setup:configuringNomadSystemd`),`progress`),T(`nomad-systemd`);try{await c(`nomad-systemd`),q(r(`setup:nomadServiceStarted`),`success`)}catch{try{await a(`nomad`),q(r(`setup:nomadStarted`),`success`)}catch(e){q(r(`setup:nomadStartFailed`,{error:e.message}),`error`),k(e.message)}}T(null),q(r(`setup:waitingNomad`),`progress`);for(let e=0;e<10;e++){await new Promise(e=>setTimeout(e,2e3));let e=await o();if(e.nomad?.running){_(e),q(r(`setup:nomadReady`),`success`);return}}K(!0)}},Z=!!m?.node?.installed&&!m?.node?.needsUpgrade,Q=async()=>{let e=g.findIndex(e=>e.id===S);if(e>=g.length-1)return;let n=e+1;for(;n<g.length-1;){let e=g[n].id;if(e===`node`&&Z){n++;continue}if(e===`docker`&&m?.docker?.installed&&m?.docker?.running){n++;continue}if(e===`nomad`&&m?.nomad?.installed&&m?.nomad?.running){n++;continue}if(e===`openclaw`&&h(m,t)){n++;continue}break}let i=g[n].id;if(k(``),D([]),i===`done`){C(`done`),j(!0);try{await ne({installNomad:!1,buildDockerImage:!1})}catch(e){k(e.message||r(`setup:configWriteFailed`))}finally{j(!1)}}else C(i)},ve=e=>{if(!m)return!1;switch(e){case`check`:return Z;case`node`:return Z;case`docker`:return m.docker.installed&&m.docker.running;case`nomad`:return m.nomad.installed&&m.nomad.running;case`openclaw`:return h(m,t)||me&&m.openclaw.installed&&t.length===1;case`provider`:return!0;case`done`:return!0;default:return!1}},$=(0,d.useCallback)(e=>{ce(e),F(``),z([]);let t=u.find(t=>t.id===e);U(t?.baseUrl||``)},[]),ye=(0,d.useCallback)(async e=>{if(!M)return;let t=u.find(e=>e.id===M);if(!t)return;let n=t.local===!0&&H.trim()?H.trim():t.baseUrl,i=t.authHeader?`x-api-key`:`Authorization`,a=e??N;V(!0),k(``);try{let{models:e}=await te(n,a,i,t.id,t.api);z(e),e.length>0&&F(e[0].id)}catch(e){k(e.message||r(`setup:provider.fetchModelsFailed`))}finally{V(!1)}},[N,H,M,r]),be=async()=>{if(!M)return!1;let e=u.find(e=>e.id===M);if(!e)return!1;let t=e.local===!0,n=t&&H.trim()?H.trim():e.baseUrl;if(t&&!n)return k(r(`setup:provider.baseUrlRequired`,{defaultValue:`Base URL is required`})),!1;let i=R.length>0?R.map(e=>({id:e.id,name:e.name||e.id,contextWindow:128e3})):e.models,a=P||i[0]?.id||``;L(!0),!t&&N.trim()&&ue!==`valid`&&k(r(`common:llm.saveWithoutValidation`));try{return await l({providerId:e.id,baseUrl:n,api:e.api,authHeader:e.authHeader?`x-api-key`:void 0,models:i,selectedModelId:a,apiKey:N||``}),!0}catch(e){return k(e.message||r(`setup:provider.saveFailed`)),!1}finally{L(!1)}};return m?(0,f.jsxs)(`div`,{className:`min-h-screen flex items-center justify-center p-4 bg-background relative overflow-hidden`,children:[(0,f.jsx)(`div`,{className:`grid-bg absolute inset-0 pointer-events-none`}),(0,f.jsx)(`div`,{className:`absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[400px] rounded-full bg-[#0066FF]/[0.06] blur-[100px] pointer-events-none`}),(0,f.jsx)(`div`,{className:`absolute left-4 bottom-4 z-20`,children:(0,f.jsx)(re,{className:`bg-card/80 backdrop-blur-sm`})}),(0,f.jsxs)(`div`,{className:`w-full max-w-lg relative z-10`,children:[(0,f.jsxs)(`div`,{className:`text-center mb-8`,children:[(0,f.jsx)(ie,{className:`w-48 h-48 mx-auto mb-4 object-contain`}),(0,f.jsx)(`p`,{className:`text-sm text-muted mt-1`,children:r(`setup:title`)})]}),(0,f.jsxs)(`div`,{className:`bg-card border border-[var(--border)] rounded-xl p-6 backdrop-blur-sm`,children:[S===`check`&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:check.title`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted mb-4`,children:r(`setup:check.desc`)}),(0,f.jsx)(`p`,{className:`text-xs text-muted mb-1.5 font-medium`,children:r(`setup:check.requiredComponents`)}),(0,f.jsxs)(`div`,{className:`bg-card rounded-md border border-[var(--border)] px-4`,children:[(0,f.jsx)(v,{dep:m.node,label:`Node.js`,required:!0,extra:m.node.needsUpgrade?(0,f.jsx)(`button`,{onClick:X,disabled:!!w,className:`text-xs bg-amber-500/20 text-amber-400 border border-amber-500/30 rounded px-2 py-0.5 hover:bg-amber-500/30 disabled:opacity-40 transition-colors duration-200`,children:r(w===`node`?`setup:check.upgrading`:`setup:check.upgrade`)}):void 0}),(0,f.jsx)(v,{dep:m.docker,label:`Docker`,required:!0}),(0,f.jsx)(v,{dep:m.nomad,label:`Nomad`,required:!0}),(0,f.jsx)(v,{dep:m.openclaw,label:`OpenClaw`,required:!0})]})]}),S===`node`&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:node.title`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted mb-4`,children:r(`setup:node.desc`)}),Z?(0,f.jsx)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:node.ready`,{version:m.node.version})}):m.hasSudo?(0,f.jsxs)(`div`,{className:`space-y-3`,children:[(0,f.jsx)(`div`,{className:`bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:node.currentVersion`,{version:m.node.version})}),(0,f.jsx)(`button`,{onClick:X,disabled:!!w,className:`bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200`,children:w?(0,f.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,f.jsx)(y,{}),r(`setup:node.upgrading`)]}):r(`setup:node.upgradeBtn`)}),(0,f.jsx)(`p`,{className:`text-xs text-muted`,children:r(`setup:node.sudoRequired`)})]}):(0,f.jsxs)(`div`,{className:`space-y-3`,children:[(0,f.jsx)(`div`,{className:`bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:node.noSudo`,{version:m.node.version})}),(0,f.jsxs)(`div`,{className:`bg-card border border-[var(--border)] rounded-md p-3`,children:[(0,f.jsx)(`p`,{className:`text-xs text-muted mb-1.5`,children:r(`setup:node.contactAdmin`)}),(0,f.jsx)(`code`,{className:`text-xs text-foreground font-mono block whitespace-pre-wrap`,children:`curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs`})]}),(0,f.jsx)(`button`,{onClick:()=>K(!0),className:`text-xs text-muted hover:text-foreground underline transition-colors duration-200`,children:r(`setup:node.refreshAfterInstall`)})]})]}),S===`docker`&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:docker.title`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted mb-4`,children:r(`setup:docker.desc`)}),m.docker.installed&&m.docker.running?(0,f.jsx)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:docker.running`,{version:m.docker.version})}):m.docker.installed&&!m.docker.running?(0,f.jsxs)(`div`,{className:`space-y-3`,children:[(0,f.jsx)(`div`,{className:`bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:docker.notRunning`)}),(0,f.jsx)(`div`,{className:`bg-card border border-[var(--border)] rounded-md p-3`,children:(0,f.jsx)(`code`,{className:`text-xs text-foreground font-mono block`,children:/Mac|iPhone|iPad/i.test(navigator.userAgent)?`jishushell doctor --fix`:`sudo systemctl start docker`})}),(0,f.jsx)(`button`,{onClick:()=>K(!0),className:`text-xs text-muted hover:text-foreground underline transition-colors duration-200`,children:r(`setup:docker.refreshAfterStart`)})]}):/Mac|iPhone|iPad/i.test(navigator.userAgent)?(0,f.jsxs)(`div`,{className:`space-y-3`,children:[(0,f.jsx)(`p`,{className:`text-xs text-muted`,children:r(`setup:docker.macosColima`)}),(0,f.jsx)(`div`,{className:`bg-card border border-[var(--border)] rounded-md p-3`,children:(0,f.jsx)(`code`,{className:`text-xs text-foreground font-mono block`,children:`jishushell doctor --fix`})}),(0,f.jsx)(`button`,{onClick:()=>K(!0),className:`text-xs text-muted hover:text-foreground underline transition-colors duration-200`,children:r(`setup:docker.refreshAfterInstall`)})]}):m.hasSudo?(0,f.jsxs)(`div`,{className:`space-y-3`,children:[(0,f.jsx)(`button`,{onClick:pe,disabled:!!w,className:`bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200`,children:w?(0,f.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,f.jsx)(y,{}),r(`setup:docker.installing`)]}):r(`setup:docker.installBtn`)}),(0,f.jsx)(`p`,{className:`text-xs text-muted`,children:r(`setup:docker.sudoRequired`)})]}):(0,f.jsxs)(`div`,{className:`space-y-3`,children:[(0,f.jsx)(`div`,{className:`bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:docker.noSudo`)}),(0,f.jsxs)(`div`,{className:`bg-card border border-[var(--border)] rounded-md p-3`,children:[(0,f.jsx)(`p`,{className:`text-xs text-muted mb-1.5`,children:r(`setup:docker.contactAdmin`)}),(0,f.jsx)(`code`,{className:`text-xs text-foreground font-mono block`,children:`curl -fsSL https://get.docker.com | sh`})]}),(0,f.jsx)(`button`,{onClick:()=>K(!0),className:`text-xs text-muted hover:text-foreground underline transition-colors duration-200`,children:r(`setup:docker.refreshAfterInstall`)})]})]}),S===`nomad`&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:nomad.title`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted mb-4`,children:r(`setup:nomad.desc`)}),m.nomad.installed&&m.nomad.running?(0,f.jsx)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5`,children:r(`setup:nomad.running`,{version:m.nomad.version})}):m.nomad.installed?(0,f.jsx)(`div`,{className:`space-y-3`,children:(0,f.jsxs)(`div`,{className:`flex items-center gap-2 bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5`,children:[(0,f.jsx)(y,{}),(0,f.jsx)(`span`,{children:r(`setup:nomad.starting`)})]})}):(0,f.jsx)(`button`,{onClick:_e,disabled:!!w,className:`bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200`,children:w?(0,f.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,f.jsx)(y,{}),r(`setup:nomad.installing`)]}):r(`setup:nomad.installBtn`)})]}),S===`openclaw`&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:`运行时`}),(0,f.jsx)(`p`,{className:`text-sm text-muted mb-4`,children:`安装所有已注册的运行时 (Docker 镜像 / shim)。每次添加新 integration 时,这里会自动出现一行。`}),(0,f.jsx)(`div`,{className:`space-y-4`,children:t.map(e=>{let t=p(m,e.kind),n=w===`runtime-${e.kind}`;return(0,f.jsxs)(`div`,{className:`rounded-md border border-[var(--border)] bg-[var(--card)] p-4`,children:[(0,f.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:e.displayName}),(0,f.jsx)(`div`,{className:`text-xs text-muted`,children:e.description})]}),t?(0,f.jsx)(`span`,{className:`text-xs text-emerald-400 font-mono`,children:`已就绪`}):n?(0,f.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs text-amber-400`,children:[(0,f.jsx)(y,{}),`安装中`]}):(0,f.jsx)(`span`,{className:`text-xs text-muted`,children:`未安装`})]}),!t&&!n&&(0,f.jsxs)(`div`,{className:`space-y-2`,children:[e.installHint&&(0,f.jsx)(`p`,{className:`text-xs text-muted`,children:r(e.installHint)}),(0,f.jsxs)(`button`,{onClick:()=>ge(e.kind),disabled:!!w,className:`bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200`,children:[`安装 `,e.displayName]})]})]},e.kind)})})]}),S===`done`&&(0,f.jsx)(`div`,{className:`text-center py-4`,children:A?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{className:`w-12 h-12 mx-auto mb-3 flex items-center justify-center`,children:(0,f.jsx)(`div`,{className:`w-8 h-8 border-2 border-white/10 border-t-[#0066FF] rounded-full animate-spin`})}),(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:done.finalizing`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted`,children:r(`setup:done.finalizingDesc`)})]}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{className:`w-12 h-12 mx-auto mb-3 rounded-full bg-emerald-500/10 border border-emerald-500/20 flex items-center justify-center`,children:(0,f.jsx)(`svg`,{className:`w-6 h-6 text-emerald-400`,fill:`none`,viewBox:`0 0 24 24`,stroke:`currentColor`,children:(0,f.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M5 13l4 4L19 7`})})}),(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:done.complete`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted`,children:r(`setup:done.completeDesc`)})]})}),S===`provider`&&(()=>{let e=u.find(e=>e.id===M),t=[...new Set(u.map(e=>e.group))],n=e?.local===!0,i=R.length>0?R.map(e=>({id:e.id,label:e.name||e.id})):(e?.models||[]).map(e=>({id:e.id,label:`${e.name} (${Math.round(e.contextWindow/1e3)}K)`}));return(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`h2`,{className:`text-base font-medium text-foreground mb-1`,children:r(`setup:provider.title`)}),(0,f.jsx)(`p`,{className:`text-sm text-muted mb-4`,children:r(`setup:provider.desc`)}),(0,f.jsxs)(`div`,{className:`space-y-4`,children:[(0,f.jsx)(se,{title:r(`setup:provider.recommendedTitle`),description:r(`setup:provider.recommendedDescription`),apiKeyHint:r(`setup:provider.apiKeyHint`),selectedProviderId:M,onSelectProvider:$}),(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`label`,{className:`block text-sm font-medium text-muted mb-1.5`,children:r(`setup:provider.label`)}),(0,f.jsxs)(`select`,{value:M,onChange:e=>$(e.target.value),className:`w-full bg-background border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60`,children:[(0,f.jsx)(`option`,{value:``,children:r(`setup:provider.placeholder`)}),t.map(e=>(0,f.jsx)(`optgroup`,{label:r(`instance:configForm.providerGroup.${e}`,{defaultValue:e}),children:u.filter(t=>t.group===e).map(e=>(0,f.jsx)(`option`,{value:e.id,children:r(`instance:configForm.providerLabel.${e.id}`,{defaultValue:e.label})},e.id))},e))]})]}),M&&n&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`label`,{className:`block text-sm font-medium text-muted mb-1.5`,children:r(`setup:provider.baseUrl`)}),(0,f.jsxs)(`div`,{className:`flex gap-2`,children:[(0,f.jsx)(`input`,{value:H,onChange:e=>{U(e.target.value),z([])},className:`flex-1 bg-[var(--input-bg)] border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground font-mono focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60`}),(0,f.jsx)(`button`,{type:`button`,onClick:()=>{ye()},disabled:B,className:`px-3 py-1.5 text-xs border border-[var(--border)] rounded-md hover:bg-[var(--input-bg)] disabled:opacity-40 transition-all whitespace-nowrap`,children:r(B?`setup:provider.fetchingModels`:`setup:provider.fetchModels`)})]})]}),M&&!n&&(0,f.jsxs)(`div`,{children:[(0,f.jsx)(`label`,{className:`block text-sm font-medium text-muted mb-1.5`,children:r(`setup:provider.apiKey`)}),(0,f.jsx)(ae,{value:N,saved:!1,onChange:e=>{le(e),z([])},baseUrl:e?.baseUrl||``,api:e?.api||``,authHeader:e?.authHeader?`x-api-key`:void 0,providerId:M,placeholder:r(`setup:provider.apiKeyPlaceholder`),onModels:e=>{z(e),e.length>0&&F(e[0].id)},onStateChange:de,selectedModelId:P})]}),e&&i.length>0&&(0,f.jsxs)(`div`,{children:[(0,f.jsxs)(`label`,{className:`block text-sm font-medium text-muted mb-1.5`,children:[r(`setup:provider.defaultModel`),R.length>0&&(0,f.jsxs)(`span`,{className:`ml-1.5 text-emerald-400 text-xs`,children:[`(`,R.length,` `,r(`setup:provider.liveModels`),`)`]})]}),(0,f.jsx)(`select`,{value:P||i[0]?.id||``,onChange:e=>F(e.target.value),className:`w-full bg-background border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60`,children:i.map(e=>(0,f.jsx)(`option`,{value:e.id,children:e.label},e.id))})]})]})]})})(),E.length>0&&S!==`done`&&(0,f.jsxs)(`div`,{className:`mt-4 rounded-lg border border-[var(--border)] bg-[linear-gradient(180deg,rgba(2,6,23,0.96),rgba(15,23,42,0.92))] p-3 shadow-[inset_0_1px_0_rgba(255,255,255,0.04)] max-h-40 overflow-y-auto`,children:[E.map((e,t)=>{let n=x(e.tone);return(0,f.jsxs)(`div`,{className:`flex items-start gap-2 py-0.5`,children:[(0,f.jsx)(`span`,{className:`mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full ${n.dot}`}),(0,f.jsx)(`div`,{className:`min-w-0 whitespace-pre-wrap break-words text-xs font-mono leading-5 ${n.text}`,children:e.message})]},t)}),(0,f.jsx)(`div`,{className:`pointer-events-none sticky bottom-0 h-4 bg-gradient-to-t from-slate-950/85 to-transparent`})]}),O&&(0,f.jsx)(`div`,{className:`mt-4 bg-red-500/10 border border-red-500/20 text-red-400 text-sm rounded-md px-3 py-2.5`,children:O})]}),(0,f.jsx)(`div`,{className:`flex justify-between mt-6`,children:S===`provider`?(()=>{let e=u.find(e=>e.id===M)?.local===!0,t=M&&(e||N.trim());return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`button`,{onClick:async()=>{await l({skipped:!0}).catch(()=>{}),Q()},className:`bg-[var(--card)] border border-[var(--border)] text-foreground rounded-md px-6 py-2 text-sm font-medium hover:bg-[var(--card-hover)] transition-all duration-200`,children:r(`setup:provider.skip`)}),(0,f.jsx)(`button`,{onClick:async()=>{await be()&&Q()},disabled:!t||I,className:`bg-[#0066FF] text-white rounded-md px-6 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)]`,children:r(I?`setup:provider.saving`:`setup:provider.saveAndContinue`)})]})})():S===`done`?(0,f.jsx)(`button`,{onClick:O?()=>Q():e,disabled:A,className:`w-full bg-[#0066FF] text-white rounded-md py-2.5 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)]`,children:r(O?`setup:nav.retry`:`setup:nav.enterPanel`)}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`div`,{}),(0,f.jsx)(`button`,{onClick:Q,disabled:!ve(S)||!!w,className:`bg-[#0066FF] text-white rounded-md px-6 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)] hover:shadow-[0_0_28px_rgba(0,102,255,0.45)]`,children:r(`setup:nav.next`)})]})})]})]}):(0,f.jsx)(`div`,{className:`min-h-screen flex items-center justify-center bg-background`,children:(0,f.jsx)(`div`,{className:`w-5 h-5 border-2 border-[var(--border)] border-t-foreground rounded-full animate-spin`})})}export{S as default};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./vendor-i18n-CS8DFbkQ.js";import{t as r}from"./vendor-react-Cc84NArf.js";import{Dt as i,Y as a,ot as o,st as s,wt as c}from"./api-C70Gt678.js";var l=e(t()),u=Object.defineProperty,d=Object.getOwnPropertySymbols,f=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,m=(e,t,n)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,h=(e,t)=>{for(var n in t||={})f.call(t,n)&&m(e,n,t[n]);if(d)for(var n of d(t))p.call(t,n)&&m(e,n,t[n]);return e},g=(e,t)=>{var n={};for(var r in e)f.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&d)for(var r of d(e))t.indexOf(r)<0&&p.call(e,r)&&(n[r]=e[r]);return n},_;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(_||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(_||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(_||={});var v=_,y={L:v.QrCode.Ecc.LOW,M:v.QrCode.Ecc.MEDIUM,Q:v.QrCode.Ecc.QUARTILE,H:v.QrCode.Ecc.HIGH},b=128,x=`L`,S=`#FFFFFF`,C=`#000000`,w=!1,T=1,E=4,D=0,O=.1;function k(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function A(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function j(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*O),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function M(e,t){return t==null?e?E:D:Math.max(Math.floor(t),0)}function N({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=l.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...v.QrSegment.makeSegments(t)),e),[]);return v.QrCode.encodeSegments(r,y[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:u,margin:d,numCells:f,calculatedImageSettings:p}=l.useMemo(()=>{let e=c.getModules(),t=M(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:j(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:d,cells:u,numCells:f,calculatedImageSettings:p}}var P=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),F=l.forwardRef(function(e,t){let n=e,{value:r,size:i=b,level:a=x,bgColor:o=S,fgColor:s=C,includeMargin:c=w,minVersion:u=T,boostLevel:d,marginSize:f,imageSettings:p}=n,m=g(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:_}=m,v=g(m,[`style`]),y=p?.src,E=l.useRef(null),D=l.useRef(null),O=l.useCallback(e=>{E.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[j,M]=l.useState(!1),{margin:F,cells:I,numCells:L,calculatedImageSettings:R}=N({value:r,level:a,minVersion:u,boostLevel:d,includeMargin:c,marginSize:f,imageSettings:p,size:i});l.useEffect(()=>{if(E.current!=null){let e=E.current,t=e.getContext(`2d`);if(!t)return;let n=I,r=D.current,a=R!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&R.excavation!=null&&(n=A(I,R.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/L*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,L,L),t.fillStyle=s,P?t.fill(new Path2D(k(n,F))):I.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+F,n+F,1,1)})}),R&&(t.globalAlpha=R.opacity),a&&t.drawImage(r,R.x+F,R.y+F,R.w,R.h)}}),l.useEffect(()=>{M(!1)},[y]);let z=h({height:i,width:i},_),B=null;return y!=null&&(B=l.createElement(`img`,{src:y,key:y,style:{display:`none`},onLoad:()=>{M(!0)},ref:D,crossOrigin:R?.crossOrigin})),l.createElement(l.Fragment,null,l.createElement(`canvas`,h({style:z,height:i,width:i,ref:O,role:`img`},v)),B)});F.displayName=`QRCodeCanvas`;var I=l.forwardRef(function(e,t){let n=e,{value:r,size:i=b,level:a=x,bgColor:o=S,fgColor:s=C,includeMargin:c=w,minVersion:u=T,boostLevel:d,title:f,marginSize:p,imageSettings:m}=n,_=g(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:v,cells:y,numCells:E,calculatedImageSettings:D}=N({value:r,level:a,minVersion:u,boostLevel:d,includeMargin:c,marginSize:p,imageSettings:m,size:i}),O=y,j=null;m!=null&&D!=null&&(D.excavation!=null&&(O=A(y,D.excavation)),j=l.createElement(`image`,{href:m.src,height:D.h,width:D.w,x:D.x+v,y:D.y+v,preserveAspectRatio:`none`,opacity:D.opacity,crossOrigin:D.crossOrigin}));let M=k(O,v);return l.createElement(`svg`,h({height:i,width:i,viewBox:`0 0 ${E} ${E}`,ref:t,role:`img`},_),!!f&&l.createElement(`title`,null,f),l.createElement(`path`,{fill:o,d:`M0,0 h${E}v${E}H0z`,shapeRendering:`crispEdges`}),l.createElement(`path`,{fill:s,d:M,shapeRendering:`crispEdges`}),j)});I.displayName=`QRCodeSVG`;var L=r();function R({instanceId:e,channelKey:t,existingAppId:r,existingDomain:i,onConfigured:a}){let{t:s}=n([`instance`,`common`]),[u,d]=(0,l.useState)(``),[,f]=(0,l.useState)(``),[p,m]=(0,l.useState)(`idle`),[h,g]=(0,l.useState)(``),[_,v]=(0,l.useState)(``),y=(0,l.useRef)(!1),b=(0,l.useRef)(!1),x=(0,l.useRef)(0),S=async()=>{if(e){b.current=!1,m(`loading`),g(``),d(``);try{let n=null;for(let r=0;r<3;r++){if(b.current)return;try{if(n=await c(e,t),n?.qrcodeUrl)break}catch{r<2&&await new Promise(e=>setTimeout(e,1500))}}if(b.current)return;n?.qrcodeUrl?(d(n.qrcodeUrl),f(n.sessionKey),m(`waiting`),g(s(`configForm.feishu.scanHint`)),C(n.sessionKey)):(m(`error`),g(s(`qr.getFailed`)))}catch{b.current||(m(`error`),g(s(`qr.getFailed`)))}}},C=t=>{if(!e||y.current)return;y.current=!0,x.current=0;let n=async()=>{if(y.current)try{let r=await o(e,t);if(x.current=0,r.connected){y.current=!1,m(`confirmed`),g(r.message||s(`qr.loginSuccess`)),v(r.domain||`feishu`),d(``),a?.();return}if(r.status===`expired`){y.current=!1,m(`error`),g(r.message||s(`qr.expired`));return}setTimeout(n,3e3)}catch{if(!y.current)return;if(x.current+=1,x.current>=6){y.current=!1,m(`error`),g(s(`qr.pollFailed`,{defaultValue:`轮询失败,请刷新后重试`}));return}setTimeout(n,3e3)}};n()};if((0,l.useEffect)(()=>()=>{y.current=!1},[]),p===`confirmed`)return(0,L.jsxs)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 rounded-md px-4 py-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-emerald-400`,children:[(0,L.jsx)(`span`,{className:`text-lg`,children:`✓`}),(0,L.jsx)(`span`,{className:`font-medium`,children:h})]}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-1`,children:s(`configForm.feishu.platform`,{platform:s(_===`lark`?`configForm.feishu.platformLark`:`configForm.feishu.platformFeishu`)})})]});if(p===`idle`||p===`error`)return(0,L.jsxs)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-3 space-y-3`,children:[r&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-xs text-muted mb-1`,children:s(`configForm.feishu.added`)}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,L.jsx)(`span`,{className:`text-emerald-400`,children:`✓`}),(0,L.jsx)(`code`,{className:`font-mono text-foreground/70`,children:r}),(0,L.jsx)(`span`,{className:`text-muted opacity-60`,children:i===`lark`?`Lark`:s(`configForm.feishu.platformFeishu`)})]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`button`,{onClick:S,className:`px-4 py-2 bg-[#3370FF] text-white rounded-md text-xs font-medium hover:bg-[#3370FF]/90 transition-colors`,children:s(`configForm.feishu.addBot`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-2`,children:s(`configForm.feishu.addBotHint`)})]})]});let w=()=>{b.current=!0,y.current=!1,m(`idle`),g(``),d(``),f(``)};return(0,L.jsx)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-4`,children:(0,L.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[u?(0,L.jsx)(I,{value:u,size:192,className:`rounded-lg`}):(0,L.jsx)(`div`,{className:`w-48 h-48 flex items-center justify-center`,children:(0,L.jsx)(`div`,{className:`w-6 h-6 border-2 border-[#3370FF]/30 border-t-[#3370FF] rounded-full animate-spin`})}),(0,L.jsx)(`div`,{className:`text-sm text-muted`,children:p===`loading`?s(`configForm.feishu.gettingQr`):h}),(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`button`,{onClick:w,className:`px-3 py-1.5 text-xs text-white bg-red-500 rounded-md hover:bg-red-500/90 transition-colors`,children:s(`configForm.feishu.cancel`)}),(0,L.jsx)(`button`,{onClick:()=>{w(),setTimeout(S,100)},className:`px-3 py-1.5 text-xs text-white bg-[#0066FF] rounded-md hover:bg-[#0066FF]/90 transition-colors`,children:s(`configForm.feishu.refresh`)})]})]})})}function z({instanceId:e,onConfigured:t}){let{t:r,i18n:o}=n([`instance`,`common`]),[c,u]=(0,l.useState)(``),[,d]=(0,l.useState)(``),[f,p]=(0,l.useState)(`idle`),[m,h]=(0,l.useState)(``),[g,_]=(0,l.useState)(``),[v,y]=(0,l.useState)([]),b=(0,l.useRef)(!1),x=(0,l.useRef)(!1),S=(0,l.useRef)(0);(0,l.useEffect)(()=>{e&&a(e).then(e=>{e?.accounts?.length&&y(e.accounts)}).catch(()=>{})},[e]);let C=async()=>{if(e){x.current=!1,p(`loading`),h(``),u(``);try{let t=null;for(let n=0;n<3;n++){if(x.current)return;try{if(t=await i(e),t?.qrcodeUrl)break}catch{n<2&&await new Promise(e=>setTimeout(e,1500))}}if(x.current)return;t?.qrcodeUrl?(u(t.qrcodeUrl),d(t.sessionKey),p(`waiting`),h(r(`configForm.weixin.scanHint`)),w(t.sessionKey)):(p(`error`),h(r(`qr.getFailed`)))}catch{x.current||(p(`error`),h(r(`qr.getFailed`)))}}},w=n=>{if(!e||b.current)return;b.current=!0,S.current=0;let i=async()=>{if(b.current)try{let o=await s(e,n);if(S.current=0,o.connected){b.current=!1,p(`confirmed`),h(o.message||r(`qr.loginSuccess`)),_(o.accountId||``),u(``),e&&a(e).then(e=>{e?.accounts&&y(e.accounts)}).catch(()=>{}),t?.();return}if(o.status===`scaned`)p(`scaned`),h(o.message||r(`qr.scaned`));else if(o.status===`refreshed`&&o.qrcodeUrl)u(o.qrcodeUrl),p(`waiting`),h(r(`qr.refreshed`));else if(o.status===`expired`){b.current=!1,p(`error`),h(o.message||r(`qr.expired`));return}setTimeout(i,2e3)}catch{if(!b.current)return;if(S.current+=1,S.current>=6){b.current=!1,p(`error`),h(r(`qr.pollFailed`,{defaultValue:`轮询失败,请刷新后重试`}));return}setTimeout(i,3e3)}};i()};if((0,l.useEffect)(()=>()=>{b.current=!1},[]),f===`confirmed`)return(0,L.jsxs)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 rounded-md px-4 py-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-emerald-400`,children:[(0,L.jsx)(`span`,{className:`text-lg`,children:`✓`}),(0,L.jsx)(`span`,{className:`font-medium`,children:m})]}),g&&(0,L.jsxs)(`p`,{className:`text-xs text-muted mt-1`,children:[r(`configForm.weixin.accountId`),` `,(0,L.jsx)(`code`,{className:`font-mono`,children:g})]}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-1`,children:r(`configForm.weixin.restartHint`)}),(0,L.jsx)(`button`,{onClick:C,className:`mt-2 px-3 py-1 text-xs border border-emerald-500/30 rounded text-emerald-400 hover:bg-emerald-500/10 transition-colors`,children:r(`configForm.weixin.addAnother`)})]});if(f===`idle`||f===`error`)return(0,L.jsxs)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-3 space-y-3`,children:[v.length>0&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-xs text-muted mb-1.5`,children:r(`configForm.weixin.added`)}),v.map(e=>(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs py-1`,children:[(0,L.jsx)(`span`,{className:`text-emerald-400`,children:`✓`}),(0,L.jsx)(`code`,{className:`font-mono text-foreground/70`,children:e.accountId}),e.savedAt&&(0,L.jsx)(`span`,{className:`text-muted opacity-60`,children:new Date(e.savedAt).toLocaleDateString(o.language===`zh`?`zh-CN`:`en-US`)})]},e.accountId))]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`button`,{onClick:C,className:`px-4 py-2 bg-[#07C160] text-white rounded-md text-xs font-medium hover:bg-[#07C160]/90 transition-colors`,children:r(`configForm.weixin.addClawBot`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-2`,children:r(`configForm.weixin.addClawBotHint`,{extra:v.length>0?r(`configForm.weixin.addClawBotHintRestart`):r(`configForm.weixin.addClawBotHintMulti`)})})]})]});let T=()=>{x.current=!0,b.current=!1,p(`idle`),h(``),u(``),d(``)};return(0,L.jsx)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-4`,children:(0,L.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[c?(0,L.jsx)(I,{value:c,size:192,className:`rounded-lg`}):(0,L.jsx)(`div`,{className:`w-48 h-48 flex items-center justify-center`,children:(0,L.jsx)(`div`,{className:`w-6 h-6 border-2 border-[#07C160]/30 border-t-[#07C160] rounded-full animate-spin`})}),(0,L.jsx)(`div`,{className:`flex items-center gap-2 text-sm`,children:f===`scaned`?(0,L.jsxs)(`span`,{className:`text-[#07C160] font-medium`,children:[`👀 `,m]}):f===`loading`?(0,L.jsx)(`span`,{className:`text-muted`,children:r(`configForm.weixin.gettingQr`)}):(0,L.jsx)(`span`,{className:`text-muted`,children:m})}),(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`button`,{onClick:T,className:`px-3 py-1.5 text-xs text-white bg-red-500 rounded-md hover:bg-red-500/90 transition-colors`,children:r(`configForm.weixin.cancel`)}),(0,L.jsx)(`button`,{onClick:()=>{T(),setTimeout(C,100)},className:`px-3 py-1.5 text-xs text-white bg-[#0066FF] rounded-md hover:bg-[#0066FF]/90 transition-colors`,children:r(`configForm.weixin.refresh`)})]})]})})}export{R as n,I as r,z as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./vendor-i18n-Df8aUdv8.js";import{t as r}from"./vendor-react-0L0rjmYG.js";import{Dt as i,Y as a,ot as o,st as s,wt as c}from"./api-C70Gt678.js";var l=e(t()),u=Object.defineProperty,d=Object.getOwnPropertySymbols,f=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,m=(e,t,n)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,h=(e,t)=>{for(var n in t||={})f.call(t,n)&&m(e,n,t[n]);if(d)for(var n of d(t))p.call(t,n)&&m(e,n,t[n]);return e},g=(e,t)=>{var n={};for(var r in e)f.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&d)for(var r of d(e))t.indexOf(r)<0&&p.call(e,r)&&(n[r]=e[r]);return n},_;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(_||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(_||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(_||={});var v=_,y={L:v.QrCode.Ecc.LOW,M:v.QrCode.Ecc.MEDIUM,Q:v.QrCode.Ecc.QUARTILE,H:v.QrCode.Ecc.HIGH},b=128,x=`L`,S=`#FFFFFF`,C=`#000000`,w=!1,T=1,E=4,D=0,O=.1;function k(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function A(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function j(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*O),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function M(e,t){return t==null?e?E:D:Math.max(Math.floor(t),0)}function N({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=l.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...v.QrSegment.makeSegments(t)),e),[]);return v.QrCode.encodeSegments(r,y[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:u,margin:d,numCells:f,calculatedImageSettings:p}=l.useMemo(()=>{let e=c.getModules(),t=M(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:j(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:d,cells:u,numCells:f,calculatedImageSettings:p}}var P=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),F=l.forwardRef(function(e,t){let n=e,{value:r,size:i=b,level:a=x,bgColor:o=S,fgColor:s=C,includeMargin:c=w,minVersion:u=T,boostLevel:d,marginSize:f,imageSettings:p}=n,m=g(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:_}=m,v=g(m,[`style`]),y=p?.src,E=l.useRef(null),D=l.useRef(null),O=l.useCallback(e=>{E.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[j,M]=l.useState(!1),{margin:F,cells:I,numCells:L,calculatedImageSettings:R}=N({value:r,level:a,minVersion:u,boostLevel:d,includeMargin:c,marginSize:f,imageSettings:p,size:i});l.useEffect(()=>{if(E.current!=null){let e=E.current,t=e.getContext(`2d`);if(!t)return;let n=I,r=D.current,a=R!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&R.excavation!=null&&(n=A(I,R.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/L*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,L,L),t.fillStyle=s,P?t.fill(new Path2D(k(n,F))):I.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+F,n+F,1,1)})}),R&&(t.globalAlpha=R.opacity),a&&t.drawImage(r,R.x+F,R.y+F,R.w,R.h)}}),l.useEffect(()=>{M(!1)},[y]);let z=h({height:i,width:i},_),B=null;return y!=null&&(B=l.createElement(`img`,{src:y,key:y,style:{display:`none`},onLoad:()=>{M(!0)},ref:D,crossOrigin:R?.crossOrigin})),l.createElement(l.Fragment,null,l.createElement(`canvas`,h({style:z,height:i,width:i,ref:O,role:`img`},v)),B)});F.displayName=`QRCodeCanvas`;var I=l.forwardRef(function(e,t){let n=e,{value:r,size:i=b,level:a=x,bgColor:o=S,fgColor:s=C,includeMargin:c=w,minVersion:u=T,boostLevel:d,title:f,marginSize:p,imageSettings:m}=n,_=g(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:v,cells:y,numCells:E,calculatedImageSettings:D}=N({value:r,level:a,minVersion:u,boostLevel:d,includeMargin:c,marginSize:p,imageSettings:m,size:i}),O=y,j=null;m!=null&&D!=null&&(D.excavation!=null&&(O=A(y,D.excavation)),j=l.createElement(`image`,{href:m.src,height:D.h,width:D.w,x:D.x+v,y:D.y+v,preserveAspectRatio:`none`,opacity:D.opacity,crossOrigin:D.crossOrigin}));let M=k(O,v);return l.createElement(`svg`,h({height:i,width:i,viewBox:`0 0 ${E} ${E}`,ref:t,role:`img`},_),!!f&&l.createElement(`title`,null,f),l.createElement(`path`,{fill:o,d:`M0,0 h${E}v${E}H0z`,shapeRendering:`crispEdges`}),l.createElement(`path`,{fill:s,d:M,shapeRendering:`crispEdges`}),j)});I.displayName=`QRCodeSVG`;var L=r();function R({instanceId:e,channelKey:t,existingAppId:r,existingDomain:i,onConfigured:a}){let{t:s}=n([`instance`,`common`]),[u,d]=(0,l.useState)(``),[,f]=(0,l.useState)(``),[p,m]=(0,l.useState)(`idle`),[h,g]=(0,l.useState)(``),[_,v]=(0,l.useState)(``),y=(0,l.useRef)(!1),b=(0,l.useRef)(!1),x=(0,l.useRef)(0),S=async()=>{if(e){b.current=!1,m(`loading`),g(``),d(``);try{let n=null;for(let r=0;r<3;r++){if(b.current)return;try{if(n=await c(e,t),n?.qrcodeUrl)break}catch{r<2&&await new Promise(e=>setTimeout(e,1500))}}if(b.current)return;n?.qrcodeUrl?(d(n.qrcodeUrl),f(n.sessionKey),m(`waiting`),g(s(`configForm.feishu.scanHint`)),C(n.sessionKey)):(m(`error`),g(s(`qr.getFailed`)))}catch{b.current||(m(`error`),g(s(`qr.getFailed`)))}}},C=t=>{if(!e||y.current)return;y.current=!0,x.current=0;let n=async()=>{if(y.current)try{let r=await o(e,t);if(x.current=0,r.connected){y.current=!1,m(`confirmed`),g(r.message||s(`qr.loginSuccess`)),v(r.domain||`feishu`),d(``),a?.();return}if(r.status===`expired`){y.current=!1,m(`error`),g(r.message||s(`qr.expired`));return}setTimeout(n,3e3)}catch{if(!y.current)return;if(x.current+=1,x.current>=6){y.current=!1,m(`error`),g(s(`qr.pollFailed`,{defaultValue:`轮询失败,请刷新后重试`}));return}setTimeout(n,3e3)}};n()};if((0,l.useEffect)(()=>()=>{y.current=!1},[]),p===`confirmed`)return(0,L.jsxs)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 rounded-md px-4 py-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-emerald-400`,children:[(0,L.jsx)(`span`,{className:`text-lg`,children:`✓`}),(0,L.jsx)(`span`,{className:`font-medium`,children:h})]}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-1`,children:s(`configForm.feishu.platform`,{platform:s(_===`lark`?`configForm.feishu.platformLark`:`configForm.feishu.platformFeishu`)})})]});if(p===`idle`||p===`error`)return(0,L.jsxs)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-3 space-y-3`,children:[r&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-xs text-muted mb-1`,children:s(`configForm.feishu.added`)}),(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,L.jsx)(`span`,{className:`text-emerald-400`,children:`✓`}),(0,L.jsx)(`code`,{className:`font-mono text-foreground/70`,children:r}),(0,L.jsx)(`span`,{className:`text-muted opacity-60`,children:i===`lark`?`Lark`:s(`configForm.feishu.platformFeishu`)})]})]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`button`,{onClick:S,className:`px-4 py-2 bg-[#3370FF] text-white rounded-md text-xs font-medium hover:bg-[#3370FF]/90 transition-colors`,children:s(`configForm.feishu.addBot`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-2`,children:s(`configForm.feishu.addBotHint`)})]})]});let w=()=>{b.current=!0,y.current=!1,m(`idle`),g(``),d(``),f(``)};return(0,L.jsx)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-4`,children:(0,L.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[u?(0,L.jsx)(I,{value:u,size:192,className:`rounded-lg`}):(0,L.jsx)(`div`,{className:`w-48 h-48 flex items-center justify-center`,children:(0,L.jsx)(`div`,{className:`w-6 h-6 border-2 border-[#3370FF]/30 border-t-[#3370FF] rounded-full animate-spin`})}),(0,L.jsx)(`div`,{className:`text-sm text-muted`,children:p===`loading`?s(`configForm.feishu.gettingQr`):h}),(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`button`,{onClick:w,className:`px-3 py-1.5 text-xs text-white bg-red-500 rounded-md hover:bg-red-500/90 transition-colors`,children:s(`configForm.feishu.cancel`)}),(0,L.jsx)(`button`,{onClick:()=>{w(),setTimeout(S,100)},className:`px-3 py-1.5 text-xs text-white bg-[#0066FF] rounded-md hover:bg-[#0066FF]/90 transition-colors`,children:s(`configForm.feishu.refresh`)})]})]})})}function z({instanceId:e,onConfigured:t}){let{t:r,i18n:o}=n([`instance`,`common`]),[c,u]=(0,l.useState)(``),[,d]=(0,l.useState)(``),[f,p]=(0,l.useState)(`idle`),[m,h]=(0,l.useState)(``),[g,_]=(0,l.useState)(``),[v,y]=(0,l.useState)([]),b=(0,l.useRef)(!1),x=(0,l.useRef)(!1),S=(0,l.useRef)(0);(0,l.useEffect)(()=>{e&&a(e).then(e=>{e?.accounts?.length&&y(e.accounts)}).catch(()=>{})},[e]);let C=async()=>{if(e){x.current=!1,p(`loading`),h(``),u(``);try{let t=null;for(let n=0;n<3;n++){if(x.current)return;try{if(t=await i(e),t?.qrcodeUrl)break}catch{n<2&&await new Promise(e=>setTimeout(e,1500))}}if(x.current)return;t?.qrcodeUrl?(u(t.qrcodeUrl),d(t.sessionKey),p(`waiting`),h(r(`configForm.weixin.scanHint`)),w(t.sessionKey)):(p(`error`),h(r(`qr.getFailed`)))}catch{x.current||(p(`error`),h(r(`qr.getFailed`)))}}},w=n=>{if(!e||b.current)return;b.current=!0,S.current=0;let i=async()=>{if(b.current)try{let o=await s(e,n);if(S.current=0,o.connected){b.current=!1,p(`confirmed`),h(o.message||r(`qr.loginSuccess`)),_(o.accountId||``),u(``),e&&a(e).then(e=>{e?.accounts&&y(e.accounts)}).catch(()=>{}),t?.();return}if(o.status===`scaned`)p(`scaned`),h(o.message||r(`qr.scaned`));else if(o.status===`refreshed`&&o.qrcodeUrl)u(o.qrcodeUrl),p(`waiting`),h(r(`qr.refreshed`));else if(o.status===`expired`){b.current=!1,p(`error`),h(o.message||r(`qr.expired`));return}setTimeout(i,2e3)}catch{if(!b.current)return;if(S.current+=1,S.current>=6){b.current=!1,p(`error`),h(r(`qr.pollFailed`,{defaultValue:`轮询失败,请刷新后重试`}));return}setTimeout(i,3e3)}};i()};if((0,l.useEffect)(()=>()=>{b.current=!1},[]),f===`confirmed`)return(0,L.jsxs)(`div`,{className:`bg-emerald-500/10 border border-emerald-500/20 rounded-md px-4 py-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-emerald-400`,children:[(0,L.jsx)(`span`,{className:`text-lg`,children:`✓`}),(0,L.jsx)(`span`,{className:`font-medium`,children:m})]}),g&&(0,L.jsxs)(`p`,{className:`text-xs text-muted mt-1`,children:[r(`configForm.weixin.accountId`),` `,(0,L.jsx)(`code`,{className:`font-mono`,children:g})]}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-1`,children:r(`configForm.weixin.restartHint`)}),(0,L.jsx)(`button`,{onClick:C,className:`mt-2 px-3 py-1 text-xs border border-emerald-500/30 rounded text-emerald-400 hover:bg-emerald-500/10 transition-colors`,children:r(`configForm.weixin.addAnother`)})]});if(f===`idle`||f===`error`)return(0,L.jsxs)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-3 space-y-3`,children:[v.length>0&&(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`p`,{className:`text-xs text-muted mb-1.5`,children:r(`configForm.weixin.added`)}),v.map(e=>(0,L.jsxs)(`div`,{className:`flex items-center gap-2 text-xs py-1`,children:[(0,L.jsx)(`span`,{className:`text-emerald-400`,children:`✓`}),(0,L.jsx)(`code`,{className:`font-mono text-foreground/70`,children:e.accountId}),e.savedAt&&(0,L.jsx)(`span`,{className:`text-muted opacity-60`,children:new Date(e.savedAt).toLocaleDateString(o.language===`zh`?`zh-CN`:`en-US`)})]},e.accountId))]}),(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`button`,{onClick:C,className:`px-4 py-2 bg-[#07C160] text-white rounded-md text-xs font-medium hover:bg-[#07C160]/90 transition-colors`,children:r(`configForm.weixin.addClawBot`)}),(0,L.jsx)(`p`,{className:`text-xs text-muted mt-2`,children:r(`configForm.weixin.addClawBotHint`,{extra:v.length>0?r(`configForm.weixin.addClawBotHintRestart`):r(`configForm.weixin.addClawBotHintMulti`)})})]})]});let T=()=>{x.current=!0,b.current=!1,p(`idle`),h(``),u(``),d(``)};return(0,L.jsx)(`div`,{className:`bg-[var(--card-hover)] rounded-md px-4 py-4`,children:(0,L.jsxs)(`div`,{className:`flex flex-col items-center gap-3`,children:[c?(0,L.jsx)(I,{value:c,size:192,className:`rounded-lg`}):(0,L.jsx)(`div`,{className:`w-48 h-48 flex items-center justify-center`,children:(0,L.jsx)(`div`,{className:`w-6 h-6 border-2 border-[#07C160]/30 border-t-[#07C160] rounded-full animate-spin`})}),(0,L.jsx)(`div`,{className:`flex items-center gap-2 text-sm`,children:f===`scaned`?(0,L.jsxs)(`span`,{className:`text-[#07C160] font-medium`,children:[`👀 `,m]}):f===`loading`?(0,L.jsx)(`span`,{className:`text-muted`,children:r(`configForm.weixin.gettingQr`)}):(0,L.jsx)(`span`,{className:`text-muted`,children:m})}),(0,L.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,L.jsx)(`button`,{onClick:T,className:`px-3 py-1.5 text-xs text-white bg-red-500 rounded-md hover:bg-red-500/90 transition-colors`,children:r(`configForm.weixin.cancel`)}),(0,L.jsx)(`button`,{onClick:()=>{T(),setTimeout(C,100)},className:`px-3 py-1.5 text-xs text-white bg-[#0066FF] rounded-md hover:bg-[#0066FF]/90 transition-colors`,children:r(`configForm.weixin.refresh`)})]})]})})}export{R as n,I as r,z as t};